[Other issue]: Phase-Aware Route Validation Implementation - Request for Review and Feedback
@mxgrey is already working on this.
Since Aug 26, 2025.
- Dominant language
- Python
- Stars
- 438
- Forks
- 89
- PR merge metrics
- No merged PRs in 30d
Description
Before proceeding, is there an existing issue or discussion for this?
- I have done a search for similar issues and discussions.
Description
Key Files Modified
src/rmf/rmf_ros2/rmf_fleet_adapter/
├── include/rmf_fleet_adapter/agv/
│ ├── RobotContext.hpp (added DeliveryPhase enum)
│ └── PhaseAwareRouteValidator.hpp (new file)
├── src/rmf_fleet_adapter/agv/
│ ├── RobotContext.cpp (phase management methods)
│ └── PhaseAwareRouteValidator.cpp (implementation)
├── src/rmf_fleet_adapter/tasks/
│ └── Delivery.cpp (phase setting during TransferItems)
├── src/rmf_fleet_adapter/jobs/
│ └── SearchForPath.cpp (validator integration)
└── src/rmf_fleet_adapter/services/
└── FindPath.cpp (RobotContext passing)
Results and Testing
The implementation successfully:
✅ Detects delivery phases correctly (pickup vs dropoff)
✅ Rejects routes passing through excluded waypoints during dropoff phase
✅ Allows normal navigation during pickup phase
✅ Works per-robot without affecting other fleet members
✅ Maintains compatibility with existing RMF infrastructure
Questions for the Development Team
Architecture Review: Is this approach aligned with RMF's design principles and extension patterns?
Integration Potential: Would this be a valuable addition to the main RMF codebase as a configurable feature?
Performance Considerations: Are there any performance implications of the coordinate-based validation approach?
Alternative Approaches: Are there other recommended ways to achieve phase-aware route modifications in RMF?
Testing Recommendations: What additional testing scenarios should be considered for this feature?
Technical Details
The implementation uses coordinate-based validation with a configurable tolerance (currently 1.0m). The validator checks each trajectory waypoint against excluded coordinates and rejects routes that pass too close to excluded waypoints during the dropoff phase.
Through this approach, I still do not get the desired result during the drop-off phase, as the robot is not avoiding the excluded waypoints. Are there any solutions for this?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.