预备
- 在机器人的运动中,经常会涉及到航向推演。 下面这篇博客写的挺好的。
https://blog.youkuaiyun.com/heyijia0327/article/details/44983551
- 在学习机器人运动模型推导的时候,有看到 网上别人的推导过程,链接如下:
https://blog.youkuaiyun.com/qq_16149777/article/details/73224070
http://www.diegorobot.com/wp/?p=740&lang=zh
正文
其中都有相对应的推导过程,但是,如果我只是在这复制黏贴那就毫无意义了,这里说一下我的推导思路,没有像上面去做了对应的近似,
结果也是很接近,算是开拓思路,减少误差,找个时间将会 搭个机器人里程计 框架计算出结果再与imu对比, 看一下误差会不会特别大。
哈哈,感受一下灵魂画手吧。
首先, 在差速机器人模型中,应用 PID(或ADRC算法)的算法,对左右轮的电机进行闭环控制,可以得到一个相对比较稳定的转速状态。
设左路的速度为Vl 右轮为Vr, 那么模型的中心线的线速度 Va=(Vl+Vr)/2 , 旋转角为θ, 左轮离圆心的距离为A,右轮离圆心的距离为(A+d), 轮距为d,设运动的时间Δt。
那么可得左轮的旋转角的公式为 : θ/360‘= (Δt * Vl)/(2*π*A),右轮的公式为 : θ/360‘= (Δt * Vr)/(2*π*(A+d)),
将二者相等之后,可得: A = (Vl*d)/(Vr-Vl),
模型的中线点的线速度和角度的公式为: θ/360‘ = (Va*Δt)/(2*π*(A+d/2));
结合前面的等式可得: θ/360‘= ((Vr-Vl) *Δt )/(2*π*d) ;
所以 θ = ((Vr-Vl) *Δt *360 )/(2*π*d) ; 弧度制: θ = ((Vr-Vl) *Δt )/(d),
这公式打得累死,===
前面的链接上 都会利用 泰勒级数,对 sin(θ )===》 θ。
如有错误,欢迎指出。
最后感谢一下csdn的草稿保存,差点哭出来 ==
----------------------------------------------- 2021-05-24 更新 -------------------------------------------------------------------
注意, 在得到瞬时角度和瞬时位移的时候,此时如果要计算机器人的全局坐标,需要先对起始到当前的角度偏移进行累加, 这样计算出来的瞬时位移, 才会携带从起点到当前位置的角度信息,也就是
才能真正表达从上一点到当前点的真正机器人在全局坐标系下的偏移量。
在计算向量在x,y轴上的投影距离时,才是正确的,倘若不累加角度计算, 每次计算的投影距离都是当前相对于初始坐标系的瞬时角度的投影距离, 这样的信息是不能够用来表达全局坐标系的位置的,
这个问题,我发现在很多教科书上,不知道是书写问题,还是怎么样, 都有这类问题。