航迹推演

​ 做机器人底层程序的时候,经常用到航迹推演(Odometry),无论是定位导航还是普通的方向控制。航迹推演中除了对机器人位姿进行估计,另一个很重要的关系是移动机器人前进速度v、转向角速度w与左轮速度v_{l}、右轮速度v_{r}之间的转换。

​ 在机器人局部路径规划算法DWA解析一文中,是在假设已知机器人前进线速度v和角速度w的情况下,对机器人航迹推演的位姿进行推导了,然而缺少如何通过左右轮速度得到vw,因此本文将补上这个空缺。

​ 下图是移动机器人在两个相邻时刻的位姿,其中\theta _{1}是两相邻时刻移动机器人绕圆弧运动的角度,\theta _{3}是两相邻时刻移动机器航向角(朝向角head)的变化量。l是左右轮之间的间距,d是右轮比左轮多走的距离。r是移动机器人圆弧运动的半径。

​ 移动机器人前进速度等于左右轮速度的平均,这个好理解:

v=vr+vl2(1) v = v r + v l 2 ( 1 )

​ 现在来推导机器人航向角如何计算,以及如何计算角速度 w。如图所示,把两个时刻的机器人位置叠加在一起,可以清楚的看到移动机器人航向角变化量是 \theta _{3}。从图中的几何关系可以得到:
θ3=θ2=θ1 θ 3 = θ 2 = θ 1

​ 也就是说移动机器人航向角变化了多少角度,它就绕其运动轨迹的圆心旋转了多少角度。这句话很好验证,我们让机器人做圆周运动,从起点出发绕圆心一圈回到起点处,在这过程中机器人累计的航向角为360度,同时它也确实绕轨迹圆心运动了360度,说明机器人航向角变化多少度,就绕圆心旋转了多少度。而这三个角度中, \theta _{2}很容易计算出来,由于相邻时刻时间很短,角度变化量 \theta _{2}很小,有下面的近似公式:
θ2sin(θ)=dl=(vrvl)Δtl θ 2 ≈ s i n ( θ ) = d l = ( v r − v l ) ⋅ Δ t l

​ 所以可以得到机器人绕圆心运动的角速度 w,它也是机器人航向角变化的速度:
w=θ1Δt=vrvll(2) w = θ 1 Δ t = v r − v l l ( 2 )

​ 线速度、角速度都有了,因此可以推出移动机器人圆弧运动的半径:
r=vw=l(vr+vl)2(vrvl)(3) r = v w = l ⋅ ( v r + v l ) 2 ( v r − v l ) ( 3 )

​ 从公式(3)可以发现当左轮速度等于右轮速度时,半径无穷大,即直线运动。最后将三个公式综合起来,可以得到左右轮速度和线速度角速度之间的关系如下:
v=vr+vl2,ω=vrvll,v=ωr=l(vr+vl)2(vrvl) v = v r + v l 2 , ω = v r − v l l , v = ω r = l ( v r + v l ) 2 ( v r − v l )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值