系列文章目录

·【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算法建图过程中有一些漂移,不过最终效果还是不错的。

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

  1. 探索无人驾驶汽车:SLAM自主建图技术。

    有一天,我会放开双手,任由汽车带着我遨游山河. 有一天,我会放松身心,透过车窗去看这美丽景色. 无人驾驶,随着科技的不断进步倍受关注,它不再是一个遥不可及的设想,也不再是只有在科幻片里才能看到的景象. ...

  2. 技术分享 | 为什么学习rrt_exploration实现自主建图容易掉坑?

    在无人车领域当中,SLAM和导航两个部分一直是研究人员关注的重点,无人车作为移动机器人,这两个功能也十分重要,无人车到一个未知的环境中,人为控制无人车进行建图,建立好地图后,再使用导航,这是目前在无人 ...

  3. 基于RGB-D数据的语义建图

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文由知乎作者robot L授权转载,不得擅自二次转载.原文链接:https://zhuanlan.z ...

  4. 巡检机器人自主建图麻烦又不准?算丰征途为巡检机器人研究“傻瓜式”精准建图法

    自主建图是巡检机器人自主定位.避障.规划路线的前提和依据之一,对巡检机器人的任务执行有重大作用. 打个比方来说,自主建图之于巡检机器人,就像电脑之于企业高管.目前业内的自主建图技术主要是各机器人企业自 ...

  5. 基于固态激光雷达Livox的建图与定位系统!提供Docker自测!

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨黄思渊 来源丨 计算机视觉life 今天介绍一个最新的SLAM开源算法,作者开源了一套完整易用的 ...

  6. 超强激光SLAM LIO-SAM!高精度机器人定位建图!

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨robot L@知乎 来源丨https://zhuanlan.zhihu.com/p/15339 ...

  7. 初识视觉SLAM 用相机解决定位和建图问题

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 引言:视 ...

  8. 经典文献阅读之--Lifelong SLAM(变化环境中Lifelong定位建图)

    0. 简介 商场.超市等大多数现实场景的环境随时都在变化.不考虑这些变化的预建地图很容易变得过时.因此,有必要拥有一个最新的环境模型,以促进机器人的长期运行.为此<A General Frame ...

  9. 论文笔记_2011_RAS_使用特征稳定性直方图FSH的移动机器人的建图和定位(上)

    基本情况 出处:Bacca B, Salvi J, Cufí X. Appearance-based mapping and localization for mobile robots using ...

最新文章

  1. 在预装win8的电脑上换win7系统讲解
  2. bootstrap java_查看tomcat启动文件都干点啥---Bootstrap.java
  3. linux内核tor03,Linux内核x86架构引导协议4(翻译)
  4. Microsoft Build 2018 直播来啦!
  5. cgi进程设置多少 宝塔_宝塔面板安装完的一些列操作
  6. Java -- JDBC 学习--调用函数存储过程
  7. 个税改革怎么改?媒体称年收入超12万者税负或增加
  8. React --获取服务器数据的两种方式(Axios和FetchJsonp)
  9. 16kb等于多少b_MySQL为何选择B+树存储索引?
  10. MacBook在任意文件夹目录打开终端
  11. 人脸门禁系统解决方案及应用
  12. php excel导入读取公式本身不计算,使用PHPExcel读取Excel文件时忽略计算值
  13. 缓存问题(二) 布隆过滤器(Bloom Filter) 介绍和原理
  14. 优秀工程师应该具备哪些素质_作为现代工程师应具备的素养
  15. 开源生态|打造活力开源社区,共建开源新生态!
  16. ZVS振荡电路工作原理分析
  17. C++ int类型转 LPCTSTR类型
  18. java -jar命令运行jar包时指定外部依赖jar包
  19. Vultr CentOS主机无法登录/循环登录/SSH拒绝连接以及使用Finnix恢复系统
  20. 【线刷大师】纯净root线刷包,线刷教程及工具

热门文章

  1. 华为三层交换机VLAN配置
  2. 背光板受欢迎用户的原因
  3. 黑马程序员,黑马论坛----'Android26期,毕业67天,就业率98.57%,平均薪水8622元!
  4. matlab程序分享,matlab实用程序百例
  5. win11 我们无法设置移动热点
  6. 为什么人人网不做“分享”内容的搜索?
  7. Intelligent Reflecting Surface Enhanced Wireless Network via Joint Active and Passive Beamforming
  8. GitHub趋势榜第一:小姐姐自拍,生成二次元萌妹子
  9. 从小到大度过最冷的一个冬天!
  10. 完美解决deepin-wine-wechat微信黑块以及聊天输入框中文字体显示为竖条的问题(亲测有效!)