基于安卓语音识别的无人机控制系统

2017-05-31 08:54应捷韩旭
软件导刊 2017年5期

应捷 韩旭

摘要摘要:为了使四旋翼无人机更加智能,控制更加简便,需设计新的控制方式。语音识别技术发展日趋成熟,在信息处理和自动化等领域应用相当广泛。通过在Android设备上传入语音命令操控四旋翼无人机,调整飞行姿态、速度、方向,解放了人的双手,实现了语音控制无人机飞行。不同环境下的测试结果表明,该系统功能良好。

关键词关键词:四旋翼无人机;Android;语音控制;语音识别技术

DOIDOI:10.11907/rjdk.162849

中图分类号:TP319

文献标识码:A文章编号文章编号:16727800(2017)005005403

0引言

无人机是一种机内无人驾驶的飞行器,具有动力装置和传感器等模块,在一定范围内靠无线电遥控设备或由内置程序自主控制飞行,自出现以来就受到发烧友的热烈追捧,相关研究进展迅速[1]。Android设备在移动终端市场占有率较高,为使无人机控制方式更加简便、智能化,本文在Android平台设计了语音控制四旋翼无人机系统。

1系统总体设计

通过语音识别控制无人机的设计由硬件设计和软件设计两部分组成。其硬件结构由动力部分、姿态感知、控制部分、WiFi模块、气压感知装置5大部分组成[2];软件部分基于万维网联盟的语音识别语法规范1.0标准(简称SRGS1.0),采用ABNF格式的文档完成语音识别,识别结果经软件处理,匹配生成相应的控制指令,通过手机WiFi功能发送到无人机端。无人机端通过TICC3200 WiFi模块接收控制命令,在STM32F3的控制下驱动电机完成用户的相应命令。控制器根据控制命令以及由传感器组感知的无人机实时状态数据(飞行姿态、高度、方向等),经过姿态融合算法和控制算法运算后调节电机转速,从而实现按照人的语音控制命令来控制无人机[36]。图1为系统设计原理。

2硬件设计

2.1飞控硬件模块

本设计选用市场上常用的F450四轴机架作无人机机架,选用SP Racing F3 飞控板作无人机控制器,负责检测无人机姿态和加速度,控制无人机各项电机的转速,从而控制无人机姿态和运动方向、控制WiFi模块(或GSM模块或蓝牙模块)进行通信工作。SP Racing F3 飞控板以STM32F3处理器为核心,集成气压计、陀螺仪、加速度计、地磁计,可加GPS、LED灯带、声纳等配件,使定高、定点、翻滚等飞行姿态的开发工作变得十分简便[34]。图2为飞控主控制器系统电路。

2.2无线传输模块

无人机通信模块可选择WiFi模块、GSM模块和蓝牙模块作为通信模块,与Android终端通信。GSM模块通信范围广,不管Android设备在哪都能进行远程控制;如果要异地控制,可选用GSM模块,但通信速率偏低;蓝牙模块成本低,功耗低,但通信范围有限,不适合本使用场景;考虑到传输视频图像数据吞吐量大,且几百米通信范围要足够使用,而WiFi模块通信速率高,所以选用WiFi模块。本系统采用TI CC3300WiFi模块,此模块功耗极低,尺寸超小,高速UART波特率可达到3M bps。

2.3语音识别端

语音识别方案有很多,如LE3320模块、ISD系列芯片以及PM系列芯片,虽然都具有语音识别功能,但是使用较繁琐,除此之外PC和手机端的Microsoft系统集成语音识别功能虽然也可应用于本系统,但调试后发现效果不佳。相比之下安卓手机作为语音识别硬件,使用更方便,开源资料更丰富,识别效果更好,省去了繁琐的语音训练过程,更加符合本系统设计。图3为硬件设计框架。

3软件设计

语音控制系统算法如DTW、HMM等都很成熟,主要采用单片机或DSP加上语音识别算法实现语音控制,这种控制方式通过内部算法简化了外部电路,同时语音识别精度也较高。但要求处理器具有较强的运算分析能力,而且需要足够大的外扩存储空间。

本系统软件设计由两部分组成,分别是STM32处理器程序和Android应用程序。STM32处理器程序是在Keil IDE开发环境下用C语言编写,运行在STM32主控制芯片中。STM32处理器代码还包括控制器与外设通信的代码编写。Android应用程序在eclipse+ADT环境下用JAVA语言开发,编译生成的APK文件运行在安卓手机平台[56]。

Android手机由WiFi模块实现和无人机通信并对其控制。首先,Android应用程序向无人机发送配对请求及配对密码,STM32通过WiFi收到配对请求并判断密码与预设值相同后,STM32对此请求应答,Android应用程序收到应答后停止发送配对请求,至此配对过程结束。配对完成后,STM32周期性地将无人机传感器的实时数据发送给Android应用程序,Android应用程序监测WiFi信号并接收实时数据,根据这些数据更新應用程序显示无人机状态。应用程序监测WiFi信号的同时监测语音信号,若识别出语音控制命令(包括开启、关闭、前进、后退、向左飞行、向右飞行、升高、下降),立即将控制命令发送至无人机。STM32收到控制命令后即根据控制命令做出相应动作。

