ROS仿真笔记之——基于rrt_exploration的单个机器人自主探索建图

之前博文已经介绍过机器人exploration以及多机器人SLAM map merage《ROS学习笔记之——多机器人探索环境》《ROS仿真笔记之——基于gazebo的多机器人探索环境仿真》《ROS仿真笔记之——移动机器人SLAM地图融合》《ROS仿真笔记之——移动机器人自主探索式地图构建》之前的都是基于功能包(http://wiki.ros.org/multirobot_map_merge/)

目录

原理

仿真

实验

参考资料



原理

该包的基本原理是,基于2D的,通常采用图像算法的边缘检测来检测已知区域与未知区域的边界。基于Rapidly-exploring Random Trees的探索策略。由于RRT基本上是朝向未知区域的(unexplored and unvisited),并且RRT可以扩展到更高维区域。同时采用local tree与global tree来检查边缘点,使得机器人的exploration更加高效。

一旦检测到边缘后,就会取其中心为目标点,然后让机器人去探索该点。而为了检测边缘点,需要对整张地图进行处理,而这个操作通常是耗时的,为此大量的研究人员focus在检测frontier edges的效率上。

本包中,RRT树只是用于search边缘点,而检测到的边缘点经过滤波就会依次安排给机器人。当机器人接收到point时,就会运动到对应的点。在此期间,机器人上的传感器将会扫描建图。

而通过多个独立的RRT树来加速边缘点的检测,则是本包的创新点。

如下图所示,主要分为三个模块。

  • 基于RRT的边界检测模块(负责检测边界点)
  • 滤波模块(存储边界点,并通过mean shift算法来聚类,检测出无效以及旧的边界点)
  • 以及task allocator模块(接收到滤波模块传来的边界点后,分配到机器人)

而本包还需要与SLAM及path planning模块相结合来使用

ROS仿真笔记之——基于rrt_exploration的单个机器人自主探索建图_第1张图片

 ROS仿真笔记之——基于rrt_exploration的单个机器人自主探索建图_第2张图片

 关于global与local detector。如下图所示。当检测到一个边界点时,local detector会reset,并且会基于机器人当前的位置重新生长。这带来两个好处:1、检测边界点更快。因为机器人总是会向着边界点移动,而如果RRT树从机器人当前的位置开始,那么它到达未知区域的概率更高。2、机器人可能会miss掉一些地图上边角的小的边界点,而为了解决这个问题,就通过global detector。但随着地图的变大,global detector会越来越慢(或者说,随着树的变大,exploration会变慢),为此需要local detector

ROS仿真笔记之——基于rrt_exploration的单个机器人自主探索建图_第3张图片

而关于assigner,其基于以下几个要素来分配机器人导航的目标点:

  • Navigation cost
  • Information gain

仿真

而本博文基于rrt_exploration包来进行仿真。网上也有大把基于此包的博客。但是本人实现时都无法跑动(可能是版本的原因?老显示tf无法链)为此,更改了原包的机器人模型为turtlebot3 waffle并且调了一些路径规划的参数,终于调出来了,效果如下视频所示~

single kobuki robot slam based on rrt

单机器人自主探索建图

单机器人自主探索建图(1)

ROS仿真笔记之——基于rrt_exploration的单个机器人自主探索建图_第4张图片

换成kobuki模型效果好很多~

ROS仿真笔记之——基于rrt_exploration的单个机器人自主探索建图_第5张图片

运行命令:

roslaunch rrt_exploration_tutorials single_simulated_house.launch
roslaunch rrt_exploration single.launch 

注意要保证move base的开启

single_simulated_house.launch



















 










move_baseSafe.launch



  

  

   
  
  




    


  

   

   
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  


   
    
    
    
    
    
    
     
    
    
    
    
    
    
    
    
    
      
    
    
    
    
    

    
    
    
    
    

    

    
    
    
        
    
    
    
    
    
   

   
    
    
    
    
    
    
    
    


robot.launch.xml



  
  
  

  
    
  

  
  
  

  
 
   
   
   
   
   

single.launch










  
  
  
  
  
  
  
  
  
  
 
  
  
  
   
   
  
   
  
  
  
  
  
  
  
   
   
   
   
   
  
  
  
  
  
  

实验

实验效果及视频如下:

(experiment) single kobuki robot slam based on rrt

ROS仿真笔记之——基于rrt_exploration的单个机器人自主探索建图_第6张图片

参考资料

http://wiki.ros.org/rrt_exploration/Tutorials/singleRobot

https://github.com/hasauino/rrt_exploration_tutorials

https://github.com/hasauino/rrt_exploration

你可能感兴趣的:(ROS,SLAM)