一、动态避障概述

1.1 什么是动态避障

动态避障,说白了就是让机器人在移动过程中,躲开那些会动的东西。

你想想看,一个扫地机器人在客厅里工作。沙发是静止的,这叫静态障碍。但你家猫突然跑过来,或者小孩把玩具车踢过来——这些会移动的物体,就是动态障碍。

我做了这么多年机器人控制,最深的体会是:静态避障是几何问题,动态避障是时空问题

为什么这么说?因为动态障碍物不仅占位置,还占时间。你得预测它下一秒在哪,然后提前规划路径。这不是简单的「看到障碍就绕开」,而是「看到障碍,算它轨迹,再决定怎么躲」。

核心定义:动态避障是指机器人在未知或部分已知的动态环境中,通过实时感知、预测和规划,安全避开移动障碍物并到达目标点的控制技术。

1.2 动态避障 vs 静态避障

这两者的区别,我习惯用一个比喻来解释:

  • 静态避障——就像你走在一个摆满家具的房间里。家具不动,你慢慢绕就行。
  • 动态避障——就像你在早高峰的地铁站里穿行。每个人都在动,你得不断调整步伐。

具体差异,我整理了一张表:

对比维度 静态避障 动态避障
障碍物状态 位置固定不变 位置随时间变化
规划方式 一次规划,执行即可 需要反复重规划
感知要求 单帧点云/图像即可 需要连续帧+速度估计
核心难点 路径最优性 实时性与安全性
典型算法 A*、Dijkstra、RRT DWA、TEB、MPC

嗯,这里要注意:很多初学者以为动态避障就是「跑得快一点的静态避障」。这是大错特错的。我在项目中遇到过一位同事,直接把A*的规划频率从1Hz提到10Hz,结果机器人还是撞上了行人。为什么?因为A*根本不知道行人会往哪走,它只是反复重新规划而已。

1.3 动态避障的核心挑战

做动态避障这么多年,我觉得真正的难点就三个:实时性、不确定性、环境动态变化。一个一个说。

1.3.1 实时性

机器人不能「想太久」。你想想看,一个行人朝你走来,你只有零点几秒做出反应。

我个人的经验是:动态避障的规划周期通常需要控制在50ms以内。超过100ms,基本就危险了。

但问题来了——传感器数据要处理、障碍物要检测、轨迹要预测、路径要规划、控制指令要下发。这一套流程下来,计算量非常大。

我的建议:不要试图在单个线程里做完所有事。把感知、预测、规划拆成独立模块,用流水线方式并行跑。我在AGV项目里就是这么干的,规划周期从120ms降到了35ms。

1.3.2 不确定性

这是最让人头疼的部分。

障碍物会怎么动?你不知道。传感器测到的位置准不准?你不知道。甚至机器人的自身定位都有误差。

我曾经在一个仓储机器人项目里踩过坑。激光雷达检测到一个叉车,位置误差大概10cm。我心想10cm嘛,绕一下就行。结果叉车实际速度比估计的快了20%,机器人绕到一半,叉车已经贴脸了。还好有急停,不然就撞上了。

避坑指南:永远不要相信「单一传感器」的测量值。我曾经因为只依赖激光雷达,结果在玻璃墙前面吃了大亏。后来我强制要求:动态障碍物的位置必须经过至少两种传感器的交叉验证。

处理不确定性,我常用的方法有:

  • 概率占用地图——不是「有/没有」障碍物,而是「有障碍物的概率是多少」
  • 卡尔曼滤波——融合多帧数据,平滑轨迹估计
  • 保守膨胀——把障碍物半径人为扩大20%,留出安全余量

1.3.3 环境动态变化

环境不是一成不变的。行人可能突然转身、车辆可能突然加速、门可能突然打开。

你想想看,如果环境变化的速度超过了机器人的反应速度,那任何算法都救不了你。

所以这里有个关键指标:环境变化率 vs 机器人反应率。我一般要求机器人的反应速度至少是环境变化速度的3倍以上。达不到?那就降速运行。

举个具体例子。我在做服务机器人时,设定了一个规则:

# 动态避障安全策略示例
if 障碍物速度 > 机器人最大速度 * 0.7:
    机器人速度 = 机器人最大速度 * 0.5  # 降速
    重新规划周期 = 30ms  # 提高规划频率
else:
    机器人速度 = 机器人最大速度 * 0.8
    重新规划周期 = 50ms

这个规则看起来很粗糙,但实际效果很好。说白了,就是环境越乱,机器人越要「慢下来、多看看」

知识体系总览

下面这张图,是我自己梳理的动态避障知识体系。每次带新人,我都会先让他们看这张图:

动态避障控制核心知识体系 动态避障 实时性 不确定性 环境动态变化 流水线并行 · 轻量化模型 概率地图 · 卡尔曼滤波 · 膨胀 降速策略 · 高频重规划 典型算法 DWA(动态窗口法) TEB(时间弹性带) MPC(模型预测控制) 核心目标:安全 · 实时 · 鲁棒

这张图把动态避障的核心脉络理清楚了。从三大挑战出发,到应对方法,再到典型算法,最后落到核心目标上。后面的章节,我们会逐一深入每个算法和实现细节。

好了,第一章就到这里。记住一句话:动态避障不是「躲」,而是「预判」。把这个观念刻在脑子里,后面的内容你会学得更轻松。


公众号:蓝海资料掘金营,微信deep3321