基于激光里程计的gmapping建图

2023-12-05 09:20

本文主要是介绍基于激光里程计的gmapping建图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • rplidar_ros通过源码安装
  • 安装rf2o_laser_odometry激光里程计
  • 配置gmapping参数
  • 参考

rplidar_ros通过源码安装

mkdir -p ~/catkin_ws/src
cd  ~/catkin_ws/src
git clone https://github.com/Slamtec/rplidar_ros.git
cd ..
catkin_make 
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc

安装rf2o_laser_odometry激光里程计

#依然是将rf2o_laser_odometry下载到ROS工作空间
cd ~/catkin_ws/src/
git clone https://github.com/MAPIRlab/rf2o_laser_odometry.git
cd ~/catkin_ws/
catkin_make

配置参数

<launch><node pkg="rf2o_laser_odometry" type="rf2o_laser_odometry_node" name="rf2o_laser_odometry" output="screen"><param name="laser_scan_topic" value="/scan"/>        # topic where the lidar scans are being published<param name="odom_topic" value="/odom" />              # topic where tu publish the odometry estimations<param name="publish_tf" value="true" />                   # wheter or not to publish the tf::transform (base->odom)<param name="base_frame_id" value="base_link"/>            # frame_id (tf) of the mobile robot base. A tf transform from the laser_frame to the base_frame is mandatory<param name="odom_frame_id" value="odom" />                # frame_id (tf) to publish the odometry estimations    <param name="init_pose_from_topic" value="" /> # (Odom topic) Leave empty to start at point (0,0)<param name="freq" value="6.0"/>                            # Execution frequency.<param name="verbose" value="true" />      </node></launch>

下载得到的原始rf2o_laser_odometry代码有两个问题,如果不修复会有下面这两个报错:

#报错1:

ERRO:“base_link” passed to lookupTransform argument source_frame does not exist. 或者 ERRO:Invalid argument passed to lookupTrasform argument source_frame in tf2 frame_ids cannot be empty

#报错2:

[rf2o] ERROR: Eigensolver couldn’t find a solution. Pose is not updated

第1个错误是由于程序订阅/tf话题数据时超时,加个延迟就好了。在源码rf2o_laser_odometry/src/CLaserOdometry2DNode.cpp中第126行的上面添加下面这句:

tf_listener.waitForTransform(base_frame_id,"laser_link",ros::Time(),ros::Duration(5.0));

第2个错误是你的激光雷达上传来的数据包含Inf或NaNs非法格式数据,我亲测发现EAI-X4雷达没有这个问题,而Rplidar-A1雷达会有这个问题,以防万一还是修复一下吧。将源码rf2o_laser_odometry/src/CLaserOdometry2D.cpp中第292和316行的条件语句都改成下面这个:

if (std::isfinite(dcenter) && dcenter > 0.f)

配置gmapping参数

在./rplidar_ros/launch文件夹中设置a1_gmapping.launch

<!-- 
Example launch file: uses laser_scan_matcher together with
slam_gmapping 
--><launch><include file="$(find rplidar_ros)/launch/rplidar.launch"/><node pkg="tf" type="static_transform_publisher" name="base_link_to_laser" args="0.0 0.0 0.0 0.0 0.0 0.0 /base_link /laser 100" /><node pkg="tf" type="static_transform_publisher" name="odom_to_laser" args="0.0 0.0 0.0 0.0 0.0 0.0 /odom /laser 100" /><node pkg="tf" type="static_transform_publisher" name="map_to_laser" args="0.0 0.0 0.0 0.0 0.0 0.0 /map /laser 100" /><include file="$(find rf2o_laser_odometry)/launch/rf2o_laser_odometry.launch"/><node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen"><param name="map_udpate_interval" value="1.0"/><param name="maxUrange" value="12.0"/><param name="sigma" value="0.1"/><param name="kernelSize" value="1"/><param name="lstep" value="0.15"/><param name="astep" value="0.15"/><param name="iterations" value="1"/><param name="lsigma" value="0.1"/><param name="ogain" value="3.0"/><param name="lskip" value="1"/><param name="srr" value="0.1"/><param name="srt" value="0.2"/><param name="str" value="0.1"/><param name="stt" value="0.2"/><param name="linearUpdate" value="1.0"/><param name="angularUpdate" value="0.5"/><param name="temporalUpdate" value="0.4"/><param name="resampleThreshold" value="0.5"/><param name="particles" value="10"/><param name="xmin" value="-10.0"/><param name="ymin" value="-10.0"/><param name="xmax" value="10.0"/><param name="ymax" value="10.0"/><param name="delta" value="0.02"/><param name="llsamplerange" value="0.01"/><param name="llsamplestep" value="0.05"/><param name="lasamplerange" value="0.05"/><param name="lasamplestep" value="0.05"/></node></launch>

参考

https://huaweicloud.csdn.net/64f987ec6b896f66024ca8ab.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MjAxNTYzLCJleHAiOjE3MDE2NTYxODcsImlhdCI6MTcwMTA1MTM4NywidXNlcm5hbWUiOiJ3ZWl4aW5fNDI5OTA0NjQifQ.0-th9fBousxKLdtCglRdh2r99y395OoaTDG1hgzuc_0#devmenu7

这篇关于基于激光里程计的gmapping建图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

