SLAM-hector_slam 简介与使用

2023-11-15

hector_slam功能包使用高斯牛顿方法,不需要里程计数据,只根据激光信息便可构建地图。
所以他的总体框架如下:
在这里插入图片描述

hector-slam功能包

hector_slam的核心节点是hector_mapping,它订阅“/scan”话题以获取SLAM所需的激光数据。与gmapping相同的是,hector_mapping节点也会发布map话题,提供构建完成的地图信息;不同的是,hector_mapping节点还会发布slam_out_pose和poseupdate这两个话题,提供当前估计的机器人位姿。

在ROS的软件源中已经集成了hector-slam相关的功能包,可以使用如下命令安装:

$ sudo apt-get install ros-kinetic-hector-slam

下面先来了解hector_slam功能包的各种接口。
话题和服务
hector_mapping节点中发布/订阅的话题和提供的服务如表所示。
在这里插入图片描述
坐标变换
hector_mapping节点提供的坐标变换如表所示。
在这里插入图片描述
参数
参数默认就可以,学习后可以根据自己的要求修改~

hector_mapping节点的配置与运行

依然无需关注hector_mapping节点的内部实现,使用其提供的接口即可实现SLAM功能。

1.hector.launch
与gmapping节点一样,hector_mapping节点也有不少参数需要设置,单独实现一个my_robot_navigation/launch/hector.launch文件完成节点的启动,代码如下:

<launch>
<node pkg = "hector_mapping" type="hector_mapping" name="hector_mapping" output="screen">
<!—— Frame names ——>
<param name="pub_map_odom_transform" value="true"/>
<param name="map_frame" value="map" />
<param name="base_frame" value="base_link" />
<param name="odom_frame" value="base_link" />
<!—— Tf use ——>
<param name="use_tf_scan_transformation" value="true"/>
<param name="use_tf_pose_start_estimate" value="false"/>
<!—— Map size / start point ——>
<param name="map_resolution" value="0.05"/>
<param name="map_size" value="2048"/>
<param name="map_start_x" value="0.5"/>
<param name="map_start_y" value="0.5" />
<param name="laser_z_min_value" value = "-1.0" />
<param name="laser_z_max_value" value = "1.0" />
<param name="map_multi_res_levels" value="2" />
<param name="map_pub_period" value="2" />
<param name="laser_min_dist" value="0.4" />
<param name="laser_max_dist" value="5.5" />
<param name="output_timing" value="false" />
<param name="pub_map_scanmatch_transform" value="true" />
<!—— Map update parameters ——>
<param name="update_factor_free" value="0.4"/>
<param name="update_factor_occupied" value="0.7" /> 
<param name="map_update_distance_thresh" value="0.2"/>
<param name="map_update_angle_thresh" value="0.06" />
<!—— Advertising config ——> 
<param name="advertise_map_service" value="true"/>
<param name="scan_subscriber_queue_size" value="5"/>
<param name="scan_topic" value="scan"/>
</node>
</launch>

hector_demo.launch
然后创建一个用于演示hector_slam的my_robot_navigation/launch/hector_demo.launch文件,启动hector_mapping节点和rviz可视化界面,代码如下:

<launch>
<include file="$(find my_robot_navigation)/launch/hector.launch"/>
<!—— 启动rviz——>
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find my_robot_navigation)/rviz/gmapping.rviz"/>
</launch>

然后启动自己的小车底盘和雷达,再启动hector-slam的launch文件,就可以建图了。
个人感觉虽然不用里程计和imu模块,但是建图效果并不差!

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SLAM-hector_slam 简介与使用 的相关文章

  • 【MySQL基础】MySQL基本数据类型

    序号 系列文章 1 MySQL基础 MySQL介绍及安装 2 MySQL基础 MySQL基本操作详解 3 MySQL基础 MySQL基本数据类型 文章目录 前言 1 数字类型 1 1 整型类型 1 2 浮点数类型 1 3 定点数类型 1 4

随机推荐

  • 如何用YOLOv5玩转半监督(附源码实现)

    目录 引言 背景 目标检测 域自适应 DA Faster SWDA SCL NLDA MEAA UMT MSDA USDAF SIGMA DTPL MTOR 方法 Mean Teacher Model Pseudo Training Ima
  • Redis系列三

    1 6 Redis事务 事务可以一次执行多个命令 并且带有以下两个重要的保证 事务是一个单独的隔离操作 事务中的所有命令都会序列化 按顺序地执行 事务在执行的过程中 不会被其他客户端发送来的命令请求所打断 事务是一个原子操作 事务中的命令要
  • python-正则表达式入门初级篇

    Python 正则表达式入门 初级篇 本文主要为没有使用正则表达式经验的新手入门所写 转载请写明出处 引子 首先说 正则表达式是什么 正则表达式 又称正规表示式 正规表示法 正规表达式 规则表达式 常规表示法 英语 Regular Expr
  • java深入体会

    javase01阶段 idea几个常用设置 1 调整字体大小 2 自动导包 3 不区分大小写 4 设置背景颜色 小数参与计算 1 小数参与计算才会出现小数 int a 10 int b 20 1 a b 30 1 2 小数参与计算有几率出现
  • Vue echart toolbox 工具栏点击 自定义全屏按钮 显示到弹出框中

    最终效果 说明 由于页面上的echart图表过多 写一个vue子组件 直接在父页面调取复用 安装插件 npm i echarts 在 main js 中引用 import echarts from echarts Vue prototype
  • 读标准03-IEEE1451.5标准协议尝鲜实现

    读标准03 IEEE1451 5标准协议尝鲜实现 前面两个文章里面已经详细描述了 TEDS 和 Message 的组成 这里 C 的实现分两个部分 分别对 TEDS 和 Message 的 数据结构实现 与 帧打包与解析的算法实现 第一版
  • java 程序猿必备技能——Debug详解

    Debug的引入和概述 IDEA中Debug的使用 Debug演示 一 前言 在我们以往的程序执行中 只能看到控制台上展示的最终结果 无法直观清晰地看到程序内部每一个变量的加载 更迭 以及代码执行的内部逻辑 而Debug 断点调试 可以让我
  • python3最新版本-mac下安装Python3.*(最新版本)

    前言 mac系统自带python 不过以当前mac系统的最新版本为例 自带的python版本都是2 版本 虽然不影响老版本项目的运行 但是python最新的3 版本的一些语法与2 版本并不相同 网上的教程大神们也肯定都更新出了最新版的教程
  • VC实现对话框文件拖拽

    使用过QQ的人都知道 只要把文件拖拽到消息框中就可以传送文件了 那么这种功能是如何实现的呢 其实很简单 只需要响应一个WM DROPFILES消息就可以了 在基于对话框的程序中 默认是没有这个消息的 按下Ctrl W 弹出类向导对话框 选择
  • kettle通过java步骤获取汉字首拼

    kettle通过java步骤获取汉字首拼 用途描述 一组数据 需要获取汉字首拼后 输出 实现效果 添加jar包 pinyin4j 2 5 0 jar 自定义常量数据 Java代码 完整代码 import net sourceforge pi
  • 用指针交换两个数

    题目描述 利用指针交换用户输入的两个数 输入 测试次数t 共t行 每行两个整数 输出 共t行 每行输出交换后的两个整数 输入样例1 2 1 2 35 21 输出样例1 2 1 21 35 思路分析 用a和b两个变量把数存储下来 再用两个指针
  • swift4.0自定义UITabBarController +UINavigationController

    首先开始项目之前我们需要搭建框架 首选UITabBarController UINavigationController 下面的代码是整理好的 包括我们会遇到的问题解决方法都在里面 自定义UINavigationController cla
  • TypeScript算法-19. 删除链表的倒数第 N 个结点

    TypeScript算法 19 删除链表的倒数第 N 个结点 思路 代码 思路 要删除倒数第N个节点 就要找到倒数第N 1个节点 然后直接将next指针指向next next即可 为了找到倒数第N 1个节点 可以使用快慢指针 让快指针先走n
  • openGL法线贴图和纹理贴图结合使用,以增强三维物体表面细节

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 一 法线贴图 二 代码 1 主程序 2 着色器程序 运行效果 源码下载 前言 凹凸贴图的一种替代方法是使用查找表来替换法向量 这样我们就可以在不依赖数学函 数的情况下 对凸
  • JS复选框:获取选中的checkobx

    div div
  • 异常检测怎么做,试试孤立随机森林算法(附代码)

    点击上方 程序员小乐 关注 星标或置顶一起成长 每天凌晨00点00分 第一时间与你相约 每日英文 If someone hurts you please continue good good to enjoy life hurt the s
  • CentOS7中Docker常规安装Redis

    一 下拉redis docker pull redis 二 处理redis宿主机配置文件相关 mkdir p app redis data mkdir p app redis conf 三 上传一份redis官网默认原始的redis con
  • 超级详细的 Maven 教程(基础+高级)

    1 Maven 是什么 Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具 一个 Maven 工程有约定的目录结构 约定的目录结构对于 Maven 实现自动化构建而言是必不可少的一环 就
  • PROFIBUS DP从站开发 VPC3源程序分析---user_chk_new_cfg_data(void)

    以下程序注释由成都地质学院霸王猫添加 引用时请尊重作者劳动成果 标明引用者来自成都地质学院霸王猫 UBYTE user chk new cfg data void 入口参数 无 出口参数 无 返回值 VPC3 CFG OK VPC3 CFG
  • SLAM-hector_slam 简介与使用

    hector slam功能包使用高斯牛顿方法 不需要里程计数据 只根据激光信息便可构建地图 所以他的总体框架如下 hector slam功能包 hector slam的核心节点是hector mapping 它订阅 scan 话题以获取SL