基于视觉的移动机器人SLAM研究毕业论文
2020-07-07 21:38:07
摘 要
机器人想要实现自主运动,首先需要解决的就是知道自身的位置以及周围的环境,也就是同时定位和制图(SLAM)。因为视觉传感器能够获取充足的数据,很多机器人都搭载有摄像头来实现视觉SLAM功能。
针对移动机器人对未知环境进行三维建模并在其中定位的问题,我们在turtlebot移动机器人上搭载了Kinect2摄像头,来实现移动机器人SLAM功能。根据ORB特征提取出特征点然后来特征匹配,并采用PnP求解相机的运动,从而合成场景的三维点云图。该功能可用于对危险环境的探测或对物体的简单三维模型的绘制。
关键词:同时定位和制图 移动机器人 图像处理
The Research for Mobile Robots Based on Visual SLAM
Abstract
When robots want to achieve autonomous motion, the first thing to solve is to know their location and surrounding environment, that is, simultaneous localization and mapping (SLAM). Because visual sensors can get enough data, many robots carry cameras to achieve visual SLAM.
In view of the problem of 3D modeling and localization of the mobile robot in the unknown environment, we use the turtlebot mobile robot with a Kinect2 camera to realize the task of slam. The ORB features point are extracted besed on ORB features to match and the PnP is used to solve the motion of the camera so as to synthesize the 3D point cloud images of the scene. This function can be used to detect hazardous environments or to draw simple three-dimensional models of objects.
Keywords: SLAM; Mobile Robot; Image Processing
目 录
摘 要 I
Abstract II
第一章 绪 论 1
1.1课题研究背景 1
1.2 SLAM发展现状 2
1.3论文主要研究内容 4
第二章 slam的基础知识 6
2.1三维空间刚体运动的描述 6
2.1.1旋转矩阵 6
2.1.2旋转向量和欧拉角 9
2.1.3四元数 10
2.2 相机与图像 11
2.2.1相机模型 11
2.2.2图像获取与处理 14
2.2 本章小结 14
第三章 实验步骤与结果分析 16
3.1实验准备 16
3.1.1 ubuntu中cmake的使用 16
3.1.2 opencv、pcl、ros的获取与安装 17
3.2单张点云图的生成 17
3.2.1坐标变换 17
3.2.2生成点云 18
3.3图像特征点匹配 19
3.3.1相机外参 20
3.3.2特征点 20
3.4两帧点云图的融合 22
3.5本章小结 24
第四章 总结与展望 25
参考文献 26
致谢 28
附录1: 程序 29
第一章 绪 论
1.1课题研究背景
随着计算机硬件技术的不断进步和人工智能理论的发展完善,众多领域开始优先考虑使用移动机器人去帮助甚至完全取代人来完成一些繁重、重复、枯燥或者危险的工作,不仅减少了生产线的人工投入,还大大提高了生产效率。二十一世纪以来,将机器人技术应用于实际生产、工作中的领域有工业生产、医疗、救援救灾、家庭服务等,图1-1显示了各领域机器人工作的场景。从探测机器人到扫地机器人,可以发现很多机器人的应用领域正朝着与我们的生活越来越紧密的方向拓展,人们对他们的需求,也催促着他们的发展。
图1-1 各类场景下的移动机器人
想要机器人能够完全取代人进行工作,就需要机器人具有一定的自动化能力与智能程度,而最能够体现机器人智能程度的就是自主导航能力。机器人想要实现自主导航,就是要在没有人为干预的条件下解决:"我在哪?""我周围的环境是怎样的?""我到哪里去?"这几个问题。
SLAM英文全名是,中文称作同时定位与制图。SLAM 针对的的问题是:对于在位置环境运动并且搭载传感器的机器人,如何根据所得的数据得出本身的位置,同时构建出周围环境的地图。SLAM的目标与机器人领域的定位、地图构建和导航问题相对应,根据传感器数据估计机器人自身处在环境中的位置即定位问题,根据自身运动获取的每个时刻的数据对周围环境建模即地图构建问题。因此SLAM技术就是为了完成这样的目标的各种解决方案的总和。
SLAM技术中用来计算自身运动所采用的传感器有两类,一类传感器是通过采集机器人本身的运动数据,如利用编码器或者加速度计来获取速度,另一类传感器则需要感知周围环境信息,如利用超声波或激光雷达测量距离,利用相机采集图像等。
这些传感器在获取信息的维度和丰富程度上都存在差异,稳定性也是不一样的。前一类传感器,与摄像头相比不受光线干扰,获取数据稳定准确,但是因为只能采集到当前的数据,在数据有误差之后会累计误差,无法在后期进行矫正处理。并且编码器在轮子空转甚至地面太光滑的情形下数据获取都不是太准确,加速度计还会受磁场干扰。
使用后一类传感器的SLAM根据获取数据的维度不同,可以简单的分为激光SLAM与视觉SLAM。
激光SLAM使用的传感器多是激光雷达,一般来说,激光SLAM根据两个不同时刻点云的匹配结果来计算出机器人的相对运动,同时实现了机器人本身的定位。
而视觉SLAM因为获得的是三维图像,测量的外界环境范围大,通用性好。并且通过获取的图像得到场景的边缘、角点、区块等特征信息,能够识别目标特征并匹配,从而建立地标来进行定位。更多的数据使它的场景识别能力更为强大,不过对硬件要求也更高。不过随着硬件技术的不断进步、计算性能的提高以及各类稳定高效的图像特征提取算法和后期优化算法的出现,视觉SLAM的实时运行已经具有了可能。
1.2 SLAM发展现状
SLAM技术从一开始在军事方面(为了解决核潜艇海底定位问题)的应用到无人机与无人驾驶技术。逐步发展下来,它的许多发展成果已经走进生活之中,就像普及的扫地机器人使其声名远扬。SLAM技术已经发展了将近三十多年,需要多领域的技术支持。因为完整的SLAM可以分成多个步骤,并且每个步骤都均可通过不一样的算法来完成,所以SLAM技术也是机器人运动控制和计算机视觉的一个研究热点。
2004年等[1]实现了实时视觉里程计的功能,该实时系统的实现方法提供了众多基于特征的视觉里程计的标准框架。通过对采集到的众多周围场景的图像进行处理,进行运动估计,得到相机的当前位姿并绘制出场景的三维模型。
相关图片展示: