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:
--help  returns this message
--version  returns the version number
--outputlogfile=  sets (overrides) the name of the data output file
--logdirectivefile=  specifies (overrides) the name of the data logging directives file
--root=  specifies the JSBSim root directory (where aircraft/, engine/, etc. reside)
--aircraft=  specifies the name of the aircraft to be modeled
--script=  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=  specifies an initilization file
--catalog specifies that all properties for this aircraft model should be printed
--property= e.g. --property=aero/qbar-psf=3.4
--end-time=

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的运行,只是学习的开始。后续内容则分为《用户手册》和《编程手册》两大部分,前着侧重于是使用方面的模块分解介绍,后者侧重于源代码的组织形式。

你可能感兴趣的:(JSBSim学习笔记(2)——快速入门)