【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 发布的成本地图(即<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。

<launch>
<node pkg="explore_lite" type="explore" respawn="false" name="explore" output="screen">
  <!--机器人底盘坐标系-->
  <param name="robot_base_frame" value="base_link"/>
  <!--地图主题-->
  <param name="costmap_topic" value="map"/>
  <!--地图更新,如果地图来源始终发布完整更新,即不提供此主题,则不需要-->
  <param name="costmap_updates_topic" value="map_updates"/>
  <!--指定是否发布可视化边界-->
  <param name="visualize" value="true"/>
  <!--计算新边界并重新考虑目标的速率(Hz)-->
  <param name="planner_frequency" value="0.33"/>
  <!--时间以秒为单位,当机器人在 progress_timeout 内没有任何进展时,将放弃当前目标-->
  <param name="progress_timeout" value="30.0"/>
  <!--用于加权边界,这个乘法参数影响边界权重的边界潜在分量(到边界的距离)-->
  <param name="potential_scale" value="3.0"/>
  <!--用于加权边界,该乘法参数影响前沿权重的前沿方向分量,此参数当前不执行任何操作,仅提供前向兼容性-->
  <param name="orientation_scale" value="0.0"/>
  <!--用于加权边界。,乘法参数影响边界权重(边界大小)的边界增益分量-->
  <param name="gain_scale" value="1.0"/>
  <!--变换机器人姿势时使用的变换容差-->
  <param name="transform_tolerance" value="0.3"/>
  <!--将边界视为探索目标的最小边界大小。以米为单位-->
  <param name="min_frontier_size" value="0.75"/>
</node>
</launch>

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

五、仿真实验

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

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

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

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    #启动自主建图算法

实验效果如下:

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

  • 3
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值