【ROS】局部规划器概述
【ROS】局部规划器概述
- 前言
- 局部规划器的种类
- 如何使用局部规划器
前言
本文介绍 ROS 导航系统中非常重要的一部分——局部规划器(local_planner
)。
全局规划器只是给出一条大致的路径,但机器人具体怎么走、怎么避开障碍物,是由局部规划器来决定的。它会根据机器人当前的位置、障碍物信息等,实时计算出速度指令(cmd_vel
),控制机器人行动。
如果局部规划器配置不当,机器人可能无法沿着全局路径前进,或者在遇到障碍物时无法正确避让。
它的核心作用包括:
- 实时生成控制指令,控制机器人运动
- 动态避障,处理临时出现的障碍物
可以把局部规划器理解为导航过程中的“司机”,负责开车。
我的环境:
本教程使用的环境是:实体 ROS 小车,Ubuntu 18.04,ROS1 Melodic
参考资料:
- ROS导航系统 | 局部规划器 | Local Planner
局部规划器的种类
ROS 中有多种局部规划器可供选择,常见的包括:
TrajectoryPlanner
(官方默认,内部为 DWA 算法)DWAPlanner
(官方推荐,结构更清晰)EbandPlanner
(第三方)TEBPlanner
(第三方,性能更强)
此外,也可以根据特定任务需求,自行开发局部规划器。但从零开发难度较大,建议先尝试现有开源的规划器,选择效果较好的进行微调或基于其代码进行优化开发。
说明:
-
Trajectory Planner
是 ROS 早期的默认局部规划器,内部基于 DWA 算法,但代码维护较差,因此后来又推出了结构更清晰的DWA Planner
。 -
Eband Planner
和TEBP lanner
原理相似,但TEB Planner
引入了时间维度的优化,支持代价函数插件,具备更好的运动平滑性和执行效率。
✅ 实践中,使用最多的局部规划器是
DWA Planner
和TEB Planner
如何使用局部规划器
使用步骤如下:
- 编写对应的参数文件,如
my_teb_planner.yaml
,根据实际情况调整参数 - 在
launch
启动文件中加载该参数文件,使move_base
能正确调用所配置的规划器 - 在
move_base
节点中指定局部规划器的名称,例如base_local_planner: teb_local_planner/TebLocalPlannerROS