机器人的运动模型

这篇文章主要介绍两轮机器人如何根据:
机器人轮子的编码信息和机器人当先位姿(x1,y1,θ)计算出下一时刻机器人的位姿(x2,y2,θ2)
即:
输入:(x1,y2,θ1)、 机器人左右轮子的间距w,码盘的距离信息lr
输出:(x2,y2,θ2)
机器人在平面上运动时有两种情况,一种是转弯的情况,另一种是不转弯的情况;
下面分别进行介绍:

1. 转弯的情况

机器人在转弯的时候,其运动的示意图如下所示,其中角P1P1P2表示机器人P1点的头朝向,角P2P2线 表示机器人在P2点的头朝向。需要注意的是,头朝向θ 是以O为圆心,R+w/2为半径的圆的边界引出一条切线和基线之间的形成的夹角的大小。在图中,通过相似三角形的性质可以知道,P1P1P2 = OOP1 = θ1
那么角度θ2可以通过四边形OO’P2P2’的内角和为360度得到:

OOP2+OOP2+OP2P2+OP2P2=360


(θ1+α)+90+(180θ2)+90=360

整理之后,得到,
θ2=θ1+α

机器人的运动模型

在中小学的时期,我们学到如下计算周长的公式:

C=2πr=r02πdθ

由此可知,当θ的值很小的时候,周长=角度*半径。利用这种思想,我们可以构建如下的公式:
αR=l
α(R+w)=r

在上述公式中,只有lr是已经知道的,但是我们可以根据该公式计算出αR:
α=rlw
R=lwrl

现在已知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)]

知道圆心和从P1P2之间移动角度大小为θ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)]

相关文章: