ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

从汽车到机器人:具身智能全域安全落地的实战思考

从汽车到机器人:具身智能全域安全落地的实战思考

去年我从智能驾驶安全团队转到具身智能方向,干了一件外人看起来跨度挺大的事:把汽车行业那套“安全方法论”原封不动地搬到机器人项目里。当时很多人劝我说,汽车和机器人根本不是一个物种,安全标准和失效模式也完全对不上——这话对,但也不全对。

先说结论:全域安全这概念,放在物理AI和具身智能时代,不是把原来汽车那套文件翻新一遍就完事,而是要重新定义“安全”的边界和落地方式。我带过两个项目,一个是L3级辅助驾驶系统安全架构,另一个是轮式双臂服务机器人安全子系统,中间还参与过一个人形机器人样机的安全评估。三趟走下来,最大的感受是:汽车行业给的安全遗产足够厚重,但真正落地到具身智能时,不能直接套模板,得先搞清楚哪些能抄、哪些必须重写。

这篇实录不聊概念空谈,只讲我在实际项目中怎么理解“全域安全”、怎么把汽车的安全经验迁移到机器人上、以及那些标准化文档里永远不会告诉你的踩坑经历。

1. 为什么“全域安全”是物理AI的生死线

1.1 汽车行业的“全域安全”到底指什么

在智能驾驶领域,从业人员谈安全,通常不会只说“碰撞安全”或者“刹车失灵”这种单一维度。真正的全域安全,至少包含三根支柱。

第一根是功能安全,对应ISO 26262标准。它解决的是“系统本身出现故障怎么办”的问题,比如传感器突然掉线、控制器算力崩溃、执行器卡死。核心手段是风险评估、安全需求分解、冗余设计和故障容错机制。第二个项目里我给机器人定ASIL等级的时候,沿用了一套相当成熟的评估维度:严重度(S)、暴露度(E)、可控性(C),三个参数一乘,安全等级就出来了。

第二根是预期功能安全,对应ISO 21448标准,通常叫SOTIF(Safety of the Intended Functionality)。它解决的是“系统没有故障但功能本身存在局限”的问题,比如摄像头在逆光环境下识别不到行人、激光雷达在大雨中对小物体漏检。这类问题不是硬件坏了,而是算法和感知的天花板。传统车企过去不怎么看这个,但智能驾驶和具身智能必须重视,因为AI模型的不确定性是常态。

第三根是网络安全,对应ISO 21434标准。机器人或者自动驾驶汽车本质上是联网的移动智能体,如果被远程攻击劫持,后果比单纯功能性故障严重得多。

这三根支柱合在一起,才叫“全域安全”。它强调的是:安全不是某一个模块的特权,而是从感知、决策、执行到通信、云端的全链路覆盖。我经常跟团队打比方——全域安全就像一栋楼的消防系统,不能只在楼梯间放灭火器,还得有烟感报警器、防火门、紧急疏散通道和定期消防演练,缺一样,真出事的时候就抓瞎。

1.2 具身智能为什么比汽车更需要“全域安全”

具身智能和汽车的差异,本质上决定了安全设计的优先级。

先说环境。汽车再智能,大多数时间还是跑在结构化道路上,有车道线、交通标志、信号灯,规则相对清晰。机器人不一样,尤其是家用服务和工业协作场景里的机器人,面对的是非结构化环境。桌子下面有没有玩具、货架上有没有伸出来的杆子、地上有没有水渍,这些不确定性直接抬高感知和决策的难度上限。

再说人机距离。汽车周围的行人,离车身至少也有半米到几米,而且行人通常处于相对可预测的运动状态。机器人呢?协作机械臂可以在工人脸前20厘米处工作,家庭服务机器人可以直接接触老人和小孩。距离越近,安全响应时间就越短。汽车刹车需要几百毫秒到秒级,而机器人在贴身场景下,安全机制必须在几十毫秒内完成判定和响应。

还有一个非常关键的点:物理AI的决策不再依赖纯规则,而是大量引入大模型和强化学习。大模型给出的动作指令,在语义层面正确,但不代表在物理层面安全。比如一个具身智能体接到“把杯子递给我”的指令,模型可能规划出一条路径,但这条路径在物理空间里恰好会扫到旁边的花瓶。这种“语义合理但物理危险”的问题,在传统汽车功能安全体系里几乎没有对应物。

