当前位置:网站首页>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. 帧图匹配
…详情请参照古月居
边栏推荐
猜你喜欢
When solving yolov5 training: "AssertionError: train: No labels in VOCData/dataSet_path/train.cache. Can not train"
云原生DevOps环境搭建
测试岗月薪5-9k,如何实现涨薪到25k?
分享10套开源免费的高品质源码,免费源码下载平台
请问什么是 CICD
C#大型互联网平台管理框架源码:基于ASP.NET MVC+EF6+Bootstrap开发,支持多数据库
Is TCP reliable?Why?
The monthly salary of the test post is 5-9k, how to increase the salary to 25k?
DRF generating serialization class code
解决端口占用
随机推荐
qt-faststart 安装使用
还在纠结报表工具的选型么?来看看这个
【C语言进阶】文件操作(二)
npm npm
6134. Find the closest node to the given two nodes - force double hundred code
高效工作文档产出归类
分享一份接口测试项目(非常值得练手)
企业防护墙管理,有什么防火墙管理工具?
chrome复制一张图片的base64数据
npm npm
邻接表与邻接矩阵
[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
Oracle 数据库设置为只读及读写
prim生成树
CDH6的Hue打开出现‘ascii‘ codec can‘t encode characters
辛普森悖论
UML diagram of soft skills
深度学习基础-基于Numpy的循环神经网络(RNN)实现和反向传播训练
Building a cloud-native DevOps environment
C#大型互联网平台管理框架源码:基于ASP.NET MVC+EF6+Bootstrap开发,支持多数据库