语音控制无人机设计说明_第1页
语音控制无人机设计说明_第2页
语音控制无人机设计说明_第3页
语音控制无人机设计说明_第4页
语音控制无人机设计说明_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、国家级大学生创新实验项目基于人机交互技术的多旋翼飞行器控制研究报告项目主持人:姚佳乐项目组成员:石磊 杨梦飞 姜裳指导教师:匡银虎、张虹波 物理电气信息学院 2014年3月 目 录1研究背景31.1AR.Drone2.0四轴飞行器介绍31.2科大讯飞语音识别系统介绍41.3Halcon机器视觉软件介绍42开发过程52.1 AR.Drone2.0 SDK研究52.1.1 翻译AR.Drone2.0 SDK原文52.1.2初期研究52.1.3深入研究112.2通过PC语音识别,发送语音控制命令122.3飞行器视频流采集,分析图片,自动判定飞行区域132.3.1学习halcon软件,达到图像标志识别

2、的目的132.3.2通过获取的圆形区域的参数建立与实际距离之间的关系203后续开发展望264总结271 研究背景1.1 AR.Drone2.0四轴飞行器介绍AR.Drone2.0是一款遥控四轴飞行航模,拥有四个螺旋桨控制其飞行动作,如图1所示。图1 四轴飞行器其结构包括:四轴机架、螺旋桨、无刷电机、电调、飞控板、传感器模块、wifi模块、机壳、摄像头、电池。以下为AR飞行器的基本参数:飞行速度:5米/秒;18千米/小时;重量:有机壳-400克/436克;无机壳-366克;尺寸:有机壳-51.5x51.5/45.2x45.2;无机壳-45x29cm;电池:3芯锂电池-11.1V 1000毫安时;

3、充电时间-1.5小时;飞行时间-12分钟;内置系统:ARM cortex A8位处理器;DDR SDRAM 128MB;NAND Flash memory 128MB WiFi/g/n;Linux OS;超声波高度计:发射频率-40kHz;范围-6米;操作温度:055摄氏度; AR飞行器的飞控板为ARM板,型号为armv71 gnu/linux,搭载了以linux uclibc 2.6.32.9-gbb4d210为内核的Linux系统,封装了飞行器的飞控算法等基本代码,自带一块WiFi卡,通过WiFi网络发送控制命令。Linux系统开源,因此理论上可以在任何客户端上开发控制程序控制飞行器(只要

4、支持WiFi)。1.2 科大讯飞语音识别系统介绍自动语音识别技术(Auto Speech Recognize,简称ASR),是让计算机通过识别和理解过程把语音信号转变为相应文本或命令的技术,通俗的讲,就是让计算机明白人类语言。科大讯飞语音识别软件是当前用于人机交互智能语音识别技术的领先软件。该软件可将控制者的语音命令通过输入法转换为文字命令。1.3 Halcon机器视觉软件介绍HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境。图2 维视图像开发定制软件HALCON是一套image processing library,由一千多个各自独立的

5、函数,以及底层的数据管理核心构成。其中包含了各类滤波,色彩以及几何,数学转换,型态学计算分析,校正,分类辨识,形状搜寻等等基本的几何以及影像计算功能,由于这些功能大多并非针对特定工作设计的,主要用于自动化控制检测。HALCON支持Windows,Linux和Mac OS X操作环境。整个函数库可以用C,C+,C#,Visual basic和Delphi等多种普通编程语言访问。HALCON包含了一套交互式的程序设计界面HDevelop,可在其中以HALCON程序代码直接撰写,修改,执行程序,并且可以查看计算过程中的所有变量,设计完成后,可以直接输出C、C+、VB、C#、vb等程序代码,套入程序中

6、。这对于本项目基于飞行器的人机交互有较大帮助。2 开发过程设备列表:AR.Drone2.0四轴飞行器一台,聚合物锂离子可充电电池组(1500mAh和1000mAh各一块),笔记本电脑一台。运行环境:Windows 7系统,Visual studio2012,C#编程语言,Halcon10.0,科大讯飞语音输入法。2.1 AR.Drone2.0 SDK研究2.1.1 翻译AR.Drone2.0 SDK原文由于AR.Drone2.0 SDK说明发行时间较短,网络和书籍上关于该部分的介绍说明均为纯英文版本,因此,要深入研究需将原文翻译为中文,起初的翻译有一定的偏差,项目组成员在多次实验的过程中不断对

