feat: SLAM map persistence for AMCL (Issue #696) #705
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "sl-perception/issue-696-slam-map-persistence"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
map_saver_serverlifecycle node (nav2_map_server) +saltybot_map_saverhelper + lifecycle_manager. Configurablemap_dir(default/mnt/nvme/saltybot/maps) andmap_name./saltybot/save_mapTrigger service → callsmap_saver_cli. Reports saved map status on startup. Auto-saves on shutdown.map_saver_serverparams (timeout, thresholds, transient-local QoS).map_dir/map_nameargs; includesmap_persistence.launch.pysomap_saver_serverruns during SLAM sessions.map_dirarg; auto-detects/mnt/nvme/saltybot/maps/saltybot_map.yamlat launch time — uses saved map automatically, falls back to placeholder.map_saver_nodeentry point.Workflow
Test plan
python3 -m pytest test/test_nav2_amcl.py)ros2 launch nav2_slam_bringup.launch.py→ verifymap_saver_serveractiveros2 service call /saltybot/save_map→ verify.yaml/.pgmwritten to NVMenav2_amcl_bringup.launch.py→ verify log shows "saved NVMe map"map:=/path/to/custom.yamlstill respected🤖 Generated with Claude Code
- New map_persistence.launch.py: launches map_saver_server lifecycle node (nav2_map_server) + saltybot_map_saver helper node + lifecycle_manager. Configurable map_dir (default /mnt/nvme/saltybot/maps) and map_name. - New map_saver_node.py: ROS2 node providing /saltybot/save_map (Trigger service) that calls nav2_map_server map_saver_cli. On startup logs whether a saved map is present. Auto-saves map on shutdown (auto_save_on_shutdown). - New config/map_saver_params.yaml: map_saver_server params (save_map_timeout=5s, free/occupied thresholds, transient-local QoS). - nav2_slam_bringup.launch.py: adds map_dir + map_name args; includes map_persistence.launch.py so map_saver_server runs during SLAM sessions. - nav2_amcl_bringup.launch.py: adds map_dir arg; auto-detects saved map at /mnt/nvme/saltybot/maps/saltybot_map.yaml at launch time and uses it as the AMCL map; falls back to placeholder if not found. - setup.py: registers map_persistence.launch.py, map_saver_params.yaml, map_saver_node console_scripts entry point. - test_nav2_amcl.py: 21 new tests covering params, launch syntax, node service/shutdown behaviour, SLAM bringup inclusion, AMCL auto-detect. Workflow: 1. ros2 launch saltybot_nav2_slam nav2_slam_bringup.launch.py (build map) 2. ros2 service call /saltybot/save_map std_srvs/srv/Trigger {} (save) 3. ros2 launch saltybot_nav2_slam nav2_amcl_bringup.launch.py (auto-loads) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>