3D惯导Lidar SLAM

LIPS: LiDAR-Inertial 3D Plane SLAM

摘要

本文提出了最*点*面表示的形式化方法,并分析了其在三维室内同步定位与映射中的应用。提出了一个利用最*点*面表示的无奇异*面因子,并在基于图的优化框架中证明了它与惯性预积测量的融合。所得到的LiDAR惯性三维*面SLAMLIPS)系统在定制的LiDAR模拟器和实际实验中都得到了验证。

导言             

准确、鲁棒的室内定位和地图绘制是非调音机器人应用的基本要求。室内环境通常是丰富的指示信息,如直线和*面,应加以利用,以实现高精度的同时定位和制图(SLAM)。尽管室内环境不允许使用GPS进行定位,但借助外部传感器(如摄像机[12]、光探测和测距(LiDAR)传感器[34]甚至声纳[5]的惯性导航系统(INS)已经证明有效。最*激光雷达传感技术在重量和尺寸上都有所减少,允许便携式和手持使用,每秒在周围环境中提供高达220万个数据点。激光雷达已被证明是有效的纹理少和低光环境,典型的办公室和建筑内部,提供高信噪比(SNR)的测量。从根本上说,激光雷达传感器不依赖于其他传感器(如相机)所需的照明或纹理特性。激光雷达传感器的一个挑战是如何处理大量无序的三维点数据,以便包含在估计。一传统的方法是使用迭代闭合点(ICP)解算器来确定姿势之间的相对变换。使用ICP只恢复相对姿态,防止在状态中包含信息量大的环境元素,如*面估计使用*面基元进行估计的第一个挑战是它们的参数化[6]。最常见的表示是*面的法向矢量和距离标量,称为黑森形式。自Hesse形式是一个过度参数化的形式,它在最小二乘中会受到奇异信息矩阵的影响。             

为了避免这种过度参数化,通常使用包含两个角(水*角和垂直角)和一个距离标量的球面坐标作为其误差状态表示。虽然这是最小的,但当垂直角等于±∏2时,它会受到模糊性的影响。最*,Kaess[6]提出使用单位四元数及其无奇异性的3自由度乘性误差状态,该状态与*面的几何联系不清楚,其数值稳定性可能不是最优的。相比之下,在这项工作中,提倡使用最*点(CP)表示法,该表示法由*面上距离给定参考系原点最*的点定义。CP表示不仅捕获了所有的几何*面信息,而且用一个简单的加法错误状态操作来最小限度地表示*面,从而得到数值结果优点。规格在财务上,利用飞机的CP代表性,通过对三维室内SLAM的图形优化,融合了三维激光雷达的*面原始测量和惯性测量单元(IMU)的运动信息(以连续IMU预积分的形式[78])。             

本文的主要贡献如下:             

•最*点(CP)*面表示法的制定、奇点分析及其在三维*面SLAM中作为*面表示和误差状态的使用。             

•设计一种新的激光雷达惯性三维*面SLAMLIPS)系统,该系统具有基于图形优化的鲁棒相对*面锚定因子,有效克服了CP表示的奇异性问题。             

•开发用于评估激光雷达辅助定位算法的通用激光雷达模拟器,该模拟器是开源的,以更好地造福社区。             

•通过蒙特卡罗模拟和实际实验验证提议的LIPS系统。

奇异性非常适合使用基于距离的传感器(如激光雷达和rgbd相机)进行*面估计,因为从这些传感器中提取的*面如果在提取的框架中表示出来,就不会被错误地定义。只有当将局部CP*面L∏转换为*面与其原点相交的框架时,才会出现奇异性(见图2),在[14]中还指出,从距离传感器中提取的接*与传感器框架相交的*面如果被发现和丢弃,应视为“不可靠”。

为了评估该系统的可行性,开发了一个定制的LiDAR-IMU模拟器。创建了一个二维*面图,并将其垂直拉伸,以创建一个Man hattan世界环境(为清晰起见,注意到CP表示可以处理任意*面方向)。一组有序的三维控制点用于创建穿过环境的三维样条轨迹(生成的轨迹见图5)。利用解析样条微分法,可以得到沿轨道任意时刻的真实IMU测量值。在给定的激光雷达探测频率下,光线是使用由角分辨率和垂直天顶确定的固有激光雷达传感器模型产生的角度。生成然后光线与环境中的所有*面相交,并找到所有光线*面交点。最后一步执行无效的交叉点,不应产生由于遮挡,通过强制每个光线只应击中*面,最接*的LiDAR帧。

在这项测试中,*面物体被放置在激光雷达周围,以便于进行RANSAC提取,避免退化运动[38],并确保激光雷达在所有自由度上都受到充分限制(见图6)。在10hz下工作的八通道量子M8激光雷达使用了附加在激光雷达底部的微应变3DM-GX3-25惯性测量单元以500赫兹工作的激光雷达。人工估计了激光雷达到IMU的外部变换,但这可以很容易地添加到因子图中进行在线估计。为了评估估计漂移,将传感器单元移到*面前面并返回到相同的起始位置。如图7所示,在30米的轨迹距离后,开始姿势和结束姿势之间的差异为1.5厘米,对应于在轨迹长度上0.05%的误差。

 

