两轮差速驱动机器人——基于机械角度的航位推算定位
基于机械角度的航位推算定位
1 前言
基于机械角度的航位推算定位的定位原理是在给定移动机器人初始位姿条件下,根据移动机器人左右两侧轮子的机械角度在采样周期内的变化,计算出车轮移动的距离以及方向角的变化,从而实时推算出移动机器人的位姿[1]。
电机的机械角度指电机转子的实际空间几何角度,即用物理工具(如圆规、编码器)可测量的角度。无论电机极对数多少,转子旋转一圈对应的机械角度始终为360°,而在机器人的定位中,将转子旋转一圈的角度量程定位[-180°, 180°]。
2 模型建立
在建模过程中,将割草机器人按照两轮差速驱动方式进行建模。设割草机器人车轮半径为rrr,采样周期ΔT\Delta TΔT机械角度的变化量为Δθm\Delta\theta_mΔθm,则ΔT\Delta TΔT时间内车轮移动的距离Δd\Delta dΔd为:
Δd=πr180Δθm \Delta d = \frac{\pi r}{180}\Delta\theta_m Δd=180πrΔθm
如图1所示,设割草机器人从初始位姿P0=(x0,y0,θ0)P_0 = (x_0, y_0, \theta_0)P0=(x0,y0,θ0)开始做逆时针方向的圆弧运动,经过ΔT\Delta TΔT时间后到达位姿点P1=(x0+Δx,y0+Δy,θ0+Δθ)P_1 = (x_0 + \Delta x, y_0 + \Delta y, \theta_0 + \Delta\theta)P1=(x0+Δx,y0+Δy,θ0+Δθ)。其中,(x0,y0)(x_0, y_0)(x0,y0)为割草机器人初始位置,θ0\theta_0θ0为初始方位角,即割草机器人坐标系XRX_RXR轴正方向与全局坐标系XWX_WXW轴正方向的夹角,bbb为左右车轮轮距,RRR为 割草机器人运动圆弧的半径,ΔSR\Delta S_RΔSR、ΔSL\Delta S_LΔSL、ΔS\Delta SΔS分别表示左右轮和中心点在ΔT\Delta TΔT时间内运动的距离,Δx\Delta xΔx、Δy\Delta yΔy、Δθ\Delta\thetaΔθ(单位:rad)分别表示割草机器人在XWX_WXW方向和YWY_WYW方向上的位移和方位角增加量。

