标准轨迹规划:基于能量高度的参考轨迹生成方法

各位工程师朋友,今天我们来聊聊终端制导里一个绕不开的话题——能量管理。说白了,就是怎么让飞行器在末端阶段,既不掉得太快,也不飞得太飘。

我个人习惯把这个问题拆成两步:先规划一条参考轨迹,再设计控制器去跟踪它。今天重点讲第一步——基于能量高度的参考轨迹生成。

为什么是能量高度?

你想想看,飞行器在末端飞行时,动能和势能是不断转换的。单纯看高度或者速度,都只能反映问题的一半。能量高度(Energy Height)这个概念,把两者统一起来了。

能量高度定义:

E_h = h + V²/(2g)

其中 h 是几何高度,V 是速度,g 是重力加速度。

单位是米,物理意义很直观——相当于把动能折算成势能,看总能量相当于多高的高度。

我在项目中遇到过这样的情况:某次试飞,单纯按高度规划轨迹,结果速度偏大,末端拉飘严重。后来换成能量高度规划,问题一下就解决了。嗯,这里要注意——能量高度不是万能的,但它确实比单一变量更鲁棒。

参考轨迹生成的核心逻辑

基于能量高度的轨迹生成,说白了就是回答一个问题:给定当前能量高度,应该对应什么样的几何高度和速度?

我一般分三步走:

  1. 建立能量高度-航程关系——确定从当前位置到目标点,能量高度应该怎么衰减
  2. 设计能量高度-高度剖面——把能量高度映射回几何高度
  3. 反算速度剖面——由能量高度和几何高度,反推出期望速度

实战小技巧:我个人习惯先画一张能量高度-航程的曲线图。斜率太陡说明能量消耗太快,末端可能拉不起来;太平缓则可能能量过剩,需要额外耗能手段。

标准轨迹生成流程

下面这张图是我自己总结的流程,你一看就明白:

基于能量高度的参考轨迹生成流程 输入:初始状态 + 目标状态 步骤1:设计 E_h - R 剖面(能量高度-航程) 步骤2:由 E_h 映射到几何高度 h_ref 步骤3:反算期望速度 V_ref 输出:h_ref(R), V_ref(R)

具体怎么设计能量高度剖面?

这里我分享一个工程上常用的方法——分段线性化。为什么用分段线性?因为简单、可靠、调试方便。

假设飞行器从初始点(R₀, E_h₀)飞到目标点(R_f, E_h_f),中间可以设置若干个关键点:

航程 R (km) 能量高度 E_h (km) 说明
R₀ = 100 E_h₀ = 35 初始点,能量充足
R₁ = 60 E_h₁ = 20 中间过渡,开始减速
R₂ = 20 E_h₂ = 8 末端准备,能量较低
R_f = 0 E_h_f = 0.5 目标点,保留少量能量

有了这些点,线性插值就能得到任意航程处的期望能量高度:

// 伪代码示例
function get_Eh_ref(R):
    for i = 0 to N-1:
        if R_i <= R <= R_{i+1}:
            // 线性插值
            k = (E_h_{i+1} - E_h_i) / (R_{i+1} - R_i)
            E_h_ref = E_h_i + k * (R - R_i)
            return E_h_ref
    return E_h_f  // 超出范围则取目标值

注意:我曾经在这个环节吃过亏——分段点设得太少,轨迹不平滑;设得太多,又容易过拟合。一般3-5个分段点就够用了,具体要看飞行器的机动能力。

从能量高度到几何高度

有了期望的能量高度,下一步就是把它拆成几何高度和速度。这里有个自由度——同一能量高度可以对应不同的(h, V)组合。

我常用的策略是:先定高度剖面,再反算速度。高度剖面一般设计成航程的平滑函数,比如:

h_ref(R) = h_f + (h_0 - h_f) * (R / R_0)^n

其中 n 是形状参数,n=1 是线性,n>1 是下凸(末端拉平),n<1 是上凸(末端陡降)。

然后速度就由能量高度公式反算:

V_ref(R) = sqrt( 2 * g * (E_h_ref(R) - h_ref(R)) )

避坑指南:我曾经遇到过反算出的速度小于失速速度的情况。解决办法很简单——在规划能量高度剖面时,就要保证 E_h_ref(R) - h_ref(R) 始终大于一个安全阈值。

工程实现中的几个要点

  • 实时性:参考轨迹生成是在线进行的,计算量不能太大。分段线性+查表法是最稳妥的。
  • 平滑性:如果轨迹的一阶导数不连续,控制器会抖。我习惯在分段点用三次样条做平滑过渡。
  • 鲁棒性:实际飞行中能量消耗和理论值总有偏差。建议在能量高度剖面中预留5%-10%的余量。

嗯,今天就先聊到这里。能量高度这个方法,说白了就是把一个二维问题降成一维来解。你上手试试,会发现它比想象中更实用。


公众号:蓝海资料掘金营,微信deep3321