登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 毕业论文 > 电子信息类 > 信息工程 > 正文

基于LSD-SLAM算法的实时单目SLAM系统Android APP设计与实现毕业论文

 2020-02-17 23:03:24  

摘 要

作为实现机器人自主作业的核心技术之一的SLAM技术一直以来都是学者们研究的热门课题。在未来,SLAM技术的小型化、轻量化是其发展的趋势之一,能够让SLAM在智能手机或嵌入式等小型设备上良好运行成为一个很好的研究方向。本设计就是对LSD-SLAM算法和Android手机结合的探究,实现了LSD-SLAM算法在Android系统上的运行。

本设计的主要实现思想是,在LSD-SLAM算法部分采用C 进行编程并引入OpenCV、g2o等优化库进行优化,在Android端使用NDK对算法的C 文件和第三库优化库进行编译生成动态库。同时,使用System.loadLibary()函数和JNI技术对动态库进行加载,在Android端编写活动方法对相关的动态库进行调用,实现算法在Android系统上的运行。

经测试发现,虽然在手机上存在实时性能较差的缺点,但是定位与建图基本正常,基本达到对LSD-SLAM算法在Android手机上的运行效果。SLAM在Android系统上的运行实现拥有较好的应用前景,值得我们进行探究。

关键词:LSD-SLAM;Android;JNI技术;NDK编译

Abstract

As one of the core technologies to realize the autonomous operation of robots, SLAM technology has always been a hot topic for scholars. In the future, the miniaturization and lightweight of SLAM technology is one of its development trends, and it is a good research direction for SLAM to run well on small devices such as smart phones or embedded devices. This design is a combination of LSD-SLAM algorithm and Android mobile phone, and realizes the operation of LSD-SLAM algorithm on Android system.

The main implementation idea of this design is to use C to program in the LSD-SLAM algorithm part and introduce optimization libraries such as OpenCV and g2o for optimization. On the Android side, use NDK to compile C file and third library optimization library to generate dynamic library. At the same time, using the System.loadLibary() function and JNI technology load the dynamic library, and writing the active method on the Android side to call the related dynamic library to realize the operation of the algorithm on the Android system.

The test found that although there are shortcomings of poor real-time performance on the mobile phone, the positioning and mapping are basically normal, basically achieving the effect of the LSD-SLAM algorithm on the Android mobile phone. The implementation of SLAM on the Android system has a good application prospect, which is worth exploring.

Key words: LSD-SLAM; Android; JNI technology; NDK compilation

目 录

第1章 绪论 1

1.1 研究背景及意义 1

1.2 SLAM技术的国内外发展现状 1

1.3 论文的主要结构 2

1.4 本章小结 3

第2章 LSD-SLAM算法和Android JNI技术简述 4

2.1 LSD-SLAM算法简述 4

2.1.1 LSD-SLAM算法概述 4

2.1.2 图像跟踪模块 6

2.1.3 深度地图估计模块 6

2.1.4 地图优化模块 7

2.2 Android和JNI技术简述 8

2.3 本章小结 9

第3章 系统设计与实现 10

3.1 系统开发及运行环境介绍 10

3.2 LSD-SLAM算法Android APP实现的整体思路 10

3.3 开发环境的搭建 11

3.4 LSD-SLAM算法程序分析 15

3.4.1 图像跟踪模块程序分析 15

3.4.2 深度地图估计模块程序分析 17

3.4.3 地图优化模块程序分析 20

3.5 LSD-SLAM算法在Android系统上的移植过程 23

3.5.1 动态库的编译生成 23

3.5.2 动态库调用方法的实现 25

3.6 Android端的系统架构 26

3.6.1 界面模块 27

3.6.2 主活动模块 28

3.7 本章小结 28

第4章 功能测试与分析 29

4.1 功能测试 29

4.2 结果分析 31

4.3 本章小结 32

第5章 总结 33

参考文献 34

致谢 35

第1章 绪论

1.1 研究背景及意义