7、译文进行修改,达到最契合版本。2.1.2 初期研究(一)对SDK进行初步研究,初步选取有用信息,了解控制AR.Drone是通过3个主要的通信服务完成的。控制和配置无人机是通过在UDP的5556端口发送AT命令实现的。控制命令的发送延时是向用户体验的关键。这些命令都是定期发送的(通常为30次/秒)。可用命令的列表和它们的语法在将第6章中讨论。关于无人机的信息(像它的状态,它的位置,速度,发动机转速等),被叫做导航数据,这些信息是由无人机通过UDP的5554端口发送给客户端的。这些导航数据也包括可用于创建增强的现实游戏的标签检测信息。在演示模式下他们被发送15次/秒,在全模式(调试模式)下为200

8、次/秒。视频流是由AR.Drone发送到客户端设备的5555端口 (AR.Drone2.0使用TCP )。视频流中的图像可以用SDK中的编码解码器进行解码。(二)能够使用识别使飞机起飞、降落等的普通基础指令,即AT指令。(1)AT命令的语法字符串被编码为8位ASCII字符,后跟一个回车字符(字节值为0D(16)),标记< CR >以后,表示一个换行符标记符。一个命令由三个字符的AT*(即三个值分别为41(16),54(16)、2A(16)的8位字节)后面跟上一个命令的名字,一个等号,一个序列号,和可选的一系列以逗号分隔开的含义取决于命令的参数。 一个UDP包可以包含一个或多个命令,

