Skip to content

特大喜讯!我终于可以说我是个搞研究的了!

经过数月的等待,我的第一篇论文 "A Constant-Gain Equation-Error Framework for Airliner Aerodynamic Monitoring Using QAR Data" 终于上线了!发表在IEEE Transactions on Intelligent Transportation Systems上,欢迎大家改进和引用!

Wen R, Dai Y, Wang H. A Constant-Gain Equation-Error Framework for Airliner Aerodynamic Monitoring Using QAR Data[J]. IEEE Transactions on Intelligent Transportation Systems, 2026.

bibtex
@article{CG-EEM,
Author = {Wen, Ruiying and Dai, Yuntao and Wang, Hongyong},
Title = {A Constant-Gain Equation-Error Framework for Airliner Aerodynamic
   Monitoring Using QAR Data},
Journal = {IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS},
Year = {2026},
Month = {2026 APR 17},
DOI = {10.1109/TITS.2026.3651385},
EarlyAccessDate = {APR 2026},
ISSN = {1524-9050},
EISSN = {1558-0016},
Unique-ID = {WOS:001743239100001},
}

这项研究的核心,是我提出了一种用于系统辨识的新方法,恒定增益方程误差法,CG-EEM (Constant-Gain Equation-Error Method),你可以直接在这里看到全文(如果你感兴趣的话)。

好,你要是真感兴趣,那我展开讲讲它干了什么。

以免你不知道什么是系统辨识

我们小学二年级就学过方程(这应该是真学过),我在这里写个简单的速度与加速度的方程(这不是小学二年级水平了,大概高一了吧)

s=12at2

其中,s表示距离(当然应该是路程,不过我们当它在直线上运动);a表示加速度,假设我们不知道它多大;t就是时间,用来告诉我们走了多久

好,我现在告诉你,它就是一个系统,系统就是一组方程表示的。显然可以注意到,我们不知道a多大,那我们就得猜它。

怎么猜呢?我们知道距离s,知道时间t,我觉得这方程初中生都解得出来。但是,我们假装自己不会解方程(因为实际情况下我们面对的方程解不了,你解个飞机六自由度方程试试),我们就需要一些方法去猜。猜这个未知参数a的过程就叫参数辨识(叫系统辨识也没问题,只是有时候系统辨识可能我们连方程都不知道,比如现在很多人用神经网络搞系统辨识,但其实理论上讲也是在猜神经元的系数,模型也是固定的,这么说来大家研究的那么火热的AI,其实就是系统辨识问题😋)。

猜得有道理一些

刚才说到,系统辨识一般是在猜参数。

首先啊,上面的例子不太严谨,如果上面例子是匀加速直线运动那就严谨了。一般来说要猜的参数,应该是不怎么变的(方便算法收敛,不然你怎么知道是本来就该乱跑,还是算法不行搞得结果乱跑)。所以这就对模型有要求,就拿上面运动的例子来说,你当然可以建模成s=vtv表示速度,但是如果是匀加速运动,这个v是在一直变的,我们就没法估计一个稳定的v出来,但是如果拆到加速度a的层面,对a的估计应该是收敛的,要不然就是你算法设计的有问题。

刚才的匀加速直线运动有点太理想化了,飞机可不是匀加速直线运动,通常这个a甚至还是v的函数(因为v影响了受力,由牛顿第二定律F=ma可知受力反映在加速度上)。所以,飞机的方程其实更像

v˙(t)=u(t)θv(t)

加上一个

v(t+1)=v˙(t)dt

这基本上才是比较复杂的一个动力系统,这里说一下表示法,v˙表示v的导数,也就是加速度。这里,我们的新模型,不知道的是θ(我们真的不知道,没有谁能告诉我们飞机飞起来这个升阻力怎么算的,这也是为什么我们要给飞机做参数辨识)。

看看我们手里有什么:能测出来的速度v,能测出来的加速度v˙,状态方程和一个积分。那我们自然想到,我们直接猜一个θ,代进去,算一算这个v^(是的,一般用 ^ 表示我们猜出来的量)跟我们观测到的v是不是一样的,也就是输出误差法,Output Error Method,OEM

我们来手算一下(就欧拉积分吧,反正它不是积分方法能救的):
第一步:v^1=v0+(u0θ^v0)Δt
第二步:v^2=v^1+(u1θ^v^1)Δt

k 步:v^k=v^k1+(uk1θ^v^k1)Δt

不难发现,v^k要从v^k1算,v^k1要从v^k2

再看每一步,很容易能想明白,这个θ要是有一点不对,那误差累积可太快了,每一步的误差全加进去了,最后算出来个超越宇宙第一速度的飞机,你直接发明时光机!

那我不积分呢?直接测v˙(或者前后用差分算一个),这样就能算每一步里θ猜得对不对了,这样就不用回溯那么多步,这就是方程误差法,Equation Error Method,EEM

