SmolVLA 高反光与透明物体抓取复现教程:方案总览与核心改造 · 第 2 阶段
基于双 奥比中光 相机、增强深度、B601-DM 主从臂和 SmolVLA,复现高反光桌面上透明瓶与香蕉模型的自主整理链路。
01 / DOCUMENTATION 内容概述
系列教程第 2/7 阶段:完成 B601-DM、Jetson、Gemini 305/335L 的连接检查,并建立与项目匹配的 LeRobot 开发环境。
02 / DOCUMENTATION 3.1 硬件清单
| 类别 | 本项目配置 |
|---|---|
| 主臂 | reBot Arm B601-DM,6 轴 + DM4310 夹爪 |
| 从臂 | reBot Arm B601-DM,6 轴 + DM4310 夹爪 |
| 边缘计算 | Jetson Orin NX 16GB |
| 腕部相机 | Orbbec Gemini 305,RGB only |
| 全局相机 | Orbbec Gemini 335L,RGB + depth |
| 云端训练 | NVIDIA RTX 4090 24GB |
| 任务物体 | 黄色香蕉模型、透明塑料可乐瓶、两个固定目标位置 |
| 测试环境 | 存在明显灯光高光和局部镜面反射的桌面,不使用专门降低难度的全哑光背景 |
| 安全设备 | 急停、稳定底座、独立可靠电源、机械臂支撑措施 |
03 / DOCUMENTATION 3.2 物理连接建议
推荐优先级如下:
-
两台 Orbbec 相机分别接 Jetson 的独立 USB 3 高速路径。
-
如果必须使用扩展坞,选择外接供电的 USB 3 Hub,不要让两台 RGB-D 相机和大量低速设备挤在同一条不稳定链路上。
-
两台机械臂电源接到可靠、彼此独立的供电插座或电源支路。
-
MotorBridge 串口线、机械臂内部 CAN/数据线保留完整活动余量,不能被底座、关节或桌沿压住。
-
无论软件多么完善,从臂首次测试时都要有物理支撑和随手可按的急停。
使用以下命令检查 USB 拓扑和串口归属:
lsusb -tls -l /dev/serial/by-id/udevadm info -q path -n /dev/ttyACM0udevadm info -q path -n /dev/ttyACM1sudo fuser -v /dev/ttyACM0 /dev/ttyACM1/dev/ttyACM0 和 /dev/ttyACM1 的编号可能在重启或重新插拔后交换。正式运行建议用 /dev/serial/by-id/ 下的稳定链接,至少也要在每次开机后确认主从臂端口。
04 / DOCUMENTATION 3.3 软件版本原则
本项目实际工作流使用 Python 3.10。最重要的不是盲目追求“最新版”,而是保证以下组件彼此匹配:
-
当前修改版 LeRobot 源码。
-
PyTorch、TorchVision 与 Jetson CUDA 环境。
-
OrbbecSDK v2、对应扩展库、
model.sm4、CUDA/TensorRT 运行时。 -
写入相机设备的 LingBot-Depth 许可。
EnhancedDepthFilter 对 SDK、扩展、模型、TensorRT 与许可组合非常敏感。不要把其他版本的 model.sm4 随手替换进来,也不要把公开 Python 版 LingBot-Depth 权重当作 SDK 私有 filter 的直接替代品。
05 / DOCUMENTATION 4.1 认识代码来源
本项目基于:
如果你正在本项目仓库中阅读本文,修改版代码已经包含在当前 checkout 中。不要只拉取 Seeed 官方原仓库后直接运行本文脚本,因为原仓库不包含本文所述的 Orbbec C++ bridge、同型号 B601 leader、深度数据格式修复和安全状态机。
如需从官方基线开始对比:
mkdir -p ~/ws/rebot_lerobotcd ~/ws/rebot_lerobotgit clone https://github.com/Seeed-Projects/lerobot.git06 / DOCUMENTATION 4.2 安装 LeRobot 环境
conda create -y -n lerobot python=3.10conda activate lerobot
cd ~/ws/rebot_lerobot/lerobotpython -m pip install --upgrade pippython -m pip install -e ".[smolvla]"conda install -y ffmpeg -c conda-forge不要用无版本约束的 pip install transformers 临时补包。当前仓库要求 transformers>=4.57.1,<5.0.0 和 huggingface-hub>=0.34.2,<0.36.0;直接安装最新主版本可能顺带升级 Hub 与 tokenizer,导致已经能采集数据的环境出现新的依赖冲突。若 Jetson 只缺 SmolVLA 推理栈,又不希望重装整套 PyTorch/CUDA,可按仓库约束修复:
python -m pip install --upgrade 'transformers>=4.57.1,<5.0.0' 'huggingface-hub[cli,hf-transfer]>=0.34.2,<0.36.0' 'accelerate>=1.10.0,<2.0.0' 'num2words>=0.5.14,<0.6.0' 'safetensors>=0.4.3,<1.0.0'始终确认当前终端加载的是当前 checkout:
python -c 'import lerobot; print(lerobot.__file__)'输出路径必须位于当前仓库。如果它指向旧目录,重新执行 editable install。
07 / DOCUMENTATION 4.3 拉取 Seeed 重力补偿依赖
cd ~/wsgit clone https://github.com/Seeed-Projects/reBot-DevArm-Grasp.git rebot_grasp默认期望路径:
/home/r/ws/rebot_grasp/sdk/reBotArm_control_py如果放在其他目录,需要在配置中指定:
--teleop.gravity_comp_sdk_root=/你的路径/rebot_grasp/sdk/reBotArm_control_py硬件
软件应用和在线服务
实现步骤
核对硬件清单
确认两台 B601-DM、Jetson Orin NX、Gemini 305、Gemini 335L、训练 GPU 和安全设备齐全
完成物理连接
两台相机优先连接独立 USB 3 高速路径,机械臂使用可靠供电并预留线束活动余量
确认 USB 与串口归属
使用 lsusb、/dev/serial/by-id、udevadm 和 fuser 检查拓扑、设备名与占用进程
建立 Python 环境
创建 Python 3.10 环境并以 editable 模式安装当前修改版 LeRobot 和 SmolVLA 依赖
固定依赖版本
按仓库约束安装 Transformers、Hugging Face Hub、Accelerate、Num2words 和 Safetensors
安装重力补偿依赖
拉取 reBot-DevArm-Grasp,并配置 gravity_comp_sdk_root
验证当前 checkout
通过 import lerobot 输出路径,确认终端没有加载旧仓库或旧环境
项目结果

完成硬件、供电、USB 和串口拓扑检查,建立 Python 3.10 的可编辑 LeRobot 环境并确认当前 checkout 生效。此时尚未联调双相机 Bridge 和主从臂运动。