UST-10LX使用hector_slam构建地图

2023-10-10 13:40

本文主要是介绍UST-10LX使用hector_slam构建地图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


简述:

本文讲述的是hokuyo UST-10LXUbuntu 14.04.5 ROS Indigo下进行实验,然后通过hector_slam构建地图。

slam(Simultaneous Localization andMapping,同步定位与建图)。

ros 中常用的2d slam 算法主要有 gmappinghector_slam ,其中 hector_slam是个性能非常好的算法。 

hector_slam通过最小二乘法匹配扫描点,且依赖高精度的激光雷达数据,但是不需要里程计。


运行环境:

系统:Ubuntu14.04.5 amd64(下载)

ROS:ROS Indigo Igloo

UST-10LX(以太网接口) IP地址192.168.211.221

构建地图:hector_slam

其中,ROS 安装及配置请参考ROS 安装和配置;hokuyo_node 相关资料请参考:hokuyo_node



1、 安装节点包


如果用的是UST-10LX(以太网接口),需要下载urg_node 


$ sudo apt-get install ros-indigo-urg-node 


2、 Ubuntu ping通激光雷达


请参考在ROS中使用Hokuyo激光雷达UST-10LX和UST-30LX 中的2 Ubuntu ping通激光雷达。




3、创建catkin工作空间


创建方法请参考ROS Indigo安装和配置 中3 创建ROS工作环境。

即:

$ source /opt/ros/indigo/setup.bash
$ mkdir -p ~/catkin_ws/src  //连续创建两个目录
$ cd ~/catkin_ws/src        //进入目录
$ catkin_init_workspace     //初始化工作空间创建CMakeLists.txt
$ cd ~/catkin_ws/
$ catkin_make


也可使用已有的catkin工作空间


4、下载并编译hector_slam_example


1 > 下载hector_slam_example

$ cd ~/catkin_ws/src
$ git clone https://github.com/DaikiMaekawa/hector_slam_example

也可以在百度云盘下载:hector_slam_example (密码:192o)


将对应的launch文件中的ip_address改为 “192.168.211.221


类型 launch文件

openni

hector_openni.launch

UTM-30LX

hector_hokuyo.launch

UST-10LX/20LX

hector_hokuyo_eth.launch


2 > 编译 hector_slam_example


$ cd ~/catkin_ws
$ catkin_make --pkg hector_slam_example

编译完成后,需要运行以下指令,这样便可以通过包名来运行程序了。


$ source devel/setup.bash


$ echo "source /home/hebbe/catkin_ws/devel/setup.bash" >> ~/.bashrc
$ source ~/.bashrc


3 > 将 hector_slam_example 路径添加到ros包ROS_PACKAGE_PATH


ROS_PACKAGE_PATH=/home/hebbe/catkin_ws/src/hector_slam_example:$ROS_PACKAGE_PATH

注意,如果你关闭了终端,或者新建一个终端,可能需要重新执行一下这个命令。


echo $ROS_PACKAGE_PATH //查看路径


5、启动构建地图


roslaunch hector_slam_example hector_hokuyo_eth.launch


只需要移动平台就可以去构建地图。




如果出现以下错误




则需要在该终端先输入指令


$ source devel/setup.bash


6、保存地图


使用map_server包的map_saver保存地图到当前目录下,地图名为map.pgm


$ rosrun map_server map_saver

可以用任何图像浏览器(gimp,eog,gthumb等)查看地图;


如果输入保存地图指令时出现以下错误


[rospack] Error: package 'map_server' not found

先输入


$ source /opt/ros/indigo/setup.bash
$ source /home/hebbe/catkin_ws/devel/setup.bash

若问题依然无法解决


$ rospack list

查看是否有map_server 包,如果没有,则安装map-server


$ sudo apt-get install ros-indigo-map-server

然后问题就可以完美解决了。


7 、launch文件解析


ROS应用中,每个节点通常有许多参数需要设置,为了方便高效操作多个节点,可以编写launch文件。

launch文件是 XML 格式标记文本,后缀名无关紧要,一般为.launch/.xml/.test/无后缀


1 > launch文件启动


roslaunch工具是rospython实现的程序启动工具,通过读取launch文件中的参数配置、属性配置等来启动一系列节点。


$ roslaunch  package_name  file.launch

语法:

 roslaunch [options] [package] <filename> [arg_name:=value...]roslaunch [options] <filename> [<filename>...] [arg_name:=value...]


2 > launch文件格式


 launch 文件一般格式如下:


<launch><node .../><rosparam ..../><param .../><include .../><env .../><remap .../><arg.../>
</launch>


最简单的配置:

<launch><node name="you_define_node_name" pkg="package_name" type="exe_name" />
</launch>


3 > <node> 参数


<node>常用属性tag:

pkg ="pkg_name" 包名 

type ="exe_name" 节点类型,即编译生成的可执行文件

name ="node_name"节点名称自定义但不能重复

args ="arg1 ..."  传递节点的参数列表,(可选)

respawn ="true" 如果节点退出,自动重启;default:false,(可选

output ="screen" 标准输出/标准错误输出重定向屏幕,log重定向log文件,default:log,(可选

ns = “foo” 在foo命名空间启动节点,(可选

required ="true" 如果节点退出,杀死全部launch进程(可选

launch-prefix ="prefix arguments" 前置的参数,可以使用其他工具如gdb,valgrind等(可选


4 > <rosparam> 操作yaml 文件


<rosparam>操作参数

command="load|dump|delete"(默认load)

file="$(findpkg-name)/path/foo.yaml"(load或dump命令)yaml文件的名字

param="param-name"参数名


5  > <param>定义一个设置在参数服务器的参数,它可以添加到<node>


<param>参数

name="namespace/name"

value="value"(可选)如果省略这个参数,则应指定一个文件(binfile/textfile)或命令

type="str|int|double|boot"(可选)指定参数的类型

textfile="$(find pkg-name)/path/file"(可选)   

binfile="$(find pkg-name)/path/file"()

command="(find pkg-name)/exe '$(find pkg-name)/arg.txt'"(可选)exe是可执行文件(cpppy),arg.txt是参数文件


6 > <include>在当前launch文件中调用另一个launch文件


<include>参数

file="$(find pkg-name)/path/launch-file.launch"


7 > <env>设置节点的环境变量


<env>参数

name="environment-variable-name"

value="environment-variable-value" 


8 > <remap>将一个参数名映射为另一个名字


<remap>参数

from="original-name"

to="new-name"    


9 > <arg>定义一个局部参数,该参数只能在一个launch文件中使用


<arg>参数

<arg name="foo"/>声明一个参数foo,后面需要给它赋值

<arg name="foo" default="1"/>声明一个参数foo,如不赋值取默认值

<arg name="foo" value="bar"/>声明一常量foo,它的值不能修改



另:ROS与激光雷达教程



这篇关于UST-10LX使用hector_slam构建地图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/180823

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了