您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页基于Arduino Mini Pro的无人机驾驶系统的研究与实现

基于Arduino Mini Pro的无人机驾驶系统的研究与实现

来源:筏尚旅游网
龙源期刊网 http://www.qikan.com.cn

基于Arduino Mini Pro的无人机驾驶系统的研究与实现

作者:周志浩 汪鑫 俞佳星 来源:《商情》2014年第44期

【摘要】无人机(以下简称UAV)是当前比较热门的研究方向,对于无人机的控制方式更是五花八门,但是鉴于当前无线电环境的条件,对于短距离飞行(1KM以内)来说是没有太大影响的,但在中长距离情况下,远程操作一般需要中继站或卫星的帮助,这对于无人机的安全性是很大的考验。对于未授权的控制和监控是无法避免的,那么研究一套全自动的飞行系统就显得尤为必要。

【关键词】无人机,自动驾驶

【Abstract】 Unmanned aerial vehicles (hereinafter referred to as UAV) is currently more popular research direction, for a controlled manner UAV is varied, but under the current radio environment, for the short flight (Below 1KM) is not much impact, but in the long distance, the remote operation generally requires the help of a relay station or satellites, which for the safety of the UAV is a great test, we can not avoid unauthorized control and monitoring ,then the study in automatic flight system is particularly necessary. 【Key words】UAV,Auto-Route 0引言

无人机驾驶系统(以下简称UAVS),既是利用先进的无人驾驶飞行器技术、遥感传感技术、遥测遥控技术、通讯技术、GPS定位技术和遥感技术,具有自动化、智能化、专用化,快速获取国土、资源、环境等空间遥感信息。还可用于抢险救灾,视屏拍摄,特技飞行表演等。无人驾驶系统由于具有机动、高效、经济等优势,已经成为世界各国争相研究的热点课题。但是UAV的远程控制安全性不佳极易受外界干扰或拦截,如果使用自动控制系统可以很好的控制飞行,并且达到无人操控的目的,其安全性极为突出。 1基本飞行原理

四旋翼是多旋翼家族中的一员,因其易受控制、高性价比等的特点,故本文选取它作为实验对象,它的的控制方式目前有+型和X型两种。+型控制起来相对更容易,但是不利于做特技动作,而X型则正好相反。故本文的研究对象采用X型。(如图1)。 1.1上下运动

龙源期刊网 http://www.qikan.com.cn

当需要上下运动时,首先要保证相邻两个的电机的旋转方向是相反的。以便于抵消相互的扭力。避免飞行器在空中发生不受控制的旋转。当逐渐增大电机的转速时,拉力慢慢上升,直到拉力大于重力时,飞行器开始上升。当拉力等于重力时,飞行器慢慢趋于稳定,悬停在空中。当减小电机转速时,拉力慢慢减小,直到小于重力,飞行器开始下降,直至落地。 1.2俯仰运动。当前方的两部电机加速,后方的两部电机减速。这时飞行器开始抬头。而相反时飞行器开始俯冲。在做俯仰动作时,每组电机的转速要平衡,以便于抵消相互的扭力,避免飞行器在做俯仰动作时发生偏航。

1.3滚转运动。在左侧的两部电机加速,右侧的两部减速,这时飞行器开始做向右的滚转动作。相反时飞行器开始做向左的滚转动作。在做滚转动作时,每组电机的转速同样要平衡,以便于抵消相互的扭力,避免飞行器在做俯仰动作时发生偏航。

1.4偏航运动。在斜对角线的两部电机加速,另外的两部电机减速时,飞行器开始做偏航运动。如图1所示,如果X轴电机加速,Y轴电机减速,这时飞行器开始做逆时针偏航运动。如果相反,X轴电机减速,Y轴电机加速,这时飞行器开始做顺时针偏航运动。

1.5前后运动。前后运动与俯仰运动类似,当飞行做俯仰运动的同时,也会在水平方向产生作用力,推动飞行器做前后运动。

1.6左右运动。左右运动与滚转运动类似,当飞行做滚转运动的同时,也会在水平方向产生作用力,推动飞行器做左右运动。 2自动控制算法 2.1 平衡算法

