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

> 原文链接：https://robotics.hellobike.com/pitfalls/2026-09-28-moveit2-3667
> 频道：pitfalls | 更新日期：2026-09-28 | 标签：auto, github-issue, moveit2
> 核心摘要：-27表示目标状态无效；规划特定错误被覆盖为99999系源码缺陷，需应用PR修复以保留原始错误码。

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

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Moveit error code -27](https://github.com/moveit/moveit2/issues/3667)（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 等，版权归原作者所有。
:::

## 原始参考来源 (Sources)

- [GitHub ros-planning/moveit2 #3667：Moveit error code -27](https://github.com/moveit/moveit2/issues/3667)