ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

物理AI机器人安全:从轨迹安全到意图安全,四层防护如何落地

物理AI机器人安全:从轨迹安全到意图安全,四层防护如何落地

2026年开年的那场国际消费电子大展,我在现场最大的感受不是“机器人真多”,而是“物理AI”这个词几乎霸占了所有主论坛的标题。展台上到处是抓取水杯的机械臂、行走的人形机器人、自动避障的四足平台,围观的人很多,喝彩声也不小。

但真正让我后背发凉的,不是这些demo多惊艳,而是我亲眼看到一台人形机器人在互动演示时,突然朝观众方向迈出一步超出预设轨迹的大动作。现场被安全围栏拦住了,观众只是退了几步,没出事。可那一刻我心里冒出一个问题:物理AI确实给了机器人一个“灵魂”,一个能理解世界、能自己拿主意的“灵魂”,但这条“灵魂”的安全带,整个行业真的系好了吗?

这篇文章不聊展会上谁家产品又刷了分,而是想认认真真拆一下物理AI机器人安全这个话题:为什么传统的工业机器人安全体系不够用了,真正可落地的“灵魂安全带”应该长什么样,以及我们自己动手给一台具身AI机器人做安全兜底时,踩过的坑和总结出来的参数、代码、流程。


1. 物理AI到底在热什么,为什么它把“安全”二字顶到了风口浪尖

1.1 物理AI不是新的“ChatGPT”,它是让机器人真正“上手干活”

这几年大家谈AI,谈得最多的是大语言模型,是“能聊”。但聊得再好,它也只是在数字世界里打转。物理AI不一样,它要解决的是让机器人在真实的物理世界里“动手干活”:识别面前的东西是什么、判断怎么抓、算好路径、执行动作,然后根据传感器反馈实时调整。

你可以把它理解成把“眼睛”“小脑”“脊髓”和“肌肉”全部打通。大语言模型负责“理解意图”,视觉模型负责“看懂场景”,运动控制模块负责“执行动作”,而世界模型负责“预测接下来会发生什么”。这几样东西拼在一起,机器人才能从“会表演”变成“会工作”。

所以你会看到,展会上的机器人不再只是走过去、挥挥手、说句“你好”,而是能自己开冰箱、拿可乐、递给旁边的人,甚至能完成叠衣服、拆快递这种对柔性物体要求很高的任务。背后的技术路线也很清楚:端到端策略学习、模仿学习、强化学习配合大规模仿真,再加上推理算力的大幅提升,这些都在过去两年集中爆发。

1.2 通用机器人带来的安全缺口:从“轨迹安全”到“意图安全”

传统的工业机器人是怎么保证安全的?核心思路是“告诉它一条固定的轨迹,不许偏”。机械臂安装在围栏里,程序写死了路径,工作范围画好了线,人不能进去。传感器、安全PLC、急停按钮、光栅这些硬件构成了一个闭环:只要机器人离开允许区域,立刻停机。这套体系管了工业界四十多年,很成熟,但它的前提是:机器人做的事是预先定义好的,行为是确定性的。

物理AI机器人完全不是一回事。它没有固定轨迹,它在每一帧都在根据视觉输入重新计算下一步。同一个桌面上杯子的位置放偏了五厘米,它这一秒的动作就和上一秒不一样;旁边突然走过一个人,它可能会改变路径,也可能不会。判断“该不该改变动作”这件事,本身就是AI的决策范畴。

这就把安全模型从“轨迹安全”升维成了“意图安全”:你要限制的不再是某一条路径,而是AI整个决策输出的边界。怎么让一个拥有自主学习能力的系统,永远不越出那个“绝不伤人、绝不破坏设备”的红线,这是物理AI时代安全设计最核心,也最棘手的问题。

1.3 展会上那个让我后背发凉的瞬间

回到开头那个场景。那台人形机器人做出的“超预期大动作”,事后复盘可能只是视觉识别出现了一次短暂的误判,或者运动规划的某个参数没设好。但在现场,那一瞬间根本来不及分析原因,所有人第一反应就是“它要过来了”。

肉眼看AI机器人安全和不安全,往往就是毫秒级、厘米级的差别。传统工业机械臂伤人,通常是因为人误入了它的工作区,责任边界是清晰的。物理AI机器人伤人,可能是它“自己觉得”前方没障碍物,可能是它的力控阈值设高了,也可能是它在几个候选动作里随机挑了一个不合适的。链条变长,不可控因素变多,出事的模式也会复杂得多。