自18世纪中期的工业革命爆发以来,人类就渴望从繁杂的手工劳动中解放出来。纵观整个工业革命以来的人类社会,从第一次工业革命哈格里夫斯发明的纺纱机、瓦特改良的蒸汽机等到第二次工业革命西门子制造的发电机、贝尔发明的电话等,至20世纪中后期(第二次世界大战结束左右)电子计算机的发明、航天技术的出现等,无一例外地体现出了人类想让手工劳动得到解放的愿望。随着现代计算机技术和信息技术的不断发展和日益成熟,人类一直以来想让手工劳动力得到解放的夙愿成为可能,在这其中机器人技术便是优良的解决办法之一。机器人技术包括了机器人控制与定位、目标识别、任务规划与执行、传感器信息处理等,在人类社会中发挥着越来越重要的角色。

在现代社会的需求之下,移动机器人往往是在复杂而又未知的环境下完成相关的任务。这就对机器人技术提出了新的挑战,即在未知环境下机器人实现自主作业。而机器人在未知环境下实现自主移动甚至是自主作业的核心技术之一就是同步定位与地图构建(Simultaneous Localization and Mapping,SLAM)。SLAM问题可以描述为:在没有诸如北斗导航系统、全球卫星定位系统等这类外界信息的支持下,机器人在未知环境下通过自身的移动来获取到所处环境的地图信息,并且能够完成自我定位,进一步地可以完成自主移动和任务作业。所以说SLAM技术是实现机器人自主作业的核心技术之一,在机器人、无人驾驶、VR/AR等领域发挥着极其重要的作用,成为科学家和学者们研究的热门方向之一,也是机器学习和计算机视觉技术的关键技术之一。

1.2 SLAM技术的国内外发展现状

SLAM技术的概念可以通俗地形容为:一个原始社会的人在夜晚打着火把来到一座完全陌生的城市或建筑中,通过他一步一步地移动获取到所经历的环境,并且可以清楚知道当前自己的位置。他在记住环境信息和定位中所经历的问题,便是机器人实现自主移动的过程中需要解决的问题。只有解决了这个问题,机器人的自主作业才能成为可能,因此SLAM技术成为国内外专家学者研究的一个热门问题。

SLAM技术的基本解决方法是:在机器人身上安装一些传感器,如激光、雷达、视觉传感器、惯性系统传感器等,通过它们来识别周围环境的特征,计算估计出与传感器的位置,估计自身所处的全局坐标,构建出有效的全局地图,实现在未知环境下同步定位与建图。

SLAM问题最先是由Smith Self和Cheeseman在1987年提出的,被认为是实现移动机器人真正自主的关键所在,发展至今SLAM已经走过了30多年的历史,在许多的方面取得了十分重要的进步和突破。目前SLAM的分类方法有很多种,按传感器的类别主要分为激光SLAM和视觉SLAM(VSLAM),其中视觉SLAM是比较重要的一部分。近十几年以来,基于视觉的SLAM算法是研究者们的一个热门问题,并且得到了较为迅速的发展。从2007年Georg Klein和David Murray提出的PTAM算法(该算法是视觉SLAM发展中的一个重要的里程牌)到2008年Mark Cummins和Paul Newman提出的基于显著性的FAB-MAP(Fast Appearances-Based Mapping)算法;再到2014年Christian Forster等人提出的SVO(Fast Semi-Direct Monocular Visual Odometry,SVO)算法以及Jakob Engel等人提出的LSD-SLAM(Large-Scale Direct Monocular SLAM,LSD-SLAM)算法;在随后的2015年中又由Raul Mur-Artal等人提出了ORB-SLAM算法,该算法是目前已知的最优秀的基于特征的单目视觉SLAM算法;紧接着在2016年时由Jakob Engel等人又提出了DSO(Direct Sparse Odometry,DSO)算法,视觉SLAM得到了进一步的发展。从以上的SLAM的发展和研究历程来看,视觉SLAM在最近十几年中得到了较为迅速的研究和发展,并且取得了一些成果和应用。