9、以换行符隔开(字节值为0A(16)。一个AT命令必须属于一个UDP包。将一个AT命令分解到两个或更多的UDP包中是不可能的。示例:AT*PCMD_MAG=21625,1,0,0,0,0,0,0<CR>AT*REF=21626,290717696<CR>总命令的最大长度不能超过1024个字符,否则整个命令行将被拒绝。这个限制硬性编码在无人机的软件中。注意:不正确的AT命令会被无人机忽略。然而,客户端应该总是确保它发送UDP数据包是正确的。大多数命令可以接受以下三种不同类型的参数: 一个有符号整数,存储在用一个十进制表示的命令字符串中(例如:序列号) 一个值存储在双引号中的

10、字符串(例如:参数AT*CONFIG) 一个单精度IEEE-754标准的浮点值(又名:浮点数)。那些并不直接存储在命令字符串中。相反,在AT命令中,32位字包含的浮点数将被认为是一个32位有符号的整数并打印出来。(2)命令序列为了避免无人机执行旧的命令,一个序列号将和每个发送的AT命令相联系,并存储为“等号”后面的第一个数字。如果该命令的序列号小于最后一个收到的有效命令的序列号,则无人机将不会执行该命令。每当客户端与AT指令的UDP端口断开连接,或者接收到将序列号置为1的命令时,这个序列号将在无人机中被重置为1(当前,如果超过2秒还没有发送任何指令将被认为是断开连接)。因此客户端为了在无人机上

11、成功地执行命令,必须遵守以下规则: 总是发送1作为发送的第一个命令的序列号。 总是发送序列号递增的命令。如果有几个软件的线程向无人机发送命令,应该通过一个专门的受互斥机制保护的函数生成序列号并发送给UDP包。(3)浮点参数示例如下,使用浮点参数并思考发送一个改进的带有-0.8参数的命令来让它倾斜。数字-0.8是根据IEEE-754的格式作为值为BF4CCCCD(16)的32位字存储在内存中的。这32位字可以被认为是32位整数的-1085485875(10)。所以要发送的命令应该是:AT*PCMD_MAG=xx,xx,-1085485875,xx,xx,xx,xx(4)AT命令总结表1 AT命令

12、总结(5)命令语法AT*REF 概述:控制无人机的基本行为(起飞/降落,紧急停止,复位)语法:AT*REF=%d,%d<CR>参数1:序列号参数2:一个取值范围为0232-1的整数值,代表一个位宽为32的位域来控制飞行器描述:发送这些命令来控制无人机的基本行为。在1.5版本的SDK中,只有位8和位9是用于控制的位域。位18,20,22,24和28应设置为1。其他位应设置为0。Bits 31 109 8 7 0使用方法不使用起飞/着陆(又叫“启动位”)紧急信号(又叫“选择位”)不使用位9的用法:发送一个使这一位设置为1的命令来让无人机起飞。这个命令应该被重复直到在导航数据中无人机的状

13、态显示为确实已起飞状态。如果没有给其他命令,飞行器将进入悬停模式并停留离地面约1米高的位置上。发送一个使这一位设置为0的命令来让无人机着陆。这个命令应该被重复直到在导航数据中无人机的状态显示为确实已着陆状态,并且当检测到异常情况发生时,将作为安全信号被发送。在第一次起飞命令发送后,无人机处在起飞状态,但仍可接受其他的命令。这意味着当无人机在空中上升到“1米悬停状态”时,用户可以发送命令来移动或使它旋转。位8使用方法:当飞行器处在一个“正常”的状态时(飞行或在地面等待状态),发送一个将此位设置为1(例如:发送一个“紧急指令”)的命令会使无人机进入紧急模式。无论飞行器处在何种状态发动机都将停止工作

14、(例如:飞行器可能严重受到撞击)。当飞行器处于紧急状态(处在以前的紧急命令状态下或是受到撞击)时,发送一个将此位设置为1(例如:发送一个“紧急指令”)的命令,如果造成紧急情况的条件得到解决时,会使无人机恢复到正常状态(允许它再次起飞)。发送一个将此位设置为0的AT*REF命令时,会使无人机考虑执行“紧急指令”的控制(这将防止连续的“紧急指令”使无人机在紧急和正常状态之间剧烈的变化)。例如:把下列命令送到一个独立的UDP包中将发送一个紧急信号:AT*REF=1,290717696<CR>AT*REF=2,290717952<CR>AT*REF=3,290717696<

15、;CR>AT*PCMD/ AT*PCMD_MAG 概述:发送一个命令使飞行器移动(行驶,旋转)语法:AT*PCMD=%d,%d,%d,%d,%d,%d<CR>语法:AT*PCMD_MAG=%d,%d,%d,%d,%d,%d,%d,%d<CR>参数1:序列号参数2:允许使用改进命令或组合式偏航模式(位域)的标志参数3:无人机左右倾斜浮点值的范围-11参数4:无人机前后倾斜浮点值的范围-11参数5:无人机垂直速度浮点值的范围-11参数6:无人机角速度浮点值的范围-11参数7:磁航向(仅在AT*PCMD_MAG中使用)浮点值的范围-11参数8:磁航向精度(仅在AT*PC

16、MD_MAG中使用)浮点值的范围-11描述:这一命令控制无人机的动作。始终设置标志(参数2)位的值从0到1从而使无人机可以考虑其他参数。将它设置为0可以使无人机进入悬停模式(在地面上同一点的高度上保持).Bits31 . 3 21 0用法不使用绝对控制可使用组合式偏航可使用改进命令可使用这里所配置的左右倾斜(又叫“无人机的滚转”或角)的参数是最大倾斜的一个百分比。一个负值使飞行器向左倾斜,从而向左飞。一个正值使飞行器向右倾斜,从而向右飞。这里所配置的前后倾斜(又叫“无人机的俯仰”或角)的参数是最大倾斜的一个百分比。一个负值使飞行器机头向下,从而向前飞。一个正值使飞行器机头向上,从而向后飞。无人

17、机在水平面上改变速度取决于环境,并且不能被固定。当滚转或俯仰的值设置为0时,无人机将保持水平,但由于其惯性,它会继续在空气中移动。只有空气阻力能让它停下来。这里所定义的垂直速度(又叫“gaz”)的参数是最大垂直速度的一个百分比。一个正值使无人机在空中上升。一个负值使得它下降。这里所定义的角速度的参数是最大角速度的一个百分比。一个正值使它向右旋转;一个负值使它向左旋转。这里所定义的psi参数是一个由磁力计传感器提供的标准的psi偏北角。一个值为0的角度表示控制器是面向北方的。一个正值表示控制器是朝向东的,一个负值是朝向西的。值为1和-1表示同一方向。(只用于AT * PCMD_MAG)Psi精度

18、的参数是磁力计传感器的精度。此值表示当前位置磁方向的角度可能不同于地磁方向的最大偏差。负值表示无效的方向。(只用于AT*PCMD_MAG)2.1.3 深入研究考虑到需要识别预设区域,需要加入图像识别,又深入研究SDK导航数据部分,编写导航数据命令,精确具体方位。(一)导航流数据Navdata是由无人机的UDP5554端口发送到客户端的UDP5554端口。信息存储是一种二进制格式,包括几个部分数据块的形式称为选项。(二)AR.Drone2.0的视频流AR.Drone2.0使用标准的视频编解码器,具有管理网络数据流的自定义封装视频编解码器。AR.Drone2.0使用H264( MPEG4.10 A

19、VC )处理高品质视频流和视频录像的基本规范。实时H264视频流可以调整以下参数: FPS : 15和30之间比特率: 250kbps的和4Mbps之间分辨率: 360P( 640×360 )或720P( 1280 * 720 ),此处本项目使用前段摄像头,分辨率为后者网络视频封装:对于网络传输,视频图像通过自定义头标题文件被发送出去,其中包含图像的许多信息。网络传输视频流AR.Drone 2.0的视频流是通过TCP的5555插座传输的。当客户端连接到插座时,AR.Drone2.0将立刻开始发送视频帧。2.2 通过PC语音识别,发送语音控制命令在控制界面上建立文本框,用科大讯飞语言输

20、入法,在编好的程序中输入内容,发出命令。图3 输入起飞语音信号图4 输入向指定地点飞行的语音命令2.3 飞行器视频流采集,分析图片,自动判定飞行区域2.3.1 学习halcon软件,达到图像标志识别的目的(一)提取对本项目有用的语句dev_set_colored (number)显示region时用到的颜色rgb1_to_gray(image,toimage)功能:把一个RGB图像转变成一个灰度图像smallest_circle( Regions : : : Row, Column, Radius )获取圆形区域的参数get_image_pointer1

21、 ( Image : : : Pointer, Type, Width, Height )获得图像的数据。如:图像的尺寸的宽度和高度count_obj( Objects : : : Number )主要用法是计算objects的个数dev_open_window( : :Row,Column,WidthHeight,Background :WindowHandle )打开一个图形的窗口dev_set_draw(fill)填满选择的区域dev_set_draw(margin)显示的对象只有边缘线threshold(

22、Image : Region : MinGray, MaxGray : )选取从输入图像灰度值的g满足下列条件:MinGray < = g < = MaxGray的像素dev_set_color( : : ColorName : )指定颜色connection( Region : ConnectedRegions : : )合并所有选定像素触摸相互连通区fill_up( Region : RegionFillUp : : )

23、填补选择区域中空洞的部分select_shape( Regions : SelectedRegions : Features, Operation, Min, Max : )选择带有某些特征的区域,Operation 是运算,如“与”“或”dev_display( Object : : : )显示图片bin_threshold( Image : Region : : )自动确定阈值 opening_circle( Region : RegionO

24、pening : Radius : )打开具有圆形结构元素的地区,平滑图像的边界。  dev_clear_window( : : : )清除视图窗体get_grayval( Image : : Row, Column : Grayval )计算Image图像中坐标为(Row,Column)的点的灰度值reduce_domain( Image, Region : ImageReduced 

25、: : )得到图像Image相对于Region区域的图像(二)学习图像识别算法过程图5输入图片图6 图像为多通道组合,将图像处理为一通道图7 根据颜色进行边缘提取图8根据图像的一次导数计算图像边缘图9 变换图像形状(三)初步编程识别图10 输入从视频流中抓取的图片图11 提取圆形部分本次尝试失败,原因取圆的原则太广,图片中过大的物体会被近似看成圆,因此,除了标志圆外,还有其他物体被识别。需加强图像边缘曲度的判别。(四)最终识别程序图12 输入图片图13 选取从输入图像灰度值的g满足下列条件:MinGray < = g < = MaxGray的像素图14 合并所有

26、选定像素触摸相互连通区图15 选择带有圆形特征的区域,并获取圆形区域参数(中心坐标、半径、面积)2.3.2 通过获取的圆形区域的参数建立与实际距离之间的关系(一)距离定位本次试验希望提前测量出的圆形面积与实际距离的关系,建立数学模型,计算相关函数,便于飞行器定位。试验前期(靶标直径为50cm):表2 圆形面积与实践距离的关系对比(50cm)图16 圆形面积与实际距离的关系对比起初将圆形标志的直径定为50cm,但由于飞行器距离标志近时,标识不能完全在视野内,因此改换用直径为30cm的圆形标志,实验数据如下。最终试验(靶标直径为30cm):表3 圆形面积与实际距离的关系对比(30cm)图17 圆形

27、面积与实际距离的关系对比向飞行器发出距离的命令,它会自动纠正姿态,沿正确的轨道飞行,在飞行过程中进行自动录像,利用halcon图像处理软件对录像进行抓图处理,先识别出图片中的靶标,计算飞行器与靶标的距离,从而改变飞行状态,到指定地点降落。(二)角度定位根据参数中圆形区域的中心坐标,我们比较圆形区域在图像中的位置,设置参数:d = 圆形区域的横坐标 图片中心位置的横坐标(已设置为320像素),误差为e(e>0);判断如果d<e,则说明飞行器位于靶标的右侧,因此我们发送左倾的命令来矫正它的位置;如果d>-e,则说明飞行器位于靶标的左侧,因此我们发送右倾的命令来矫正它的位置;否则就说明飞行器位于正确航线。(三)c#语言导出图18 导出的具体操作图19 导出的C#语言将导出后的C#语言添加到主控制程序中。(四)到指定地点转弯从飞行器中获取导航数据yaw,该参数为飞行器当前的磁偏

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论