机器人的运动模型
这篇文章主要介绍两轮机器人如何根据:
机器人轮子的编码信息和机器人当先位姿(x1,y1,θ)计算出下一时刻机器人的位姿(x2,y2,θ2)。
即:
输入:(x1,y2,θ1)、 机器人左右轮子的间距w,码盘的距离信息l和r
输出:(x2,y2,θ2)
机器人在平面上运动时有两种情况,一种是转弯的情况,另一种是不转弯的情况;
下面分别进行介绍:
1. 转弯的情况
机器人在转弯的时候,其运动的示意图如下所示,其中角∠P1P1′P2′表示机器人P1点的头朝向,角∠P2P2′基线 表示机器人在P2点的头朝向。需要注意的是,头朝向θ 是以O为圆心,R+w/2为半径的圆的边界引出一条切线和基线之间的形成的夹角的大小。在图中,通过相似三角形的性质可以知道,∠P1P1′P2′ = ∠O′OP1 = θ1
那么角度θ2可以通过四边形OO’P2P2’的内角和为360度得到:
∠O′OP2+∠OO′P2′+∠O′P2′P2+∠OP2P2′=360
即
(θ1+α)+90+(180−θ2)+90=360
整理之后,得到,
θ2=θ1+α
在中小学的时期,我们学到如下计算周长的公式:
C=2πr=r∫2π0dθ
由此可知,当θ的值很小的时候,周长=角度*半径。利用这种思想,我们可以构建如下的公式:
αR=l
α(R+w)=r
在上述公式中,只有l和r是已经知道的,但是我们可以根据该公式计算出α和R:
α=r−lw
R=lwr−l
现在已知P1(x1,y1,θ1)、α、R和轮子之间的间距w,如何求P2呢?
假设机器人在转弯的时候是以圆心O为中心从P1(x1,y1,θ1)运动到P2(x2,y2,θ2),
那么圆心的计算公式如下:
x0+(R+w2)sin(θ1)=x1
y0−(R+w2)cos(θ1)=y1
[x0y0]=[x1y1]+(R+w2)[−sin(θ1)cos(θ1)]
知道圆心和从P1到P2之间移动角度大小为θ1+α,那么P2的计算方法为:
[x0y0]+(R+w2)[cos(θ1+α)−sin(θ1+α)]=[x2y2]
所以此时P2(x2,y2,θ2)的坐标为
⎡⎣⎢x2y2θ2⎤⎦⎥=⎡⎣⎢⎢(R+w2)cos(θ1+α)−(R+w2)sin(θ1+α)θ1+α⎤⎦⎥⎥
2. 不转弯的情况
当机器人不转弯的时候,机器人位姿中θ1是不会发生变化的,且l=r,所以这时
θ2=θ1
而机器人的位姿会发生的变化如下图所示,

[x2y2]=[x1y1]+[lcos(θ1)lsin(θ1)]