移动机器人常用ROS局部规划器简介

文章目录

    • 背景
    • base_local_planner
    • DWA_local_planner
    • DWB_local_planner
    • asr_ftc_local_planner
    • TEB_local_planner
    • Eband_local_planner

背景

对于室内小车,ROS社区已有很多大牛们贡献了各种不同的局部规划器,总结主要有以下几种:

  • base_local_planner
  • DWA_local_planner
  • DWB_local_planner
  • asr_ftc_local_planner
  • TEB_local_planner
  • Eband_local_planner

以下分别介绍。

base_local_planner

移动机器人常用ROS局部规划器简介_第1张图片

wiki主页:http://wiki.ros.org/base_local_planner

base_local_planner包含有轨迹展开(Trajectory Rollout)和动态窗口方法(Dynamic Window Approach,DWA)算法。基本思想如下:

  1. 在机器人的控制空间(dx,dy,dtheta)中进行离散采样。
  2. 对于每个采样速度,从机器人的当前状态执行前向模拟,以预测如果应用采样速度在某个(短)时间段内会发生什么情况。
  3. 使用包含以下特征的度量来评估(评分)由前向模拟产生的每个轨迹:接近障碍物程度,接近目标程度,接近全局路径程度和采用的速度。丢弃非法轨迹(与障碍物碰撞的轨迹)。
  4. 选择得分最高的轨迹并将相关的速度发送到移动基座。
  5. 清零并重复。

DWA与“Trajectory Rollout”的不同之处在于如何对机器人的控制空间进行采样。在给定机器人的加速度极限的情况下,Trajectory Rollout在整个前向模拟周期内从可实现的速度集合中进行采样,而DWA在给定机器人的加速度极限的情况下仅针对一个模拟步骤从可实现的速度集合中进行采样。这意味着DWA是一种更有效的算法,因为它可以采样更小的空间,但是对于具有低加速度限制的机器人,可能性能不如“Trajectory Rollout”,因为DWA不会向前模拟恒定加速度。然而,在实践中,我们发现DWA和轨迹展示在我们的所有测试中都具有相同的性能,建议使用DWA来提高效率。

DWA_local_planner

移动机器人常用ROS局部规划器简介_第2张图片

wiki主页:http://wiki.ros.org/dwa_local_planner

介绍见上面base_local_planner

DWB_local_planner

移动机器人常用ROS局部规划器简介_第3张图片

wiki主页:http://wiki.ros.org/dwb_local_planner

项目主页: https://github.com/locusrobotics/robot_navigation/tree/master/dwb_local_planner

dwb_local_planner重新实现并扩展了dwa_local_planner的功能,因此在逻辑上称为dwb_local_planner。它的目标是通过pluginlib或直接扩展实现类方式,可以定义尽可能多的功能。

局部规划器的目标是采用全局代价图和局部代价图,产生速度命令,使机器人到目标点。 dwadwb都通过速度采样来做到这一点,即生成合理的速度命令并在各种度量模型上评估它们的效果并选择具有最佳得分的命令,以使机器人达到目标。

假设我们正在评估给定的命令,看它是否与costmap中的任何障碍物发生碰撞。关键问题是机器人是否采用该速度命令驱动机器人行走。为此,需要知道机器人的位置和速度。此外,还需要考虑机器人的运动学特征。

综合来看,这是一个David V Lu重新实现的基于DWA算法的提供更多扩展功能的规划器。效果上应与DWA类似。

asr_ftc_local_planner

移动机器人常用ROS局部规划器简介_第4张图片
wiki主页: http://wiki.ros.org/asr_ftc_local_planner

asr_ftc_local_planner意为“跟随萝卜”的算法,以尽可能地贴合全局路径。
当发送一个新目标点后,算法可划分为三个阶段:

  • 将机器人的转向目标点朝向
  • 走向目标
  • 在目标点将机器人的朝向旋转到位