目前国内对于SLAM技术的研究还处于一个起步追赶的阶段,更多的还是向国外进行学习,对于SLAM技术的研究主要还是集中在相关的科研院所和高校,如清华大学、中国科学院、中南大学等[12]。当然,在这些科研院所和高校的不断努力下,当前在国内还是取得了一定的成果。诸如,用于解决物体真实边缘特征深度估计的、由清华大学高翔等人提出的基于平面二维点特征的RGB-D SLAM算法;中南大学的蔡自兴教授等人提出了一种基于粒子滤波的多假设数据关联方法解决机器人SLAM研究中的数据关联问题。又如,用于对物体全自动实时重建的、由中科院自动化研究所刘鑫等人提出的一种基于GPU和Kinect的快速物体重建算法,该算法在出现点云配准错误时依然可以得到不错的重建模型。可以看出国内的研究成果还是不少的,但是大多数的研究成果都是基于国外研究成果加以改良和创新得到的,可以实现一些较为简单的应用。就目前国内对于SLAM技术的研究和发展状况来看,我们还需要有更多的努力和辛勤付出才能研究出属于我们自己的、具有创新性的SLAM技术。坚信,随着国内科技水平的不断提高和在工商业日益剧增的需求的推动下,国内的SLAM技术一定会发展的越来越好。

纵观国内外SLAM技术的发展现状,国外在这方面上的研究起步早、创新点多,提出了很多SLAM算法,可以说是SLAM技术不断更新发展的主要动力。而国内对于SLAM技术的研究起步较晚、缺少属于自己的完全创新的SLAM技术,存在着一定的不足,在日常生产生活中的应用较少。所以说,我们还要加强这一方面的研究,进行更深层次的研究。

1.3 论文的主要结构

本文正文部分主要有5章构成,较为详细地介绍了相关理论、实现过程、实验结果及分析等。具体的构成如下所示:

第1章,绪论。主要是对SLAM技术研究的背景和意义、发展现状作了简要的介绍。

第2章,算法原理和Android JNI技术简述。主要对LSD-SLAM算法基本原理和Android系统及JNI技术作了简单介绍。

第3章,系统设计与实现。本章主要是从系统的整体思路、算法编程分析、算法移植过程、Android端的系统框架作以介绍。

第4章,功能测试和分析。本章主要是介绍了测试的过程和内容,并且对测试结果进行了分析。

第5章,总结。

1.4 本章小结

本章首先从工业革命解放手工劳动引出机器人技术的重要性,从而对于其在未知环境下实现自主作业的关键技术——同步定位与建图(SLAM)技术加以简单的介绍。其次对SLAM技术的国内外研究现状进行了简要的阐述,分析了国内外SLAM技术的发展。最后对本文的主要结构进行了一定介绍。

第2章 LSD-SLAM算法和Android JNI技术简述

SLAM技术是机器人在未知环境下实现自主移动和自主作业的关键技术之一,对于其的研究和探索对某些领域,如无人驾驶、无人机、航空航天等领域,具有较为深远的意义。而Android系统作为当今世界上市场占有率最高的移动操作系统,经过多年的发展Android已经建立了一个完整的生态系统,相关的技术也是较为成熟的。SLAM技术与Android系统的相结合打破了原来依靠于要用专门的传感器作为外设的SLAM技术,它们的结合使SLAM技术能够更加完美地融入到实际的生产生活中去,应用前景十分的可观。由于本人所进行的毕业设计(论文)是基于LSD-SLAM算法的实时单目SLAM系统Android APP的设计与实现,因此在本章会着重介绍一下LSD-SLAM算法和Android及JNI技术的有关知识。

2.1 LSD-SLAM算法简述