3D惯导Lidar SLAM的更多相关文章

  1. 3D惯导Lidar仿真

    3D惯导Lidar仿真 LiDAR-Inertial 3D Plane Simulator 摘要 提出了最*点*面表示的形式化方法,并分析了其在三维室内同步定位与映射中的应用.提出了一个利用最*点*面 ...

  2. 我用MATLAB撸了一个2D LiDAR SLAM

    0 引言 刚刚入门学了近一个月的SLAM,但对理论推导一知半解,因此在matlab上捣鼓了个简单的2D LiDAR SLAM的demo来体会体会SLAM的完整流程. (1)数据来源:德意志博物馆Deu ...

  3. WPF 3D 球面导览

    基于WPF的3D Sphere实现模式,升级实现了该3D导览Demo.先pose一张demo效果图 所有顶点的坐标来源于足球的顶点.足球整个球面完全由正五边形和正六边形拼成,每条拼缝的长度一致,故知道 ...

  4. WPF 3D足球导览

    根据博文:https://www.cnblogs.com/duel/p/regular3dpoints.html获取足球的3D坐标后,在每一个坐标位置创建一个ModelVisual3D元素,既能实现炫 ...

  5. okvis论文解读

    C. Keypoint Matching and Keyframe Selection 我们的处理流程采用定制的多尺度SSE优化Harris角点检测器与BRISK描述符提取相结合[12].检测器通过逐 ...

  6. SLAM的前世今生

    SLAM技术已经蓬勃发展起来,这里综述性地介绍下SLAM的主体知识.SLAM的主体技术不多,难点在于细节.来源是:技术分享.ppt 前世 人类惆怅近千年的问题不是:我是谁,我要做什么,我要去哪里!而是 ...

  7. SLAM(二)----学习资料下载

    有位师兄收集了很多slam的学习资料, 做的很赞, 放到了github上, 地址:https://github.com/liulinbo/slam.git ruben update 0823 2016 ...

  8. 三维视觉、SLAM方向全球顶尖实验室汇总

    本文作者 任旭倩,公众号:计算机视觉life,编辑成员 欧洲 英国伦敦大学帝国理工学院 Dyson 机器人实验室 http://www.imperial.ac.uk/dyson-robotics-la ...

  9. 83 项开源视觉 SLAM 方案够你用了吗?

    作者:吴艳敏 来源:83 项开源视觉 SLAM 方案够你用了吗? 前言 1. 本文由知乎作者小吴同学同步发布于https://zhuanlan.zhihu.com/p/115599978/并持续更新. ...

随机推荐

  1. ltrim的思考

    ltrim的思考 说明 string ltrim( string $str[, string $character_mask] ) 删除字符串开头的空白字符(或其他字符) 案例1 $test = &q ...

  2. UVA11419 我是SAM

    题意:      给你一个n*m的矩阵,上面有一些格子上有目标,我们可以在格子的外面用枪打目标,一发子弹可以消灭一行或者一列目标,问你最少多少枪能把目标打光,并且输出开枪的位置,题目没说spj(特判) ...

  3. hdu4971 流-最大权闭包

    题意:       给了一些任务,然后给了一些完成某些任务的限制,然后又给了限制之间的拓扑关系,最后问你最大收益. 思路:       很直白,就是流的一个应用,最大权闭包,没涉及到什么想法的地方,建 ...

  4. Node-RESTful

    //获取用户列表------------------------------------------------- var express = require('express'); var app ...

  5. 手撸了一个starter,同事直夸我666~

    Spring Boot starter原理 Spring Boot 将常见的开发功能,分成了一个个的starter,这样我们开发功能的时候只需要引入对应的starter,而不需要去引入一堆依赖了!st ...

  6. SSM中事务的配置模板

    Spring-tx.xml 配置思路: 1. 声明事务管理器DataSourceTransactionManager,并注入数据源dataSource属性 2.配置事务增强<tx:advice& ...

  7. 十进制转n进制

    #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #defi ...

  8. 多线程-4.wait() notify() notifyAll() 生产者消费者模型

    1.wait()方法 该方法继承于Object类.在调用obj.wait()方法后,当前线程会失去obj的锁.待其他线程调用obj.notify()或notifyAll()方法后进入锁等待池,争抢到锁 ...

  9. Mybatis学习之自定义持久层框架(六) 自定义持久层框架:完善CRUD方法并进行测试

    前言 没想到会等到半年以后才来写这篇文章,我已经不记得当初自己想要在这篇文章中写什么了,还好有一些零散的笔记留着,就对照着上一篇文章及零散的笔记,把内容给补充完吧. 完善CRUD方法 完善Defaul ...

  10. CSS中常用的函数

    一.CSS函数的用法 设置css的属性值时可以使用css函数,如果color:rgba(20,30,50,0.5),css中有很多这样的函数. 二.常用的CSS函数 a.calc()函数   这个函数 ...