这也是为什么我一直跟团队讲:物理AI的火爆是好事,但越是在这种“全行业All in”的热潮里,越要有人冷静地把安全当成核心架构来设计,而不是发布会上用来点缀的一句口号。


2. 机器人的“灵魂安全带”到底是什么:四层安全架构

很多朋友问我,给物理AI机器人做安全,是不是装个急停按钮就行了?我的回答是:急停按钮只是最后一道物理保险,而“灵魂安全带”是一整套从硬件到算法、从实时控制到运营制度的多层体系。我习惯把它拆成四层来看。

2.1 第一层:硬件本体安全,物理的底线不能靠软件兜

软件永远可能出bug,模型永远可能误判,所以最底层一定是不依赖任何AI代码的物理机制。

关节层面的安全要素包括这几项:首先是关节限位,不管是机械限位块还是电气软限位,必须保证机械臂的每个关节只能在物理允许的角度范围内运动;其次是抱闸机制,伺服电机在断电或者急停触发时,通过制动器把关节锁死,防止机械臂因为重力坠落砸伤人;再就是力矩传感器和电流检测,它们用来感知机器人当前受到的外部力矩。如果超出了设定阈值,说明大概率撞到东西了,系统必须立刻做出反应。

这一层设计的核心原则是“独立”。安全相关的物理器件不能和AI主控共用同一套感知链路。你可以把AI芯片想象成司机,把安全硬件想象成刹车系统。好车的刹车系统不会依赖司机“判断”要不要刹,而是只要油门和刹车踏板冲突,或者碰撞传感器被触发,物理层面直接做动作。机器人的硬件安全层就是这个“刹车系统”,它的触发链路越短越好,最好完全绕开AI决策。

2.2 第二层:安全控制回路,和AI芯片“物理隔离”的守护者

有了硬件保障还不够,因为机器人总要正常运转,你不能让它动不动就断电抱死。所以第二层需要一套独立于AI运算的安全控制回路。

最常见的设计是:机器人主控(跑视觉模型、大模型、运动规划的高算力芯片)是一套系统,安全PLC(可编程逻辑控制器)是另一套系统。它们之间可以通信,但安全PLC拥有最终的“一票否决权”。AI主控发出“关节目标位置A”,安全PLC会实时检查这个A是否落在合法的运动空间内、速度是否超限、力矩是否超限。如果合法,放行;不合法,要么截断修改,要么触发停机。

这两套系统必须物理隔离,也就是不能共用同一个计算芯片、不能共用同一块内存、最好连电源都分开。原因很简单:AI系统的复杂度太高了,高算力芯片散热大、负载重,一旦死机、过热、被电磁干扰,不能把安全功能也一起带走。

在实际项目中,安全回路还要定义停机类别。我一般会把急停和关键异常处理成“立即停机”,对应的是关断动力电源并机械抱闸;把速度超限处理成“安全停止”,让机器人可控地减速停止;把一些非紧急的边界接近处理成“安全限速”,不停止但强制降低速度。不同场景用不同等级,既保证安全又不过度打断生产。

2.3 第三层:AI决策安全,给大模型输出加一道合法性闸门

这层是我个人认为物理AI安全里最值得投入研发的部分,也是很多团队最容易忽略的。

现在的物理AI机器人,编队的“大脑”很多时候是一个大模型:给它一个自然语言指令“把桌上那个红色杯子拿过来”,它输出一个行动计划,比如“移动到桌前→伸出右手→抓取→收回→放下”。这套流程看起来智能,但大模型的本质是概率预测,它给出的计划可能在某些极端情况下完全不合理。比如视觉被光线干扰,把窗户上的倒影当成桌子,然后计划穿墙“走过去拿杯子”。

所以不能直接让大模型的输出控制电机。必须在它前面加一道“AI决策与行为合法性检查器”——我更喜欢叫它“闸门(Safety Gate)”。闸门接收大模型输出的原始动作意图,用一套确定性规则去做合法性校验:位置在不在工作空间内、速度在不在上限内、力控目标在不在安全范围、当前机器人状态允不允许执行这个动作、动作的下一步会不会让末端执行器进入禁止区域。

闸门的设计原则是“规则必须简单、可解释、可测试”。不能用另一个AI去约束这个AI,那样只是概率对概率,安全系数还是不可控。规矩就是规矩,是写死在代码里的边界条件。

2.4 第四层:运营与制度安全,最后一道防线永远是人

前几层都是技术手段,但任何技术系统都有失效的可能,所以最后一道安全网必须是人为操作层面的规范和制度。

