Skip to content

feat(fault_pack): promote aborted action goals to faults #421

@mfaferek93

Description

@mfaferek93

For the core stacks (Nav2, MoveIt 2, ros2_control), the authoritative failure is the action result, not /rosout or /diagnostics. A MoveGroup / NavigateToPose abort emits no /rosout ERROR and there is no /diagnostics, so log- and diagnostic-based rules miss it entirely. Catch it generically via the goal-status channel.

Scope

  • Discover every action via its */_action/status topic (action_msgs/msg/GoalStatusArray); rescan the graph for actions that appear later.
  • ABORTED (6) -> fault (default SEVERITY_ERROR); CANCELED (5) -> fault only if canceled_is_fault; SUCCEEDED (4) -> PASSED to heal the action's ABORTED code.
  • fault_code = <PREFIX>_<ACTION>_ABORTED; source_id = action name.
  • Per-goal dedup keyed on goal_id so a latched terminal status reports once.
  • Reporter local filtering disabled for these terminal events (an abort is discrete, not flapping) so a single recovery heals reliably.

Acceptance

  • An unreachable MoveGroup / NavigateToPose goal produces ACTION_<name>_ABORTED CONFIRMED in list_faults, source = action name.
  • A subsequent successful goal heals it to HEALED (FaultManager healing_enabled).
  • A MoveIt abort produces the action fault with zero LOG_* faults present (the action channel is the only signal).
  • Unit tests: action-name extraction from the status topic, fault_code, uuid/dedup.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request
No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions