python实现飞行控制仿真(二)——三自由度仿真
一、问题:利用python实现三自由度
【总结不对的地方请评论或私信我,谢谢!】
三自由度中简化的几个问题
1、3个控制量,(相比较6自由度中会使用4个控制量),三自由度中一般使用推力、升力和滚转角来控制,或使用其变形模式
2、三自由度中不考虑攻角和侧滑角,假设其为0,
3、速度方向和机体方向近似重合
二、求解过程
三自由度模型中主要包含速度、角度及其变化的模型,不包含力学和力矩关系方程。
上图方程中的x,y,z为惯性坐标系下的位置坐标,v为飞行器的速度,为飞行器轨迹的航迹角,(相对于惯性坐标系下的角度)
上图方程中主要涉及到速度以及角度的变化率及其与该方向的加速度的关系。
上图第一个式子代表推力和速度的关系,可以看成推力和阻力的合力对速度产生的影响,其方向为速度的方向,其中重力的一个分力也是阻力的作用,减掉重力加速度的一个分量
上图的第二个式子代表航迹倾角(俯仰角)的变化率与加速度的关系,为飞行器的过载,其方向为机顶的方向,如最上面的示意图所示,其作用可以理解为控制飞行器的俯仰角。
上图第三个式子中包含第三个控制量,即滚转角,控制飞行器转弯的角度。
三、代码实现
# -*- coding: UTF-8 -*-
# 版本:
# 开发时间:2020/8/3 23:14
# 用户:HDY
# Function: import numpy as np
from scipy.integrate import odeint
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['axes.unicode_minus']=False
rcParams['font.family'] = 'simhei'time = 10 #秒
n=100
t = np.linspace(0, time, n)
position = np.zeros((n,6))
dt = t[1]-t[0]velocity, gamma, fai_v = 260., 3.14/10., 0.
x,y,z = 0,0,0 # 初始位置#todo 三个控制量
control1 = 3.0
control2 = 2.
control3 = 3.14/12position[0,0] = x ; position[0,1] = y; position[0,2] = z
position[0, 3] = velocity
position[0, 4] = gamma
position[0, 5] = fai_vfor k in range(1, n):tspan = [t[k - 1], t[k]]po = odeint(dmove2, (velocity, gamma, fai_v), tspan, args=([control1,control2,control3],))velocity, gamma, fai_v = po[1,:]dx = velocity * np.cos(gamma) * np.sin(fai_v) * dtdy = velocity * np.cos(gamma) * np.cos(fai_v) * dtdz = velocity * np.sin(gamma) * dtx = x + dx ; position[k,0] = xy = y + dy; position[k,1] = yz = z + dz; position[k,2] = zposition[k, 3] = velocityposition[k, 4] = gammaposition[k, 5] = fai_vfig = plt.figure()
ax = Axes3D(fig)
plt.title('trajectory')
ax.plot(position[:, 0], position[:, 1], position[:, 2])
plt.xlabel("X")
plt.ylabel("Y")
plt.figure(3)
plt.title(r'velocity 速度')
plt.plot(position[:, 3])plt.figure(4)
plt.title(r'theta 航迹倾角')
plt.plot(position[:, 4])plt.figure(5)
plt.title(r'fai_v 航向角')
plt.plot(position[:, 5])
plt.show()
各参数变化
def dmove2( x_input, t, control):g = 9.81 # 重力加速度velocity, gamma, fai = x_inputnx, nz, gunzhuan = controlvelocity_ = g * (nx - np.sin(gamma)) # # 米每秒gamma_ = (g / velocity) * (nz * np.cos(gunzhuan) - np.cos(gamma)) # 米每秒fai_ = g*nz*np.sin(gunzhuan) / (velocity * np.cos(gamma))return np.array([velocity_, gamma_, fai_])
python实现飞行控制仿真(二)——三自由度仿真相关推荐
- python实现飞行控制仿真(一)——PyFME(Python Flight Mechanics Engine)
一.PyFME安装 [目前关于PyFME的介绍比较少,利用很长时间才摸索整理出来,如需转载请标注来源] [虚拟环境文件和测试代码下载地址:https://download.csdn.net/downl ...
- 计算机仿真作业三,计算机仿真技术作业三.doc
计算机仿真技术作业三.doc 计算机仿真技术作业三 题目:三相桥式全控整流电路仿真 姓名: 班级: 学号: 计算机仿真技术作业三 题目:三相桥式全控整流电路仿真 利用simpowersystems建立 ...
- 基于ROS的PX4+Gazebo仿真——PX4一键起飞及飞行控制
一键起飞 参考及引用 1. CSDN博主「战争果子」的原创文章,遵循CC 4.0 BY-SA版权协议. 原文:https://blog.csdn.net/EnthusiasmZing/article/ ...
- 计算机应用虚拟仿真实验答案,虚拟仿真 实验教学+.ppt
一 二 三 虚拟仿真实验概述 虚拟仿真实验教学 虚拟仿真实验中心建设 一 二 三 虚拟仿真实验概述 虚拟仿真实验教学 虚拟仿真实验中心建设 随着计算机.互联网等先进技术的迅速发展和大面积普及推广,虚拟 ...
- 【ROS仿真实战】Gazebo仿真平台介绍及安装方法(一)
文章目录 前言 一.Gazebo简介 二.Gazebo仿真平台的基本概念 三.Gazebo仿真平台的安装方法 四.总结 前言 Gazebo仿真平台是一个广泛应用于机器人研发.测试和教育等领域的开源软件 ...
- 三自由度机械臂连续轨迹控制Simulink仿真
博客搬家到自己搭建的 主页(wonghaotian.com) 啦q(≧▽≦q),大家快来逛逛鸭! 提供完整文件下载(Click to SAVE) DEMO 控制要求 机械臂初始时刻姿态自行确定,经过5 ...
- 基于matlab的全阶观测器三自由度运动系统状态反馈控制系统的仿真
目录 一.理论基础 二.核心程序 三.仿真测试结果 作者ID :fpga和matlab CSDN主页:https://blog.csdn.net/ccsss22?type=blog 擅长技术: 1.无 ...
- 【rotors】多旋翼无人机仿真(三)——SE3控制
[rotors]多旋翼无人机仿真(一)--搭建rotors仿真环境 [rotors]多旋翼无人机仿真(二)--设置飞行轨迹 [rotors]多旋翼无人机仿真(三)--SE3控制 [rotors]多旋翼 ...
- python 机械臂控制_从零开始的ROS四轴机械臂控制-gazebo仿真控制
这是一个四轴器械臂练手项目,定为arm0.1版本,使用MG90s舵机来搭建一个四轴机械臂.arm0.1版本的目标是对带颜色的方块进行识别并在Gazebo中模拟出来. 以下是这个ROS四轴机械臂控制的目 ...
最新文章
- stm32l0的停止模式怎么唤醒_探索者 STM32F407 开发板资料连载第二十二章 待机唤醒实验
- 人工智能技术给教育行业带来哪些主要影响?
- C# WinForm 技巧十: 开发工具
- ML之xgboost:利用xgboost算法(sklearn+GridSearchCV)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
- 【IT资讯】Linux Kernel 5.8 正式版发布
- mysql获取查询策略语句_MySQL数据库查询性能优化策略
- 黑龙江对口学计算机上机,2009年黑龙江省职高对口升学计算机应用专业技能试卷十.doc...
- c++ opencv 识别车牌_python利用百度云接口实现车牌识别
- Listary 6 插件开发教程:使用 Javascript 开发
- L13 ansible 基础应用与常见模块
- uniapp 连接ibeacon beacon
- 盘点互联网招聘玩法:从垂直招聘到猎头平台到精准匹配
- Arduino库的接口:Ticker库
- Excel学习日记:L22-时间格式工龄与工时的计算
- IDEAD中如何使用scala
- Firefox配置阿里云DNS
- 【Excel神技】之 F4切换相对引用和绝对引用
- 视觉SLAM十四讲学习记录 第五讲
- Ubuntu(Linux)上安装微信(windows应用)
- 技术人员突然离职,如何接手他的项目?