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.

A few things that were worth working out:
- camera_info QoS.
depth_image_proc’sPointCloudXyzNodesubscribes to the depthcamera_infoasTRANSIENT_LOCAL, but the RealSense driver publishes itVOLATILE. 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_serverrun 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:
