
追踪法(追踪导引法)是一种常见的导弹导引方式,其基本原理是保持导弹的速度矢量始终指向目标。在追踪法中,导弹的加速度可以表示为指向目标的加速度。
文章目录
- 运行结果
- 功能概述
- 关键参数设置
- 代码结构
- 一些公式
- MATLAB源代码
运行结果
三维追踪图示:
二维图示:
结果输出: 
功能概述
本代码模拟导弹以追踪法(Pursuit Guidance)在三维空间内攻击匀速运动目标的过程。核心逻辑为:
- 制导策略:导弹速度方向始终指向目标当前位置(前置角为0),通过实时更新视线方向调整航向。
- 动态更新:目标和导弹的位置随时间步进更新,目标匀速运动,导弹速度固定但方向动态调整。
- 命中判定:当导弹与目标距离小于1米时判定为击中。
关键参数设置
- 指定时间步长 dt = 0.1秒,总时长 T_total = 1000秒
- 设置初始位置 [500, 500, 500] 米,速度 [10, -5, 2] 米/秒
- 设置初始位置、速度
代码结构
- 计算导弹与目标的相对位置及距离。
- 更新导弹速度方向(沿视线单位矢量)。
- 动态推进目标与导弹位置。
- 三维轨迹图:展示目标与导弹的空间运动路径。
- 二维投影图(XoY平面):辅助分析水平面运动关系。
一些公式
MATLAB代码片段:
rel_pos = target_pos – missile_pos; % 相对位置矢量
los_unit_vector = rel_pos / norm(rel_pos); % 视线方向单位矢量
对应公式: 视线方向的单位向量定义为导弹与目标相对位置的归一化矢量:
e
LOS
=
r
target
−
r
missile
∥
r
target
−
r
missile
∥
\\mathbf{e}_{\\text{LOS}} = \\frac{\\mathbf{r}_{\\text{target}} – \\mathbf{r}_{\\text{missile}}}{\\|\\mathbf{r}_{\\text{target}} – \\mathbf{r}_{\\text{missile}}\\|}
eLOS=∥rtarget−rmissile∥rtarget−rmissile 其中,
r
target
\\mathbf{r}_{\\text{target}}
rtarget和
r
missile
\\mathbf{r}_{\\text{missile}}
rmissile分别为目标和导弹的三维位置矢量。此公式是追踪法(Pure Pursuit)的核心,保证导弹速度方向始终指向目标当前位置。
导弹速度矢量生成MATLAB代码片段:
missile_vel = missile_speed * los_unit_vector; % 导弹速度矢量
对应公式: 导弹速度矢量由固定速度和视线方向单位向量相乘得到:
v
missile
=
V
missile
⋅
e
LOS
\\mathbf{v}_{\\text{missile}} = V_{\\text{missile}} \\cdot \\mathbf{e}_{\\text{LOS}}
vmissile=Vmissile⋅eLOS 该模型假设导弹速度大小恒定,方向实时调整以对准目标,适用于前置角为零的追踪制导场景。
动态更新方程目标运动模型:
target_pos = target_pos + target_vel * dt; % 目标匀速直线运动
导弹运动模型:
missile_pos = missile_pos + missile_vel * dt; % 导弹基于LOS方向更新位置
对应公式: 目标和导弹位置更新遵循离散时间运动学方程:
r
(
t
+
Δ
t
)
=
r
(
t
)
+
v
(
t
)
⋅
Δ
t
\\mathbf{r}(t + \\Delta t) = \\mathbf{r}(t) + \\mathbf{v}(t) \\cdot \\Delta t
r(t+Δt)=r(t)+v(t)⋅Δt 其中,
Δ
t
\\Delta t
Δt为时间步长。目标速度
v
target
\\mathbf{v}_{\\text{target}}
vtarget恒定,导弹速度
v
missile
\\mathbf{v}_{\\text{missile}}
vmissile由LOS方向动态调整。
MATLAB源代码
如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者