你若是稍对飞行器的动力学方程有所了解,那你很快能想到EEM的另一个优点,那就是不用积分。为什么这特别重要呢?深入一点,我们可以知道飞机的受力一般建模成F=qSC(这个L就是算升力,填D就是算阻力,填Y就是算侧向力,飞行力学,轻而易举啊!),q是动压,S一般是机翼面积,不过这不是这里讨论的主要问题。

主要问题在哪呢,力矩。力矩一般建模成M=qbSC(同理可以填l,m,n),多了个b,一般当它是机翼长度,不过这也不重要。你可以注意到,这里是M,跟上面的F不一样,F直接用F=ma就得到a了,质量m还是很好得到的,而M是转矩,有这么个关系M=Iϵ˙ϵ就可以是任意角,俯仰θ啊(这跟我们要猜的θ没关系),滚转ϕ啊,偏航ψ啊都行,但是这个I就非常麻烦了。第一,要是算三个方向,那这个可以填得四面八方;第二,跟方便的m不一样,这玩意儿飞行中没法测(落地了可能也没法测)。

所以EEM的另一个优势是,不用积分v˙不用积分ϵ˙,那就完全不用考虑I了。

好处说完了,坏处呢?

那就是另一个老生常谈的问题了,噪声。传感器有自己的测不准原理(那显然不是量子力学那个),你想让它准的时候就是不准,你觉得它不准的时候它就是准的。

噪声高高低低,但是一长串加起来就互相抵消了,也就是说,OEM积分那么多步,最后噪声误差反而消掉了(即使误差还是不可避免地累积)。但是EEM呢?显然它就会跟着噪声跑,这一步上它就跟着上,这一步下它就跟着下。那显然我们要让它冷静一点,也就是不要上上下下的,保持住最好,也就是恒定增益Constant Gain的来历之一。

另一个问题是什么呢?我们光有评估误差的方法,怎么猜θ又是一个问题。这其实高中就学过了,就是最小二乘法,而由于它是每一步都在用最小二乘法,所以正式名称叫递推最小二乘法,Recrusive Least Squares,RLS

如果了解最小二乘法,那你应该知道,为了让数据能拟合出来,最好这些点散得开一点(也就是多点变化),以让它每一次的迭代有更多的参考。但,飞机,可是不能在天上五花八门地飞,那最小二乘法恰恰就没有那么多参考,也就是激励不足。所以很有可能它很快收敛(估计值不变),但是收敛得不一定对。

那我看得远点呢?这样不就有可能有更多的变化了?它陷入当下的窘境是因为光看现在的变化了,那我让它记一记以前的数据呢?也就是加个遗忘因子Forget Factor,每一步都要跟之前联系起来,这样一来就变成了带遗忘因子的递推最小二乘法FF-RLS。但这就导致噪声同样被记录下来,尤其是因为这个遗忘因子窗口有限,根本没办法让噪声高高低低抵消掉。

到这里,你都知道要干什么了。既要让算法能适应变化,又要让算法不要那么跟随变化,前者不就是EEM吗?后者不就是更长的记忆窗口吗?

哦!呼之欲出!

对,就特别简单,EEM不是跟着跑吗,我就让它有自己的步子!RLS不是激励不足吗,我就手动推着它跑!这共同指向了一个地方,那就是,增益稳定,多稳定算稳定呢?就是常值,那最稳定了,这就是恒定增益Constant Gain。再缝到EEM上,不就是CG-EEM了吗?

也就是说,我们有残差

ek=ykxkθk

然后呢,为了猜这个θ就只需要乘一个增益K

θk+1=θk+Kek

稍微学习过自动控制原理的同学马上发现了,这就是最简单的常矩阵反馈控制啊!参数辨识原来就是个控制问题?还真是,可以理解为参数辨识就是个控制问题,系统是辨识算法,控制目标是让残差变小(但是我透露一下,我后续的文章可能要对此提出挑战,残差变小不一定是唯一的控制目标)。

还感兴趣?那读读文章吧

这个过程,其实就是我探索的过程,我目标本来是搞气动参数辨识,最开始用UKF这一类OEM方法,后来用RLS,发现都有问题(尤其是UKF,我看大家写文章闭口不谈它特别容易崩掉,就是Cholesky分解要求正定矩阵,但是现实算出来的往往非正定,这问题折磨了我好久,最后什么结果我不言自明)。所以当我偶然把那个步间增益删掉的时候,发现跑出来了特别好的结果,我一晚上没睡把这篇文章就写出来了。

我主要在这里记录方法的思想,详细数学公式什么的看文章吧,肯定比在我博客上看舒服。

这篇文章算是我在学术界正式留下的第一个脚印。然后,可能读博之前还有几篇文章吧,等发出来我再讲。希望我能申请到一个研究几何的课题组,到时候深度数学不要让我掉光头发就行。

感谢大家看到这里,如果你对系统辨识或者飞行力学感兴趣,欢迎随时留言交流!咱们下篇文章见!