APP下载

基于ARM的实时可视化无人机飞行仿真系统*

2018-08-27童,陈鑫,2,王

弹箭与制导学报 2018年3期
关键词:微控制器串口嵌入式

舒 童,陈 鑫,2,王 川

(1 空军工程大学航空航天工程学院,西安 710038;2 先进航空发动机协同创新中心,北京 100191)

0 引言

中小型固定翼无人机常被作为单兵侦查装备、靶机和反辐射武器使用。提升中小型固定翼无人机研制水平,除了要注重外形设计,更要紧抓飞行控制系统研发。飞行控制器传统研发过程分为对象建模、控制律仿真、硬件设计、软件编程、集成调试[1]。对象建模与控制律仿真是根据无人机的气动参数、发动机特性和执行机构特性等参数建立飞行模型和控制模型,而后通过仿真软件对模型进行验证。文献[2-3]利用Matlab/Simulink工具建立了非线性六自由度运动方程和制导与控制模型,仿真结果通过曲线进行分析,文献[4]与前者相似,其创新点在于仿真结果通过Flightgear模拟器实现了可视化输出。目前,大多数仿真过程都是在计算机平台上完成。然而,实际用在无人机上的控制器都是嵌入式平台。考虑到模型仿真的时效性取决于模型建立方式、计算方法以及控制器的运算能力,并且固定翼飞机在调试时,一旦出故障,对机身的破坏较大。所以,急需在飞行控制器研制过程中增加一种更逼真的飞控仿真调试方式,弥补传统调试过程的不足。

为了更真实地验证飞行模型与控制算法的准确性、硬件平台与软件程序对控制信号的响应效率以及软件与硬件的兼容性,达到降低研制成本,提高调试效率的目的,文中利用视景仿真技术开发了基于ARM嵌入式控制器的通用型无人机可视化实时飞行仿真系统。

1 系统总体结构

整个系统主要包括飞行仿真模块和三维视景仿真模块。飞行仿真模块在基于ARM内核的STM32F103微控制器以及相关外围电路上(后文简称下位机)搭建,完成指令控制信号采集、飞行状态计算和数据传输的任务。三维视景仿真模块实时接收下位机上传的飞行状态信息,驱动三维视景模块快速更新,达到可视化的目的。系统功能框图如图1所示。

图1 系统功能框图

2 飞行仿真模块的设计与实现

飞行仿真模块是系统的核心部分,主要使用嵌入式微控制器建立飞行模型,并在给定的控制信号和控制规律下,采用合适的数值计算方法对无人机飞行进行实时仿真运算,得到无人机连续的空间位置与姿态信息。程序功能结构框图如图2所示。

图2 程序功能框图

2.1 飞行仿真模块硬件设计

综合考虑项目需求和功能要求,系统选用意法半导体公司的STM32F103系列控制器作为嵌入式硬件平台。该系列微控制器包括CPU、RAM、ROM、I/O接口、定时器/计数器、UASRT、A/D和D/A转换器等多个模块,其最高工作频率为72 MHz,可软件调节工作频率,并且可实现单周期乘法和硬件除法。系统利用其强大的运算能力和接口功能,实现飞行仿真模型与控制模型的建立与解算、控制信号采集和飞行状态数据传输功能。

2.2 飞行模型与控制律设计

2.2.1 飞行模型建立

本系统建立的飞行模型包括无人机动力学模型、运动学模型、环境模型、发动机模型和舵机模型[5]。为了合理地简化方程,做了如下假设:

1)考虑到无人机飞行高度和任务半径,认为地球是一个无限延伸的平面,忽略地球的自转和曲率;

2)考虑到无人机机体材质与作用力的特点,不考虑机体的形变,即认为机体为理想刚体[4]。

为保证无人机飞行仿真的逼真度,系统使用四元数法建立了六自由度飞行方程组如下所示:

相比于方向余弦法和欧拉角法建立的运动方程组,四元数法具有突出的优点:对任何参数不退化,参数数目只有4个,联系方程只有1个[6]。

下位机在初次实验时采用四阶龙格-库塔算法解方程组,计算结果平滑且逼真度高,但计算速率较低。为了提高计算的实时性,后改为二阶龙格-库塔法,在保证平滑和逼真度的前提下有效地提高了计算速率。最终结果证明,相比于欧拉角法,程序将四元数法与龙格库塔算法结合,成功地将计算一次姿态信息的时间从60 ms左右减少到25 ms左右,计算速率提高了2倍以上。

发动机模型与气动数据都由具体无人机型号确定,为已知数据。程序根据大气环境、飞行状态、油门杆位置等状态,从相应插值表中提取数据,插值计算当前的发动机转速、推力和气动系数。

2.2.2 控制方式与控制律

无人机的控制方式包括人工控制、指令控制、自主控制。本系统主要采用指令控制方式。系统使用的控制规律是开源的,可根据用户研制目的需要植入控制规律[7]。默认控制律选择了经典PID控制律。下面为3个姿态角的指令控制方式下的PID控制律。

1)俯仰角保持与控制回路闭环控制律:

2)滚转角保持与控制回路闭环控制律:

3)偏航角保持与控制回路闭环控制律:

式中:P、I、D分别为比例系数、积分系数和微分系数;θ、φ、ψ分别为俯仰角、滚转角和偏航角[8]。

2.3 飞行仿真模块程序设计

飞行仿真模块程序是一个多任务程序,为了保证程序运行的可靠性和实时性,在STM32F103微控制器程序中嵌入了μC/OS-Ⅱ嵌入式操作系统。程序主要实现四个功能:控制信号采集、控制模型计算、飞行模型计算和飞行状态信息的串口传输。

