文号
946938
阅读
3512
回复
2
收藏
2
本文在AI协助下创作,作者声明AI的作用仅限于局部修饰性、辅助性工作,文章内容的严肃性由作者负责。
六自由度弹道模型+MATLAB计算器
许 栩然1
1. 北域喷气推进
2025/09/16
原创
IP:北京
摘要:本文阐述六自由度弹道模型,基于牛顿定律与欧拉角,解 12 个耦合微分方程描述飞行器三维运动。介绍了解算逻辑,通过定义弹体与惯性坐标系,说明关键参数,建立运动学、动力学方程,用四阶龙格 - 库塔法求解。编写了未测试的 MATLAB 半成品程序。

六自由度弹道模型是用于描述飞行器(如导弹、炮弹、无人机等)在三维空间中运动的高精度动力学模型,考虑了重力、气动力、推力等外力,以及飞行器姿态(俯仰、偏航、滚转)对运动的影响。其解算过程基于牛顿运动定律和欧拉角姿态描述,核心是建立并求解一组12个耦合的微分方程,即三维位置矢量、三维速度矢量、三维姿态角矢量及三维角速度矢量的微分方程组。在爱好者日常使用中,则可以简化为三自由度弹道模型,即二维方向矢量、二维速度矢量及一维姿态角度矢量和一维角速度矢量的6个微分方程组。

一、基本解算逻辑

①建立坐标系

②给定初始状态(位置,速度,角度,角速度)

②建立质心及姿态运动学方程(得到三维的位置及三维姿态角的微分方程)

③建立质心及转动动力学方程(得到三维的速度及三维角速度的微分方程)

④由运动学及动力学方程列出出12个微分方程(位置、速度、姿态角、角速度关于时间微分)

⑤将微分方程组带入迭代方程,得到变化量,并更新状态

⑥迭代,直到结束(如落地/关机/命中)

二、坐标系定义

1. 弹体坐标系

原点为箭体质心

x轴为箭体指向头部

y轴在弹体纵向对称面内,垂直x轴向上

z轴垂直于x-y平面,且满足矢量叉乘右手定则

2. 惯性坐标系(地面坐标系)

原点为初始位置(发射点)

x轴沿水平面指向目标方向

y轴垂直向上

z轴垂直于 x-y 平面,且满足矢量叉乘右手定则

三、中间变量及关键参数

1. 关键参数确定

箭体三维特征长度矩阵表示为

image.png

箭体三维特征面积矩阵表示为

image.png

箭体三维表面积矩阵表示为

image.png 

2. 弹体坐标系与惯性坐标系转换矩阵C

箭体坐标系相对惯性坐标系的姿态转换由欧拉角俯仰角、偏航角、滚转角描 述, 转换矩阵(从箭体到惯性系)记为C。其表达式为

image.png 

Rx:绕x轴的旋转矩阵

Ry:绕y轴的旋转矩阵

Rz:绕z轴的旋转矩阵

各轴旋转矩阵的具体形式为

image.png 

3. 攻角α与侧滑角β

描述弹体纵轴与速度方向的夹角,是气动力系数和力矩系数的核心输入内容

image.png

image.png

(vx’,vy’,vz’):弹体坐标系的速度分量(由惯性坐标系通过C^-1转换)

v:弹体合速度

4. 空气密度ρ

可以通过大气模型查表或拟合公式计算得到,与海拔高度成反比

5. 重力加速度g

可以根据重力加速度模型查表或根据公式得到

image.png 

g0:海平面重力加速度

R:地球半径

Y:海拔高度

6. 气动力系数Cx,Cy,Cz,mx,my,mz

根据箭体CFD仿真得到Cx,Cy,Cz,mx,my,mz关于Ma,攻角,侧滑角,三维角速度的函数。三维气动力系数及三维气动力矩系数表示为

image.png

image.png

7. 科里奥利力Fc

科里奥利力是一种虚拟惯性力,将地球视为旋转的非惯性系,加入虚拟惯性力表示地球自转对物体运动的影响。其计算公式为

image.png 

w:地球自转角速度矢量

v:箭体在惯性坐标系运动的速度矢量

根据矢量叉乘公式则可以表示为

image.png 

θ:物体所在经纬度到地心与赤道平面的夹角

四、建立运动学方程

飞行器运动可以分为沿惯性坐标系的质心平动(用位置,速度表述)和沿弹体坐标系绕 质心转动(用姿态角,角速度表示)

1. 质心平动运动学方程

飞行器位置矩阵表示为

image.png

飞行器速度矩阵表示为

image.png 

则飞行器位置的三个微分方程可以表示为

image.png

2. 绕质心转动运动学方程

飞行器姿态矩阵表示为

image.png 

θ俯仰角:弹体坐标系x轴与水平面的夹角(向上为正)

