multi-floor-mapping

Orchestrates map switching, AMCL re-localization, and costmap clearing for multi-floor ROS 2 navigation.

Updated Aug 16, 2026
One-click install
npx skills add https://github.com/three1324/yeonjinautomotive --skill multi-floor-mapping-three1324
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: multi-floor-mapping
Source: https://github.com/three1324/yeonjinautomotive/tree/main/.claude/skills/multi-floor-mapping
Command: npx skills add https://github.com/three1324/yeonjinautomotive --skill multi-floor-mapping-three1324

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires rclpy, nav2_msgs, geometry_msgs, std_msgs, pyyaml.

What problem does it solve? Robots navigating multi-floor buildings need separate 2D occupancy grid maps per floor, but ROS 2 Nav2 has no built-in mechanism for switching maps, re-initializing AMCL localization, and clearing stale costmaps during floor transitions. This Skill provides the orchestration patterns and a working Floor Transition Manager to handle that gap. ## Core Features & Use Cases - Map Switching Strategies: Compares a single map server using the /map_server/load_map service against multiple preloaded namespaced map servers with a multiplexer. - Floor Transition Manager: A complete Python ROS 2 node that loads the new floor's map, clears global and local costmaps, and publishes a new initial pose with tuned covariance for AMCL convergence. - Floor Change Detection Guidance: Evaluates triggers such as buttons, barometric pressure, visual landmarks, elevator integration, and WiFi fingerprinting. - Use Case: A patrol robot finishes riding an elevator, publishes a floor change command, and the manager loads floor2's map, resets AMCL at the elevator exit pose, and resumes navigation to per-floor goals like bedrooms or kitchens. ## Quick Start Ask the AI to set up a floor transition manager that switches Nav2 maps and re-initializes AMCL when my robot changes floors.

Frequently Asked Questions about multi-floor-mapping

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I switch maps in ROS 2 Nav2 when a robot changes floors?

Call the /map_server/load_map service with the new floor's YAML file, then clear the global and local costmaps and publish a new /initialpose for AMCL. Wait 0.5-1.0 seconds after loading the map before publishing the initial pose so AMCL can process the new OccupancyGrid.

Should I use one map server or multiple map servers for multi-floor navigation?

A single map server with the load_map service is simpler and uses less memory, but switching is slower. Running one map server per floor on namespaced topics with a multiplexer preloads all maps for faster switching at the cost of higher memory usage and complexity.

How do I re-initialize AMCL after loading a new map?

Publish a PoseWithCovarianceStamped message to /initialpose with the robot's known pose on the new floor, such as the elevator exit. Use moderate covariance values like 0.25 m² for x/y and 0.07 rad² for yaw so particles can converge even with slight pose error.

What methods can detect a floor change on a robot?

Options include button or UI triggers, barometric pressure, visual landmarks, elevator API integration, and WiFi fingerprinting. For patrol robots, a deterministic trigger such as completing an elevator ride action is the most reliable approach.

Why does navigation fail right after a floor transition?

Failures usually come from stale costmap data, an invalid map-to-odom transform, or publishing the initial pose before AMCL has processed the new map. Clear both costmaps and add a short delay or confirmation callback between load_map and the initial pose publication.