python实现飞行控制仿真(一)——PyFME(Python Flight Mechanics Engine)

2023-05-16

一、PyFME安装

【目前关于PyFME的介绍比较少,利用很长时间才摸索整理出来,如需转载请标注来源】

【虚拟环境文件和测试代码下载地址:https://download.csdn.net/download/weixin_40493501/12668803】

因为PyFME不是标准的第三方库,无法使用pip直接安装(目前pip直接安装的是0.1版本的),可以直接去GitHub网站下载源代码进行安装和使用,源码网址:https://github.com/AeroPython/PyFME

1、首先在pycharm中创建虚拟环境,创建过程参考https://blog.csdn.net/weixin_40493501/article/details/107632104

2、在虚拟环境中单独安装下载后的PyFME压缩包

首先解压,在pycharm的terminal窗口下转至解压的文件夹下依次运行:

python setup.py build

python setup.py install

 两条命令依次运行,不要同时运行,在运行第二条命令时等待时间会较长,因为虚拟环境中没有任何的第三方库,需要根据PyFME进行逐一配置

二、测试

# -*- coding: UTF-8 -*-
# 版本:
# 开发时间:2020/7/28 19:46
# 用户:
# Function: 

import matplotlib.pyplot as plt

from pyfme.aircrafts import Cessna172
from pyfme.environment.atmosphere import ISA1976
from pyfme.environment.wind import NoWind
from pyfme.environment.gravity import VerticalConstant
from pyfme.environment.environment import Environment
from pyfme.utils.trimmer import steady_state_trim
from pyfme.models.state.position import EarthPosition
from pyfme.models import EulerFlatEarth
from pyfme.utils.input_generator import Constant
from pyfme.simulator import Simulation




aircraft = Cessna172()
print(f"Aircraft mass: {aircraft.mass} kg")
print(f"Aircraft inertia tensor: \n {aircraft.inertia} kg/m²")
print(f"forces: {aircraft.total_forces} N")
print(f"moments: {aircraft.total_moments} N·m")

atmosphere = ISA1976()
gravity = VerticalConstant()
wind = NoWind()
environment = Environment(atmosphere, gravity, wind)


pos = EarthPosition(x=0, y=0, height=1000)
psi = 0.5  # rad
TAS = 45  # m/s
controls0 = {'delta_elevator': 0, 'delta_aileron': 0, 'delta_rudder': 0, 'delta_t': 0.5}

trimmed_state, trimmed_controls = steady_state_trim(
    aircraft,
    environment,
    pos,
    psi,
    TAS,
    controls0
)

environment.update(trimmed_state)

forces, moments = aircraft.calculate_forces_and_moments(trimmed_state, environment, controls0)

system = EulerFlatEarth(t0=0, full_state=trimmed_state)


controls = controls = {
    'delta_elevator': Constant(trimmed_controls['delta_elevator']),
    'delta_aileron': Constant(trimmed_controls['delta_aileron']),
    'delta_rudder': Constant(trimmed_controls['delta_rudder']),
    'delta_t': Constant(trimmed_controls['delta_t'])
}

sim = Simulation(aircraft, system, environment, controls)

results = sim.propagate(15)

kwargs = {'marker': '.',
          'subplots': True,
          'sharex': True,
          'figsize': (12, 6)}

results.plot(y=['x_earth', 'y_earth', 'height'], **kwargs);

results.plot(y=['psi', 'theta', 'phi'], **kwargs);

results.plot(y=['v_north', 'v_east', 'v_down'], **kwargs);

results.plot(y=['p', 'q', 'r'], **kwargs);

results.plot(y=['alpha', 'beta', 'TAS'], **kwargs);

results.plot(y=['Fx', 'Fy', 'Fz'], **kwargs);

results.plot(y=['Mx', 'My', 'Mz'], **kwargs);

results.plot(y=['elevator', 'aileron', 'rudder', 'thrust'], **kwargs);

plt.show()

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python实现飞行控制仿真(一)——PyFME(Python Flight Mechanics Engine) 的相关文章

