基于matlab使用车载激光雷达数据在惯性测量单元读数帮助下构建地图(附源码)

news2024/7/2 3:42:54

一、前言

此示例演示如何处理来自安装在车辆上的传感器的 3-D 激光雷达数据,以便在惯性测量单元 (IMU) 读数的帮助下逐步构建地图。这样的地图可以促进车辆导航的路径规划,也可以用于定位。为了评估生成的地图,此示例还展示了如何将车辆的轨迹与全球定位系统 (GPS) 记录进行比较。

二、概述

高清 (HD) 地图是一种地图服务,可提供精度高达几厘米的道路几何形状。这种精度水平使高清地图适用于自动驾驶工作流程,例如定位和导航。这种高清地图是通过从3D激光雷达扫描构建地图,结合高精度GPS和/或IMU传感器生成的,可用于定位几厘米内的车辆。此示例实现构建此类系统所需的功能子集。

在此示例中,您将学习如何:

  • 加载、浏览和可视化记录的驾驶数据

  • 使用激光雷达扫描构建地图

  • 使用 IMU 读数改进地图

三、加载和浏览记录的驾驶数据

此示例中使用的数据来自此 GitHub存储库,表示大约 100 秒的激光雷达、GPS 和 IMU 数据。数据以MAT文件的形式保存,每个文件都包含一个时间表。从存储库下载 MAT 文件并将它们加载到 MATLAB® 工作区中。

注意:此下载可能需要几分钟时间。

首先,加载从激光雷达保存的点云数据。每次激光雷达数据的扫描都使用对象存储为 3D 点云。此对象使用 K-d 树数据结构在内部组织数据,以便更快地进行搜索。与每次激光雷达扫描关联的时间戳记录在时间表的变量中。

从 MAT 文件加载 GPS 数据和变量用于存储车辆上 GPS 设备记录的地理坐标。

从 MAT 文件加载 IMU 数据。IMU 通常由报告车辆运动信息的各个传感器组成。它们结合了多个传感器,包括加速度计、陀螺仪和磁力计。该变量存储 IMU 传感器的报告方向。这些读数报告为四元数。每个读数被指定为包含四个四元数部分的 1×4 向量。将 1×4 矢量转换为四元数(自动驾驶工具箱)对象。

要了解传感器读数是如何传入的,请为每个传感器计算大致的帧持续时间。

GPS 传感器是最慢的,以接近 1 Hz 的速率运行。其次是激光雷达最慢的,以接近 10 Hz 的速率运行,其次是 IMU 以近 400 Hz 的速率运行。

四、可视化驾驶数据

要了解场景包含的内容,请使用流媒体播放器可视化记录的数据。

五、使用记录的激光雷达数据构建地图

激光雷达是功能强大的传感器,可用于其他传感器不起作用的挑战性环境中的感知。它们提供详细的、完整的 360 度车辆环境视图。

激光雷达可用于构建厘米级精度的高清地图,包括整个城市的高清地图。这些地图以后可用于车载定位。构建此类地图的典型方法是对齐从移动车辆获得的连续激光雷达扫描,并将它们组合成单个大点云。此示例的其余部分将探讨这种构建地图的方法。

  1. 对齐激光雷达扫描:使用点云配准技术(如迭代最近点 (ICP) 算法或正态分布变换 (NDT) 算法)对齐连续激光雷达扫描。该函数返回刚性变换,该变换使移动点云相对于参考点云对齐。通过连续组合这些变换,每个点云都变换回第一个点云的参考系。

  2. 合并对齐的扫描:一旦注册了新的点云扫描并将其转换回第一个点云的参考系,就可以将点云与第一个点云合并。

首先获取对应于附近激光雷达扫描的两个点云。要加快处理速度,并在扫描之间积累足够的运动,请使用每十分之一次扫描。

在注册之前对点云进行降采样。缩减采样可提高配准精度和算法速度。对点云进行预处理后,使用广义ICP算法进行注册。通过将指标名称-值参数设置为“planeToPlane”来实现。可视化注册前后的对齐方式。

请注意,点云在注册后对齐良好。即使点云紧密对齐,对齐仍然不完美。

现在,一对点云的处理管道已经很好地理解了,可以将其放在整个记录数据序列的循环中。全班同学把所有这些放在一起。该类的方法采用新的点云,并完成前面详述的步骤:

  • 对点云进行降采样。

  • 估计将以前的点云与当前点云合并所需的刚性变换。

  • 将点云转换回第一帧。

  • 将点云与累积的点云图合并。

