系列文章目录

·【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. aspose html转pdf_PDF如何转HTML?办公党必备
  2. 图解Win32汇编字符串和Debug输出
  3. 状态机思路在程序设计中的应用
  4. 删除数据库中所有存储过程和函数的sql语句
  5. 自定义字符串查找函数c语言,(C语言自定义函数,/*编写函数实现在字符串pStr中查找子串pSub int subString( char* pStr, char* pSub);...
  6. python编程入门到实践笔记习题_Python编程从入门到实践笔记——列表简介
  7. 冲突问题和核心对象和原生js 和 jquer的区别的两个区别(固定格式的区别和入口函数的区别)
  8. 基于java自行车租赁管理系统
  9. oracle awr报告 开关,【Oracle之AWR报告解析】
  10. 跳棋编程c语言代码,跳棋游戏C语言程序设计(数据结构课程设计).doc
  11. it系统应急响应流程图_各类突发事件应急处置流程图,速看!
  12. 基于手机APP的PLC远程监控系统
  13. 学习java要学类与对象的使用吗_java 类与对象 的概念理解(可以用我们学习多年的蚂蚁哲学套用)...
  14. YK01 仪器控制的三个核心
  15. 地图工具类:02坐标系与84坐标系转换
  16. 第一届天池 PolarDB 数据库性能大赛
  17. 某机房ups电源更换蓄电池的一次作业过程
  18. TASKBAR的奥秘
  19. App开发 免费和付费的博弈
  20. 多关卡连连看php源码_自己做的一个可以更换图片的连连看游戏(源码)

热门文章

  1. XSS跨站脚本攻击防御和Cookie,及SSO单点登录原理
  2. 【CV-Learning】计算机视觉简介
  3. 云服务kewail.
  4. 计算机基础应用统考试题及答案,2020年9月统考《计算机应用基础》操作系统应用试题及答案4...
  5. 校园二手物品交易系统-JAVA【数据库设计、源码、开题报告】
  6. js正则表达式 URL格式匹配 http替换成https
  7. 京东热2:约架是怎么变成约炮的
  8. 虚拟偶像、虚拟数字人的开发、运营成本如何?商业化路径又有哪些不同?未来国内虚拟偶像应如何在打造IP上发力?
  9. mysql matlab for循环嵌套循环_matlab里面的for循环嵌套
  10. 金融学习之十三——数据去极值和标准化处理