[论文阅读]4DRadarSLAM: A 4D Imaging Radar SLAM System for Large-scale Environments
目录
1.摘要和引言:
2. 系统框架:
2.1 前端:
2.2 回环检测:
2.3 后端:
3.实验和分析:
4.结论
1.摘要和引言:
这篇论文介绍了一种名为“4DRadarSLAM”的新型4D成像雷达SLAM系统,旨在提高大规模环境下的定位与地图构建性能。与传统的基于激光雷达的SLAM系统相比,该系统在恶劣天气条件下表现更佳。它包括前端、回环检测和后端三个主要部分:前端通过扫描匹配计算里程计数据,回环检测模块识别回环,后端则构建并优化姿态图。该系统的显著特点是考虑了每个点的概率分布,从而改善性能。论文中还展示了在不同平台和数据集上的实验结果,证明了该系统的准确性、鲁棒性和实时性。此外,为了进一步促进相关研究,研究者将系统代码开源。https://github.com/zhuge2333/4DRadarSLAM
引言部分介绍了同步定位与地图构建(SLAM)的重要性,并指出在恶劣天气条件下,基于激光雷达的SLAM系统可能会受到限制。因此,近年来越来越多的关注转向了稳健的毫米波雷达测距(mmWave Radar)。然而,大多数研究集中在2D或3D雷达上,而关于4D雷达(x, y, z, 多普勒)的研究相对较少。4D雷达是一种相对较新的技术,其收集的点云比3D激光雷达更嘈杂和稀疏,这使得从4D雷达的点云中提取有效的几何特征更具挑战性。因此,直接将3D激光雷达SLAM方法应用于4D雷达SLAM并不可行。论文提出了一个针对4D成像雷达的完整SLAM系统,包括前端、回环检测和后端。

2. 系统框架:

4DRadarSLAM系统分三个主要模块:前端、回环检测和后端。在前端模块中,使用4D雷达点云作为输入,估计里程计数据并生成关键帧。回环检测模块评估每个新的关键帧,以确定是否能形成回环。在后端,构建并使用g2o优化姿态图,从而生成优化后的姿态作为输出。整个系统旨在通过这些模块协同工作,提高SLAM系统在大规模环境中的性能和准确性。
2.1 前端:
预处理阶段:需要过滤掉动态物体。可以利用雷达的多普勒速度信息来识别这些物体。在这项研究中,作者使用一种在文献[33]中提出的线性最小二乘法来估计雷达的自我速度。通过估计的多普勒速度和自我速度,他们能够确定物体的真实速度。这一过程有助于提高SLAM系统对环境的理解和处理能力,尤其是在动态和复杂的场景中。
Scan-to-Scan matching: 输入是上一关键帧(Fk)和新的一帧(Pt)。目标是找到从t到k的转换矩阵(Ttk)。由于4D雷达点云的噪声较大,直接提取几何特征(如边缘和平面)并不容易。我们发现,与 ICP 和 NDT 相比,GICP 算法可以输出更可接受的结果。初始转换矩阵设置为上一次的转换矩阵(Ttk-1)。提出了一种新的算法,称为自适应概率分布-GICP(APDGICP),它在 GICP 算法中考虑了每个点的空间概率分布。根据雷达手册,点的测距不确定性为 σr = 0.00215r,其中 r 和 σr 分别是测量的距离和不确定性。方位角和仰角精度分别为 0.5° 和 1.0°,这导致了球坐标系中方位角和仰角方向的不确定性,近似为 σa ≈ sin(0.5°)r 和 σe ≈ sin(1.0°)r。由此产生的概率分布如下图所示,类似于一个椭球体(橙色),一个轴指向原点,三个半轴长度分别为 σr(距离)、σa(方位角)和 σe(仰角)。

