基于Linux的小型无人直升机实时仿真系统构建
机的实际参数。
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类。主要实现代码如下:
2.4 人机图形界面模块
图形界面是最能体现仿真效果的部分。这里采用Linux系统下的FLTK和OpenGL/Mesa图形函数库进行图形界面程序开发,主要代码如下:
3 仿真系统运行结果分析
对仿真系统所有模块的源文件建立Makefile文件,以便今后程序的修改与调试。用Linux下的gcc编译器编译链接,生成各个模块的可执行文件。整个仿真系统运行如下。
图3为直升机运行功能面板。可以联合手柄的按键,设置各个不同的功能键。
图4为直升机3D运行界面以及状态面板。当执行悬停控制程序时,仿真程序会根据使预先设定好的参数,先进行垂直起飞,再飞向目标位置,然后在目标位置上进行定点悬停。同时可以从直升机状态面板上,很直观地看到直升机飞行姿态的变化。
4 结 语
详细介绍了小型无人直升机仿真系统的构建。整个仿真系统是在Linux上搭建的。仿真系统运行结果很好地再现了直升机3D飞行过程,垂直起降以及定点悬停等。整个仿真系统大大缩短了研究周期,减少了资金的投入,并为接下来飞行控制系统的设计与验证提供了良好的基础。
- 嵌入式软件系统测试中的仿真系统结构设计(01-13)
- 基于VxWorks操作系统的CompactPCI测试仿真系统(11-01)
- 基于Simulink的猝发通信系统数据链系统仿真及性能分析(06-05)
- 混合电动汽车能量流仿真系统设计与分析(03-13)
- 使用基于模型的设计进行早期验证和确认(01-25)
- 基于测试仪器技术及UML的模型验证集成测试(01-20)