微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Linux的小型无人直升机实时仿真系统构建

基于Linux的小型无人直升机实时仿真系统构建

时间:07-05 来源:现代电子技术 点击:

引 言

  小型无人直升机具有垂直起降、悬停、巡航以及快速转变航向等特性,使得它成为一种理想的无人飞行器,并被广泛地应用于除军事目的以外的诸如交通执法监控、海洋/环境监测以及航空摄影/测量等许多领域。在进行实际自主飞行试验时,由于小型无人直升机本身是一个极其复杂的非线性系统,加之实验环境的变化,因此具有很大的不确定性,稍有不慎,就可能造成飞机的失控甚至坠毁。为了保证实际飞行实验的安全,缩短开发周期,减少开发资金的投入,同时便于对飞行控制系统进行验证与调较,设计一套小型无人直升机的实时仿真系统便显得尤为迫切。详细介绍了基于Linux的小型无人直升机的实时仿真系统整个搭建过程。

  
1 小型无人直升机实时仿真系统结构

  1.1 无人直升机实时仿真系统构建

  在此以Raptor90无人直升机为实验平台,如图1所示。

  要构建一套切实可行的小型无人直升机仿真系统,需要对小型无人直升机实际飞行过程进行全面的建模。而其中对小型无人直升机系统的数学模型建模又是重中之重。这里主要利用MIT以及Aalborg大学研究人员提出的两套无人直升机的建模方法,结合各自的优点,充分考虑无人直升机在不同模态切换之间的模型差异,对无人直升机进行数学建模,并转换成可以实施的仿真系统模型。仿真系统主要包括直升机数学模型模块、飞行控制系统模块、数据融合模块、控制输入模块,人机图形界面模块以及数据通信模块等。其中直升机数学模型模块主要包括:直升机非线性模型、直升机线性化模型、阵风扰动模型、地形模型、传感器模型以及伺服驱动器模型。直升机非线性模型主要包括主旋翼、伺服小翼、尾旋翼、空气动力学模型以及6自由度刚体动力学模型。直升机线性化模块主要是在直升机非线性模型的基础上根据控制需要进行适当的简化,以便用来对线性控制器的性能进行检验。阵风扰动模型主要用来对小型无人直升机在实际飞行环境中的阵风进行模拟。地形模型主要考虑直升机在起飞和降落过程中与地面之间的相互作用。这当中涉及到地面与桨叶间的涡流效应,对其建模非常复杂,故这里暂时不考虑。传感器模型主要包括GPS定位模型、IMu测量模型和声纳测距模型。伺服驱动模型主要模拟将伺服板接收到的输入信号转换为伺服电机的转动并最终转换成机械动作后直接作用于旋翼的过程。飞行控制系统模块指利用设计的控制算法对直升机进行自主飞行控制。数据融合模块主要指利用卡尔曼滤波算法对各个传感器测量到的数据进行融合计算。控制输入模块主要用于直升机自主飞行时对其飞行状态进行调校。人机图形界面能生动实时地再现直升机的仿真效果。经过以上分析,可以得到小型无人直升机仿真系统的结构图如图2所示。

  1.2 图形界面软件工具简介

  这里的无人机仿真系统是以Linux操作系统为开发平台,以FLTK(Fast Light Tool Kit)图形用户界面工具箱实现人机界面显示,并用Mesa/C)penGL实现飞行过程的实时三维动态仿真。

  FLTK是一个用++编写的图形界面开发工具。FLTK在具有基本的GUI功能之外,还拥有一些特殊的功能,比如跨平台、内置OpenGL功能、尺寸更小等。FLTK使用Fl-Gl-Window这个类将OpenGL的基本功能囊括其中,开发时只要在Fl-Gl-window的draw()里glbegin/glend即可。无人直升机仿真系统的人机界面需要显示直升机3D实时飞行状态,这就需要用到OpenGL这个标准的三维计算机图形接口。OpenGL由SGI公司开发,可以在不同的平台如windows 95,windows NT,Unix,Linux,Mac()s,()s/2等之间进行移植。然而C)penGL不是自由软件,它的版权、商标(OpenGL这个名字)都归SGI公司所有。在Linux下用Mesa来取代OpenGL。Mesa提供与OpenGL几乎完全一致的接口,并且Mesa是遵循GPL协议的自由软件,使得它对新硬件的支持度等方面甚至超过OpenGL。

  2 仿真系统程序模块编写

  仿真系统程序模块主要包括模块直升机数学模型-模块、控制输入模块、数据融合模、通信模块、飞行控制系统模块以及人机图形界面模块。下面主要对直升机数学模型模块、控制输入模块、通信模块以及人机图形界面模块进行代码编写。

  2.1 直升机数学模型模块

  首先用类封装各个子模型的主要属性,主要包括主旋翼子模型、伺服小翼子模型、尾旋翼子模型,阵风扰动子模型以及伺服驱动子模型等;然后再把这些子模型封装在一个直升机的类Heli中,看成直升机类的类成员变量;再为直升机类增加适当的成员函数,来完成各子模型的实际功能,这样就构成了直升机整体。之后可以利用此类进行实例的定义及使用。

接下来便可以根据上面的Heli类来代入Rator90直升

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top