ψ偏航角:弹体坐标系ox 轴在水平面的投影与 OX 轴的夹角(向右为正)

φ滚转角:oy 轴与纵向对称面的夹角(从头部看顺时针为正)

飞行器角速度矩阵表示为

image.png

wx:沿x轴旋转角速度

wy:沿y轴旋转角速度

wz:沿z轴旋转角速度

则飞行器姿态角对应的三个微分方程可以表示为

image.png 

五、建立动力学方程

飞行器动力学方程可以根据牛顿第二定理和欧拉转动方程建立

image.png

image.png 

1. 质心动力学方程

火箭外力主要由四种力组成即推力、气动力、重力及科里奥利力。

重力:在惯性坐标系上矩阵表示为

image.png

科里奥利力:在惯性坐标系上矩阵表示为

image.png

推力:在弹体坐标系上矩阵表示为

image.png 

气动力:在弹体坐标系中的矩阵表示为

image.png 

其中vn表示为

image.png 

弹体坐标系中的三维合力矩阵表示为

image.png 

惯性坐标系中的三维合力矩阵表示为

image.png 

根据牛顿第二定律,飞行器速度所对应的三个微分方程可以表示为

image.png 

2. 绕质心转动动力学方程

火箭外力矩主要包括气动力矩、控制力矩和推力矩。本文暂不考虑控制力矩和推力矩。则三维气动力矩矩阵可以表示为

image.png

根据欧拉转动方程,飞行器速度所对应的三个微分方程可以表示为

image.png

六、四阶龙格-库塔法Runge-Kutta求解

由于该计算高度耦合且非线性,无法解析求解,因此需要使用数值求解方法;而龙格库塔法则具有计算复杂度低、精度高和稳定度高的特点,可以自由选用如一阶、二阶等多种方法。同时在选用步长时,不易出现发散、震荡等问题。常用于物理模拟或工程计算

1. 求解核心思想

其核心思想为一阶微分方程的初值问题:

image.png 

即在每个步长内,通过 4 次计算函数f(x,y)的值,再用加权平均的方式更新y的值,从而得到y(xn+1)的近似解yn+1。可以理解为通过计算初点、中点和终点的斜率,求出该步长内y的变化量,最后更新到初点y值上。

2. 迭代公式

①给定初始点(xn,yn)

②计算4个斜率

image.png 

k1:初点的斜率

K2:中点的斜率

K3:基于k2对中点斜率的修正

K4:终点的斜率

③加权四个斜率并得到总增量,更新(x,y)

image.png 

3. 模型计算

在计算六自由度模型时迭代公式则为

image.png

七、总结

模型构建的关键环节:①定义弹体坐标系与惯性坐标系②确定箭体特征参数、坐标系转换矩阵、攻角与侧滑角等中间变量及关键参数③建立运动学方程(含质心平动与绕质心转动方程)与动力学方程(基于牛顿第二定律和欧拉转动方程)④引入四阶龙格 - 库塔法求解微分方程并迭代。

基于该数学模型,我使用Matlab编写了一个半成品程序(没有经过运行测试和debug)该程序仅作参考。


系统工程不仅仅解数学题,而是以理论为基础对于现实三维世界的探索,理论和实践永远相辅相成;就像人,永远都是理想与现实相互影响。作为一名16岁国际高中生,即将到来的2026年将会是影响我人生的一年。我需要兼顾很多,托福SAT课内GPA等等。希望在十年后,当我再次会看十年前写的这篇文章时,我的理想会变成现实。就像一个个理论变为现实。现在说这样的话可能会有些幼稚。但到那时,我可能才会真正体会到人生的浪漫之处。

希望我们都可以脚踏实地,向着梦想前进!

本文如有错误,欢迎指出。

attachment iconSix_Dimensions.m7.53KBM36次下载

来自:
喷气推进/理论
2
3
1年1个月前IP:北京
946961
1楼

用个好点的大模型吧,6 DOF 都给搞成 6 Dimension 了,Rx和Rz也一眼重复。真有兴趣的话,找本 introduction 和 flight dynamics 系统看下。

引用
评论(1)
1
1年1个月前IP:江苏
946989
2楼

这不纯粹浪费时间嘛,连抄书都不如,懒得说了

显然弹道解算在火箭上的用武之地在于制导,充当基本函数,各种导引方法随便改。这东西直接搜就能搜出来,代码都有现成的,希望作者善后。对于业余而言有价值的研究方向不多(必须上箭拿数据,一般条件做不到,比如我)

可以从数学/物理角度分析,捣鼓一下数值求解方法,不要限于朴素RK4,比如用向后差分、RK5、其他方法、混合方法优化等等,这些比给AI代言有用的多。

如你结尾:

理论和实践永远相辅相成

引用
评论(1)
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的