APP下载

基于NuttX的多旋翼飞行器控制系统设计*

2015-02-23黄水长孙胜娟张永健张智攀

电子技术应用 2015年3期
关键词:旋翼进程飞行器

黄水长,栗 盼,孙胜娟,张永健,张智攀

(1.河北工程大学 信息与电气工程学院,河北 邯郸056038;2.贵州大学 电气工程学院,贵州 贵阳550025)

基于NuttX的多旋翼飞行器控制系统设计*

黄水长1,栗 盼2,孙胜娟1,张永健1,张智攀1

(1.河北工程大学 信息与电气工程学院,河北 邯郸056038;2.贵州大学 电气工程学院,贵州 贵阳550025)

针对执行复杂任务的多旋翼飞行器对多任务和安全性的需求,设计一种基于NuttX实时操作系统的飞行控制系统,并增加失效保护协处理器,达到减少开发过程中坠机几率和提高主处理器任务容量的目的。实验表明,此平台在满足稳定控制飞行的同时,能明显减小开发难度,缩短开发周期,并且给后续算法开发保留了充足的运行资源。

多旋翼飞行器;NuttX;多任务;失效保护

0 引言

相对于大型无人驾驶飞机(Unmanned Aerial Vehicle,UAV),多旋翼飞行器拥有体积小、成本低、行动敏捷、可悬停等优势,成为许多国家或机构的研究热点,是UAV发展的主要方向之一。归功于UAV技术近几年的迅速发展,多旋翼飞行器也从一开始的军事用途逐渐向商用和民用方向延伸,如今已经广泛用于高空拍摄、军事侦察、交通监测、植物保护、地形勘测等领域[1]。随着应用领域的扩展和深入,工程中对多旋翼飞行器的要求也越来越高,多任务处理能力和安全性能成为突出的问题。拥有一个简洁高效、安全稳定的开发平台显得至关重要。针对上述情况,本文提出一种基于 NuttX实时操作系统的多旋翼控制系统设计,并对硬件布局和软件结构进行详细的论述。

1 控制系统总体设计

1.1 需求分析

为了达到安全、稳定、高效的目的,以下针对多旋翼飞行器的特点,对控制系统提出需求:

(1)系统在发生故障导致主处理器复位时,飞行器应保持在空中飞行等待系统复位,避免坠机造成人身安全和财产损失。

(2)处理器有较高的运算性能,以满足多任务和后续算法开发的需求。

(3)能高速且精确采集各个传感器的数据,并提供模拟信号采集接口,以便扩展模拟量传感器。

(4)具备与遥控接收机和地面站通信的能力,能识别联系中断的情况,并采取相应安全措施。

(5)拥有 8路与主处理器硬件上独立的 PWM输出,用于兼容旋翼数量不等的飞行器系统。

(6)可记录飞行中的所有姿态、位置数据和遥控操作数据,存于SD卡中,方便对系统进行调试。

(7)为方便开发,系统可通过更改 SD卡中文件达到配置系统的目的。

(8)采用模块化软件结构,功能可简单地通过配置文件进行修改,避免频繁的更新程序。程序可通过USB接口用Bootloader更新[2]。

(9)预留外置 UART、CAN、SPI、I2C等通信接口,给GPS、数传等其他扩展模块提供数据通道,方便后续应用开发。

1.2 总体设计

多旋翼旋翼飞行器的输出控制有6个自由度,分别为沿 x、y、z坐标轴做旋转和平移动作,其控制都是通过调整跟旋翼相连的电机转速实现[3],故在实际飞行中,为了达到稳定的飞行,电机转速始终是在变化当中。由于电流的变化将引起强烈的电磁干扰,对模拟量传感器数据的采集非常不利。为了提高传感器数据采集的精度,同时兼顾采集速度,本文采用全数字量 SPI接口传感器。另一方面,为了达到失效保护作用,同时减轻主处理器的负荷,系统额外采用一个协处理器。

