本文来源公众号“arXiv每日学术速递”,仅用于学术分享,侵权删,干货满满。
原文链接:机器人是如何实现自由运动的?ROS自主导航了解一下
当一个扫地机器人第一次来到你家时,它对家里的环境一无所知,所以第一次启动时,它的主要工作是探索这个未知环境,使用的技术就是SLAM。
地图建立完成后,就要正式开始干活了,接下来很多问题摆在机器人面前:如何完整走过家里每一个地方?如何躲避地图中已知的墙壁、衣柜等障碍物?静态的还好说,如果有“熊孩子”或者宠物,还有地上不时出现的各种杂物,机器人又该如何一一躲避?
这些问题就需要一套智能化的自主导航算法来解决。
01 机器人自主导航原理
机器人自主导航的流程并不复杂,和我们日常使用地图App的导航功能非常相似。
首先,选择一个导航的目标点,如图1所示的Goal,可以在地图App里直接输入,也可以在机器人中人为给定,目的是明确机器人“去哪里”。
接下来,在进行路径规划前,机器人还得知道自己“在哪里”,地图App可以通过手机中的GPS获知定位,机器人在室外也可以用类似的方法。如果在室内,GPS的精度不够,那么可以使用SLAM技术进行定位,也可以使用后面将要介绍的AMCL——一种全局定位的算法进行定位。
图1 移动机器人的自主导航流程
回想一下地图App中的操作,接下来App会画出一条连接起点和终点的最优路径,这就是路径规划的过程。规划这条最优路径的模块被称为全局规划器,也就是站在全局地图的视角,分析如何让机器人以最优的路径抵达目的地。
规划出路径后,机器人就开始移动了,在理想状态下,机器人需要尽量沿着全局路径运动,这个过程中难免会遇到临时增加的障碍物等问题,需要机器人动态决策。此时,机器人会偏离全局路径,动态躲避障碍物,这个过程就需要机器人搭载一个局部规划器。
局部规划器除了会实时规划避障路径,还会努力让机器人沿着全局路径运动,也就是规划机器人每时每刻的运动速度,这个速度就是之前频繁用到的cmd_vel话题。将速度指令传输给机器人底盘,底盘中的驱动就会控制机器人的电机按照某一速度运动,从而带动机器人向目标前进。