基于SC-LeGO-LOAM的建图和ndt_localizer的定位

news2025/2/23 23:27:53

link

  1. 原作者使用的是Ouster OS1-64雷达,本文采用velodyne 16线激光雷达,对utility.h文件要做以下修改

首先是pointCloudTopicimuTopic

 # 将原本的这两行注释或者直接修改
// extern const string pointCloudTopic = "/os1_points";
// extern const string imuTopic = "/imu/data";
 # 修改为对应的雷达和IMU的Topic
extern const string pointCloudTopic = "/velodyne_points";
extern const string imuTopic = "/imu/data";

再将原本的这行注释掉,添加以下代码

# 注释
// Ouster OS1-64
//extern const int N_SCAN = 64;
//extern const int Horizon_SCAN = 1024;
//extern const float ang_res_x = 360.0/float(Horizon_SCAN);
//extern const float ang_res_y = 33.2/float(N_SCAN-1);
//extern const float ang_bottom = 16.6+0.1;
//extern const int groundScanInd = 15;

添加

// VLP-16
extern const int N_SCAN = 16;
extern const int Horizon_SCAN = 1800;
extern const float ang_res_x = 0.2;
extern const float ang_res_y = 2.0;
extern const float ang_bottom = 15.0+0.1;
extern const int groundScanInd = 7;

对于64线的VLP雷达,添加:

extern const int N_SCAN = 64;
extern const int Horizon_SCAN = 2083;
extern const float ang_res_x = 360.0/float(Horizon_SCAN);
extern const float ang_res_y = 26.8/float(N_SCAN-1);
extern const float ang_bottom = 24.8;
extern const int groundScanInd = 55;

  1. 再次编译
cd /catkin_ws
catkin_make
source devel/setup.bash
  1. 运行
roslaunch lego-loam run.launch
#播放bag包
rosbag play --clock ***.bag
#如果bag的雷达话题不是/velodyne_points,可在播放的时候添加话题映射,例如原话题为/rslidar_points
rosbag play --clock ***.bag /rslidar_points:=/velodyne_points

在SC-LeGO-LOAM中,imu起着去除运动畸变的作用,但在实际运行中发现,添加了imu话题之后,建图会产生漂移。所以,在播放bag包的时候为加入imu话题,建图效果也还好。

SC-LeGO-LOAM中添加了自动保存地图功能,bag包播放结束后,Ctrl+C结束,即可在map文件夹下生成pcd文件。建图过程到此完成,下面是实现NDT定位。
在这里插入图片描述


二、利用ndt_localizer进行定位

  1. 下载源码包
cd /catkin_ws/src
git clone https://github.com/AbangLZU/ndt_localizer.git
cd ..
catkin_make

 
 
  • 1
  • 2
  • 3
  • 4
  1. 将之前生成的***.pcd文件复制到ndt_localizer文件下的map文件夹里,对launch文件进行修改

map_loader.launch
将***.pcd 修改为map文件下的名称

<!--- MapLoader -->    
<arg name="pcd_path"  default="$(find ndt_localizer)/map/***.pcd"/>

ndt_localizer.launch
将urdf模型注释

<!-- <include file="$(find ndt_localizer)/launch/lexus.launch" /> -->

 
 
  • 1

pointsdownsample.launch
将雷达话题改为/velodyne_points;leaf_size改为1.0(如果采用的是16线的激光雷达,那么降采样的 leaf_size 控制在1 - 2 m 较为合适,当采用的激光雷达为 32 线及以上 , 可以将 leaf size 设置为 2 - 3 m )

<!-- <arg name="points_topic" default="/apollo/sensor/velodyne32/PointCloud2/fusion" /> -->
<arg name="points_topic" default="/velodyne_points" />
<arg name="output_log" default="false" />
<arg name="leaf_size" default="1.0" />

 
 
  • 1
  • 2
  • 3
  • 4
  1. 运行
cd /catkin_ws
catkin_make
source devel/setup.bash
roslaunch ndt_localizer ndt_localizer.launch

 
 
  • 1
  • 2
  • 3
  • 4

此时,地图会在rviz里面加载出来

