首页 > 其他分享 >飞机基础知识一 1.3二维平面飞机运动学模型

飞机基础知识一 1.3二维平面飞机运动学模型

时间:2023-03-25 16:12:44浏览次数:49  
标签:飞机 init 1.3 list 运动学 state plt velocity theta

飞机基础知识一 1.3二维平面飞机运动学模型

目录

运动学方程

在二维平面上

将飞机视为一个质点

\[\begin{aligned} & \frac{d x}{d t}=v \cos \psi \\ & \frac{d y}{d t}=v \sin \psi \\ & \frac{d v}{d t}= a \\ & \frac{d \psi}{d t}= \omega \\ \end{aligned} \]

状态量为 位置 x ,y , 速率 v 速度与x轴的夹角 \(\theta\)

控制量为 加速度大小 \(a\) 和 角加速度大小 \(\omega\)

程序实现

给定初始状态

二维空间坐标值、飞行速率、与x轴夹角

\[x,y,v,\theta \]

state = [x,y,v,theta]

输入 : 控制量 加速度 和 角加速度

\[a, \omega \]

control = [a , moega]

代码返回: 下一时间(一个仿真步长)的状态量

完整代码

# -*- coding: utf-8 -*-

"""
@author     : zuti
@software   : PyCharm
@file       : 2_run_func.py
@time       : 2023/3/25 14:58
@desc       :

"""

import matplotlib.pyplot as plt
import numpy as np



plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams.update({'font.size': 12})

# 初始姿态
init_velocity, init_theta  = 100., np.pi/2
init_x, init_y = 0., 0.  # 初始位置

# todo 两个控制量
a = 5.  #单位  m/s2
omega = 1   #单位 rad/s2

state = [init_x, init_y,  init_velocity, init_theta]
control = [a,omega]

time = 1  # 秒 总时间
n = 10  # 仿真步数
t = np.linspace(0, time, n)  # 仿真步长

def update_position(state, control, time=1, n=100):
    """

    :param state:  初始状态
    :param control: 控制量
    :param time:   仿真时长
    :param n: 仿真步数
    :return:
    """
    t = np.linspace(0, time, n)  # 仿真步长
    dt = t[1] - t[0]
    state_list = np.zeros((n, 4))  # 轨迹长度
    state_list[0] = state  # 轨迹列表第一个元素为初始状态
    x,y,velocity, theta = state_list[0]

    for k in range(1, n):

        a  =   control[0]
        omega = control[1]

        velocity = velocity +   a * dt
        theta= theta+ omega * dt


        dx = velocity * np.cos(theta) * dt
        dy = velocity * np.sin(theta) * dt


        x = x + dx
        state_list[k, 0] = x
        y = y + dy
        state_list[k, 1] = y


        state_list[k, 2] = velocity
        state_list[k, 3] =  theta

    return state_list

#测试运动学方程
state_list = update_position(state,control)
print(f'轨迹 {state_list}')
#绘制图像
fig = plt.figure()
ax1 = fig.add_subplot(221)
ax1.plot(state_list[:, 0], state_list[:, 1])
ax1.set_title('trajectory 轨迹')
ax1.set_xlabel('X')
ax1.set_ylabel('Y')


ax2 = fig.add_subplot(222)
ax2.plot(state_list[:,2])
ax2.set_title('velocity 速度')


ax3 = fig.add_subplot(223)
ax3.plot(state_list[:,3])
ax3.set_title('theta  航向角')

#plt.savefig('test.jpg')
plt.show()

效果

image-20230325155050410

标签:飞机,init,1.3,list,运动学,state,plt,velocity,theta
From: https://www.cnblogs.com/zuti666/p/17254930.html

相关文章

  • Walkthrough-KIOPTRIX LEVEL1.3
    0x01环境靶机地址:https://www.vulnhub.com/entry/kioptrix-level-13-4,25下载下来后就只有一块硬盘vmdk需要新建一个MS-DOS机器,并把硬盘指定为靶机的vmdk修改内存大......
  • Windows 10 2004 (Updated 2020-07-24 v19041.388)
    Windows10商业版(含教育版、企业版、专业版、专业教育版、专业工作站版)SHA1:77C83FF5329A5685649DA8A2D0936C045A0B25CAed2k://|file|cn_windows_10_business_editions_......
  • 全新达芬奇软件下载18.1.3中文版!一键安装,永久使用!
    今天给大家分享的是DaVinciResolve18.1.3。达芬奇是一款在同一个软件工具中,将剪辑、调色、视觉特效、动态图形和音频后期制作融于一身的解决方案!它采用美观新颖的界面设......
  • C4D 2023.1.3最新版本一键安装永久使用!
    今天给大家带来的是最新版本MAXONCinema4DC4D2023.1.3安装包下载,支持电脑系统Win和Mac!Cinema4D2023为所有Cinema4D用户带来了出色的功能,并整合了整个Maxon家族的......
  • 飞机的三自由度方程
    飞机的三自由度方程目录飞机的三自由度方程参考运动学和动力学方程1地面惯性坐标系下的三维空间运动学方程程序实现完整代码效果参考python实现飞行控制仿真(二)——三......
  • Deepin 安装MongoDB Compass 1.35.0
    deepin软件商店版本太低,从官网下载一个最新版本,手动安装分享一下安装过程MongoDBCompass下载地址使用deepin自带的软件包安装器,选择文件安装即可。由于无法指定目......
  • 1.1.3操作系统的发展与分类(多道批处理 单道批处理系统 分时操作系统 实时操作系统)
    目录​​1.知识总览​​​​2.手工操作阶段​​​​3.单道批处理系统​​​​4.多道批处理系统​​​​5.多道批处理系统和单道批处理系统比较​​​​6.分时操作系统​​​......
  • 飞机客户数据分析预测
    代码一:读取数据importpandasaspddatafile='E:\\code\\PythonCode\\datas\\air_data.csv'resultfile='E:\\code\\PythonCode\\datas\\explore.csv'data=pd.read_......
  • OpenGL入门1.3:着色器 GLSL
     前言#经过之前一段时间的学习(渲染管线简介)我们已经知道了着色器(Shader)是运行在GPU上的程序,这些小程序为图形渲染管线的某个特定部分而运行,着色器只是一种把输入转化......
  • 泰勒1.3 A - B / C - D前后不能抵消的最低次幂
    当不知道要化到第几项,使得前后不能抵消的最低次幂......