文章目录
- [从最优控制到星上 AI:神经网络如何加速航天器轨迹修正](#从最优控制到星上 AI:神经网络如何加速航天器轨迹修正)
从最优控制到星上 AI:神经网络如何加速航天器轨迹修正
如果你接触过航天器轨道设计或最优控制(Optimal Control),大概率会遇到这样一个难题:航天器初始状态哪怕只偏一点点,传统优化算法要么算得极慢,要么干脆不收敛。
这篇博客要介绍的应对方案来自 Nathan Parrish 2018 年在科罗拉多大学博尔德分校的学位论文《Low Thrust Trajectory Optimization in Cislunar and Translunar Space》(5.2 节)。核心是地面与星上的分工:地面离线把最优解的规律学进神经网络(NN),星上在线只做测量、推理和控制,几毫秒就能完成原本需要几十分钟的修正;超出网络能力范围时,再由星上本地完整计算兜底。

痛点:难算的伴随变量与脆弱的打靶法
最优控制要求航天器精准抵达目标(比如地月空间里的一条目标轨道),背后的数学工具是庞特里亚金极大值原理(PMP)。
其中引出一个关键变量:伴随变量(Adjoint variable,通常记为 λ \lambda λ)。可以把它理解成状态的"影子价格",衡量当前每一点状态偏差会让总代价增加多少。系统只有知道了 λ \lambda λ,才能依据极大值原理算出当前该用多大推力,也就是控制量 u u u。
但这个量极难求。传统方法(打靶法)要先猜初始时刻的 λ ( t 0 ) \lambda(t_0) λ(t0),猜错了,沿轨迹积分到终点就会偏离目标十万八千里。更麻烦的是系统的极端敏感性:初始状态差之毫厘,所要求的 λ ( t 0 ) \lambda(t_0) λ(t0) 就谬以千里。偏偏最小燃耗解的推力结构是 bang-coast-bang(满推、滑行、再满推),不连续的控制让打靶收敛难上加难。于是每次初始状态一变(比如受摄动影响被推偏了),都要重新花大量时间去猜初值并迭代,不仅慢,还经常算不出结果。
破局:让神经网络先给出一个准的初值
作者的思路是:既然每次从头算太慢,能不能让神经网络先预测一个足够准的修正?
第一版方案是直接预测起点:输入初始偏差 δ x 0 \delta x_0 δx0,输出初始伴随变量偏差 δ λ 0 \delta \lambda_0 δλ0。结果不行,因为只预测起点没用,初始猜测的微小误差在积分过程中仍会被不断放大。
论文的做法是升级:不只预测起点,而是预测整条轨迹上的修正量。神经网络输入初始状态偏差 δ x 0 \delta x_0 δx0 与当前时间 t t t,输出该时刻伴随变量的修正量 δ λ ( t ) \delta \lambda(t) δλ(t)。由此得到论文式 (94):
真实伴随变量 λ ( t ) \lambda(t) λ(t) = 基准伴随变量 λ ∗ ( t ) \lambda^*(t) λ∗(t) + NN 预测修正量 δ λ ( t ) \delta \lambda(t) δλ(t)
核心亮点:地面与星上的分工
这是这套架构在工程上最值得琢磨的地方。论文 5.2 节把它拆成地面离线与星上在线两部分。
地面(离线,负责"训练大脑",耗算力)
- 找基准(Step 1)。基准解不是一步算出来的,而是一条同伦链:先用直接多重打靶求最小能量解,把结果当初值换间接多重打靶,再解带 sigmoid 光滑控制律( ε = 1 \varepsilon = 1 ε=1)的最小燃耗问题,最后用同伦把 ε \varepsilon ε 一路降到 10⁻⁴,得到 bang-coast-bang 结构的最小燃耗基准解,保存 { x 0 ∗ , λ ∗ ( t ) , t f } \{x_0^*, \lambda^*(t), t_f\} {x0∗,λ∗(t),tf}。如果手头已有合适的初值,前面打基础的两步可以跳过。
- 造数据(Step 2)。从分布 P ( δ x 0 ) P(\delta x_0) P(δx0) 里抽取几万次初始偏差,验证样本也从同一分布抽取。每个样本都用间接多重打靶求出最小燃耗解,作为标准答案。难收敛的样本有个工程技巧:小 ε \varepsilon ε 下不收敛,就先把 ε \varepsilon ε 调大让它收敛,再逐步降回 bang-coast-bang 需要的小值。
- 训模型(Step 3)。把网络的输入和输出都缩放平移到 -1, 1 区间,选定网络规模与训练算法,调用训练库(论文用 MATLAB Neural Network Toolbox)。
- 验证(Step 4)。从同一分布再抽一批验证偏差,用 NN 修正后的控制律把初始状态向前推进:对基准伴随变量 λ ∗ ( t ) \lambda^*(t) λ∗(t) 在当前时刻插值,代入 NN 求出 δ λ ( t ) \delta \lambda(t) δλ(t),按最优控制策略算出 u ( t ) u(t) u(t),检查误差。
航天器(在线,负责"感知与反应",拼速度)
论文 5.2.2 节给出的动机很直接:电推航天器推进时在不断把误差注入状态认知,轨道确定(OD)误差与机动执行误差叠加,修正必须高频进行。
- 自主 OD。星载导航测量持续给出真实状态,一旦发现偏航,立即算出偏差 δ x 0 \delta x_0 δx0。
- 前馈推理。在当前时刻对基准 λ ∗ ( t ) \lambda^*(t) λ∗(t) 插值,把偏差与时间输入星载 NN,几次矩阵乘法就能得到 δ λ ( t ) \delta \lambda(t) δλ(t),算力消耗极低。
- 算控制。把 λ ∗ ( t ) + δ λ ( t ) \lambda^*(t) + \delta \lambda(t) λ∗(t)+δλ(t) 代入最优控制策略,直接算出推力指令 u ( t ) u(t) u(t)。整个回路不需要在线迭代优化,毫秒量级就能更新一次指令。
这条快速回路有适用范围。超出了怎么办,正是论文把架构讲完整的地方。
进阶问题:超出阈值时,星上本地计算兜底
一个很实际的工程拷问:如果飞行时系统参数变了,或者时间窗口严重错位,这个网络还能用吗?
答案是:它能做"微调",不能做"重新规划"。
局限性:NN 只能处理训练时"见过"的偏差。如果任务整个换掉,输入完全超出训练分布,NN 会给出离谱的输出。
兜底措施:系统会持续判断偏差是否超出阈值。一旦超出,就不再信任 NN 的猜测,改由星载计算机在本地从头完整地跑一次最优控制计算,也就是地面造数据时反复演练过的那套多重打靶求解。这条兜底路径不依赖地面链路,代价是慢,回到几十分钟量级;换来的是确定性,只要问题本身可解,航天器仍能自主算出修正后的轨迹。
这也点明了方法的本质:高精度微调补偿,而不是万能自动驾驶。NN 的职责是把常见的小偏差快速消化掉,让昂贵的完整本地计算只在真正需要时才触发一次。要让 NN 更鲁棒,训练时就必须引入大量域随机化(Domain Randomization),把时间延迟、质量变化、各种干扰都塞进输入特征,让它见多识广。
总结
这篇论文展示了控制理论与机器学习结合的一条务实路径:不让黑盒 AI 直接接管控制,而是让 AI 当一个快速的"数学初值生成器"。
整套架构分三层。地面离线训练,负责算得准。星上在线推理加控制律计算,负责算得快。偏差超出阈值时星上本地完整计算,负责兜底算得出来。把最耗时的优化留在算力充足的地面,把最快的推理留在星上,再留一条不依赖地面的慢速退路,这种分工很可能是地月空间任务与深空探测自主导航中不可或缺的关键技术。
参考文献
1 Parrish N L O. Low thrust trajectory optimization in cislunar and translunar spaceD/OL//ProQuest Dissertations and Theses. Boulder, CO:University of Colorado Boulder,2018. https://scholar.colorado.edu/concern/graduate_thesis_or_dissertations/ft848q86s.