在这里插入图片描述

  1. 再选择rviz里面的 2D Pose Estimate,选定车辆的初始姿态(一切使用预先构建的地图进行配准定位的方法都需要提供初始姿态,在工业界的实践中,这一初始姿态通常是通过 gnss 获得,本文中我们简化这一步,在 Rviz 中手动指定初始姿态, Rviz 中设定的初始姿态通常会被默认发送至 /initialpose topic 上)

  2. 然后另起终端,播放bag包,即可看到定位的实现过程。
    在这里插入图片描述
    问题记录:
    换成Ubuntu20.04后运行lego-loam出现rviz不显示点云的现象;

# rviz提示错误:
failed to transform from frame /camera_init to frame map
failed to transform from frame /camera to frame map

 
 
  • 1
  • 2
  • 3

解决: 将***.cpp文件中的/camera_init替换为camera_init;/camera替换为camera;launch文件同理;

参考文献

  1. https://github.com/AbangLZU/SC-LeGO-LOAM.git
  2. https://github.com/AbangLZU/ndt_localizer.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1159249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5G智能安全帽_实时对讲/视频通话/高精度定位_智能安全帽功能介绍

5G智能安全帽是一种具有工业级高清晰度摄像头和5G/WIFI网络功能的产品。在传统安全帽的基础上&#xff0c;智能安全帽集成了摄像头、语音和通信主板等模块。它具备高清视频采集、语音通讯、对讲、本地视频存储等功能&#xff0c;通过这种佩戴式设备&#xff0c;不仅可以实现数据…

app逆向之charles配置

声明&#xff1a;本文仅限学习交流使用&#xff0c;禁止用于非法用途、商业活动等。否则后果自负。如有侵权&#xff0c;请告知删除&#xff0c;谢谢&#xff01;本教程也没有专门针对某个网站而编写&#xff0c;单纯的技术研究 目录 charles配置手机配置 charles配置 最近有点…

瑞数专题五

今日文案&#xff1a;焦虑&#xff0c;想象力过度发酵的产物。 网址&#xff1a;https://www.iyiou.com/ 专题五主要是分享瑞数6代。6代很少见&#xff0c;所以找理想哥要的&#xff0c;感谢感谢。 关于瑞数作者之前已经分享过4篇文章&#xff0c;全都收录在瑞数专栏中了&am…

arcpy.message实现探索

arcpy 位置D:\Program Files\GeoScene\Pro\Resources\ArcPy\arcpy\__init__.py ”““AddMessage(消息) 创建可以使用任何GetMessages函数访问的地理处理信息消息(Severity0)。 message(字符串):要添加的消息。”“ arcpy.geoprocessing D:\Program Files\GeoScene\Pro\Re…

求购供应发布农业副业产品市场行情小程序开发

农业副业产品求购供应发布市场行情小程序H5开源版开发 后台同步&#xff1a;一键获取全国近200家农产品批发市场的商品价格&#xff0c;包括蔬菜、水果、水产、粮油和农副产品等。 实时更新和同步市场价格动态&#xff0c;保障信息的准确性和时效性。 前端VIP权益功能&…

WPF RelativeSource属性-目标对象类型易错

上一篇转载了RelativeSource的三种用法&#xff0c;其中第二种用法较常见&#xff0c;这里记录一下项目中曾经发生错误的地方&#xff0c;以防自己哪天忘记了&#xff0c;又犯了同样错误—WPF RelativeSource属性-CSDN博客 先回顾一下&#xff1a; 控件关联其父级容器的属性—…

利用Graviton2和S3免费套餐搭建私人网盘

网盘是一种在线存储服务&#xff0c;提供文件存储&#xff0c;访问&#xff0c;备份&#xff0c;贡献等功能&#xff0c;是我们日常中不可或缺的一种服务。很多互联网公司都为个人和企业提供免费的网盘服务。但这些免费服务都有一些限制&#xff0c;比如限制下载速度&#xff0…

C语言 Number 1 基本数据类型

数据类型的定义 c语言的数据分类基本类型整型浮点型float和double的精度和范围范围精度 枚举类型空类型派生类型派生的一般表达形式 注 c语言的数据分类 首先是针对C语言的数据类型做个整理 大致分为四个大类型 基本类型枚举类型空类型派生类型 那么根据以上四个大类型 我们…

