当前位置: 首页 > article >正文

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

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.010.0  0.00720.0  0.01230.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)。第一次与开发者团队距离这么近,就当是激励啦!

http://www.lryc.cn/news/2413833.html

相关文章:

  • WakeLock保持后台唤醒状态
  • js disabled属性的添加与删除
  • USACO1.4 母亲的牛奶 Mother's Milk
  • Reflect中MethodInfo使用方法
  • MyEclipse 8.0 M1 下载 (Standard and Pro Editions)
  • 本地连接的ip地址 子网掩码 默认网关 还有dns服务器地址怎么设置? (转自网易博客)
  • OA项目之我的审批(查询会议签字)
  • nodejs 使用async进行BT吧最新电影数据爬取
  • FLASH常见问题
  • C/C++《计算思维综合实践I》参考选题(84题)[2024-05-22]
  • 个人面试总结暨2020年终总结
  • 聊一聊go的单元测试(goconvey、gomonkey、gomock、ginkgo)
  • 乐Pad A1拆机全程
  • 小周恋爱日记网站
  • 恐龙机器人钢索恐龙形态_机器恐龙铁渣2.0:P1S的钢索终于有伴了
  • 如何查找和注册已备案过期域名
  • 【纯转】Div+CSS经典速成教程。
  • 一文实现nnUNet v2 分割肾脏肿瘤数据集KiTS19
  • win篇--winserver2008R2系统自动更新报错:代码:80092004
  • 火狐与IE兼容性总结(待整理,代码有点乱)
  • MDK常用快捷键和操作
  • 企业竞争竞争情报系统的流程整合
  • 天天酷跑刷钻石辅助下载 最新无异常攻略
  • vs2005 创建动态库及其调用方法
  • CDLINUX U盘安装教程
  • 图像处理入门教程
  • 我的百度blog
  • ctfshow web176-? 的waf(方便对题目差异)
  • 获取屏幕宽度_手机屏幕的那些门道,一文看懂!
  • 未来三年的移动互联网创业----创新工场创始合伙人汪华 在移动开发者大会上的演讲