随机推荐

  • DAY21 - 抽象类与接口

    第5章 抽象类 5 1 基本介绍 我们写了一个最简单的抽象类 5 2 抽象类的具体的细节 5 3 抽象类的最佳实践 代码 5 4 抽象方法的练习题 说明 抽象类可以没有抽象方法 xff0c 而且 xff0c 如果抽象类有一个静态方法 实现
  • OSError: [WinError 126] 找不到指定的模块。【专治疑难杂症】

    OSError WinError 126 找不到指定的模块 Error loading D xxxxxxx lib site packages torch lib asmjit dll or one of its dependencies
  • 接地电阻的测试要求

    接地电阻的测试要求 交流工作接地电阻不应大于4 安全工作接地电阻不应大于4 直流工作接地电阻应按计算机系统具体要求确定防雷保护地接地电阻不应大于10 对于屏蔽系统若采用联合接地 xff0c 其接地电阻不应大于1 get了吗 xff1f 小七
  • http请求状态码表示的意义

    http请求状态码表示的意义 1 4开头的http状态码表示请求出错 400服务器不理解请求的语法 401请求要求身份验证 对于需要登录的网页 xff0c 服务器可能返回此响应 403服务器拒绝请求 404服务器找不到请求的网页 405禁用
  • word里面插入图片,图片格式是嵌入型,为什么图片会隐藏在文字下面?(比网上那些治标不治本的方法管用的多,亲测有效,希望顶上去让有这个问题的所有人看到)

    word文档里面插入图片 xff0c 图片格式是嵌入型 xff0c 为什么图片会隐藏在文字下面 xff1f 话不多说 xff0c 直奔主题 xff1a 我们在写文档的时候回遇到一个问题 xff0c 当我们在文档中插入一张图片的时候 xff0
  • 单片机蜂鸣器实验

    单片机蜂鸣器实验 蜂鸣器 xff1a 是一种一体化结构的电子讯响器 xff0c 采用直流电压供电 xff0c 广泛应用于计算机 打印机 复印机 报警器 电子玩具 汽车电子设备 电话机 定时器等电子产品中作发声器件 蜂鸣器主要分为压电式蜂鸣器
  • Python网络爬虫(五)——获取代理IP

    设置代理IP的原因 如果我们使用Python爬虫爬取一个网站时 xff0c 并且需要频繁访问该网站 假如一个网站它会检测某一段时间某个IP的访问次数 xff0c 如果访问次数过多 xff0c 它会禁止你的访问 所以你可以设置一些代理服务器来
  • ros安装 catkin_make失败

    错误如下 xff1a 在ros安装时 xff0c 运行到建立工作空间 xff0c 然后编译catkin make出错 首先一个是python 版本兼容性问题 解决办法 检查一下Python的版本 xff1a python V 检查一下cat
  • Ubuntu---mysql出现ERROR1698(28000):Access denied for user root@localhost错误解决方法

    查看mysql版本 xff1a 安装完成后 xff0c 登录mysql的时候就出现了如下错误 xff1a 因为安装的过程中没让设置密码 xff0c 可能密码为空 xff0c 但无论如何都进不去mysql 下面是处理过程 xff1a Step
  • 朱有鹏老师linux核心大讲堂---ARM裸机第十一部分 NandFlash和iNand学习笔记

    目录 1 NandFlash的接口 数据手册 xff1a K9F2G08 K9F4G08 2 NandFlash结构框图 3 Nandflash的结构 4 NandFlash常见操作以及流程分析 5 S5PV210的NandFlash控制器
  • 查看KerasTensor具体值

    之前碰到过一次这个问题 xff0c 一直没解决 xff0c 这次又又碰上了 xff0c 在模型采用Sequential xff08 xff09 方式定义的情况下 xff0c 找到了一个解决办法 xff0c 在此分享一下 xff08 如果有其
  • 面向深度学习系统的对抗样本攻击与防御

    研究生涯即将开始 xff0c 现在做的是对抗样本攻击与防御 xff0c 开始每天写博客 xff0c 记录一下自己的学习历程 1 对抗样本 尽管深度学习解决某些复杂问题的能力超出了人类水平 xff0c 但也面临多种安全性威胁 2013年 xf
  • VNC启动出错的处理汇总

    1 vncserver 1尝试启动VNC vncserver 1 2 ps进程并kill掉所有的PS span class token function ps span span class token parameter variable
  • LeetCode 24 螺旋矩阵

    螺旋矩阵 LeetCode 问题描述问题分析代码 问题描述 给定一个包含 m x n 个元素的矩阵 xff08 m 行 n 列 xff09 xff0c 请按照顺时针螺旋顺序 xff0c 返回矩阵中的所有元素 示例 1 输入 1 2 3 4
  • 黑苹果安装 戴尔灵越3568 驱动篇

    本教程主要适用于安装后驱动的安装和细节问题 xff0c 安装教程基本一样 xff0c 就没有介绍 xff0c 希望谅解 最近在公司电脑上装了黑苹果之后体验不错 xff0c 自己的本本上也装了一个 安装接近完美 xff0c 除wif不能驱动
  • ubuntu1804(或1604)换清华源(含其他源地址)

    将ubuntu的源换成国内源会大大提高更新速度 笔者习惯用清华源 xff0c 故此笔记就以清华源为准绳进行介绍 xff0c 为了利于大家使用 xff0c 同时也附上国内其他几个主要的源 备份源列表 终端输入 xff1a sudo cp et
  • moby、docker-ce与docker-ee

    原文链接 xff1a https blog csdn net yk20091201 article details 80016135 1 moby docker ce与docker ee 最早的时候docker就是一个开源项目 xff0c
  • mysql之 find_in_set()、INSTR()、in

    1 find in set 函数 xff1a 查询字段 str 在 strlist 中的位置 1 1 语法 FIND IN SET str strlist str xff1a 要查询的字符串 strlist xff1a 字段名 xff0c
  • Springboot项目搭建过程报错汇总

    1 SpringbootTest总是报 XXXX that could not be found span class token operator span span class token operator span span clas
  • python实现飞行控制仿真(一)——PyFME(Python Flight Mechanics Engine)

    一 PyFME安装 目前关于PyFME的介绍比较少 xff0c 利用很长时间才摸索整理出来 xff0c 如需转载请标注来源 虚拟环境文件和测试代码下载地址 xff1a https download csdn net download wei