比如远程急停:机器人在无人值守状态下运行,操作员手里必须有一个能随时切断动力的物理按钮,这个按钮放哪、谁能按、按下去之后怎么恢复,都要有明确流程。再比如安全围栏和警示区域:即使机器人再智能,它也不能完全理解人类社会的所有约定俗成,物理围栏仍然是最直接的安全承诺。还有日志审计:安全相关的所有事件——谁下的指令、AI输出了什么、闸门拦截了什么、硬件传感器检测到什么异常——都要完整记录留存,因为一旦出事,必须有据可查。

这些内容听起来不像“技术”,但现实中它们往往比算法还重要。我们调试机器人时最崩溃的一次,不是模型翻车,而是操作员在未确认机器人处于安全状态时手动伸进围栏去扶一下机械臂,差点被夹住。制度设计出来不是给谁添麻烦,它是用来兜住所有人性弱点的。


3. 实操落地:给一台上位机+具身AI机器人系好安全带

理论说了不少,来点实际的。我以我们团队做的一个模拟项目X为例,这是一台由上位机(跑视觉和运动规划,可以是高算力工控机)控制六个关节机械臂的具身智能原型机。下面把这些安全措施怎么落地,分步拆开讲。

3.1 整体架构与硬件选型,安全PLC和力控关节怎么搭

硬件层面我们坚持几样东西不省:安全PLC一个,每路动力电源独立可控;六维力矩传感器安装在腕部,关节电机驱动自带抱闸;整体加一个独立于上位机的硬件急停回路。上位机通过工业以太网把运动指令发给伺服驱动器,同时把同样的指令发给安全PLC做检查;安全PLC另接急停按钮、围栏门磁、光栅传感器。

从选型角度,有一个经验:动力电源分配要做成分路独立控制。不要用一把总闸控制所有关节,而是每个关节或者每组关节都有独立继电器,安全PLC可以按需切断某一部分动力。这样如果只是某个关节力矩异常,不用整机断电,避免“一停全停”导致机械臂失控坠落的风险。

这句话可能有点反直觉:有时候“全停”反而更危险。比如机械臂正举着东西,你把它所有关节同时断电,它会整个砸下来。更安全的做法是对抗重力的关节保持通电抱闸,先锁住姿态,再派生出其他异常停机流程。

3.2 规则闸门:约束大模型输出的行为合法性检查器

这里贴一段闸门的示意代码,实现思路是通用的,语言也不重要,关键是这段逻辑跑在AI输出之后、电机指令之前,并且由独立于模型推理的常规CPU执行。