万物摩尔定律:人工智能技术的快速迭代将使人类万劫不复?

第一次工业革命&#xff1a;蒸汽机时代&#xff1b; 第二次工业革命&#xff1a;电气化时代&#xff1b; 第三次工业革命&#xff1a;信息化时代&#xff1b; 第四次工业革命&#xff1a;智能化革命。这一场革命正在上演&#xff0c;是人工智能&#xff08;AI&#xff09;带…

预处理详解(一)

1 预定义符号 __FILE__ //进行编译的源文件 __LINE__ //文件当前的行号 __DATE__ //文件被编译的日期 __TIME__ //文件被编译的时间 __STDC__ //如果编译器遵循ANSI C&#xff0c;其值为1&#xff0c;否则未定义 这些预定义符号都是…

试题二(15分)和试题三(15分) (软件设计师笔记)

&#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x1f609; 在csdn获奖荣誉: &#x1f3c6;csdn城市之星2名 ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣…

Web安全系列——XSS攻击

文章首发公众号&#xff1a; 海天二路搬砖工 一、什么是XSS攻击 XSS &#xff08;Cross-site scripting&#xff09;攻击&#xff0c;即跨站脚本攻击。 攻击者通过在受害者的浏览器中注入恶意代码&#xff0c;攻击受害者的登录凭证、盗取敏感信息或控制受害者的会话等。 XS…

泛微e-office download.php任意文件

0x01 应用介绍 泛微e-office系统是标准、易用、快速部署上线的专业协同OA软件,国内协同OA办公领域领导品牌,致力于为企业用户提供专业OA办公系统、移动OA应用等协同OA整体解决方案 0x02 影响版本及语法特征 泛微e-offcie9 fofa&#xff1a;app”泛微-EOffice” && b…

掌握 JavaScript 的基本语法

一、javascript书写位置 JavaScript 可以写在 HTML 页面中的以下三个位置&#xff1a; 内联脚本&#xff1a;将 JavaScript 代码直接写在 HTML 元素的 onclick、onload、onsubmit 等事件属性中。例如&#xff1a; <button onclick"alert(Hello World)">点击我…

测试遇到bug怎么分析,这可能是我看到最专业的总结了!

为什么定位问题如此重要&#xff1f; 可以明确一个问题是不是真的“bug” 很多时候&#xff0c;我们找到了问题的原因&#xff0c;结果发现这根本不是bug。原因明确&#xff0c;误报就会降低多个系统交互&#xff0c;可以明确指出是哪个系统的缺陷&#xff0c;防止“踢皮球”&…

前端如何不变形的渲染图片大小和图片上的内容

在做前端项目时可能经常会页面图片大小变形或者压缩的情况&#xff0c;一般情况就是height给100%&#xff0c;width给auto就可以了满足大部分使用情况了。有时候需要做一些比较复杂的功能&#xff0c;比如需要在图片上增加锚点&#xff0c;而且图片在适配各种屏幕大小时&#x…

Win11右键没有新建文件夹怎么办

1、按下键盘winr打开运行功能&#xff0c;输入regedit&#xff0c;按下回车&#xff0c;打开注册表编辑器。 2、然后在打开的注册表编辑器窗口&#xff0c;我们展开HKEY_CLASSES_ROOT。 3、接下来我们在HKEY_CLASSES_ROOT展开项中找到&#xff1a;Directory&#xff0c;再依次展…

自动驾驶算法(一):Dijkstra算法讲解与代码实现

目录 0 本节关键词&#xff1a;栅格地图、算法、路径规划 1 Dijkstra算法详解 2 Dijkstra代码详解 0 本节关键词&#xff1a;栅格地图、算法、路径规划 1 Dijkstra算法详解 用于图中寻找最短路径。节点是地点&#xff0c;边是权重。 从起点开始逐步扩展&#xff0c;每一步为一…

MacOS安装homebrew

文章目录 官网脚本无法正常下载安装使用HomebrewCN国内安装脚本进行安装找到一份合适的安装脚步执行安装脚本 Homebrew自己的安装位置使用Homebrew安装tree指令验证安装是否成功Homebrew把软件程序都安装到哪里了 Homebrew安装需要依赖Git&#xff0c;请先确保Git已安装成功 Ho…