Dockerised ZED2i camera streaming and SLAM for NVIDIA Jetson Orin (JetPack 6, L4T r36.4.0).
Provides three launch modes for the ZED2i via Docker on --network=host ROS2 DDS:
| Mode | Description | Use Case |
|---|---|---|
localise |
Same as perception, just simpler | Good place to start when building for the first time |
perception |
RGB-only, no depth | Lightweight — when using external odometry (e.g. LiDAR SLAM) |
perception_plus |
RGBD with depth + point cloud | Full stereo perception without SLAM |
slam |
RGBD + RTAB-Map | Full visual SLAM (Stage 2) |
cd tron_ibis_stack/src/shared/libraries/ros/crest_zed_mapping
./scripts/build.shLaunch
# RGBD mode (default)
LAUNCH_MODE=perception_plus ./scripts/launch.sh
# RGB-only mode
LAUNCH_MODE=perception ./scripts/launch.sh
# SLAM mode (Stage 2)
LAUNCH_MODE=slam ./scripts/launch.sh.sh file used to run the docker (contains necessary details):
#!/bin/bash
docker run -it --rm \
--runtime=nvidia \
--net=host \
--ipc=host \
--pid=host \
--privileged \
--group-add video \
--security-opt seccomp=unconfined \
--device=/dev/video0 \
--device=/dev/video1 \
-e ROS_DOMAIN_ID=30 \
-e ROS_LOCALHOST_ONLY=0 \
-e RMW_IMPLEMENTATION=rmw_cyclonedds_cpp \
-e CYCLONEDDS_URI=file:///root/.ros/cyclonedds.xml \
-v ~/.ros:/root/.ros \
-v /dev/bus/usb:/dev/bus/usb \
crest_zed_mapping:latestFrom desktop on the same network:
# List topics
ros2 topic list
#Following topics must publish for SLAM to run:
# Check image rate
ros2 topic hz /zed/zed_node/rgb/color/rect/image
# Check depth (perception_plus only)
ros2 topic hz /zed/zed_node/depth/depth_registered
# Check camera info
ros2 topic hz /zed/zed_node/zed_camera_infoZED SDK resources, settings, and maps are persisted at ~/.crest_zed_mapping/:
~/.crest_zed_mapping/
├── resources/ → /usr/local/zed/resources/
├── settings/ → /usr/local/zed/settings/
└── maps/ → /maps (for RTAB-Map database in Stage 2)
- Use rviz2 on host to see maps being generated.
- Make sure to use the /map topic on the correct zed and point cloud topics.