Skip to content

踩坑GitHub ros-planning/moveit21 个月前

MoveIt2返回错误码-27及规划失败被覆盖为99999 ​

本文由 AI 根据公开内容整理,可能有误,请以原文为准:Moveit error code -27(GitHub ros-planning/moveit2 #3667)

状态:有绕过办法

问题 ​

在ROS2 Humble源码编译的MoveIt2中,碰撞检测返回未文档化的错误码-27。此外,当规划组名称无效或无IK解时,/move_action接口本应返回-15或-31等具体错误,实际却统一返回通用FAILURE(99999),导致无法区分具体故障原因。

环境 ​

ROS2 Humble/Jazzy, Ubuntu 22.04, MoveIt2源码编译, CycloneDDS

解决办法 ​

  1. 确认错误码-27对应GOAL_STATE_INVALID,表示轨迹终点处于碰撞状态,需调整目标位姿或场景物体。
  2. 针对错误码被覆盖为99999的问题,定位move_action_capability.cpp中的executeMoveCallbackPlanOnly函数。
  3. 修改逻辑:在planning_pipeline->generatePlan返回false时,仅在res.error_code为SUCCESS或UNDEFINED时才赋值为FAILURE,否则保留规划器返回的原始非成功错误码。
  4. 参考并合入moveit2 PR #3699(Jazzy)或PR #3894(Humble/Pilz序列),该补丁修复了/move_action plan-only、Pilz sequence_move_group及OMPL无效组场景下的错误码丢失问题。

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

来源

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

  1. GitHub ros-planning/moveit2 #3667:Moveit error code -27访问 2026-10-26