舵轮AGV可以通过调整两个舵轮的角度及速度,可以使小车在不转动车头的情况下实现变道,转向等动作,甚至可以实现沿任意点为半径的转弯运动,有很强的灵活性。 因此在AGV行业,这种驱动方式应用很广,但是目前能做好控制的厂家并不多。国内比较好的厂家主要有沈阳新松机器人、苏州华晓精密、上海同普,还有部分新创企业,苏州极客嘉智能科技有限公司,做的也很好。

该种AGV,一般包含两个舵轮,通常布置在AGV车体中心前后、或AGV车体对角分布。如图:

本文将以在车体中心前后分布方式的AGV为例,进行分析。

大家都知道舵轮的参数有线速度大小、角速度大小、舵向值(v,w,a)三个参数(舵轮线速度方向一定等于舵向值)。同时我们控制双舵轮AGV去跟随路劲的时候,导航算法控制器也会给AGV下发线速度大小、线速度方向、角速度(不同于差速轮AGV,舵轮AGV可以全向行走,因此线速度方向是可以不同于AGV的航向角的,本文假设的线速度方向相对于AGV航向角),然后AGV舵轮驱动算法,将根据导航算法下发的三个参数来解算两个舵轮的三个参数。

我们可以将该AGV简化成两个舵轮旋转中心支点刚性连接的情况,以两舵轮旋转中心点来计算AGV线速度和角速度。

已知导航算法下发给AGV中心点的参数为(V,W,A),两舵轮之间的距离D,求舵轮1的参数(V1,W1,A1),舵轮2的参数(V2,W2,A2)。如下图:

其中W=W1=W2;

第一步:已知参数(V,W,A),求AGV的旋转半径。

根据A可知旋转半径与AGV中心点速度的几何关系,如下图所示“:

第二步:由于两个舵轮旋转中心支点与AGV是刚性连接,所以两舵轮的中心支点必定与AGV旋转中心同心。

将AGV旋转中心与两舵轮旋转中心点连接,如下图;

这里问题变成了,已知A、R,求R1,R2,A1,A2;(提示简单的三角几何计算);

R1、R2、A1、A2就算到这里。

 第三步:由于r=v/w,W1=W2=W,所以

V1=V*(R1/R);

V2=V*(R2/R);

第四步:将V1、V2、A1、A2分别解算出来,下发给两舵轮控制器,双舵轮AGV就可以按照你的导航算法去运动了。

就讲到这一步,再有其他问题,工程师要养成独立深度思考的习惯,自己去搜索,自己去分析解决。

另外,双舵轮的里程计,也可以根据此文章,倒退计算出来。

本篇文章新鲜出炉,未经审稿,如有表达纰漏之处,可以指出,转载请说明出处。

双舵轮AGV里程计、运动控制核心算法的更多相关文章

  1. SLAM+语音机器人DIY系列:(三)感知与大脑——3.轮式里程计与运动控制

    摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...

  2. 单舵轮(叉车)AGV里程计数据解算

    单舵轮(叉车)AGV里程计数据解算 2016-07 单舵轮AGV,一般包含一个驱动轮和两个从动轮,驱动轮是同时具备行走和转向两个功能的舵轮,因此,单舵轮AGV的运动学自由度为2个.舵轮线速度V1,舵轮 ...

  3. SLAM+语音机器人DIY系列:(四)差分底盘设计——6.底盘里程计标

    摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为 ...

  4. SLAM入门之视觉里程计(1):特征点的匹配

    SLAM 主要分为两个部分:前端和后端,前端也就是视觉里程计(VO),它根据相邻图像的信息粗略的估计出相机的运动,给后端提供较好的初始值.VO的实现方法可以根据是否需要提取特征分为两类:基于特征点的方 ...

  5. x264代码剖析(十五):核心算法之宏块编码中的变换编码

    x264代码剖析(十五):核心算法之宏块编码中的变换编码 为了进一步节省图像的传输码率.须要对图像进行压缩,通常採用变换编码及量化来消除图像中的相关性以降低图像编码的动态范围.本文主要介绍变换编码的相 ...

  6. SLAM——视觉里程计(一)feature

    从现在开始下面两篇文章来介绍SLAM中的视觉里程计(Visual Odometry).这个是我们正式进入SLAM工程的第一步,而之前介绍的更多的是一些基础理论.视觉里程计完成的事情是视觉里程计VO的目 ...

  7. 关于视觉里程计以及VI融合的相关研究(长期更新)

    1. svo 源码:https://github.com/uzh-rpg/rpg_svo 国内对齐文章源码的研究: (1)冯斌: 对其代码重写 https://github.com/yueying/O ...

  8. SQL关键字转换大写核心算法实现

    1 不跟你多废话 上代码! /// <summary> /// SQL关键字转换器 /// </summary> public class SqlConverter : IKe ...

  9. SLAM入门之视觉里程计(2):相机模型(内参数,外参数)

    相机成像的过程实际是将真实的三维空间中的三维点映射到成像平面(二维空间)过程,可以简单的使用小孔成像模型来描述该过程,以了解成像过程中三维空间到二位图像空间的变换过程. 本文包含两部分内容,首先介绍小 ...

随机推荐

  1. Unity教程之-基于行为树与状态机的游戏AI

    AI.我们的第一印象可能是机器人,现在主要说在游戏中的应用.关于AI的相关文章我们在前面也提到过,详细请戳这现代的计算机游戏中已经大量融入了AI元素,平时我们进行游戏时产生的交互都是由AI来完成的.比 ...

  2. 什么是代码?code?

    概念描述: 程序代码?code? 应用程序是由一系列代码构成,那么什么是代码呢? 简单来说:代码也可以理解为命令,通过这个命令告诉计算机该做什么事情. 文档创建时间:2018年3月16日15:10:5 ...

  3. vs2013\2015-UML

    1.UML简介Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是他 ...

  4. oracle中REF Cursor用法

    from:http://www.111cn.net/database/Oracle/42873.htm 1,什么是 REF游标 ? 动态关联结果集的临时对象.即在运行的时候动态决定执行查询. 2,RE ...

  5. ASIHttpRequest封装

    ASIHttpRequest是一个非常好的库,只是直接使用稍嫌麻烦,以下就尝试来封装一下吧. 思路:每次请求时,须要创建一个ASIHttpRequest对象,设置它的属性(url,delegate.p ...

  6. MVC源码

    http://aspnetwebstack.codeplex.com/ MVC源码

  7. 在线学习angularjs2

    官网给的学习教程(需要FQ) http://campus.codeschool.com/courses/accelerating-through-angular-2/contents

  8. Ehcache整合spring

    下面介绍一下简单使用的配置过程:ehcache.jar及spring相关jar就不说了,加到项目中就是了. 简单的使用真的很简单.但只能做为入门级了. 1.ehcache.xml,可放classpat ...

  9. Python 使用正则表达式匹配电话号码

    一个电话号码,如果区号为3位,那么区号后面的数字为8位:如果区号为4位,那么区号后面的数字为7位 In [1]: import re In [2]: number = "020-232432 ...

  10. Android App签名打包 与 SDK开发文档

    Android App签名打包签名的意义1.为了保证每个程序开发者的合法权益2.放置部分人通过使用相同的Package Name来混淆替换已经安装的程序,从而出现一些恶意篡改3.保证我们每次发布的版本 ...