毕业设计论文物体运动轨迹实时监测系统设计.docx
《毕业设计论文物体运动轨迹实时监测系统设计.docx》由会员分享,可在线阅读,更多相关《毕业设计论文物体运动轨迹实时监测系统设计.docx(46页珍藏版)》请在冰豆网上搜索。
![毕业设计论文物体运动轨迹实时监测系统设计.docx](https://file1.bdocx.com/fileroot1/2023-6/30/e3a11191-4c7d-4769-8037-72502ba71206/e3a11191-4c7d-4769-8037-72502ba712061.gif)
毕业设计论文物体运动轨迹实时监测系统设计
编号:
毕业设计说明书
题目:
物体运动轨迹实时监测系统设计
院(系):
电子工程与自动化学院
专业:
测控技术与仪器
学生姓名:
学号:
指导教师:
职称:
副教授
题目类型:
理论研究实验研究工程设计√工程技术研究软件开发
2016年5月20日
摘要
随着科学技术的不断发展,物体运动轨迹实时监测系统在导航系统、人机交互、游戏控制等领域具有广阔应用。
传统的方法,如激光追踪系统,或者是运用高精度的加速度传感器、激光陀螺仪等,这些设备过于复杂,成本高。
本文基于MPU6050六轴加速度计陀螺仪传感器的运动轨迹检测系统具有成本低、易携带、体积小的特点。
本论文以单片机STM32F103C8T6为核心控制器,通过MPU6050得到的加速度,加速度二次积分得到位移,从MPU6050DMP直接读取四元数和欧拉角来校准在重力加速度在二维空间中对x,y轴的影响,通过IIC总线将数据由MPU6050传送给单片机STM32F103C8T6将数据进行处理,并通过蓝牙串口将数据传输给安卓手机,通过安卓手机APP建立二维坐标系,并将得到的数据在二维坐标系中打点来显示轨迹。
本论文中运用单片机C语言来编写程序,从MPU6050得到的加速度通过均值校准法来减少外界对加速度计的干扰,经过积分后得到的位移值通过分解成一个数组来发送具体字节数,来保障发送给手机的数据准确性。
当手机APP接收到单片机发来的数据,通过分隔符将两个数据解析成一个列表,通过提取列表中的每一项,来将每个物体运动轨迹数据显示在APP上,并在APP上打点显示,若打的点超出APP坐标轴的范围,手机将自动震动报警。
本次设计的物体运动轨迹监测系统,能够检测出物体的运动轨迹,经过测试在短时间内误差在1cm左右,且当物体运动轨迹超出APP坐标系的量程,手机将震动报警,且物体运动轨迹数据在0.5s更新一次,大致实现了毕业设计的要求。
关键词:
运动轨迹实时监测;加速度计;陀螺仪;安卓手机APP;
Abstract
Withthedevelopmentofscienceandtechnology.Themonitoringsystemofreal-timetrajectoryinnavigationsystem,human-computerinteraction,gamecontrolhaveawiderangeofapplications.Traditionalmethods,forexample,lasertrackingsystem,usinghighprecisionaccelerationsensor,lasergyroscopeandsoon.Theseequipmentistoocomplexandhighcost.Inthispaper,themonitoringsystemofreal-timetrajectorybasedonMPU6050whichissixaxisaccelerometergyroscopesensor’sadvantagesislowcost,easytocarry,smallvolumeandsoon.
STM32F103C8T6MCUasthecorecontrollerinthispaper,thedisplacementisobtainedbyquadraticintegralMPU6050getacceleration,fromMPU6050DMPdirectlyreadquaternionandeulerAngletocalibrationintheaccelerationofgravityinthetwo-dimensionalspaceofx,yaxis,theeffectofthedatathroughtheIICbusSTM32F103C8T6controlledbyMPU6050sentthedataprocessing,andthroughbluetoothserialtransmissiontotheandroidmobilephone,throughtheandroidAPPtoestablishtwo-dimensionalcoordinatesystem,andwillgetdatadotinatwo-dimensionalcoordinatesystemtodisplaythetrajectory.
ThispaperusesmicrocontrollerClanguagetowriteprograms,fromMPU6050accelerationbyaveragecalibrationmethodtoreducetheoutsidedisturbancetotheaccelerometer,afterthedisplacementvalueresultingfromtheintegralbydecompositionintoanarraytosendaspecificnumberofbytes,toensuredataaccuracysenttomobilephones.WhenthephoneAPPtoreceivedatafromthemicrocontroller,throughtheseparatorwillbetwodataparsedintoalist,byextractingeachitemonthelist,toeachobjecttrajectorydatadisplayontheAPP,anddotontheAPPshowsthatifadozenpointsbeyondthescopeofAPPaxis,thephonewillautomaticallyvibrationalarm.
thedesignofhemonitoringsystemofreal-timetrajectoryinnavigationsystemcandetectthemovementoftheobject,aftertestinginashortperiodoftimeerrorin1cm,andwhentheobjectmovementbeyondtherangeofAPPcoordinatesystem,cellphonewillvibratealarm,andobjecttrajectorydataupdatedoncein0.5s.
Keywords:
Themonitoringsystemofreal-timetrajectory;accelerometer;gyroscope;androidAPP;
1引言
1.1研究背景及意义
物体运动现象一直都是无处不在的,而人类也在随着科学技术的不断发展通过各种技术来监测物体运动轨迹。
监测运动轨迹人们一般从外部来观测,通过全球定位系统(
GlobalPositioningSystem,GPS)[1]进行实时定位、导航与运动轨迹监测。
全球定位系统是由空间部分、地面控制系统和用户设备三个部分组成。
空间部分包括颗卫星,分布在条交点互隔度的轨道面上,地面控制系统由监测站、主控制站、地面天线所组成,负责收集卫星传回的信息。
用户设备部分即GPS接收机。
系统庞大复杂,价格昂贵,运行和维护的成本高,但实际效果并不是很好,例如手机GPS定位的平面精度一般在几米至几十米,只能满足用户日常生活的基本的定位要求,卫星定位也有其自身的缺点。
GPS信号在受到建筑物的遮挡,如地下室、隧道、高密度建筑群时,会导致GPS接收机不能捕捉到卫星信号,从而不能定位或定位误差很大,定位效果不理想[2]。
也因此,当我们处于GPS盲区时,我们需要通过其他的方法来辅助定位即监测运动轨迹。
在体育赛事中经常运用到的鹰眼技术也是一种监测运动轨迹的方法,它能够帮助裁判克服球飞速运行状态下所观察不到的盲区,帮助裁判做出公正且令人信服的判断。
“鹰眼”的正式名称是“即时回放系统”,它的技术原理并不复杂,只是十分精密。
这个系统由8个或者10个高速摄像头、四台电脑和大屏幕组成。
首先,借助电脑的计算把比赛场地内的立体空间分隔成以毫米计算的测量单位;然后,利用高速摄像头从不同角度同时捕捉网球飞行轨迹的基本数据;再通过电脑计算,将这些数据生成三维图像;最后利用即时成像技术,由大屏幕清晰地呈现出网球的运动路线及落点。
从数据采集到结果演示,这个过程所耗用的时间,不超过10秒钟[3]。
但是鹰眼系统整个系统造价昂贵,且监测空间有限,也无法在大众中间推广开来。
本次设计运用了惯性导航的相关知识,来测量运动轨迹。
惯性导航是一种自主式导航系统,它是一门综合了机电、光学、数学、力学、控制及计算机等学科的尖端技术[4]惯性元件指的是陀螺仪和加速度计,利用惯性元件测出运动目标的加速度值与角速度值,。
经过积分计算之后可以得到目标运动轨迹。
这类导航系统可以比较方便的对运动目标的轨迹进行三维空间的监测。
这种方法不借助与外部的信息,消除外部带来的干扰。
在军事上,一般使用精度高的加速度传感器、激光陀螺仪或价格不菲的机械式传感器来减小测量误差,但这些造价过高,并不适用于民用。
一般民用的缺点则在于其在一段时间内累积的误差将越来越大,所以需要与卫星定位系统结合起来使用。
1.2国内外研究现状
对于惯性导航的研究,最早是在第二次世界大战开始的,也由此开辟了惯性导航这
一门新的科学学科。
几十年来,世界大国们都争着研发惯性导航系统,在不断的研究探索中,惯性导航的技术不断提高,无论是在理论方面还是在实际的工程实践中都取得了飞速的发展,在运动物体上安装加速度计,通过加速度计测得物体的运动速度,经过计算得到速度和位移得到物体的运动轨迹。
国外对惯性导航的研究比国内要早,进入二十一世纪以来随着陀螺仪技术的发展与微计算机技术的日益成熟,并研制出了当今技术领先的微光机电陀螺仪、原子陀螺仪等新的陀螺仪。
为惯性导航技术减小了更多的误差。
我国在二十世纪九十年代后开展了基于MEMS技术的惯性导航技术的研究,取得了不错的进展,惯性导航技术为我国的航天航空领域提供了举足轻重的作用,国内的很多高校与研究院也在MEMS惯性导航技术花费很多人力物力,并取得不错的成绩。
总的来说,测量运动轨迹的精度即惯性导航中的精度决定于惯性元器件即加速度计与陀螺仪的精度,而这里面的误差,随着实践的积累不断增大,为了提高我们的测量精度,我们必须研制出更高精度的加速度计与陀螺仪。
1.3惯性导航的发展趋势
在导航定位中,通过测量速度、位置或加速度来得到物体的运动轨迹,但是在运动的物体内部只能测量物体运动的加速度和角速度,所以惯性导航的自主性是其他导航定位技术无法替代的。
随着科学技术的不断发展,现代军事也向高科技发展,隐蔽性和激动性对于现代的武器系统至关重要,所以惯性导航的自主性将很好的运用于现在武器系统中,很好的为我们保家卫国,也更好的保卫世界的和平。
随着国家经济的不断发展,人们生活水平不断提高,越来越多的人拥有自己的汽车,但是GPS在有些隧道时信号不好,人们在水下、冰下或者是原始森林中勘探时GPS的信号也不好,惯性导航在这些领域也将发挥自己的优势。
而惯性元件的精度也将越来越高,运动轨迹的测量也将越来越精确。
1.4论文的章节安排
本文介绍的物体运动轨迹的研究,为了监测物体实时的运动轨迹。
具体内容安排如下:
第一章,介绍了物体运动轨迹研究背景,包括它的研究它的意义、它的由来、作用及发展现状,同时提出了现如今运动轨迹监测还存在的问题,并展望了今后物体运动轨迹的的发展趋势。
第二章,提出了本次物体运动轨迹设计的具体内容和任务,表明了设计目的和设计要求。
第三章,阐述了物体运动轨迹测量的理论依据,分析了影响物体运动轨迹测量的因素,并提出了多个研究方案,对每个方案都进行论证,最终选择最合适的那个方案。
第四章,介绍了对硬件系统的每个模块的设计,对每个模块中所使用的芯片进行介绍,最终描述了物体运动轨迹监测系统的整体工作过程。
第五章,介绍了对软件系统进行设计,软件部分采用模块化设计,先设计每个功能的子程序,最后对程序进行整合优化。
第六章,介绍了对系统硬件调试,通过的测试结果能否到达设计要求,对电路及软件的修改优化,实现最理想的设计结果。
2设计任务及要求
2.1设计任务
设计制作以单片机为核心,通过MPU6050,结合手机,制作一个可对物体运动的运动轨迹进行监测的装置。
2.1.1课题内容
a)物体运动轨迹的获取。
b)物体在空间中的位置和姿态的计算。
c)物体轨迹数据的传输。
d)系统总体方案设计:
软硬件设计、系统调试及安装运行。
2.1.2主要任务
a)掌握单片机的原理及使用方法。
b)掌握MPU6050工作原理。
c)掌握蓝牙无线传输技术原理。
d)完成整个系统的设计,能够实现相应的功能和要求。
2.2设计要求
a)确定出系统设计方案。
b)确定出系统测试方案。
c)基于MPU6050记录物体的运动轨迹。
a)将运动轨迹的数据通过蓝牙发送到手机上,数据更新速率为1秒。
d)确定出系统测试方案。
3系统设计理论依据及方案论证
3.1系统设计理论依据
惯性导航是以牛顿力学为基础,通过测量物体运动速度这一特性,就可以知道物体的其他运动特性的轨迹测量方法。
测量到的加速度一次积分就可以得到运动速度,二次积分就可以得到物体运动距离,从而给出了运动物体的瞬时速度和位置数据即可得到物体运动轨迹,其之间关系可表示为
a=dv/dt=d2s/dt2
v=v0+∫t0adt(3.1)
s=s0+∫t0vdt=s0+v0t+∫t0∫t0adtdt
式子中a——运动物体的加速度;
V——运动物体的速度;
S——运动物体的位移;
设t=0时,v0=0,s0=0,当a为常数时,则有
V=at(3.2)
S=0.5at2(3.3)
由上可知,一个物体沿着一个轴直线运动时,只要通过加速度计得到加速度就可以得到物体在任何时间的速度与相对原点的实时距离,以此类推就可以得到物体在二维平面上物体的运动轨迹。
图3.1二维导航系统计算图
如上图3.1以出发点为原点,对x、y轴上的加速度二次积分后得到的x,y轴的位移,就可以得到物体在二维坐标系里面的运动轨迹图。
3.2方案论证
由于本设计要求需要基于MPU6050的运动轨迹监测系统,且需要手机监测物体运动轨迹。
所以我们需要通过单片机来处理MPU6050获得的数据,再通过蓝牙将获得的数据发送给手机,所以其系统框图如下图3.2
图3.2物体运动轨迹实时监测系统设计框图
由图3.2物体运动轨迹实时监测系统设计框图可知,本系统设计主要由单片机最小系统,MPU6050传感器模块,蓝牙模块和通讯电路组成。
经过考虑选择合理的方案,能够简易的实现运动轨迹监测的基本功能。
3.3软件算法方案选择
由于方案一、方案二需要用到角度即物体运动的姿态,这里我们直接直接用MPU6050内部的DMP,直接运算出四元数和姿态,而不再需要另外进行数学运算。
DMP的使用大大简化了代码的设计。
DMP即是MPU6050内部的数字运动处理器,我们通过DMP得到四元数,再通过运算得到了姿态角:
俯仰角(Pitch),横滚角(Roll),航向角(Yaw)其相关实现的程序流程图如下图3.3:
图3.3求欧拉角程序流程图
MPU6050的DMP输出的四元数是q30格式的,也就是浮点数放大了2的30次方倍,所以要除以一个2的30次方,q30是一个常量:
1073741824,最后通过以上程序得到了三个姿态角俯仰角、横滚角、航向角。
3.3.1方案一
方案一是航位推算法,是在知道当前位置的情况下,通过测量位移和角度,推算下一时刻位移的方法。
最初是用在船舶到导航当中,对所用的加速度计和陀螺仪的精度要求较高。
我们此次做的是在二维平面内。
通过MPU6050得到的x轴加速度ax和y轴加速度ay,通过得到的姿态角航向角Yaw,这里以θ来表示,航向角是以z轴为旋转轴的角。
加速度测量值投影到OXY所在的绝对坐标系中,得到ax’和ay’,转换公式是:
ax’=axcosYaw+aysinYaw(3.1)
ay’=aycosYaw-axsinYaw(3.2)
在坐标轴中具体分解如下图3.3.1:
图3.3.1ax与ay分解示意图
得到ax’和ay’后,运用公式(3.1)可以得到x和y的值,在一段时间内可以得到(x,y)形式的点,这些点即是物体的运动轨迹。
经过反复调试,得到的加速度ay‘与ax’数据无法在静止时使加速度为零,静止时,位移也一直在增加,放弃了这种方案。
3.3.2方案二
因为我们放置的水平面没有绝对水平,导致得到的加速度值收到了重力加速度的影响,我们在计算时应减去重力加速度对x,y轴的影响,再对加速度进行二次积分,得到的位移再乘以航向角的偏转角度。
具体公式如下:
ax‘=(ax-16384sin(Pitch/180*3.14))/16384(3.3)
ay‘=(ay-16384sin(Roll/180*3.14))/16384(3.4)
当重力加速度在一个方向上最大时,最大值为16384,Pitch与Roll读出来时,得经过转换变为弧度制再求其正弦值,16384与其正弦值相乘即为重力加速度在x,y轴上的分量,得到的加速度值减去重力加速度在其方向上的分量即得到其在x,y轴上的加速度值,经过公式(3.1)得到x,y的位移的值,有所区别的是得到x,y位移的值需再乘以航向角的正余弦值,来让x,y位移的值转化为绝对坐标系的坐标,即将(3.1)中的公式改变为如下:
X轴:
s=s0+∫t0vdtcos(Yaw/180*3.14)=s0+v0t+∫t0∫t0adtdtcos(Yaw/180*3.14)(3.5)
Y轴:
s=s0+∫t0vdtsin(Yaw/180*3.14)=s0+v0t+∫t0∫t0adtdtsin(Yaw/180*3.14)(3.6)
经过这种算法得到的加速度值一直为正,无法在静止时校零,在通过中值滤波算法得到的加速度值依然为正值无法使用,导致x,y位移一直在增加,无法测量轨迹。
3.3.3方案三
方案三直接使用MPU6050得到的加速度数据,再通过算术平均值滤波得到加速度数据,通过忽略误差的方法将数据校零,得到的数据再经过公式(3.1)得到位移值,位移值的误差问题在这里不细讲,轨迹能够显示出来了,所以最后用了方案三,方案三的局限性也将在下面细讲。
3.4安卓APP开发工具的选择
3.4.1方案一
在2013年谷歌I/O大会上,谷歌推出了自家新的官方安卓集成开发工具AndroidStudio。
这是谷歌基于IntelliJIDEA(Java集成开发工具)修改来的。
AndroidStudio能让应用开发更简单,它相比以前Eclipse的开发工具最大的优势就是支持实时渲染(所见即所得),开发者可以在编写程序的同时可以马上看到自己的APP在不同尺寸屏幕中的样子,比较方便。
AndroidStudio还有功能强大的布局编辑器,可以让你拖拉UI控件让你实时进行效果的预览。
但是本人此前从未学习过Java的程序设计语言,使用AndroidStudio开发安卓手机APP对自己来说有些许难度,且需要耗费大量时间学习,怕在短时间内无法实现此次毕业设计的设计要求,于是,排除了这个开发工具来开发安卓手机APP。
3.4.2方案二
AppInventor最初是由谷歌在2009年开始,后来由麻省理工学院(MIT)推出一种应用开发工具。
这个应用开发工具与传统的编程不同,AppInventor中程序是通过可视化的指令模块来开发,并通过定义模块的功能来实现不同的功能。
这种工具可以使用户更容易的为安卓智能手机编写应用程序。
AppInventor是一个完全在线开发的Android编程环境,抛弃复杂的程式代码而使用积木式的堆叠法来完成您的Android程式[5]。
首先我们要设计程序的外观,接着是设定程序的行为。
这个软件将枯燥的代码变成了一块一块的拼图,你需要做的只是把这些零散的拼图按照你自己的意思组合在一起,点击生成。
但是要用AppInventor写出一个好的APP,不懂代码基本是不可能的,而且很多东西都是要自定义的。
AppInventor对应的用户群应该大学里有编程基础的学生,Inventor设计的最初目的应该是激发学生的创意,降低编程的入门要求,作为分享来用,而不是给开发者作为盈利开发来用。
AppInventor虽说是面向所有人,但如果要运用自如,还必须得认真学习一下它的教程AppInventor,不过它对于安卓APP的初学者来说是一大福利。
4硬件系统设计
硬件系统部分包括单片机最小系统电路、MPU6050模块电路、蓝牙模块电路以及稳压电源电路四大部分。
单片机最小系统电路包括了晶振电路和复位电路;MPU6050电路通过MPU6050来获得物体运动的加速度和角速度;蓝牙模块电路通过蓝牙与手机连接,发送数据给手机;电源稳压电路采用稳压芯片进行稳压。
各模块电路设计具体原理图介绍如下。
4.1单片机最小系统控制部分
4.1.1芯片的选择
平时我们常用的单片机有很多,例如STC单片机、ATMEL单片机(51单片机)、EMC单片机等,而此次设计我采用的是STM32F103C8T6,它是32位的,低功耗,功能强大,工作频率为72MHz,外围接口丰富,内置高速存储器包含标准和先进的通信接口:
多达2个I2C和SPI、3个USART,且包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,方便读取MPU6050的数据并将处理好的数据发送给手机,功能强大。
其引脚图如图4.1.1,实物图如图4.1.2
图4.1.1STM32F103C8T6引脚图图4.1.2STM32F103C8T6实物图
4.1.2单片机最小系统电路
单片机最小系统电路作为控制部分,是整个设计中的最关键的部分,它是由晶振电路和复位电路组成。
电路图如图4.1.3:
图4.1.3单片机最小系统电路图
晶振电路的作用是为整个系统提供基本的时钟信号。
一个系统共用一个晶振来让各个部分保持同步。
图中晶振电路的晶振为8MHZ。
图中复位电路,当按键按下时,即给NRST引脚一个高电平信号即可使系统复位。
4.2蓝牙模块电路
设计中要求用到的蓝牙模块,选择蓝牙的考虑有以下因素:
功耗低,连接稳定可靠。
选择HC-05蓝牙模块,其体积小巧,在10米的距离内连接稳定,支持从4800bps~1382400bps间的标准波特率,其默认的波特率