假设在运动过程中,车轮没有发生打滑及碰撞现象,则一下方程组成立:
{ΔSR=(R+b/2)ΔθΔSL=(R−b/2)ΔθΔS=RΔθ \begin{cases} \Delta S_R = (R + b/2)\Delta\theta \\ \Delta S_L = (R - b/2)\Delta\theta \\ \Delta S = R\Delta\theta \end{cases} ⎩
⎨
⎧ΔSR=(R+b/2)ΔθΔSL=(R−b/2)ΔθΔS=RΔθ
解上述方程组可得,
{Δθ=(ΔSR−ΔSL)/bΔS=(ΔSR+ΔSL)/2 \begin{cases} \Delta\theta = (\Delta S_R - \Delta S_L)/b \\ \Delta S = (\Delta S_R + \Delta S_L)/2 \end{cases} {Δθ=(ΔSR−ΔSL)/bΔS=(ΔSR+ΔSL)/2
根据上述方程,结合弦长公式,可最终计算出XWX_WXW与YWY_WYW方向上的位移增加量,
{Δx=ΔS[sin(Δθ2)/Δθ2]cos(θ+Δθ2)Δy=ΔS[sin(Δθ2)/Δθ2]sin(θ+Δθ2) \begin{cases} \Delta x = \Delta S [\sin(\frac{\Delta\theta}{2})/\frac{\Delta\theta}{2}]\cos(\theta +\frac{\Delta\theta}{2}) \\ \Delta y = \Delta S [\sin(\frac{\Delta\theta}{2})/\frac{\Delta\theta}{2}]\sin(\theta +\frac{\Delta\theta}{2}) \end{cases} {Δx=ΔS[sin(2Δθ)/2Δθ]cos(θ+2Δθ)Δy=ΔS[sin(2Δθ)/2Δθ]sin(θ+2Δθ)
当里程计的采样时间ΔT\Delta TΔT比较短时,即机器人在一个周期内的转角变化Δθ\Delta\thetaΔθ非常小。对于很小的xxx,有sin(x)≈xsin(x)\approx xsin(x)≈x,令x=Δθ2x = \frac{\Delta\theta}{2}x=2Δθ,则有,
sin(Δθ2)≈Δθ2 sin(\frac{\Delta\theta}{2})\approx \frac{\Delta\theta}{2} sin(2Δθ)≈2Δθ
则上述方程组可以简化为:
{Δx=ΔScos(θ+Δθ2)Δy=ΔSsin(θ+Δθ2) \begin{cases} \Delta x = \Delta S\cos(\theta +\frac{\Delta\theta}{2}) \\ \Delta y = \Delta S\sin(\theta +\frac{\Delta\theta}{2}) \end{cases} {Δx=ΔScos(θ+2Δθ)Δy=ΔSsin(θ+2Δθ)
最终得到基于里程计的割草机器人圆弧离散运动模型:
{xk+1=xk+ΔScos(θk+Δθ2)yk+1=yk+ΔSsin(θk+Δθ2)θk+1=θk+Δθ \begin{cases} x_{k+1} = x_k + \Delta S\cos(\theta_k +\frac{\Delta\theta}{2}) \\ y_{k+1} = y_k + \Delta S\sin(\theta_k +\frac{\Delta\theta}{2}) \\ \theta_{k+1} = \theta_k + \Delta\theta \end{cases} ⎩
⎨
⎧xk+1=xk+ΔScos(θk+2Δθ)yk+1=yk+ΔSsin(θk+2Δθ)θk+1=θk+Δθ
当不考虑割草机器人方位角变化时,即Δθ→0\Delta\theta → 0Δθ→0,可以得到直线离散运动模型:
{xk+1=xk+ΔScos(θk)yk+1=yk+ΔSsin(θk)θk+1=θk \begin{cases} x_{k+1} = x_k + \Delta S\cos(\theta_k ) \\ y_{k+1} = y_k + \Delta S\sin(\theta_k ) \\ \theta_{k+1} = \theta_k \end{cases} ⎩
⎨
⎧xk+1=xk+ΔScos(θk)yk+1=yk+ΔSsin(θk)θk+1=θk
其中,ΔS=ΔSR,k+ΔSL,k2\Delta S = \frac{\Delta S_{R,k} + \Delta S_{L,k} }{2}ΔS=2ΔSR,k+ΔSL,k,Δθ=ΔSR,k−ΔSL,kb\Delta\theta = \frac{\Delta S_{R,k} - \Delta S_{L,k} }{b}Δθ=bΔSR,k−ΔSL,k,ΔSR,k和ΔSL,k\Delta S_{R,k}和\Delta S_{L,k}ΔSR,k和ΔSL,k分别表示从kkk到k+1k + 1k+1时刻,左右两侧车轮行驶的距离。
基于传统里程计的航位推算定位方法左右轮行驶的距离是根据光电编码器来计算得到的,其测量和计算误差会随着时间和距离无限增长,最终会导致割草机器人位姿估计值越来越偏离真实值。
基于机械角度的航位推算定位左右轮行驶的距离是根据电机机械角度来计算得到的,而由于机械角度代表的是电机转子的实际空间几何角度,因此没有累计误差,所以该方法在理论上是能够达到割草机器人长距离、高精度定位的要求,而且不依赖外部信息就能够实现割草机器人的自主定位和里程标定。
3 参考文献
[1]吴显.基于多传感器信息融合的移动机器人定位方法研究[D].北京交通大学,2016.
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)