所以我在项目里常常强调:物理AI的全域安全,不只是“防止故障”,还要“防止AI做出不合理决策”。这已经不是单靠ISO标准能覆盖的范围,而是需要一套能约束AI行为的安全层。具身智能如果过不了这一关,实验室里怎么秀都可以,但进不了家庭和工厂——没有人愿意让一个可能突然失控的机械体在自己身边工作。

2. 汽车安全方法论向具身智能迁移的可行性分析

2.1 可以复用的底层逻辑:V模型、HARA与分析框架

汽车安全工程过去几十年沉淀下来的方法论,用在具身智能上,至少三样东西能直接抄作业。

第一样是V模型开发流程。左边是需求定义、系统设计、组件设计,右边是组件测试、集成测试、整车验证,中间用安全需求串起来。这个流程用来管理复杂系统很有效。机器人项目的安全需求同样需要从系统级逐层分解到关节级、电路级,再到芯片级的故障处理。

第二样是HARA(Hazard Analysis and Risk Assessment,危害分析与风险评估)。这套方法把危险事件拆成“场景+触发条件+潜在后果”,然后用严重度、暴露度、可控性三项打分,推导出安全需求等级。我在机器人项目里做过一轮快速HARA,把机器人的典型危险事件列出来:主轴电机失控旋转、夹爪意外闭合、底盘高速冲撞、电池热失控、网络指令被篡改。每一类都按汽车行业的打分逻辑去评估,结论相当清晰——哪些要上冗余硬件,哪些靠软件限值就能兜住。

第三样是ASIL等级和安全完整性等级(SIL)的推导逻辑。虽然机器人行业还没有统一的“ISO 26262”,但这个分级的思路可以直接借鉴,至少能告诉团队“哪些安全功能值得花钱花时间设计”。

2.2 必须重新设计的差异点:自由度、人机关系、决策不确定性

方法论能抄,但具体设计参数必须推翻重来。

最直观的差异是运动自由度。汽车是四轮地面运动体,自由度有限,运动学模型相对固定。机器人尤其是人形机器人,自由度动辄几十个,手臂、腰、腿、手指各有各的关节和运动范围。这意味着安全监控的维度完全不同——汽车安全主要关注速度和轨迹,机器人得同时关注每个关节的力矩、加速度、位置约束、奇异姿态和连杆碰撞包络。

第二个差异是人机关系的亲密程度。汽车可以假设驾驶员随时接管,机器人在很多场景里没有“驾驶员”这个角色。家庭服务机器人面对的可能是老人、小孩或宠物,行为不可预测程度很高。汽车行业的可控性评估(C值)在机器人场景里基本失效——你没法指望一个婴儿“可控”地避开危险。

第三个差异是大模型作为决策核心带来的不确定性。传统汽车的功能安全处理的是确定性的传感器信号和状态机,而具身智能体经常要处理“模型输出一个动作概率分布”的情况。这要求安全架构里必须有独立的“行为安全层”,对大模型的输出做物理可行性校验,相当于给AI加了一个“安全驾驶教练”。

所以我的结论是:迁移汽车安全经验的正确姿势,不是把ISO 26262模板贴在机器人研发流程里,而是把“危害识别-风险评估-需求分解-验证确认”这套底层逻辑抽出来,再针对机器人特有的自由度、人机关系和AI不确定性重新建模。

3. 全域安全落地的核心实操路径

3.1 第一步:危险源识别与风险分析,用STPA增强HARA

提到落地,第一件事永远是找出“会发生什么坏事”。我现在的项目组把HARA和STPA结合起来用,效果比单用任何一种都好。

STPA(System-Theoretic Process Analysis,系统理论过程分析)是从系统工程角度出发的方法,特别适合分析AI系统的不安全行为。我们通常分四步走:

第一步,定义损失事件。我会和团队一起列举所有不可接受的事件:人员受伤、设备损坏、任务失败导致的经济损失、数据泄露。这不是科研任务,是给安全设计划红线。

第二步,建立控制结构图。把机器人的感知、决策、执行、通信全部画出来,标注每个节点的控制关系和反馈回路。这一步最大的价值是让不同模块的工程师第一次看清“我输出的东西会被谁用来做安全决策”。

