基于机器视觉的机器人未知环境地图构建算法研究
基于机器视觉的机器人未知环境地图构建算法研究[20191213111811]
摘 要
随着科学技术的不断发展和工业自动化水平的提高,智能机器人被广泛应用于制造业、运输业、服务业等领域,并在救灾抢险、环境保护、深海和太空探测等方面发挥了不可替代的作用。随着机器人的推广,机器人在未知环境中的地图构建问题受到国内外学者越来越多的关注。本课题的主要研究是基于机器视觉的机器人未知环境地图构建算法。本文的主要工作如下:
(1)本文首先对机器人未知环境地图构建的问题进行了分析,对其国内外现状进行介绍,并确定了本文的主要任务。
(2)然后进行了移动机器人硬件设计,采用STC89C52芯片作为微处理器,利用红外传感器实现机器人的自主避障,同时用电机LG9110的速度来计算里程,利用摄像头OV7670作为图像采集传感器,实现环境识别。
(3)最后进行了地图构建算法设计及相关软件开发,并通过实验验证本文算法的有效性。
查看完整论文请+Q: 351916072
关键字:地图构建算法机器人控制机器视觉机器人避障
目录
摘 要 I
ABSTRACT II
第1章 绪论 1
1.1 选题背景与意义 1
1.2 研究历史和现状 2
1.3 系统开发工具简介 3
1.3.1 KEIL 简介 3
1.3.2 MATLAB简介 4
1.3.3 VCC++简介 4
1.4 本文主要任务 5
第2章 硬件平台设计与实现 6
2.1 硬件系统组成结构 6
2.2 元器件选择 6
2.2.1 主控芯片STC89C52 6
3.2.2 无线传输器件 7
3.2.3 蜂鸣器器件的选取 8
2.2.4 摄像头器件 8
2.2.5 红外器件 9
2.3功能模块设计 9
2.3.1 摄像头模块 9
2.3.2 无线蓝牙模块 10
2.3.3 智能小车电机模块 12
2.3.4 红外避障模块 14
2.4 小结 15
第3章 各功能模块软件设计 16
3.1智能小车移动控制模块 16
3.2 CMOS摄像头采集模块 18
3.2.1 OV7670的使用 18
3.2.2 图像采集及存储 19
3.3 MFC串口模块 23
3.3.1 初始化串口 24
3.3.2捕捉串口事项 25
3.3.3 串口读写 25
3.4 小结 27
第4章 地图构建算法开发及实验 28
4.1 距离数据获取 29
4.2 地图上各个障碍物坐标点的确定 31
4.3 地图中障碍物和行走距离的绘制 34
4.4 图片的显示和锐化 35
4.5 GUI图形界面的编写 37
4.5.1 GUI简介 37
4.5.2 图像的匹配 42
4.6 小结 45
第5章 总结与展望 46
参考文献 47
致谢 49
附录 50
第1章 绪论
1.1 选题背景与意义
机器人最早是以科幻的形象出现的,所以它在人们的意识中总是带着神秘的色彩。其实机器人并不神秘,它就出现在日常生活中,极大的方便着我们的生活。银行里的自动存取款机、指挥交通的红绿灯、街头的自动售货机、甚至于我们家庭中用的空调都属于机器人的范畴。机器人并不全是外表酷似人类的机器,而是“具有与高等生物类似的智能,能够自动活动的机器”[20]。机器人除了服务于在人们的日常生外,在矿藏勘探、灾难抢险、油气泄露以及星际探险中也发挥着越来越大的作用,具有广阔的发展前景,所以研究机器人和机器人学具有一定的现实意义和社会价值[1]。
移动机器人的定位与地图的创建是机器人领域的热点研究问题,是机器人实现导航的前提。目前,对已知环境的机器人自主定位和已知机器人姿态的地图的创建,已经有了许多不同的解决方法。根据先验地图,在结构化室内环境中进行的移动机器人的定位与地图的创建的研究已经取得了很大的成功,并且已有很多的应用实例。然而在很多情况下,事先较难获得机器人的工作环境地图,而且在很多环境中,机器人不能利用全局定位系统进行定位。所以,机器人如需在完全未知的环境中创建地图,需同时利用地图进行自主定位和导航,这方面的研究已经取得了很大的进展,并应用于室内,水下和室外等各种不同的环境。移动机器人大多采用机载传感器,如激光测距仪,声纳及摄像头等[2][9]。近年来,随着图像处理技术的进步,以及CDD摄像头具有代价低、重量小、能耗少等优点,基于视觉的SLAM越来越受国内外学者的重视[6]。目前,对于基于视觉的移动机器人同时定位与地图创建而言,一般可分为单目视觉和双目视觉。
人们对机器人同时定位和地图创建(Simultaneous Localization And Mapping,SLAM)问题的研究始于二十世纪八十年代,但是直到1995才由Durrant-Whyte等人将该问题命名为SLAM问题,随后被人们广泛接受并沿用至今。机器人学中,机器人的定位问题和地图创建问题是紧密相连的。早期,人们主要研究了已知环境地图情况下的机器人定位和己知机器人位置前提下的环境地图创建。在已知地图的环境中,机器人通常利用传感器测量出自身与环境特征之间的距离,利用环境的位置信息进行自身定位;在已知机器人位置的情况下,通过传感器测量到环境与自身位置的相对距离,然后根据机器人的位置逐步建立地图。随着工业的发展和人类探索领域的扩大,人们对机器人的需求更加强烈,要求也更高。在一些对人有危害性的作业现场(如有毒气体检测、矿山开采,灾难抢险等)或者不适合人类工作的地域(如海洋和海底探测、星际探险等),人们希望机器人能够代替人类工作[3]。
在这些情况下,由于事先对环境知之甚少,甚至一无所知,机器人既没有地图信息也不知道自身的位置。这就要求机器人能够在一个完全未知的环境中从一个未知的位置出发,在递增逐步地建立环境地图的同时.利用已建立的地图来同步刷新自身的位置。因为地图的刨建和机器人的定位是相互依存,互为前提的,所以从传统意义上来讲,投有准确的环境地图,难以利用地图进行精确定位;另一方面,投有精确的位置信息,机器人也无法通过自身位置建立准确的环境地图.这种关系形成了“鸡生蛋,蛋生鸡”的难题。这就是所谓的SLAM或者CML问题[5][7]。
可以看出,SLAM意在同时解决机器人学的两个关键问题:
(1) Where am I? (定位);
(2)What does the world look like? (地图创建)。
1.2 研究历史和现状
至今,SLAM问题已有二十多年的研究历史,其算法的进化可以分为三个阶段:
(1)初始阶段:八十年代中期到九十年代早期在这一时期,人们对SLAM问题的认识还比较模糊,对SLAM问题还没有清晰的解决思路。这一时期的主要的研究成果是两种地图创建方法的出现。一种是栅格法(又称置信栅格法),它由Moravec和Elfes于1985年首先提出的,属于最早的地图创建方法[11]。利用栅格法创建地图对数据的精确性要求不高,故该方法尤其适合超声测距仪数据。然而该方法不能表示机器人位置姿态的不确定性,不适合SLAM中构建大环境的地图。另一种地图创建的方法是基于特征的方法,也就是本文所用的几何地图。几何地图法是由一批学者在二十世纪八十年代后期相继提出的,随后被广泛应用于SLAM研究中。该方法能够体现机器人位置姿态的不确定性,并且能够完整推导出基于估计理论的SLAM的数学表达式。
(2)发展阶段:二十世纪八十年代后期到九十年代后期SLAM的许多经典思想都是在是在这一阶段出现的。1988年Smith,Self, and Cheeseman首次将SLAM问题阐述为概率估计问题。1995年Durrant-Whyte等人提出了Simultaneous Localization and Mapping(SLAM)的概念。基于信息矩阵的研究方法也在这一阶段被发扬光大。这一阶段,人们已经发现实时性是SLAM问题的瓶颈,其中时间主要消耗在互协方差矩阵的更新上。对于有n个路标的环境,计算的复杂度为O(n^2),随着n的增大,计算量变得相当巨大。所以这一阶段的算法只能用在路标个数小于一百的小环境中。
(3)快速发展阶段
近年来,SLAM的研究有了突飞猛进的发展,出现了一系列高效的算法RBPF-SLAM、FAST-SLAM、SEIF(Sparse Extended Information Filter)-SLAM等。这些算法的特点是:效率高,实时性好[4]。此时的SLAM算法可以应用于路标个数在五百以内的中型环境,有些算法甚至可以应用到路标个数上万的大环境中。
1.3 系统开发工具简介
1.3.1 KEIL 简介
Keil C51是美国Keil Software公司出品的51系列兼容单片机 C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器 、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境 (uVision)将这些部分组合在一起。
其特点有以下两点:
1. Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
2. 与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
1.3.2 MATLAB简介
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析 、矩阵计算 、科学数据可视化以及非线性 动态系统的建模 和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算 的众多科学领域 提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言 (如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平[12]。
MATLAB和Mathematica、Maple 、MathCAD 并称为四大数学 软件。它在数学 类科技应用软件中在数值计算 方面首屈一指。MATLAB可以进行矩阵 运算、绘制函数 和数据、实现算法 、创建用户界面、接其他编程语言 的程序等,主要应用于工程计算、控制设计、信号处理 与通讯、图像处理 、信号检测 、金融建模 设计与分析等领域 。
摘 要
随着科学技术的不断发展和工业自动化水平的提高,智能机器人被广泛应用于制造业、运输业、服务业等领域,并在救灾抢险、环境保护、深海和太空探测等方面发挥了不可替代的作用。随着机器人的推广,机器人在未知环境中的地图构建问题受到国内外学者越来越多的关注。本课题的主要研究是基于机器视觉的机器人未知环境地图构建算法。本文的主要工作如下:
(1)本文首先对机器人未知环境地图构建的问题进行了分析,对其国内外现状进行介绍,并确定了本文的主要任务。
(2)然后进行了移动机器人硬件设计,采用STC89C52芯片作为微处理器,利用红外传感器实现机器人的自主避障,同时用电机LG9110的速度来计算里程,利用摄像头OV7670作为图像采集传感器,实现环境识别。
(3)最后进行了地图构建算法设计及相关软件开发,并通过实验验证本文算法的有效性。
查看完整论文请+Q: 351916072
关键字:地图构建算法机器人控制机器视觉机器人避障
目录
摘 要 I
ABSTRACT II
第1章 绪论 1
1.1 选题背景与意义 1
1.2 研究历史和现状 2
1.3 系统开发工具简介 3
1.3.1 KEIL 简介 3
1.3.2 MATLAB简介 4
1.3.3 VCC++简介 4
1.4 本文主要任务 5
第2章 硬件平台设计与实现 6
2.1 硬件系统组成结构 6
2.2 元器件选择 6
2.2.1 主控芯片STC89C52 6
3.2.2 无线传输器件 7
3.2.3 蜂鸣器器件的选取 8
2.2.4 摄像头器件 8
2.2.5 红外器件 9
2.3功能模块设计 9
2.3.1 摄像头模块 9
2.3.2 无线蓝牙模块 10
2.3.3 智能小车电机模块 12
2.3.4 红外避障模块 14
2.4 小结 15
第3章 各功能模块软件设计 16
3.1智能小车移动控制模块 16
3.2 CMOS摄像头采集模块 18
3.2.1 OV7670的使用 18
3.2.2 图像采集及存储 19
3.3 MFC串口模块 23
3.3.1 初始化串口 24
3.3.2捕捉串口事项 25
3.3.3 串口读写 25
3.4 小结 27
第4章 地图构建算法开发及实验 28
4.1 距离数据获取 29
4.2 地图上各个障碍物坐标点的确定 31
4.3 地图中障碍物和行走距离的绘制 34
4.4 图片的显示和锐化 35
4.5 GUI图形界面的编写 37
4.5.1 GUI简介 37
4.5.2 图像的匹配 42
4.6 小结 45
第5章 总结与展望 46
参考文献 47
致谢 49
附录 50
第1章 绪论
1.1 选题背景与意义
机器人最早是以科幻的形象出现的,所以它在人们的意识中总是带着神秘的色彩。其实机器人并不神秘,它就出现在日常生活中,极大的方便着我们的生活。银行里的自动存取款机、指挥交通的红绿灯、街头的自动售货机、甚至于我们家庭中用的空调都属于机器人的范畴。机器人并不全是外表酷似人类的机器,而是“具有与高等生物类似的智能,能够自动活动的机器”[20]。机器人除了服务于在人们的日常生外,在矿藏勘探、灾难抢险、油气泄露以及星际探险中也发挥着越来越大的作用,具有广阔的发展前景,所以研究机器人和机器人学具有一定的现实意义和社会价值[1]。
移动机器人的定位与地图的创建是机器人领域的热点研究问题,是机器人实现导航的前提。目前,对已知环境的机器人自主定位和已知机器人姿态的地图的创建,已经有了许多不同的解决方法。根据先验地图,在结构化室内环境中进行的移动机器人的定位与地图的创建的研究已经取得了很大的成功,并且已有很多的应用实例。然而在很多情况下,事先较难获得机器人的工作环境地图,而且在很多环境中,机器人不能利用全局定位系统进行定位。所以,机器人如需在完全未知的环境中创建地图,需同时利用地图进行自主定位和导航,这方面的研究已经取得了很大的进展,并应用于室内,水下和室外等各种不同的环境。移动机器人大多采用机载传感器,如激光测距仪,声纳及摄像头等[2][9]。近年来,随着图像处理技术的进步,以及CDD摄像头具有代价低、重量小、能耗少等优点,基于视觉的SLAM越来越受国内外学者的重视[6]。目前,对于基于视觉的移动机器人同时定位与地图创建而言,一般可分为单目视觉和双目视觉。
人们对机器人同时定位和地图创建(Simultaneous Localization And Mapping,SLAM)问题的研究始于二十世纪八十年代,但是直到1995才由Durrant-Whyte等人将该问题命名为SLAM问题,随后被人们广泛接受并沿用至今。机器人学中,机器人的定位问题和地图创建问题是紧密相连的。早期,人们主要研究了已知环境地图情况下的机器人定位和己知机器人位置前提下的环境地图创建。在已知地图的环境中,机器人通常利用传感器测量出自身与环境特征之间的距离,利用环境的位置信息进行自身定位;在已知机器人位置的情况下,通过传感器测量到环境与自身位置的相对距离,然后根据机器人的位置逐步建立地图。随着工业的发展和人类探索领域的扩大,人们对机器人的需求更加强烈,要求也更高。在一些对人有危害性的作业现场(如有毒气体检测、矿山开采,灾难抢险等)或者不适合人类工作的地域(如海洋和海底探测、星际探险等),人们希望机器人能够代替人类工作[3]。
在这些情况下,由于事先对环境知之甚少,甚至一无所知,机器人既没有地图信息也不知道自身的位置。这就要求机器人能够在一个完全未知的环境中从一个未知的位置出发,在递增逐步地建立环境地图的同时.利用已建立的地图来同步刷新自身的位置。因为地图的刨建和机器人的定位是相互依存,互为前提的,所以从传统意义上来讲,投有准确的环境地图,难以利用地图进行精确定位;另一方面,投有精确的位置信息,机器人也无法通过自身位置建立准确的环境地图.这种关系形成了“鸡生蛋,蛋生鸡”的难题。这就是所谓的SLAM或者CML问题[5][7]。
可以看出,SLAM意在同时解决机器人学的两个关键问题:
(1) Where am I? (定位);
(2)What does the world look like? (地图创建)。
1.2 研究历史和现状
至今,SLAM问题已有二十多年的研究历史,其算法的进化可以分为三个阶段:
(1)初始阶段:八十年代中期到九十年代早期在这一时期,人们对SLAM问题的认识还比较模糊,对SLAM问题还没有清晰的解决思路。这一时期的主要的研究成果是两种地图创建方法的出现。一种是栅格法(又称置信栅格法),它由Moravec和Elfes于1985年首先提出的,属于最早的地图创建方法[11]。利用栅格法创建地图对数据的精确性要求不高,故该方法尤其适合超声测距仪数据。然而该方法不能表示机器人位置姿态的不确定性,不适合SLAM中构建大环境的地图。另一种地图创建的方法是基于特征的方法,也就是本文所用的几何地图。几何地图法是由一批学者在二十世纪八十年代后期相继提出的,随后被广泛应用于SLAM研究中。该方法能够体现机器人位置姿态的不确定性,并且能够完整推导出基于估计理论的SLAM的数学表达式。
(2)发展阶段:二十世纪八十年代后期到九十年代后期SLAM的许多经典思想都是在是在这一阶段出现的。1988年Smith,Self, and Cheeseman首次将SLAM问题阐述为概率估计问题。1995年Durrant-Whyte等人提出了Simultaneous Localization and Mapping(SLAM)的概念。基于信息矩阵的研究方法也在这一阶段被发扬光大。这一阶段,人们已经发现实时性是SLAM问题的瓶颈,其中时间主要消耗在互协方差矩阵的更新上。对于有n个路标的环境,计算的复杂度为O(n^2),随着n的增大,计算量变得相当巨大。所以这一阶段的算法只能用在路标个数小于一百的小环境中。
(3)快速发展阶段
近年来,SLAM的研究有了突飞猛进的发展,出现了一系列高效的算法RBPF-SLAM、FAST-SLAM、SEIF(Sparse Extended Information Filter)-SLAM等。这些算法的特点是:效率高,实时性好[4]。此时的SLAM算法可以应用于路标个数在五百以内的中型环境,有些算法甚至可以应用到路标个数上万的大环境中。
1.3 系统开发工具简介
1.3.1 KEIL 简介
Keil C51是美国
其特点有以下两点:
1. Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
2. 与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数
1.3.2 MATLAB简介
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计
MATLAB和Mathematica
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jxgc/zdh/4904.html