3. 碰撞检测概述

在双臂机器人系统中,碰撞检测并不是一个孤立的算法模块,而是连接感知、规划、控制与安全策略的“判断中枢”。它要回答的核心问题非常具体:在给定的时刻或未来的某段时间内,机器人本体、末端执行器、工件、环境障碍以及两个机械臂之间,是否发生了或将会发生几何侵入?如果发生,侵入发生在哪里、深度多大、涉及哪些连杆或物体,以及需要以多快的速度响应。只有把这些问题定义清楚,后续的避障规划、轨迹修正和急停策略才有可靠的输入。

一、碰撞检测的定义与基本要素

从形式化角度看,碰撞检测是判断两个或多个几何体在空间中的交集是否为空的过程。对双臂机器人而言,参与检测的对象通常包括:左臂连杆集合、右臂连杆集合、末端夹爪或工具、被抓取工件、工作台、围栏、人类操作员以及其他动态障碍物。每个对象都需要一个几何表示,例如包围盒、凸包、网格或带安全距离的膨胀体。

碰撞检测的输出不只是“是/否”的布尔值。在工程实现中,它通常包含以下要素:

  • 碰撞对:哪两个对象或哪两个连杆之间发生了干涉,例如 left_link4 与 right_link2。
  • 碰撞位置:接触点或最近点在世界坐标系或关节坐标系中的位置。
  • 穿透深度:两个几何体相互侵入的距离,用于评估严重程度。
  • 最近距离:未发生碰撞时,两个对象之间的最小距离,用于安全裕度判断。
  • 时间信息:碰撞发生在当前时刻,还是在未来轨迹的某个时间点。
碰撞检测的本质是“几何查询 + 时间推理”。几何查询回答“现在是否相交”,时间推理回答“按当前轨迹运动,未来是否相交”。

二、碰撞检测的分类

根据不同的维度,碰撞检测可以分为多种类型。理解这些分类,有助于在双臂机器人系统中选择合适的算法和部署位置。

分类维度 类型 典型含义 双臂机器人示例
按时间 静态检测 固定位姿下判断是否相交 装配前检查两臂当前姿态是否干涉
按时间 动态/连续检测 沿轨迹或时间步判断未来碰撞 双臂协同搬运时预测轨迹交叉
按几何 离散检测 在离散采样点上做相交测试 每个控制周期检查一次
按几何 连续检测 考虑扫掠体,避免漏检 高速运动薄壁工件防穿透
按对象 自碰撞 机器人自身连杆间碰撞 左臂与右臂、臂与本体
按对象 环境碰撞 机器人与外部物体碰撞 与工作台、围栏、人
按精度 粗略检测 包围盒/球体快速筛选 实时性要求高的预筛选
按精度 精确检测 网格/凸包精确求交 关键装配段精细校验

在双臂系统中,自碰撞检测尤为关键。由于两个机械臂共享同一个基座和工作空间,它们之间的干涉概率远高于单臂机器人。常见的做法是先用包围球或 AABB 做快速排除,再对可能相交的连杆对进行精确检测。

三、性能指标:不只是“快”

评价碰撞检测算法时,不能只看单次查询耗时。对机器人系统而言,以下指标共同决定它是否可用:

  • 检测精度:是否漏检、误检。漏检会导致真实碰撞,误检会频繁触发急停或规划失败。
  • 查询速度:单次检测耗时,通常要求满足控制周期,例如 1 kHz 控制下需在 1 ms 内完成。
  • 可扩展性:对象数量增加时性能是否稳定,例如从 2 个臂扩展到 4 个协作臂。
  • 内存占用:几何模型和层次包围盒的存储开销,嵌入式控制器上尤其敏感。
  • 数值稳定性:在临界接触、薄壁、共面等情况下是否稳定。
  • 安全裕度支持:能否方便地设置安全距离和膨胀量。
实际工程中常用“两级策略”:第一级用包围盒/球体做快速筛选,第二级只对少量候选对做精确求交。这样可以在精度和速度之间取得平衡。

四、碰撞检测在机器人系统中的位置

碰撞检测位于感知与执行之间,是规划器和控制器共同依赖的基础服务。可以用下面的信号与数据流关系来理解它在系统中的位置。

碰撞检测在双臂机器人系统中的位置 感知层 关节编码器 / 视觉 / 力觉 环境点云 / 工件位姿 状态与几何建模 正运动学 / 连杆位姿 包围盒 / 网格 / 膨胀体 碰撞检测核心 粗筛:AABB / 包围球 / OBB 精检:凸包 / GJK / 网格求交 输出:碰撞对 / 距离 / 穿透深度 运动规划 避障轨迹生成 双臂协调约束 实时控制 轨迹跟踪 力矩/位置指令 安全监控 急停 / 减速 / 回退 安全距离阈值 执行机构 左臂 / 右臂伺服 夹爪 / 工具 状态反馈:实际位姿 / 速度 / 接触力 碰撞检测为规划提供可行性约束,为控制提供实时保护,为安全监控提供触发依据 典型周期:规划层 10–100 ms,控制层 1–10 ms,安全层 1 ms 以内

从图中可以看出,碰撞检测向上承接感知与状态估计,向下服务规划、控制与安全监控。它既不是单纯的“避障算法”,也不是只属于规划器的内部功能,而是一个跨层的基础服务。在双臂系统中,由于两个臂的运动相互耦合,碰撞检测还需要与协调规划器紧密配合,实时更新双臂之间的相对位姿关系。

五、典型场景与常见误区

以一个双臂协同装配场景为例:左臂持工件,右臂持拧紧工具,两者需要在狭小空间内完成对准。此时碰撞检测需要同时处理三类关系:左臂与右臂之间的自碰撞、工具与工件之间的接触检测、以及双臂与环境之间的安全距离检测。如果只做静态检测,可能在轨迹中间段漏掉瞬时干涉;如果只做粗略包围盒检测,又可能把正常接触误判为碰撞。

常见误区一:认为“碰撞检测就是避障”。实际上,碰撞检测只负责判断和报告,避障策略负责决策和修正。误区二:只关注速度而忽略精度,导致漏检。误区三:把安全距离和碰撞阈值混为一谈,前者用于预警,后者用于急停。

因此,在系统设计时,应明确碰撞检测的输入输出接口、更新频率、几何精度等级和安全阈值,并将其作为独立模块进行测试与验证。只有这样,双臂机器人在复杂环境中的运动才能既高效又安全。