当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于Linux的小型无人直升机实时仿真系统构建

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

2 仿真系统程序模块编写
   
仿真系统程序模块主要包括模块直升机数学模型-模块、控制输入模块、数据融合模、通信模块、飞行控制系统模块以及人机图形界面模块。下面主要对直升机数学模型模块、控制输入模块、通信模块以及人机图形界面模块进行代码编写。
2.1 直升机数学模型模块
    首先用类封装各个子模型的主要属性,主要包括主旋翼子模型、伺服小翼子模型、尾旋翼子模型,阵风扰动子模型以及伺服驱动子模型等;然后再把这些子模型封装在一个直升机的类Heli中,看成直升机类的类成员变量;再为直升机类增加适当的成员函数,来完成各子模型的实际功能,这样就构成了直升机整体。之后可以利用此类进行实例的定义及使用。

   
    接下来便可以根据上面的Heli类来代入Rator90直升机的实际参数。
2.2 控制输入模块
   
在此选择Logitech EXTREME 3D PRO JOYSTIC作为飞行控制输入遥杆。首先,需要将遥杆的驱动程序挂载进内核。在/etc/rc.10cal文件中添加如下语句:

    modprobe/lib/modules/2.6.1 1/kernel/drivers/input/joydev.o
    即可在每次启动内核时自动加载摇杆驱动模块并检查与其他模块的属性相依。
    控制器成功挂载进内核之后,利用几个主要数据读取函数对遥杆的输人数据进行读取:

   
    然后便可通过socket通信模块,把数据转发到仿真平台主程序上,再由主程序处理分配到各个终端。
2.3 通信模块
   
该仿真系统主要采用Socket(套接字)网络接口编程技术来实现各个模块之间的数据交换,即进程间的通信。Socket主要有2种,使用TCP(传输控制协议)协议的流式Socket通信和使用UDP(用户数据报)协议的数据报Socket通信。TCP协议提供面向连接的、提供端到端检查与纠错全双工字节流传输。UDP协议是非连接的,可提供高速的传输服务,但不提供可靠的传输服务。该仿真程序使用UDP数据报协议,因是在本机内部进行通信,并且一个端口可以同时接收来自几个端口的信息,无疑提高了效率。对通信双方进行类封装,建立基于UDP网络通信的Server和Client类。主要实现代码如下:

    [!--empirenews.page--]
2.4 人机图形界面模块
   
图形界面是最能体现仿真效果的部分。这里采用Linux系统下的FLTK和OpenGL/Mesa图形函数库进行图形界面程序开发,主要代码如下:



3 仿真系统运行结果分析
   
对仿真系统所有模块的源文件建立Makefile文件,以便今后程序的修改与调试。用Linux下的gcc编译器编译链接,生成各个模块的可执行文件。整个仿真系统运行如下。
    图3为直升机运行功能面板。可以联合手柄的按键,设置各个不同的功能键。

    图4为直升机3D运行界面以及状态面板。当执行悬停控制程序时,仿真程序会根据使预先设定好的参数,先进行垂直起飞,再飞向目标位置,然后在目标位置上进行定点悬停。同时可以从直升机状态面板上,很直观地看到直升机飞行姿态的变化。

4 结 语
    详细介绍了小型无人直升机仿真系统的构建。整个仿真系统是在Linux上搭建的。仿真系统运行结果很好地再现了直升机3D飞行过程,垂直起降以及定点悬停等。整个仿真系统大大缩短了研究周期,减少了资金的投入,并为接下来飞行控制系统的设计与验证提供了良好的基础。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

为了满足日益增长的数据处理需求,铁威马NAS推出了全新的性能巅峰2024年旗舰之作F4-424 Pro,并搭载了最新的操作系统--TOS 6。这款高效办公神器的问世,无疑将为企业和专业人士带来前所未有的便捷与效率。

关键字: 存储 Linux 服务器

双系统将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对双系统的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 双系统 Windows Linux

安装Linux操作系统并不复杂,下面是一个大致的步骤指南,以帮助您完成安装。1. 下载Linux发行版:首先,您需要从Linux发行版官方网站下载最新的ISO镜像文件。

关键字: Linux 操作系统 ISO镜像

计算机是由一堆硬件组成的,为了有限的控制这些硬件资源,于是就有了操作系统的产生,操作系统是软件子系统的一部分,是硬件基础上的第一层软件。

关键字: Linux 操作系统 计算机

Linux操作系统是一套免费使用和自由传播的类Unix操作系统,通常被称为GNU/Linux。它是由林纳斯·托瓦兹在1991年首次发布的,并基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Lin...

关键字: Linux 操作系统

所谓进程间通信就是在不同进程之间传播或交换信息,它是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息;还可以让一个程序能够在同一时间里处理许多用户的需求。

关键字: Linux 进程通信 编程接口

串口通信作为一种最传统的通信方式,在工业自动化、通讯、控制等领域得到广泛使用。

关键字: Linux 串口通信 通讯

2023年11月16日: MikroElektronika(MIKROE) ,作为一家通过提供基于成熟标准的创新式硬软件产品来大幅缩短开发时间的嵌入式解决方案公司,今天宣布推出一款基于单线设备的软硬件开源解决方案Cli...

关键字: 嵌入式 Linux 操作系统

Linux是一种免费使用和自由传播的类Unix操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布。它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CP...

关键字: Linux 操作系统

本文中,小编将对嵌入式予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: 嵌入式 Linux
关闭
关闭