Cartographer is a (Simultaneous Localization And Mapping) SLAM system from Google, capable of 2D or 3D SLAM. The Isaac SDK incorporates Cartographer to provide mapping capability.
Cartographer and other third-party SLAM systems may require tuning (independent of the Isaac SDK) to achieve useful results in certain applications.
Cartographer requires computational resources that may exceed those of edge devices. Thus the sample presented takes in recorded log data rather than running on edge devices directly. The sample application performs 2D mapping, assuming Carter robot hardware.
- Flat Lidar Scan as
FlatRangeScanProto
messages. - Lidar Pose in Odometry Frame. On the Carter robot it is provided by
DifferentialBaseOdometry
codelet fromStateProto
messages of type DifferentialBaseDynamics.
Please refer to Record and Replay for recording and replaying the log.
See IsaacSDK/apps/carter/log_cartographer/log_cartographer.app.json
for
configuration of the Cartographer sample application.
"tick_dt": 0.25,
"num_visible_submaps": 100
"lua_configuration_basename": "carter.lua",
num_visible_submaps
is the number of submaps to render during mapping. Reduce this number to save CPU cycles if needed.tick_dt
is the number of seconds between feeding Lidar data into Cartographer. Feeding data more frequently may increase the quality of the resulting map, with a corresponding increase in resource cost.
lua_configuration_basename
points to the LUA script containing Cartographer parameters. For detailed information about the parameters please refer to Cartographer Configuration and Cartographer Tuning Guide. Check and modify the parameters inIsaacSDK/apps/carter/log_cartographer/carter.lua
if necessary.
Start the sample application with the following command:
bazel run apps/carter/log_cartographer
Open the following URL in a web browser:
http://localhost:3000

Fig. 3Cartographer Application Sample Output
- The application allows you to specify a path for log input as described in Replay Widget.
- Results might degrade when the ticking time for the Cartographer codelet is longer
than the pre-set ticking interval
tick_dt
. Decreasingnum_visible_submaps
or disabling visualization of submaps might help in this case.
On exit, the sample application writes the final map as /tmp/submap_merged.png
.
Specify the output path with the following configuration parameter for the Cartographer codelet:
"output_path": "PATH/TO/WRITE"