从SLAM技术的外部硬件设备来进行分类,可以将SLAM技术分为基于激光雷达的SLAM和基于视觉的SLAM(VSLAM)。前者所具有的优点是能够具有很高的精度,对于实现同步定位与建图、避障有很好的效果,但是它的价格昂贵;后者的主要优点就是价格相对便宜,所采集的图像信息丰富便于后期的处理工作。目前许多研究都是基于视觉SLAM开展的,一个较为完整的VSLAM系统主要包括:特征检测、帧间配准、回环检测和建立地图等环节。经典的视觉SLAM的框架如图2.1所示,它包括读取传感器数据、视觉里程计(Visual Odometry,VO)、后端非线性优化、回环检测、构建地图等流程,该框架和它所含的相关算法基本上已经定型,依靠这些我们便能够构建一个视觉SLAM系统。主要的视觉SLAM算法有PTAM算法、SVO(Fast Semi-Direct Monocular Visual Odometry,SVO)算法、ORB-SLAM算法、LSD-SLAM算法、DSO(Direct Sparse Odometry,DSO)算法等。针对本人的研究对象,下面对LSD-SLAM算法作以简要的介绍。

图2.1 经典视觉SLAM框架图[17]

2.1.1 LSD-SLAM算法概述

基于直接法的大范围同步定位与建图(Large-Scale Direct Monocular SLAM,LSD-SLAM)算法是由宾夕法尼亚大学的Jakob Engel、Thomas Schops等人于2014年提出的一种基于直接法的单目SLAM算法,它所构建的地图是具有关联的半稠密地图。LSD-SLAM算法主要由三个模块组成(如图2.2所示),其中图像跟踪模块主要完成连续跟踪新的相机图像功能,即以前一帧图像帧为初始姿态估计出当前参考关键帧和新图像帧之间的刚体变换;深度地图估计模块主要完成的功能是用基于像素小基线立体配准的滤波方式去用当前被跟踪的图像帧更新或取代当前的图像帧;地图优化模块主要完成的功能是对异常值进行剔除,一旦关键帧被取代作为当前的图像帧,它的深度图将不会被进一步更新,而是通过地图优化模块插入到全局地图中去。该模块中为了检测闭环和抑制尺度漂移,采用尺度感知的直接图像配准方法来估计当前帧与现有邻近关键帧之间的相似变换。(后面将对这三个模块作以介绍)

图2.2 LSD-SLAM算法的流程图[1]

LSD-SLAM算法采用直接法的图像配准方法和基于滤波的半稠密深度地图估计方法,在获得位姿估计的同时,还能够进行实时地图构建,可以重构出一致的、大范围的三维环境地图。其次该算法还能够实时地运行在CPU上,甚至是一部现代智能手机上。运行构建出的地图如图2.3所示(LSD-SLAM算法的作者Jakob Engel在论文中给出的算法运行效果图[1]

该算法中运用了显式尺度漂移感知公式,因此LSD-SLAM算法可以操作一些具有挑战性的序列,包括了图像序列尺度变化较大的场景。LSD-SLAM算法主要的两个创新点是:(1)发明了一种直接跟踪方法,开创了基于直接法的大规模单目SLAM算法的框架,对尺度漂移的检验效果很好;(2)提出一种新的概率方法,将深度图的噪声融入到图像跟踪中。算法作者Jakob Engel的课题组进行的实验表明,LSD-SLAM算法能够可靠地跟踪图像和构建地图,甚至可以成功挑战跟踪500米长的运动轨迹(特别是在同一图像序列中图像场景变化较大,甚至出现相机的大旋转),这展示出了LSD-SLAM算法的多功能性、鲁棒性和尺度的灵活性。

图2.3 LSD-SLAM构建的环境地图,顶部示图是算法作者手持单目相机运动中等距离过程中实时生成的轨迹图及所有关键帧对应的点云地图;底部示图为,相机轨迹中,部分关键帧图像以及对应的半稠密逆深度图[1]

2.1.2 图像跟踪模块

图像跟踪模块主要完成连续跟踪新的相机图像功能,即以前一帧图像帧为初始姿态估计出当前参考关键帧和新图像帧之间的刚体变换ξ∈ se(3)。从一个已经存在的关键帧Ki=(Ii,Di,Vi)开始,通过最小化方差归一化光度误差来计算当前帧图像相对参考帧的三维刚体变换。(如公式(2.1)、(2.2)、(2.3)所示)

(2.1)

以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。

相关图片展示:

您需要先支付 80元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图