基于rrt_exploration实现自主建图(ros)

提示:本篇博客适用于想在ros中使用rrt_exploration功能包的人参考。

在ros当中使用rrt_exploration来实现自主建图,官方文档(http://wiki.ros.org/rrt_exploration)说得比较清楚,这篇博客简单地讲解一下流程,主要是针对一些容易掉进坑的地方说明一下,给大家排排雷。

 

一.下载rrt_exploration功能包

1.打开终端

2.进入你的工作空间/src文件下

$ cd catkin_ws/src        #将命令中的catkin_ws更换为你个人的工作空间名

3.下载rrt_exploration功能包

$ git clone https://github.com/hasauino/rrt_exploration.git

 

二.下载相关依赖包(ros版本为kinetic)

OpenCV(cv2)

$ sudo apt-get install python-opencv

Numpy

$ sudo apt-get install python-numpy

Sklearn

$ sudo apt-get install python-scikits-learn

gmapping

$ sudo apt-get install ros-kinetic-gmapping

navigation

$ sudo apt-get install ros-kinetic-navigation

 

三.编译工作空间

1.进入你的工作空间

$ cd catkin_ws        #将命令中的catkin_ws更换为你个人的工作空间名

2.编译

$ catkin_make

到这一个步骤,如果没有错误,那么rrt_exploration功能包的下载安装已经全部完成,接下来就到了使用阶段,在此,我推荐创建一个launch文件来达到使用自主探索建图功能的目的。我把自主探索建图功能分为两个模块,一个是自主探索功能,一个是建图功能,自主探索功能需要rrt_exploration和move_base,建图这里就采用gmapping。因此你的launch文件内需要包含3个内容:

① rrt_exploration

② move_base

③ gmapping

四.创建自主建图launch文件

1.随意在一个功能包内创建launch文件夹,并在launch文件夹中建立一个rrt_slam.launch文件

文件内容如下:



     
     

    

    
      
      
      
      
      
      
       
      
      
      
      
      
      
      
      
      
          
      
      
      
      
      
      
    

文件内容讲解

rrt_exploration

直接使用include包含就行,simple.launch是单机器人使用rrt_exploration的launch文件。

gmapping

也是直接使用include包含就行,gmapping的配置各种参考文档都很多,这里不过多讲解。

move_base

这部分要重点讲解一下,虽然rrt_exploration为单机器人创建了simple.launch文件,但大部分人使用依然会出现问题。原因这里就直接说明了。

大部分使用出现问题都在于这一句,注意到name="move_base_node"这一段,这就是问题根源,rrt_exploration作者是根据这一个命名来写代码的,但大部分ros使用者都是使用move_base这个命名,而作者的源代码采用的是move_base_node(很好奇作者为什么不走寻常路),而且没有在launch文件中给出接口来更改move_base的命名,因此大部分人在使用rrt_exploration的时候会发现move_base无法和rrt_exploraiton连接,导致自主探索功能失败,有两种解决办法:

①像我这样在launch文件中将move_base节点命名为move_base_node,这是最简单快捷的方法,也是我推荐的方法。

②在源代码中修改move_base_node名,这个我不推荐,因为涉及的地方很多,如果有人需要,可以评论在下方,我可以给出更改的位置

move_base配置部分:

本地规划器作者采用的是base_local_planner,我尝试使用过dwa_local_planner,但效果没有base_local_planner好,建议大家也使用base_local_planner。

      
      
      
      
      
      
       
      

这一段是作者配置的参数,应该是作者根据算法作出的调试,建议大家就使用作者默认的这一套参数。

      
      
      
          
      
      
      
      
      

这一段是全局代价地图和本地代价地图的设置

全局代价地图和本地代价地图的参数类似

它们前四个参数分别代表

全局坐标名:在作者的设置中全局代价地图采用的是map,本地代价地图采用的是odom,我测试之后感觉本地代价地图改为map效果要好一些,所以我这里采用的是map。

机器人基坐标:这个基本上大家都类似,一般都是base_link或者base_footprint。

传感器坐标名:这个可能会有些区别,可以使用rosrun rqt_tf_tree rqt_tf_tree命令来查看激光的tf名,根据自己机器人的命名情况来修改。

传感器数据话题名:这个大部分应该都是scan,也是根据自己机器人的命名情况来修改。

五.使用基于rrt_exploration的自主探索功能

这里简单地给大家展示一下,跑一跑流程。我这里采用的是turtlebot3的仿真来测试一下。

1.启动turtlebot3仿真

$ roslaunch turtlebot3_gazebo turtlebot3_stage_4.launch
$ roslaunch turtlebot3_bringup turtlebot3_remote.launch

2.启动rrt_slam.launch

$ roslaunch rrt_exploration rrt_slam.launch

我这里是把这个launch文件放在rrt_exploration功能包里面的,根据个人情况调整命令即可。

通过rviz中的Publish Point设置四个点(推荐为一个矩形区域的四个顶点)为探索的范围,第五个点设置在机器人附近。

基于rrt_exploration实现自主建图(ros)_第1张图片

效果展示:

基于rrt_exploration实现自主建图(ros)_第2张图片

自主探索建图的效果还是不错的。

你可能感兴趣的:(ROS)