猎鹰9火箭是怎么返回地面的(GNC---火箭怎么飞到目的地(4)---算法描述)
h公众号:理念世界的影子
文不可无观点,观点不可无论据。
转载请注明出处
介绍火箭控制的书籍很多,格林雪特的《飞行控制系统的分析与设计》和徐延万的《弹道导弹、运载火箭控制系统设计与分析》均值得一读,但一进去就被各种公式绕的云里雾里,火箭到底怎么飞到目的地呢?
如图,怎么做到的?
现在我们都知道,发动机靠的是Tom Muller,在TRW干了15年,TR-106发动机负责人,然后,被Musk挖走了!
控制靠谁呢?在领英上有这么一组简历:剑桥本科和硕士,麻省博士,随后在JPL干了4年火星着陆。然后,也被Musk挖走了!
他就是Lars Blackmore,SpaceX火箭着陆工程负责人,入轨火箭一级着陆第一人。看起来定语也不少哦(关于定语,见《成果报奖的方法、技巧和套路》),这是因为航天飞机轨道器和助推器都被回收过,而蓝色起源又抢了个亚轨道一级回收。只是这里定语虽然多,但却分量最重!因为很难且意义重大!
Lars Blackmore, SpaceX火箭着陆工程负责人
Lars Blackmore曾撰文说:SpaceX使用CVXGEN生成定制的飞行代码,采用高速在线凸优化算法。
凸优化是啥?
在《GNC---火箭怎么飞到目的地(1)---生活化描述》中讲了GNC的一般概念,在《GNC---火箭怎么飞到目的地(2)---物理描述》文中介绍了制导,在《GNC---火箭怎么飞到目的地(3)---数学描述》中介绍了姿控。如果说这三篇还可以装一装,本篇妥妥地暴露出笔者没搞过GNC了。因为在研究此问题时,发现对于现有方法、对于他人成果是各种没听过、没见过,没体会过优缺点、对罩门在哪更没概念。当然,这不妨碍我们一步一动、慢慢实践,只是其中定有很多错漏,也特别期待大家指出。
问题模型和简化
+
忽略地球曲率,忽略大气阻力,假设发动机比冲恒定,第一步不考虑横向运动,只考虑垂向,可将问题描述为:
这里F为发动机推力,模型简化为:通过流量(
这里流量怎么调节有无穷多可能性,正是《设计和仿真有什么区别?》中所说的无穷多个自由度。加载个遗传算法、粒子群算法包暴力寻优?不会有好结果。
做出一个解析解?从上式可以积分出速度,即我们都知道的齐奥尔科夫斯基定律。但已经没法再进一步写出位置公式来。那就进一步蜕化!
假设为常流量,问题转化为了流量为多少的问题,只有一个优化变量。但此时仍写不出位置解析公式,难以进行一般结论分析。
假设为常加速度呢?通过不断降低发动机推力,与箭体重量匹配,达到常加速度下降,此时公式可写为:
从双过零条件,即末位置和末速度均为0,可以解出着陆时间t=-2h/v0,过程中加速度为:
从上式可知,对于简化模型,给定初始位置和速度,存在恒加速度,可以实现双过零!比想象的好,因为之前还担心找不到解呢?
采用文献给出的Falcon返回参数(r0=[5582 2100 450]; v0=[-353 -190 -40]; m0=38963;),此处只考虑x方向,从图中可以看到在可变推力下,位置和速度同时到达0。
从图中也可以看出,返回初始条件的给定比较讲究。如图,推力正好从800kN左右调节到650kN,而对应merlin1D发动机推力调节范围为592~845kN。
简化模型在干扰下的适应性
+
上式中,如果只用初始点的位置和速度,是无法适应干扰的。观察此式发现,对于任何时刻,都可将此时刻作为起始时刻,都可以重新计算一个加速度,这时候,算法就具备了一定的干扰适应能力。
如发动机点火时推进剂剩余量多500kg,同时发动机推力比指令值少5%。计算表明,此偏差下仍能双过零,只是着陆过程中给出的指令已经不是常值加速度了。但总体而言,一维情形下的返回是件简单的事情。
三维情况
+
仍采用公式a=v0^2/2/x0,三个方向分别施加。采用文献参数(r0=[5582 2100 450]; v0=[-353 -190 -40]; m0=38963;),可以看到在位置和速度同时到达0。图中的推力产生加速度在初始时刻不是常值,这是因为发动机推力存在最大值限幅。
从图中可以看出,Y/Z向速度比X向先到达0。这是靠合理的XYZ位置、速度起始值组合保证的,在算例组合下,t=2r0/v0=[31.6261 22.1053 22.5000]s。
这个组合要求非常高,这也意味着Falcon返回的气动减速段,栅格翼一定不仅仅在调姿态和减速,同时也在进行制导,为反推点火点寻找较好的位置和速度组合。
如果点火时条件存在偏差怎么办?以速度为例,假设反推点火时x向速度仍为-353m/s,若:
Y/Z向速度偏小,此时Y/Z方向需要调节时间增加,若超过X向时间,返回时必然大幅偏离返回点。如Y向速度为设计值的60%,计算表明落点偏离42m;
Y/Z向速度偏大,需要更大的调节推力,从而造成推力限幅,使得X向无法达到需要加速度。如Y/Z向速度为设计值的110%,计算表明火箭将以100m/s砸向地面。
Y向速度为设计值的60%,落点偏离42m
Y/Z向速度为设计值的110%,落地速度100m/s
凸优化
+
上述例子中,偏差大的原因是算法中,对于X/Y/Z三向独立考虑,没有估计它们之间的联系。应该是有办法可以处理这种联系的,只是笔者对GNC实在不熟悉,就直接转向Lars Blackmore在文中所说的凸优化吧。推荐文献:
Behçet Açikmeşe, Lars Blackmore, etc, Enhancements on the Convex Programming Based Powered Descent Guidance Algorithm for Mars Landing, 2008
Lars Blackmore, Behçet Açikmeşe, etc., Minimum-Landing-Error Powered-Descent Guidance for Mars Landing Using Convex Optimization, 2010
张志国等,火箭垂直回收着陆段在线制导凸优化方法, 2017
方法其实很简单和程式化:将原始模型
转化为如下凸模型:
进而离散
对照上述离散模型,可以直接写出计算程序。
在设计工况下的返回情况见下图,与之前算法结果最大不同在于,推力大小不再连续变化,而是在最大、最小推力处切换,即bang-bang控制。
对于之前的Y/Z速度增加10%,或Y速度降低40%工况,采用凸优化算法仍然可以得到较好的结果,即算法对偏差适应能力更大。
另外,与之前比,采用凸优化后,Y/Z速度趋向零的过程好像稍慢,可能导致箭体落地前有点倾斜,笔者觉得再加一些凸约束即可,就不一一尝试了。
在真正飞行中,在每一个制导周期都需要优化一次,获得当前推进力和方向,随后按此值推进,并在下一个制导周期重新计算。凸优化算法的优点在于,可在确定时间内给出满足指定精度的优化解,从而具备在线求解可能性,如SpaceX使用CVXGEN生成的凸优化算法实现在线实时求解。
看来在前人现成理论和工具包面前,火箭返回看起来不难嘛!但别忘了,以上只是最简单情况下的示例。Blackmore曾说:地球大气密度是火星100倍,气动力成为大的量而不是干扰,在地球上返回是一个复杂的问题。
就像如下的停球,训练时也许可以做到,但在比赛的高对抗中,就未必那么容易了。好多时候,说简单、说难都没什么意义,只有干了才知道。
往期文章:
软文《 二向箔与降维攻击---FH成功的技术逻辑链及对我们后续工作的启示(3)》
《 惟情怀和信仰不灭,祝祖国明日更强---记FH首飞(2)》
《 坚志而勇为,谓之刚---Falcon重型首飞有感(1)》
《 新时代开启的新征程---Falcon9回收箭体复飞成功》
技术贴
《隐形的幽灵---发动机混合比是怎么和火箭总体联系的(下)》
《隐形的幽灵---发动机混合比是怎么和火箭总体联系的(上)》
《不搞事,就不是musk---Falcon二子级回收方案构想》
微信扫一扫
关注“理念世界的影子”
版权声明:
本文是"洞穴之外"作者原创文章,欢迎转载,须署名并注明来自“理念世界的影子”公众号。