Quickstart

cartographer_rviz is a ROS 2 package built with ament_cmake. It is intended to be built as part of a Cartographer ROS 2 workspace.

Dependencies

The package depends on the following ROS 2 and third-party packages (declared in package.xml):

  • cartographer and cartographer_ros — core SLAM library and its ROS 2 bindings, which provide the submap texture data structures and the FetchSubmapTextures() helper.

  • cartographer_ros_msgs — the SubmapList, SubmapEntry, and SubmapQuery messages and service.

  • rviz_common, rviz_rendering, rviz_ogre_vendor — RViz display framework and the OGRE renderer.

  • rclcpp, pluginlib, eigen, libabsl-dev, tf2_ros.

Build dependencies are declared through ament_cmake plus the Cartographer CMake helpers (from $CARTOGRAPHER_CMAKE_DIR/functions.cmake).

Building

Build the package with colcon (or your usual ament tooling) inside a workspace that contains cartographer, cartographer_ros, and cartographer_ros_msgs:

mkdir -p ~/cartographer_ws/src
# ... checkout cartographer, cartographer_ros, cartographer_ros_msgs, and cartographer_rviz into src/
cd ~/cartographer_ws
rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select cartographer_rviz

The package builds as a shared library and exports its plugin description (rviz_plugin_description.xml) so that RViz can discover the SubmapsDisplay plugin. The OGRE shader and material resources under ogre_media/ are registered as RViz OGRE media exports and installed with the package.

Usage in RViz

  1. Launch RViz in a session where Cartographer (the cartographer_ros node) is running and publishing a SubmapList message and exposing the /submap_query service.

  2. Add the SubmapsDisplay display to the RViz view. It appears as cartographer_rviz/SubmapsDisplay.

  3. The display subscribes to the SubmapList topic and progressively fetches submap textures.

  4. Use the display properties to control the view:

    • Submap query service — the service name used to fetch textures (default /submap_query).

    • Tracking frame — the frame used for z-distance fading (default base_link).

    • High Resolution / Low Resolution — toggle the two texture slices per submap.

    • Submaps / All — enable or disable all trajectories and submaps at once.

    • All Submap Pose Markers — toggle the pose axes and submap ID labels.

    • Fade-out distance — the z-distance (in meters) at which submaps begin to fade out.