10.3.1 动作约束与可行性检查
在一个由 VLA 驱动的机器人系统中,高层模型生成的是“倾向动作”(preferred action),而真正送到电机上的控制信号必须经过一层“安全外壳(safety shell)”。这一层的核心工作就是:给动作加上清晰的约束,并在执行前做可行性检查,必要时进行纠正或拒绝。
【图片占位:一张“VLA 输出 → 动作约束与可行性检查模块 → 机器人控制器”的框图,标出各类约束(关节、速度、碰撞、安全区等)】
10.3.1.1 动作约束
“动作约束”可以理解为:在机器人的状态 \(\displaystyle x\) 与控制输入 \(\displaystyle u\) 上定义的一组条件
\[ g_i(x, u) \le 0,\quad h_j(x, u) = 0 \]
只要不满足,就视为“不安全”或“不可执行”。
可以从几个层次来理解这些约束:
- 本体级约束(robot-level constraints)
来自机械结构和驱动能力,是最基础、最“硬”的约束:
- 关节位置范围:每个关节有最小 / 最大角度(或伸缩量),越界可能撞到机体或损坏丝杠。
- 速度与加速度上限:限制关节运动的最大速度、加速度和加加速度(jerk),避免机械冲击和超出驱动能力。
- 力 / 力矩上限:对末端执行器或者各关节输出的力矩做限制,协作机器人标准(如 ISO 10218 与 ISO/TS 15066)会对与人接触时的最大力、最大压力给出建议范围,以降低夹伤、撞击风险。(国际标准化组织)
- 工作空间与区域约束(workspace & zone constraints)
- 可达工作空间:根据机械结构,给出末端可达的体积区域;超出区域的目标位姿应当直接判定为不可达。
- 禁入区域(keep-out zones):例如人工作区域、精密仪器区域、危险设备附近;在规划时强制不生成穿越这些区域的轨迹。
- 速度分区:靠近人或狭窄环境时自动切换到低速区域;部分协作机器人控制器就是通过“安全区 + 限速”配置来满足标准。(sick.com)
- 任务级约束(task-level constraints)
- 姿态约束:比如端执行器抓杯子时要保持基本竖直,不让液体洒出;装配时保持插销与孔大致同轴。
- 接触约束:插入、打磨、擦拭等任务要求接触力在一定范围内,不得对工件或环境施加过大压力。
- 序列约束:某些动作必须在前置条件满足后才能执行(例如“只有抓取成功,才允许移动到远处放置”),可以在高层任务图或时序逻辑中显式表达。(h2r.cs.brown.edu)
- 舒适与质量约束(soft constraints)
这些约束不是“违法就报错停机”,而是进入代价函数,例如:
- 尽量减少频繁的大幅度关节摆动;
- 让运动轨迹更平滑、对人类观感更自然;
- 避免在用户附近进行“过于激烈”的动作。
在实现上,通常会把这些约束参数化并配置在机器人控制器或中间件中(很多协作机器人产品的“功能限制 / functional limits”页面就列出了电流、扭矩、速度的安全上限和相关模式)。(manual.doosanrobotics.com)
10.3.1.2 可行性检查
有了约束,还需要检查一个候选动作是否满足这些约束。典型流程可以理解为:
VLA 输出动作候选 \(\hat{u}\) → 可行性检查器 → 通过则执行,否则纠正 / 拒绝。
常见的可行性检查包括:
- 几何与运动学检查
- 关节约束检查:例如 VLA 输出的是关节增量 \(\Delta q\),先计算 \(q_{\text{new}} = q_{\text{current}} + \Delta q\),然后检查每个关节是否超出范围。
- 逆运动学可行性:当 VLA 输出末端位姿目标时,需要求解逆运动学。若无解,或者唯一解处在奇异位形附近,则认为该动作不可行。
- 路径内插检查:不仅要看起点和终点,线性插值或更细时间步的路径上,是否有中间状态违反关节或工作空间约束。
- 动力学与执行能力检查
- 根据当前状态与目标动作,估算所需关节扭矩、功率等,判断是否超出电机与驱动器的额定能力(这部分可利用动力学模型,也可用经验上限)。
- 对于高速操作或重载操作,尤其要检查制动距离和制动扭矩是否足够,否则在紧急停止时会出现“刹不住车”的风险。
- 碰撞与接触预测
- 运行一个简化的短时仿真(few steps look-ahead),利用当前环境的几何模型判断新的动作是否会导致与环境或自身发生碰撞、越过安全距离等。
- 一些工作会把形式化验证和时序逻辑(LTL)结合,利用“安全约束模块”在任务层就排除任何可能导致违反碰撞 / 区域限制的行为,使动作“先天安全”。(h2r.cs.brown.edu)
- 实时性考虑
可行性检查通常必须在毫秒级完成,因此不能用过于复杂的大规模仿真;工程上常采用:
- 预先离线生成查表(look-up table);
- 把检查问题转化为一个小规模的二次规划(QP),快速求解最近的可行动作;
- 对 VLA 输出只做局部微调,而不是从零重新规划。
10.3.1.3 违约处理
当某个候选动作违反约束或无法通过可行性检查时,系统需要有“违约处理策略”,而不是简单崩溃。常见做法可以分为三个层级:
- 投影 / 裁剪到安全集合(action projection)
最温和的做法是把不安全动作“拉回”安全区域,例如:
-
对速度、加速度进行裁剪(clipping);
-
用一个带约束的优化问题寻找距离原动作最近的安全动作:
\[ u^* = \arg\min_{u} |u - \hat{u}|^2 \quad \text{s.t. } g_i(x, u)\le 0 \]
这样可以最大程度保持 VLA 原意,同时满足安全条件。
-
- 切换到安全策略(fallback policy)
当动作严重违反约束,或连续多次无法找到可行修正时,系统应切换到预定义的安全策略,例如:
- 停止当前任务,缓慢收回机械臂至“安全姿态”;
- 对移动机器人执行原地制动,然后缓慢退回到安全区域;
- 不再接受新的自动命令,等待人工确认或重置。
- 解释与人机交互
对于具身智能系统,仅仅“拒绝执行”是不够的,还应向用户解释原因并给出建议:
- 例如:“我无法把箱子放在这个位置,因为会超出工作空间,请选择离机器人近一点的位置。”
- 有研究专门探讨如何用自然语言解释任务不可达或违反约束的原因,从而帮助非专业用户理解机器人局限。(Robotics Proceedings)
这一节与 4.4.2 中“语言作为约束”的思想呼应:高层语言中隐含的安全规范,最终会在动作层体现为清晰可检查的约束与违约处理逻辑。
10.3.2 碰撞检测与紧急停止机制
动作约束与可行性检查主要针对“事前预防”。然而现实世界总是有意外:某个物体突然闯入轨迹、传感器读数失真、人的干预不在模型预期之内。因此,还需要“事后防御”:一旦发生异常接触,要在极短时间内检测出来并采取紧急措施。
【图片占位:时间轴示意图:正常运动 → 外力接触 → 传感器检测 → 控制器触发碰撞事件 → 减速 / 停机。对比有/无紧急停止机制的区别】
10.3.2.1 被动碰撞检测
“被动”是指:机器人并不主动规划绕开障碍,而是在碰撞发生或即将发生时,通过本体传感器感知异常,从而触发反应。
典型的信息来源包括:
- 关节扭矩 / 电流残差
- 在理想无接触状态下,关节扭矩可以由动力学模型计算得到;实际测量的电机电流或扭矩与模型预测值之间的差异称为外力残差 。
- 当这类残差超过某个阈值、并且持续一定时间,就可以判定发生了非计划的接触或碰撞。大量工作使用基于关节扭矩传感器或电流残差的碰撞检测与碰撞定位方法。(ResearchGate)
- 工业协作机械臂中,“力限位”“冲击检测”等功能,往往正是基于这种方法实现。
- 末端力 / 力矩传感器
- 在末端安装六维力 / 力矩传感器,可以直接测量手爪受到的外力。
- 只要外力超过安全阈值,就可以触发“力控模式”或紧急停止,避免持续压迫人体或损坏工件。
- 行为模式异常检测
- 通过学习正常运行时的轨迹、速度、扭矩模式,构建典型分布;当实时数据出现明显偏离时,即可视为异常。
- 类似的思想也常见于传感器故障检测与预测性维护中(利用深度学习或统计模型识别异常模式)。(MDPI)
工程上,被动碰撞检测的设计关键在于:尽量快地检测真实碰撞,又要尽量少误报。 阈值过低会让系统频繁误停;过高则无法保证人机协作安全。
10.3.2.2 主动避障
“主动避障”是事前预防的一部分,但它通常运行在比 VLA 更低的一层,与安全直接相关,因此放在本节一起讨论。
- 环境感知与距离场
- 利用深度相机、激光雷达等传感器构建周围环境的点云或网格地图,并计算到障碍物表面的最小距离。
- 将机器人本体简化为若干碰撞几何体(球体、圆柱等),实时估算机器人各部分与环境之间的最小距离,并与安全距离阈值比较。
- 速度与距离耦合(speed & separation monitoring)
- 在协作机器人应用中,常用“速度与分离监控”:人与机器人之间距离越近,机器人允许的最大速度越小,当小于某个阈值时必须停止。相关原则在 ISO 10218 与 ISO/TS 15066 等标准中有明确讨论。(sick.com)
- 简单实现方式是基于激光扫描或安全光幕进行“区域触发”,高级实现则结合 3D 视觉与人体关键点检测动态估计人位置。
- 局部避障与轨迹修正
- 即使 VLA 给出的高层动作不考虑局部障碍,低层也可以利用局部规划器在短时间范围内进行微调,例如基于势场法、动态窗口法(DWA)等。
- 对机械臂,可以在约束优化中加入障碍距离约束,让每个控制周期生成的关节速度都在“远离障碍物”的方向上。
10.3.2.3 紧急停止
紧急停止(Emergency Stop, E-stop)是安全设计的最后一道防线,也是工业标准中最关键的要求之一。(Automate)
- 硬件级紧急停止
- 物理急停按钮、拉绳开关、安全继电器等属于“硬件链路”,一旦触发会直接切断电机动力 或使系统进入受控停机模式。
- 工程上通常采用双通道冗余设计:只要任一通道检测到急停信号,就会进入停机过程,并通过安全 PLC 或继电器确保不会被软件覆盖。
- 软件级紧急停止与安全监控线程
- 在机器人操作系统中,一般会有一个高优先级的“安全线程”,独立于 VLA 推理和普通任务调度,专门监控:
- 碰撞检测信号;
- 传感器严重失效、通信中断;
- 速度 / 位置越界;
- 语言层“立即停止”指令。
- 一旦条件满足,该线程向底层控制器发出“紧急停止”命令,优先级高于一切普通指令。
- 在机器人操作系统中,一般会有一个高优先级的“安全线程”,独立于 VLA 推理和普通任务调度,专门监控:
- 停止类别与停机策略
- 实际系统中,常区分“立即断电停机”和“受控减速后停机”两种类别,以兼顾安全性和机械寿命。
- 对具身智能机器人而言,还应考虑停机后的状态:是保持当前位置锁死,还是缓慢回到安全姿态,以及如何在语言层向用户说明“刚刚发生了什么”。
10.3.3 对传感器噪声、遮挡、失效的鲁棒性设计
具身智能系统高度依赖多种传感器:相机、激光雷达、IMU、关节编码器、力觉……这些传感器现实中会被噪声、遮挡、老化、故障等问题困扰。如果不做鲁棒性设计,VLA 决策再聪明也可能被“垃圾输入”误导。
这一节可以与 3.4(视觉工程考虑)以及 7.3(数据清洗与异常轨迹)形成呼应:前者强调“如何获得好输入”,本节强调“输入变坏时系统如何自保”。
【图片占位:一个状态机图:正常模式 →(轻微异常)受限模式 →(严重异常)安全停机;旁边标注不同传感器异常的触发条件】
10.3.3.1 传感器校验
校验的目标很简单:先判断“这路传感器是否还可信”,再考虑怎么用。
- 数值范围与物理一致性检查
- 对每类传感器配置合理的数值范围与变化速率:例如距离传感器不可能突然从 1m 跳到 -5m,图像亮度直方图不应长期为全零或全饱和。
- 利用简单的物理关系进行交叉校验:
- 轮速计与视觉里程计对比;
- IMU 测得重力方向与机器人姿态估计比对;
- 关节编码器与末端位姿之间的几何关系是否一致。
- 时序和刷新率监控
- 每条数据带时间戳,可以检测是否长期不更新(“卡帧”),或者更新频率突然下降(网络或驱动异常)。
- 对实时性要求高的控制回路,一旦传感器数据延迟或丢包超过阈值,应立即触发降级或停机。
- 故障检测与隔离(FDI)机制
- 在控制与自动化领域,多传感器故障检测与 Isolation(FDI)是一门成熟方向,常使用残差分析、统计检测或深度学习模型识别异常传感器。(MDPI)
- 关键思想是:与其直接信任某个传感器,不如先学一个“正常模式”的统计模型,偏离模型的传感器数据就被标记为可疑。
10.3.3.2 多传感器融合
多传感器融合不仅提升估计精度,更重要的是:当某一个传感器变差时,系统仍能依靠其他传感器维持一个“够用”的认知。
可以从三层来看融合方式:(科学直通车)
- 数据层融合(raw data fusion)
- 典型如把 LiDAR 点云投影到相机图像上,得到带语义标签的彩色点云;或者把多路麦克风信号合成波束。
- 此时 FDI 也可直接在原始数据上进行:例如同一物体在不同传感器视角下的几何形状应当一致。
- 特征层融合(feature-level fusion)
- 各传感器分别用神经网络编码为特征,再在后续网络中拼接或加权。
- 如果某个传感器被判定为异常,可以降低或清零它的特征权重,从而减小对决策的影响。
- 决策层融合(decision-level fusion)
- 不同传感器流水线各自给出独立判断(例如“前方 1.2m 有障碍物” vs “前方安全”),再由一个上层逻辑做投票或加权决策。
- 这种方式实现较简单,适合在已有“黑盒模块”基础上加一层安全逻辑。
在具身智能场景中,一种常见架构是:底层定位与地图构建由传统滤波或图优化方法负责(如 EKF / SLAM),上层 VLA 读取的是经过滤波、融合后的状态估计,从而减少大模型与传感器噪声直接打交道的机会。
10.3.3.3 降级模式
即便已经做了校验与融合,仍需承认:某些情况下,系统无法再安全地完成原定任务——这时就需要“降级模式(degraded modes)”。
- 分级运行模式设计
- 正常模式:所有关键传感器工作正常,允许全功能操作。
- 受限模式:某一路关键传感器退化或失效,但其余传感器仍可支撑基本安全;此时限制速度、缩小工作空间、停止高风险任务(如人与机器人紧密协作的操作)。
- 安全停机模式:多路传感器失效或定位严重不可靠,只允许执行“收回机械臂、关闭夹爪、停止移动”等保守动作,最终停机等待人工介入。
- 故障容错与控制重构
- 对移动机器人或多机器人系统,可以针对某类传感器(例如 LiDAR)设计专门的容错控制(fault-tolerant control),在检测到某个机器人雷达故障时,通过其他传感器或队友信息重构控制律。(Nature)
- 对单机器人来说,类似思路是:当视觉定位失效时,短时间内利用里程计与 IMU 进行“盲走”,同时减少动作幅度。
- VLA 层的自适应与通告
- 在高层,VLA 模型应当获得当前系统“健康状态”的摘要(例如一组 health flags),从而在降级模式下自动偏向更保守的动作策略。
- 与此同时,机器人应通过语言或 UI 通知用户:“目前视觉传感器受到遮挡,我会降低速度并限制动作,仅执行简单搬运任务。”
10.3.4 语言层面安全:禁止指令与约束模板
随着大语言模型融入机器人系统,越来越多的指令将直接以自然语言形式发给机器人。这极大提升了易用性,也带来了一个新问题:
并不是所有“听起来合理”的语言指令都是安全的。
例如,“把这箱电池扔到楼下垃圾桶”“你能推开那个人吗?”——这些都不应被机器人照单全收。近期有工作专门研究“利用语言模型拒绝违反社会规范或安全规范的指令”,用于机器人指令过滤与拒绝。(ACM Digital Library)
【图片占位:一张“用户语言指令 → 语言过滤 / 约束模块 →(安全指令)VLA → 动作”流程图,旁边标出“黑名单指令”“约束模板”“安全确认”三个组件】
10.3.4.1 黑名单指令
黑名单(deny-list) 是语言层安全最直接的手段:
- 显式关键词与模式
- 定义一批明显危险的关键词或短语,如“伤害”“攻击”“摧毁”“扔出窗外”等,在特定领域还可以加入专业危险动作(例如“解除安全围栏”“提升到最大速度运转”)。
- 一旦用户指令中出现这些模式,系统可以直接拒绝执行,或者进入更严格的审核流程。
- 语义级黑名单
- 关键词匹配容易被用户绕过,例如“轻轻地撞开那个人”和“让他离开”在词面上差别很大,但前者显然危险。
- 可以训练一个小型分类器或利用 LLM 对指令进行“安全性判定”,将其归类为“安全 / 不安全 / 存疑”,而不是简单字符串匹配。相关研究表明,LLM 在识别违反社会规范、暴力或违法命令方面具有一定的能力,可作为一层“道德过滤器”。(ACM Digital Library)
- 与物理约束联动
- 黑名单不应只停留在文本层面,而是与实际机器人能力结合,例如:
- 即使用户指令中没有出现“伤害”“攻击”等字样,只要推理后对应的是“用机械臂对人施加大力”,也应被判为黑名单。
- 这就需要把动作空间中的“禁忌区域”映射回语言空间,从而构造更智能的黑名单。
- 黑名单不应只停留在文本层面,而是与实际机器人能力结合,例如:
10.3.4.2 语言过滤
在黑名单之外,还可以通过更柔性的“语言过滤(language filtering)”来引导机器人行为落在安全范围内,而不是简单拒绝。
- 语言到形式化约束的映射
- 一类工作尝试将自然语言约束(如“不要进入红线以外的区域”“不要碰到桌上的易碎物品”)映射为时序逻辑(如 LTL)约束,然后在规划或控制时强制满足这些约束。(h2r.cs.brown.edu)
- 例如,“始终保持与人至少 50cm 距离”可以转为“在所有时间步上,人机距离 \(d(t) \ge 0.5\) m”的约束,规划器或安全芯片会自动剪除任何违反该约束的候选动作。
- 为 RL / VLA 提供文本形式的安全约束
- 在强化学习与决策模型中,可以把安全需求写成自然语言约束,让算法同时学习“如何完成任务”和“哪些事情不能做”。这样的算法会在策略优化时保证违反约束的概率控制在安全范围内。(NeurIPS 会议录)
- 对于 VLA 模型而言,可以把这些约束模板拼到输入 prompt 中,使模型在推理动作时自动考虑“禁止行为列表”。
- 指令重写与弱化
- 对于“危险但可重写”的指令,可以由语言前端先进行改写,例如:
- 用户:“把这瓶玻璃矿泉水砸碎试试。” 机器人重写为:“将瓶子轻放到桌上,并说明我无法安全地砸碎它。”
- 这类“指令重写”可以有效降低误用风险,同时保持对话体验自然(不会频繁出现硬拒绝)。
- 对于“危险但可重写”的指令,可以由语言前端先进行改写,例如:
10.3.4.3 安全确认
在很多场景中,指令并非明显非法或危险,而是存在歧义或潜在风险 。这时更合理的做法是:让机器人主动发起安全确认(safety confirmation),补齐上下文。
- 模糊指令的澄清
- 当任务目标不清晰、可能有多种实现方式,且某些方式存在风险时,机器人应回问:
- “你希望我把它‘丢掉’是指放进垃圾桶,还是放回原来的盒子里?”
- 这本质上是把“选择风险等级”的权力交还给用户,同时让人承担必要的决策责任。(arXiv)
- 当任务目标不清晰、可能有多种实现方式,且某些方式存在风险时,机器人应回问:
- 高风险操作的双重确认
- 对于某些“高能量、高影响”的动作(例如移动重物、靠近人脸、操作危险工具),可以强制采用“双确认”机制:
- 语言上用户确认一次;
- 物理按键或图形界面再确认一次(类似医疗设备和工业大机组的操作流程)。
- 系统还可以在确认前用自然语言解释风险,比如:“执行这个操作时,机器人需要高速运动并靠近你,请确认周围无人并站在安全区域。”
- 对于某些“高能量、高影响”的动作(例如移动重物、靠近人脸、操作危险工具),可以强制采用“双确认”机制:
- 对不可达任务的解释与替代方案
- 当一个命令在物理、法规或伦理层面不可执行时,直接说“不行”会让用户感到挫败。更好的方式是:
- 明确说明哪一条约束被违反(如安全距离、负载能力、法规限制);
- 给出至少一个安全的替代方案(如“我可以把物体放到窗台而不是扔出窗外”)。(Robotics Proceedings)
- 当一个命令在物理、法规或伦理层面不可执行时,直接说“不行”会让用户感到挫败。更好的方式是:
本节从动作层、碰撞层、传感器层到语言层,给出了一套多层次的安全与鲁棒性设计思路。与 6 章的“机器人控制基础”和 10.1–10.2 的“系统集成与评测”相结合,你可以把具身智能机器人想象成一个被多重安全壳包裹的系统:最内层是 VLA 的“聪明大脑”,外围是一层层约束、监控、降级与解释机制,共同保证它在真实世界中既“能干事”,又“不闯祸”。