1. 课程导入

双臂机器人并不是把两台单臂机器人简单拼在一起。它最大的价值在于“协同”:两只手臂可以像人的双手一样分工、交接、扶持、拧紧、装配,在同一个工作空间内完成单臂难以胜任的复杂任务。但协同也带来了新的难题——两条手臂共享空间、共享工件、共享节拍,任何一条手臂的运动都可能成为另一条手臂的障碍。因此,碰撞检测与避障是双臂机器人从“能动的机器”走向“能安全协作的伙伴”的关键能力。

本课程围绕这一能力展开,目标是让你既能理解原理,又能落地实现。学完之后,你应当能够:说清双臂碰撞检测的数学本质;根据任务选择合适的检测与避障方法;读懂并配置常见的安全参数;在仿真与真机上定位典型的碰撞误报、漏报和抖动问题。

一、核心概念:从“碰撞”到“避障”的完整链条

在双臂场景中,碰撞检测回答的是“会不会撞”,避障回答的是“怎么不撞”。两者之间还夹着一个关键环节——距离与安全裕度。只有先算出两条手臂之间、手臂与环境之间的最小距离,才能判断是否进入危险区,进而决定减速、绕行还是急停。

需要区分几个容易混淆的概念:

  • 自碰撞:同一台双臂机器人左右臂之间、或手臂与自身躯干之间的碰撞。
  • 环境碰撞:手臂与工作台、夹具、货架、围栏等外部物体的碰撞。
  • 人机碰撞:手臂与进入工作空间的人或人体部位的接触,通常要求更高安全等级。
  • 连续碰撞检测:不仅检查离散时刻,还要检查两个控制周期之间扫掠体是否相交,防止高速运动“穿透”。
核心逻辑可以概括为一条链:几何建模 → 距离计算 → 碰撞判定 → 避障决策 → 运动执行 → 状态反馈。任何一个环节的参数或模型不准,都会让整条链失效。

二、整体框架:感知—建模—规划—控制四层结构

为了把零散的知识组织起来,本课程采用四层框架来理解双臂碰撞检测与避障系统。下图展示了从物理世界到控制输出的完整信号与数据流,也是后续各章节反复引用的总图。

双臂机器人碰撞检测与避障四层框架 感知层 关节编码器 / 力矩传感器 深度相机 / 激光雷达 电子皮肤 / 触觉阵列 建模层 正/逆运动学 包围盒 / 凸包 / 胶囊体 最小距离与穿透深度 规划层 RRT / PRM 采样规划 人工势场 / 速度障碍 任务优先级与双臂协调 控制层 关节速度/力矩 安全急停与回退 实时周期 1~10 ms 状态反馈:实际距离、碰撞标志、节拍偏差 安全裕度决策带 d > d_safe:正常运动 | d_warn < d ≤ d_safe:减速预警 | d ≤ d_warn:避障绕行 | d ≤ d_stop:急停 典型参数:d_safe = 50 mm,d_warn = 20 mm,d_stop = 5 mm(随速度与负载调整) 典型应用场景 双臂装配 · 协同搬运 · 柔性分拣 · 人机共融工位 · 实验室自动化 · 服务机器人递送 共同特征:共享工作空间、动态障碍、节拍敏感、安全等级要求高

这张图里,感知层负责“看见”,建模层负责“算清”,规划层负责“想好”,控制层负责“做到”。四层之间不是单向流水线,而是带反馈的闭环。尤其要注意:安全裕度决策带是连接检测与避障的枢纽,参数设置过松会撞,过紧则会让机器人频繁停顿、节拍崩溃。

三、方法流程:一次避障决策是怎样产生的

以双臂协同装配为例,一次完整的避障决策通常按以下顺序发生:

  1. 状态采集:读取左右臂各关节角度、速度、力矩,以及外部深度相机点云。
  2. 几何简化:把复杂手臂模型简化为胶囊体或凸包,降低计算量。
  3. 距离计算:计算左右臂之间、手臂与环境之间的最小距离及最近点。
  4. 碰撞判定:若最小距离小于阈值,或扫掠体相交,则标记为碰撞风险。
  5. 避障决策:根据风险等级选择减速、绕行、任务重规划或急停。
  6. 执行与反馈:下发速度/力矩指令,并在下一周期重新评估。

在代码层面,一个简化的距离判定逻辑可能长这样:

d_min = compute_min_distance(left_arm, right_arm, env)
if d_min <= d_stop:
    emergency_stop()
elif d_min <= d_warn:
    path = replan_with_avoidance(path, d_min)
    set_speed_scale(0.3)
elif d_min <= d_safe:
    set_speed_scale(0.6)
else:
    set_speed_scale(1.0)

这段伪代码体现了“分级响应”的思想:不是一有风险就停,而是按距离分层处理,兼顾安全与效率。

四、典型应用场景与常见误区

双臂碰撞检测与避障的典型场景包括:双臂协同装配(一臂扶持、一臂拧紧)、协同搬运(两臂托举同一工件)、柔性分拣(动态抓取与放置)、人机共融工位(人进入工作空间时自动降速)、实验室自动化(多试剂瓶密集操作)。这些场景的共同点是:空间共享、障碍动态、节拍敏感、安全要求高。

初学者最容易踩的误区,可以用下面的清单来对照自查:

误区 表现 正确做法
只做离散点检测 高速运动时两臂“穿透”却未报警 引入连续碰撞检测或扫掠体检测
安全阈值一刀切 要么频繁急停,要么偶尔擦碰 按速度、负载、任务阶段动态调整阈值
忽略双臂协调约束 单臂规划都可行,合起来却互撞 在联合构型空间中统一规划
模型与实际偏差大 仿真无碰撞,真机却报警 标定工具坐标系与工件模型,留足裕度
只依赖外部传感器 遮挡时失效,反应滞后 本体感知与外部感知融合,互为冗余
特别提醒:碰撞检测的“漏报”比“误报”危险得多。误报只会降低效率,漏报可能导致设备损坏甚至人身伤害。因此在参数整定时,宁可保守一点,也要保证安全裕度足够。
学习本课程时,建议始终带着三个问题:距离怎么算?风险怎么判?动作怎么选? 后续每一章都会围绕这三个问题不断深入。把这张四层框架图记在脑子里,你就能把零散的知识点串成一条完整的链。

双臂机器人的碰撞检测与避障,本质上是在“效率”与“安全”之间寻找动态平衡。理解了这个平衡点,你就掌握了这门课程的主线。