a)陀螺仪数据获取。本文使用的是MPU6050电子陀螺仪,作为水平、垂直、俯仰、航向和角速度传感器。通过通讯协议直接读取到的数据是一串一串的数据,需要经过才能进行后续运算,故使用VS2012编写了数据转换软件来转换数据。(如图2)下文中所提到的eEtF就是来源于本算法处理后的结果。 b)比例(P)控制

比例控制就是在传感器获得输入值e(t)发生变化时,输出值u(t)也相应的跟着发生变化。

uEtF=KeEtF;注:其中K为比例放大系数

在实际情况下,比如控制螺旋桨的升力时,当提高电机转速的时候,传感器得到数据并不是立即就呈现一个上升的态势。它有一定的延迟。(正相关于传输距离,处理速度)。

龙源期刊网 http://www.qikan.com.cn

同样,当我们减速时,传感器得到的数据也并不是立即出现下降的态势。因此,简单的使用比例(P)控制,容易产生震荡、过控,甚至就可能直接使飞行器失去控制。 C)比例积分(PI)控制

比例积分控制就是在比例控制的基础上在增加一个对误差eEτF的积分。误差eEτF可能很小,但是随着时间的增加,u(t)会慢慢变得很大,这样就可以推动整个系统减小这个误差。

d)比例积分微分(PID)控制

比例积分微分控制就是在上面的基础上再增加一个对输入值e(t)的微分。在实际情况中,很多时候我们的变化总是比误差的变化慢,原因是系统存在一些大惯性的、有一定滞后性的东西。它可能会使得整个系统产生震荡、甚至失控。通过加入微分项可以减少过控,抑制震荡。

2.2 导航算法 a)GPS原始数据获取

本文采用的是带有串口U-blox GPS模块,能够直接输出ASCII码格式的GPS数据。 而GPS输出的数据有好几条。比如$GPGGA、$GPRMC、$GPVTG、$GPGGA、$GPGSV等信息。我们主要使用的是以$GPRMC开头的这条数据。 下面是这条信息的具体格式:

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11> (3)纬度,格式:度度分分.分分分分(ddmm.mmmm)。 (4)纬度区分,北半球(N)或南半球(S)。 (5)经度,格式:度度分分.分分分分。 (6)经度区分,东(E)半球或西(W)半球。 如图3。

在这条信息中,我们主要使用其中的第3到第6个数据。这些数据就是GPS的坐标。

龙源期刊网 http://www.qikan.com.cn

为了获取GPS坐标信息,我们需要定义两个计数器。

当读到第一个$符号是,使用第一个计数器,记录后面的5个字符。然后进行比对,确认这条信息就是我们所要的GPRMC数据。

数据确认之后,启用第二个计数器。记录逗号的数量。从第三个逗号开始记录字符,直到第七个逗号结束记录。

对记录到的字符串,按逗号分隔,降第一和第三个数据转换成浮点数。这两个数据就是我们所需要的经纬度坐标信息。而第二和第四个数据则是表示南北半球,以及东经西经。 考虑到飞行器载荷比较小,飞行时间也比较短。不可能进行长距离飞行,因此根据这种情况我们去掉了第二和第四个数据,简化了数据结构。

此外,因为串口是属于中断。每次接受到数据都会直接进入中断状态。如果之前的读到数据如果还没有来得及处理,新的数据就会覆盖掉原来就得数据。这会产生不可预测的严重错误。为了避免这样的错误,我们需要定义一个队列来缓冲。读入的数据一个个放入队列中,然后提取GPS信息的程序挨个的读出,并提取GPS坐标信息。本文研究之前采用的是51单片机但是因为需要中断大大的影响了运算速度,后使用双51方案(一块51负责主运算,一块负责GPS,碰撞等从运算)但是效果不佳,故采用了Arduino系列单片机来解决。