控制系统对实时性要求较高,同时进行的处理内容也比较复杂,包括各个传感器数据的采集、姿态估计、姿态控制、遥控或地面站的命令分析、电机控制、日志记录等。对于这种任务比较多的程序结构,如果采用普通的前后台系统结构,势必造成开发难度大、程序实时性弱、系统可维护性差等结果。因此,本文率先引入功能强大的NuttX实时操作系统。NuttX注重标准兼容和小型封装,主要遵循ANSI和Posix标准,采用模块化设计,完全可抢占式内核,并且支持类Unix的Script控制和类Bash的NuttShell控制台,能为多旋翼飞行器控制系统的开发提供极大的方便。

2 控制系统硬件设计

2.1 硬件选型

(1)处理器:由于主处理器要负责采集各个传感器的数据进行搬运,并进行姿态估算和控制,所以至少需具备DMA功能和硬件浮点运算,才能保证控制系统的实时性和预留充足的资源给后续开发。经过筛选,本文采用ST公司的 32位Cortex-M4内核处理器STM32F429VIT6,其最高主频能达到 168 MHz,硬件接口丰富,并且支持FPU,处理能力能满足控制系统需求。相对主处理器,协处理器需要处理的内容比较简单,为了方便开发,选用和主处理器同一系列、功能稍弱一些的STM32F103C8T6芯片。

(2)传感器:主处理器上,角速度计采用 ST公司的16位精度传感器L3GD20,三轴加速度计和三轴电子罗盘采用LGA-16超小封装的LSM303D,气压计采用由瑞士MEAS公司推出的MS5611,该模块包含一个高线性度压力传感器和一个超低功耗的24位Σ型AD转换器,分辨率可达到10 cm。为了在主处理器发生故障时保持最基本的自稳模式,协处理器上采用陀螺仪和加速度计一体的MPU6000传感器。上述所有传感器都具备高速SPI数字输出的特性,与主处理器连接的传感器可串接在同一SPI总线上,降低了PCB设计难度。

(3)无线模块:无线模块包括遥控接收模块和与地面站通信数传模块。为了方便布线、节省IO口资源,遥控接收模块采用脉冲位置调制(Pulse Position Modulation,PPM)形式输出,只需一根信号线即可传输 8通道PWM。无线数传采用433 MHz超远距离无线通信模块,通信距离可达2 km,保证了高空飞行时数据连接的稳定。

2.2 硬件设计

图1为系统的硬件结构。由于系统中含有两个处理器,为了方便更新程序,将协处理器的 UART1连接至主处理器串口,这样可以通过主处理器更新程序,减少开发过程中的冗余步骤。连接两个处理器之间的串口在系统正常运行时,还可以用于数据交换。使用高速串口交换数据相对于使用SPI交换数据,其优点是不用像 SPI那样时刻去查询从设备是否有数据要发送,而是只要有数据即可立即发送,无需额外耗费资源轮询等待,提高了系统效率。

图1 硬件系统结构图

为了防止电机在运行时产生强电流烧毁处理器,在PWM输出与电调输入之间采用TI公司的TXS0108电平电压转换芯片,达到信号隔离和增强驱动的作用,电路如图2所示。

图2 PWM输出隔离电路

3 控制系统软件设计

3.1 主处理器软件设计

主处理器运行NuttX实时操作系统,所有功能都通过任务进程实现[4]。主要的进程有传感器数据采集、姿态估算、姿态控制、飞行器状态识别与切换、协处理器控制、日志记录。进程间进行通信是程序结构的重要部分。为了建立一个快速简洁的进程间通信机制,本文引入一种微型对象请求代理(micro Object Request Broker,uORB)机制[5],通过推送和订阅主题的方式进行通信,进程不用关注信息交换的对象,并且同时可以推送和订阅多个主题,只需简单的代码即可实现进程间数据的共享,提高了开发效率。

