4. 碰撞检测基本概念
在协作机器人安全力控领域,很多工程问题并不是出在算法本身,而是出在术语混用上。有人把“碰到”叫碰撞,有人把“压住”也叫碰撞;有人把“检测到异常”当成“识别出对象”。一旦概念边界不清,阈值设定、响应策略、测试验收都会出现偏差。本节先把四个高频术语——接触、碰撞、挤压、冲击——放在同一条物理时间轴上辨析,再说明检测与识别在目标、输入、输出和评价指标上的本质区别。
一、四个术语的物理本质:从“力—位移—时间”看差异
协作机器人末端与环境的作用,可以用三个基本量描述:接触力 F、相对位移 Δx、作用时间 Δt。四个术语正是这三个量不同组合下的状态命名。
- 接触(Contact):末端与物体表面建立力学连接,但力值通常处于正常作业区间,位移可控、时间持续。它是中性状态,不等于危险。例如装配时探针轻触工件,力约 2~5 N,属于正常接触。
- 碰撞(Collision):运动中的机器人末端或关节与障碍物发生非预期接触,核心特征是“非预期”和“相对速度较高”。碰撞可能瞬间发生,也可能持续,但一定偏离了原任务轨迹。
- 挤压(Squeeze / Pinch):人体或物体被夹在机器人运动部件与固定面之间,力持续增加且无法通过自身运动脱离。挤压的危险性在于“持续加载”,即使力值不高,长时间作用也会造成伤害。
- 冲击(Impact):碰撞的极端形式,特点是作用时间极短(毫秒级)、峰值力极高。冲击力由动量变化率决定,
F ≈ m·Δv/Δt,因此高速小质量末端也能产生破坏性峰值。
记忆口诀:接触看力值,碰撞看预期,挤压看持续,冲击看峰值。四者不是互斥关系,而是一次事件在不同阶段可能依次呈现的状态。
二、检测与识别:目标不同,方法不同
很多初学者把“检测”和“识别”当成同义词,这是安全功能设计中的常见误区。二者的根本区别在于回答的问题不同。
| 对比维度 | 检测(Detection) | 识别(Identification) |
|---|---|---|
| 核心问题 | 有没有发生异常? | 发生了什么类型的异常? |
| 典型输入 | 关节电流、力矩、编码器位置 | 检测结果 + 力曲线特征、频谱、接触位置 |
| 典型输出 | 布尔标志 + 触发时刻 | 类别标签 + 置信度 + 位置/严重度 |
| 常用方法 | 阈值法、动量观测器、残差比较 | 特征工程 + 分类器、模板匹配、机器学习 |
| 关键指标 | 漏检率、误报率、响应延迟 | 分类准确率、定位误差、泛化能力 |
| 安全等级 | 通常直接关联急停/回退 | 通常用于策略选择与恢复决策 |
从工程实现看,检测是识别的前置条件:没有可靠的检测,识别就无从谈起;但检测做得好,识别未必准确。例如机器人碰到人,检测模块能在 10 ms 内触发停止,但识别模块需要进一步判断是“手臂接触”还是“末端夹爪挤压”,才能决定是立即释放还是缓慢回退。
三、典型场景:一次碰撞事件的完整链路
以协作机器人搬运工件时撞到操作人员为例,事件链路如下:
- 接触建立:末端与人体表面接触,力从 0 上升到约 15 N,此时属于正常接触范围,尚未触发安全响应。
- 碰撞检测:动量观测器发现实际力矩与模型预测力矩残差超过阈值
τ_res > 8 N·m,在 8 ms 内判定“发生非预期碰撞”。 - 冲击评估:系统读取峰值力与作用时间,若
F_peak > 140 N且Δt < 5 ms,则归类为冲击,立即执行急停。 - 挤压判断:若机器人未停止且力持续上升超过 300 ms,判定为挤压风险,切换为反向退让策略。
- 碰撞识别:结合接触位置、力方向、末端速度,分类为“人体接触—手臂—中度风险”,并记录日志用于后续复盘。
在 ISO/TS 15066 的语境下,接触力阈值与挤压力阈值是分开规定的:准静态接触允许力通常高于瞬态冲击允许力,因为人体对短时冲击的耐受与对持续挤压的耐受机制不同。工程中不能用一个阈值覆盖所有状态。
四、常见误区与复盘要点
- 误区一:把接触当碰撞。正常装配接触力被误判为碰撞,导致频繁误停机。应结合任务阶段与力变化率区分。
- 误区二:只做检测不做识别。系统能停但不知道停得对不对,恢复策略只能“一刀切”,影响节拍与安全。
- 误区三:用冲击阈值判断挤压。挤压是持续加载,峰值可能不高,但持续时间长,必须引入时间积分或持续力判据。
- 误区四:忽略检测延迟。检测延迟直接决定冲击峰值能否被及时截断,是安全链中最关键的参数之一。
# 典型检测—识别参数配置片段(示意)
detection:
residual_threshold: 8.0 # N·m,碰撞检测残差阈值
response_time_ms: 8 # 检测响应延迟
identification:
impact_peak_force: 140 # N,冲击峰值判据
impact_duration_ms: 5 # ms,冲击持续时间上限
squeeze_force: 80 # N,挤压持续力阈值
squeeze_duration_ms: 300 # ms,挤压持续时间阈值
classifier: "force_feature_svm"
复盘时建议按“状态—判据—响应—结果”四列记录每一次异常事件:状态是接触、碰撞、挤压还是冲击;判据用了哪个阈值;响应是急停、退让还是继续;结果是误报、漏报还是正确处置。坚持记录,才能把术语辨析真正落到参数整定与安全验证中。