当前位置:网站首页>Classical Literature Reading--DLO
Classical Literature Reading--DLO
2022-08-01 23:36:00 【Hermit_Rabbit】
0. 简介
这篇SLAM论文《Direct LiDAR Odometry: Fast Localization with Dense Point Clouds》作为NASA喷气推进实验室CoSTARNew work researched and developed by the team,received extensive attention from academia.It is mainly usedDARPAThe odometer of the underground challenge,A laser odometry capable of high-speed, high-precision processing and high-speed real-time processing of dense point clouds is proposed(LO)的思路,下面是他们的Github开源代码.
1. 文章贡献
This paper proposes a lightweight front-end lidar odometry solution,用于在计算能力受限的机器人平台上,具有快速和精确的定位能力,我们的直接激光雷达里程计(DLO)方法包括几个关键的算法上的创新,这些创新优先考虑计算效率,并使用稠密的、预处理最少的点云实时提供准确的姿势估计.The following are the main innovations of the article:
- A customized speed-first processing flow is proposed,This process can accurately estimate the pose in real time,The need for preprocessing is relatively small,并且IMU是可选项.
- A new keyframe system is proposed,Keyframes can be adaptively selected according to environmental signals,And can quickly generate subgraphs through convex optimization.
- Several important algorithmic insights developed from the experiments,to further reduce computational overhead,从而产生了NanoGICP(Custom iterative closest point solver,For lightweight point cloud scanning and cross-object data sharing matching).
The figure below shows two robotic platforms with limited computing resources for this lidar odometry application(A) 定制的四旋翼平台,顶部有一个驱逐OS1激光雷达传感器.(B) Boston Dynamics Spot机器人,装有负载和带防护装置的Velodyne VLP-16.(C) 使用我们的轻型里程计方法在这些机器人上绘制的石矿的俯视图
2. 整体思路
The whole system is throughRANSACExclude outliers and useIMUto obtain the rotation prior,The frame-to-frame relative pose is then obtained.This relative pose is then propagated to the world coordinate system,and for secondaryGICP的初始化值.
2.1 预处理
在预处理过程中只使用了两个滤波器:首先,通过原点周围大小为1立方米的盒子滤波器删除机器人自身可能返回的所有点云.然后,生成的点云通过分辨率为0.25m的三维体素网格滤波器发送,以便在保持周围环境中的主要结构的同时,略微减少后续任务的数据采样.在这项工作中,我们Does not correct for motion distortion,因为非刚性变换可能会带来计算负担,我们直接使用稠密点云,而不是提取特征,平均而言,每帧点云包含了预处理后得到1000点.
2.2 基于GICP(Generalized-ICP)pose calculation
This part is divided into two steps,The first step is to provide an instantaneous pose estimate(frame-to-frame pose), The second step is to provide the optimized pose(Frame picture optimization).This part is also mentioned at the end of the followingNanoGICP高效匹配.To facilitate point cloud scans and cross-object data sharing matching,Developed in the textNanoGICP,This is a custom iterative closest point solver,Essentially it will be open sourceFastGICP和NanoFLANNThe two packages are merged,使用NanoGICP的NanoFLANNto build efficientlyKD-tree, 然后通过FastGICPfor efficient matching.
A. 帧间匹配
Lidar-based odometers can be considered pass-throughCompare the continuous point cloud with the in-memory point cloud for recoverySE(3)变换To analyze the process of robot self-motion.此过程通常分两个阶段运行,首先是提供最佳初始值,随后将其优化为与先前关键帧位置保持其全局一致.
The objective function is the following formula,其中 X ^ k L \hat{\mathbf{X}}_{k}^{\mathcal{L}} X^kL代表了在 s s s时刻和 t t tThe relative transformation of the pose at the moment, P k s \mathcal{P}_{k}^{\mathrm{s}} Pks代表了sourceof scanned point clouds, P k t \mathcal{P}_{k}^{\mathrm{t}} Pkt代表了targetof scanned point clouds( P k t = P k − 1 s \mathcal{P}_{k}^{\mathrm{t}}=\mathcal{P}_{k-1}^{\mathrm{s}} Pkt=Pk−1s这代表了 k k k时刻的target点云与 k − 1 k-1 k−1时刻的source点云).
X ^ k L = arg min x k L E ( X k L P k s , P k t ) \hat{\mathbf{X}}_{k}^{\mathcal{L}}=\underset{\mathbf{x}_{k}^{\mathcal{L}}}{\arg \min } \mathcal{E}\left(\mathbf{X}_{k}^{\mathcal{L}} \mathcal{P}_{k}^{\mathrm{s}}, \mathcal{P}_{k}^{\mathrm{t}}\right) X^kL=xkLargminE(XkLPks,Pkt)
其中 E \mathcal{E} E为误差函数,这里被定义为:
E ( X k L P k s , P k t ) = ∑ i N d i T ( C k , i t + X k C C k , i s X k L ) − 1 d i d i = p i t − X k L p i s , p i s ∈ P k s , p i t ∈ P k t \mathcal{E}\left(\mathbf{X}_{k}^{\mathcal{L}} \mathcal{P}_{k}^{\mathrm{s}}, \mathcal{P}_{k}^{\mathrm{t}}\right)=\sum_{i}^{N} d_{i}^{\mathrm{T}}\left(\mathcal{C}_{k, i}^{\mathrm{t}}+\mathbf{X}_{k}^{\mathcal{C}} \mathcal{C}_{k, i}^{\mathrm{s}} \mathbf{X}_{k}^{\mathcal{L}}\right)^{-1} d_{i}\\ d_{i}=p_{i}^{t}-\mathbf{X}_{k}^{L} p_{i}^{\mathrm{s}}, p_{i}^{\mathrm{s}} \in \mathcal{P}_{k}^{\mathrm{s}}, p_{i}^{\mathrm{t}} \in \mathcal{P}_{k}^{\mathrm{t}} E(XkLPks,Pkt)=i∑NdiT(Ck,it+XkCCk,isXkL)−1didi=pit−XkLpis,pis∈Pks,pit∈Pkt
其中 d i = p i t − X k L p i s , p i t ∈ P k t , p i s ∈ P k s d_{i}=p_i^t-\mathbf{X}_{k}^{\mathcal{L}}p_i^s,p_i^t\in\mathcal{P}_{k}^{\mathrm{t}}, p_i^s\in\mathcal{P}_{k}^{\mathrm{s}} di=pit−XkLpis,pit∈Pkt,pis∈PksRepresents the distance difference between two points in the point cloud. C k , i s , C k , i t \mathcal{C}_{k, i}^{\mathrm{s}}, \mathcal{C}_{k, i}^{\mathrm{t}} Ck,is,Ck,itRefers to each point in both point clouds i i iThe corresponding estimated covariance matrix.
B. 帧图匹配
…详情请参照古月居
边栏推荐
- 【参营经历贴】2022网安夏令营
- Making a Simple 3D Renderer
- 工作5年,测试用例都设计不好?来看看大厂的用例设计总结
- Avoid hidden text when loading fonts
- Flink学习第四天——完成第一个Flink 流批一体案例
- Always use "noopener" or "noreferrer" for links that open in a new tab
- 简单3D渲染器的制作
- Convert LocalDateTime to Date type
- 数据机构---第五章树与二叉树---二叉树的概念---应用题
- C language - branch statement and loop statement
猜你喜欢
From 0 to 100: Notes on the Development of Enrollment Registration Mini Programs
PDF转Word有那么难吗?做一个文件转换器,都解决了
Codeforces CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!) A-D Solution
软件测试之移动APP安全测试简析,北京第三方软件检测机构分享
分享10套开源免费的高品质源码,免费源码下载平台
C language - branch statement and loop statement
Building a cloud-native DevOps environment
[Camp Experience Post] 2022 Cybersecurity Summer Camp
[C language advanced] file operation (2)
UI自动化测试框架搭建-标记性能较差用例
随机推荐
Chapter 11 Working with Dates and Times
How to better understand and do a good job?
加载字体时避免隐藏文本
[LeetCode304 Weekly Competition] Two questions about the base ring tree 6134. Find the closest node to the given two nodes, 6135. The longest cycle in the graph
npm npm
Additional Features for Scripting
When solving yolov5 training: "AssertionError: train: No labels in VOCData/dataSet_path/train.cache. Can not train"
How do programmers solve online problems gracefully?
Department project source code sharing
几道关于golang并发的面试题
一道golang中关于iota的面试题
20220725资料更新
From 0 to 100: Notes on the Development of Enrollment Registration Mini Programs
PostgreSQL 基础--常用命令
Avoid , ,
, and tags论文理解【RL - Exp Replay】—— Experience Replay with Likelihood-free Importance Weights
Oracle database is set to read-only and read-write
简单3D渲染器的制作
The third chapter of the imitation cattle network project: develop the core functions of the community (detailed steps and ideas)
6133. Maximum number of packets