| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> [论文阅读][激光雷达-IMU标定]Targetless Calibration of LiDAR-IMU System Based on -> 正文阅读 |
|
[人工智能][论文阅读][激光雷达-IMU标定]Targetless Calibration of LiDAR-IMU System Based on |
Targetless Calibration of LiDAR-IMU System Based on Continuous-time Batch Estimation原文链接: https://arxiv.org/pdf/2007.14759v1.pdf 代码地址https://github.com/APRIL-ZJU/lidar_IMU_calib Abstract这篇文章提出了一种LiDAR-IMU标定方法(称为LI-Calib). LI-Calib 采用了基于B-Spline的连续时间轨迹。相比于基于离散时间的方法,这种方法对于IMU和LiDAR这种高采样率的传感器更合适。此外, LI-Calib decomposes the space into cells and identifies the planar segments for data association,这使得标定问题在没有任何人工target的场景下仍然是well-constrained的(?????这说了个啥)。在仿真和真实数据上做了验证,结果显示该方法精度高,可重复性好。 IntroductionLiDAR这种传感器由于其在精度和鲁棒性方面的优良性质,被广泛应用于定位、建图、跟踪、检测等任务。但其缺点在于,LiDAR对连续的3D点在不同时间点进行采样,因此传感器的运动会引入畸变,比如rolling-shutter effect. IMU可以作为辅助传感器解决这个问题。 对于LiDAR,每个点都是在不同时刻采集的,每个点的精确位置同采集时刻LiDAR的位姿是有关系的; 因此做Pose Estimation对于移除运动畸变是有益的; 基于离散时间的方法[6]使用的是关键帧的位姿插值,牺牲了高动态场景下的精度。Gentil等[7]引入了高斯过程来做IMU的插值,部分的解决了使用low-frequency IMU readings为higher-frequency LiDAR points做插值的矛盾。Rehder等[8]提出了基于continuous-time batch estimation,用于标定camera-IMU-LiDAR system的两阶段方法。先使用棋盘格标定camera-IMU,然后单线激光雷达再同camera-IMU 系统做标定。 受[8]的启发,本文提出了基于continuous-time framework的方法,该法可以看作[9]的工作的延伸。通过使用temporal basis fuctions对轨迹参数化,基于continuous-time的方法可以得到轨迹上任何时间点的精确姿态,这对于高帧率测量系统的标定问题是很有帮助的。同时由于角速度和线加速度是temporal basis fuctions的导数,continuous-time formulation 将IMU的测量以一种自然的方式整合了进来(?????) 总结下本文的贡献有三个:
Related WorkMotion compensation(运动补偿)和 data association(指点云配准吗?????) 是LiDAR-IMU标定的两个主要难题。 针对运动补偿问题,大多数方法[6,10] 对每个LiDAR 点采用线性插值,其前提假设是在短时间内,角速度和线速度或线加速度是一个常量。这个假设对于低速和平滑运动是成立的。但是对于任意运动(比如手持sensor或将sensor置于四旋翼无人机)则不成立。为解决该问题,Neuhaus[11]使用IMU数据来预测LiDAR的运动。本文和最近的一些工作使用continuous-time representations 来参数化轨迹,好处是无需任何关于运动的先验,即可解决高帧率的运动畸变问题。 LiDAR Points的Data association 是另一个重要问题,[7] [14]分别使用了point-to-point和point-to-plane的方法。[15]则使用了一种point-to-model的策略,考虑了局部邻域的形状信息。本文采用了point-to-surfel的方法,点云被离散化,并用surfels(面元,关于面元与面元地图的代表性工作见SUMA )表示;points和对应的surfels对齐。 基于temporal basis functions的continuous-time batch optimization在标定问题上的应用已被广泛研究。Furgale[18]基于B样条基函数,给出了SLAM问题的证明和实现;并将所提出的框架用于解决Camera-IMU标定问题,该框架对temporal和spatial calibration(?????啥区别)都支持。Rehder在[8]中使用了一个类似的框架来标定camera-IMU和LiDAR的外参,在[20]中,拓展了[18]中的工作以支持多IMU标定。本文提出了一种基于continuous-time batch optimization的LiDAR-IMU标定方法,和[8]的工作在精神上相通,但不需要棋盘格和辅助传感器。 Trajectory Representation AND Notation符号定义:
使用B-Spline 来做轨迹的参数化,优点是:
使用B-Spline 来做轨迹参数化的方式有多种。可以直接在 S E ( 3 ) SE(3) SE(3)中做,也可以分别在 R 3 R_3 R3?和 S O ( 3 ) SO(3) SO(3)中做。直接在 S E ( 3 ) SE(3) SE(3)中做,优点是 torque-minimal(???), 但是translation curve的形状很难控制,因为translation和rotation耦合在一起了。而且该形式对于本文的标定方法来说很难求解,因此最终选择了分别参数化的方法。 接下来介绍了B-Spline的矩阵表示形式。本文采用节点均匀分布的三次B-Spline ,并且是cumulative representation of B-spline,用来参数化translation和rotation。(可参考Spline fusion) translation: rotation(详见A General Construction Scheme for Unit Quaternion Curves with Simple High Order Derivatives): MethodologyStep1:外参Roation的初始化感觉就是一个手眼标定的过程,最后求解一个 A X = X B AX=XB AX=XB形式的问题。
Step2:Surfels Map and Data Association使用Step1估计出的Rotation,可以为Lidar帧间配准提供Rotation的初值,还可以移除Rotation引起的畸变,因此可以提升lidar odometry和lidar point cloud map的质量。将lidar point cloud map的点云离散化在3D cells中,每个cells内的点计算一阶和二阶矩(?????就是重心和协方差矩阵吧)。然后使用了一个指标来找Surfels[32]: 所有的平面和Lidar point cloud map都是在 L 0 L_0 L0? 系的. 使用tiny planes, 而不是环境中的大平面,好处是可以使用环境中所有的平面状区域提供的信息,为batch optimization 提供了更可靠的约束(?????)。为了鲁棒性,距离超出阈值的point-to-plane correspondences 被拒绝(?????有提到这些correspondences的作用吗)。 点云使用了random sample作降采样。 Step3:Continuous-time Batch Optimization总结下,需要估计的系统状态为: x = [ L I q ? , I p L ? , x q ? , x p ? , b a ? , b a ? ] ? \boldsymbol{x}=\left[{ }_{L}^{I} \boldsymbol{q}^{\top},{ }^{I} \boldsymbol{p}_{L}^{\top}, \boldsymbol{x}_{q}^{\top}, \boldsymbol{x}_{p}^{\top}, \boldsymbol{b}_{a}^{\top}, \boldsymbol{b}_{a}^{\top}\right]^{\top} x=[LI?q?,IpL??,xq??,xp??,ba??,ba??]? 其中 x q = [ q 0 ? , ? ? , q N ? ] ? \boldsymbol{x}_{q}=\left[\boldsymbol{q}_{0}^{\top}, \cdots, \boldsymbol{q}_{N}^{\top}\right]^{\top} xq?=[q0??,?,qN??]? and x p = [ p 0 ? , ? ? , p N ? ] ? \boldsymbol{x}_{p}=\left[\boldsymbol{p}_{0}^{\top}, \cdots, \boldsymbol{p}_{N}^{\top}\right]^{\top} xp?=[p0??,?,pN??]?为Trajectory Representation 一节中提到的continuous-time trajectory的rotation和translation的控制点。 问题可以定义为: 有以下测量: sequence of
以上测量的噪声项都是独立的高斯白噪声。 求极大似然估计 p ( x ∣ L , A , W ) p(\boldsymbol{x} \mid \mathcal{L}, \mathcal{A}, \mathcal{W}) p(x∣L,A,W) 可被以下最小二乘问题近似: Step4: RefinementBatch optimization之后,使用 x \boldsymbol{x} x的最佳估计再做一遍去畸变,rebuild lidar sufels map和point-to-surfel data associations。注意:NDT只在第一次迭代中做。实验中大概4次迭代可以得到一个精度较高的标定结果。 Experienmentssimulated和real world data 都被拿来做实验。Continuous-time batch optimization 是使用自己写的Kontiki 库来做的。 Simulation模拟生成10组数据,(均为约10s的数据),加入高斯噪声(特性与真实传感器噪声特性相同)。结果是:translational errors: 0.0043 ± 0.0006m, orientational errors : 0.0224 ± 0.0026度。 另外,在vicon room 中测量了trajectory的精确度。 Real-world室内和室外场景,每个场景5组数据(25-30s,角速度47.39度 /s,加速度0.628 m / s 2 m/s^2 m/s2)。外参真值由CAD中的测量得到。 对数据的要求:所有的场景要保证足够的线加速度和角加速度, knot spacing 作者使用图表展示了以下内容:
一些结论:
|
|
|
上一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 22:28:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |