第278篇 协作机器人安全标准——ISO/TS 15066的技术要求
人机交互设计聊完了,交互模式、状态反馈、安全交互这些设计要点应该都清楚了。但交互设计做得再好,如果没有安全标准兜底,出了安全事故就是大事。
协作机器人和人共享同一个工作空间,安全是最核心的要求。ISO/TS 15066是协作机器人安全的专用技术标准,面试问到协作机器人,这个安全标准是绕不开的知识点。
ISO/TS 15066全称是"Robots and robotic devices — Collaborative robots",它是ISO 10218(工业机器人安全标准)的补充技术文件,专门针对协作机器人的使用场景制定了更详细的技术要求。
一、协作机器人的四种安全功能
ISO/TS 15066定义了四种不同的协作安全功能,对应不同的人机协作方式:
安全监控停止(Safety Monitored Stop)——人进入协作区域时,机器人必须立即停止所有运动。人离开后才能恢复运动。适合人偶尔进入工作区域、机器人大部分时间自主工作的场景。
手动引导(Hand Guiding)——人直接用手引导机器人运动。机器人检测到人的力量后进入柔顺模式跟随人的运动。松手后停止。适合示教编程的场景。
速度和间距监控(Speed and Separation Monitoring)——机器人和人保持安全距离。人靠近时机器人减速,人太近时停止。距离阈值根据机器人速度和制动距离动态计算。人走得越快、机器人跑得越快,安全距离就越大。这种模式需要外部传感器(激光雷达、深度相机)实时追踪人的位置。
功率和力限制(Power and Force Limiting)——这是最"高级"的模式。机器人通过力矩传感器实时检测碰撞,确保碰撞时的力和功率不超过人体各部位的承受极限。这是真正意义上的"碰了也不伤人"。
二、身体部位的力/功率限值
ISO/TS 15066最核心的贡献是给出了人体各部位在碰撞时的力和功率限值。
身体部位 准静态力(N) 瞬态力(N) 功率(W)
头部 130 140 80
脸部 65 65 40
胸部 140 190 80
手部 140 200 80
准静态力是"挤压"场景——人被机器人压在固定物体上。瞬态力是"撞击"场景——机器人碰到人后迅速弹开。
这些数值是通过大量生物力学实验和伤害事故数据分析得出的。机器人的碰撞检测阈值必须严格设在这些限值以下。
三、碰撞检测的工程实现
力限制模式的关键技术难点是碰撞检测。怎么在毫秒级别准确检测到"碰到了人"?
主流方案是基于关节力矩传感器的异常力矩检测。机器人正常运动时,每个关节的力矩可以用动力学模型精确预测。实际力矩和预测力矩的差值就是所谓的"异常力矩"——如果超过阈值,就判定为碰撞。
class CollisionDetector:
def __init__(self, threshold):
self.threshold = threshold
self.model = RobotDynamicsModel()
def check(self, joint_torques, joint_positions, joint_velocities):
# 预测正常力矩
expected = self.model.compute_torques(
joint_positions, joint_velocities
)
# 计算残差
residual = np.abs(joint_torques - expected)
# 超过阈值则触发碰撞
if np.max(residual) > self.threshold:
return True, np.argmax(residual)
return False, None
碰撞检测的难点在于阈值的合理设定。阈值太低,正常运动的力矩波动就会触发误报(机器人频繁停下来)。阈值太高,真正的碰撞可能检测不到。
工程上的做法是:先让机器人跑各种正常动作,记录力矩残差的最大值。阈值设为这个最大值的1.5-2倍。然后在实际运行中持续监控,如果发现误报率太高就适当调高阈值。
还有一种方案是基于外部传感器(比如皮肤传感器、加速度计)的碰撞检测。皮肤传感器覆盖在机器人表面,碰到人时直接输出接触信号。加速度计装在机器人外壳上,检测到异常冲击就触发停止。这些方案可以作为关节力矩检测的补充,提高检测的可靠性。
实际产品中,碰撞检测通常分两级:第一级是关节力矩残差检测(快速但可能误报),第二级是外部传感器确认(慢一些但更可靠)。两级都触发才执行紧急停止,只有一级触发则减速观察。这种设计能有效降低误报率。
四、安全功能的软件架构
协作机器人的安全功能通常运行在独立的安全控制器上,和主控制器分开。安全控制器的优先级最高,有权随时停止机器人运动。
主控制器(实时OS) 安全控制器(安全PLC)
├── 运动规划 ├── 安全I/O监控
├── 传感器处理 ├── 力矩监控
├── 任务执行 ├── 速度监控
└── 通信 └── 急停处理
↓ ↓
两者通过安全总线连接,安全控制器有最终停止权
安全控制器的响应时间有严格要求——从检测到危险到机器人完全停止,整个过程通常要求在几十毫秒内完成。这包括信号传输时间、计算时间和制动时间。
安全软件的设计有一个重要原则:单一故障安全(Single Fault Safety)。即使安全系统中某一个组件坏了(传感器断了、通信丢了、某个芯片出错了),系统仍然能保证安全。这通常通过冗余设计来实现——双通道传感器、双路急停回路、看门狗监控。
安全等级要求:
SIL 2 / PLd:大部分协作机器人场景
SIL 3 / PLe:高风险场景(高速重载)
冗余设计:
- 双通道安全输入(两个独立的急停信号)
- 交叉监控(通道A监控通道B,反之亦然)
- 定期自检(每个周期检查所有安全通道是否正常)
工程上还有一个很容易被忽略的关键点:安全系统和非安全系统之间的接口。主控制器给安全控制器发速度指令,安全控制器监控这个指令是否超过安全限值。如果超了,安全控制器会直接覆盖主控制器的指令,强制减速或停止。这个覆盖机制的响应延迟必须足够低。
五、面试高频追问
Q:ISO/TS 15066和ISO 10218的关系是什么? A:ISO 10218是工业机器人安全标准,适用于所有工业机器人。ISO/TS 15066是它的补充文件,专门针对协作机器人。15066在10218的基础上增加了力/功率限值和四种安全功能的详细要求。
Q:四种安全功能怎么选? A:安全监控停止最简单但效率最低(人来了就停)。手动引导用于示教。速度间距监控适合人和机器人有一定距离的协作。功率力限制最灵活但技术难度最高,适合人和机器人紧密协作的场景。
Q:碰撞检测的延迟要求是多少? A:从检测到碰撞到机器人停止,总时间通常要求在100-200ms以内。其中信号处理约10ms,力矩计算约5ms,制动约50-100ms。安全控制器的采样频率通常在1kHz以上。
Q:协作机器人的安全认证流程是怎样的? A:先做风险评估(识别所有危险场景),然后根据风险等级选择安全功能,设计安全系统(硬件+软件),做验证测试(碰撞测试、力矩测试),最后提交第三方认证机构审核。整个流程通常需要6-12个月。
Q:力矩残差检测的模型精度要求高吗? A:要求很高。动力学模型的精度直接决定了残差的质量。模型不准的话,正常运动的残差就很大,碰撞检测的阈值只能设高,灵敏度下降。所以协作机器人出厂前要做精确的动力学参数辨识(摩擦、惯量、重力补偿),这个过程通常要花几个小时。
Q:安全标准对软件开发有什么影响? A:安全标准要求安全相关代码满足功能安全开发流程(IEC 61508)。代码要有完整的单元测试覆盖率要求、代码审查记录、静态分析报告。不能用未经验证的第三方库。代码变更要走严格的变更管理流程。这比普通的机器人软件开发流程严格得多。
协作机器人安全标准是产品上市的硬性门槛,不达标就不能卖。理解了ISO/TS 15066的核心要求,面试时聊到安全设计就有底气了。下一篇我们聊系统集成实战——从模块开发到完整产品上线的全过程。
ISO/TS 15066定义了协作机器人的四种安全功能和力/功率限值。碰撞检测是安全系统的核心,基于关节力矩残差的异常检测是主流方案。安全认证是产品上市的硬性要求。
上一篇:第277篇 人机交互设计
下一篇聊系统集成实战。
如果这篇文章对你有帮助,欢迎点赞支持一下,你的鼓励是我持续更新的动力!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)