第三步,识别不安全控制行为(UCA)。对每一条控制指令,追问四个问题:什么情况下不该发指令却发了?该发指令时没发?指令发早了/发晚了?指令的力度或范围不对?比如“机械臂在人体接近时仍然执行速度超过0.5m/s的运动”,就是一个典型的不安全控制行为。

第四步,从UCA反推安全约束。把每条不安全行为转化为可执行的安全需求,比如“当人或障碍物进入安全距离时,所有关节速度必须低于0.2m/s”。

我在项目里体会很深的一点是:STPA更适合找AI系统的安全问题,HARA更适合评级和排序。两者不冲突,STPA产出的安全约束可以直接做HARA的打分输入。很多团队只看HARA,结果危险事件列表里漏了一堆“AI误判”的场景。建议两个一起用。

3.2 第二步:安全需求到安全状态,定义“坏事发生时怎么办”

分析完危险源,紧接着要做的事情是定义安全状态。安全状态是系统在检测到危险条件、自身故障或外界威胁时,主动进入的一种“不会造成持续伤害”的状态。

汽车的安全状态是停车,但机器人的安全状态要更丰富。轮式机器人的安全状态可以是“紧急制动+锁定轮子”,机械臂的安全状态可以是“立即停止所有关节运动并进入保持力矩模式”,对于交互场景更复杂的机器人,安全状态还可以是“退回到手动模式,等待人工介入”。

我通常会把安全状态分为三个层级:

第一层是“运行正常”,所有安全监控指标在阈值内,系统正常执行任务。

第二层是“受限运行”,已经检测到异常但还能通过限制速度、限制力矩等方式继续完成部分任务。比如传感器信号噪声增大时,机器人降低移动速度,不开入人多的区域。

第三层是“安全停车”,异常严重或无法判定时,立即停止运动,保持当前姿态稳定,重新评估环境后才能恢复。

这个层级的本质是为了平衡“安全”和“可用性”。如果一有问题就彻底断电,机器人频繁死机,用户很快就会失去耐心,甚至会为了绕过安全机制而破坏防护设施。这不是危言耸听,我在工厂试点时见过工人用胶带把安全光幕贴上的操作——因为安全停机太频繁影响了生产节拍。

3.3 第三步:安全软件架构,给AI加一个“安全监控器”

软件层面,我现在用的架构是“应用层-行为安全层-安全监控层”三层模型,这是从自动驾驶安全架构里演化来的。

应用层是机器人的“大脑”,负责感知、规划和决策,可以跑大模型、VLM、强化学习策略,怎么先进都不限制。行为安全层相当于“行为过滤器”,它接收应用层的动作意图,结合当前机器人状态和环境感知结果,做一套快速校验。比如应用层输出了“手臂向右侧伸展到1.2米外”,行为安全层会检查这个动作是否超出关节限位、是否靠近障碍物、是否在电机力矩允许范围内。一旦不满足,就拒绝或降级执行。

安全监控层则是“最终兜底”,它独立于应用层运行,可以理解为安全看门狗。它持续监测核心安全指标,比如急停信号、关节力矩、速度、位置、通信心跳。只要指标超过硬性阈值,会直接切断动力源或触发紧急制动,不经过应用层。

这个三层架构的好处是:即使大模型输出完全不可控,行为安全层和安全监控层依然能兜住最危险的情况。AI可以犯错,但错误不会变成物理伤害。

硬件上,机器人至少需要两套独立的计算硬件:一套跑应用层,另一套专跑行为安全层和安全监控层。两套之间通过安全协议通信,安全监控层有独立的看门狗定时器,能检测到应用层“假死”——比如模型推理超时,应用层没心跳了,安全层就自动接管。

3.4 第四步:硬件冗余与紧急安全机制,最后一根保险丝

软件再完善,硬件上也得有最后一根保险丝。这个结论是大大小小跑了无数个demo之后才彻底想通的。

在轮式机器人项目里,我给底盘做了双通道急停逻辑。第一通道是物理急停按钮,按下后直接切断电机驱动器的电源,同时机械抱闸锁死轮子。第二通道是软件急停,由安全监控层触发,通过CAN总线发出刹车指令。两条通道互相独立,任何一条失效都不会影响另一条。

