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
- Lidar Pose in Odometry Frame. On the Carter robot it is provided by
StateProtomessages of type DifferentialBaseDynamics.
Please refer to Record and Replay for recording and replaying the log.
configuration of the Cartographer sample application.
"cask_directory": "PATH/TO/LOGFILE", "tick_dt": 0.25, "num_visible_submaps": 100 "lua_configuration_basename": "carter.lua",
- Ensure that the
cask_directorypoints to the log that is of interest.
num_visible_submapsis the number of submaps to render during mapping. Reduce this number to save CPU cycles if needed.
tick_dtis 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_basenamepoints 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 in
Starting the Cartographer Sample Application
Start the sample application with the following command:
bazel run apps/carter/log_cartographer
Monitoring and Visualization
Open the following URL in a web browser:
- Results might degrade when the ticking time for the Cartographer codelet is longer
than the pre-set ticking interval
num_visible_submapsor disabling visualization of submaps might help in this case.
On exit, the sample application writes the final map as
Specify the output path with the following configuration parameter for the Cartographer codelet: