这道题问的是服务机器人怎么在动态环境里安全导航,核心是感知、预测、规划三个环节怎么联动,而不是单独讲某一个。我先给个框架:感知要准,预测要快且带不确定性,规划要能同时处理时间和空间两个维度。
先说感知。动态障碍物检测不能靠单一传感器,我通常会做激光雷达和视觉的融合。激光雷达用聚类或者点云分割提取位置和速度,视觉用YOLO或者RT-DETR这类检测器识别行人车辆,然后通过深度估计或者点云投影拿到3D框。融合这一步,卡尔曼滤波是经典做法,但最近像BEVFusion这种端到端的方案在遮挡场景下效果更好。关键是要区分静态和动态,比如连续帧算光流或者点云流,把背景滤掉,输出每个障碍物的位置、速度、类别,还有不确定性协方差。
然后是预测。预测不是猜一个轨迹,而是给出[[多模态]]的概率分布。短期预测,3秒以内,我用恒定速度模型加卡尔曼滤波,够快够稳;如果场景里有密集人群,比如商场或者医院走廊,就需要Social LSTM或者VectorNet这类模型来建模人和人、人和机器人之间的交互。长期意图预测我一般不做,除非是十字路口这种需要判断拐弯的场景,否则计算量不划算。预测层输出的核心是轨迹簇,每条轨迹带一个概率,这样下游规划可以选最安全的那条。
规划层是重头戏。没有一种方案能通吃所有场景,得根据场景选。TEB和DWA实时性好,适合低速、障碍物少的场景,比如扫地机器人;时空A*或者JPS在结构化环境里很准,比如工厂车间,但计算量跟时间维度成正比,场景一大就卡;MPC加社交力场模型能处理密集人群,但调参麻烦,需要滚动优化,更新周期100到200毫秒。实际落地我通常混合用:MPC做主规划器,处理预测轨迹的时空走廊,同时并行跑一个轻量的TEB做紧急避障,一旦碰撞时间小于阈值,直接切TEB。
这里有个坑:预测的不确定性怎么用。如果预测协方差很大,说明障碍物行为不可预测,比如小孩子突然跑动,那规划层就要把障碍物膨胀半径加大,或者主动降速。另一个坑是延迟补偿。从传感器采集到执行器动作,中间有几十毫秒延迟,我会用预测状态来匹配实际执行时刻,否则机器人看到的是过去的位置。
还有一个点值得提:如果算力受限,比如在室内服务机器人上,我会把复杂的预测模型按需触发。比如只有障碍物密度高于某个阈值才跑Social LSTM,否则就用恒定速度。这样能省算力,但代价是预测精度下降,需要规划层更保守。这其实是个取舍问题。
所以我的整体思路是:感知融合、预测带不确定性、规划分层混合。上线前我会特别关注失效降级,比如激光雷达坏了,视觉还能撑一下,但如果视觉也坏了,必须切到降速或者暂停,安全第一。