此外,该方法还接受用于初始化注册的初始转换估计值。良好的初始化可以显著改善注册结果。相反,初始化不当可能会对注册产生负面影响。提供良好的初始化还可以缩短算法的执行时间。

提供登记初始估计的常用方法是使用恒定速度假设。使用上一次迭代的转换作为初始估计值。

该方法还创建和更新 2-D 顶视图流式点云显示。

点云配准本身就可以构建车辆穿越的环境地图。虽然地图可能看起来局部一致,但它可能在整个序列中产生了明显的漂移。在构建的地图上叠加地面实况轨迹。

通过计算轨迹之间的均方根误差 (rmse),将估计轨迹与真实轨迹进行比较。

在初始转弯后,估计的轨迹明显偏离地面真实轨迹。仅使用点云配准估计的轨迹可能会漂移,原因有很多:

  • 来自传感器的噪声扫描,没有足够的重叠

  • 缺乏足够强大的功能,例如,靠近长路

  • 初始变换不准确,尤其是当旋转显著时

六、使用 IMU 方向改进构建地图

IMU 是安装在平台上的电子设备。IMU 包含多个传感器,用于报告有关车辆运动的各种信息。典型的 IMU 包含加速度计、陀螺仪和磁力计。IMU 可以提供可靠的方向测量。

使用 IMU 读数为注册提供更好的初始估计值。此示例中使用的 IMU 报告的传感器读数已在设备上过滤。

使用IMU的方向估计显著改善了配准,从而以更小的漂移获得更近的轨迹。

七、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

程序有偿获取:评论区下留言,博主看到会私信你。

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

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

相关文章

国内环境安装Atlas OS步骤与网络问题解决

国内环境安装Atlas OS步骤与网络问题解决 Atlas 是一个开源、透明的项目,它修改了 Windows,并消除了影响游戏性能的所有负面缺点。我们是减少系统延迟、网络延迟、输入延迟和保持系统私密性的绝佳选择,同时仍然关注性能。我不久前在安装时遇…

【论文基本功】【LaTeX】参考文献中常见属性的用法及特点(bib文件)【IEEE论文】

【论文基本功】【LaTeX】参考文献中常见属性的用法及特点(bib文件)【IEEE论文】 一、author(作者)1. 使用方法用法1:作者名字的两种写法用法2:使用and连接不同作者姓名用法3:超过3个作者时如何使…

Excel如何在运算中过滤重复数据?

来百度APP畅享高清图片 问题:两个对比表格内的数据实际是有重复的但是不是完全重复,比如a-b 和b-a 只是顺序换了但是条件格式就无法筛选了,只能筛选出a-b a-b 的相同数据。 需求:要筛选出a-b a-b b-a的重复数据,或者把…

3.2.cuda运行API-第一个运行时程序,hello-cuda

目录 前言1. hello-cuda总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习精简 CUDA 教程-第一个运行时程序,hell…

助力打造“先锋城市” 中国数字智能生态大会在深圳举行

随着数字经济的深入发展,以人工智能、大数据、数字孪生等新技术所产生的社会价值日益凸显,以“技术红利”牵引带动“改革红利”,形成广泛共识。 7月5日下午,以供需对接、链接合作为特色的 CDEC2023中国数字智能生态大会深圳站活动…

logstash grok解析Java log实践

针对Java配置的日志格式如下: <property name="log_pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %mm{sessionId} %-5level %logger{50} [%file:%line] - %P{traceId} - %msg%n"/> %d表示日期, %thread表示线程名, %-…

在vue中全局修改滚动条样式

在App.vue中加入以下样式代码&#xff1a; ::-webkit-scrollbar {-webkit-appearance: none;width: 6px;height: 6px; } ::-webkit-scrollbar-track {background: rgba(0, 0, 0, 0.1);border-radius: 0; } ::-webkit-scrollbar-thumb {cursor: pointer;border-radius: 5px;bac…

【MySQL库表操作】

一、数据库Market中创建表customers 1、创建数据库 #创建数据库 mysql> create database Market; mysql> use Market;2、创建数据表 #创建数据表 mysql> create table customers(-> c_num int(11) primary key auto_increment,-> c_name varchar(50),-> c_…

【SQL】查找多个表中相同的字段

