注意:本文提到的机器人移动模型仅限于带轮子的这种机器人,不是几条腿的那种。
什么是里程?咱们坐出租车就知道里面有个里程计。这个里程计可以统计轮胎转了多少距离。所以我们可以直观的理解里程就是某个指标的一段变化量大小。这个变化量可以指距离变化也可以指角度变化。
注意了:基于里程的机器人移动模型要解决的问题是在已知机器人上个时刻位置和朝向角度、已知上个时刻到现在时刻这段时间内机器人预期移动距离和角度变化,的情况下求当前时刻机器人所在的位置和朝向。举个例子看看移动模型做了什么事。已知上个时刻机器人位置坐标是(1,0),这段时间变化量是(0.1,0.2);移动模型会计算当前时刻机器人的位置估计: (1,0)+(0.1,0.2)+(一个随机数,一个随机数)。
你一定会有三个问题:
从上面的描述可以看到怎么根据控制命令生成噪声随机数是移动模型中的关键。比如机器人某条命令是:转30度,直走2m,再转-20度。那么这三个命令就得执行三次,那就得加3次噪声随机数。移动模型大致讲完了。剩下的就是具体怎么科学的加噪声。在前面提到的两种常见的机器人移动模型建模,分别是:基于里程的移动模型,和基于速度的移动模型。这他们两最大区别也是在于加的噪声不同。
一般基于速度的移动模型里面有两种速度:旋转速度和平移速度。一般商用机器人也会提供相应的速度控制接口。基于速度的移动模型和上面的基本一样。唯一的区别就是基于里程计的是里程需要加噪声误差,而基于速度的移动模型是速度需要加噪声误差而已。python代码实践
基于里程的移动模型一般比基于速度的移动模型要更准确。因为里程信息可以在执行完控制命令后直接从轮子那读取。但是速度的话并不能像里程那样精确用传感器获取。当然里程信息也有缺点,它等到执行完才能知道机器人走了多远距离。而速度信息可以在控制的时候就确定,比如控制命令是当前机器人保持1m/s速度直行3小时。所以使用里程和速度信息进行机器人移动建模各有优缺点。基于里程的移动模型适合在机器人行走过程中估计机器人的位置信息(执行命令后)。基于速度的移动模型适合用于运动规划避碰(执行命令前)。