连载文章,长期更新,欢迎关注:
环境感知就是机器人利用传感器获取自身及环境状态信息的过程,自主导航机器人的环境感知主要包括实时定位、环境建模、语义理解等,下面具体讨论。
11.2.1 实时定位
定位其实就是在回答图11-1中机器人提出的第1个问题“我在哪”,更确切点说应该是实时定位,因为机器人不仅要知道自身的起始位姿,在导航过程中机器人实时位姿也必须要知道。实时定位可以分为被动定位和主动定位两种,被动定位依赖外部人工信标,主动定位则不依赖外部人工信标。
1.被动定位
以GPS为代表的室外被动定位方法几乎应用到了生活的方方面面,GPS通过多颗卫星实现三角定位。对于一些定位精度要求特别高的场合,会在地面搭建信辅助基站来提高GPS的定位精度,即差分GPS。
当卫星信号受到遮挡时,GPS就无法使用了。因此在室内通常会借助移动网络或者WiFi进行定位,在定位精度要求更高的场合会使用UWB进行定位。这些室内定位方法其实与室外卫星定位方法的原理是一样的,都是通过外部基站提供的信标进行三角定位。在一些像物流仓储这样的特殊场合,会在环境中放置很多人工信标(比如二维码、RFID、磁条等),机器人移动过程中检测到这些信标时就能获取相应位姿信息。
这些被动定位技术通常会再结合IMU、里程计等进行融合以获得更稳定更精确的定位效果。
2.主动定位
被动定位有诸多缺点,一方面是搭建提供人工信标的基站价格高昂,另一方面是许多场合不具备基站搭建条件(比如宇宙中的其他星球表面、地下深坑、岩洞等),这时候主动定位就凸显优势了。
所谓主动定位,就是机器人依靠自身传感器对未知环境进行感知并获取定位信息,也就是说主动定位不需要依赖外部人工信标。目前主动定位技术以SLAM为主要代表,即同时进行建图和定位。关于SLAM部分的内容请参考前面相关章节,本章讨论的侧重点在导航上面。SLAM导航方案由建图(mapping)、定位(localization)和路径规划(path planning)3大基本问题组成,这3大问题互相重叠和嵌套又组成新的问题,也就是SLAM问题、导航问题、探索问题等,如图11-3所示。
图11-3 建图、定位与路径规划的关系
目前在商用场合中通常采用SLAM重定位模式来进行定位,即先手动遥控机器人进行SLAM环境扫描并将构建好的地图保存下来,然后载入事先构建好的离线地图并启动SLAM重定位获取机器人的实时位姿,大多数SLAM算法都支持这两种工作模式(SLAM建图模式和SLAM重定位模式)。比如Gmapping在SLAM建图模式时将构建出的地图保存为*.pgm和*.yaml文件,然后利用map_server功能包载入*.pgm和*.yaml文件并发布到ROS话题,最后SLAM重定位模式(这里通常为AMCL算法)利用当前传感器信息与地图信息的匹配程度来估计位姿。同样ORB-SLAM、Cartographer等也是类似的过程,只是各个算法在位姿估计问题的处理细节上有所不同。
但在外星球表面、荒野、岩洞等不便于人工手动遥控建图的情况下,就需要机器人自发进行探索、建图和定位了。单机器人对未知环境的探索过程,如图11-4所示。机器人在未知环境中启动时,依靠探测距离有限的传感器仅能获取一小片环境地图;接下来机器人依靠某种探索策略选择一个当前地图的边界点为目标,利用路径规划获取一条路径然后自主导航到该目标;通过这种方式机器人就能探索到区域越来越大的环境地图。为了提高超大范围的探索效率,通常会利用多个机器人进行协同探索。
图11-4 对未知环境的探索过程
11.2.2 环境建模
环境建模其实就是在对环境状态进行描述,也就是构建环境地图。地图的一方面可以用于定位,另一方面可以用于避障,因此定位用到的地图与避障的地图并不一定相同。环境地图的表示方法有很多种,比如特征地图、点云地图、几何地图、栅格地图、拓扑地图等。视觉SLAM通常以构建特征地图和点云地图为主,而激光SLAM则以构建栅格地图为主。由于导航过程中需要避开障碍物,所以特征地图或点云地图必须被转换成栅格地图后才能导航,下面主要讨论一下二维栅格地图和三维栅格地图。
1.二维栅格地图
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
2.三维栅格地图
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
11.2.3 语义理解
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
参考文献
【1】 张虎,机器人SLAM导航核心技术与实战[M]. 机械工业出版社,2022.