主要优势

  • 快速驾驶:机器人尽可能达到最大速度行驶。
  • 参数很少:只需设置11个参数。
  • 很少有剧烈转换的情况:机器人尽可能以最大速度往前开。
  • 小房间情况:机器人紧密跟随全局路径,不像dwa_local_planner那样存在绕目标点循环的问题。所以它可以在小房间中无冲突行驶。
  • 通过全局路径在前进中排除障碍:保证在障碍物附近找到路径。
  • 处理时间短

缺点

  • 仅适用于圆形的机器人。
  • 只适用于差动驱动的机器人。
  • 仅有向前走(没有后退机制)。

可见它是一种很简单的路径跟随规划器,适用于AGV这种在固定位置有预设动作的机器人。

TEB_local_planner

移动机器人常用ROS局部规划器简介_第5张图片

wiki主页:http://wiki.ros.org/teb_local_planner

teb_local_planner实现了一个在线优化的局部轨迹规划器,用于移动机器人的导航和控制,可以作为ROS导航包的插件。

由全局规划器生成的初始轨迹在运行期间进行优化,以最小化轨迹的执行时间(时间最优目标),与障碍物分离处理,满足诸如最大速度和加速度的动力学约束。

teb_local_planner的当前实现符合非完整机器人(差动驱动和类似汽车的机器人)的运动学特征。
(注:对地面移动机器人来说,非完整机器人 X X X—方向有速度,而 Y Y Y-速度为0的机器人)

注意:teb_local_planner的最重要特征在于:在行进过程中调整机器人的朝向以使到达位置时的朝向是所要的朝向(见前面的图)。此外,它在行进过程中也不会紧密贴合路径(见下图)。

移动机器人常用ROS局部规划器简介_第6张图片

Eband_local_planner

wiki主页:http://wiki.ros.org/eband_local_planner

eband_local_planner实现了base_local_planner的插件。它在SE2流形上实现了弹性带方法。
ROS的move_base局部规划器的原始实现仅支持全向(完整)机器人。

修改了当前版本以与差分驱动器一起使用。将differential_drive设置为false以启用横向/完整运动,但该模式已经过很长时间的测试,应该被认为是实验性的。

在到达目标位置和目标之前计算速度时,差动驱动机器人可以处于三种动作之一:

1:机器人在目标位置的横向公差(xy_goal_tolerance)内,并且在适当位置旋转以达到目标方向。

2:机器人在目标位置的横向公差之外,则必须朝向目标移动。给定机器人的方向以及弹性带中下一个点的方向,机器人首先计算这两个位置之间的差异。如果该差值小于参数rotation_threshold_multiplier,则机器人执行线性和角速度分量以朝向频带中的下一个点弧。一旦机器人靠近目标位置,使得到目标的x和y距离小于0.6 * xy_goal_tolerance,然后进入步骤1。

这里选择0.6,因为机器人在开始之前接近目标而不是公差要求最后一个转弯,因为最后一个转弯可能会导致机器人稍微偏离位置。

3:如果在前一步骤中计算的差值大于参数rotation_threshold_multiplier,则机器人就位,直到差值变小,并且机器人可以执行动作2。

移动机器人常用ROS局部规划器简介_第7张图片

移动机器人常用ROS局部规划器简介_第8张图片
Bubble就是一个代表路径上的点与障碍物不冲突的圆形范围(not to collide with an obstacle),如果距离障碍物近,bubble会小,距离障碍物远,bubble会大
移动机器人常用ROS局部规划器简介_第9张图片
为了确保path 是 collision free的,我们会让生成bubbles是overlap的,这一点图中也可以看得出来。

最后就是操纵生成的Bubble(Manipulating the Bubbles) 。比如对bubble前移或者后移,在障碍物近的地方生成bubble更加密集

参考:
【1】 https://blog.csdn.net/lh2008xp/article/details/89214582
【2】 https://blog.csdn.net/qq91752728/article/details/81179744

你可能感兴趣的:(ROS,Navigation,ROS激光SLAM导航)