3.1SRGS1.0规范

SRGS1.0规范等同于某些编程语言的正则表达式,它定义了一个句子的集合。解码器将根据文法生成的集合,对语音输入的句子进行两个部分的搜索,分别是文档的头部和文档正文,文档头部必须出现在开头部分,指定文档版本号,与编译工具对应[7]。一个典型的头部示例如下:

#ABNF 1.0 UTF-8

Mode SMS;Meta;

#include;Mount “name”;

Root main;

#ABNF HEAD-END

3.2Android端应用程序设计

Android应用程序中监听语音命令方案:编写基于万维网联盟的语音识别语法规范1.0标准(简称SRGS1.0),采用ABNF格式文档,经编译工具处理生成匹配网络。网络作为匹配引擎输入,可由匹配引擎对用户语音输入进行匹配,启动手机内置WiFi与外部WiFi模块连接实现通信[8]。下面是安卓端语音转换成指令的部分程序:

ArrayList results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); for(int i=0;i<1;i++){

strRet +=results.get(i);

if(strRet.length()>0) {

if(strRet.equals("向前")){

strRet="1";

}

3.3STM32处理器端程序设计

无人机端程序一方面将飞控搭载的传感器模块数据发送给安卓手机端,另一方面通过TICC3300模块接收安卓平台匹配后发来的飞行控制指令,将指令转化为PWM定时器,生成飞控可识别的控制指令,发送给飞行器执行模块,执行偏转舵面或改变螺旋桨转速或改变桨距,达到预期的飞行状态。程序运行中还包括各个模块的初始化及通信[910]。下面是STM32PWM控制舵机的部分程序:

Void IO_int(VOID)

{

RCC->APB2ENR|=1<<0;

RCC->APB2ENR|=1<<2;

RCC->APB2ENR|=1<<3;

GPIOC->CRL=0X88888888;

GPIO->CRH=0X33333333;

GPIOC->ODR=OXFFFF;

}

4实验结果

随机分配3人在同一天的不同时间点进行室外试飞,对无人机进行语音控制,在不同环境下测试控制精度,得到数据如表1、表2所示(表中0表示起,1表示降,2表示向左,3表示向右,4表示悬停)。

在相对嘈杂建筑物密集的市区会影响到WiFi信号的传输以及语音信号的接收。由于WiFi信号主要采用微波频段,微波在遇到障碍物时穿透力不强,因此会影响语音信号的传输,嘈杂的室外环境也会影响语音输入的精度。测试结果显示成功率达到84%,图4为实物。

5结语

目前,绝大部分无人机采用手动操作遥控方式,购买无人机时还要另购一个航模遥控器(价格几百元不

等),本文采用基于Android设备的语音控制方式大大简化了操作,只需用语言传达操控命令,通过手机端直接与无人机交互,节省了成本,使得无人机更加智能。

图4四旋翼无人机

嵌入式语音控制系统主要采用内嵌语音芯片方案,即在处理器外围电路焊接语音芯片,语音芯片采集语音数据,经处理器读取和分析后得到相关信息,开发难度高、工作繁琐。本文利用基于Android设备的语音识别技术去控制系统,大大简化了开发过程,省去了嵌入式很多不必要的重复性工作。

参考文献参考文献:

[1]潘海珠.四旋翼无人机自适应导航控制[J].计算机仿真,2012,29(5) :98102.

[2]周建军,陈趋,崔麦金.无人直升机的发展及其军事应用[J].航空科学技术,2003(1):3840.

[3]华成英,童诗白.模拟电子技术基础[M].北京:高等教育出版社,2004.

[4]莫力.Protel电路设计[M].北京:国防工业出版社,2005.

[5]Speech recognition grammar specification version 1.0,W3C recommendation 16 March 2004[EB/OL].https://www.w3.org/TR/speechgrammar/.

[6]张稀,土德银,张晨.MSP430系列单片机实用C语言程序设计[M].北京:人民邮电出版社,2005.

[7]D CROCKER ED.Augmented BNF for syntax specifications:ABNF,network working group[EB/OL].http://www.ietf.org/rfc/rfc2234.txt.pdf.

[8]李剛.疯狂Android讲义[M].北京:电子工业出版社,2013.

[9]谭浩强.C程序设计[M].北京:清华大学出版社,1999.

[10]STM32F303xB STM32F303xC datasheet,STMicroelectronics[EB/OL].http://www.ic37.com/STMICROELECTRONICS/STM32F303VCT6_datasheet_12732065/.

责任编辑(责任编辑:杜能钢)