feat: Orin Nano Super platform update + 4x IMX219 CSI cameras #51

Merged
seb merged 1 commits from sl-jetson/orin-platform-cameras into main 2026-02-28 23:08:49 -05:00
Collaborator

Summary

Task A — Jetson Orin Nano Super platform update:

  • docker-compose.yml: all service image tags → jetson-orin; devices updated to udev symlinks (/dev/rplidar, /dev/stm32-bridge, i2c-7); NVMe volume mounts added; stm32-bridge updated to use saltybot_bridge launch; new csi-cameras service added
  • docs/pinout.md: full rewrite for Orin Nano Super — i2c-7, ttyTHS0, CSI-A/B FFC connectors, M.2 NVMe, IMX219 15-pin pinout, V4L2 device nodes, GStreamer test commands
  • docs/power-budget.md: full rewrite — 25W TDP, 8GB LPDDR5, 67 TOPS, 4-camera CSI bandwidth analysis, Nano vs Orin comparison table, 5V 6A PSU + 4S LiPo arch
  • scripts/setup-jetson.sh: full rewrite — JetPack 6 / Ubuntu 22.04, nvidia-container-toolkit with new keyring, NVMe partition/format/fstab, IMX219 driver check, video group, jtop install

Task B — saltybot_cameras ROS2 package (new):

  • launch/csi_cameras.launch.py: 4× v4l2_camera nodes, one namespace per camera (front/left/rear/right), 640×480@30fps, includes TF launch
  • launch/camera_tf.launch.py: static TF for 4 cameras at 90° intervals on sensor_head_link (r=5cm), yaw 0°/90°/180°/−90°
  • package.xml, setup.py, setup.cfg, __init__.py, resource/ marker
  • config/cameras_params.yaml: per-camera device/frame/offset config

ROS2 Topics Published

Topic Rate
/camera/front/image_raw 30Hz
/camera/left/image_raw 30Hz
/camera/rear/image_raw 30Hz
/camera/right/image_raw 30Hz

Test plan

  • docker compose build succeeds on Orin Nano Super (JetPack 6)
  • v4l2-ctl --list-devices shows /dev/video0,2,4,6 on hardware
  • ros2 launch saltybot_cameras csi_cameras.launch.py streams all 4 cameras
  • ros2 topic echo /camera/front/image_raw shows data
  • TF tree: sensor_head_link → camera_{front,left,rear,right}_link
  • setup-jetson.sh runs cleanly on fresh JetPack 6 install

🤖 Generated with Claude Code

## Summary **Task A — Jetson Orin Nano Super platform update:** - `docker-compose.yml`: all service image tags → `jetson-orin`; devices updated to udev symlinks (`/dev/rplidar`, `/dev/stm32-bridge`, `i2c-7`); NVMe volume mounts added; `stm32-bridge` updated to use `saltybot_bridge` launch; new `csi-cameras` service added - `docs/pinout.md`: full rewrite for Orin Nano Super — i2c-7, ttyTHS0, CSI-A/B FFC connectors, M.2 NVMe, IMX219 15-pin pinout, V4L2 device nodes, GStreamer test commands - `docs/power-budget.md`: full rewrite — 25W TDP, 8GB LPDDR5, 67 TOPS, 4-camera CSI bandwidth analysis, Nano vs Orin comparison table, 5V 6A PSU + 4S LiPo arch - `scripts/setup-jetson.sh`: full rewrite — JetPack 6 / Ubuntu 22.04, `nvidia-container-toolkit` with new keyring, NVMe partition/format/fstab, IMX219 driver check, `video` group, `jtop` install **Task B — `saltybot_cameras` ROS2 package (new):** - `launch/csi_cameras.launch.py`: 4× v4l2_camera nodes, one namespace per camera (`front`/`left`/`rear`/`right`), 640×480@30fps, includes TF launch - `launch/camera_tf.launch.py`: static TF for 4 cameras at 90° intervals on `sensor_head_link` (r=5cm), yaw 0°/90°/180°/−90° - `package.xml`, `setup.py`, `setup.cfg`, `__init__.py`, `resource/` marker - `config/cameras_params.yaml`: per-camera device/frame/offset config ## ROS2 Topics Published | Topic | Rate | |-------|------| | `/camera/front/image_raw` | 30Hz | | `/camera/left/image_raw` | 30Hz | | `/camera/rear/image_raw` | 30Hz | | `/camera/right/image_raw` | 30Hz | ## Test plan - [ ] `docker compose build` succeeds on Orin Nano Super (JetPack 6) - [ ] `v4l2-ctl --list-devices` shows `/dev/video0,2,4,6` on hardware - [ ] `ros2 launch saltybot_cameras csi_cameras.launch.py` streams all 4 cameras - [ ] `ros2 topic echo /camera/front/image_raw` shows data - [ ] TF tree: `sensor_head_link → camera_{front,left,rear,right}_link` - [ ] `setup-jetson.sh` runs cleanly on fresh JetPack 6 install 🤖 Generated with [Claude Code](https://claude.com/claude-code)
sl-jetson added 1 commit 2026-02-28 22:59:43 -05:00
Task A — Orin Nano Super platform update:
- docker-compose.yml: update header/comments, switch all service image tags
  to jetson-orin, update devices to udev symlinks (/dev/rplidar,
  /dev/stm32-bridge, i2c-7), add NVMe volume mounts (/mnt/nvme/saltybot),
  update stm32-bridge to saltybot_bridge launch, add csi-cameras service
- docs/pinout.md: full rewrite for Orin Nano Super — i2c-7, ttyTHS0,
  CSI-A/B connectors, M.2 NVMe slot, IMX219 15-pin FFC pinout, V4L2 nodes,
  GStreamer test commands, updated udev rules
- docs/power-budget.md: full rewrite — 25W TDP, 8GB LPDDR5, 67 TOPS,
  4-camera CSI bandwidth analysis, nvpmodel modes, Nano vs Orin comparison,
  5V 6A PSU recommendation, 4S LiPo architecture
- scripts/setup-jetson.sh: full rewrite — JetPack 6 / Ubuntu 22.04,
  nvidia-container-toolkit new keyring method, NVMe partition/format/fstab,
  CSI driver check (imx219 modprobe), video group, jtop install, 8GB swap

Task B — saltybot_cameras ROS2 package:
- launch/csi_cameras.launch.py: 4x v4l2_camera nodes, namespace per camera
  (front/left/rear/right), 640x480x30fps, includes TF launch automatically
- launch/camera_tf.launch.py: static TF for 4 cameras at 90deg intervals
  on sensor_head_link (r=5cm offset), yaw 0/90/180/-90 deg
- package.xml, setup.py, setup.cfg, __init__.py, resource marker
- config/cameras_params.yaml: per-camera device/frame/offset configuration

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
seb merged commit 5008e03cc4 into main 2026-02-28 23:08:49 -05:00
seb deleted branch sl-jetson/orin-platform-cameras 2026-02-28 23:08:49 -05:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: seb/saltylab-firmware#51
No description provided.