配置指南
本指南提供了一套流程,帮助用户调整可调参数,以获得最佳的导航性能。
核心服务器(Core Servers)
Section titled “核心服务器(Core Servers)”核心服务器是 Nav2 导航栈的基础组件,负责各关键功能模块的运行与管理,包括行为树导航、控制器、规划器、代价地图、碰撞监控等核心服务节点的配置。
| 配置页面 | 说明 |
|---|---|
| 行为服务器(Behavior Server) | 实现行为请求处理服务器,托管恢复行为、对接等插件,支持多个行为共享代价地图和 TF 缓冲区等资源 |
| 行为树导航器(BT Navigator) | 使用行为树实现 NavigateToPose、NavigateThroughPoses 等导航任务接口,支持复杂的机器人行为编排与恢复 |
| 行为树 XML 节点(BT XML) | 提供 nav2_behavior_tree 包中预注册的导航专用行为树节点,可在行为树 XML 中直接引用 |
| 碰撞监控器(Collision Monitor) | 提供额外的安全防护层,利用传感器数据绕过代价地图和轨迹规划,在紧急停车级别监控并阻止潜在碰撞 |
| 控制器服务器(Controller Server) | 实现控制器请求处理服务器,托管控制器、进度检查器和目标检查器插件,同时管理局部代价地图 |
| 代价地图(Costmaps) | 实现基于 2D 网格的代价地图,包含传感器处理插件,供规划器和控制器进行碰撞检测与代价计算 |
| 对接服务器(Docking Server) | 实现机器人对接与分离服务器(充电站或传送带等非充电位置),通过插件化对接实现支持不同运动学模型和传感器 |
| 生命周期管理(Lifecycle) | 生命周期管理器负责以确定性方式管理 Nav2 各节点的生命周期状态转换,有序启动和关闭节点并建立 bond 连接以检测异常 |
| 地图服务器(Map Server) | 实现栅格地图的加载、保存和发布等组件,处理地图数据及其元数据 |
| 规划器服务器(Planner Server) | 实现规划器请求处理服务器,托管规划器插件映射表,接收目标并计算到目标的路径,同时管理全局代价地图 |
| 路线服务器(Route Server) | 实现基于预定义导航图的路由计算服务器,可替代或增强全局规划器进行长距离路由规划 |
| 平滑器服务器(Smoother Server) | 实现路径平滑请求处理服务器,托管平滑器插件,通过 action 接口提供共享资源的路径平滑服务 |
| 速度平滑器(Velocity Smoother) | 用于平滑 Nav2 发送到机器人控制器的速度命令的生命周期节点,实现速度、加速度和死区平滑以减少电机和硬件损耗 |
| 航点跟随器(Waypoint Follower) | 实现有序航点集合的跟随功能,托管航点任务执行器插件以在每个航点执行自定义行为 |
规划器插件(Planner Plugins)
Section titled “规划器插件(Planner Plugins)”规划器插件实现全局路径规划算法,根据目标和环境计算从当前位置到目标位置的路径。Nav2 支持多种规划器插件,可根据场景选择最合适的算法。
| 配置页面 | 说明 |
|---|---|
| NavFn 规划器 | 实现 Dijkstra 或 A* 波前展开的全向运动规划器 |
| Smac 规划器 | 实现三种基于 A的规划算法:2D A、Hybrid-A* 和状态格点规划器 |
| Theta* 规划器 | 实现 Theta* 路径规划器,使用 A* 算法规划任意角度的线段路径 |
控制器插件(Controller Plugins)
Section titled “控制器插件(Controller Plugins)”控制器插件实现局部路径跟随和运动控制,根据全局路径和当前状态生成速度命令。不同插件适用于不同的机器人类型和运动需求。
| 配置页面 | 说明 |
|---|---|
| DWB 控制器 | 默认控制器,是 David Lu 的动态窗口法(DWA)控制器的 ROS 2 移植版 |
| 优雅运动控制器 | 基于 Park 和 Kuipers(ICRA 2011)的研究,使用指数稳定的运动学目标(kinematic target)为差速驱动机器人生成平滑轨迹 |
| MPPI 控制器 | 实现模型预测路径积分(Model Predictive Path Integral, MPPI)控制器——一种预测性的、基于采样的控制器,支持差速、全向和阿克曼机器人 |
| 受限纯追踪控制器 | 实现纯追踪算法的变体,面向服务/工业机器人需求,根据路径曲率调节线速度以减少过冲 |
| 旋转填充控制器 | 检查机器人与接收路径之间的航向差,超出阈值时原地旋转朝向路径后再交由主控制器处理 |
平滑器插件(Smoother Plugins)
Section titled “平滑器插件(Smoother Plugins)”平滑器插件对规划生成的路径进行后处理优化,减少抖动和不连续性,提升路径质量。
| 配置页面 | 说明 |
|---|---|
| 约束平滑器 | 基于 nav2_smac_planner 中的平滑器,适用于将路径推离障碍物以及 Reeds-Shepp 运动模型,使用 Ceres 优化路径长度、平滑度、障碍物距离和曲率 |
| Savitzky-Golay 平滑器 | 使用 Savitzky-Golay 数字信号处理滤波器平滑路径以减少噪声,速度极快(小于 1ms),适用于去除微小伪影 |
| 简单平滑器 | 通过加权初始路径和平滑后路径点来减少振荡,同时保留高层路径特征,仅推荐用于不考虑运动学可行性的规划器(如 2D 规划器) |
其他(Others)
Section titled “其他(Others)”其他辅助组件提供定位、覆盖规划、动态目标跟随和仿真等功能,扩展 Nav2 的应用范围。
| 配置页面 | 说明 |
|---|---|
| AMCL 定位 | 使用自适应蒙特卡洛定位器实现机器人在静态地图中的定位 |
| 覆盖服务器(Coverage Server) | 使用 Fields2Cover 库实现给定区域或地带的完整覆盖规划,支持笛卡尔或 GPS 坐标 |
| 跟随服务器(Following Server) | 实现对动态目标的跟随,目标可通过检测话题或特定参考系指定,通过跟踪检测结果或坐标帧保持设定距离 |
| 回环仿真器(Loopback Sim) | 独立仿真器,根据速度命令计算里程计,创建「无摩擦平面」式仿真,适用于测试、研发和多机器人仿真 |