无人驾驶算法学习(十四):轮速计差速模型之航迹推算

1.双轮差速模型

下图是移动机器人在两个相邻时刻的位姿,其中 θ 1 {\theta_1} θ1是两相邻时刻移动机器人绕圆弧运动的角度, θ 3 {\theta_3} θ3是两相邻时刻移动机器航向角(朝向角head)的变化量。l是左右轮之间的间距,d是右轮比左轮多走的距离。r是移动机器人圆弧运动的半径。移动机器人前进速度v、转向角速度w与左轮速度vl、右轮速度vr之间的转换。
在这里插入图片描述
移动机器人前进速度等于左右轮速度的平均,这个好理解。
在这里插入图片描述
现在来推导机器人航向角如何计算,以及如何计算角速度w。如图所示,把两个时刻的机器人位置叠加在一起,可以清楚的看到移动机器人航向角变化量是 θ 3 {\theta_3} θ3。从图中的几何关系可以得到:
在这里插入图片描述
也就是说移动机器人航向角变化了多少角度,它就绕其运动轨迹的圆心旋转了多少角度。这句话很好验证,我们让机器人做圆周运动,从起点出发绕圆心一圈回到起点处,在这过程中机器人累计的航向角为360度,同时它也确实绕轨迹圆心运动了360度,说明机器人航向角变化多少度,就绕圆心旋转了多少度。而这三个角度中, θ 2 {\theta_2} θ2很容易计算出来,由于相邻时刻时间很短,角度变化量很小,有下面的近似公式:
在这里插入图片描述
所以可以得到机器人绕圆心运动的角速度,它也是机器人航向角变化的速度:
在这里插入图片描述
线速度、角速度都有了,因此可以推出移动机器人圆弧运动的半径:
在这里插入图片描述
从公式(3)可以发现当左轮速度等于右轮速度时,半径无穷大,即直线运动。最后将三个公式综合起来,可以得到左右轮速度和线速度角速度之间的关系如下
在这里插入图片描述

2.航迹推算

M6Ly9ibG9nLmNzZG4ubmV0L29yYW5nZV9saXR0bGVnaXJs,size_16,color_FFFFFF,t_70)

在这里插入图片描述

参考:https://blog.csdn.net/heyijia0327/article/details/47021861
https://blog.csdn.net/KYJL888/article/details/100515455

里程计(Odometry)是机器人导航中的一种技术,通过对机器人轮子的旋转速度进行测量,推算机器人相对于初始位置的移动距离和方向。航迹推算就是利用里程计数据推算机器人在空间中的移动轨迹。 以下是一个基于 Python 的简单里程计航迹推算代码示例: ```python import math # 定义机器人初始位置和方向 x = 0 y = 0 theta = 0 # 定义轮子半径和轮子间距 r = 0.05 L = 0.2 # 定义里程计数据 dt = 0.1 v = 0.1 w = math.pi/10 # 开始航迹推算 for i in range(100): x = x + v*dt*math.cos(theta) y = y + v*dt*math.sin(theta) theta = theta + w*dt dx = v*dt*math.cos(theta) dy = v*dt*math.sin(theta) dtheta = w*dt J = [[1, 0, -dy], [0, 1, dx], [0, 0, 1]] R = [[math.cos(dtheta), -math.sin(dtheta), 0], [math.sin(dtheta), math.cos(dtheta), 0], [0, 0, 1]] T = [[dx], [dy], [dtheta]] X = [[x], [y], [theta]] X = J @ R @ T + X x = X[0][0] y = X[1][0] theta = X[2][0] # 输出当前位置和方向 print("x=", x, "y=", y, "theta=", theta) ``` 这个示例定义了机器人的初始位置和方向,以及轮子半径和轮子间距。随后,它使用一个简单的运动模型推算机器人在空间中的位置和方向。在每个时间步,它首先使用里程计数据计算机器人在平面上的移动距离和方向;然后,它使用这些数据构建一个运动模型,通过矩阵乘法计算机器人的新位置和方向。最后,它输出当前的位置和方向。需要注意的是,这只是一个示例,具体实现可能因机器人类型和应用场景而有所不同。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值