AnyCam2Ros:将任意摄像头一键接入 ROS2 图像话题

AnyCam2Ros:将任意摄像头一键接入 ROS2 图像话题
Wang YinXi📷 一个开源工具,解决 VLA 真机部署和数据采集中最头疼的相机配置问题
背景:相机配置的痛点
如果你正在做具身智能(Embodied AI)相关的研究,尤其是部署 VLA(Vision-Language-Action)模型,比如:
- π₀ (pi-zero) - Physical Intelligence 的通用机器人策略
- OpenVLA - 开源的视觉-语言-动作模型
- ACT - Action Chunking with Transformers
或者正在采集 SFT 演示数据 用于模仿学习,你一定遇到过这些问题:
场景一:想复现别人的数据集
“论文里用的是 RealSense D435,我手头只有 Insta360 GO 3S 和几个 USB 摄像头,怎么对齐相机配置?”
场景二:多相机配置噩梦
“我有 3 个摄像头,每次重启电脑后 /dev/video0、video1、video2 的顺序就变了,launch 文件又得改…”
场景三:重复劳动
“给每个摄像头写 cam2image 的启动脚本,配置 namespace、frame_id、topic… 太繁琐了”
场景四:团队协作
“队友在另一台机器上,怎么让他的相机配置和我一样?”
AnyCam2Ros:统一的解决方案
AnyCam2Ros 是一个开源工具,提供统一的相机配置流程:
1 | 任意相机设备 统一配置 ROS2 话题 |
核心特性
| 特性 | 说明 |
|---|---|
| 🔍 自动发现 | 扫描所有 /dev/video* 设备,显示分辨率、硬件信息 |
| 🛡️ 稳定路径 | 使用 /dev/v4l/by-id 稳定路径,重启后顺序不变 |
| 🎨 交互式 CLI | 基于 Rich 的精美界面,引导式配置体验 |
| 📦 配置可复用 | JSON 格式配置文件,跨机器、跨团队共享 |
| ⚡ 开箱即用 | 生成的脚本已自动 chmod +x,直接运行 |
支持的设备
在 Linux 中,一切皆文件。只要设备能被识别为 /dev/video*,就能接入 ROS2:
| 设备类型 | 示例 | 支持? |
|---|---|---|
| 运动相机 | Insta360 GO 3S, GoPro | ✅ |
| 深度相机 | RealSense D435 (RGB) | ✅ |
| USB 摄像头 | Logitech C920, 通用 UVC | ✅ |
| 工业相机 | FLIR, Basler (V4L2 驱动) | ✅ |
| 手机 | Android USB Webcam, DroidCam | ✅ |
| 采集卡 | Elgato, HDMI 采集器 | ✅ |
| 虚拟摄像头 | OBS Virtual Cam, v4l2loopback | ✅ |
使用演示
1. 安装
1 | git clone https://github.com/ly-geming/AnyCam2Ros.git |
2. 运行 CLI
1 | python3 scripts/camera_cli.py |
3. 交互式配置
CLI 会引导你完成:
- 扫描 — 自动检测所有已连接的摄像头
- 选择 — 选择要配置的设备(支持多选)
- 配置 — 设置分辨率、帧率、ROS namespace
- 生成 — 创建启动脚本
4. 生成的文件结构
1 | generated_cameras/ |
5. 启动并验证
1 | # 启动所有摄像头 |
配置复用:跨机器共享
配置完成后会生成 configs/cameras.json:
1 | { |
队友拿到这个文件后,只需:
1 | python3 scripts/camera_cli.py --from-config |
即可生成完全相同配置的启动脚本,即使他们的硬件不同(设备路径会在本地重新扫描匹配)。
适用场景
| 场景 | AnyCam2Ros 如何帮助 |
|---|---|
| VLA 模型部署 | 快速配置真机相机,测试 π₀、OpenVLA |
| SFT 数据采集 | 统一多相机配置,采集操作演示数据 |
| 数据集对齐 | 复现别人数据集的相机设置 |
| DIY 机械臂 | 在自制机器人上快速接入任意摄像头 |
| 团队协作 | 共享配置文件,确保多人配置一致 |
开源地址
GitHub: https://github.com/ly-geming/AnyCam2Ros
欢迎 Star ⭐、Fork、提 Issue 和 PR!
总结
AnyCam2Ros 从实际科研痛点出发,解决了相机配置中最繁琐的环节:
| Before | After |
|---|---|
| 每个相机单独写 launch 文件 | 交互式 CLI 一键生成 |
| 重启后设备顺序乱掉 | 稳定路径,永不乱序 |
| 团队配置不一致 | JSON 配置文件共享 |
| 换硬件要重新配置 | 扫描 + 匹配,自动适配 |
如果你正在做具身智能相关的研究,希望这个工具能帮你省下宝贵的时间,专注于更重要的事情。
作者注:这个项目还在持续迭代中,欢迎在 GitHub Issues 中提出建议和反馈!











