基于视觉传感器的智能小车避障控制系统设计毕业论文
2020-04-09 15:44:41
摘 要
智能车辆作为近些年高速发展的智能化与集成化的产物,不论在哪个国家都是被大力推行与发展的,智能小车之所以为智能小车,就是其可以通过设定好的程序自主的进行某些工作,而并不是像传统的车辆一样只能通过人为的操作,一般的智能车辆拥有着众多功能,而要让智能车辆能够正常的工作,能够使小车在行进之中自动的避开障碍物就显得十分重要了,避障可以利用很多的方式,而利用视觉传感器采用图像处理的方式使小车能够自主判断是否需要避障,就是这众多的方式之中比较优秀的一种,本论文对智能小车的图像处理进行了部分研究,基于视觉传感器利用单片机作为处理器,利用摄像头拍摄路面状况,对采集的图像进行处理,之后再通过处理之后的图像对前方是否存在障碍物进行判断,进而控制小车的电机的转动方向,确定小车的避障与否。智能小车一般主要由3大主要模块,分别是传感器部分,处理器部分和执行部分,执行部分一般为电机,智能小车的各个模块的作用各不相同,都各自负责着不同作用,传感器模块主要负责对外部信息进行采集,在采集完信息之后就将信息传导至中央处理器部分,中央处理器部分主要负责对外部传输来的信息进行分工处理,之后进行判断,将处理的最终结果即我们下一所要做的动作传导至执行部分,执行部分就好比是人的手脚,大脑在判断前方存在障碍后控制脚避开障碍物行走,同理,在避障小车的处理器部分判断前方存在着障碍物后控制执行部分,驱动智能小车进行避障。
关键词:视觉传感器;智能小车;单片机
Abstract
Intelligent vehicles are the product of high-speed development of intelligence and integration in recent years. No matter which country is being vigorously promoted and developed, smart cars are smart cars, which means they can be autonomously set up through programmed procedures. Some jobs, but not just traditional vehicles, can only be operated by humans. The general smart vehicles have many functions, but the smart vehicles can work normally and can automatically avoid obstacles while the car is in progress. Things are very important. Obstacle avoidance can be used in many ways. Using visual sensors to adopt image processing methods enables the car to independently determine whether it is necessary to avoid obstacles. This is one of the many outstanding ways. The image processing of the smart car has been studied in part. Based on the visual sensor, the SCM is used as the processor to take pictures of the road surface using the camera, and the collected images are processed. Then the processed image is used to judge whether there are any obstacles in the front, and then the control is performed. The direction of rotation of the car's motor, determine whether the car's obstacle avoidance or notSmart cars are mainly composed of three major modules, namely the sensor part, the processor part and the execution part. The execution part is generally a motor. The division of the various modules of the smart car is clear. The sensor module is like a person's eyes and responsible for external information. After the acquisition, the information is transmitted to the central processor after the information is collected. The central processor part is like the human brain. It divides the information transmitted from the outside and then judges it. The final result of the processing is our The next action to be performed is conducted to the execution section. The execution section is like a person's hands and feet. After the brain determines that there is an obstacle in front of the control foot, the control foot walks away from the obstacle. Similarly, the processor in the obstacle avoidance car determines that there is a front The post-obstacle control execution section performs obstacle avoidance processing for the obstacles that exist in front of the obstacles.
Key Words:Visual sensor; smart car; microcontroller
目录
第一章 绪论 1
1.1研究背景和意义 1
1.2国内外智能车辆发展现状 1
第二章 方案的确定 3
2.1 基于视觉传感器的智能小车的硬件组成 3
2.2 具体内部处理器的选择 3
2.3 具体视觉传感器型号的选择 3
2.4 整体方案的确定 3
第三章 硬件介绍 4
3.1 STM32单片机 4
3.2 OV7670摄像头模块 6
3.3 FIFO模块 9
3.4 直流电机 10
第四章 软件介绍 11
4.1 外部图像的采集 11
4.2 SCCB总线通信 12
4.3 对采集的图像进行黑白二值化处理 13
4.4 小车避障程序 13
第五章 实物调试 15
第六章 总结与展望 16
6.1 总结 16
6.2 展望 18
参考文献 18
附录A 19
致谢 49
第一章 绪论
1.1研究背景和意义
我们的时代和科学技术总是在不断的前进着的,伴随而来的就是各种科技产物更高的智能化、自动化化和集成化。智能小车是人类进入电气社会后新兴出现的产物,近些年不论是在国内还是国外,都有着十分迅速的发展,由现在的发展可以预见到,将来带有智能系统的小车和机器人都是将来发展的主流。在以前的社会生活之中,因为不存在智能系统,所有的小车都是靠人为的操作的,比如在工厂之中移动货物的时候,就需要使用人手去操作,去搬运货物,这样不仅耗费了大量的人力,提高了成本,更耗时耗力,而有了智能小车之后,在搬运货物时,就不需要人员去操作了,智能小车就可以靠着智能系统,依靠设定好的程序将货物运输到之后的地方进行下一步的加工,节省了大量的人力与成本。还比如在危险的救灾工作之中,如果让我们的人员去搜救,不仅仅十分的危险,而且在某些狭窄的缝隙之中,我们的人员也无法搜救的到,而智能小车就不存在这些问题,我们可以派小型的智能车去一一搜索,降低了危险与人员消耗的同时,也提高了搜救效率,在搜索到伤员的同时可以立即派人员去搜救,大大提高了伤员的存活率。而智能小车之中相当重要的一个功能就是自动避障功能,只有拥有了自动避障功能,小车才能在工作之中自动避开障碍物,避免因为无法避障导致小车在工作之中发生碰撞,导致货物或小车的主体遭到损坏,而智能避障功能可以利用很多方法来实现,在本文之中,我们使用视觉传感器从而使小车达到自动避障的目的。
1.2国内外智能车辆发展现状
国外发展现状:智能小车这一概念虽然已经提出了很久,但由于技术、成本等各个方面的因素的影响,现在并没有很完美的智能车辆被研制出来,但由于国外在智能车辆系统的研究之上投入较早,所以已经成功的取得了可见的成就,成功的实现了关于智能车辆系统的一些可行的技术,并成功的在实际的道路行驶之中进行了测试,除了一些明面上的,已经被证实的的确取得了一定的成就的智能车辆系统之外,还存在着一定的,正在研发,或取得了成功而没有公布的智能车辆系统,由此就可以看出国外在智能系统的发展上已经的确领先了我们许多步,在我们还没有开始之时,他们就已经着手研究了起来。比如德国国防大学与奔驰汽车公司共同合作研制出了一种智能系统,其名称为VAMORS—P,此车辆系统的数据采集部分主要包括了五个主要的系统:负责采集四周的图像与道路信息的使车辆能够自动判断前方是否可以通行于自动进行道路选择的双目视觉系统,用于控制车辆加速度使车辆自动控制加减速的加速度测量计,用于反馈判断车辆转弯与掉头的角度使小车达到自动转向目的的角度传感器,用于测量车辆运行速度的测速表,用于监控车辆的发动机运行状态使车辆可以自我判断发动机是否还能正常运行的测量仪,其内部处理器采用需要处理大量的传感器采集的外界信息的电脑系统。美国的卡内基·梅隆大学的机器人研究所他们早早的就开始了智能车辆的研究,其取得的最为著名的成就便是自主成功研制了NAVLAB系列智能系统,此智能系统存在着众多采集数据的传感器系统,主要包括采集图像信息确定各个方向道路路面状况的视觉传感器、采集地理位置等信息的GPS定位系统、控制车辆运动速度避免运行过快或过慢的光纤阻尼陀螺与记录行驶之中发生的各种情况的光码盘。此系统的内部处理器系统主要分成两个部分:其一是负责完成对传感器采集传输过来的各种各样的有用或者无用的信息进行分离、判断、融合与处理的同时完成对车辆之后的行进路径的规划的SPARCLX便携式工作站;其二是负责对车辆的底盘外壳进行微控和对车辆内部各种机械运行和主体连接的情况的监控的HCII微控制器,通过此控制器的监控大大增加了车辆在行驶时的安全性,为今后在生活之中的大量推广与运行提供的基础[1]。
国内的发展现状:国内的智能车辆系统由于正式开始发展的时间较晚,在顶尖的技术层面之上还是落后于国外的顶尖技术,由于这些年在智能化技术上的大力研究,智能化的某些方面得到了明显的发展与进步,并成功得到了一些明显的成果。比如吉林大学的课题小组在智能车辆系统之上就主攻对外界环境的采集、分析、判断与自动定位导航使小车自动选择最优的前进路线的技术,通过一段时间的研发,研究的智能车辆虽然还无法在很复杂或者真实的道路环境之中行驶,但已经可以做到,在较为简单的环境之中自动进行直线、弧线方式行驶。而在另一边清华大学则是主攻通过视觉传感器与GPS共同联合的方式使车辆能够在道路上自动行驶,附带对车辆的远程控制的研究,其研究出的车辆经过实际检验已经可以在较为复杂的拥有一定层次的道路上自主行驶,同时也能通过远程电脑遥控使车辆达到我们想要的目标,同时其汽车系在保持车辆安全运行的方面也取得了长足的进步,不管怎样,对于这种无人的智能的机械,如何安全的运行,保证自我与外界人员的安全都是不可忽视的问题,而其通过对外界环境与内部车辆零件的检测,严格控制车速等一系列方式大大降低的智能车辆在实际运行之中的危险程度,为智能化车辆的大量推广打下了基础。
第二章 方案的确定
2.1 基于视觉传感器的智能小车的硬件组成
想要制造一个智能小车,我们需要明白小车的主要部分由哪几个部分组成,一般主要包括:电源部分,信号采集部分,中央处理控制部分以及动力驱动部分。而由于我们任务的限定,我们选择视觉传感器作为信息采集部分,中央处理器采用一般大量可用的单片机,动力驱动选择直流电机作为驱动,最后由于视觉传感器与单片机的额定电压的一般都较小,所以采用电池组作为供电部分。
2.2 具体内部处理器的选择
采用STM32单片机作为小车的中央处理器,采用STM32作为处理器可以快速正常的处理图像数据,在采集图像数据时可以高效的采集与处理,同时在STM32单片机之上存在着数字摄像头的接口,在利用视觉传感器采集数据时可以更为简洁方便的与单片机相连,并互相传输数据,优于其他很多低级的单片机,所以选用STM32单片机作为内部处理器。
2.3 具体视觉传感器型号的选择
方案一:采用OV7620摄像头作为视觉传感器,鉴于其在像素与采集数据的速度之上与其余视觉传感器的差别不大,但其价格要高于另一款视觉传感器,所以放弃选择其为视觉传感器。
方案二:采用OV7670摄像头作为视觉传感器,其价格较OV7620摄像头较比便宜了许多,且可以采用带FIFO模块的摄像头,可以将图像数据先寄存于FIFO模块之中,使数据传输更为快速,所以决定采用此方案。
2.4 整体方案的确定
可以得到整体方案是选择OV7670摄像头采集图像数据,利用STM32单片机对采集的图像数据进行判断处理,在对一帧的图像处理完成之后,驱动直流电机控制小车的运行[2]。
第三章 硬件介绍
3.1 STM32单片机
STM32单片机内部使32位闪存微控制器,其性能高、能够实时处理大量数据、集成度较高,开发较为简单,其按照内核的不同主要分为不同产品根据要求,我选择的是内核为Cortex®-M4型的stm32f407vet6单片机,引脚图如下:
图3.1 stm32f407vet6单片机
其内部存储器是2MB,在内部主要分为两个区,在进行程序运行时可以同时读取数据与写入数据,拥有并行控制的用于控制LCD的接口,同时支持LCD的8080模式和6800 模式两种总线模式通信,其中的薄膜晶体管液晶显示器可以支持扩展图形阵列显示的较高的像素分辨率,具有用于增强图像显示的内容的内部处理电路,其电源需求在1.7V到3.6V之间,需求的工作电压较小,可以更为简便的在任意的地方使用,其内部的晶振频率在4到26MHz之间,其内部具有经过校准精度的RC振荡器和RTC振荡器,分别可哟昌盛16MHz的振荡信号和32kHZ的信号,具有三种待机模式,其中具有两个12位的模数转换器,具有能够缓存一定数据的数据存储模块,内部的定时器较多,同时也具有较高频率的定时器,可以对时间进行更为精细的控制[3]。
主要功能概述:STM32的内部处理器采用最新的技术建立而成,可以与所有的ARM的工具与软件相兼容,内部存在实时可以自适应的存储器加速器可以对内部处理速度进行优化,加速器可以实现程序指令的预先读取并分别缓存起来,解决了因为程序运行过快,而程序读取速度不足,需要等待的问题,提高了整个程序的处理速度[4]。
STM32存在着存储器保存功能,防止在程序处理的过程之中,因为偶然的运行错误,使另一区块所存储的内容发生损坏,在使用时可以选择分区块使用,也可以选择将整个保护区作为一个区块使用,保护区的大小可以在32个字节到4G之间选择,而这个功能也可以由自己选定使用或者不使用。
单片机还拥有循环冗余校验计算单元,主要用于验证传输数据或者在储存数据的过程之中有无错误的发生,可以使单片机在运行过程之中程序与数据尽可能的完整,保证自己能够得到较为准确的运行数据,具有严密的总线矩阵,保证可以同时支持多个外部设备的高速运行,内部具有DMA控制器,主要用于保证数据之间的互相传输,在传输数据时起着循环数据缓冲的功能。
具有复位功能,32单片机的复位方式一般有3种复位方式,其一是采用系统复位的方式,系统会在产生外部复位的信号、看门狗计数器的计数结束、或者软件复位时产生,主要是将除了备份域外的所有寄存器的值复位为初始值,第二种方式是采用电源复位,内部的复位脉冲信号需要足够的持续时间才能保证最终的复位,也可以通过外部输入信号使单片机发生电源复位,需要对NRST引脚输入低电平信号,最后一种方式是备份域复位,主要是对备份域内的寄存器进行复位。
STM32单片机具有通用的输入及输出接口,单片机的每个输入输出接口都可以自由的进行编程应用,但其中的寄存器必须按照32位字节或字进行访问才能够访问读写数据。
在STM32单片机之上存在着数字摄像头接口DCMI,主要可以接收8位到14位的数字摄像头数据,可以使STM32单片机更好的驱动数字摄像头OV7670,其可以支持单色的图像数据格式,也可以支持RGB565格式以及灰度值格式的图片,此接口存在有两个时钟域信号用于更为准确的接收图像信号,在其中一个时钟信号保持稳定时,另一个时钟信号出现上升沿则控制单片机对图像数据进行采样,此接口在处理接收图像数据之时,可以选择逐帧的接收数据,也可以选择连接接收图像信号,在单帧采集的模式下,此接口在采集完成一帧的数据之后将自动关闭,不再接收数据,只对采集的一帧数据进行处理,在连续采集模式下,可以自由配置具体连续多少帧采集一次图像数据。同时此接口还存在着对采集的图像进行修剪的功能,可以从采集的图像数据之中选取一个矩形窗口,将采集后的图像数据进行裁剪,有选择性的处理某一部分的图像数据,方便我们对摄像头采集的数据进行预处理,并裁剪掉容易产生误差的图像边沿。