关键帧选择:第一帧被指定为固定关键帧,而后续关键帧的确定取决于是否满足以下两个条件之一:1. 当前帧和上一关键帧之间的平移量超过阈值 δt; 2. 当前帧和上一关键帧之间的旋转量超过阈值 δr。阈值参数根据经验设置如下:δt = 0.5m 或 2m,δr = 15°。第 k 个和第 k+1 个关键帧之间的扫描到扫描匹配结果作为 SE(3) 二元边添加到位姿图中。
2.2 回环检测:
此步骤的目的是确定每个关键帧是否构成了一个回环。首先,通过预过滤步骤基于四个规则识别潜在的环路,包括距离限制、空间接近性、高度差限制和姿态角限制。接着,利用强度扫描上下文模块来进一步筛选潜在的闭环候选。最后,为确保几何一致性,采用里程计检查步骤,以防止后端姿态图优化中的几何不一致问题。通过这些步骤,系统能有效识别并确认回环,从而增强SLAM系统的精度和可靠性。
2.3 后端:
基于前端里程计、闭环检测和GPS信号(如果可用)构建姿态图。关键帧在姿态图中表示为节点,节点之间的边代表里程计约束。当确定闭环时,将其作为约束(二元边)添加。如果有GPS信号,也可以将其作为单元边加入姿态图中,其协方差直接从GPS数据获得。最后,使用g2o库优化姿态图,得出优化的姿态。
3.实验和分析:
这里包括了对系统的前端和后端性能的定量分析,以及使用五个不同数据集的实验结果。实验显示,在小规模数据集上,APDGICP(自适应概率分布GICP)在前端性能上优于GICP,而在大规模数据集上GICP表现更好。准确的环路闭合显著提高了精度,尤其是在后端优化时。此外,使用GPS数据的后端优化进一步提高了系统的性能。文章还包括了对这些方法在不同数据集上轨迹的可视化比较,以及各个算法步骤的效率分析。