机械臂上,我最看重的两个硬件指标是关节力矩限制和碰撞保护。协作机械臂通常内置电流或力矩传感器,当检测到外部碰撞力矩超过预设阈值时,会立刻反转电机或者停止运动。这里有一个关键参数:碰撞响应时间。我测试过市面上几款协作臂,好的能做到碰撞检测在10毫秒内触发、20毫秒内停止运动。这个指标直接影响对人的伤害程度,是选型时的重要依据。

还有一个容易被忽略的是冗余电源和冗余总线。机器人主电源意外掉电时,安全监控系统至少得有独立的小电源撑着,完成“安全停车”动作。通信总线也最好双份,避免主CAN线被物理损坏后,机器人在线却无法接收任何安全指令。

这些设计叠加起来,才构成完整的硬件安全底座。没有这些,软件层做得再漂亮都只是PPT方案。

4. 仿真与实机联合验证实操记录

4.1 仿真环境搭建:测试用例库与故障注入

全域安全落地的另一半重心,在验证环节。仿真不是可有可无的补充,而是安全测试的主战场。

我在项目里用MuJoCo搭仿真环境,配合ROS 2做消息通信。第一步是把机器人的真实URDF文件、关节限位、电机最大力矩、控制器参数全部导入,尽量还原真实物理特性。第二步是搭建传感器模型,包括激光雷达、RGB-D相机、关节编码器和IMU。

最关键的是构建安全测试用例库。我把从STPA分析出来的每一个不安全控制行为(UCA)转化成一个或多个测试用例。比如“当障碍物在路径上时,机器人仍然全速前进”这条UCA,会生成一整套测试场景:障碍物在不同距离、不同速度、不同形状、不同光照条件下,验证机器人是否能触发安全策略。

故障注入也是仿真的重头戏。我会故意模拟传感器掉线、通信中断、关节卡死、模型推理超时等故障,看系统能不能正确进入预期安全状态。这套故障注入做得好,能提前暴露一大堆在正常测试里永远发现不了的问题。

4.2 实机安全测试流程:从低速到高动态逐步逼近

仿真过了不代表实机就能过。我的实机测试流程是分阶段的,绝对不会一上来就满速满负载跑。

第一阶段,安全员手持急停按钮,机器人以最低速度在开阔场地运行,验证基础运动控制和急停功能,确认急停能在预期时间内让所有运动停止。

第二阶段,加入障碍物和人员流动模拟。测试人员穿反光背心,在安全距离外走动,验证感知系统对动态人员的检测准确率和响应速度。这个阶段重点看行为安全层是否正确介入,有没有误报或漏报。

第三阶段,加入故障注入。比如人为断开一路传感器电源,或者在主通信线路上加一个信号干扰器,观察系统是否能自行降级或安全停车。这一步最能发现硬件和软件配合的薄弱点。

第四阶段,重复性测试和回归测试。每一个bug修复后,都要回归一遍已经通过的测试用例,确保没有引入新的安全问题。

我们还会给每一次实机测试生成一份记录档案,包含测试场景、触发条件、系统响应时间、安全状态描述、恢复过程和截图或日志。这套档案不仅是安全证据,也为后续迭代提供了数据基础。

4.3 sim-to-real gap在安全测试中的表现与对策

仿真与实机存在差距,这是所有人都知道但很容易低估的问题。这几个坑我在项目里实打实踩过。

物理引擎的接触动力学和真实世界有差异。仿真里,机械臂撞到障碍物后的反弹、摩擦、震动,和真实场景差别很大,导致行为安全层在仿真中表现很好,换到实机却触发误报。对策是:在仿真中对安全阈值留出更大的余量,把“最坏情况”作为默认输入,宁可仿真里保守一些,也不要让实机翻车。

传感器噪声差异。仿真里的激光雷达点云非常干净,实机数据则充满环境噪声。如果你在仿真里把安全边界设得很极限,实机大概率会出现大量误报。我会在仿真里增加高斯噪声、随机丢失点云等后处理,模拟真实感知的不稳定。

延迟差异。仿真中通信和计算的延迟是理想的,实机上总线传输、图像编码、模型推理都会引入额外延迟。安全响应的延迟分析必须把整条链路的尾延迟算进去,不能只看平均延迟。

