更新!整理出《ROS机器人编程》第十一章ppt讲义版,请对照书籍P312-360页学习。
【说明】这里的导航(navigation)可以理解为安装在汽车里的导航仪。在驾驶汽车时,只要在导航仪中设置目的地,就可以知道从当前位置到目的地的准确距离和所需时间,另外还可以设置中途路过的地点或指定公路。
我们现今使用的导航仪使用方便,但其历史相对较短。1981年日本本田首先推出了一种基于三轴陀螺仪和胶卷地图的叫做“Electro Gryrocator”的模拟(非数字)方法。后来美国汽车产品公司Etak推出了利用带传感器的电子罗盘和车轮的电子导航仪(Etak Navigator) 。然而,将传感器安装在电子罗盘和车轮上对于已经很昂贵的汽车来说是巨大的负担,而且还具有可靠性方面的问题。
自二十世纪七十年代以来,美国一直在开发用于军事的卫星定位系统,二十一世纪二十年代开放了24颗全球定位系统(GPS)卫星,并开始使用三角测量导航系统。
【说明】导航是移动机器人技术的基本目的之一,同时也是一颗明珠。机器人技术中导航非常重要,是必不可少的部分。导航是指机器人运动到一个指定的目的地,这说起来很容易,但完成它所需的技术一个个都不是容易的任务:要知道机器人本身在哪里,并要有一个给定的周围环境的地图,在各种路径中找出最优路径,在行驶中避免障碍物(如墙壁、家具、物体)等。
【说明】第一、机器人需要自己能够测量和估计姿态(位置+方向)。汽车会用GPS估计自己的位置,但在室内无法使用GPS。即使说可以在室内使用,误差较大的GPS无法用于测量精细的移动。最近,虽然有DGPS等高精度的定位系统,但在室内还是无法使用的。为了克服这种问题,人们引进了标志识别方式及室内定位系统等技术,但在成本或精确度方面还不足以投入实际应用。当前的室内机器人用的最多的是导航推测(dead reckoning)。它的缺点是只能估算相对位置,但因为仅用廉价的传感器就能实现,且已有较长时间的研究进展,因此可以得到一定水平的位置估计值,因此被广泛使用。导航推测技术用机器人的车轮的旋转量来估计机器人本身的移动量。但车轮的旋转量具有不少的误差。
因此还利用IMU传感器等获取惯性信息来补偿位置和方向值,以此减小误差。
【说明】第二是一种利用传感器检测墙壁和物体等障碍物的方法。此时用到距离传感器、视觉传感器等多种传感器。其中距离传感器有基于雷达的距离传感器(常用的是LDS、LRF 和LiDAR)、超声波传感器和红外距离传感器等,而视觉传感器包括立体相机、单镜相机、360度相机,以及经常用作深度摄像头的RealSense、Kinect和Xtion也都用于识别障碍物。
【说明】第三是地图。导航仪从购买时起就配备有非常准确的地图,并且可以定期下载更新的地图,以便可以根据地图将汽车引导到目的地。但是在使用服务机器人的房间里是否会有地图呢?服务机器人也像导航仪一样,需要一个地图,所以需要人创建一个地图,并把它给到机器人,或者需要机器人自己创建一个地图。
SLAM(Simultaneous localization and mapping)就是为了让机器人自己(或接受人的一些帮助)绘制地图而出现的技术。用中文应该是“同步定位和绘制地图”。这是在机器人移动到未知空间时通过探测周围环境来估计当前位置并同时绘制地图的方法。
【说明】第四是导航(Navigation)功能,这是计算到达目的地的最优路径,并且驱动机器人按照最优路径到达目的地的功能。实现这个功能的算法有很多种:称为路径搜索和规划的 A*算法、势场算法、粒子过滤算法和RRT(Rapidly-exploring Random Tree)算法等。
【说明】在这一节中,我们简要地总结了SLAM和导航的组成要素,但这是难解和广博的内容。四个要素中的第一个要素-测量和估计机器人的位置-已经在前面讲到,第二个要素-识别墙壁、物体等障碍物-在前面的“第8章 机器人、传感器和电机”中已说明。下面了解 一下第三个要素-用于绘制地图的SLAM-和第四个要素-导航。
【说明】在描述SLAM的理论之前,我将解释如何使用TurtleBot3来使用SLAM。在本节中,把可以用于绘制地图的bag文件也上传到了github存储库中,因此建议读者跟着做一次。下面先介绍SLAM的应用方法,理论则会在11.4节中详细介绍。
【说明】与SLAM相关的常用的功能包有gmapping、cartographer和rtabmap。我们将在本节中使用gmapping。使用Gmapping有几种硬件限制。对于常见的移动机器人不成问题,但还是希望读者了解一下。
【说明】机器人的位置是根据从编码器和惯性传感器(IMU传感器)获得的测位来估计的。然后,通过安装在机器人上的距离传感器来计算机器人与障碍物之间的距离。导航系统将机器人位置、传感器姿态、障碍物信息和作为SLAM地图的结果而获得的占用网格地图调用到固定地图(static map),用作占用区域(occupied area)、自由区域(free area) 和未知区域(unknown area)。
在导航中,基于上述四种因素,计算障碍物区域、预计会和障碍物碰撞的区域以及机器人可移动区域,这被称为成本地图(costmap)。根据导航类型,成本地图又被分成两部分。一个是global_costmap,在全局移动路径规划中以整个区域为对象建立移动计划,其输出结果就是global_costmap。而另一个被称为local_costmap,这是在局部移动路径规划中,在以机器人为中心的部分限定区域中规划移动路径时,或在躲避障碍物时用到的地图。
然而,这两种成本图的表示方法是相同的,尽管它们的目的不同。
【说明】至此,结束了对SLAM和导航的实习、应用和理论的讲解。虽然这主要是用移动机器人平台Turtlebot3来说明的,但也适用于其他机器人,所以如果读者正在使用另一个机器人或开发了自己的机器人,那么也可以应用它。
原创声明:本篇文档为原创文档。欢迎转发转载引用,请注明出处。
喜欢本文请关注微信公众号“京天机器人”
Donghu Robot Laboratory, 2nd Floor, Baogu Innovation and Entrepreneurship Center,Wuhan City,Hubei Province,China
Tel:027-87522899,027-87522877