2019年你的控制理论研究有什么收获和感悟？
2019年初加入了一家自动驾驶初创公司，到现在也快一年了，正好借此问题谈谈自己的想法。这里我就匿名好了，反正知道我是谁的都知道我是谁。 我的前东家是一家很偏重硬件的汽车相关公司。像我这样精通控制理论但是此前没什么车辆运动学经验的人不怎么受待见。大部分人对我的印象就是入门级别的工程师，慢慢学去吧。这种传统的硬件公司，重心都放在硬件上，认为只要硬件搞牛了，控制起来性能自然就上去了。无非不就是把反馈gain调大嘛，硬件做好了，gain就能使劲往上调了。这也是底特律派（传统主机厂车厂）的那种思维模式。在这种大环境下，去年我还是带着一个超小的组，硬是搞了一些牛逼的控制算法，在没有改变任何硬件结构的基础上，把产品性能提升了一倍。和公司另外一个吭哧吭哧研究硬件提升，烧尽无数美刀的上百人的组做到的效果等价。后来CTO私下对我说，我看你这人虽然不怎么懂控制，但是好像懂点优化和data science，还是挺好的。听到这我就真下定决心走了，再不走真变成data scientist了。 于是今年年初加入了某超有前途的自动驾驶公司。感觉跟这些人一起应该很有共鸣吧，这么多名校博士博后，机器人机器视觉机器学习深度学习各种神经网络，应该可以很开心的探讨数学问题了吧。结果没过几个星期开始就傻眼了。搞控制理论的在这里照样被鄙视啊，而且是从另外一个维度被鄙视。首先，我这种吭哧吭哧推公式，对实际问题建模，设计控制器，推敲控制理论的工作公司里不被考虑为是在做research的，或者说在自动驾驶行业控制理论恐怕压根儿就没被列为research范畴。后来我才逐渐明白什么是research, 就是只有chief scientist带领的那几个搞pomdp的，做纯machine learning，AI的才算是research, 他们的日常工作就是不停的发cvpr, NeurIPs这种会议。顺便提一句，这个所谓的pomdp （partially observable Markov decision process）的概念看到就烦，提出这个名词的人到底懂不懂什么是observable? 系统都不observable了还控制个毛线啊。这样一个破玩意儿还被那么多人捧的跟什么一样。 因为planning和control比较接近，我就经常和planning组的人打交道，后来也渐渐发现，这些搞planning的PhD们也根本没人懂控制理论，或者说不屑于学控制理论。在他们眼里，你搞控制的不就是调调pid就好了嘛，重点还是我们高大上的planning算法啊。我自己热心的propose过好几次在reading group上给大家讲讲控制理论基础，后来讲了一两次，发现没人听得懂，再后来也没人叫我讲了。后来面试的时候也是郁闷的要死，美国某所谓的cs第一名校倒是给我们投了无数简历。很多自称懂控制的，面试了一下我就崩溃了，只要做过的项目里出现过个pid的就敢在简历上自称是懂控制的。我问他们些最基本的问题，例如：积分器的传递函数是什么，答不上来；一个积分器构成的系统可不可控？答不上来。更不要提稳定性之类的了。但是这些人简历包装的都很赞。比如当我第一次看到一份简历里写道自己做过一个项目，搞出来一个蛇形机器人，里面用了MATLAB的鲁棒控制工具箱各种H无穷的函数，我还激动地不行。后来连着看了几份简历，发现怎么各个都做过蛇形机器人，各个都用了H无穷？才意识到原来就是一个课程项目，只能说教授课程编排的真好。后来就直接放弃看这个学校的简历了，反而是像UMich这样的学校，才能真正招到一些控制理论很扎实的学生。另外更鄙视control或者传统自动化工作的，可能就是属做computer vision的了。这个方向出来的人很多都感觉很傲慢，感觉他们都认为cv可以解决一切问题，传统的控制和自动化将来都可以被他们所取代，且丝毫不尊重传统自动化和工程领域里积累的经验和对于安全的考量。下面就把上述的这些人统称为learning的人吧。 我对这些learning的人感觉有几点。首先，他们的数学很挫。他们的那些论文真的没法和TAC, Automatica去比数学的严密性。这也源于他们解决问题的方式：有个想法就写一大堆程序去试，去调参数，如果能跑通了就发论文，也不知道为什么能跑通。跑不通更是不知道为什么跑不通。其次，这些learning的人对传感器数据处理非常的无知。就不说分析信号的信噪比了。单说数据融合问题，动不动就要上EKF来做最优估计，效果不好了就不停的调方差。我提过好几次对于一些简单的情形用complementary filter就好了， 结果不出所料被人鄙视，因为不是最优。而且用EKF的人很多都是直接套公式，也不知所以然，也不知何时能收敛，反正就知道个最优。最后说说工具，现在CV和planning普遍流行用ROS, 而做过实际控制开发的人都知道ROS这种本来是教学用的工具根本没法做到real-time control, 当然了，这些learning的人恐怕也不知道real-time有什么意义。我在公司里费劲千辛万苦推广MATLAB/Simulink的Model-based design解决方案，也是不出所料的被各种鄙视，遇到各种阻力。尽管我苦口婆心的解释：现在路上跑的车里面90%以上用的都是Simulink自动生成的代码，自己手写的代码是没有办法通过ISO26262... 依然没用。learning的人就是喜欢用开源的ros, 自己写c++和python, 这才是他们高大上的体现。我这种用MATLAB不是自取其辱么？当然，这也不限于我们公司，我之前有个哥们儿去面试waymo的控制工程师，结果人家每轮面试都用c++恶心他。最后果然挂了，但是顺利去了福特搞自动驾驶，感觉那里才更适合他。 最后来真正谈谈感想吧。我以前很傻很天真的觉得控制理论太数学，太严苛，发展太缓慢了，跟不上时代，跟不上其它热门学科发展的步伐。也曾埋怨过我的研究生导师们：为什么仿真都做出来了还是不让发论文，非要把原理证明出来？但是现在，我才逐渐意识到，这种枯燥的数学推理，这种严苛的证明要求，才是非常非常有意义的。它可以直接影响到一个产品到底是可靠，持久，安全，还是只是炫酷，昙花一现。然后，控制理论大师们的很多心血结晶还没有被我充分的学习和掌握到。那些Learning的人遇到什么未知参数，最喜欢的话就是“我们可以考虑用learning的办法解决”，殊不知这就也许就是个经典的系统辨识或者自适应控制的问题。而且可能已经有大量严格证明，久经考验的结果摆在那里等着被用。 以前，我也跟风的去搞过机器学习，摒弃控制理论。今后，我会把工作的重心重新放回控制理论和控制工程，做出可靠，接地气，真正能满足市场需求的工业产品。也许产品中会加上那么一丁点人工智能的元素，我觉得那也许就够了。这就是2019我对控制理论研究的感悟。  