Files
ros_contorl/devices/cameras/README.md
T
arm_dev 6edb8d39ab chore: 框架科学优化前的完整基线
在开始'设备契约层 + 目录重构 + 通止规装配'改造之前,先钉住当前可运行状态,
使后续任何删除/重构都可回退。

本基线包含:
- 现有 ROS 2 工作区全部源码(arm_application / arm_control / arm_bringup 等)
- 官方 flexiv_ros2 栈(含 flexiv_hardware / flexiv_controllers 等符号链接)
- 设备契约层 src/arm_interfaces(新增,46 项单测通过)
- devices/ 设备选型与品牌清单(新增)
- scripts/gen_site_example.py 与由它生成的 config/site.example.yaml

按 .gitignore 排除:build/ / install/ / log/ / config/site.yaml / 模型权重二进制。
2026-09-23 10:53:06 +08:00

2.6 KiB
Raw Blame History

devices/cameras/ —— 相机

厂商物料放置要求

项 要求
格式 厂商 SDK / 驱动包原始格式。RealSense 用 pyrealsense2 或官方 ROS 2 包
命名 保持原样,不要改名
序列号 不要写在这里。序列号在 config/site.yaml 的 cameras.<名字>.serial
生效 放好物料 → 改 registry.yaml 选型 → 改 site.yaml 的 serial / 分辨率 / 曝光 → 重启对应相机脚本

目录结构

cameras/
├── README.md
├── realsense/                   # Intel RealSense(当前在用)
│   ├── manifest.yaml
│   └── driver/
└── <新品牌>/

相机角色与命名(重要)

框架里每台相机必须有一个角色,因为不同角色参与完全不同的流程:

角色 当前相机 参与流程 是否参与手眼标定
wrist_eye_in_hand D405(左腕 / 右腕各一台) 视觉跟踪 k0、拍照推理 k1/k2 是(眼在手上)
overhead_eye_to_hand D435(双臂中间) 粗定位兜底(S03) 是(眼在手外)

注意:D435 当前还没有做手眼标定,所以 S03 粗定位链路暂时不可用。 但这不影响 S04 跟踪链路,两条链路用的是同一套权重、同一个跟踪目标 k0。

已知的坑(迁移时必须保留的处理)

  1. USB 独占:RealSense 同时只能被一个进程打开。启动前必须 pkill 掉旧进程, 现有脚本里那句 sleep 2 是必要的,不要删。
  2. USB2 vs USB3 会自动降分辨率:现有脚本检测到 USB2 会降到 640x480@15 并告警, 这个降级逻辑要保留,否则会在弱链路上直接起不来。
  3. run_camera_d435.sh 曾把分辨率/曝光/emitter 硬编码,与 site.yaml 的 cameras.d435 字段脱节。迁移后必须全部从 site.yaml 读,不允许硬编码。

当前状态(迁移参考)

现有位置 内容 迁移去向
src/arm_application/arm_application/realsense_color_pub.py 采集 + 发布彩图/对齐深度/红外 driver/
src/arm_application/arm_application/realsense_view.py 独立预览进程(与采集分离) driver/ 或 tools/
src/arm_application/arm_application/realsense_sdk_view.py Qt 四宫格窗口(被上面两者共用) 保留
src/arm_application/arm_application/handeye_realsense.py 内参查询、话题解析、曝光设置 拆开:相机相关的进 driver/,标定相关的进 handeye/