iOS激光扫地机地图

最近在做一款激光扫地机地图,期间遇到了很多问题,在此做个记录,基本效果如下: 主要涉及到: 1、十六进制点阵转位图。 这部是绘制地图的关键,主要实现如下: NSData *newData = [NSData dataWithBytes:dstBuffer length:decompressLen];Byte *newByte = (Byte *)newData.bytes;char*

激光气体热值分析仪在线干法取样预处理装置制备方法

激光气体热值分析仪在线干法取样预处理装置制备方法 一、项目提出前状况: 在冶金企业产生大量的燃气副产品,主要有高炉煤气、转炉煤气、焦炉煤气,这些二次能源的高效利用是企业降本增效的重要途径。燃气热值是燃气最主要的质量指标,热值准确检测对燃气科学配比和有效利用具有重要意义。可燃气体热值仪检测不准是多年困绕于冶金、化工、电力等行业公认的技术难题,长期使用证明,目前使用的“燃烧式”热值仪无法准确实现可

什么是距离选通型水下三维激光扫描仪?(下)

距离选通激光水下成像的发展 距离选通激光成像技术始于上世纪60年代,受制于高性能脉冲激光器和选通成像器件发展的制约,激光距离选通成像技术在随后的二十年发展缓慢,直到20世纪90年代,随着硬件技术的不断成熟,该技术才得到迅速发展。 2016年黄子恒对水下三维成像技术总结为:基于条纹管的激光雷达系统的线扫描成像、多角度拍摄三维成像、点扫描三维成像技术以及基于距离选通成像系统的单帧三维成像和基于距离

轮式里程计(Wheel Odometry)和惯性测量单元(IMU)的融合

轮式里程计(Wheel Odometry)和惯性测量单元(IMU)的融合通常采用某种形式的滤波技术,最常见的是卡尔曼滤波器(Kalman Filter)或其变体,如扩展卡尔曼滤波器(Extended Kalman Filter, EKF)、无迹卡尔曼滤波器(Unscented Kalman Filter, UKF)或粒子滤波器(Particle Filter)。这些滤波器能够综合两种传感器的优势,

Modbus协议转Profibus协议网关模块连PLC与激光发射器通讯

一、概述 在PLC控制系统中,从站设备通常以Modbus协议,ModbusTCP协议,Profinet协议,Profibus协议,Profibus DP协议,EtherCAT协议,EtherNET协议等。本文将重点探讨PLC连接Modbus协议转Profibus协议网关模块(XD-MDPB100)与激光发射器通讯的相关内容,为您详细解析这一过程的原理与操作步骤。 二、PLC连接Modbus

机器人里程计(Odometry)

机器人里程计(Odometry)是机器人定位和导航中的一个关键概念,它涉及到利用传感器数据来估计机器人在环境中的位置和姿态。里程计的基本原理是根据机器人自身动作的反馈来计算其相对于初始位置的位移。这通常包括机器人从一个已知位置开始,然后使用各种类型的传感器来测量其自身的运动。 以下是一些常见的里程计类型: 1. **轮式里程计(Wheel Odometry)**:    - 使用安装在机器人轮

Starlink全系卫星详细介绍,波段频谱、激光星间链路技术、数据传输速率等等

Starlink全系卫星详细介绍,波段频谱、激光星间链路技术、数据传输速率等等。 Starlink是SpaceX公司开发的一个低轨道(LEO)卫星网络系统,旨在为全球用户提供高速宽带互联网服务。截至2024年6月,Starlink已经发射并运行了超过5600颗活跃卫星,构成了目前为止最大的卫星星座。 |Starlink的卫星类型 1.Starlink V1.5卫星 Starlink

实现ROS中两个里程计数据的转换到同一坐标系下

在多传感器融合的场景中,不同传感器可能会提供不同的位置信息。这段代码的目标是将来自两个不同来源的里程计数据转换到同一个参考坐标系(在这里,选择 odom0 的坐标系作为参考)下进行对齐,以便于后续的融合和处理。 核心步骤解析 读取和订阅里程计数据: 代码首先从ROS参数服务器读取里程计数据的订阅话题名称。然后,订阅来自两个不同来源的里程计数据,并通过回调函数来更新全局变量 o

ROS学习记录:launch文件启动Hector_Mapping的建图功能

前言 SLAM软件包Hector_Mapping 在上一篇笔记中,通过Hector_Mapping软件包实现了SLAM功能,运行了四条指令,有些麻烦。本文通过launch文件的使用将指令整合起来,方便功能的实现。 一、打开终端,输入cd catkin_ws1/src/,进入工作空间的src目录。 二、输入catkin_create_pkg slam_pkg roscpp rospy st

(南京观海微电子)——TFT激光修复技术

激光在显示面板修复方面的应用 液晶面板包括TFT玻璃、CF玻璃、面板以及后段模块组装等一系列工艺制作过程。每段过程中都会产生一定的缺陷,例如亮点、暗点、闪点、碎亮点等。这些缺陷会导致部分区域显示不良,但是我们可以通过暗点化、亮点化、ITO隔离、激光炸射等方法对其进行修复或淡化,在实际生产中大约有5%~8%的点缺陷产生,通过激光修复或淡化后,可提升面板生产良率,从而大大降低面板企业