我自己在实际项目里养成的习惯是:仿真跑通后,先让机器人在安全人员监护下以最低速度跑完同一条路径,把仿真参数的触感校准到与实机接近,再逐步释放速度和复杂度。宁可多花几天做保守验证,也不想在实机阶段被安全问题打得措手不及。

5. 踩坑实录与排查技巧

5.1 感知误判导致安全兜底误触发

第一个想分享的问题是感知误判导致的频繁急停。我们在测试轮式服务机器人的时候,发现它经常在一个固定区域莫名其妙地急停。查日志后发现,安全监控层接到了“前方3米有障碍物”的信号,但实际前方空无一物。

排查过程:先看激光雷达数据,发现点云里有一团“幽灵点”,位置固定在一个墙角。后来确认是墙面上的一块反光金属板,激光雷达在特定角度产生了镜面反射,形成了虚拟障碍物。这不是硬件故障,是感知算法的失效模式。处理方式是把感知融合算法改为多传感器加权融合,并且给激光雷达添加置信度判断——当点云的形状和尺寸在连续多帧内变化较大时,降低该点云的优先级。同时调整了行为安全层的触发策略,从“单帧检测即触发”改为“连续三帧检测确认再触发”,时间延迟只增加了大约60毫秒,但误报率下降了90%以上。

这个经历让我学到一件事:安全监控层不能太“傻”,纯靠单传感器单帧判定,一定会被真实世界的噪声带偏。但也要注意,多帧确认会引入延迟,必须在误报和响应速度之间找平衡。

5.2 仿真中“误报”但实机安全的奇怪现象

第二个问题有点反直觉:仿真中安全监控器频繁误报,实机上却一切正常。

一开始我们以为是仿真模型建的不够准,后来仔细排查发现,问题出在物理引擎对接触力的建模上。在仿真里,机械臂末端稍微碰到一点虚拟地板,接触力就出现剧烈振荡,幅度远大于真实世界的稳定接触。安全监控器检测到力矩波动超过阈值,当然会触发保护性停机。

这说明仿真环境里的物理参数设置太过“理想化”,把接触模型调得过于刚性,导致接触力计算不稳定。调整方式是把仿真中的接触刚度调低,并增加阻尼项,让接触响应更平滑。同时把安全阈值从固定值改成动态基线——先记录机器人静止时的力传感器基线,在这个基础上加偏移量作为触发阈值。

这类问题在仿真验证里非常典型。给团队的建议是:不要一看到仿真误报就怀疑是算法bug,先去看看物理引擎的参数设置,也许问题根本不在逻辑层。

5.3 过度设计导致可用性急剧下降

第三个问题是我最想吐槽的——过度设计。

刚开始做安全架构的时候,我习惯性地把所有能想到的安全机制全部叠加上去:力矩限制、速度限制、距离保持、碰撞检测、急停、电流监控、温度保护,层层叠加。结果机器人在实际使用中频繁进入受限运行甚至安全停车状态,操作员烦不胜烦,最后直接绕过安全系统来做事。

这里踩的坑是:安全机制的触发条件太敏感,或者多个安全机制之间存在相互干扰。比如速度限制和距离保持同时触发时,机器人会不断减速,然后因为距离条件不满足而急停,这样用户体验极差。

我的处理方式是给安全需求做分级。关键安全需求(比如碰撞检测、急停)必须永远优先且不能被绕过;重要安全需求(如速度限制)在受限条件下可以放宽,但需要明确授权并记录;辅助性安全需求(如温度过高的预警策略)则根据具体任务灵活调节。安全分级的核心是:保护人的安全永远第一,保护设备和环境第二,保证任务完成第三。这个优先级在设计中必须锁死。

5.4 大模型推理延迟导致的“决策卡死”

具身智能独特的坑:大模型推理延迟波动很大,一次VLM调用可能几十毫秒,也可能好几秒,甚至会超时。这时候应用层就像“卡住”了一样,不产生新的控制指令。

我们的处理方式是给应用层增加超时监控,超过设定时间就触发降级策略。降级不是直接急停,而是让机器人进入“安全等待”状态——保持当前姿态,降低速度或停止移动,等待模型恢复或请求人工介入。如果在指定等待时间内仍未恢复,再进入安全停车。

