机器人的运动模型
这篇文章主要介绍两轮机器人如何根据:
机器人轮子的编码信息和机器人当先位姿
(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)]