JSBSim应用教程VisualStudio VS2019

6 篇文章 2 订阅
3 篇文章 0 订阅

JSBSim应用教程

如果想要使用JSBSim提供的动力学运动学模型作为项目的一部分,可参考此教程。本文编辑时间:2022/6

1.开发环境准备

  1. 本文开发环境为Visual Studio 2019,其他版本的应用步骤可能略有不同

  2. JSBSim的官方Github仓库为JSBSim-Team/jsbsim: An open source flight dynamics & control software library (github.com),下载master分支压缩包并解压或者使用git工具

    git clone https://github.com/JSBSim-Team/jsbsim.git
    
  3. 进入jsbsim文件夹,打开JSBsim.sln

2.编译项目生成静态库文件

  1. 推荐在Release配置下生成静态库文件,如果你需要在debug配置进行项目开发,流程是一致的,但是部分细节可能会有不同。点击项目->属性,在常规选项栏中,修改配置类型为静态库(.lib),点击应用,确定。

    在这里插入图片描述

  2. 点击本地Windows调试器开始生成项目。生成完成后,可能会自动跳出弹窗“无法启动程序JSBSim.lib”,点击确定即可。

  3. 这时进入jsbsim文件夹下的Release文件夹,即可看到JSBSim.lib文件,复制到你的工程文件夹内即可使用。

3.第一个测试程序

我们创建一个空项目(新建空白模板解决方案),来介绍下简单的应用流程,并测试确认上一步生成的静态库文件

  1. 将jsbsim文件夹下的aircraft、engine、scripts、systems、src文件夹拷贝至项目文件夹下,并将上一步生成的lib库文件拷贝到项目文件夹下。 src文件夹内为源代码,我们其实只需要其中的所有头文件,可将cpp文件删除,不影响项目(hpp文件不可删除)。其余文件夹为飞机模型等xml文件,如果你已经了解了xml文件的用途及用法,可以只将需要的模型的xml文件放入项目对应文件夹。

    在这里插入图片描述

  2. 进入解决方案,这里我们先链接库文件。

    • 法1:在项目->属性->链接器->输入->附加依赖项添加如下两项: ws2_32.lib、JSBSim.lib。点击确定、应用、确定。

      在这里插入图片描述

    • 法2,在代码中添加控制宏,参考后面步骤中的代码。

  3. 我们还需要配置包含目录。在项目->属性->VC++目录->包含目录中添加前文复制过来的src文件夹的路径

    在这里插入图片描述

  4. 创建一个main.cpp作为主程序,其中代码如下

    #include <FGFDMExec.h>//包含头文件,该头文件在src文件夹中,已在包含目录中配置。、
    #pragma comment(lib,"JSBSim.lib")//控制宏,代表链接该静态库
    #pragma comment(lib,"ws2_32.lib")//这个库是网络相关的库,JSB使用了该库,如果不链接会出现error lnk2001 __impxxxx: 无法解析的外部符号错误
    //如果在前文使用法1配置了链接器,则此处无需使用控制宏
    
    int main()
    {
      JSBSim::FGFDMExec FDMExec;//实例化
    
      FDMExec.SetEnginePath(SGPath(".\\engine"));//设置engine文件路径
      FDMExec.SetAircraftPath(SGPath(".\\aircraft"));//设置aircraft文件路径
      FDMExec.SetSystemsPath(SGPath(".\\systems"));//设置systems文件路径
        
      FDMExec.LoadScript(SGPath(".\\scripts\\c1723.xml"));//设置要载入的script文件路径,本文使用经典的c1723作为测试
    
      bool result = true;
    
      while (result) result = FDMExec.Run();//运行
        
      return 0;
    }
    

    上述代码中的路径使用的是相对路径,即按照如上文截图中的文件夹布置。如果你的项目文件夹布置与我不同,请修改路径,勿直接复制代码运行。

    4.全流程仿真

    该动力学模型最为知名的应用是FlightGear。经笔者测试,想要利用此动力学模型进行仿真,需要像使用FlightGear一样,了解一定的飞行器驾驶知识。JSBSim内置的FCS(FlightControlSystem飞行控制系统)接口主要是设置副翼、襟翼、升降舵、方向舵偏转、throttle、mixture等输入。上述输入显然都是针对固定翼类型的飞行器的,而如果是多旋翼无人机,我们主要通过控制电机转速来进行对应的操作。上述结论是基于笔者浅薄的知识储备和阅读代码少量测试后得出的,欢迎交流指正。由于笔者并不会驾驶飞行器,因此下文仅介绍为模型提供输入以及从模型获取输出的流程,实际应用需要读者自行测试。

    4.1加载模型

    在第三节的测试程序中我们只是加载了一个script脚本文件,如果我们是模式化的应用JSBSim,那可以选择为其编写脚本文件然后采用脚本文件进行测试。但我们一般是需要实时动态仿真的,因此静态的脚本文件不太符合我们的需求。我们需要使用加载模型的方法,将xml文档中描述的飞行器载入程序之中。该文档位于aircraft文件夹中,飞机使用的引擎可能在相应的飞机文件夹内,也可能在engine文件夹内,因此不要忘记第三章中配置文件夹路径的操作。

    string AircraftName = "c172x";//指定飞行器名称
    FDMExec->LoadModel(AircraftName);//加载aircraft文件夹内名为c172x的飞行器模型
    

    4.2初始化

    我们需要为飞行器配置其初始状态的参数,如经纬位置、高度、初始速度、姿态角等一系列信息。初始化参数有两种方法,一种为读取xml文档内的配置信息;另一种为通过程序设置,流程如下。
    未完待续

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值