Skip to content

Planner Server: Allow planning until last reachable pose before obstacle #5535

@jpcastillo26

Description

@jpcastillo26

Feature request

Feature description

Currently, the compute_path_through_poses action in the planner server fails when any obstacle completely blocks the path to any of the intermediate poses and there are no alternative paths, regardless of how far away the obstacle is. This all-or-nothing approach prevents the robot from navigating to any of the reachable poses in the sequence.

This feature request proposes implementing partial path planning for compute_path_through_poses, allowing the robot to navigate to the last reachable pose before encountering the obstacle. This would be useful in dynamic environments where temporary obstacles may block the path completely for a prolonged period of time.

The robot would successfully navigate through all poses it can reach and stop at the last valid pose, rather than failing while still far away from the obstacle on route to a distant goal.

Implementation considerations

Proposed Solution:
Modify the computePlanThroughPoses() function (or create new action) in planner_server.cpp to allow for partial path planning:

  1. Sequential planning with failure tolerance: Continue planning through the pose sequence, but don't fail completely when a single segment fails
  2. Partial path validation: Allow the action to succeed with a partial path that reaches the last accessible pose
  3. First goal validation: Still fail if the very first goal is unreachable (no partial path possible)

Implementation Details:

  • Replace immediate NoValidPathCouldBeFound exception with warning logging and loop continuation
  • Add final validation to ensure at least one valid path segment exists
  • Maintain backward compatibility - existing behavior for single-goal planning unchanged
  • Preserve all existing error handling for other failure modes (TF errors, invalid planners, etc.)

Pros:

  • Enables partial mission completion when full path is blocked

Cons:

  • Changes behavior semantics (partial success vs complete failure)
  • May require client applications to handle partial path results

Alternative Approaches:

  1. New action type: Create a new action to avoid breaking existing behavior
  2. Parameter-based: Add a parameter to enable/disable partial planning mode

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions