消费级相机动态接取
连续接取 一镜到底 2 倍速
单次接取
通用硬件 动态接取
只用一台消费级深度相机 商用机械臂和灵巧手就能接住人抛来的沙包
接球考验的是机器人的小脑 过去长期依赖昂贵硬件 动作捕捉 高速相机 专为速度设计的机器人 我们把难点交给算法 沙包还在空中 系统就以每秒 60 次预测它在何时 何处到达 手臂以 200 Hz 边动边改 手指独立调度 在到达前 0.10 秒合拢 感知 预测 调度和软硬件联调全部自研
11 次真机抛掷 接住 7 次 离线评估中 到达前 0.15-0.30 秒 截球点误差中位数 2.1 cm 到达时间误差中位数 1 ms 同一套算法迁移到另一套机械臂和灵巧手上 第一次抛掷就接住了 从第一次记录的试验到第一次接住 只用了约 1.5 小时
不依赖动作捕捉 这套能力就能部署到普通场地 用于分拣 包装和人机交接
低成本 可追溯
高速接球通常靠硬件解决 这里交给预测 调度和时序算法
| 高性能系统 AthenaZero CushionCatch | 本系统 | |
|---|---|---|
| 物体跟踪 | 动作捕捉 OptiTrack 240 Hz NOKOV 球上贴标记点 | 一台 60 帧/秒的消费级深度相机 不贴标记点 |
| 机器人 | 定制低惯量双臂机器人 或移动底盘上的 Franka 机械臂加网袋 | 商用协作机械臂和多指灵巧手 使用其标准接口 |
| 场地 | 安装了多相机捕捉系统的房间 | 一台壁挂相机 每只机械臂标定一次 |
| 公开结果 | 13.4 m/s 以内可稳定接取 92.59% 81 次中 75 次 | 低位下手抛 11 次接住 7 次 |
门槛低
每台设备都是标准产品 物体上不贴任何标记 没有捕捉系统 整套方案就能复制到别的场地
可追溯
每次抛掷都按帧 按尝试 按指令记录 一次漏接可以追到识别 预测 手臂或闭手中的具体一环 并在那里修正
迭代快
第一次接住出现在第五轮试验 距第一轮约 1.5 小时 每一轮只改一处 开发全程借助自研 Agent 框架
五轮试验 接住第一个沙包
- 待命位移近基座 原待命位使接球区大片区域没有逆运动学解 对一次偏离 18 cm 的抛掷 沙包到达时手臂只完成了约 70% 的位移 关节 4 达到限速
- 提高加速度上限 关节 5 达到 150°/s 控制器未报错
- 三维截球点 手掌可上下移动至多 0.10 m 迎球 闭手提前量为 0.25 s 时 手提前约 150 ms 合上 沙包被弹开
- 闭手提前量 0.10 s 沙包接近掌心时 在到达前 0.37 s 失去跟踪 预测是对的 沙包也落入了掌心 但 没有预测就不闭合 的规则让手保持张开
- 失去跟踪后按最后一次预测闭合 第一次接住
半秒内的手眼协同
接球考验的是机器人的小脑 在约半秒内看见 预测 出手 合拢 没有时间留给慢速推理 感知 手臂和手指各有自己的时钟 只通过最新的预测协同
D455 相机
424 × 240 RGB480 × 270 depth60 fps找到沙包
红色区域与稳健深度连续 3 帧确认预测飞行
8 帧抛物线拟合实测等效加速度选择截球点
距待命位 ≤ 0.30 m剩余时间 ≥ 0.15 s
xArm7 移动手臂
Wuji 合拢手指
- 首次预测至到达
- 410 ms
- 提前闭手
- 100 ms
- 出手至首次预测
- 70–100 ms
- 闭手迟到上限
- 20 ms
- 相机一帧
- 16.7 ms
- 机械臂控制周期
- 5 ms
- 重定向求解
- 2.2–2.8 ms
- 到达时刻误差中位数
- 1 ms
边飞边算 边动边改 按时合拢
第一次接住 取自运行日志 手臂在到达前 0.41 s 的第一次预测时出动 首个截球点偏离最终预测 12.8 cm 随后跟随 11 次修正 到达前 0.30 s 起 每个新点都在最终点 1.5 cm 以内
基座坐标系中的沙包高度 m
- −0.41 s
- 首次预测与手臂出动
- −0.10 s
- 手指合拢
- 0 s
- 到达并握住沙包
截球点相对最终预测的偏移 cm
边飞边算
用最近 8 帧拟合抛物线 加速度用实测等效值代替理想重力 出手后 0.07-0.10 s 给出第一次预测 此后每帧更新
边动边改
剩余时间不少于 0.15 s 即出动 每个新预测在 2.2-2.8 ms 内解出关节目标 由 Ruckig 从当前速度和加速度续接 不急停 不跳变
手眼协同
手指在预测到达前 0.10 s 合拢 让沙包先落进掌心 错过时刻超过 20 ms 就不再合拢 以免把沙包挡出去 沙包被手挡住时 按最后一次预测闭合
一套算法 两种本体
左右两套机械臂和灵巧手 手的型号 连接方式 安装和待命位都不一样 预测 调度和时序算法完全相同 换本体只换配置 右臂接入后 第一次抛向它的沙包就被接住了
| 左臂 | 右臂 | |
|---|---|---|
| 灵巧手 | Wuji1 20 关节 | Wuji Hand 2 20 关节 |
| 手的连接 | USB | 网络 |
| 腕部 | 无相机 | D405 相机 |
| 待命位 | 操作员摆位 | MuJoCo 姿态搜索选出 到达真实落点最快的姿态 |
| 掌心参考点 | 刚性安装的 30 mm 立方体中心 | 手握沙包的中心 |
| 首批结果 | 11 次接住 7 次 | 第一次抛掷即接住 |
接入新本体需要的是标定和配置 而不是新算法 相机外参 待命位 掌心参考点 手形 负载和抛掷的等效加速度 都写在同一个配置文件里 两只手臂也可以同时待命 一台相机跟踪抛掷 每次抛掷交给落点所在一侧的手臂 两臂之间的距离由 MuJoCo 间隙表保证 视频见 结果
五个工程难题
下面五个问题都在现场测试中出现过 每个都由独立模块解决
| 难题 | 解决方式 | 依据 |
|---|---|---|
| 消费级相机深度噪声大 | 深度从目标区域内多个像素取值 保留离散度最小的近端子集 连续 3 帧运动一致才确认目标 单帧误检不会让手臂出动 | 在录制数据上 挥臂 走动 搬运和静置的沙包均未产生候选 0 次 |
| 留给机械臂的时间极短 | 截球点只在距待命位 ≤ 0.30 m 剩余时间 ≥ 0.15 s 的可达点中搜索 取下降段上离接球点最近的点 最低比接球高度低 0.10 m 手掌可上下迎球 | 当前限速下 距待命位约 10 cm 内的落点可及时到达 |
| 机械臂构型突变 | 阻尼最小二乘逆运动学 以当前关节为初值 在上一目标附近连续求解 控制器自带的求解器可能跳到另一组构型 关节变化 100-190° | 重定向求解 2.2-2.8 ms 200 Hz 循环抖动 0.02 ms |
| 手指合得过早或过晚 | 手指按预测到达时刻独立调度 设 20 ms 迟到上限 | 提前量 0.25 s 时手提前约 150 ms 合上 把沙包弹开 现用 0.10 s |
| 运行安全 | 每条指令发送前用正运动学检查关节范围 掌心姿态和 0.30 m 掌心工作区 越界立即停止 | 关节限速只在记录的实测后提高 更高的设定曾导致关节 4 跟随误差报警 |
11 次接住 7 次 全程无人干预
每次抛掷独立完成整个流程 识别 → 预测 → 移臂 → 闭手 → 保持约 10 s → 松手 → 自动回位
| 指标 | 数值 | 来源 |
|---|---|---|
| 接住次数 | 7 of 11 ≈ 64% | 11 次真机试验 左臂 |
| 及时给出截球点 | 18 / 18 | 18 次录制抛掷上的离线评估 到达前至少 0.2 s 给出截球点 |
| 到达前 0.15-0.30 s 水平误差 | 中位数 2.1 cm | 到达前 0.15-0.30 s 内的 81 次预测 以每次飞行实测的最近点为参考 |
| 到达时间误差 | 中位数 +1 ms | 同一离线评估 |
| 右臂 | 首次接住 | 换到 xArm7 + Wuji Hand 2 后 第一次抛掷即接住并保持 |
测试设置 直径约 6 cm 的红色沙包 低位下手抛 机械臂固定底座 接取范围为待命位周围 0.30 m
更多视频
未来 3-6 个月
0-3 个月 接得更稳
- 减少漏接 接后掉落和动作不及时 成功率提升至 80% 及以上 测试规模扩大到 500 次以上
- 补齐接住自动判定 实现成功率自动统计
- 测量并补偿相机曝光延迟 进一步提高预测精度
3-6 个月 泛化与场景验证
- 泛化测试 不同投掷者 适度光照变化 更大接球范围
- 选 1-2 个场景搭建原型 把视觉定位 运动预测和抓取时机控制迁移到实际任务中
从接球到产线
接球练出来的视觉定位 运动预测和抓取时机 可以用到任何物体在运动中的任务上
| 场景 | 价值 | 可复用能力 | 需新增能力 |
|---|---|---|---|
| 包装工位软物接料 | 减少落料散乱 翻滚 | 到达时间预测 闭手时机 | 放置动作 |
| 传送带小件整理 | 动态分拣 无需停线 | 运动跟踪与位置预测 | 传送带运动估计 抓取姿态 |
| 展会赠品递送 | 从 会接球 到完成服务任务 | 视觉定位 稳定抓持 | 桌面识别 递送流程 |
| 装配工位人机交接 | 人机协作 提升工位效率 | 实时跟踪 抓握控制 | 交接意图识别 拿稳确认 |
引用
@misc{zhang2026catching,
title = {Catching in Flight with a Consumer Camera},
author = {Zhang, Zaide},
year = {2026}
}