JSBSim学习笔记(2)——快速入门

和大多数开源项目相同,JSBSim 的学习将主要已手册为载体,进一步的深入研究则需要了解代码结构并尝试二次开发。本章以快速入门的形式,帮助读者迅速地对 JSBSim 的工作流程有所了解。内容包含源代码的安装、试运行和综述两部分组成。系列学习笔记的编译和测试平台是 MAC OSX-10.9,JSBSim版本为1.0。

编译安装 JSBSim

获取源代码

JSBSim 的官方网站中提供了源代码和可执行程序两种下载资源,版本的更新属于不定时,当开发者团队觉得代码包稳定并适于发布就进行更新。下载链接如下

http://sourceforge.net/project/showfiles.php?group_id=19399

当然,在 GitHub 上也有部分研究人员提供的镜像。

编译源代码

JSBSim 的编译采用标准的 GNU 工具,例如 automake、autoconf、g++、make等(网络中也存在使用于 Visual C++或者其他windows平台的发布版)。首先将下载的代码解压,并进入根目录。

tar xvfz JSBSim-1.0.tar.gz
cd JSBSim-1.0

源代码编译过程主要参考源代码中的 README 文件,在进行编译前首先确认已经安装上述标准 GNU 工具(其中g++ 和 make 属于常见自带工具,但是automake 和 autoconf 需要安装)。编译过程按照配置和安装两部分,输入一下代码即可:

./autogen.sh [--no-configure]
./configure
make
./autogen --enable-libraries [--disable-static] [--enable-shared]
make install

若一切编译顺利,可以在 /src 文件夹下面发现一个名称为 JSBSim 的可执行文件。为便于后续的使用,建议将该可执行文件的目录添加到环境变量中。

运行案例确认安装

编译结束后,运行一个案例确认 JSBSim 已经安装成功。在 JSBSim 的根目录下运行自带算例,输入一下代码,演示飞机 C172 的起飞过程。

src/JSBSim --script=scripts/c1723.xml > JSBSim.log

如果已经将 JSBSim 可执行程序添加到环境变量,则可以简便地输入:

JSBSim --script=scripts/c1723.xml > JSBSim.log

代码运行结束后,会在目录下面生成两个新文件:

  • JSBSim.log: 运行日志,记录了程序运行过程中命令行窗口的反馈信息,主要用于调试;
  • JSBout172B.csv: 计算得到的飞行结果,记录了飞机的姿态、加速度等运动参量。

启动代码中,JSBSim 为可执行程序;后续参数 --script 为输入参数,其中定义了飞机及其动作过程,采用 xml 扩展标记语言的格式,也是后续学习和使用的重点内容。直接在命令窗口输入 JSBSim 得到程序运行的参数格式表如下:

$ JSBSim
JSBSim version 1.0 Dec  5 2015 17:21:55

Usage: jsbsim <options>

options:
--help  returns this message
--version  returns the version number
--outputlogfile=<filename>  sets (overrides) the name of the data output file
--logdirectivefile=<filename>  specifies (overrides) the name of the data logging directives file
--root=<path>  specifies the JSBSim root directory (where aircraft/, engine/, etc. reside)
--aircraft=<filename>  specifies the name of the aircraft to be modeled
--script=<filename>  specifies a script to run
--realtime  specifies to run in actual real world time
--nice  specifies to run at lower CPU usage
--suspend  specifies to suspend the simulation after initialization
--initfile=<filename>  specifies an initilization file
--catalog specifies that all properties for this aircraft model should be printed
--property=<property_name=property_value> e.g. --property=aero/qbar-psf=3.4
--end-time=<time (double)> specifies the sim end time

NOTE: There can be no spaces around the = sign when
    an option is followed by a filename

JSBSim 概览

从编程的角度而言,JSBSim 是一个大部分采用C++语言编写(当然也存在一些C语言子程序)的程序代码集合。一部分C++类组成了 JSBSim 模型的物理实例,例如大气、飞行控制系统、发动机等;一部分类组成了数学结构或概念,例如运动方程、矩阵、四元素和向量;另一部分类则管理着其他的对象。总而言之,JSBSim程序能够考虑控制输入,计算由控制和环境引起的力和力距,进而在离散的时间步内推进飞行器的状态(速度、方位、位置等)。

JSBSim已经在多种平台上实现编译和运行,包括windows、Linux、Mac OSX,甚至是来自Silicon Graphics的 IRIX 操作系统。自由软件 GNU g++能够很方便的编译 JSBSim,其他来自Borland和Microsoft的编译器也能够实现代码编译运行。更多详细的编译方法可以参考《编程手册》。

对于终端用户(例如进行研究的学生)而言,JSBSim 可以被视作一类以XML文件为输入的“黑箱”。输入的XML文件包含飞行器和发动机的描述、脚本等。当JSBSim加载输入文件后,XML文件既可以作为模拟器(例如,FlightGear、OpenEaagles)的一部分,实时地导引JSBSim对飞行器进行建模,也能够以批处理的形式更快地进行模拟。JSBSim每次运行都会得到文件输出,这些结果文件记录了被研究飞行器的性能和动力学参数。

从软件集成的角度(例如将JSBSim集成到更大的模拟框架内)而言,JSBSim是一个可以被调用的库函数,而且库函数能够捕获输入信息(例如自动驾驶仪的飞控参数),并返回输出结果(任意时刻飞行器的状态)。

JSBSim的用户和功能

JSBSim 飞行动力学模型(FDM)库函数旨在做到简单和易于理解,设计的使用人群是高年级的航空工程类学生。由于其配置方法简单,JSBSim在工业届的作用也得到了多方面的印证。JSBSim已经被嵌入到更大级别、全功能的飞行模拟器(例如,FlightGear、Outerra、OpenEaagles等)中,以批处理仿真的形式在工业和学术界被广泛应用。更多JSBSim应用的案例如下:

  • Aerocross Echo Hawk: 一款无人机半实物仿真
  • DuPont Aerospace Company: 与Matlab配合,被用于该公司的半实物仿真系统
  • MITRE Air Traffic: 作为航空管理系统中的6DoF仿真模块
  • US Dept of Transportation: 美国交通部驾驶仪模拟系统的6DoF内核
  • Univ of Naples: 意大利那不勒斯大学飞行研究的工具

小结

本节是参考手册中快速入门和概述两章的综合,主要帮助读者快速了解并感受JSBSim的运行,只是学习的开始。后续内容则分为《用户手册》和《编程手册》两大部分,前着侧重于是使用方面的模块分解介绍,后者侧重于源代码的组织形式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,495评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,050评论 25 707
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,016评论 9 467
  • 今天网上各种晒军旅照片、视频,亲切如昨,忍不住回忆刚到部队带兵的情景。 军校刚毕业,正是上世纪90年...
    老愚_f704阅读 216评论 0 0
  • 我们公司是做医院项目的。有次去外地的一家医院出差,住在医院附近的一家小旅馆。旅馆的楼下有家蒸饺铺,铺子的主人是个老...
    老祝读书阅读 382评论 0 0