【SLAM】基于explore_lite的移动机器人自主建图

系列文章目录

·【SLAM】基于explore_lite的移动机器人自主建图

·【SLAM】基于rrt_explore的移动机器人自主建图

·【问题解决】rrt_exploration功能包使用过程中报错处理​​​​​​​

文章目录

目录

系列文章目录

文章目录

前言

一、简介

二、安装

三、架构

四、参数配置

五、仿真实验

总结


前言

机器人自主建图有很多方式,比如基于位置边界的map-explore,基于快速搜索树的rrt-explore,指定区域自主探索建图frontier-explore,这几种方法各有优劣,博主接下来将对每种方法进行简单介绍、使用实现,和比较测评

一、简介

explore-lite提供了贪婪的基于边界的探索。当节点运行时,机器人会贪婪地探索它的环境,直到找不到边界,它的移动命令会发送至move-base节点。

explore_lite不会创建自己的成本图,这使得配置更容易,效率更高(资源更少)。Node 只是订阅nav_msgs/OccupancyGrid消息。机器人移动命令发送到move-base节点。

节点可以进行边界过滤,甚至可以在非膨胀地图上操作。目标黑名单允许处理机器人无法进入的地方,也就是说可以在move-base的的代价地图层中配置禁止层参数,explore-lite也会识别到,并不去探索这部分边界。

二、安装

对于explore-lite的安装有两种方式

自动安装:

sudo apt-get install ros-noetic-explore-lite

手动安装:

git clone  https://github.com/hrnr/m-explore.git

这个功能包的使用也很简单,src中是源码,include中是头文件,而我们使用时只需配置好相应的launch文件即可。

三、架构

 explore_lite订阅nav_msgs/OccupancyGrid和map_msgs/OccupancyGridUpdate消息来构建一个地图,它会在其中寻找边界,可以使用 move_base 发布的成本地图(即/global_costmap/costmap),也可以使用由SLAM算法构建的地图。

然后explore-lite算法发布move-base移动指令给move-base节点,控制小车运动

需要提供的tf变换:global_frame → robots_base_frame

这种变换通常由映射算法提供。这些框架通常称为map和base_link。可以在launch文件中调整robot_base_frame名称。不需要设置global_frame。global_frame的名称将自动来自costmap_topic。

四、参数配置

explore.launch配置文件如下,其中需要注意的是costmap_topic 和 costmap_updates_topic。



  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

explore_costmap.launch的配置文件如下,与explore.launch相比只是关于地图话题costmap_topic 和 costmap_updates_topic做了修改,改为了move_base发布的地图话题,然后对最后一个参数进行了修改,因为move_base的代价地图有障碍物膨胀系数,所以将这个参数进行了略微扩大。

五、仿真实验

我这里是手动下载了explore_lite的功能包,我发现它的功能包文件夹名称和package.xml文件中定义的不一致,于是先将文件夹名称进行了修改。

【SLAM】基于explore_lite的移动机器人自主建图_第1张图片

 然后当我编译完工作空间的时候,运行这个功能包总会报错说:这个功能包无法定位

这时可以使用下面的代码解决:

catkin_make -DCATKIN_WHITELIST_PACKAGES=explore_lite

上面是编译自主建图的功能包,下面是地图融合的功能包。

catkin_make -DCATKIN_WHITELIST_PACKAGES=multirobot_map_merge

进行完这些步骤之后,我们就可以依次运行gazebo仿真、slam建图程序、move-base导航程序、rviz可视化界面、自主建图程序。

roslaunch kbot_gazebo view_kbot_with_laser_gazebo.launch    #启动gazebo仿真环境
roslaunch kbot_slam gmapping.launch    #启动gmapping建图算法和move_base
roslaunch kbot_slam view_slam.launch    #启动rviz可视化节点
roslaunch explore_lite explore.launch    #启动自主建图算法

实验效果如下:

【SLAM】基于explore_lite的移动机器人自主建图_第2张图片

 这是最终的建图效果,使用的是gmapping,基于滤波器的slam算法建图过程中有一些漂移,不过最终效果还是不错的。

【SLAM】基于explore_lite的移动机器人自主建图_第3张图片

你可能感兴趣的:(SLAM,开发语言,机器人,ros,slam)