基于ARM9的四翼探测飞行器设计与实现 精品Word格式.docx
《基于ARM9的四翼探测飞行器设计与实现 精品Word格式.docx》由会员分享,可在线阅读,更多相关《基于ARM9的四翼探测飞行器设计与实现 精品Word格式.docx(45页珍藏版)》请在冰豆网上搜索。
![基于ARM9的四翼探测飞行器设计与实现 精品Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/9/9b90855c-3c41-4241-8976-b02e62149b15/9b90855c-3c41-4241-8976-b02e62149b151.gif)
嵌入式Linux,ARM9,人机交互界面,servfox
1绪论
1.1课题的背景及意义
人机交互技术是和计算机的发展相辅相成的,是计算机直接与人打交道的直接途径,是计算机设计系统的重要组成部分,它的开发应用工作量占计算机系统开发工作量的40%到60%。
一方面计算机速度的提高使人机交互技术的实现变为可能,另一方面人机交互对计算机系统的发展起着引领作用。
正是人机交互界面技术造就了辉煌的新时代——个人计算机时代(20世纪八、九十年代),比如鼠标、图形界面等等对PC的发展起到了巨大的促进作用。
人机交互界面设计是计算机系统的重要组成部分,是当前计算机界面设计行业竞争的焦点,它设计的好坏直接影响计算机的可用性和使用效率,并且直接影响人们日常生活和计算设计工作的质量和效率。
计算机处理速度和性能的迅猛提高并没有相应提高用户使用计算机交互的能力,其中一个重要原因就是缺少一个与之相适应的高效、自然的人机交互界面。
人机交互界面设计在设计流程上分为信息构架设计、交互设计、视觉平面设计三个部分。
用户界面的发展对计算机系统整体性能的提高所具有的重要性已经得到了人们的高度重视,与此同时,围绕人机建模业已形成了计算机产业又一新的竞争领域。
在美国人机建模研究在信息技术中被列为与软件和计算机并列的六项国家关键技术之一,并被认为“对于计算机工业有着突出的重要性,对其它工业也是很重要的”。
美国国防关键技术计划不仅把人机交互界面列为软件技术发展的重要内容之一,而且还专门增加了与软件技术并列的人-系统界面一项内容。
日本也提出了FPIEND21计划(FuturePersonalizedInformationEnvironmentDevelopment),其目标就是要开发21世界的计算机界面。
计算机科学的发展和计算机的普及应用却对人机界面的研究提出了越来越高的要求。
进入九十年代计算机软件开发已进入了以开发软件工具和建立软件开发环境为目标的时代。
作为支持人机交互软件开发环境的用户界面管理系统UIMS正日益受到人们的关注和重视。
今后UIMS将有可能进入各类实际软件开发环境,成为继DBMS之后的又一个重要的软件开发环境和工具。
1.2课题价值发展现状
我国在人机界面方面的设计与国际同类研究相比还存在较大差距。
目前的研究仅仅着重于支持界面的软件和硬件,对界面本身还缺少深入的研究,用户界面的设计还没有成为软件设计中独立的一部分,也缺少新的人机界面设计技术。
界面设计必须在一定程度上反映产品目标的核心功能价值、工作原理方法、可能的操作方法方式和反馈产品信息在某一特定时刻的运转状态,并体现在以下几个方面:
可用性:
使用简单、使用术语的标准化和一致性、拥有HELP帮助功能、快速响应、容错能力;
界面灵活性:
满足不同程度的用户需求,用户可根据使用需求制定和修改界面方式,提供相应信息:
出错信息和提示信息等;
界面设计的复杂性:
采用最简单的用户界面来完成预定设计功能;
界面可靠性:
保证用户正确、可靠地使用计算机系统,保证有关计算机程序和数据的安全性。
与此同时,还需要考虑到不同的使用场景:
尽管大多数用户根本不会用上全部的功能和界面设计,但他们希望在使用产品时拥有感觉与界面情感反应。
1.3论文主要工作
本文设计的人机交互界面是基于ARM9的四翼探测飞行器视频采集及温湿度数据采集的显示界面。
在充分调研情况下,硬件是天嵌科技s3c2440(Samsung公司的32位ARM9处理器)开发板,通过其采集视频及一些数据通过无线网络Wi-Fi传输到PC机显示在所涉及的人机交互界面上。
然后对于开发板系统包括摄像头驱动移植,无线网卡移植,视频解码移植,特别是Boa服务器的配置移植,CPU内核的配置。
由于开发板提供的内核,在使用过程中启动其他服务,运行速度较慢,所以需要自己制作一个减小精干的内核,在内核移植上选择Linux-2.6.30.4内核并在此基础上进行剪裁,使得内核运行稳定且体积小。
另外摄像头的驱动是要在Linux操作系统下进行配置和修改,编译最后移植到ARM板。
论文中人机交互界面的设计应用Microsoft公司VisualStudio2008软件对整个界面的布局,表格等进行详细设计,特别是视频显示区域的超级链接的处理及两种传感器的数据显示进行多次修改美化,是整个界面让人耳目一新。
1.4论文组织结构
本文包括五章内容,其章节安排如下:
第一章介绍选题背景意义及论文设计中主要任务。
第二章介绍本文设计中涉及的重要理论知识,包括Mjpeg视频流技术,servfox视频技术,IEEE802.11系列传输协议,同时对使用的开发板及摄像头进行了介绍。
对系统整个工作原理进行设计和分析。
第三章本章涉及引导系统的修改和移植,包括对CPU中控制器的初始化,NorFlash等。
内核移植上选择linux-2.6.30.4内核并在此基础上进行内核剪裁,主要包括对systemtype和devicedrivers两个选项进行系统的配置和设备驱动配置,使得内核系统运行稳定而且体积小。
另外对Boa进行配置和修改一并注册到内核中。
第四章运用Microsoft公司的VisualStudio2008应用程序开发人机交互的界面,分别对整个网页的框架结构进行设计,视频采集后实时显示到网页的流畅性,及图像清晰程度,视频大小进行详细实验修改,还有传感器显示布局等。
第五章对本文的工作进行了论述和以后工作的展望,最后文章中给出了系统运行的结果。
经过多次实际实验表明,在系统正常运行情况下,PC机人机交互界面可以实现每秒25帧的图像显示视频效果。
2视频流及摄像头相关技术基础
2.1MJPEG视频流技术
2.1.1MJPEG视频流概念
MJPEG全名为"
MotionJointPhotographicExpertsGroup"
,是一种视频编码格式,中文名称翻译为“技术即运动静止图像(或逐帧)压缩技术”。
MJPEG广泛应用于非线性编辑领域可精确到帧编辑和多层图像处理,把运动的视频序列作为连续的静止图像来处理,这种压缩方式单独完整地压缩每一帧,在编辑过程中可随机存储每一帧,可进行精确到帧的编辑,此外M-JPEG的压缩和解压缩是对称的,可由相同的硬件和软件实现。
但M-JPEG只对帧内的空间冗余进行压缩。
不对帧间的时间冗余进行压缩,故压缩效率不高。
采用M-JPEG数字压缩格式,当压缩比7:
1时,可提供相当于BetecamSP质量图像的节目。
MotionJPEG技术常用于闭合电路的电视摄像机的模拟视频信号“翻译”成视频流,并存储在硬盘上。
典型的应用如数字视频记录器等。
MJPEG不像MPEG,不使用帧间编码,因此用一个非线性编辑器就很容易编辑。
MJPEG的压缩算法与MPEG一脉相承,功能很强大,能发送高质图片,生成完全动画视频等。
但相应地,MJPEG对带宽的要求也很高,相当于T-1,MJPEG信息是存储在数字媒体中的庞然大物,需要大量的存储空间以满足如今多数用户的需求。
因此从另一个角度说,在某些条件下,MJPEG也许是效率最低的编码/解码器之一。
MJPEG是24-bit的"
true-color"
影像标准,MJPEG的工作是将RGB格式的影像转换成YCrCB格式,目的是为了减少档案大小,一般约可减少1/3~1/2左右。
2.1.2MJPEG与MPEG4的区别
MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名.
下表为M-JPEG与MPEG4图像压缩技术比较:
压缩技术
M-JPEG
MPEG4
压缩率
20:
1-50:
1
200:
1-500:
带宽要求
0.5-1.5Mbps
10Kbps-1.0Mbps
M-JPEG是一种基于静态图像压缩技术JPEG发展起来的动态图像压缩技术,可以生成序列化的运动图像。
其主要特点是基本不考虑视频流中不同帧之间的变化,只单独对某一帧进行压缩,其压缩倍数为20~80倍,适合静态画面的压缩,分辨率可从352×
288到704×
576。
以往的JPEG压缩技术是直接处理整个画面,所以要等到整个压缩档案传输完成才开始进行解压缩成影像画面,而这样的方式造成传输一个高解析画面时须耗时数十秒甚至数分钟。
而新一代的M-JPEG是采取渐层式技术,先传输低解析的图档,然后再补送细部之资料,使画面品质改善。
M-JPEG压缩技术可以获取清晰度很高的视频图像,而且可以灵活设置每路的视频清晰度和压缩帧数。
因期压缩后之格式可读单一画面,所以可以任意剪接。
M-JPEG因采用帧内压缩方式也适于视频编辑。
M-JPEG的主要缺点是压缩效率低,MJPEG算法是根据每一帧图像的内容进行压缩,而不是根据相邻帧图像之间的差异来进行压缩,因此造成了大量冗余信息被重复存储,存储占用的空间大到每帧8~15K字节,最好也只能做到每帧3K字节,但如果因此而采用高压缩比则视频质量会严重降低。
2.1.3MJPEG压缩算法研究与实现
MJPEG(MotionJointPhotographicExpertsGroup)视频编码格式,把运动的视频序列作为连续的静止图像来处理,这种压缩方式单独完整地压缩每一帧,编辑过程中可随机存储每一帧,可进行精确到帧的编辑。
MJPEG单帧压缩算法为JPEG(JointPhotographicExpertsGroup)。
人眼视觉生理特性决定眼睛对构成图像的不同频率成分具有不同的敏感度。
JPEG压缩是有损压缩,但损失的部分是人类视觉不容易察觉到的部分,利用眼睛对色彩域中的高频信息部分不敏感的特点,节省大量需要处理的数据信息。
一帧原始图像数据对其进行JPEG算法编码过程分两大部分:
①空间冗余度,去除视觉上的多余信息;
②结构(静态)冗余度,去除数据本身的多余信息。
JPEG编码中主要涉及包括:
DCT、zigzag编码、量化、RLE编码、范式Huffman编码、DC(直流分量)的编码。
JPEG编码流程如图所示:
图2-1JPEG编码流程图
DCT(DiscreteCosineTransform)变换,又称离散余弦变换是可逆的、离散的正交变换。
它将原始图像色彩空问域转换为频谱域。
由于相邻两点像素色彩很多是接近的,压缩这些不需要的数据必须利用图像信号的频谱特性。
JPEG压缩原理的理论依据是图像信号频谱线大都分布在0~6MHz范围内,而且一幅图像内大多数为低频频谱线,而高频的谱线只占图像比例很低的图像边缘或者细微纹理细节的信号时才出现。
根据这一特性,在做数字图像处理时对包含信息量大的低频谱区域分配较多的比特数,相反的对于包含信息量低的高频谱区域分配较少的比特数,达到图像压缩的目的,而图像质量并没有肉眼可察觉的降低。
除了DCT变换,常用的变化算法还有:
Walsh-Hadamard沃尔什哈达玛变换、哈尔变换、傅氏变换等。
量化是对DCT系数的一个优化过程,利用了肉眼的高频不敏感特性对数据进行大幅压缩。
整个过程是简易的把频率域的每个成份除以对应的常数,并对结果四舍五入取整,整个流程的目的是减少非零的系数以及增加零值系数数目。
量化是有损运算,是图像质量下降的主要因素。
对于人眼对亮度与色差的敏感性不一致,分别使用亮度量化表与色度量化表。
对量化后的数据采用zigzag蛇形编码,这是因为交流分量中含有大量的零值,zigzag编码可以产生更多连续的零值,对下一步使用行程编码非常有利。
行程编码(RunLengthCoding)是一种根据相同数据连续重复多次的情况简化表示的算法。
例如,5555333333999按照行程编码表示为(5,4)(3,6)(9,3)可以对数据,尤其是大量的零值压缩数据长度。
编码后的数据还须通过Huffman编码来压缩,Huffman编码的最大特点是使出现频率较高的数字小于8位,而出现频率低的数字大于8位,这使得数据大幅压缩。
到此数据的压缩过程结束,对压缩后的数据按照JPEG文件格式要求进行保存,加上文件开始标记StartOfImage=FFD8,文件结束标记EndOfImage=FFD9,量化表标记DeftneQuanttzationTable=FFDB,霍夫曼编码表标记DdfineHuffmanTable=FFC4,帧开始标记StarOfFrame=FFC0等标记,再加上图片识别信息字节标记就最终形成完整的可用于传输或存储的JPEG帧图像,通过套接字接口不间断地发送JPEG图像即形成MJPEG视频流。
2.1.4JPEG相关
JPEG是JointPhotographicExportsGroup的英文缩写,中文称之为联合图像专家小组。
该小组隶属于ISO国际标准化组织,主要负责定制静态数字图像的编码方法,即所谓的JPEG算法。
JPEG专家组开发了两种基本的压缩算法、两种熵编码方法、四种编码模式。
压缩算法:
(1)有损的离散余弦变换DCT(DiscreteCosineTransform)
(2)无损的预测压缩技术;
熵编码方法:
(1)Huffman编码;
(2)算术编码;
编码模式:
(1)基于DCT的顺序模式:
编码、解码通过一次扫描完成;
(2)基于DCT的渐进模式:
编码、解码需要多次扫描完成,扫描效果由粗到精,逐级递增;
(3)无损模式:
基于DPCM,保证解码后完全精确恢复到原图像采样值;
(4)层次模式:
图像在多个空间分辨率中进行编码,可以根据需要只对低分辨率数据做解码,放弃高分辨率信息;
在实际应用中,JPEG图像编码算法使用的大多是离散余弦变换、Huffman编码、顺序编码模式。
这样的方式,被人们称为JPEG的基本系统。
这里介绍的JPEG编码算法的流程,也是针对基本系统而言。
基本系统的JPEG压缩编码算法一共分为11个步骤:
颜色模式转换、采样、分块、离散余弦变换(DCT)、Zigzag扫描排序、量化、DC系数的差分脉冲调制编码、DC系数的中间格式计算、AC系数的游程长度编码、AC系数的中间格式计算、熵编码。
2.2Servfox技术
2.2.1Servfox的作用
Servfox在图像采集过程中主要两个线程:
采集视频图像,发送视频图像给客户端。
在采集线程和发送线程同时运行的情况下,会存在对存储压缩过的图像数据的缓冲区这个临界区竞争的情况。
为了能把采集到每一帧图像数据完整的发送出去,需要采用一些同步机制。
Servfox只是个应用程序,它的初始化设备,获取设备属性和图像属性,设置图像参数,捕捉图像数据,都是通过Video4Linux借口标准调用驱动的相关函数完成的。
2.2.2Servfox流程图
图2-2Servfox流程图
Servfox运行过程:
a.从命令行传递参数给变量;
b.初始化视频采集设备;
c.采集图像数据线程;
d.建立TCP套接字服务端,为图像数据发送线程做好准备;
e.发送图像数据到客户端的线程。
2.2.3Servfox采集数据端
Servfox,修改Makefile文件为:
CC=arm-linux-gcc
SERVFLAGS=-O2-DLINUX(WARNINGS)-I/
home/gongyaofei/linux-2.6.15/include
然后编译文件make,在当前文件夹下就可以看到生成的可执行文件servfox,把此可执行文件拷贝到网络文件系统下/home/2440/bin,在开发板中运行servfox-d/dev/video0-g-s320x240-w7070,就可以看到如下的提示信息:
servfoxversion:
1.1.2date:
07:
10:
2005(C)mxhaard
@magic.fr
Waiting...forconnection.CTrl_ctostop!
!
说明servfox已成功运行起来了。
2.3VideoForLinux介绍
VideoForLinux(简V4L)是Linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供一系列接口函数,这些视频设备包括现今市场上流行的TV卡、视频捕捉卡和USB摄像头等。
对于USB口摄像头,其驱动程序中需要提供基本的I/O操作接口函数open、read、write、close的实现。
当应用程序对设备文件执行读操作时,内核将调用file_operations结构中的read函数。
在系统平台上对USB口数码摄像头驱动,首先把USB控制器驱动模块静态编译进内核,使平台中支持USB接口,再在需要使用摄像头采集时,使用insmode动态加载其驱动模块,这样摄像头就可以正常工作了,接着进行了下一步对视频流的采集编码。
程序中定义的数据结构:
structvideo_capabilitygrab_cap;
structvideo_picturegrab_pic;
structvideo_mmapgrab_buf;
structvideo_mbufgrab_vm;
这些数据结构都是由Video4Linux支持的,它们的用途如下:
①video_capability包含设备的基本信息(设备名称、支持的最大最小分辨率、信号源信息等)name[32]设备名称
maxwidth
maxheight
minwidth
minheight
Channels信号源个数
type是否能capture,彩色还是黑白,是否能裁剪等等。
值如VID_TYPE_CAPTURE等。
②video_picture设备采集的图象的各种属性
Brightness0~65535
hue
colour
contrast
whiteness
depth8162432
paletteVIDEO_PALETTE_RGB24|VIDEO_PALETTE_RGB565
VIDEO_PALETTE_JPEG|VIDEO_PALETTE_RGB32
③video_channel关于各个信号源的属性
Channel信号源的编号
name
tuners
TypeVIDEO_TYPE_TV|IDEO_TYPE_CCAMERA
Norm制式PAL|NSTC|SECAM|AUTO
④video_window包含关于capturearea的信息
xxwindows中的坐标.
yywindows中的坐标.
widthThewidthoftheimagecapture.
heightTheheightoftheimagecapture.
chromakeyAhostorderRGB32valueforthechromakey.
flagsAdditionalcaptureflags.
clipsAlisto