制导与导航总述、分类介绍、MATLABdemo
导航与制导的每种方法添加的 代码例程 和 核心公式,以帮助更好地理解其实现和应用。基于 MATLAB 的实现示例。
文章目录
- 导航方法
- 惯性导航系统
- 全球导航卫星系统
- 天文导航
- 地形匹配导航
- 组合导航
- 制导方法
- 比例导引律
- 纯追踪制导
- 航迹制导
- 最优控制制导
- 自主制导
- 导航与制导的结合
导航方法
惯性导航系统
(INS, Inertial Navigation System)
原理:基于惯性测量单元(IMU)中的加速度计和陀螺仪,测量飞行器的加速度和角速度,通过积分计算位置、速度和姿态。
优点:
不依赖外部信号,具有自主性。
抗干扰能力强。
缺点:
长时间运行会产生累积误差(漂移)。
应用:导弹、潜艇、宇宙飞船等。
核心公式:
- 速度更新:
v ( t ) = v ( t − 1 ) + a ( t ) ⋅ Δ t v(t) = v(t-1) + a(t) \cdot \Delta t v(t)=v(t−1)+a(t)⋅Δt - 位置更新:
x ( t ) = x ( t − 1 ) + v ( t ) ⋅ Δ t x(t) = x(t-1) + v(t) \cdot \Delta t x(t)=x(t−1)+v(t)⋅Δt
代码例程:
% 惯性导航系统模拟
dt = 0.01; % 时间步长
T = 10; % 仿真时间
t = 0:dt:T;% 初始状态
x = 0; % 初始位置
v = 0; % 初始速度
a = 1; % 恒定加速度% 状态更新
position = zeros(1, length(t));
for i = 2:length(t)v = v + a * dt; % 更新速度x = x + v * dt; % 更新位置position(i) = x;
end% 绘图
plot(t, position, 'b-', 'LineWidth', 1.5);
xlabel('时间 (s)');
ylabel('位置 (m)');
title('惯性导航系统模拟');
grid on;
全球导航卫星系统
(GNSS, Global Navigation Satellite System)
原理:利用卫星信号(如 GPS、北斗、GLONASS、伽利略)进行定位。
优点:
精度高(可达厘米级,RTK 技术)。
全球覆盖。
缺点:
受环境影响(如遮挡、干扰、欺骗攻击)。
依赖外部信号。
应用:民用导航、航空、无人机、车辆导航。
核心公式:
- 伪距公式:
ρ = ( x − x s ) 2 + ( y − y s ) 2 + ( z − z s ) 2 + c ⋅ δ t \rho = \sqrt{(x - x_s)^2 + (y - y_s)^2 + (z - z_s)^2} + c \cdot \delta t ρ=(x−xs)2+(y−ys)2+(z−zs)2+c⋅δt
其中, ( x s , y s , z s ) (x_s, y_s, z_s) (xs,ys,zs)为卫星位置, c ⋅ δ t c \cdot \delta t c⋅δt为接收机时钟偏差。
代码例程:
% GNSS单点定位模拟
satellite_pos = [20000, 20000, 20000]; % 卫星位置 (m)
receiver_pos = [0, 0, 0]; % 接收机初始位置 (m)
c = 3e8; % 光速 (m/s)
delta_t = 1e-6; % 时钟偏差 (s)% 伪距计算
rho = norm(receiver_pos - satellite_pos) + c * delta_t;% 输出
fprintf('伪距: %.2f m\n', rho);
天文导航
- 原理:利用天体(如太阳、月亮、恒星)的位置,通过天文观测计算飞行器的位置和姿态。
- 优点:
可在无 GNSS 信号的情况下使用。 - 缺点:
依赖天气和视野。
计算复杂。 - 应用:远洋航行、远程飞行器导航。
核心公式:
- 星体高度角公式:
h = arcsin ( sin ϕ ⋅ sin δ + cos ϕ ⋅ cos δ ⋅ cos H ) h = \arcsin(\sin \phi \cdot \sin \delta + \cos \phi \cdot \cos \delta \cdot \cos H) h=arcsin(sinϕ⋅sinδ+cosϕ⋅cosδ⋅cosH)
其中, ϕ \phi ϕ为观测点纬度, δ \delta δ为天体赤纬, H H H为天体时角。
代码例程:
% 天文导航高度角计算
phi = deg2rad(30); % 纬度 (30°)
delta = deg2rad(45); % 赤纬 (45°)
H = deg2rad(60); % 时角 (60°)% 高度角计算
h = asin(sin(phi) * sin(delta) + cos(phi) * cos(delta) * cos(H));% 输出结果
fprintf('天体高度角: %.2f°\n', rad2deg(h));
地形匹配导航
(TERCOM)
核心公式:
- 匹配误差:
E = ∑ i ( Z measured , i − Z map , i ) 2 E = \sum_{i} \left( Z_{\text{measured}, i} - Z_{\text{map}, i} \right)^2 E=i∑(Zmeasured,i−Zmap,i)2
代码例程:
% 地形匹配导航模拟
Z_map = [100, 105, 110, 120, 130]; % 地图地形数据
Z_measured = [98, 107, 112, 122, 128]; % 实际测量数据% 计算匹配误差
E = sum((Z_measured - Z_map).^2);% 输出误差
fprintf('地形匹配误差: %.2f\n', E);
组合导航
核心公式:
- 加权融合:
x fused = w INS ⋅ x INS + w GNSS ⋅ x GNSS x_{\text{fused}} = w_{\text{INS}} \cdot x_{\text{INS}} + w_{\text{GNSS}} \cdot x_{\text{GNSS}} xfused=wINS⋅xINS+wGNSS⋅xGNSS
代码例程:
% 组合导航模拟
x_INS = 100.0; % 惯性导航位置
x_GNSS = 101.5; % GNSS 位置
w_INS = 0.6; % 惯性导航权重
w_GNSS = 0.4; % GNSS 权重% 融合位置
x_fused = w_INS * x_INS + w_GNSS * x_GNSS;
fprintf('组合导航结果: %.2f m\n', x_fused);
制导方法
比例导引律
(PN, Proportional Navigation)
原理:根据目标与飞行器的视线角变化率,计算飞行器的加速度指令,使其保持与目标视线的固定角速度关系。
优点:
实现简单。
适用于高速目标。
缺点:
对机动目标效果较差。
应用:空空导弹、地空导弹。
核心公式:
a = N ⋅ V c ⋅ λ ˙ a = N \cdot V_c \cdot \dot{\lambda} a=N⋅Vc⋅λ˙
其中, N N N 为比例系数, V c V_c Vc为闭合速度, λ ˙ \dot{\lambda} λ˙为视线角变化率。
代码例程:
% 比例导引律模拟
N = 3; % 导引系数
V_c = 300; % 闭合速度 (m/s)
lambda_dot = deg2rad(2); % 视线角变化率 (rad/s)% 计算加速度
a = N * V_c * lambda_dot;
fprintf('比例导引加速度: %.2f m/s^2\n', a);
纯追踪制导
原理:飞行器始终指向目标当前位置。
优点:
实现简单。
缺点:
对高机动目标难以跟踪。
易产生较大能量损耗。
应用:早期制导导弹。
核心公式:
a ⃗ = k ⋅ ( r ⃗ − r ⃗ t ) \vec{a} = k \cdot (\vec{r} - \vec{r}_t) a=k⋅(r−rt)
其中, r ⃗ \vec{r} r为导弹位置, r ⃗ t \vec{r}_t rt为目标位置, k k k为增益。
代码例程:
% 纯追踪制导模拟
r_missile = [1000, 1000]; % 导弹位置
r_target = [500, 500]; % 目标位置
k = 0.1; % 增益% 计算加速度
a = k * (r_target - r_missile);
fprintf('纯追踪加速度: [%.2f, %.2f] m/s^2\n', a);
航迹制导
- 原理:预先规划飞行器的轨迹,实时调整控制指令,使其沿轨迹飞行。
- 优点:
精度高。
适合复杂任务。 - 缺点:
计算量大。 - 应用:巡航导弹、卫星发射。
核心公式:
飞行器按照预先规划的轨迹飞行:
u ⃗ = r ⃗ desired − r ⃗ \vec{u} = \vec{r}_{\text{desired}} - \vec{r} u=rdesired−r
代码例程:
% 航迹制导模拟
r_desired = [1000, 1000]; % 目标点
r_current = [800, 900]; % 当前点% 计算控制输入
u = r_desired - r_current;
fprintf('航迹控制输入: [%.2f, %.2f] m\n', u);
最优控制制导
- 原理:基于最优控制理论(如线性二次调节器,LQR),通过优化性能指标(如燃料消耗、时间等),计算最优轨迹和控制输入。
- 优点:
节省燃料。
适应复杂约束。 - 缺点:
计算复杂。
应用:高性能导弹、航天器制导。
核心公式:
u = − K ⋅ x u = -K \cdot x u=−K⋅x
其中, K K K 为反馈增益矩阵, x x x为状态偏差。
代码例程:
% LQR制导模拟
A = [0 1; 0 0]; % 状态矩阵
B = [0; 1]; % 控制矩阵
Q = diag([1, 1]); % 状态权重
R = 0.1; % 控制权重% 求解反馈增益
[K, ~, ~] = lqr(A, B, Q, R);x = [2; -1]; % 当前状态偏差
u = -K * x; % 控制输入
fprintf('LQR控制输入: %.2f\n', u);
自主制导
- 原理:基于人工智能(AI)、机器学习或强化学习,飞行器自主规划路径并追踪目标。
- 优点:
自主性强。
可适应复杂环境。 - 缺点:
算法不透明,依赖训练数据。 - 应用:无人机群体协作、智能导弹。
核心公式:
基于强化学习或路径规划算法(如 A* 或 Dijkstra)。
代码例程:
% 自主制导路径规划示例
start = [0, 0];
goal = [10, 10];
obstacles = [5, 5; 6, 6]; % 障碍物% 简单路径规划 (直线路径)
path = [linspace(start(1), goal(1), 100); linspace(start(2), goal(2), 100)];% 绘制结果
plot(path(1, :), path(2, :), 'b-', 'LineWidth', 1.5); hold on;
scatter(obstacles(:, 1), obstacles(:, 2), 100, 'r', 'filled');
scatter(goal(1), goal(2), 100, 'g', 'filled');
grid on;
title('自主制导路径规划');
导航与制导的结合
在实际应用中,导航和制导通常结合使用。例如:
- 中段导航与末段制导:
导弹在中段使用惯性导航或组合导航进行粗略定位。
在末段切换为自主或雷达制导,提高打击精度。 - 导航与路径规划结合:
无人机通过 GNSS 和视觉导航确定位置,同时利用航迹制导规划路径。
如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者