feat(camera): add configurable Jetson camera module for LMS visualization

This commit is contained in:
2026-09-23 13:52:13 +09:00
commit 7167f559e8
14 changed files with 383 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
# NAV2-Camera (Jetson)
Jetson ARM64 USB/V4L2 camera module for the LMS visualization camera panel.
The template folder remains `[lms-nav2-camera-test]nav2-camera-test_v1.0.0_ws`.
## Runtime
- Image: `future-nav2-camera-test:humble-jetson_orin`
- Package: `camera_test_pkg`
- Launch: `camera.launch.py`
- Viewer topic: `/camera_test/image_jpeg` (`sensor_msgs/msg/CompressedImage`, sensor-data QoS)
- Only the selected `/dev/videoN` device is passed into the container.
- No vehicle commands, fabricated calibration, or fixed camera mounting TF are published.
## Parameters
| Parameter | Default | Meaning |
| --- | --- | --- |
| `video_device` | `/dev/video0` | V4L2 camera device |
| `width` / `height` | `640` / `480` | Capture resolution supported by the camera |
| `fps` | `30` | Capture frame rate |
| `publish_fps` | `10` | Maximum publication rate |
| `pixel_format` | `auto` | `auto`, `MJPEG`, `UYVY`, or `YUY2` |
| `jpeg_width` | `640` | Maximum preview width |
| `jpeg_topic` | `/camera_test/image_jpeg` | Keep the default for the LMS viewer |
| `frame_id` | `camera_test_link` | Image frame identifier |
| `publish_raw` | `false` | Also publish `/camera_test/image_raw` |
`auto` negotiates raw/JPEG encoding, not resolution or frame rate. Use a mode
reported by `v4l2-ctl --device /dev/video0 --list-formats-ext` when defaults are unsupported.
This module provides a video preview, not calibrated visual SLAM input.
## LMS Installation
The environment profile supplies the runtime image artifact; the module supplies
the ARM64 build/install artifact. Installing these avoids an initial source build.
The LMS app needs camera-test module routing support before running this template.
ROS domain and DDS settings are supplied by the LMS workspace runtime.
## Manual Development
Provision the image from its published artifact first. For image maintainers only:
```sh
docker build -t future-nav2-camera-test:humble-jetson_orin docker
```
```sh
./build.sh
ROS_DOMAIN_ID=77 ./run.sh video_device:=/dev/video0 pixel_format:=auto
```
The standalone script defaults to domain 77, host networking, and
`ROS_LOCALHOST_ONLY=0`. LMS execution uses workspace configuration instead.
Tests in `tests/test_camera.py` use synthetic video and never access a camera.