--查找字段所在 SELECTbb.TABLE_NAME,bb.COLUMN_NAME ,aa.COLUMN_ID,aa.DATA_TYPE,aa.DATA_LENGTH ,bb.COMMENTS FROMuser_tab_cols aa JOIN user_col_comments bb ONaa.TABLE_NAME bb.TABLE_NAMEAND aa.COLUMN_NAME bb.COLUMN_NAME JOIN dba_objects cc ONbb.TABLE_NAME cc…

Python程序设计——总目录

下面三套课程只是适用人群不同&#xff0c;基本知识点覆盖都是一样&#xff0c;不同人群选择不同的课程学习即可&#xff0c;不必要全都学习&#xff0c;以下是适用人群介绍&#xff1a; Python程序设计&#xff1a;适用于有一定基础且时间充裕的朋友Python基础&#xff1a;适…

Scala的变量和数据类型续篇

Scala的变量和数据类型续篇 文章目录 Scala的变量和数据类型续篇写在前面字符串字符串连接传值字符串插值字符串多行字符串 输入输出输入输出网络 数据类型Java数据类型Scala数据类型 类型转换自动类型转化&#xff08;隐式转换&#xff09;强制类型转化字符串类型转化 写在前面…

SSM学习笔记-------Spring(二)

SSM学习笔记-------Spring&#xff08;二&#xff09; Spring_day021、IOC/DI配置管理第三方bean1.1 案例:数据源对象管理1.1.1 环境准备1.1.2 思路分析1.1.3 实现Druid管理步骤1:导入druid的依赖步骤2:配置第三方bean步骤3:从IOC容器中获取对应的bean对象步骤4:运行程序 1.1.4…

清华大学团队提出一种基于稳态视觉诱发反应的混合脑机接口

更多脑机接口前沿技术&#xff0c;关注公众号&#xff1a;脑机接口社区 近日&#xff0c;清华大学团队提出一种基于脑电图&#xff08;EEG&#xff09;和磁脑电图&#xff08;MEG&#xff09;混合的脑机接口&#xff08;BCI&#xff09;系统的研究&#xff0c;旨在提高BCI性能…

数字电路设计——加法器

数字电路设计——加法器 半加器 半加器只有两个一位宽的输入 a a a 和 b b b &#xff0c;输出 a b ab ab 所产生的本位和 s u m sum sum 和进位 c o u t cout cout。组合逻辑为&#xff1a; S A ⊕ B , C o u t A B S A \oplus B,Cout AB SA⊕B,CoutAB 真值表和原…

选读SQL经典实例笔记02_多表查询

1. 除非有必要&#xff0c;否则不要用UNION代替UNION ALL 2. 查找两个表中相同的行 2.1. 当执行连接查询时&#xff0c;为了得到正确的结果&#xff0c;必须慎重考虑要把哪些列作为连接项 2.2. 当参与连接的行集里的某些列可能有共同值&#xff0c;而其他列有不同值的时候&a…

2.4.cuda驱动API-使用驱动API进行内存分配

目录 前言1. 内存分配总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记 本次课程学习精简 CUDA 教程-Driver API 内存分配 课程大纲可见下面…

基于Java生活缴费系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

【工具】录屏工具Bandicam参数测试(参数设置建议)

一款小而精美的软件&#xff0c;上手特别容易&#xff0c;学习版参见b站up视频&#xff1a;【免费】好用录屏软件推荐&#xff0c;无水印1080P你值得拥有。 我有个需求&#xff0c;要求录屏但视频文件尽可能小但保持基本清晰。 我分别用看视频环境&#xff08;b站学习教程类&…

探索全桥电机驱动模块:实现精确控制与高效驱动

全桥电机驱动模块是一种在现代工程应用中广泛使用的电机驱动方式。对于需要精确控制和高效驱动的场景&#xff0c;如机器人、无人机、电动车等&#xff0c;全桥电机驱动模块提供了理想的解决方案。本文将介绍全桥电机驱动模块的原理和实际应用场景&#xff0c;并对几种常见的全…

【高并发网络通信架构】引入IO多路复用(select,poll,epoll)实现高并发tcp服务端

目录 一&#xff0c;往期文章 二&#xff0c;基本概念 IO多路复用 select 模型 poll 模型 epoll 模型 三&#xff0c;函数清单 1.select 方法 2.poll 方法 3.epoll_create 方法 4.epoll_ctl 方法 5.epoll_wait 方法 6.struct epoll_event 结构体 四&#xff0c;代…