๐ Advanced Usage โ Waypoint Management
This section explains how to add, modify, optimize, and dynamically update waypoints for your LIMO's exploration routes while keeping the detectionโpickโdrop logic intact.
๐ Current Waypoint Structureโ
Your mission_manager.py stores waypoints as:
WAYPOINTS = [
(0.37247, -0.10103, -13.26),
(1.05778, -0.28532, -13.34),
(1.71948, -0.40092, -11.97),
(2.63431, -0.54106, 7.45),
(3.70974, -0.48306, -12.09),
(3.96764, -0.49506, -44.46)
]
Each waypoint is a tuple:
(x_position, y_position, yaw_degrees)
โ Adding New Waypointsโ
1. Find Coordinates in RVizโ
- Click 2D Nav Goal.
- Read
/amcl_pose:
ros2 topic echo /amcl_pose
Note x, y, and convert quaternion to yaw (in degrees).
2. Add to the Listโ
WAYPOINTS.append((new_x, new_y, new_yaw))
3. Rebuild Workspaceโ
colcon build --packages-select nav_handler
source install/setup.bash
4. Test in Simulation or Small Areaโ
Run full_system.launch.py and ensure robot visits the new point in order.
Place new waypoints so the robot can rotate and scan without colliding with obstacles.
โ๏ธ Modifying Existing Routesโ
- Simply change
x,y,yawin theWAYPOINTSlist. - Keep sequential flow logical (avoid sharp backtracking).
- If you want to skip certain points temporarily:
WAYPOINTS = WAYPOINTS[:3] # Only first 3 waypoints
โก Waypoint Optimizationโ
Reduce Travel Time:โ
Order points to minimize path length (use TSP solver if many points).
Improve Coverage:โ
Ensure scanning arcs overlap slightly so no blind zones remain.
Include Rotation Angles:โ
Choose yaw so the camera faces open space for best object detection.
Example optimized layout:
WAYPOINTS = [
(-0.78, -0.23, 7.9),
(-0.49, 0.00, -33.3),
(-0.22, -0.15, -55.0),
(0.15, -0.62, -29.2),
(1.31, -0.65, -9.5),
(2.20, -0.61, 2.0),
(3.71, -0.53, -3.5)
]
๐ Dynamic Waypoint Updatesโ
You can update waypoints on the fly without restarting the system:
- 1. Using a ROS 2 Service
- 2. Using a Topic
- Create a service
/update_waypointsthat updates theWAYPOINTSlist inmission_manager. - Call service from terminal or another node.
- Subscribe to
/waypoint_updateinmission_manager.py. - Publish a list of waypoints during runtime to override current path.
Dynamic updates will only take effect when the robot is in IDLE or after completing its current navigation goal. Object detection interruptions still override waypoints immediately.
โ Success Indicatorsโ
- Robot visits all intended waypoints in order.
- No collision warnings in Nav2 logs.
- Scanning occurs at each waypoint.
- Detection interruptions still trigger correct pickโdrop sequence.
Next: โ๏ธ Hardware Upgrades & Integrations