class SafetyGate: def __init__(self, joint_limits, workspace_bounds, max_speed, max_force): self.joint_limits = joint_limits # {joint_name: (lower, upper)} self.workspace_bounds = workspace_bounds # 笛卡尔空间边界 self.max_speed = max_speed self.max_force = max_force self.last_valid_state = None def validate(self, ai_action: dict, robot_state: dict) -> bool: # 如果AI没有输出有效动作,直接拒绝 if not ai_action or "joint_positions" not in ai_action: self._reject("empty_action") return False # 1. 关节位置边界检查 for joint, cmd in ai_action["joint_positions"].items(): low, high = self.joint_limits.get(joint, (None, None)) if low is None: self._reject("unknown_joint") return False # 留出安全余量,不允许贴着极限运动 margin = 0.02 # 弧度 if not (low + margin <= cmd <= high - margin): self._reject(f"joint_limit_exceeded:{joint}") return False # 2. 速度与加速度边界 for joint, cmd_pos in ai_action["joint_positions"].items(): current_pos = robot_state["joint_positions"][joint] cmd_vel = abs(cmd_pos - current_pos) / robot_state.get("dt", 0.02) if cmd_vel > self.max_speed * 1.05: self._reject(f"speed_over_limit:{joint}:{cmd_vel:.3f}") return False # 3. 输出力矩目标边界 if ai_action.get("force_target") is not None: if abs(ai_action["force_target"]) > self.max_force: self._reject("force_over_limit") return False # 4. 笛卡尔空间边界检查(通过正运动学计算末端位置) ee_pos = fkine(ai_action["joint_positions"]) # 正运动学函数 if not in_bounds(ee_pos, self.workspace_bounds): self._reject("ee_out_of_workspace") return False # 全部通过,更新最后有效状态 self.last_valid_state = robot_state return True def _reject(self, reason: str): # 这里要做三件事:记录日志、通知安全PLC、拒绝下发 log_security_event(reason) notify_safety_plc(reason)
需要强调的是,这套闸门的代码本身不是安全保险的终点,它至少要做到可审计:每次因为什么原因拒绝,都要有时间戳、有AI原始输出快照、有当前机器人状态快照。否则事后根本没法复盘,到底是模型抽风还是规则太严。 ### 3.3 实时守护:监督看门狗、急停回路与异常检测 规则闸门管“要不要执行”,但还缺一个“正在执行时万一出问题”的实时守护。这部分我用一个安全看门狗进程来实现。 看门狗独立于模型推理线程运行,固定周期比如5毫秒读取一次机器人状态。它做这些事:检查上位机主程序是否还在正常运行(通过心跳信号),检查关节反馈速度是否与指令速度偏差过大,检查力矩传感器读数是否突变,检查是否收到安全PLC的急停信号。任何一个异常触发,它不经过AI,直接把异常标志位发给安全PLC,安全PLC再按预定的停机策略执行动作。 异常检测里最容易漏的是“传感器数据本身异常”。实战中遇到过编码器跳数、力矩传感器温漂导致零漂、网线松动导致通信延迟抖动。这些如果没做数据健康度检查,会出现更危险的情况:传感器给出一个“看起来很安全”但实际错误的数据,AI基于错误数据规划出一个危险动作。 我的建议是所有关键状态量都要配一个“数据新鲜度”校验。通信中断超过10毫秒就视为异常,传感器数值超过物理常识范围直接置无效,连续多个周期数值未变要怀疑是不是卡死了。安全系统最怕的不是异常多,而是异常被当成正常。 ### 3.4 参数调优:力矩、速度、功率、工作空间边界怎么设 最后这一节给几个实际项目总结的调参经验,可以直接当参考起点用,但还是那句话,具体数值必须结合你机器人的机械结构和任务场景来验证。 力矩限制:我习惯分两级。第一级是“碰撞检测阈值”,腕部力矩传感器的数值突然在单个控制周期内跳变超过3-5牛米时,判定为碰撞;第二级是“长时间持续力矩阈值”,比如持续1秒超过末端额定负载的120%,判定为堵转。碰撞检测阈值要足够灵敏,但又不能灵敏到正常接触工件时误报。 速度空间:人机协作场景下,我倾向于把末端执行器的线速度限制在每秒250毫米以内。这个值是参考,但设计逻辑是:在近距离人机共处时,一只中等体型的机械臂以25厘米/秒速度移动,人体即使没有准备,反应时间也能覆盖大部分风险。远程遥操作或者隔围栏工作时可以放开,但要通过安全PLC切换速度等级。 工作空间:不要等到建模阶段再约束,直接在机器人控制软件里把笛卡尔边界写死成凸多面体,末端执行器任何时候不得越界。这个边界要比物理围栏内缩至少10-15厘米,相当于给围栏本身再留一道软冗余。 功率限制:很多团队只看力矩和速度,忽略了功率。大功率冲击的破坏力,跟“力大不大”是两回事。我做功率监控时,会按关节电机额定功率的150%设一个瞬时上限,超过持续100毫秒就触发降功率或者停机。这个参数要配合散热设计,因为频繁高功率运行如果只触发停机而不报警,散热风扇还在吹,机械结构可能已经疲劳了。 --- ## 4. 常见问题与真实踩坑记录:那些差点出事的现场 写这篇文章之前,我把团队过去一年跟安全相关的异常记录翻了一遍,挑了四个最有代表性的问题。每一个都是真金白银买回来的教训。 ### 4.1 刹车延迟:指令已经停了,关节为什么还在冲 现象:AI输出急停指令,控制代码也确实执行了,但机械臂末端还是往前多走了很大一段距离,差点怼到人。 排查后发现原因出在“指令停了,但速度没停”。急停指令发给伺服驱动器,驱动器开始减速,但减速需要时间,从高速到完全静止依然要走一段距离。有些关节在负载大时,惯性会带着它继续滑。 解决思路:急停不是只发一个“stop”指令,而是要结合当前速度计算刹车距离。如果当前速度过高,必须启用更激进的安全停止流程:先反方向施加制动转矩,同时抱闸在转速低于安全转速时再介入。我们最终在安全PLC里加了一个“速度-位置联合监控”逻辑:如果预测刹停位置会超出工作空间边界,强制在边界前触发机械抱闸。 ### 4.2 sim2real安全差距:仿真里稳如老狗,真机一秒撞墙 现象:在仿真环境里跑了上万次测试,碰撞率是零。上了真机,第一次完整任务跑下来,机械臂就在一个特定位置撞到旁边的工作台。模拟器里那个位置明明是安全的。 后来分析,原因并不复杂:仿真的夹具模型精度不够,实际夹具比模型突出两厘米;而且真机的关节有微小回差,在某个姿态下累计误差让末端多偏了三厘米。仿真里差两厘米没事,现实里两厘米就是碰撞。 所以安全测试不能迷信仿真,尤其是物理边界相关的参数。我现在的做法是把仿真结果全部打八折:仿真里测出来100毫米的安全距离,真机就按80毫米去设计;仿真里碰撞率1%,那就当它真机有5%的风险去加围栏和急停。再就是真机要做“边界扫描测试”,在低速模式下手动把机器人推到工作空间各个极限位置,确认软限位触发正常,再让AI自主运行。 ### 4.3 安全规则写得太死,机器人不敢动了,怎么办 这是安全闸门上线后立刻遇到的问题:误报率高到离谱。规则越严格,机器人越容易拒绝执行,最后频繁停机,运维同事抱怨“这机器人没法干活了”。 问题的核心不是“规则该不该严”,而是“规则和任务之间的分层没做好”。后来我们把场景分成三档:完全自主无人模式、人机协作模式、人工遥操作模式。在不同档位下,对速度、力、工作空间的约束分别放宽或收紧。完全自主模式里,机器人可以全速跑,但工作空间边界极小,而且任何异常直接停机;人机协作模式下速度降一半,力矩阈值降到额定60%,碰到人就立刻反向退缩;人工遥操作模式下速度更低,但允许末端进入一些自动模式下禁止的狭小空间,因为人类操作员有判断力。 分层之后误报率下降了一个数量级。安全系统不是要让机器人什么都不能干,而是让它在明确的边界内大胆干活。 ### 4.4 影响范围分析与落地检查清单 物理AI机器人的安全,影响范围远不止研发实验室。说几个我们实际感受到的连锁影响: 团队配置上,原来算法团队只管刷数据、提精度,现在必须新增安全工程师角色,这个角色不归算法负责人管,直接对项目总负责人汇报,有权限驳回任何未过安全评审的模型版本。供应商选型上,安全PLC、力矩传感器、带抱闸的电机,这些硬件的好坏直接决定安全方案的上限,不能只看算力芯片多强。运维流程上,操作员必须做安全培训、定期巡检机械限位和急停按钮、每天验证一次安全回路是否正常。数据合规上,日志审计系统要能追溯到每一次安全事件的完整链路,这件事越早做越省钱。 落地检查我一般用一张清单,每次机器人上线前逐项确认: - 急停按钮是否在操作员随时可触及的位置,按下后是否完全切断动力 - 安全PLC的上电自检是否通过,抱闸在断电时是否自动生效 - 软限位与机械限位是否同时配置,软限位是否预留冗余空间 - 规则闸门对非法指令是否会记录完整日志,日志是否包含AI原始输出 - 看门狗心跳周期是否低于实际控制周期,通信中断后机器人是否进入安全状态 - 无人值守模式下是否配备远程急停手段,且通道独立于主通信链路 - 工作空间边界是否比物理围栏内缩,传感器数据是否做新鲜度校验 --- ## 5. 写在最后:安全不是成本,是物理AI时代的第一行代码 我不是反对机器人变得更聪明。恰恰相反,我是坚定的物理AI支持者,我比谁都希望看到机器人能真正走进家庭、走进工厂、走到人类身边。 但正因为如此,我才特别强调安全架构要从第一天就长在系统里。物理AI给了机器人一颗会思考的“灵魂”,可灵魂再强大,也不能让它驾驶着一辆没有刹车的车在人群里飞驰。所谓“灵魂安全带”,不是什么阻碍创新的紧箍咒,它恰恰是让创新能走得更远、走得更稳的那条底线。 我个人在项目里体会到最深的一件事是:安全方案设计得好不好,不看它拦截了多少次危险,而看它在保证了安全的同时,还给了机器人多少自由发挥空间。好的安全带,系久了你会忘记它的存在,但它会在真正危险的那一刻,成为你唯一信任的东西。 最后分享一个我们定下来的小原则:宁可在演示时让机器人因为安全闸门拒绝某个动作而显得“笨一点”,也不能让它为了显得聪明而去硬闯一个没有验证过的边界。做物理AI,先学会敬畏物理,再谈智能。
RELATED READING

延伸阅读

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