b)电子罗盘数据获取。本文使用的电子罗盘是基于IIC通讯协议的芯片。读出的数据是一个浮点型数据。代表当前方向与正北方向的夹角。(顺时针为正,取值范围为0°-360°)。 c)导航控制算法。我们假设目标点坐标为(a,b),当前点坐标(a,b),电子罗盘获取的值为C。首先需要计算出目标点在当前点的方向角度degA。另,角度为正时代表顺时针。

在飞行过程中我们可以事先在上位机或手机客户端上设定飞行路径,软件会根据飞行轨迹给出尽可能多的位置坐标点(可以按照实际情况手动输入采点数量或距离)之后通过蓝牙模块或连线将数据写入Arduino单片机中,运行时系统不断做上述循环,但是速度正相关于GPS数据读取的速度。同时飞行稳定性也正相关于循环的快慢。 2.3 避障及自动降落算法

本文采用的是SR04超声波测距模块。其工作距离在4毫米到4米之间,误差在毫米级。因其稳定性好,性价比高故本文采用其作为实验对象。

龙源期刊网 http://www.qikan.com.cn

a)模块工作原理

经发射器发射出长约6mm,频率为40KHz的超声波信号。此信号被物体反射回来由接收头接收,接收头实质上是一种压电效应的换能器。它接收到信号后产生mV级的微弱电压信号。如图4。

在实际测试SR04超声波模块时,只要在控制口发一个10US 以上的高电平,就可以在接收口等待高电平输出。(如图5)一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离(S=c*t/2)。如此不断的周期测,就可以达到测量值了。(如图6通过上位机读取数据) b )避障算法

在飞行器的四周有四个一样的超声波测距仪,测量不同方向的距离,在四周障碍物距离超过4米的情况下,系统不会做任何操作,但当小于4米时将控制其向相反方向运动,起到了负反馈的作用。如果检测到同一水平线上的两方向都有障碍物系统将取两面距离之和的平均值,使飞行器工作在两个障碍物之间。在整个控制系统中避障算法的优先等级是高于导航控制算法。一般此类飞行器的飞行高度都在1Km左右,所以不必担心过于复杂的环境。对于一般会遇到的障碍物常常是大楼和树木,所以我们在前面的基本避障算法上在对特定的物体进行了简单的模型建立,当条件符合时将会自动调取模型算法。 c )自动降落算法

自动降落算法可以很好的解决炸机问题,据调查发现主要的炸机事故都发生在起降过程中,所以我们对此建立了一个简单但行之有效的模型。如图7。其下落过程就像弹性小球落地时的情况,但最低点时还是离地面有一定高度的。 3总结

本文以Arduino Mini Pro单片机为基础利用多种算法实现UAV的自主飞行。这其中包括了自主的姿态控制、飞行路线控制。为了达到上述目的,本文利用多种传感器,包括电子陀螺仪、电子罗盘、GPS模块、超声波测距模块等。同时在UAV上对此进行了实现,并取得了不错的效果。在导航和平衡算法上还是有很多深入空间的,这也是本文下一步的研究方向。 参考文献:

[1]王泉,张学宏,周敏刚,黄辉.无人机飞控软件测试方法研究[J].航空计算技术,2008,3

[2 ]常庆利,小型无人机飞控系统软件架构与实现,中国电子科技集团公司 第三十八研究所

龙源期刊网 http://www.qikan.com.cn

[3]杜萍,杨春,飞行器航迹规划算法综述[J]。飞行力学,2005,23(2):10-14 [4]陈海汉,刘因,杜运磊,无人飞行器航迹规划研究[J],计算机应用,2011,31(9):2574-2576

[5]乔桥,史长久,飞行器航迹规划的多目标优化方法[J],微计算机信息,2010,26(11):172-174

[6]孔庆杰,史文换,刘允才,基于GPS轨迹的矢量路网地图自动生成方法[J]。中国科学技术大学学报,2012,42(8):625-626

[7]刘梅美,基于多项式拟合模型的GPS高程转换方法研究[J]。附件地质,2012,14(1):85

[8]冯慧,屈香菊,基于多目标模糊优化方法的无人机航迹规划[J]。飞行力学,2007,25(2):25-29

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务