要从 A 点走到 B 点,先得知道哪里能走。本文讲清 SLAM 如何边走边建图,Dijkstra 与 A* 如何搜索最短路径,配置空间与全局局部两层规划如何应对真实世界,以及学习方法能补上哪一块。
核心要点
- SLAM 让机器人在未知环境中同时定位与建图
- A* 用启发式估计聚焦搜索方向,代价不高估时仍保证最优
- 全局规划给路线,局部规划实时避障,两者缺一不可
先有地图还是先有路径
要让机器人从 A 点走到 B 点,先得知道哪里能走。如果环境已知,可以直接在地图上规划;如果未知,机器人需要一边移动一边构建地图,同时定位自己在图中的位置,这就是同步定位与建图(SLAM)。
扫地机器人常用激光或摄像头配合里程计完成 SLAM,逐渐画出户型图;无人机在室内无卫星定位的环境下也依赖类似技术。地图通常区分空闲、占用与未知三类区域,规划只在已知区域上进行。
经典算法:Dijkstra 与 A*
把地图离散成网格后,寻路就成了图搜索问题。Dijkstra 算法从起点向外层层扩展,保证找到最短路径,但扩展方向没有偏好,效率较低。A* 算法加入启发式估计——优先考虑看起来离终点更近的节点,搜索速度大幅提升。
只要启发式估计不高估真实代价,A* 就能保证最优解。曼哈顿距离与欧几里得距离都是常见选择。在网格之外,还有概率路线图与快速扩展随机树等算法,擅长处理机械臂与飞行器这类高维空间。
现实比网格复杂
机器人有尺寸、有转弯半径,不能像棋子那样任意折返。因此规划常在配置空间中进行:把机器人缩小成一个点,同时把障碍物按机器人尺寸向外膨胀。清扫任务要求的则是覆盖率而非最短路径,需要设计弓字形遍历策略。
环境还会变化:椅子被挪动,行人突然出现。所以规划分为全局与局部两层,全局规划给出大致路线,局部规划实时避障。动态窗口法等方法直接在速度空间中挑选安全可行的下一步。
学习方法的加入
近年来强化学习也被用于局部避障与复杂地形导航,尤其在传统模型难以刻画的场景中。不过工程实践普遍采用混合方案:经典算法负责可靠的主干,学习方法处理感知与难以建模的部分。
常见问题
扫地机器人为什么有时反复走同一片区域?
通常是定位漂移或地图与实况不符造成的:轮子打滑让里程计累积误差,家具挪动让旧地图失效,传感器误判又让规划不断重来。提高定位精度、及时重定位与更稳健的覆盖策略,都能减少这类重复清扫。
本文为 AI 科普内容,仅用于知识普及,不构成任何技术选型、投资或职业决策建议。