← 返回:仿真 · RL · 深度 总览
XLeRobot · 深度研讨 / C 段展开 · 2026-08-28
深度相机抓取:
材质决策 · 手眼标定 · 抓取管线
RGB-DD405Contact-GraspNetArUco/AprilTaghand-eye
这是总览页 C 段「深度相机」那张卡片的展开:把「什么材质走哪条」「抓取检测选哪个」「一次性标定怎么做」「怎么接进 IL」讲清楚,配两张图。核心不变:深度出一个位置无关的 6-DoF 抓取位姿送臂,IL 只管最后柔顺闭合。
塑料杯=深度直接可用;磨砂也友好;只有透明反光才需贴标记兜底;高脚杯抓杯身不抓脚。
① 材质 → 方案(决策树)
图 1 · 材质→方案决策树。绿色=推荐主路(不透明/漫反射→深度直接出抓取位姿),塑料杯与磨砂高脚杯都走这里(高脚杯抓杯身);虚线=透明反光才用的标记兜底。失效因素是「透明+反光」,不是颜色。
ClearGrasp · ArUco · AprilTag · 深度失效于透明/镜面(非颜色):Intel RealSense 透明表面说明 ↗
② 抓取检测选哪个(能不能在 Orin Nano 上跑)
Contact-GraspNet · GraspNet-1B · Dex-Net · VGN/GIGA/SceneGrasp
| 方法 |
是什么 / 硬件 |
适合我们吗 |
| Contact-GraspNet |
从原始点云直接出 6-DoF 抓取分布,杂乱场景 >90%。要约 8GB 显存、约 4FPS;有 PyTorch 移植 + Jetson 的 TensorRT 转换。 |
能力最强,通用。Orin Nano 上要 TensorRT 调优才跑得动 —— 起步偏重。 |
| VGN / GIGA |
体素化抓取网络,约 22FPS;比 Contact-GraspNet 轻。 |
更适合边缘算力,想要「学习式但轻」时的中间选项。 |
| 质心 + PCA 启发式 |
非学习:对已知的杯子,点云求质心 + 主轴,直接推顶部/侧向抓取位姿。几乎零算力。 |
★ 最省、最快落地。你只抓「杯子」这一类规则形状,先用这个验证整条链路,再谈换学习式网络。 |
建议:先用「质心+PCA」把链路打通(相机→点云→位姿→送臂→IL 闭合),证明标定和接口对了,再按需换 Contact-GraspNet/GIGA。别一上来就上重网络。
③ 一次性手眼标定:外参 T 是那座桥
图 2 · 标定只做一次,产出外参 T;运行时把相机系里检测到的抓取位姿乘 T 换到臂系,再预置爪子、由 IL 做柔顺闭合。T 就是连接「视觉」和「运动」的那座桥。
OpenCV calibrateHandEye · easy_handeye · MoveIt Calibration
- 做法: 用
OpenCV calibrateHandEye()(Tsai-Lenz 等)求解;easy_handeye(ROS)自动采位姿、包了 OpenCV+MoveIt;MoveIt Calibration 用 ChArUco 靶、建议 ≥5 个位姿。眼在手(相机装腕上)是你这台的情形。
- 为什么它是成败关键: T 不准 → 抓取位姿系统性偏移 → 每次都差同样的几毫米。标定做扎实,后面几何抓取才有意义。可以顺便用 ArUco 靶同时验证标定与标记检测两条链。
术语别搞混 ——「transform」在本项目里指过四个完全不同的东西: ①外参 T(本页 Fig 2 这个:相机系→臂系的坐标变换);②Transporter Networks(②层的一种对象中心抓取方法);③Transformer(③层 SmolVLA/ACT 的神经网络架构);④图像 transforms(③层训练时的数据增强算子)。名字像,层次和作用全不同。
④ 硬件:为什么是 D405
RealSense D405
- D405 是近距立体深度,理想 7–50cm、近处亚毫米级、20cm 处约 1.4% 误差 —— 正好是桌面/腕装抓取的距离。D435/D435i 是 0.2–10m、最近约 28cm,给场景/导航用,抓取的近场反而丢了。腕部贴近抓取用 D405 最合适 —— 但你现在头上已经有 Orbbec 深度(见下方),先用它零成本验证链路。
★ 现状(查了你自己的代码/文档):你已经有深度硬件,但没在录。
- 没在录深度:录制命令
lerobot.record 只录 3 路 RGB(左右腕 + head 彩色);robot_server.py 里定义了 head_depth 但没进录制参数。
- 硬件有:头相机是 Orbbec Gemini 335,有一路 Z16 16 位深度流在
/dev/video4,约 67% 有效像素,用仓库现成的 v4l2_depth.py 就能读(不用装 pyorbbecsdk)。它现在「不在 observation pipeline 里」,是 SAFETY §5 主动 deferred 的。
- 为什么当时没录(有理由,不是漏了):① 深度不是 RGB 输入,当前策略(SmolVLA/ACT)是 RGB,管线里没有消费者;② 唯一想到的自动用法(拿 Orbbec 点云做安全边界)被主动否掉 —— 硬安全该用标定几何,感知只做环境更新,不能让硬限依赖会因反光/遮挡/坏帧失效的感知;③ 实际障碍:USB2.0 被 3 路 RGB 占满、opencv 读不了 Z16。原则:基本 RGB 抓取跑通前不加结构。
- 怎么开启:① 几何抓取直接跑
03-software/scripts/v4l2_depth.py 读 /dev/video4 喂进来 —— 零成本先验证链路,甚至可能不用买 D405;② 要录进数据集得定制(opencv 相机读不了 Z16;USB2.0 hub 已被 3 路 RGB 占满,加深度流有带宽风险);③ 深度不进 SmolVLA(RGB 策略),录它是给几何抓取模块/分析用。
- 注意:头 Orbbec 在 pan/tilt 头上会动(绝对姿态),贴近抓取更想要稳定/腕部视角 —— 头深度适合工作区扫描,贴近抓取仍是腕部 D405 更稳。先用头 Orbbec 跑通链路,再决定要不要 D405。
来源:robot_server.py:79–154(CAMERAS / cameras_record_arg)· SETUP.md(Orbbec Gemini 335 · /dev/video4 Z16 · 67% 有效)· SAFETY.md §5(深度 deferred)· 03-software/scripts/v4l2_depth.py。
⑤ 怎么接进 IL(以及排序)
- 接法: 深度模块出的臂系 6-DoF 位姿把爪子预置到抓取前姿,SmolVLA/ACT 从这个干净起点做最后贴近 + 柔顺闭合 + 倒酒。深度不进策略输入(LeRobot 数据格式支持深度,但 SmolVLA 的 SigLIP 视觉塔是 RGB)—— 所以 不用重训现有策略。
- 排序: 这是四张牌里的第 ② 张(① 修真示范覆盖/精度 → ② 深度几何抓取(本页) → ③ HIL-SERL → ④ Isaac 合成增强)。它确定性强、不靠策略泛化,是把「位置泛化 + 最后 3cm」变便宜的最实在一步。
来源均经检索核对(2026-08)。抓取网 FPS 数字来自二手汇总、为近似;「磨砂友好」是漫反射-镜面物理的推论(强支持,非逐字规格),建议在实物上验证。
⑥ 在我们目标 + 机子上:工作量 + 调试清单
A. 要准备的东西
| 项 | 内容 | 说明 |
| 深度相机 | RealSense D405(近距 7–50cm) | 腕装;桌面抓取的对的档位 |
| 标定板 | ChArUco/ArUco 靶(打印即可) | 做手眼标定用 |
| 抓取检测 | 先用「点云质心+PCA」 | 已知杯子够用;要更强再换 Contact-GraspNet(预训练权重) |
| 训练数据 | 0 条 | 几何法不靠学习,不用采数据(这是它比 IL/HIL-SERL 省事的地方) |
B. 哪些本地、哪些能远程
这条路几乎全在本地 —— 因为它是确定性的、运行时的,没有「训练」环节,所以没有远程 GPU 的活(和 IL、Isaac 不同)。
- 手眼标定:本地(真臂)。
- 点云质心+PCA:本地实时跑,轻,Jetson 没问题。
- Contact-GraspNet(若上):运行时要在机上/机旁跑(Jetson 上要 TensorRT,或接一台本地小 GPU);抓取要实时低延迟,不适合放远程。
C. 怎么跑测
- 先验标定:让爪子去点一个已知点,看误差在几毫米内。标定不准,后面全白搭。
- 验抓取位姿:把算出的 6-DoF 位姿可视化叠在点云上,看合不合理。
- 测抓取:不同杯位跑 20–30 次,报成功率。
D. 调试 TODO(照做)
- 装 D405(腕部),接好、确认能出 RGB-D。
- 打印 ChArUco 靶,用 easy_handeye / MoveIt 采 ≥5 个位姿做手眼标定,得外参 T。
- 验 T:让爪子触已知点,误差几毫米内才算好。
- 取点云,写「质心+PCA」出一个顶/侧向抓取位姿。
- 用 T 把位姿换到臂系,预置爪子,最后闭合交给现有策略(或先手写闭合)。
- 不同杯位测 20–30 次;不行再考虑 Contact-GraspNet。
E. 坑(诚实标注)
- 标定不准 = 系统性偏移(每次差同样几毫米)—— 先把 T 弄准再谈别的。
- 透明/反光杯会让深度出洞 → 贴 ArUco 标记兜底(见图 1);你现在的塑料杯不受影响。
- 高脚杯抓杯身不抓脚;细脚点太少、也难抓。
- Contact-GraspNet 在 Jetson 要 TensorRT 调优 —— 别一上来就上,先用质心+PCA 把链路打通。
← 返回总览:仿真 · RL · 深度 —— 整体学习策略架构