当前位置: 首页 > 工具软件 > jsbsim > 使用案例 >

JSBSim学习笔记(1)——简介

丌官和泰
2023-12-01

JSBSim是一款开源的飞行动力学(FDM)软件库,能够用于飞行器的飞行力学建模和模拟。JSBSim 函数库已经被嵌入到 FlightGear 和 OpenEaagles 这些飞行模拟的软件包中,也能够以独立运行的方式被批处理工具调用。1996年,JSBSim开始被开发和使用,目前已经能够在大多数平台上运行,包括Linux、 Mac和 Windows。JSBSim由C++编写,采用XML进行文件配置。

了解JSBSim

1996年,JSBSim被构想成为一个轻量级、数据驱动、非线性、六自由度(6DoF)的批处理模拟程序,旨在为飞机的飞行与控制提供建模方法。从最早的版本开始,JSBSim就得益与开源的开发环境,它的成长伴随着大量用户的建言献策,也被其他大型、全功能的飞行模拟软件所采用。现今在工业和学术界,JSBSim成为一个采用批处理方式的模拟工具,被广泛研究和应用。

调用方法

下面一个简单的例子说明JSBSim的应用,代码展示了JSBSim是如何被一个小程序调用的。

#include <FGFDMExec.h>

int main(int argc, char **argv)
{
  JSBSim::FGFDMExec FDMExec;
  bool result = true;
  FDMExec.LoadScript(argv[1]);
  while (result) result = FDMExec.Run();
}

把上面代码与JSBSim库一起进行编译侯,程序就能够调用运行JSBSim了,输入条件只有飞机的配置文件、初始化文件和配置文件。这些文件都是由 XML(eXtensible Markup Language)语言定义,JSBSim可能是第一个采用 XML 来描述飞机的飞行动力模拟系统。以下是一个关于气动力定义的例子:

<function name="aero/coefficient/CDDf">
  <product>
    <property>aero/qbar-area</property>
    <table>
      <independentVar>fcs/flap-pos-deg</independentVar>
      <tableData>
          0.0  0.0
         10.0  0.007
         20.0  0.012
         30.0  0.018
      </tableData>
    </table>
  </product>
</function>

输入输出

当JSBSim独立运行的时候,只需要提供一个脚本文件即可,提供该脚本向JSBSim提供控制输入等信息。

当飞机配置文件含有输入接口时,用户可以通过网络与JSBSim通信。通过网络接口,JSBSim内部的参数可以被读取和设置,仿真系统也可以被暂停和恢复。网络通信的特征在实时仿真方面是最重要的功能。JSBSim源代码中自带的独立运行例程都是支持运行软实时功能的。

JSBSim也可以直接向窗口、文件或插口输出格式化的数据组。JSBSim能够同时向多个通道进行输出,每个通道都可以包含数组组或者是特定的参数,能够以任意频率向文件和插口进行数据输出。JSBSim自带了绘图工具 gnuplot,能够将输出的数据绘制成 PDF 格式的图片。

飞行控制特性

飞行控制系统或者自动驾驶仪能够作为独立的模块被JSBSim调用。飞行控制套件包含:滤波器、条件转换器、求和、传感器、增益(变化或静态)等。另外,还有一个可以用户自定义的函数模块。

其他模块

为实现飞行模拟,JSBSim还需要其他一些常用的模块,列举如下:

  • 运动方程
  • 气动力
  • 推进器
  • 可扩展性

参考阅读

  1. JSBSim 官方网站
  2. JSBSim wiki
  3. JSBSim 参考手册
  4. FlightGear wiki

作为下一步工作的主要内容,飞行模拟的学习终究还是要开展的。同样,学习笔记起到了督导的作用,希望能够尽快入门飞行力学,并逐步开展研究性的工作吧。在翻阅网络资料时有一个惊人的发现——JSBSim Commander的作者居然是笔者的老师兼朋友(Matthew Gong)。第一次与开发者团队距离这么近,就当是激励啦!

 类似资料: