feat(jetson): night vision mode — IR emitter, headlight, ambient-light FSM, IR SLAM bridge (#168) #175
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "sl-perception/issue-168-night-vision"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
day → twilight → night → ir_onlyrealsense2_cameraparameter service; sets IMX219 gain/exposure viav4l2-ctl/saltybot/ambient_light+/saltybot/vision_mode@ 2 Hzinfra1mono8 asrgb8so RTAB-Map loop-closure continues in darknessTopics
/saltybot/vision_modestd_msgs/String/saltybot/ambient_lightstd_msgs/Float32/saltybot/night_vision_statusstd_msgs/String(JSON)/saltybot/ir_bridge/image_rawsensor_msgs/Image/saltybot/ir_bridge/camera_infosensor_msgs/CameraInfoTest plan
pytest test/test_night_vision.py) — no ROS2 or hardware requiredvision_modetransitions at day/twilight/night/ir_only light levelsros2 param get /camera/camera depth_module.emitter_enabledros2 topic hz /saltybot/ir_bridge/image_raw🤖 Generated with Claude Code
Implements ambient-light-aware night vision mode for the D435i + IMX219 stack on the Jetson Orin Nano Super: • light_analyser.py — histogram-based intensity FSM with hysteresis: day → twilight → night → ir_only • camera_controller.py — D435i IR emitter via realsense2_camera param service + IMX219 gain/exposure via v4l2-ctl • gpio_headlight.py — physical pin 33 headlight; Jetson.GPIO PWM primary, sysfs on/off fallback, sim mode • light_monitor_node.py — subscribes IMX219/IR1, publishes /saltybot/ambient_light + /saltybot/vision_mode • night_vision_controller_node.py — reacts to mode changes; drives D435i emitter, IMX219 gain, headlight • ir_slam_bridge_node.py — mono8 IR1 → rgb8 republish so RTAB-Map keeps loop-closing in darkness • launch/night_vision.launch.py + config/night_vision_params.yaml • test/test_night_vision.py — 18 unit tests (18/18 pass, no ROS2 needed) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>