如图3所示,传感器数据采集进程采集的所有传感器数据,姿态估计进程利用传感器数据估算出飞行器当前姿态[6],协处理器通信进程获取遥控数据,状态识别进程结合传感器数据、飞行器姿态和遥控数据识别出飞行器当前模式,最后姿态控制进程通过飞行器姿态、遥控数据、飞行器模式计算出当前所需的 PID控制量[7]并推送至uORB,协处理器通信进程再将订阅的PID控制量通过高速串口发送至协处理器。

图3 主处理器软件结构图

3.2 协处理器软件设计

如图4所示,为了保证系统的实时性,协处理器的PPM脉冲输入部分采用中断方式进行捕获,与主处理器通信部分采用DMA方式直接填充至PWM匹配输出寄存器,最大程度地减小CPU的干预。失联识别在定时器20 ms中断中实现,每次进中断会读取DMA传输计数器的值并记录,再与上次的记录值进行比较,如果两个值不相等,则说明数据连接正常;相反,如果连接断开,两个值将会相等,据此实时地判断出连接的通断状态。主循环中只需要判断通断标志位,如果检测到连接断开,协处理器则会启用失效保护功能:通过SPI总线读取MPU6000芯片的加速度和角速度数据,利用四元数姿态融合算法[8]得到姿态信息,转换成欧拉角之后,再用 PID控制器保持飞行器的水平姿态,直到与主处理器的连接恢复正常,再将电机控制权交还给主处理器。用欧拉角表示刚体姿态方便几何推导,但是存在万向节死锁,即当刚体的3个万向节中两个的轴发生重合时,会出现失去一个自由度的情况。四元数法则不存在这个问题,并且运算步骤也相对简单,适合在本文控制系统的协处理器中运用。

图4 协处理器软件流程图

4 实验结果及分析

如图5所示,利用四旋翼飞行器作为实验平台,在室外进行飞行试验后,得到横滚、俯仰和偏航角的响应曲线。将日志导出到MATALB并绘制曲线,从图6可以看出飞行器的实测值能够快速、精确地追踪设定值。在人为软件复位主处理器后,飞行器能在空中保持机身大致水平,直至主处理器恢复工作,保证了系统的安全性。此外,在NuttShell中输入”top”指令,可得到主处理器的资源占用情况。如图7所示,主处理器的cpu空闲资源达到了51.73%。

图5 实验平台

图6 飞行器姿态角响应图

实验结果表现出系统良好的控制性能,能够稳定地控制飞行器进行基本飞行,在主处理器发生故障时能够降低坠机的风险,减少了因开发过程中程序不稳定带来的损失和危险,缩短了开发周期,增强了安全性能,并且能满足各种运算及后续开发的需求,为多旋翼飞行器控制系统更深入的开发奠定了基础。

NuttX-based control system design for multi-rotor unmaned aerial vehicle

Huang Shuichang1,Li Pan2,Sun Shengjuan1,Zhang Yongjian1,Zhang Zhipan1
(1.School of Information and Electrical Engineering,Hebei University of Engineering,Handan 056038,China;2.School of Electrical Engineering,Guizhou University,Guiyang 550025,China)

According to the requirements of multi-rotor unmanned aerial vehicle for multitasking and secutiry,this paper presents a kind of flight control system adding a failsafe coprocessor based on NuttX real-time operation system,to reduce the probability of crash risk and enhance the capacity of task of the main processor.Experimental results show that this platform can meet the flight with great stability,significantly reduce the development effort and shorten the development cycle.It retains adequate resources for the subsequent algorithm development also.

multi-rotor uav;NuttX;multitask;fail safe

V242

:A

:0258-7998(2015)03-0041-03

10.16157/j.issn.0258-7998.2015.03.009

国家自然科学基金资助项目 (41373101)

猜你喜欢

旋翼进程飞行器
高超声速飞行器
改进型自抗扰四旋翼无人机控制系统设计与实现
大载重长航时油动多旋翼无人机
债券市场对外开放的进程与展望
改革开放进程中的国际收支统计
基于STM32的四旋翼飞行器的设计
复杂飞行器的容错控制
四旋翼无人机动态面控制
神秘的飞行器
社会进程中的新闻学探寻