基于Arduino开源平台的图像稳定器的设计毕业论文
2020-02-23 21:54:58
摘 要
在当代网络和智能手机的普及的背景下,摄影拍照越来越成为人们生活中普遍的现象,人们对图像质量的追求也越来越高。本文简要介绍了一种基于Arduino的图像稳定器的设计方案,其中主要结构可以分为摄像头、舵机、陀螺仪、以及控制平台这几部分。首先陀螺仪传感器可以读出即时位置摄像头的坐标位置,再把读取出来的信息传送到控制平台中,在软件部分根据读取出的即时位置的信息做出相应的应答,驱动舵机进行相应的转动,从而使摄像头始终保持相对的稳定,这就很好的处理了在动态环境中的摄像问题,避免了抖动带来的图像模糊现象。在对摄像头偏离角度进行补偿的过程中,为了尽可能减小一些外界因素而带来的误差以及更自然的对偏离角度进行补偿,在软件设计中我们运用了PID算法来实现。
关键词:Arduino单片机;MPU6050芯片;PID控制算法;角度补偿
ABSTRACT
In the context of the popularization of modern network and smart phone, photography is becoming more and more common in people's life. This paper briefly introduces a design scheme of image processor based on Arduino, which can be divided into camera, steering gear, gyroscope, and control platform. Gyroscope sensor can read first instant camera coordinate location, and then read out the information transmitted to the control platform, the software part according to read out the real-time location information to the corresponding responses, drive servo turn accordingly, so that the camera has always remained relatively stable, it is good to deal with the problem of camera in a dynamic environment, to avoid the jitter image fuzzy phenomenon. In the process of the compensation for the camera off Angle, in order to minimize some outside factors of error and to compensate the deviation Angle of more natural, we apply the algorithm in the software design to implementation.
Keywords : Arduino single-chip microcomputer; MPU6050 chip; PID control algorithm,;Angle compensation.
目 录
第1章绪论 1
1.1论文的选题背景和意义 1
1.2图像稳定器的现状 1
1.3 Arduino单片机的概述 2
1.4论文的主要研究内容 3
第2章 图像稳定器的整体设计 5
2.1 设计原理与方法 5
2.2 硬件设计 5
2.3 软件设计 6
2.3.1 Arduino IDE 6
2.3.2 Arduino语言 7
第3章 PID控制算法 8
3.1 PID控制算法的原理 8
3.2 PID控制各校正环节的作用 9
3.3 PID控制的参数设定 9
第4章 硬件模块 11
4.1 各模块的构成及基本性能特 11
4.1.1 单片机模块 11
4.1.2 陀螺仪模块 11
4.1.3 电机驱动模块 13
4.1.4 摄像头模块 13
4.2 装置的搭建 14
第5章 软件模块 16
5.1软件设计思路 16
5.2添加函数库 16
5.3 初始值校 17
5.4 MPU陀螺仪芯片角度值的更新 17
5.5 PID算法 17
5.6调整舵机角度 18
第6章 实验结果及分析 19
6.1实验预期目标及实验现象 19
6.2 实验结果分析 20
第7章 总结与展望 21
参考文献 22
致谢 23
第1章绪论
1.1论文的选题背景和意义
在科技大幅进步和人们生活水平飞速提高的大背景下,图像处理越来越多的被应用到人们生活的方方面面,最初的图像可能更多的是用来留恋或者来显示事物的基本模样,慢慢的,科技的进步也给人们追求高质量图像提供了条件。到目前这个阶段,包括航天航空领域、生物医学工程、通信工程、军事安全方面、机器人智能化等等这些重要领域都与图像处理技术密切相关[[1]]。人们对图像的追求逐渐转换为高质量图像的追求。就拿我们日常生活中的例子来说,现在的智能手机除了核心处理器、内存等重要性能指标,还有一个人们最在意的性能就是像素了,拍照的质量也逐渐成为手机功能的一项重要指标,最新出的新款手机也逐渐用到了人工智能技术拍照,来追求更高质量的拍照效果。把人工智能技术运用到摄像中,其中一个很重要的目的就是为了消除手机拍照时手的抖动使照片模糊的情况,也就是起到一个图像稳定的作用[[2]]。
在本次的设计中,我们设计出的图像稳定器的主要功能也是防抖减震,也就是排除外界干扰使摄像头始终保持稳定的状态,从而避免出现图像模糊的情况。选择Arduino软件平台作为系统的控制核心,根据MPU6050陀螺仪传感器获取的位置数据信息对舵机的位置进行相应的调整,从而保持摄像头始终处于一个稳定的位置。
随着摄影成为人们生活中越来越重要的一部分,各种图像稳定器的发展也自然而然成为一个必然的趋势。现实生活中,凡是要用到摄像的地方几乎都少不了图像稳定器,例如现在的智能手机、监控摄像头、无人机航拍等等,里面都有稳定器在保证获取图像的稳定性。在信息化的时代,越高质量的图像信息就代表更多的价值。因此,追求高质量的图像稳定器,就能获取到许多原先摄像机获取不到的图像信息 ,从而达到进一步研究的目的。例如在航拍中,如果没有精度高的稳定器,得到的图像画面一定不够清楚,这样就极大的降低了航拍的价值[[3]]。可以说无论是日常生活还是前沿科技,高水平的图像稳定器都可以起到一个促进的作用。它可以实现生活中的动态摄影并且保证图像信息的质量,技术成熟后可以应用到手机拍照中,非常贴近日常生活。
1.2图像稳定器的现状
本设计中的图像稳定器实际是通过减震防抖来实现稳定图像的作用,实际上也是一个简便的云台减震防抖装置。在云台减振技术领域这方面,国外开始开展研究的时间相对较早,因此也取得了更为丰硕的果实。电动云台减震技术最早是运用在现代无人机中,来实现其巡视和检查等基本功能。众所周知,监控系统对画面信息的质量要求很高,必须防止监控画面抖动或出现模糊的现象,同时对快速转换画面跟踪的要求也是特别严格的,正因如此,几乎全部的无人机都必须配有云台减震防抖系统,来保证其监控性能能达到要求。例如在追杀本·拉登行动中就运用到了安装有“天球”云台的无人机“捕食者”,并利用传回的实时视频信号找到了一名恐怖分子高级军官藏身地点,为这次反恐行动的胜利提供了有力的支持[[4]]。随着世界各国技术水平的提高,现在大部分的国家着手发展无人机,其类型也越来越丰富,如以色列的“苍鹭TP”无人机,美国的“全球鹰”侦察机,以及欧洲多国联合研发的无人机“神经元”,号称开创了新一代无人机新纪元。
相对而言,国内对与减震稳定云台的研究要晚不少,因此技术水平比不上国外的先进水平,但近些年来差距正在逐渐缩小。80年代陆陆续续开始引进外国的一些陀螺仪稳定云台,经过大概十年的研究,到90年代我国开始可以自主研制机载陀螺稳定云台。再到如今云台在日常生活中的应用可以说是十分广泛了,高速路口云台、农业上无人飞机机载云台、车辆识别系统中的云台、巡逻车上的车载摄像机云台等,这些现象都充分体现了我国对云台研发和使用取得的丰硕果实,目前国内开发和研制高精度智能云台稳定器的机构主要有:清华大学、九江精密测试技术研究所、西安兵器工业总公司205所、华中光电所等机构、成都光电所、长春光学精密机械研究所[[5]]。随着民用无人机生产单位的逐渐增多,目前国内生产和销售无人机的企业公司已经超过百家。例如深圳大疆创新科技有限公司,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,在全球超过一百个国家销售无人机。从最早的低端商用飞行控制系统起步,逐步地研发推出了ACE系列直升机飞控系统、多旋翼飞控系统、筋斗云系列专业级飞行平台S1000、S900、多旋翼一体机Phantom、 Ronin三轴手持云台系统等高端产品。2018年1月23日晚间,大疆创新(DJI)在美国纽约举行新品发布会,会上大疆创新正式发布了2018年旗舰新品Mavic Air[[6]]。相信不用多少年,国内的减震稳定云台控制技术也能达到世界先进水平,到那时就不再需要依赖外国的技术了,可以自力更生,甚至让世界各国引进中国的先进技术。
1.3 Arduino单片机的概述
Arduino是一个用来组装可以与你周围世界互动的计算机工具。它能被用来连接可以检测声音、光、或振动的传感器,然后点亮一盏灯,改变它的颜色,移动电动机等。它从测量真实世界的传感器中读取数据,根据这些数据做出决定,然后在做出相对应的调整。Arduino是一个微控制器,也就是一个简单的计算机。它虽然不能在同一时间做很多事情,但它能很好地完成让它做的事[[7]]。日常生活中像微波炉和洗衣机之类的电器就是由他们控制的。Arduino语言是建立在C/C 基础上的,其实也就是基础的C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,对AVR库进行了二次编译封装,把端口都打包好了,寄存器啦、地址指针之类的基本不用管,不用我们去了解他的底层。让我们不了解AVR单片机(微控制器)的朋友也能轻松上手,大大降低了软件开发难度,适宜非专业爱好者使用。 软件开源并可扩展 - Arduino软件是开源的,对于有经验的程序员可以对其进行扩展。Arduino编程语言可以通过C 库进行扩展。Arduino 项目一个最好的特点是可以通过添加第三方面库来增加对硬件的支持。有很多的库,你可以选择一个需要的来安装[[8]]。它们只会在你需要它们的时候载入,目前对于大多数的库你可以下载安装它们方便将来使用。我们知道什么是过程:一个过程是一个要做的事情清单。一个库是一个大的相关过程的集合!如果你想控制一个电机,你可以找一个电机控制库:一个已经为你写好的过程的集合,从而可以让你省去学习电机细节的繁琐工作。它具有以下特点:
1)跨平台:与其他的大多数控制器只能在Windows上开发相比,Arduino IDE除了可以在Windows上运行,还可以在Macintosh OS X、Linux等主流操作系统上运行。
2)Arduino IDE既可以根据个人需要修改开放源代码的电路图设计,也可从程序开发接口免费下载。
3)简单清晰:Arduino IDE基于processing IDE扩展而来。对于初学者来说,容易理解,同时有着足够的可变性。Arduino语言基于wiring语言发展而来,是对 avr-gcc库的二次封装,相对不需要太多的单片机基础、编程基础,简单学习后,你也可以快速的进行开发。
4)开放性:Arduino的硬件原理图、电路图、IDE软件及核心库文件都是开源的,在开源协议范围内里可以任意修改原始设计及相应代码。
5)支持多种互动程序:Flash、Max/Msp、C、Processing等
6)发展迅速:Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势。Arduino简单的开发方式使得开发者更关注创意与实现,更快的完成自己的项目开发,大大节约了学习的成本,缩短了开发的周期[[9]]。
因为Arduino的这些优势,Arduino也越来越受专业硬件开发者和软件开发者的青睐,使用的区域越来越广。大学里,越来越多的专业也纷纷开展了Arduino相关课程。
1.4 论文的主要研究内容
本次设计的题目是基于Arduino的图像稳定器的设计,在这次设计中,需要用到的器件有MPU6050传感器芯片,摄像头,舵机以及Arduino单片机芯片。其大致的工作原理是先组装好舵机、MPU6050传感器芯片、摄像头,本次设计中用到了两个舵机,是一个二维的图像稳定器。测出舵机和MPU6050芯片的初始角度位置,此次设计中初始位置即为摄像头保持水平稳定时的坐标位置,这个位置可以调用Arduino IDE中函数库中的函数获取。找出初始位置时两个位置坐标间的关系。不断读取由MPU6050传感器芯片测出的摄像头即时位置坐标,对比初始摄像头与舵机的位置坐标关系,调整舵机的位置坐标从而使摄像头拍摄的位置保持水平不变。同时为了减小误差并使相应的舵机调整的反应更为平缓,本次设计通过在代码中加入了PID控制算法来实现。这次设计中首先要做的就是组装好设备,这步需要我们对MPU6050芯片、舵机引脚、Arduino单片机引脚有一定的掌握。其次就是学习Arduino IDE软件,对其基本的库函数要有比较深刻的认识并且懂得如何使用库函数,例如串口通信函数和舵机库函数等等。另外的重点难点就是找出芯片位置坐标与舵机位置坐标间的关系和如何运用PID算法来达到目的。具体的实现方法将在下面的内容中具体讨论。设计最终要达到的状况是,我们人为手动倾斜装置,舵机会自动转动来补偿摄像头的倾斜角度,从而使摄像头始终处于初始设定的位置,来保证摄像画面的稳定状态。
第2章 图像稳定器的整体设计
2.1 设计原理与方法
这次设计中控制系统主要包括MPU6050陀螺仪测量芯片模块和直流舵机PWM控制模块。MPU6050芯片负责测量即时位置坐标,反馈到Arduino IDE中,控制对应的直流舵机PWM系统做出对应的补偿。坐标补偿的方法是先初始设定舵机角度与MPU6050角度,确定二者之间的关系,装置组装好以后,两者角度的变化是同时的,而摄像头的方向是由舵机控制的,要调整摄像头的拍摄方向,只需调整直流舵机的方向。MPU6050芯片可写入函数来读取即时角度,在软件中写入对应关系的代码再结合PID算法就可以达到使摄像头即时调整到保持在水平方向拍摄。这次设计中图像稳定器涉及的是三维空间的调整,因此需要两个直流舵机来控制两个方向上的角度[[10]]。MPU6050芯片可以读取x、y、z轴的角度,本次设计中只需要用到两个轴的方向,设计中取的是x轴和y轴方向,这可以根据自己的喜好确定装置偏移方向与对应轴,一旦确定,不能轻易改变,在软件部分编写代码是需要区分各个坐标对应的舵机以及控制的方向。
2.2 硬件设计
此次设计中硬件部分由以下几部分组成:Arduino单片机芯片、电源、MPU6050陀螺仪芯片、直流舵机两个、摄像头。设计中电源采用的是电脑USB接口供电,以Arduino单片机为核心控制芯片,控制两个直流舵机的转动,来达到补偿摄像头角度的目的。把摄像头、两个舵机以及MPU6050芯片固定组装好以后,连接Arduino单片机供电。当装置抖动倾斜时,MPU6050同摄像头的角度同时改变,这是代码自动调整舵机的角度从而达到补偿摄像头角度,使其始终保持在水平位置拍摄的状态。其硬件框架图如图2.1。
图2.1 硬件结构框
2.3 软件设计
2.3.1 Arduino IDE
为了运行Arduino程序,除了需要Arduino单片机外,还需要在另一台计算机和一个特殊软件,需要使用一款软件来编写代码再传到Arduino单片机中,这个软件就是Arduino IDE。IDE是一个集成开发环境,是用以特定的语言编写计算机代码的软件应用程序,它也被称为编程环境。这个应用程序可以创建和编辑代码,以及运行代码。图2.2为IDE软件的主界面。
图2.2 IDE软件主界面
在Arduino IDE的窗口顶上有6个按钮,如图2.3,从左至右依次是验证、上传、新建、打开、保存以及串口监视器按钮。单击验证按钮,Arduino就开始编译代码,也就是接受写入的代码并将其转换为单片机可以理解的东西。如代码存在错误,会在窗口的底部打印出错误信息,验证按钮的作用就是检验代码是否存在错误。验证无错误之后第二个上传按钮,就会编译并上传代码到Arduino单片机芯片。中间三个按钮依次是新建一个工程,保存及打开工程的作用。程序上传至单片机后,单击最右侧按钮打开串口监视器,会打开一个窗口,可以看到单片机的消息会出现在串口监视器里,串口监视器是IDE的工具,可以通过串行通信让我们看到Arduino单片机发送的消息[[11]]。
图2.3 IDE窗口界面
在上传代码之前,需要先检查board和port两个设置。必须保证启动Arduino IDE软件之前这两个设置都是正确的。这两个参数设定后,就不需要更改,选定Board时,选择Tool中的Board。就可以看到各种不同的Arduino板列表,这次设计中是用Uno,故选择Arduino Uno。然后在Tools下的Serial Port下的选择端口。根据所用板子的工作方式选择对应的端口,选择端口之前要确保USB线把单片机芯片接在了计算机上,不然列表里不会出现端口选项。
2.3.2 Arduino语言
Arduino语言是指Arduino核心库函数提供的所有应用程序接口编程的综合,目前它是C与C 两种语言的综合编程,早期Arduino语言核心库是用C语言编写的,之后引入了面向对象编程的C ,完善了它使用的范围。Arduino语言把AVR单片机一些相关参数设置都函数化,我们无需再去了解它们的底层。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: