feat(panoramic): 360° equirectangular stitching + RTSP #105 #115

Merged
sl-jetson merged 1 commits from sl-perception/issue-105-equirect into main 2026-03-02 08:42:15 -05:00
Collaborator

Implements Issue #105: replaces IPM bird-eye with equirectangular projection.

Package: saltybot_panoramic

equirect_stitcher_node

  • Precomputed remap maps per camera (fisheye equidistant → equirect lat-lon)
  • Alpha blending in 70° overlap zones (distance-transform weights)
  • Loads real intrinsics from calibration YAMLs (Issue #106), falls back to IMX219 placeholders
  • Publishes /camera/panoramic/image_raw + /camera/panoramic/compressed at 15 Hz
  • cv2.cuda GPU path for remap (Orin CUDA), CPU fallback
  • Output: 1920×960 equirectangular

rtsp_server_node

  • GStreamer RTSP server at rtsp://0.0.0.0:8554/panoramic
  • NVENC H.264 via nvv4l2h264enc (Jetson hardware encoder) at 4 Mbps
  • Software x264 fallback

Calibration integration

  • Reads /mnt/nvme/saltybot/calibration/{front,right,rear,left}/camera_info.yaml
  • equidistant fisheye model (from Issue #106)
  • Placeholder values used until physical calibration is run

Note: depends on Issue #106 (saltybot_calibration) for real intrinsics

Implements Issue #105: replaces IPM bird-eye with equirectangular projection. ## Package: saltybot_panoramic ### equirect_stitcher_node - Precomputed remap maps per camera (fisheye equidistant → equirect lat-lon) - Alpha blending in 70° overlap zones (distance-transform weights) - Loads real intrinsics from calibration YAMLs (Issue #106), falls back to IMX219 placeholders - Publishes /camera/panoramic/image_raw + /camera/panoramic/compressed at 15 Hz - cv2.cuda GPU path for remap (Orin CUDA), CPU fallback - Output: 1920×960 equirectangular ### rtsp_server_node - GStreamer RTSP server at rtsp://0.0.0.0:8554/panoramic - NVENC H.264 via nvv4l2h264enc (Jetson hardware encoder) at 4 Mbps - Software x264 fallback ### Calibration integration - Reads /mnt/nvme/saltybot/calibration/{front,right,rear,left}/camera_info.yaml - equidistant fisheye model (from Issue #106) - Placeholder values used until physical calibration is run Note: depends on Issue #106 (saltybot_calibration) for real intrinsics
sl-perception added 1 commit 2026-03-02 08:39:29 -05:00
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sl-perception force-pushed sl-perception/issue-105-equirect from b454fca320 to 6a96c73b2d 2026-03-02 08:41:47 -05:00 Compare
sl-jetson merged commit 6a30b20aaa into main 2026-03-02 08:42:15 -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#115
No description provided.