这里也出现过一个有意思的问题:如果降级得“太主动”,机器人会在模型偶尔一次的慢推理时就频繁停住,影响任务完成;如果降级得太晚,又可能等来一个过时的、对环境变化不适配的指令。这个阈值我们通过大量实测日志来校准,最终选定了一个“两倍于模型P95延迟”的等待超时时间,兼顾安全性和任务顺畅度。

6. 常见问题排查速查表

下面这份速查表是我在项目里结合自己和团队的经验整理的,遇到问题时直接看这张表,能少走很多弯路。

问题表现可能原因排查手段建议处理方式
机器人无故急停感知误判、传感器噪声、安全阈值过保守查看急停触发日志,分析传感器原始数据多帧确认触发,动态阈值,多传感器融合
仿真误报但实机正常物理引擎接触参数不当、传感器模型过于理想调低接触刚度,增加阻尼,分析力矩曲线用最坏情况校准时序延迟和噪声
机器人频繁进入受限运行安全机制叠加过多,触发条件冲突逐条列出当前生效的安全约束,查优先级安全需求分级,只保留关键约束,谨慎放宽次要约束
大模型推理超时导致迟滞模型延迟波动大,没有超时降级策略统计推理延迟分布,设定P95/P99基线设置超时监控,超时进入“安全等待”状态
碰撞检测灵敏度不足力矩阈值设得过高,或滤波过度实测不同速度下碰撞力矩变化曲线分速度段设置不同碰撞阈值,低速更灵敏,高速适度放宽
通信总线故障导致执行失控主总线无冗余,安全系统无法收发指令检查总线负载、故障时间戳记录独立安全总线,或关键指令走双通道

这张表不能覆盖所有情况,但绝大多数我遇到的“安全相关疑难杂症”,都能从这里找到排查思路的起点。

7. 个人体会与后续方向

7.1 安全不是验收项,是设计输入

这么多年做下来,我的核心体会就一句话:安全必须作为设计输入,贯穿整个研发流程,而不是最后验收阶段补个文档。

安全如果只在项目后期才介入,基本等于给一辆没装刹车的车补一个紧急制动按钮——补是能补,但效果和一开始就设计刹车完全不同。早期让安全工程师参与需求定义和架构设计,花的时间不会多太多,但能省掉后期大量的返工和事故隐患。

7.2 从“安全文档工程师”到“安全系统架构师”

我刚入行时以为安全工程师就是写文档、做分析、跟测试,后来才明白这份工作真正的意义是定义系统的“安全性格”。一个好的安全架构师,要懂机器人运动学、懂控制理论、懂AI模型的行为特性、懂嵌入式系统、懂通信协议,甚至还得懂一点心理学——因为你设计的安全机制,最终要能被用户接受和信任。

这个岗位的成长路线,我觉得可以这样走:先从机器人学基础和控制理论入手,了解机器人的运动特性和执行器特性;再深入学习功能安全标准(ISO 26262)和预期功能安全方法论(ISO 21448),把汽车行业的分析框架吃透;然后跟一个具身智能项目,从安全需求定义到实机验证完整走一遍;最后建立自己的安全测试方法论和工具链。

7.3 一些实用建议给正在转型的同行

如果你正在从汽车或者其他领域转入具身智能安全,我有几条具体建议。

第一,不要迷信标准。具身智能领域的安全标准还在早期,如果只盯着现有标准做合规,会错过很多真正重要的风险点。第二,建立自己的安全测试用例库,从STPA分析开始,把风险转化为测试,不断积累,这个库是你最宝贵的资产。第三,多做实机测试,尤其是故障注入和恢复测试,纸上谈兵永远发现不了真问题。第四,关注安全机制的人机交互设计——紧急停止后如何安全恢复、如何向用户清晰解释当前状态,这些细节决定用户是否信任你的系统。

最后再分享一个我们在做的后续方向:用形式化方法对行为安全层和安全监控层做数学层面的验证。简单说,就是让机器人在到达物理极限之前,先在数学上证明它不会违反安全约束。这条路还很长,但我相信物理AI的全域安全,最终要靠“设计时安全”和“运行时安全”两套体系同时发力,才能真正落地。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进