1)控制信号采集任务:控制信号为占空比从5%至10%可调的50 Hz方波信号,通过配置微控制器的TIM(通用定时器)控制寄存器调用其输入捕获功能进行脉宽采集。

2)控制模型计算任务:程序以消息的形式将控制量和上一时刻的飞行状态信息输入控制律模型,将模型计算结果以消息形式存入提前配置好的存储单元等待调用。

3)飞行模型计算任务:读取存储单元中最新的控制模型计算结果,输入飞行模型,计算得到当前飞行状态,存入消息,等待串口传输任务提取。

4)串口传输任务:程序通过调用控制器UASRT1通道上传最新的飞行状态信息。

3 三维视景仿真模块的设计与实现

三维视景仿真程序分为3个子模块程序:基于多线程和Windows自定义消息的串口通信模块,基于MFC的OpenGL三维场景程序模块和无人机模型建立与导入模块。

3.1 基于多线程和Windows自定义消息的串口通信

为了保证较高的异步串行通信数据收发速率,利用传统的定时器采集处理消息的单线程方式无法满足高速的传输模式,所以本系统采用了多线程的Windows自定义消息处理方式来有效地解决高速传输问题。

利用多线程的编程方式,将三维视景程序分为两个线程部分:作为主线程的飞行状态显示处理、更新部分和作为从线程的串口数据读取部分。同时,为了保证主、从线程之间灵活的数据交互,程序在使用共享存储区的基础之上,通过自定义消息来实现主、从线程之间的高速通讯功能。

3.2 无人机模型建立与导入

利用OpenGL绘制无人机模型存在两个问题:1)用程序代码绘制三维模型,过程复杂,模型质量低;2)模型的加载和更新耗时多。综合考虑,系统使用了三维建模软件3DMAX进行无人机模型绘制,保证模型的逼真。同时,出于模型运行流畅性的要求,模型需进行不失真的简化,利用Milkshape3D软件将模型转换成三维视景程序可读入的精简文件格式[9]。图3为利用Milkshape3D软件进行无人机模型转化格式的过程。

图3 Milkshape3D操作界面与无人机模型

3.3 基于MFC的OpenGL三维场景程序

OpenGL是SGI公司开发的一套高性能图形处理系统,是一个开放的三维图形软件库,能与Visual C++结合编程,实现有关计算和图形算法,保证算法的正确性和可靠性[10-11]。

OpenGL库中没有窗口管理函数,所以在Windows环境下利用OpenGL建立三维场景,需要把Windows的窗口系统与OpenGL关联起来,而后才能利用OpenGL提供的函数绘制和处理三维场景[12]。VC++中的MFC包含了丰富的Windows应用框架,提供了窗口和事件管理函数,所以,系统选择了MFC与OpenGL的结合。

MFC中的OpenGL编程基本流程如图4所示。

三维场景程序在绘制图像时,重点要完成地形与天空模型建立和飞行状态场景驱动任务。具体实施方法如下:

图4 MFC中的OpenGL编程基本流程

1)地形与天空模型的建立

系统在绘制天空与地形过程中采用纹理映射的方法,选择天空和地面的图像作为纹理。纹理映射方式既能真实地展现三维环境,又能有效地保证渲染的效率。通过定义纹理、滤波、说明映射方式、给出坐标关系,使纹理可以相对于机体移动。

2)飞行状态驱动的实现

三维视景程序中导入的无人机将根据飞行仿真程序计算出的飞行状态数据运动。程序将飞行状态数据转换为主线程的OnDraw()函数中的平移函数glTranslate()和旋转函数glRotate()以及矩阵变换关系函数的输入参量,从而来实现飞行状态的更新[13]。图5展示了三维视景程序的窗口界面内容。

图5 三维视景程序窗口界面

4 仿真结果

三维视景程序包含实时记录飞行状态参数的功能,记录结果以电子表格的形式存储,以便于后期通过Matlab或者OriginPro等软件对数据进行量化分析。

图6~图8是使用Matlab绘制一次飞行实验结果的曲线图,分别展示了无人机的质心变化轨迹、速度变化和姿态角响应。

图6 轨迹数据曲线

图7 速度响应曲线

图8 姿态角响应曲线

5 结论

通过实验数据分析可知,将基于ARM的嵌入式开发与三维视景仿真相结合,实现无人机可视化飞行仿真是可行的,为制作实物的无人机飞行控制器奠定了技术基础。

1)为研制开源中小型固定翼无人机飞行控制器,设计了基于ARM的嵌入式无人机飞行仿真系统,作为飞行控制器开发的过渡系统,该系统将传统的飞行仿真过程植入嵌入式微处理器中,实现了实时飞行状态解算。

2)为动态、生动地展现微控制器计算无人机飞行状态的结果,利用OpenGL开发了可以快速更新的三维视景仿真程序。

本系统提供的平台同样适用于导弹飞控的研制,通过建立不同的飞行模型与控制模型即可;同时,无人机的控制方式也可拓展为其他类型的控制方式。

猜你喜欢

微控制器串口嵌入式
基于IMX6ULL的嵌入式根文件系统构建
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
TASKING针对英飞凌第三代AURIX微控制器推出多核开发环境
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
基于ARM嵌入式的关于图像处理的交通信号灯识别
TS系列红外传感器在嵌入式控制系统中的应用
用于高品质电动汽车的分布式并行计算
MCS—51单片机中的多串口通讯技术的应用
电磁导向智能车设计探讨