当前位置:   article > 正文

【SLAM技术】【1】 基础知识_slam基本功能

slam基本功能

一、说明

        您对于slam没有任何概念吗?那么,该文针对自动驾驶行业、移动机器人行业,抽取出一些最简短的概念,用来解释slam的产生,作用和发展轮廓。

二、SLAM基本概念

2.1  啥是SLAM?

        S.L.A.M.全称为Simultaneous Localization and Mapping,是以定位和建图两大技术为目标的一个研究领域。

        SLAM是真正的3d技术,是解决移动车辆的定位和动态地图生成的问题的。比如说,你要构造一个自主机器人,能实现路面行走,障碍规避,而且理解三维透视场景,甚至将这种场景翻译成几何场景,以及,走过的路如何动态生成记忆(MAP)。这统统需要SLAM技术

2.2 当前slam技术如何实现

        目前主流的slam技术应用为激光slam(基于激光雷达)和视觉slam(基于单/双目摄像头),实现上主要分为基于滤波 (Filter-Based) 的SLAM,和基于图优化(Graph-Based)的SLAM。归结其本质,其实就是---State Estimation in Robotics

2.3 SLAM的技术背景?

        计算机视觉的研究目前主要分为两大方向:基于学习的方法和基于几何的方法。其中基于学习的方法最火的就是深度学习,而基于几何方法最火的就是视觉SLAM。

2.4  SLAM技术的应用场合

        常见的有:1)自主机器人 2)自动驾驶  3)虚拟场景 4)三维重构   5)无人机技术

2.5  学习SLAM的数学背景

        基础知识有:1)矩阵论。2)李群李代数。3)非线性优化问题。(比如梯度下降、牛顿法、高斯-牛顿法、LM算法、bundle adjustment等)。4)还有泰勒展开,求(偏)导,积分等。

2.6 学习SLAM的计算机技术

        SLAM里涉及很多图像处理、计算机视觉知识 :

        1)图像处理相关。比如和特征点相关的有:特征点描述子、特征点提取、特征点匹配。图像梯度计算、边缘检测、直线检测等。

        2)相机相关:单目、双目、RGB-D等相机的物理参数意义、相机成像模型、相机的标定、去畸变等。双目的话还涉及到视差计算,RGB-D的话涉及到RGB和depth图像的对齐等。

        3)多视角几何相关。比如对极约束、本质矩阵、单应矩阵、光流估计、三角化等。

2.7 slam软件环境

        1)电脑环境:Linux环境,推荐Ubuntu16.04。

        2)编程语言:主要是C++。推荐红宝书《C++ Primer》。

        3)集成开发环境:CLion(用edu结尾邮箱可以申请免费使用一年)、kdevelop(免费),个人觉得前者好用一点。

        4)编译工具:cmake。统一使用cmake编译,好处很多,比如代码可以很方便的跨平台使用等。使用起来也很方便。有个小册子《CMake practice》照着学一下。

        5)文档编辑:有很多,比如gedit、Nano、vim等。

        6)开发库:使用到的第三方库主要包括:OpenCV(计算机视觉),OpenGL(计算机图形学),Eigen(几何变换),Sophus(李代数),Ceres(非线性优化),G2o(图优化)等。

三、slam的行业开源代码

        该行业的开源代码如下,不妨作为初学者拐杖先用着。

稀疏法:
ORB-SLAM2:支持单目,双目,RGB-D相机
https://github.com/raulmur/ORB_SLAM2

半稠密法:
LSD-SLAM:支持单目,双目,RGB-D相机
https://vision.in.tum.de/research/vslam/lsdslam

DSO:单目
https://vision.in.tum.de/research/vslam/dso

稠密法
Elastic Fusion:RGB-D相机
https://github.com/mp3guy/ElasticFusion

BundleFusion:RGB-D相机
https://github.com/niessner/BundleFusion

RGB-D SLAM V2:RGB-D相机
https://github.com/felixendres/rgbdslam_v2

多传感器融合:
VINS:单目 + IMU(惯性测量单元)
https://github.com/HKUST-Aerial-Robotics/VINS-Mono

OKVIS:(单目、双目、四目)+ IMU
https://wp.doc.ic.ac.uk/sleutene/2016/02/04/release-of-okvis-open-keyframe-based-visual-inertial-slam/

四、行业数据集

        主要列举几个主流的数据集
        1、TUM RGB-D SLAM Dataset and Benchmark

        德国慕尼黑理工大学计算机视觉组制作的数据集,使用Kinect相机采集的数据集,包括IMU数据,并且用高精度运动采集系统提供了groundtruth(真值)。提供测试脚本,可以方便的实现量化评估。
        https://vision.in.tum.de/data/datasets/rgbd-dataset

        2、KITTI Vision Benchmark Suite

        德国卡尔斯鲁厄理工学院和丰田工业大学芝加哥分校一起合作制作的用于自动驾驶的数据集。

        使用一辆改装的汽车采集,该车配备了两台高分辨率彩色和灰度摄像机,还有Velodyne激光扫描仪和GPS定位系统,用来提供精确的groundtruth。主要采集区域是卡尔斯鲁厄市区、农村地区和高速公路。提供测试脚本可以方便的实现量化评估。
        http://www.cvlibs.net/datasets/kitti/

        3、EuRoC MAV Dataset

        苏黎世联邦理工大学制作的数据集,采用装备了双目相机和IMU的四旋翼无人机采集数据,使用高精度运动采集系统提供了groundtruth。提供测试脚本,可以方便的实现量化评估。

        https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets

五、 结束语

        好了,以上介绍了学习SLAM的相关知识,有兴趣的同学们,就自己准备环境,等待解决吧。

*参考技术

SLAM滤波 :参考文章

SLAM综述:SLAM应用现状

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号