智能空战入门

环境

对于环境一般有两种,①自己根据动力学模型自己搭一个环境
②调用现成的动力学库搭环境

1.简单动力学模型

一个最简单的环境就是自己根据动力学模型解算状态,下面是一个例子
六自由度运动学方程为
{ x ˙ = v cos ⁡ γ sin ⁡ ψ y ˙ = v cos ⁡ γ cos ⁡ ψ z ˙ = v sin ⁡ γ \begin{cases} \dot{x}=v\cos \gamma \sin \psi\\ \dot{y}=v\cos \gamma \cos \psi\\ \dot{z}=v\sin \gamma\\ \end{cases} x˙=vcosγsinψy˙=vcosγcosψz˙=vsinγ
其中 x ˙ \dot{x} x˙ y ˙ \dot{y} y˙ z ˙ \dot{z} z˙分别为x,y,z轴的加速度; γ ˙ \dot{ \gamma} γ˙ ψ ˙ \dot{ \psi} ψ˙分别为航迹角和航向角。这些变量的意义见下图
在这里插入图片描述
运动学方程描述了三个自由度,接下来的动力学方程描述了剩下三个自由度(此处可能不准确,因为并不是欧拉角)
{ v ˙ = g ( n x − sin ⁡ γ ) γ ˙ = g v ( n z cos ⁡ μ − cos ⁡ γ ) ψ ˙ = g n z sin ⁡ μ v cos ⁡ γ \begin{cases} \dot{v}=g\left( n_x-\sin \gamma \right)\\ \dot{\gamma}=\frac{g}{v}\left( n_z\cos \mu -\cos \gamma \right)\\ \dot{\psi}=\frac{gn_z\sin \mu}{v\cos \gamma}\\ \end{cases} v˙=g(nxsinγ)γ˙=vg(nzcosμcosγ)ψ˙=vcosγgnzsinμ
其中 n x n_x nx表示速度方向的过载, n z n_z nz表示俯仰方向的过载, μ \mu μ为滚转角
根据这两个方程得到状态转移函数 ( x , y , z , v , γ , ψ ) t + 1 = f ( x , y , z , v , γ , ψ , n x , n z , u ) t \left( x,y,z,v,\gamma ,\psi \right) _{t+1}=f\left( x,y,z,v,\gamma ,\psi ,n_x,n_z,u \right) _t (x,y,z,v,γ,ψ)t+1=f(x,y,z,v,γ,ψ,nx,nz,u)t
在python写个求解器再加上绘图就可以完成环境搭建了。
{ v = v 0 + ∫ t 0 t 1 g ( n x − sin ⁡ γ ) d t γ = γ 0 + ∫ t 0 t 1 g ( n y cos ⁡ μ − cos ⁡ γ ) v d t ψ = ψ 0 + ∫ t 0 t 1 g n y sin ⁡ μ v cos ⁡ γ d t x = x 0 + ∫ t 0 t 1 v cos ⁡ γ cos ⁡ ψ d t y = y 0 + ∫ t 0 t 1 v cos ⁡ γ sin ⁡ ψ d t z = z 0 + ∫ t 0 t 1 v sin ⁡ γ d t \left\{\begin{array}{l}v=v_0+\int_{t_0}^{t_1} g\left(n_x-\sin \gamma\right) d t \\ \gamma=\gamma_0+\int_{t_0}^{t_1} \frac{g\left(n_y \cos \mu-\cos \gamma\right)}{v} d t \\ \psi=\psi_0+\int_{t_0}^{t_1} \frac{g n_y \sin \mu}{v \cos \gamma} d t \\ x=x_0+\int_{t_0}^{t_1} v \cos \gamma \cos \psi d t \\ y=y_0+\int_{t_0}^{t_1} v \cos \gamma \sin \psi d t \\ z=z_0+\int_{t_0}^{t_1} v \sin \gamma d t\end{array}\right. v=v0+t0t1g(nxsinγ)dtγ=γ0+t0t1vg(nycosμcosγ)dtψ=ψ0+t0t1vcosγgnysinμdtx=x0+t0t1vcosγcosψdty=y0+t0t1vcosγsinψdtz=z0+t0t1vsinγdt
优点就是:动力学模型简单,很多飞行器动作都可以直接计算出来,比如让飞行器匀加速匀速上升等都可以通过给定控制量来做到
缺点是:计算过程容易出错,求解器的设计对数学功底要求比较高。

2.基于开源动力学库的环境搭建

针对固定翼飞行器的控制,网上最广泛的是jsbsim库,目前我采用的方案如下
在这里插入图片描述
jsbsim库里有很多飞机的模型文件,其飞行器动力学模型复杂但是真实,美国DAPPA举办的阿尔法狗斗项目就基于jsbsim库。
tacview是一个专门的飞行数据回放的可视化软件,只需要将战斗数据生成acmi文件,就可以通过tacview加载该文件看到可视化界面。
市面上还有很多飞行器方面的视景软件,对飞机模型和周围环境加了很多渲染,使得战斗更加真实,这些主要是一些游戏软件,可以作为实验成果的效果展示。

jsbsim库

jsbsim库中的飞机的动力学输入有4个量分别是副翼、升降舵、方向舵和油门,其具体功能见下图
在这里插入图片描述
飞机的的状态有16个(可能不止),见下图
在这里插入图片描述
该动力学库还有关于飞机结构参数和控制系统的设定,做结构和底层控制的可能会用到,其中F16的参数如下图所示
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值