动态障碍物怎么检测与规避?
服务机器人导航中感知、预测与路径规划策略详解
原题:在服务机器人导航过程中,如何有效检测并规避动态障碍物?请描述完整的感知、预测与路径规划策略。
Agent · vivo真题
回答与解析
一、感知层:动态障碍物检测
多传感器融合方案
- 激光雷达:3D点云聚类(Euclidean/Panoptic Segmentation),提取障碍物位置、尺寸、速度
- 视觉:YOLO/RT-DETR检测行人/车辆,结合深度估计或点云投影获取3D框
- 融合策略:卡尔曼滤波或深度学习方法(如BEVFusion),解决单传感器遮挡/漏检问题
动态特征提取
- 通过连续帧点云/图像计算光流或点云流,区分静态背景与动态目标
- 输出:障碍物位置、速度矢量、类别、不确定性协方差
二、预测层:轨迹推演
短期预测(<3s)
- 物理模型:恒定速度/加速度模型,结合卡尔曼滤波平滑
- 交互感知:Social LSTM/VectorNet,建模行人之间、行人与机器人的交互影响
长期意图(可选)
- 基于目的地估计的意图识别,用于复杂场景(如十字路口)
不确定性建模
- 输出多模态轨迹分布(GMM或采样轨迹簇),供下游规划使用
三、规划层:时空联合避障
主流方案对比
| 方案 | 特点 | 适用场景 |
|---|---|---|
| TEB/DWA | 速度-路径解耦,实时性好 | 低速、简单动态场景 |
| 时空A/JPS* | 显式搜索(x,y,t)空间 | 结构化环境、已知地图 |
| MPC+SFM | 滚动优化,可处理约束 | 密集人群、高动态 |
| Learning-based | 端到端或混合方法 | 数据丰富、复杂交互 |
关键设计
- 碰撞检测:将预测轨迹扩展为时空走廊(S-T图),检查与机器人轨迹的交集
- 动态重规划:100-200ms周期重新评估,紧急情况下触发纯反应式避障(如VFH+)
- 安全缓冲:根据预测不确定性自适应调整障碍物膨胀半径
四、系统优化
- 算力分配:轻量模型做前端检测,复杂预测按需触发
- 延迟补偿:感知-规划链路延迟补偿,用预测状态匹配实际执行时刻
- 失效降级:传感器失效时切换保守模式(降速或暂停)
学习建议
建议系统学习该知识点
口语版讲法(约4分钟)
- 动态障碍物避障的本质是时空联合的预测-规划博弈
- 感知层:多传感器融合与动态特征提取
- 预测层:短期物理模型+交互感知,输出多模态不确定性
- 规划层:TEB、时空A*、MPC的适用边界与混合策略
- 落地风险:延迟补偿、失效降级、算力分配
这道题问的是服务机器人怎么在动态环境里安全导航,核心是感知、预测、规划三个环节怎么联动,而不是单独讲某一个。我先给个框架:感知要准,预测要快且带不确定性,规划要能同时处理时间和空间两个维度。
先说感知。动态障碍物检测不能靠单一传感器,我通常会做激光雷达和视觉的融合。激光雷达用聚类或者点云分割提取位置和速度,视觉用YOLO或者RT-DETR这类检测器识别行人车辆,然后通过深度估计或者点云投影拿到3D框。融合这一步,卡尔曼滤波是经典做法,但最近像BEVFusion这种端到端的方案在遮挡场景下效果更好。关键是要区分静态和动态,比如连续帧算光流或者点云流,把背景滤掉,输出每个障碍物的位置、速度、类别,还有不确定性协方差。
然后是预测。预测不是猜一个轨迹,而是给出多模态的概率分布。短期预测,3秒以内,我用恒定速度模型加卡尔曼滤波,够快够稳;如果场景里有密集人群,比如商场或者医院走廊,就需要Social LSTM或者VectorNet这类模型来建模人和人、人和机器人之间的交互。长期意图预测我一般不做,除非是十字路口这种需要判断拐弯的场景,否则计算量不划算。预测层输出的核心是轨迹簇,每条轨迹带一个概率,这样下游规划可以选最安全的那条。
规划层是重头戏。没有一种方案能通吃所有场景,得根据场景选。TEB和DWA实时性好,适合低速、障碍物少的场景,比如扫地机器人;时空A 或者JPS在结构化环境里很准,比如工厂车间,但计算量跟时间维度成正比,场景一大就卡;MPC加社交力场模型能处理密集人群,但调参麻烦,需要滚动优化,更新周期100到200毫秒。实际落地我通常混合用:MPC做主规划器,处理预测轨迹的时空走廊,同时并行跑一个轻量的TEB做紧急避障,一旦碰撞时间小于阈值,直接切TEB。
这里有个坑:预测的不确定性怎么用。如果预测协方差很大,说明障碍物行为不可预测,比如小孩子突然跑动,那规划层就要把障碍物膨胀半径加大,或者主动降速。另一个坑是延迟补偿。从传感器采集到执行器动作,中间有几十毫秒延迟,我会用预测状态来匹配实际执行时刻,否则机器人看到的是过去的位置。
还有一个点值得提:如果算力受限,比如在室内服务机器人上,我会把复杂的预测模型按需触发。比如只有障碍物密度高于某个阈值才跑Social LSTM,否则就用恒定速度。这样能省算力,但代价是预测精度下降,需要规划层更保守。这其实是个取舍问题。
所以我的整体思路是:感知融合、预测带不确定性、规划分层混合。上线前我会特别关注失效降级,比如激光雷达坏了,视觉还能撑一下,但如果视觉也坏了,必须切到降速或者暂停,安全第一。
关键一句:算力受限时预测模型按需触发,复杂度与精度的取舍
面试官还可能这样问
- 问法 1 · 场景切入
我看你做过仓储机器人。假设机器人正在通道里送货,一个工人突然从货架后面走出来,你怎么让机器人及时停下来并绕开他?
- 问法 2 · 层层追问
机器人导航时动态障碍物怎么处理?……感知到障碍物之后,你如何预测它的运动?……那路径规划层怎么结合预测信息做避障?
- 问法 3 · 直球架构
请你设计一套服务机器人在动态环境中检测并规避障碍物的完整方案,从传感器融合、轨迹预测到路径规划,每个环节的关键技术和难点是什么?