3D OctoMap SLAM on a TurtleBot3 Burger (RealSense D435i)

A small project building a growing 3D occupancy map (OctoMap) on a TurtleBot3 Burger with an Intel RealSense D435i. The robot streams depth, color, and wheel odometry over WiFi; a laptop turns the depth into a point cloud and octomap_server builds the voxel map, updating live in RViz. Every session records to a bag and replays offline.

octomap_growth

A few things that were worth working out:

  • camera_info QoS. depth_image_proc’s PointCloudXyzNode subscribes to the depth camera_info as TRANSIENT_LOCAL, but the RealSense driver publishes it VOLATILE. The two never connect, so no cloud is produced and no error is raised. A small node that subscribes with a matched QoS and back-projects the depth resolves it.
  • Where the mapping runs. The Pi only captures and streams the camera; the point cloud and octomap_server run on the laptop. With the clocks synchronized, the transform lookups succeed and the map builds during operation.
  • Thermal limit. At 640x480 the Pi throttles at 80 C and depth falls to about 2.5 fps; 424x240 holds 6 fps. Map detail comes from the 2.5 cm voxel resolution, not the camera pixels.
  • Mount. The D435i sits on a 3D-printed friction-clip front mount (STL in the repo).

The write-up, launch files, the cloud node, the mount STL, and the offline video renderer are in the repo:

1 Like