Cartographer Documentation¶
Welcome! This site contains unofficial, 3rd-party, LLM-generated documentation for the cartographer_ros repository and its main dependency. This “documentation” covers the core Cartographer SLAM library and its ROS 2 integration.
A few quick notes to get started:
A few artefacts from the generation process may remain. If you see any relative paths pointing to “CARTOGRAPHER/” you may read them as if “CARTOGRAPHER/” were replaced by “https://github.com/ros2/”
If you are in any way affiliated with ROS or the actual people developing or maintaining Cartographer and you want control of this site (or just want me to take it down), I would be more than happy to give it to you! Send an email to google.cartographer [AT] atomicmail.io and we can exchange PGP keys.
Contributions of all kinds (restructuring, edits, corrects, etc.) are very very welcome. You can create a pull request here.
Repositories¶
Overview¶
Cartographer Core Library (cartographer/)¶
The core C++ library providing real-time simultaneous localization and mapping (SLAM) in 2D and 3D. It implements a pose-graph-based SLAM algorithm with local submap construction and global loop closure optimization.
Key components:
Mapping (
cartographer/mapping) — SLAM algorithm core: MapBuilder, TrajectoryBuilder, PoseGraph, SubmapsSensor (
cartographer/sensor) — Sensor data types, collation, filters, and transformsCommon (
cartographer/common) — Time system, Lua configuration, thread pool, math utilities
Cartographer ROS 2 Integration (cartographer_ros/)¶
The ROS 2 package that integrates Cartographer with the Robot Operating System, providing nodes, message bridges, configuration files, launch files, and visualization.
Key packages:
cartographer_ros — Main integration: nodes, bridges, configuration, launch files
cartographer_ros_msgs — ROS message and service definitions
cartographer_rviz — RViz visualization plugin for submaps
Cross-Repository Relationships¶
cartographer (core C++ library)
│
├── mapping/ → MapBuilder, PoseGraph, Submaps, TrajectoryBuilder
├── sensor/ → RangeData, PointCloud, ImuData, Collator, Filters
└── common/ → Time, LuaParameterDictionary, ThreadPool
│
▼
cartographer_ros (ROS 2 integration)
│
├── cartographer_ros/ → Node, MapBuilderBridge, SensorBridge, TfBridge
├── cartographer_ros_msgs/ → SubmapList, TrajectoryQuery, StartTrajectory, etc.
└── cartographer_rviz/ → SubmapsDisplay plugin
The ROS 2 integration wraps the core library:
MapBuilderBridgewrapsMapBuilderInterfaceSensorBridgeconverts ROS messages tocartographer::sensor::*typesTfBridgeconverts ROS TF tocartographer::transform::Rigid3dcartographer_ros_msgsdefines the ROS interfaces for control and visualizationcartographer_rvizvisualizes submaps via theSubmapQueryservice
Configuration¶
Both repositories use Lua configuration files:
Cartographer:
configuration_files/—map_builder.lua,trajectory_builder_2d.lua,trajectory_builder_3d.lua,pose_graph.luacartographer_ros:
configuration_files/— Robot-specific configs (backpack_2d.lua,backpack_3d.lua,mir-100-mapping.lua, etc.)
License¶
Cartographer is licensed under the Apache License 2.0. The ROS 2 integration (cartographer_ros) was ported by Wyca Robotics and is also licensed under Apache 2.0.