ROS 2 Jazzy L2 相机技能:单包,公开契约与实现分离。
camera/
camera_skill/ # 技能包(直接在仓库根下)
docs/
third_party/
camera_skill/
include/camera_skill/ # 仅公开契约(4 个头)
src/
core/ # 编排:session / stream_graph / pipeline_builder / calibration
devices/ # 一设备一对文件
sinks/ # 出口
node/ # 入口(薄可执行文件)
test/ # 无硬件单测
config/
launch/
实现集中在 camera_skill_core 静态库中,camera_stream_node 只是入口。
v4l2 恒可用。以下后端按探测结果自动开启,缺失时不会注册(配置里绑定它们会作为
启动失败出现在 /diagnostics,不会静默消失):
| 后端 | 需要 |
|---|---|
| gst / nvv4l2 / nvargus | gstreamer-1.0-dev |
| realsense | librealsense2 |
| geac / tztek | libgeaccam(闭源,仅 aarch64) |
编译时会打印实际开启的后端,例如 camera_skill backends: v4l2=ON gst=off realsense=off geac=off。
cd /home/nvidia/Documents/camera
source /opt/ros/jazzy/setup.bash
colcon build --packages-select camera_skill
source install/setup.bash
ros2 launch camera_skill multi_camera.launch.py \
enabled_roles:=gmsl_00,gmsl_02,realsense_d435i不需要硬件,可在开发机上运行:
colcon test --packages-select camera_skill
colcon test-result --verbose| 参数 | 默认 | 说明 |
|---|---|---|
enabled_roles |
空(= 绑定里的全部) | 逗号分隔的角色名 |
reopen_limit |
3 | 启动失败后的重连尝试次数 |
fail_reopen_threshold |
30 | 连续抓帧失败多少次触发重连 |
reopen_backoff_ms |
1000 | 重连基础间隔,失败则指数增长,封顶 30s |
max_total_reopens |
0 | 重连总次数上限;0 = 不限(默认,避免误判相机已死) |