4.结论
在这篇论文中,为4D成像雷达引入了一个完整的SLAM系统,该系统由三个模块组成:前端、回环检测和后端。在前端,估计了雷达自身速度以去除动态物体,并提出了APDGICP算法,该算法考虑了原始GICP中每个点的概率分布,用于扫描到扫描匹配。在回环检测中,引入了几种回环过滤方法,并使用强度扫描上下文来查找回环候选。实现了一个里程计检查模块,以确定最佳回环。在后端,基于前端里程计、检测到的回环和GPS数据构建位姿图。使用自己收集的数据集进行了大量实验,这些数据集涵盖了各种环境和速度,包括结构化和非结构化、小规模和大规模环境、低速和中速。我们提出的系统在笔记本电脑上实现了实时性能,相对误差(RE)为2.05%、0.0052deg/m,绝对轨迹误差(ATE)为2.35m。未来的工作包括:融合4D雷达和IMU以实现更鲁棒的SLAM。
相关文章:
[论文阅读]4DRadarSLAM: A 4D Imaging Radar SLAM System for Large-scale Environments
目录 1.摘要和引言: 2. 系统框架: 2.1 前端: 2.2 回环检测: 2.3 后端: 3.实验和分析: 4.结论 1.摘要和引言: 这篇论文介绍了一种名为“4DRadarSLAM”的新型4D成像雷达SLAM系统࿰…...
Python: vars()详细解释
vars() 是一个内置函数,用于返回一个对象的 __dict__ 属性。它接受一个对象作为参数,如果省略参数,它返回当前局部作用域的字典。 具体而言,vars() 的行为取决于参数的类型: 1. 没有参数: 如果没有提供参…...
2024年1月15日Arxiv最热论文推荐:斯坦福LLM精准微调新框架、GPT不愿承认回答错误、速度快15倍的3D全景分割新突破
本文整理了今日发表在ArXiv上的AI论文中最热门的TOP5。 论文解读、论文热度排序、论文标签、中文标题、推荐理由和论文摘要均由赛博马良平台上的智能体 「AI论文解读达人」提供。 如需查看其他热门论文,欢迎移步赛博马良 ^_^ TOP1 APAR: LLMs Can Do Auto-Paral…...
1.5 面试经典150题 - 轮转数组
轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 注意:本题需要原地操作 class Solution(object):def rotate(self, nums, k):""":type nums: List[int]:type k: int:rtype: None Do not…...
Linux的基础命令学习
pwd - 显示当前工作目录的路径 cd - 切换工作目录,ls - 列出当前目录的文件和子目录 rm - 删除文件或目录 mkdir - 创建新目录 rm - 删除目录 nano/vi - 编辑文本文件,按Enter键进入 之后按i键就可以进入写入模式 之后输入文字以后按Esc键与:q就不保…...
个人数据备份方案分享(源自一次悲惨经历)
文章目录 1 起源2 备份架构2.1 生活照片2.2 生活录音2.3 微信文件2.4 工作文件2.5 笔记、影视音乐、书籍 3 使用工具介绍3.1 小米云服务3.2 中国移动云盘3.3 小米移动硬盘(1T)3.4 FreeFileSync 4 总结 1 起源 本文的灵感源于我个人的一次不幸遭遇&#…...
SpringBoot教程(八) | SpringBoot统一结果封装
SpringBoot教程(八) | SpringBoot统一结果封装 经过了前面几篇文章,SpringBoot中MVC相关的配置其实都已经差不多了,接下来就可以完全进入接口开发阶段了。前面我们写过几个接口,虽然都加了RestController注解,相当于统一了我们的…...
Ubuntu 22.04 安装Fail2Ban
Fail2Ban是一种用来防止暴力破解的工具,一般要和iptables配合使用。其原理是读取系统日志,并通过正则表达式匹配,监控IP在一段时间内的登录尝试、身份验证失败日志等并进行计数。超过阈值则进行IP封禁,过一段时间后再解封。 总的…...
Ubuntu 22.04 编译安装 Qt mysql驱动
参考自 Ubuntu20.04.3 QT5.15.2 MySQL驱动编译 Ubuntu 18.04 编译安装 Qt mysql驱动 下边这篇博客不是主要参考的, 但是似乎解决了我的难题(找不到 libmysqlclient.so) ubuntu18.04.2 LTS 系统关于Qt5.12.3 无法加载mysql驱动,需要重新编译MYSQL数据库驱动的问题以…...
Mindspore 公开课 - CodeGeeX
CodeGeeX: 多语言代码生成模型 CodeGeeX 是一个具有130亿参数的多编程语言代码生成预训练模型。CodeGeeX采用华为MindSpore框架实现,在鹏城实验室“鹏城云脑II”中的192个节点(共1536个国产昇腾910 AI处理器)上训练而成。截至2022年6月22日&…...
说一下mysql的锁
1、全局锁: 影响整个数据库的锁。例如,当执行 FLUSH TABLES WITH READ LOCK; 命令时,会阻止其他用户写入数据库,但可以读取。全局锁简介 全局锁是一种跨所有数据库实例的锁。它可以确保在任何时刻,只有一个事务能够访问共享资源。全局锁通常用于以下场景: 并发性较高的场…...
rime中州韵小狼毫 日期/农历 时间 事件 节气 滤镜
教程目录:rime中州韵小狼毫须鼠管安装配置教程 保姆级教程 100增强功能配置教程 网络上但凡提到 rime中州韵小狼毫须鼠管输入法,总少不了智能时间,日期等炫技,可见这个便捷时间/日期输入功能是多么的受欢迎。作者也不落窠臼&…...
【前端】前后端的网络通信基础操作(原生ajax, axios, fetch)
概述 前后端网络请求工具 原生ajaxfetch apiaxios GET和POST请求 get只能发纯文本 post可以发不同类型的数据,要设置请求头,需要告诉服务器一些额外信息 测试服务器地址 有一些公共的测试 API 可供学习和测试用途。这些 API 允许你发送 HTTP 请求…...
Matter - 配置工厂数据(2)
部分关键名词参数简介 PASE(Passcode-Authenticated Session Establishment): 基于密码认证的会话建立,用于在 Commissioning 的时候 Commissioner 与 Matter Deivce 之间建立安全信道,生成对称加密密钥用于 Commissioning 后续通信消息进行加、解密和完…...
版本控制背景知识
版本控制背景知识 本文是关于 Git 系列文章的导读,我们先介绍一下版本控制的背景知识。 什么是版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。它将什么时候、什么人更改了文件的什么内容等信息如实记录下来…...
tensorflow报错: DNN library is no found
错误描述 如上图在执行程序的时候,会出现 DNN library is no found 的报错 解决办法 这个错误基本上说明你安装的 cudnn有问题,或者没有安装这个工具。 首先检测一下你是否安装了 cudnn 进入CUDA_HOME下,也就是进入你的cuda的驱动的安装目…...
DA14531-高级应用篇-用户如何开启OTA服务
文章目录 1. OTA相关文件2.OTA宏定义列表3.OTA主要函数接口4.OTA具体实施步骤5.总结1. OTA相关文件 1)app_suotar_task.c和app_suotar_task.h 2)app_suotar.c和app_suotar.h 2.OTA宏定义列表 宏定义注解CFG_PRF_SUOTAR用户开启SOTA功能BLE_SUOTA_RECEIVERSOTA功能服务CFG_S…...
国内镜像源配置方法(包括临时和永久方法)
国内镜像源: 阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/豆瓣 http://pypi.douban.com/simplePython官方 https://pypi.python.org/simple/v2ex http://pypi.v2ex.com/simple/中国科学院 http://pypi.mi…...
数据结构二叉树--堆(数据结构实现和堆排序的一种实现)
堆是一个数据结构 逻辑结构:完全二叉树(要求父节点大于孩子节点或者小于孩子节点) 存储结构:顺序存储 typedef int DataType; typedef struct Heap{DataType*data;int size;int capacity; }Heap;void InitHeap(Heap*pH) {asser…...
【Linux】 nohup命令使用
nohup命令 nohup是Linux和Unix系统中的一个命令,其作用是在终端退出时,让进程在后台继续运行。它的全称为“no hang up”,意为“不挂起”。nohup命令可以让你在退出终端或关闭SSH连接后继续运行命令。 nohup 命令,在默认情况下&…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
