目录
0. 写在前面
无人车,要做到无人化,但本质上,它是个车。既然是车,就离不开各种轮子。
这次,我想和你聊一聊舵轮,进一步,聊一聊双舵轮的运动解算(也叫运动分解)与运动合成。
1. 舵轮是什么?
在正式讨论前,先简单介绍一下舵轮。
舵轮,其实是一种非常常见形式的运动轮。比如,我们耳熟能详的杂技车,本质上就是一个舵轮。我在网上搜索了“杂技车”(或者“单轮车”),找到了下面的图片(侵删)。
我相信,不管你骑没骑过,都不妨碍参照它来理解什么是舵轮。
我们用一些通俗易懂的话来总结,它的特点是结构简单,行走与转向功能在同一滚动轮上实现。你看,踏板围绕在滚动轮的轴心上下翻动,转动踏板可使轮子前后移动;骑车的人通过扭动身体改变滚动轮的朝向。
1.1 为什么取名叫舵轮?
至于为什么取名叫舵轮,刚接触这个专业名称的时候,我也有这个疑问,还特意去查了查。
一般来说,“舵”的解释是,船、飞机等控制方向的装置;而“舵轮”是轮船、汽车等的方向盘。另有一种说法,位于船舶驾驶室中,用于控制船舵运动、改变船舶航向的手轮,称为舵轮。
我兜兜转转查了一圈,大概意思总结一下,舵轮是用来改变方向的。有一句话叫做,掌握了舵轮就掌握了前进的方向。
对于今天讨论的舵轮,我推测,取这个名字,可能就是因为轮子的方向可以改变。也就是滚动轮的方向(又称舵向角)相对于车体是可变的。
其实,还有个特点,如果你仔细观察,会发现,改变舵轮的中心轴朝向时,舵轮和地面的接触点可以保持不变,就好像轮子上方有个转盘可以扭动车轮的朝向一样。
其实,在AGV行业里,舵轮就是这么设计的。
1.2 AGV舵轮长啥样?
简单说,AGV舵轮代表性形式有下面两种。左图是卧式,便于做低整车高度,右图是立式,能做小车子的长宽尺寸。值得注意的是,图中红色箭头所指的位置,就是所谓的“舵”——起到改变滚动轮方向的齿轮。
如果你仔细观察一下,两种形式只是改变了行走和转向电机的摆放位置而已。
我们用稍微专业点的话来总结一下,舵轮是集成了行走电机、转向电机、减速机等组件的机械结构,集行走、牵引和转向功能为一体,可以荷载和牵引较重货物。
其中,行走电机和转向电机是舵轮的执行机构,分别由行走电机驱动器和转向电机驱动器直接控制。有时,两个电机驱动器会封装在一个外壳里,或做到一张嵌入式控制板上。这种外形的改变不影响我们对舵轮控制形式的理解。
1.3. AGV舵轮如何交互?
在工业AGV上,通常来说,舵轮电机驱动器使用伺服电机,以低压永磁无刷伺服电机为主,因此,可交互的信息很多,比如电机转速、电机扭矩、电机的绝对位置、电机加速度、电机电压电流等。
但在一些大功率场合,也会使用变频电机和外装轮速计或角度编码器来组合使用。
为了便于后续对舵轮车进行运动分解,我们将这些信息进行提炼,并对模型进行抽象:
1) 舵轮转向电机的转角可控,状态为舵轮的舵向角大小,简称舵向角,记作θ;
2) 舵轮行走电机的转速可控,状态为舵轮接地点的线速度大小,简称线速度,记作vt;
3) 舵轮的线速度方向恒等于舵向角;
关于舵轮的舵向角θ的测量,比较简单,一般直接使用伺服电机内置的绝对值编码器的实时数据。
关于舵轮的线速度vt,需要由电机实时转速(rpm)换算而来。一般而言,为了增大滚动轮的输入扭矩,行走电机不直接输出扭矩,而是先经过减速机,再传递给滚动轮。在不考虑轮子在地面上可能存在的滑动时,舵轮车线速度vt的公式为:
其中,
n为电机转速,单位为rpm(每分钟的转动圈数);
i为减速机的减速比,无量纲;
d为滚动轮的外径,单位为米;
vt为舵轮转动轴的线速度,单位为m/s(米/秒);
我们都知道,对于物体的运动状态,通常会抽象成线速度和角速度
。其中,线速度
进行计算。其中,r为舵轮接地点到转向中心点(整车的转向中心点,也叫瞬心)的距离。这样一来,舵轮的参数也可由线速度大小、角速度大小、舵向值(vt,w,θ)三个参数来表达。
需要注意的时,到目前为止,我们讨论的对象依旧是单个舵轮。
2. 双舵轮的运动分解
2.1 问题描述
为了讨论方便,在不失一般性的前提下,我们选择前后对称排布的双舵轮车进行讨论。
理由有两点:
1. 双舵轮的结构形式,可实现车辆的全向移动,是一种形式简洁的全向车。
2. 对于双舵轮的研究结果,只需要增加有限的约束,便可快速应用到单舵轮的场合。比如,假定后轮的舵向角恒定不变,速度与整车质心运动速度动态匹配,也就是说把后轮变成定角度的随动轮,那么,模型便可对应到单舵轮。
因此,我们讨论的问题就变成了双舵轮的运动控制了。
当我们控制双舵轮AGV去跟随路径时,导航算法会给AGV下发目标线速度大小vt、目标线速度方向θ和目标角速度w。这里需要区分两个概念,舵轮自身的航向角和AGV车体运动中心(一般为车体几何中心,但也可以自由设定。本文假定AGV运动中心为车体的几何中心)的航向角,两者不一定相等,准确的说,在导航的动态过程中,大部分时间是不相等的。
基于以上概念,我们建立车体坐标系,采用东北天(ENU)形式,车体逆时针旋转时为正,顺时针旋转时为负。我们在后续讨论中,舵轮的航向角的零位定义在车体的正北向,也就是当车体向前时,前后舵轮的舵向角为0。结合正负角度的定义有,舵轮逆时针旋转时角度增加,顺时针旋转时角度变小,取值范围为[-180°,180°]。
现在,来一句话描述问题。
假设AGV的运动中心在两个舵轮连线的中点,当导航算法给AGV下发控制指令,含有目标线速度大小、目标线速度方向和目标角速度,记作(vt,w,θ),我们通过运动分解,得到两个舵轮各自的线速度和舵向角,记作(v1,θ1)和(v2,θ2)。
2.2 运动分解的公式推导
为简化讨论的过程,我们可以将双舵轮AGV的模型进一步简化,认为两个舵轮旋转中心支点刚性连接,然后,以两个舵轮旋转中心连线的中点,来讨论AGV的线速度和角速度。
已知下发给双舵轮AGV运动中心的参数为(v,w,θ),两舵轮之间的距离为d,其中,两个舵轮的运动状态分别表示为(v1,w1,θ1)和(v2,w2,θ2)。
由于整个AGV车体假设为刚性连接,因此两个舵轮、车体运动中心以及车体任意一点的旋转角速度w是相同的。我们的目标是,通过运动分解,获得两个舵轮的目标控制值,且只需要包含线速度和舵向角,即(v1,θ1)和(v2,θ2)。
下面,我们一步步进行推导。
1)计算AGV转向中心的转动半径O1O2;
2)计算前后舵轮各自的转动半径:(从O2点向线段P1P2做辅助垂线O2T1)
3) 计算前后舵轮的舵向角:
4)计算前后舵轮的线速度:
总得来说,整个推导过程还是相对比较简单的。
特别地,当θ1或θ2强制为0时,即为单舵轮结构。此时,一般而言,整车的移动中心将移动到对应的舵轮旋转中心。调整之后,依旧可以用上述四步的方法,进行类似地推导。
3. 双舵轮的运动合成
3.1 问题描述
在有些情况,AGV控制系统需要获得整体的运动状态,供其他系统进行数据融合。比如,SLAM系统可使用车辆的里程计信息,增加定位数据的稳定性,提高定位的精度等。又比如,在导航系统中,轨迹规划控制器需要实时获取车辆的线速度和角速度,以便形成控制闭环。
这时,就需要用到双舵轮的运动合成。
在正式合成之前,我们先定义一下待解决的具体问题。
假设AGV的运动中心在两个舵轮连线的中点,当我们已知两个舵轮各自的线速度和舵向角,记作(v1,θ1)和(v2,θ2),计算整个AGV中心点的状态信息,含有线速度大小、角速度和线速度方向,记作(v,w,θ)。
3.2 运动合成的公式推导
已知:两个舵轮各自的线速度和舵向角,分别为(v1,θ1)和(v2,θ2);
求:AGV中心点的目标线速度大小、目标角速度和目标线速度方向,记作(v,w,θ)。
因此,运动合成的推导过程如下:
1)计算前后舵轮的转向半径r1和r2:
如右图所示,为了便于计算舵轮运动半径r1(即O2P1),增加了辅助垂线P1T2;
r2(即O2P2)的求法类似,不赘述,直接展示公式。
2)计算前后舵轮的角速度;
或有
3)通过前舵轮或后舵轮,计算AGV中心点的航向角。(使用左图推导)
或有
4)通过前舵轮或后舵轮,计算AGV中心点的转向半径。
或有
5)计算AGV中心点的线速度大小;
4. 最后的话
双舵轮的结构形式简单,运动分解和合成的过程也很直观。
公式无需记忆,使用的时候,临时推导即可快速获得。
当假定其中一个舵轮的舵向角恒定不变,速度与整车运动中心运动速度动态匹配,也就是说把该轮变成定角度的随动轮,那么,本文的方法就可以应用到单舵轮的场合。
对于两个以上舵轮构成的AGV车辆,套用本文的思路和步骤,也能顺利地解决问题。
好了,今天就到这里,希望对你有帮助。
文章出处登录后可见!