ROS技术空间

ROS SLAM 5 | 机器人ROS自主导航 – navigation

机器人ROS自主导航 – navigation

导航是在给定环境中将机器人从一个位置移动到指定目的地,上一章我们介绍了通过gmapping建图,导航需要使用上一章建好的地图,通过amcl寻找位置,move_base路径规划从而实现机器人自主导航。


启动底盘通讯与雷达节点

在主控节点启动与底盘的通讯与雷达,同时程序会将IMU姿态与位置融合发布odom位置信息

 roslaunch lingao_bringup robot.launch


等待IMU校准后出现First IMU message received并且没有错误基本上就是启动成功


启动navigation导航包

在主控节点启动nav导航包,并且导入名字是map的地图

roslaunch lingao_navigation navigate.launch

通过下图可以看到没有error报错即,最后出现odom received!是启动成功

lingao_navigation navigate.launch map_name:=map2

启动本地可视化rviz

在本地PC主机启动rviz在窗口,打开导航设置

roscd lingao_navigation/rviz/
rviz -d navigate.rviz


现在可以看到地图已经载入,出现机器人tf位置,但是机器人位置不对


初始姿势位置

在运行导航之前,必须执行初始姿势估计,因为此过程将初始化对导航至关重要的AMCL参数。必须将机器人正确放置在地图上,并且雷达数据应与显示的地图完全重叠。
在设置小车初始位置后amcl会释放很多粒子,需要通过控制小车以缩小定位误差。

  1. 单击RViz菜单中的按钮2D Pose Estimate
  2. 单击实际机器人所在的地图,然后将绿色的大箭头对向机器人车头方向拖动。
  3. 重复步骤1和2,直到雷达传感器覆盖地图对应位置。

  1. 通过来回移动机器人以收集周围的环境信息,并缩小小车在地图上的估计位置,该地图上会显示绿色小箭头。

粒子收敛前:

移动小车粒子收敛后:


设定导航目标

  1. 单击RViz菜单中的按钮2D Nav Goal
  2. 在地图上单击以设置机器人的目的地,然后拖动鼠标,出现红色的大箭头对应车头位置,松开鼠标后即开始导航
    放置导航目标位置:

    正在导航:


    到达位置: