机械臂从"逐点示教"走向"自主找料",核心变化是把固定的点位换成了每次拍摄实时计算的三维位姿。3D 相机就是这个位姿的来源。但在工程落地中,抓取失败的原因往往不在相机本身的指标,而在工作距离、精度口径、触发链路、手眼标定与物料材质这五处。本文按实施顺序逐项拆解,并给出可直接复用的检查表与预算写法。
一、先量工位:工作距离与量程
选型的第一步是把工位量清楚,而不是打开参数表。需要确定的量至少包括:
| 待测量 | 说明 | 影响 |
|---|---|---|
| 工作距离范围 | 相机安装面到物料表面的最近/最远距离 | 决定量程区间是否覆盖 |
| 料箱深度 | 箱底到箱口的距离 | 决定远端精度与视场边缘可用性 |
| 姿态分布 | 物料在箱内可能出现的躺姿、立姿、倾斜角 | 决定视场与遮挡 |
| 最小目标 | 最薄、最小的待抓物料 | 决定 Z 轴精度与点云密度门槛 |
| 可取区域 | 需要抓取的完整区域 | 决定视场与相机路数 |
工作距离范围必须整体落在相机有效量程内。注意量程的工程含义:它不是"最远能测多远",而是"在这个区间里精度可用"。近端与远端都要留余量,否则会出现"中间能抓、贴边就崩"的现场问题。
二、精度预算:对着抓取余量分配
抓取能否成功,取决于整机误差是否小于抓取余量。余量来自夹爪开口与物料尺寸之差、料位与目标位之间的允许偏差,通常并不宽裕。正确的做法是做一次误差预算,把总误差按环节拆开:
- 相机测量误差(含 Z 轴精度与横向分辨率)
- 手眼标定残差
- 机器人重复定位误差
- 夹爪制造与装配公差
- 物料形变与表面状态带来的测量波动
这就是"相机的重复精度不等于整机抓取精度"的原因。验收标准应按整机实测设定,把相机指标直接写进验收条款,通常会导致整机验收通过不了。
Z 轴精度与点云密度还决定两项能力:分辨薄壁件;把叠在一起的两件物料分开。堆叠物料尤其吃密度——点云太稀,两层物料在深度图上糊成一个平面。
三、安装形态:眼在手上与眼在手外
安装形态决定工作距离的分布,因此必须在选相机之前确定。
| 对比维度 | 眼在手上 | 眼在手外 |
|---|---|---|
| 安装位置 | 机械臂末端 / 腕部 | 固定支架、龙门、料架上方 |
| 视场特点 | 随臂姿态变化,可凑近、可换角度 | 固定覆盖工位,视角单一 |
| 标定关系 | 相机与末端固连,随臂运动 | 相机与机器人基座固连,稳定 |
| 线缆 | 需随臂随动,走线与拖链需设计 | 走线简单,可固定在结构上 |
| 负载与惯量 | 占用末端负载,影响负载余量 | 不占用末端负载 |
| 干涉风险 | 可能与夹爪接近路径冲突 | 可能与机械臂运动包络冲突 |
| 盲区 | 相对较少,但姿态受限处存在 | 料箱边角、机械臂自身遮挡 |
| 适用场景 | 工位多、物料姿态多变 | 工位固定、节拍要求高 |
两者也可组合:固定相机负责粗定位与料框识别,末端相机在抓取前做精定位与姿态复核。此时要注意两套坐标系之间的统一。
四、节拍账:延迟而非帧率
真正影响抓取循环的是输出延迟,即从曝光开始,到点云处理完成、位姿结果输出为止的总时长。抓取循环由定位、拍照、位姿计算、移动、夹取、放置串成,相机环节的延迟必须远小于整圈时间。
延迟预算可以写成一条链:
总延迟 ≈ 曝光时间 + 读出与传输 + 点云预处理 + 位姿解算 + 通信与握手曝光时间取决于物料是否运动。物料静止时,可以适当放长曝光换取信噪比;物料在输送线上移动时,曝光必须压短以抑制拖影,此时通常需要补光维持亮度。补光同时会改变高光分布,需要与偏振、条纹光方案一起调。
五、触发链路与握手约定
相机与机器人控制器之间的握手信号必须写进接口文档,至少覆盖:
- 何时触发拍照(控制器发脉冲,还是相机自由运行后由软件取帧)
- 何时输出就绪(位姿结果通过什么通道、什么格式回传)
- 时间戳如何对齐(相机时钟与控制器时钟的对应关系)
- 异常与重试(超时、无效帧、抓取失败后如何重新握手)
多相机联合测量时,需要硬件触发保证同时曝光。软件触发加时间戳对齐布线简单,但对时钟精度与运动补偿的要求明显提高。
六、手眼标定与定期复核
手眼标定求的是相机坐标系与机器人坐标系之间的变换关系。没有这一步,相机测得再准,机械臂也不知道该往哪里伸。
标定一般借助标定板或标准件完成。眼在手上的场景,需要让机械臂走多个姿态拍摄同一块标定板;眼在手外的场景,则把标定板摆在料箱内不同位置,覆盖实际工作空间。标定姿态分布越接近实际抓取区域,工作区内的残差表现通常越可控。
标定结果会漂,原因包括:温度变化引起的相机、支架与臂体热变形;长期振动导致的紧固件松动;碰撞或撞机后位姿关系直接改变。因此必须把标准件复测纳入定期维护,并把复核结果留档,便于判断趋势。
一个便于落地的复核流程可以写成这样:
defverify_hand_eye(robot,cam,standard_part,tol):"""定期标定复核(示意,非可直接运行代码)。"""poses=robot.move_to_reference_points()# 走到若干已知参考位forpinposes:measured=cam.locate(standard_part)# 相机测量标准件位姿err=compare(measured,p.expected)# 与期望位姿比对iferr>tol:returnf"超差{err:.3f},建议重新标定"return"通过,偏差在允许带内"关键是"已知参考位 + 可量化偏差 + 明确阈值",而不是凭手感判断。
七、物料材质:反光、吸光、透明与堆叠
| 物料类型 | 主要问题 | 常见对策 |
|---|---|---|
| 亮面金属 | 镜面反射导致点云空洞 | 偏振、条纹光多频多曝光、调整相机与光源夹角 |
| 吸光材质 | 回光弱、点云稀疏 | 提高曝光、增加补光,注意近处过曝 |
| 透明件 | 主动光难获有效回波 | 借助辅助手段改善表面回波条件 |
| 堆叠物料 | 上层遮挡下层 | 抓取顺序先抓顶层;上料机构分料 |
堆叠是结构性问题,不是算法问题。指望单次拍摄穿透整个料堆通常不现实,正确做法是让机构或节拍配合。
八、技术路线与抓取场景的匹配
从原理上看,主动深度方案可以粗分为几类:主动双目通过投射纹理增强匹配,对弱纹理表面较为友好;结构光或条纹投影通过编码图案获得密集点云,适合近距离静态测量;iToF 通过调制光的相位差测距,在帧率与量程上的平衡方式与前者不同。它们在抗环境光、抗高光、点云密度、运动鲁棒性上的取舍各不相同。
抓取场景里,判断依据不是"哪种技术更先进",而是四个问题:工作距离落在哪一档;物料表面是高光还是吸光;拍摄时物料是否运动;需要的是密集点云还是稀疏但可靠的点。把这四项写清楚,技术路线的可选范围会自然收窄。
九、抓取位姿与夹爪策略
相机给出的是物料的位姿,而最终要执行的是"夹爪能夹住的位置",两者之间还差一步可抓取性判断:
- 夹爪开口方向是否与物料的可夹持面匹配
- 抓取点附近是否存在其他物料干涉
- 料箱内壁与夹爪外形是否冲突
- 抓取后抬起过程中的姿态变化是否会碰到其余物料
因此位姿输出之后通常还需要一层抓取策略:候选抓取点排序、碰撞检查、失败后的重试位姿。相机提供点云与位姿,策略层负责把它转成可执行的抓取动作。
十、常见故障与排查表
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 部分区域抓不到 | 视场覆盖不足、结构遮挡 | 检查视场投影与安装位姿 |
| 点云出现空洞 | 高光反射、吸光、透明 | 调整光源夹角、偏振与曝光策略 |
| 抓取位置系统性偏移 | 手眼标定失准或已漂移 | 用标准件复测,必要时重新标定 |
| 偶发抖动、时好时坏 | 触发与时间戳未对齐 | 检查触发链路与时钟同步 |
| 节拍不达标 | 输出延迟过大 | 拆解延迟链,逐段定位 |
| 上下层分不开 | 点云密度不足 | 提高分辨率或改用分料机构 |
排查的原则是先分清"几何问题"还是"成像问题":几何问题看标定与视场,成像问题看材质与光源。两类原因混在一起查,往往越查越乱。
十一、落地检查表
工作距离范围覆盖整个抓取工位;Z 轴精度与点云密度能分辨最薄最小的目标;误差预算按整机口径分解;安装形态与支架刚度确认;输出延迟远小于抓取循环;触发与就绪握手信号定义清楚;多相机是否硬件触发;手眼标定方案与复核周期确定;反光、吸光、透明物料实拍验证;堆叠物料抓取顺序明确;线缆随动与冗余预留到位。
把这份表逐条过完,3D 相机在抓取系统里的位置才算摆正:它负责给出位姿,抓取成功是相机、标定、机械臂、夹爪与物料共同的结果。