Skip to content

踩坑GitHub ros-navigation/navigation214 天前

Nav2 Route缺少接近节点触发机制,建议用ON_QUERY插件实现 ​

本文由 AI 根据公开内容整理,可能有误,请以原文为准:[nav2_route] Approaching node notifier(GitHub ros-navigation/navigation2 #6647)

状态:有绕过办法

问题 ​

在Nav2 Route中,机器人需要在接近目标节点(如自动门、电梯)时提前触发行为,而非仅在到达时触发。现有方法要么添加中间节点破坏图语义,要么增大radius_to_achieve_node导致规划器误判到达状态。提议新增ON_APPROACH操作及approach_radius参数以支持基于距离的预触发。

环境 ​

ROS Navigation2 (nav2_route), RouteTracker, ON_QUERY/ON_ENTER/ON_EXIT node operations

解决办法 ​

  1. 复用现有 ON_QUERY 路由操作机制(参考 collision_monitor.hpp 实现模式),无需修改核心代码或新增 ON_APPROACH 类型。
  2. 编写自定义 Route Operation 插件,在 Query 回调中读取当前 next_node 元数据中的接近距离阈值配置。
  3. 计算当前位置与目标节点的 L2 距离,当距离小于设定阈值且满足触发条件时执行对应行为逻辑。
  4. 利用元数据字段标记已处理节点,避免对无相关配置的节点进行重复距离计算,确保轮询开销不随行为数量线性增长。

讨论原作者:@SuadOcado 等,版权归原作者所有。

来源

本页事实对应的公开页面,以原文为准。

  1. GitHub ros-navigation/navigation2 #6647:[nav2_route] Approaching node notifier访问 2026-10-26