外观
踩坑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
解决办法
- 确认错误码-27对应
GOAL_STATE_INVALID,表示轨迹终点处于碰撞状态,需调整目标位姿或场景物体。 - 针对错误码被覆盖为99999的问题,定位
move_action_capability.cpp中的executeMoveCallbackPlanOnly函数。 - 修改逻辑:在
planning_pipeline->generatePlan返回false时,仅在res.error_code为SUCCESS或UNDEFINED时才赋值为FAILURE,否则保留规划器返回的原始非成功错误码。 - 参考并合入moveit2 PR #3699(Jazzy)或PR #3894(Humble/Pilz序列),该补丁修复了/move_action plan-only、Pilz sequence_move_group及OMPL无效组场景下的错误码丢失问题。
讨论原作者:@usmanNoor5 等,版权归原作者所有。
来源
本页事实对应的公开页面,以原文为准。