移动机器人的自主定位导航过程如下:
1)采用激光扫描仪或深度相机创建地图;
2)定位:机器人根据传感器的信息并采用自适应蒙特卡罗定位算法计算机器人在地图中的当前位置。
3)全局路径规划:采用Dijkstra(迪杰斯特拉)算法规划出机器人从当前位置到目标位置的全局最优路径,该算法以起始点为中心向外层扩展,直到扩展到终点为止。
4)控制机器人运动:采用动态窗口法计算出控制命令并发送给移动平台,使其沿规划的路径前进,如图1所示。
图1移动机器人的导航定位
下面将以TurtleBot机器人为例,介绍实现自主定位导航的方法。
1导航仿真
为了简单,我们使用采用rbx1_nav/maps中的地图进行定位导航仿真实验。
在终端窗口中,分别运行下面的命令:
$ roslaunch rbx1_bringup fake_turtlebot.launch
$ roslaunch rbx1_nav fake_amcl.launch map:=test_map.yaml
$ rosrun rviz rviz -d `rospack find rbx1_nav`/amcl.rviz
其中fake_amcl.launch文件位于rbx1_nav/launch目录下,它的作用是加载地图、启动并配置move_base节点、运行fake_location节点。
运行结果如图2所示:
图2启动定位导航
使用rviz工具栏上的2DNav Goal,为机器人设置目标位姿(绿色箭头),运行效果如图3所示。