python實現飛行控制仿真(二)——三自由度仿真_python 飛行仿真_風雨瀟瀟一書生的博客-CSDN博客
[基于深度強化學習的無人機對戰戰術決策的研究 ](D:\CNKI E-Study\18761606609\Literature\TempRead\基于深度強化學習的無人機對戰戰術決策的研究_胡真財.caj)
將無人機簡化為三維空間內的一個質點,為了將研究重點聚焦于格斗決策方法上的研究,本文對無人機的飛行模型設計做出如下四點假設: (1)無人機在飛行過程中不考慮空氣阻力,也不考慮空氣的流速,也就是說無人機的速度僅僅由自身的機動動作決定。
(2)無人機在飛行過程中沒有側滑,即側滑角恒等于0。
(3)無人機的質量為恒定值,重力加速度,空氣密度等因素不隨飛行環境的變化而變化。
(4)地面參考系始終處于靜止狀態,忽略地球的自轉對于建模的影響。 基于以上的設定,定義出無人機在地面慣性坐標系下的三維空間運動學方程如下:
\[\begin{aligned}& \frac{d x}{d t}=v \cos \theta \cos \psi \\& \frac{d y}{d t}=v \cos \theta \sin \psi \\& \frac{d z}{d t}=v \sin \theta \\& \frac{d v}{d t}=g\left(N_x-\sin \theta\right) \\& \frac{d \theta}{d t}=\frac{g}{v}\left(N_z \cos \varphi-\cos \theta\right) \\& \frac{d \psi}{d t}=\frac{g N_z \sin \varphi}{v \cos \theta} \\\end{aligned}\]方程組中的每一項分別表示 UCAV 三維空間坐標值、飛行速率、航向角和軌跡角的一階微分方程, 決定了格斗過程中飛行器狀態更新計算的 方法。
另一種表示,只是符號變了,上式子中的\(\theta\)為下面的\(\gamma\) , \(\varphi\)為\(mu\),
\(N_x\) 為飛行器的切向過載,表示的是飛行器在前進速度方向上受到的推力和自身重力的比值,切向過載可以改變飛行器的速度大小, \(N_x\) 可以實現飛行器加速、減速、或者勻速率飛行的控制;
\(N_z\) 是飛行器的法相過載, 表示飛行 器受到的與其機身平面垂直且方向向上的過載, 能夠提供飛行器所需的升力,\(N_z\) 可以控制飛行器的俯沖, 拉起和平穩飛行的控制, 以改變飛行器的垂直高度。
\(\varphi\) 為機體的滾轉角, 表示的是機體繞自身速度方向的夾角, 一般固定翼飛 滾轉角實現側身的效果, 可以為固定翼飛行器提供轉彎所需要的推力 \({ }^{[48]}\), 以實現更有效的轉彎。
控制量為 切向過載 \(N_x\) 法向過載\(N_z\) 滾轉角 \(\varphi\)也就是圖片里的\(mu\)
狀態量為: 三維空間坐標值\((x,y,z)\) ,飛行速率、航跡角 、航向角
給定初始狀態
三維空間坐標值、飛行速率、航跡角 、航向角
\[x,y,z,v,\gamma,\varphi\]state = [x,y,z,v,gamma,varphi]
輸入 : 控制量 切向過載 、法向過載、滾轉角
\[N_x 、 N_z、 \mu\]control = [Nx , Nz , mu]
代碼返回: 下一時間(一個仿真步長)的狀態量
# -*- coding: utf-8 -*-"""@author : zuti@software : PyCharm@file : 3_run_func.py@time : 2023/3/23 19:46@desc :"""import matplotlib.pyplot as pltimport numpy as npfrom scipy.integrate import odeintplt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falseplt.rcParams.update({'font.size': 12})# 初始姿態init_velocity, init_gamma, init_varphi = 260., 3.14 / 10., 0.init_x, init_y, init_z = 0., 0., 1000. # 初始位置# todo 三個控制量Nx = 3.0Nz = 2.mu = 3.14 / 12state = [init_x, init_y, init_z, init_velocity, init_gamma, init_varphi]control = [Nx, Nz, mu]time = 1 # 秒 總時間n = 10 # 仿真步數t = np.linspace(0, time, n) # 仿真步長def dmove2(x_input, t, control): g = 9.81 # 重力加速度 velocity, gamma, fai = x_input nx, nz, gunzhuan = control velocity_ = 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_])def update_position(state, control, time=1, n=10): """ :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, 6)) # 軌跡長度 state_list[0] = state # 軌跡列表第一個元素為初始狀態 x,y,z,velocity, gamma, varphi = state_list[0] for k in range(1, n): tspan = [t[k - 1], t[k]] st = odeint(dmove2, (velocity, gamma, varphi), tspan, args=([control[0], control[1], control[2]],)) velocity, gamma, varphi = st[1, :] dx = velocity * np.cos(gamma) * np.sin(varphi) * dt dy = velocity * np.cos(gamma) * np.cos(varphi) * dt dz = velocity * np.sin(gamma) * dt x = x + dx state_list[k, 0] = x y = y + dy state_list[k, 1] = y z = z + dz state_list[k, 2] = z state_list[k, 3] = velocity state_list[k, 4] = gamma state_list[k, 5] = varphi return state_list#測試運動學方程state_list = update_position(state,control)print(f'軌跡 {state_list}')#繪制圖像fig = plt.figure()ax1 = fig.add_subplot(221,projection='3d')ax1.plot(state_list[:, 0], state_list[:, 1], state_list[:, 2])ax1.set_title('trajectory 軌跡')ax1.set_xlabel('X')ax1.set_ylabel('Y')ax1.set_zlabel('Z')ax2 = fig.add_subplot(222)ax2.plot(state_list[:,3])ax2.set_title('velocity 速度')ax3 = fig.add_subplot(223)ax3.plot(state_list[:,4])ax3.set_title('gamma 航跡傾角')ax3 = fig.add_subplot(224)ax3.plot(state_list[:,5])ax3.set_title('varphi 航向角')#plt.savefig('test.jpg')plt.show()
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
北京到杭州高鐵里程數?從北京到杭州全程約1200公里。目前北京到杭州沒有直達線路,推薦19條中轉線路,分別是:G177、G197、C2079、G33、G35、G181、G37、G185、G187、C2559、G189、G191、G193、Z284、G133至G7613、G137。222北京到杭州高鐵多少公里,北京到杭州高鐵最新消息?北京到杭州的航班列表類別順序始發站末端的耗費時間的方案1G177細...
fpe怎么用?這是一個舊的修飾符。首先,您可以在設置中找到熱鍵設置。你可以把它換到一個更舒適的關鍵位置。我通常用F鍵。然后你在開始游戲之前打開FPE,進入游戲,找到你想要修改的數字,比如金錢、經驗,記錄下來,按熱鍵,界面就會跳出到FPE,你在搜索欄中輸入你的數字,搜索,你可以找到幾組東西,可以多點,你可以點擊進入游戲,對原來的號碼進行更改,比如玩怪和體驗,花點錢,然后記錄更改的號碼,然后按熱鍵跳出...
蘋果手機測距儀如何使用測田畝?蘋果 s手機自帶測量軟件。蘋果有個軟件叫測距儀 的手機。只要打開軟件,找到想要測量的位置所在的水平面,將手機移動到另一個水平面,軟件就會自動測量出這一段的距離。按照這種方法測量土地的長度和寬度后,就可以算出這塊土地的畝數了。這個軟件測出來的長度可以精確到小數點后兩位,所以這個軟件測出來的畝數還是很準確的。蘋果8p測距儀怎么用?首先打開手機自帶的測距儀。進入頁面后,按照...