控制的未来在哪里？
一种可能，别人用上了，效果好，自己用不上，乃至说不知道怎么用，只能用PID，这说明自己落后。 另外一种可能，有很多所谓先进的理论和算法确实很难在实际中用，根本就是为了发论文而做的。 还有一种可能，大家都在用PID，但控制效果远不能令人满足，只是暂时找不到/发现不了更好的方法。 另外有个值得注意的，底层是PID，看中上层是不是PID。即虽然是PID，但是是结合比如自适应、模糊、容错等等。而且PID的调参是否用了比如频域分析、鲁棒等等。 如何区分这几者，是很重要的。 --- 以上是短答案，以下是较长的回答。 之前一个朋友（搞电力电子控制的）说的，他们领域的，好像是一对夫妻，原来学术界的，后来创立了一家公司 ，as its name indicates，做电力电子方面的control。其实电力电子方面，现在的智能电网，有非常多的控制问题。 偏过程控制的公司，有 ，这名字说得已经很清楚了。 除此之外，还有很多或有名（Honeywell霍尼韦尔）或不大有名的，做偏过程控制。其实壳牌、美孚也有相应的部门。 说到这方面，咱中国人也不差，有朱豫才老师在荷兰创立的太极控制（怎么成了“太激光控制软件”“泰极控制 泰极软件”？ ）Taiji Control（ ），也有王建老师的优化佳控制（ ）。别的不说，看这两个公司名字取的！！！二者也都偏过程控制。 其实过程控制不光是化工，发电厂什么的也都是（GE在这些方面也在做）。而且发动机控制什么的，也很难说属于哪一类。 而这些公司不都是试图把所谓的先进算法用在实际中吗。 这些努力，也许是白费的，证明某些算法不能用。但也慢慢证明某些算法确实能用，比如一些系统辨识算法，比如预测控制。 技术发展就是这样一点点进步的。难道控制算法不再发展了？PID也才有大约一百年的历史（ ）。而且不去尝试，永远不知道新理论和算法能不能用。 随着相关技术，特别是传感器技术的不断发展，芯片运算速度的不断加快，也有可能出现之前不能用，以后能用的情况。比如预测控制也可用到运动控制中了，当然不一定叫预测控制了，可能叫Receding Horizion什么的。。。 这里又要岔开一句。其实芯片速度只要快到一个控制周期（一般由被控对象决定）内能计算完所有需要在线计算的，也就不会带来更多益处了。而且位数精度到了干扰的数量级（其实一般早就到了），也就不再有益处。倒是传感器，有时候执行机构也是，采用频率跟精度远远不够。 况且在现实中，PID算法是远远不够的。 比如某射电望远镜，之前都是用PID来调，后来转为用LQR来设计参数。不过设计完之后，又用频域的波特图看过，才敢实行。最终效果好很多。原因很简单，在模型不精确乃至没有模型的时候都能用PID，说明PID是适用范围广。但没有免费的午餐啊，适用范围广，则对一个特定的系统，往往效果离最好差很远。而望远镜是人造的，模型比较精确，而且工作环境不确定性小，所以用LQR效果较好。 这里还有个有意思的问题，就是量产跟不量产的区别。比如这个射电望远镜，就这一个，那就可能调得精确些。如果是量产的话，那各个的机械跟电子部分肯定会有差别，导致模型有差别。而这差别其实有时候是影响很大的，甚至说一个螺丝少拧半圈，原来的控制算法就要重新调。这时候，大概就不能用这么‘阳春白雪’的控制算法了，要‘下里巴人’一些。 况且，只做这其实不是商业产品，所以在某种程度上不用受成本限制，所以传感器可以做到比较好。还有一个问题，就是这不是大众消费品，就这那个天文台里面，没有什么风吹日赛，也不会在大众手里鼓捣。 这样便可以想见，以后做大众消费品的机器人，包括现在的无人机，控制算法要做到多么的鲁棒：首先产品的硬件会有区别，除非对每单件单独调参；其次受成本影响，传感器曲线差；再次使用环境不确定性大，干扰大；而且还要在一般用户手里捣鼓，摔一下，磕磕碰碰很正常；而且用的时间长了，硬件会发生一些变化。。。 简单的说，从理论角度，对于单入单出的线性系统时不变系统而言，PID存在，提供了三个参数，调整闭环系统的极点位置（或曰特征根，一个极点对应一个动态模态，即动态响应的大致形式）。一个n阶系统，需要n个参数配置极点。那三阶及以下的系统，PID当然就够了，乃至只需要PI、PD，或只需要P，视具体情况。甚至到了三阶以上，如果系统某些本身的极点已经非常稳定了，有时候PID也足够了。同时，也很容易找到三阶以上系统，无论如何都需要三个以上的参数才能让系统稳定，这时候当然PID不够用。 但这些高阶系统，有很多是可以分出层来的，及可加传感器控制中间某个变量，串级控制，如果串级的每一级都用PID足够，那就成了串级PID。比如四旋翼，从电机电流，到转速，到旋翼升力，到加速度/角加速度，到速度/角速度，到姿态/位置，就引出了好几个串级。 这里岔开一句，四旋翼转速到升力，会受空气动力学的影响，不是线性的，而且接近地面时不一样，不同空气密度又有影响。升力到加速度，跟姿态有耦合，而且跟倾角有非线性的关系，同时不同的质量又有影响。这里面要做得好，要考虑解耦，非线性，自适应等问题。 从不那么偏理论的角度说，其实可以感到PID是提供了三个自由度，就像三个操纵杆，控制一个东西，不知道那个东西的运动跟这三个操作杆具体什么关系，只能试试凑凑。但操作杆只有三个，三个自由度而已，有些动作可以完成，有些动作不能完成。但是，如果增加了操纵杆，增加了自由度，虽然可以完成动作的可能性大了，同时操纵的难度也增加了。 从宽的角度说，那就是耦合了。处理高阶，深的系统，PID有串级这一大杀器，只要中间量能测量，通过传感器往外引。而且一级级的可以加饱和。但处理宽的，耦合的系统，PID就比较难调了。几入几出、耦合弱的还能解解耦（而且解耦是要基于耦合模型的），十几入十几出，乃至更多，加上强耦合，有时还有硬约束，那几乎是没办法调的。 从不那么偏理论的角度说，每个PID像三个操纵杆，控制一个东西，不知道那个东西的运动跟这三个操作杆具体什么关系，只能试试凑凑。有十几个这样的操纵杆和东西的话，之间又有联动，那可能性多了去了，（十几×3）×（十几×3），想要让那十几个东西完成一些动作，就很难动过试凑来做了。 现实中，大多是PID作为底层稳定住各个单入单出的子系统，MPC在其上层做慢速的（相比PID）的优化计算，把这些耦合、约束都考虑进去，然后算出来的是各个PID的设定点。MPC算一步的时间，足够PID动态过程结束了。 智能控制的定义其实很难划清，大致包括专家系统，模糊，神经网络，学习，然后结合各种优化算法的控制（遗传、粒子群、蚁群、模拟退火等），等等。 其实可能大多数人接触智能控制，会经历“哇，这么好大上”->“靠，原来如此”->“排列组合发论文，都是在忽悠”->“其实还是可能有点用的”->“现在才算理解一点”->“其实还是没真正理解”。。。其实不只是智能控制啦，很多东西的学习都是如此。 先说最简单的，结合各种优化算法的控制。其实这些优化算法都是单独存在的，只不过控制问题转化为一个二次型的优化之后，用这些优化算法来求解，就是优化参数。这样的话，其实任何优化算法都可以结合控制：各种优化算法×各种优化指标×各种控制器（如PID，状态反馈等等）×。。。。排列组合多了去了，论文也就多了去了，导致这个领域如今很受诟病。而且其实问题的核心不在优化算法（优化算法也有 ），而是优化指标。而这优化指标的选取几乎完全靠经验、试凑。而且建的模型本身的精度根本达不到这优化问题的精度，很容易精确的错。仿仿真还可以。 再岔开一句，建模，简单的分，物理建模（部分加起来），系统辨识（输入输出关系作为整体）；而物理建模本身，其参数的确定，也分为部分加起来，和整体辨识出来。物理建模，参数也是部分加起来，是当年物理学中就学到了，但往往会忽略掉很多东西。物理建模，参数辨识出来效果好很多，可以理解通过输入输出数据获得了系统全部的信息。直接系统辨识，其实有时候反而最完整的保存了系统信息。系统辨识的问题是比较难结构化，虽然有Wiener，Hammerstein等模型，但可以一些个环节。乃至跟物理建模结合起来，各负责一些环节。 系统辨识是个大领域，输入数据的设计，误差准则的选择，模型阶数的缺点，乃至时延的缺点，都非常重要，而且不容易。预测控制，是基于模型的，实际中基本都是结合系统辨识在做的。否则的话，模型都错了，那控制器就不大可能设计的好。 传感器也是系统辨识的一个重要环节。传感器精度直接决定了系统辨识的精度。 传感器曲线很差，模型也建的很差，就不要想着用“先进”的控制算法了，肯定精确的错；倒不如用PID什么的，大概的对。而且倒是应该用些“先进”的估计算法，数据融合，传感器信息融合，先把传感器曲线改善一些。然后用些“先进”的系统辨识算法，让得出的模型也改善一些。之后再考虑“先进”的控制算法。 现在的情况是，很多实际工程，“先进”的估计算法已经用了不少了，“先进”的系统辨识算法和“先进”的控制算法还比较少。这也就是很多人说控制工程等于PID+Kalman的原因。不奇怪，PID到“先进”的控制算法，中间还隔着“先进”的系统辨识算法呢（建模与模型分析）。 总而言之，先进估计+不基于模型调参的PID，先进估计+先进系统建模辨识+基于模型调参的PID，先进估计+先进系统建模辨识+先进控制算法，现在都是存在的，其中前两个自不必说，最后一个系统辨识+MPC+PID的组合在先进过控、能源类的控制等中比比皆是。落后这么多了，赶紧追吧，奇怪的是竟然还有人说MPC没用，赶紧去了解一下Aspen，Honeywell，GE，Shell，Exxon Mobil等的先进工业控制算法吧。而且当年登月，也是先进估计+先进模型+先进控制（最优控制+PID）的例子啊。 传感器跟估计的精度决定了建模辨识与控制的精度，然后传感器跟估计的精度，与建模辨识，一起决定了控制的精度。这方面，是可以量化的。 可见传感器与估计算法多么重要。传感器的校正是个大问题。这一点，看看玩无人机之前大家的在那绕啊绕的动作就知道了，况且在出厂前，也要做不同的校正。这方面，GPS有室内的天然缺陷，IMU只能等降价（要是不计成本的话，可以做到吓人的精确，比如核潜艇里面用的），现在做光流，视觉当然是个大趋势：软肋在计算机视觉算法。之后就需要更精确的建模与辨识算法了，然后是控制算法。毕竟现在无人机在很多方面还是受限制的，比如随便换相机，当然云台也是问题，送快递（加入新的负载），或者加抓取装置（整个力的分析就很复杂了）。 个人认为，在可预见的未来，随着传感器本身的发展，加上计算速度提升（在线UKF现在已经不成问题了，等到在线PF也不成问题的时候，不知将会发生什么，也许EKF什么的，终将被历史淘汰，败给强大计算能力支撑下的硬算硬模拟算法）带来数据融合发展，下一步必将发展的是更精细的系统与信号的建模与辨识技术，之后则会有之前用不上的控制算法逐渐被实用（当然，大部分现在的论文都是忽悠人的，几乎是一定不会被实用的），而更有可能的是，会催生出新的控制算法。其中自适应、自学习类的控制算法（很可能底层还是PID，这些算法在PID的上层）是最需要的。 为什么呢，因为毕竟过控类的，乃至登月，几乎谈不上扩展性的问题。反正登月就这一套东西，过控类很多时候也都是如此，即使复制多套，也会有专门人员再到现场逐个的调。但未来消费类产品，比如无人机、无人车什么的，那就不一样了，有点像手机，但又比手机的“控制”复杂的多。再比如无人地铁，空车跟满人的时候，质量差很大，这是最起码的自适应吧。当然可以想见，这自适应是上层，底册的电机电流转速控制当然还是跟之前一样。 其实这辨识，不仅包括系统，也应包括信号，有时叫干扰。不过这方面有不少实际应用了，因为比较好处理，很多时候前馈抵消掉就行。 鲁棒控制其实处理的是确定的不确定性，known unknown，其实算不上真的鲁棒性，因为还是需要确定模型来刻画不确定性的。真正的鲁棒性，要能处理不确定的不确定性，unknown unknown。伯德图频谱分析算是一个这方面的好结果。 其实越是到底层，其控制算法参数调节的‘物理意味‘越大。什么意思呢，其实不仅是工程经验还是理论都告诉我们，很多时候没有好坏，只有trade-off。比如disturbance attenuation或叫disturbance rejection，即各个频率点的干扰机制幅值，其平均值是大于等于一个常数的（不仅针对LTI的控制器，对任意causal的控制器也有类似结果）。这就意味着，再先进‘花哨’的控制器，总是要满足这个性能极限，不能做到所有频段干扰抑制强，都是按下葫芦起了瓢。也就是说，大多数时候不能说哪个控制方法更好：一个控制器高频干扰抑制强低频弱，一个低频强高频弱，怎么比？这里的干扰，包括确定的干扰，分析其各个频率的分量；也包括随机干扰，分析其功率谱。 还有比如快速的动态响应，往往意味更大的控制器信号输出，也就意味着执行机构更高的能耗。这也是个trade-off，比如有的控制对快速性要求不高，但想降低能耗；有的则想尽办法增加快速响应。 还有响应速度与精度的trade-off。其实这个很复杂。高频干扰或噪声时，当然直接trade-off，因为速度要求带宽大（其实是频谱更平），但高频就进来了。但是如果干扰在低频，那就不存在矛盾了。或是如果在各个频率很平均，那要降低方差，也须使得系统的频率响应较平。而且这还是说的干扰或噪声跟reference一个地方进来的，因为响应速度主要是说跟reference的响应。干扰或噪声如果从其他位置进来，比如传感器，或执行机构，或直接在系统输出上，分析就更复杂了。先不展开了，有感兴趣的再说。 说到性能极限，岔开说状态估计吧。卡尔曼滤波本质之一是，每一步，两个两个的，把预测值（基于之前的测量值）跟测量融合在一起，把能降低状态估计方差的所有信息都用上了。用在数据融合，比如加速度计跟陀螺仪的融合，也是大概如此。在其假设下已经做到极限了。 性能极限还有另外一种用处。比如一个框架，EKF，经验和理论都tell说，在某种问题，调来调去，也就这么着了，到顶了。要想提升只有换另一个框架了，比如UKF。 控制中也有类似问题。知道了这个极限，那么也就心里有数了，比如调PID，什么能做到，现状离做到还有多远。什么不能做到，想要做到应该换什么别的控制框架，或是在PID上面加什么机制。 就现在来看，PID上面，真正能用的，应对不确定性的真正的鲁棒性的控制机制，自适应控制机制，容错控制机制，现实中都非常需要。还有真正能数据化的PID调参机制，什么意思呢，就是把靠经验的调参方法，是不是能‘自动化’一点，即使一开始用专家系统或模糊。还有就是真正能用的故障诊断。 这里PID还有一个有意思的特性，就是不仅对被控对象乃至干扰鲁棒，就是改变一些其实也没大不了，只要不是在太critical的位置。而且对PID本身的参数鲁棒，三个参数改变一些也没多大大不了。别小看这一点，很多控制算法不行。 其实说到根本，这些控制算法、估计算法等，不过是某个框架下调参数。不管用什么方法，找到了那个现实中好用的框架与参数，就可以用。最简单的例子，只用PID中的K，有的人用工程经验，有的人用理论等，最后找到的那个K可能差不多。参数越少的时候，接近物理的经验方法其实越有优势，PID本身三个参数，加上改进方法，多是有很强的物理‘意味’。而且串级的话，可以PID一层层的调。但参数一多，离物理越远，人的经验可能很难顾的过来，这时候理论就有其价值了，但也要在整体上把物理搞清楚。 物理真正搞清楚了，剩下的就是数学、理论了，而且理论的分析会跟现实惊人的接近。否则的话，物理没搞懂，不知道发生了什么，效果好不知道为什么好，也就不知道什么时候会出问题，更别提出了问题该怎么办了，在这种情况下，说理论能用那只是一厢情愿而已。 'If Thomas Edison had a needle to find in a haystack, he would proceed at once with the diligence of the bee to examine straw after straw until he found the object of his search. … I was a sorry witness of such doings, knowing that a little theory and calculation would have saved him ninety percent of his labor.' --- Nikola Tesla 过度阐释一下。 特斯拉说，理论和计算可以节省labor，这是当然。以控制器设计为例，最一般的，控制器的输出是过去所有误差的函数，u_k=K_k (e_k,...,e_0)。但如此这般，没有任何结构，没有任何框架，K_k的空间也太大了。这时候，如果用PID（PID也是理论啊，而且作为理论框架几乎无处不在，只不过调参很多时候是靠经验），那就把K_k的参数空间一下子减少了很多。 卡尔曼滤波、预测控制等等，也多是如此。作为理论框架，提供了结构，一下子减少了参数空间。 但特斯拉说，减少了90%的labor。即还是要有labor的，主要是在调试、调参上。PID的P、I、D，卡尔曼滤波的Q、R与初值，预测控制的时域长度、优化目标等。 这调参的labor还能再减少吗？靠经验当然可以。同时，逐渐的有理论的调参方法，在实际中被证明可用。而这是所有这些算法做到真正自学习、自适应的必经一步。否则的话，要重度依赖一些基于经验的规则库，像专家系统、模糊等。 但这一步也是减少，不是一锤子定音。因为理论的计算，终归要基于模型。而模型的建立，可以处理known known，乃至可以处理known unknown（鲁棒等），关键在于找到unknown known（体现水平的关键），但总是无法处理unknown unknown的。但如果前三个，known known，known unknown，unknown known，处理的好，作为实际调参的初值，乃至提供大致范围，也就省了labor，特别是unknown unknown足够小时。 其实很多时候，unknown unknown都不大。但为啥理论跟实际差这么远呢？关键在于unknown known。比如有很多环节，信号或系统，明明是确定的，有规律的，可以预处理抵消掉或有其他方法处理（比如前馈控制，估计中也有类似trick），但常常被当作随机的。这样的话，代价就是把压力放在了算法上面。 特斯拉说：爱迪生啊，看到一个工程问题，上来就调，试错法。对此我那是相当无语。很多时候，所谓经验，不过是还未找到规律、模型、理论的raw data，但找不到不代表不存在，而且从历史来看，是一定存在的，找到一个就是科学的一次进步。摸索当然是对的，是积累经验，但如果能总结出规律，做出模型，乃至理论框架，那就可以节省很多时间啊。纯属虚构。。。 岔开一句，也许控制系统下一步的发展还是要向人（或其它生物）来参考。什么意思呢？比如《最强大脑》中曾有一期是两位盲人，一个通过发出响声，一个通过吹风，来定位。这不就很像现在的声纳，乃至Lidar吗？视觉还基本没用上。而从人的角度来衡量的话，声纳等对‘定位算法’的要求，可比视觉大多了。再比如单腿站立，或其它需要保持平衡的情况，闭着眼睛与睁着眼睛可就差远了。 还有一期，是比赛通关激光光线，蒙上眼睛，则对身体本身控制的精度要求高非常之多。这不就像现在没有视觉的控制吗。还有，闭着眼睛写字，那是人类都几乎无法很好完成的任务。 控制算法要能处理known known，known unknown，unknown known，unknown unknown。 只此一件的控制系统，在较为确定的环境里工作，参数可以专门针对硬件，调到很好。但也会跟温室一样，系统乃至环境的很多东西有明确的规定，甚至细到某个螺丝要拧几圈半，外界的干扰要可忽略，等等。如此的系统，有时可以应用上较为复杂的控制算法，也就没有什么好稀奇的：known known知道，unknown known能通过对系统不断加深理解变成known known，known unknown、unknown unknown则可以通过对系统和环境的控制减少到可忽略。 但商业化产品中的控制系统，上量之后件件之间有差距，加上使用环境不确定的话，known unknown、unknown unknown都会大，而控制算法要能鲁棒（不仅限于传统鲁棒控制中的鲁棒）到可以处理到这些，即使known known、unknown known处理到最好。 这里的known与unknown，视具体情形，可以理解成，certain与uncertain，predictable与unpredictable，等等。如是便可分为，certain certain，certain uncertain，uncertain certain，uncertain uncertain；predictable predictable，predictable unpredictable，unpredictable predictable，unpredictable unpredictable。看似说的废话，排列组合，但如果真的有个实际问题，如此可以看得比较清楚。而且可以在不同的层面看。 比如一个信号，近似等于个高斯白噪声，用过去数据，估算出均值与方差，是known known。但肯定不准的，因为现实中就不存在标准的高斯白噪声，于是做出一个误差区间，有各种做法，算是known unknown。但known known跟known unknown加起来，也还是与实际有差距，是unknown unknown，是there is nothing you can do about it的了。但常被忽视的是unknown known，比如这个信号里面，可以分离出一个周期信号（不一定是正弦），是一个干扰。知道之后，unknown known变成known known。如此等等。 前面说了，可以从不同层面考虑，比如信号分成确定部分和随机部分，确定部分是known known。但确定部分与实际的确定部分有差别，是unknown known。随机部分，知道分布的话，是known unknown。随机部分也与实际的随机部分有差别，是unknown unknown。如是如是，不一而足。从这个层面分析，不如上一段中的分析对实际有指导意义。 当然还有系统。比如一个系统，有输入输出数据，建模、辨识出一个LTI模型，有参数，是known known。但这个模型肯定不是完全吻合数据，所以要给一定的不确定性，比如在参数上，可能有个区间，是known unknown。即使加上这个区间，也还是与实际有差别，是谓unknown unknown。但如果一分析，发现这个模型其实可以分离成一个LTI模型，加上一个比如Wiener模型，就是unknown known被发现了。 当然也可以在不同的层面分析。 参数很多，花时间调，总能调出个鼻子乱舞的大象，特别是在仿真中更是如此。但物理学的历史告诉我们，这个时候，应该是存在更有结构化的理论框架。当然，这样的理论框架，如PID，如Kalman滤波，等等，也还是留有一定的参数让在实际中调，因为known unknown与unknown unknown，是另一个层面的问题了。 物理学中有个著名的known unknown，测不准原理。但也有问题,有无大一统理论? 不能得到某个现实的工程对象到底是怎么运转的，只能得到现实世界的一个数学模型。模型与现实之间的差距，是一定存在的，只能说慢慢减少。也就说unknown一定存在，能做的仅仅是让更多的变成known。 非线性泰勒展开看来要尤其注意了。 假设一个系统比如为LTI或一个信号比如为高斯白噪声时看来要注意了。 模型不能解释实际，那就是模型错了。 时域、频域，乃至熵域，还有各种变换如小波等，等等等等，可以从不同角度分析同一个问题。 别就认为自己擅长的那个模型就好，啥都往上套。这里的模型，也可以改成算法，等等。 各种数据预处理看来也不是随便就可以做的，有时候可能处理掉很重要的信息。 模型与现实之间是有差距的。即使在模型中，理论或仿真，算法可以调到象鼻子乱舞，乃至无所不能，那也不过是模型。反正参数可以随便设，随便调。拿到现实当中呢？ 即使现实中可行的，有的算法是一万次成功一次，算是做个演示；有的成功失败各半，那就剔除失败时的数据或场景设定等等；而有的则一万次几乎都可以成功，乃至可以达到六西格玛。等等。 信号、系统等等的数学模型都是假的。最好的模型就是信号、系统等等本身。但是太复杂，有太多的因素，所以我们不可能一一考虑。这个时候，我们就要把它们简化，把其中最重要的因素抽取出来，这就形成了我们的数学模型。 但是。有一个很关键的问题就是，你怎么才能知道，这些因素中，哪些是可以舍弃的，哪些是必须要提取出来的呢？这个从数学逻辑或者算法的本身你是找不到答案的，这个需要你对信号系统的物理本质的深入理解。所以，要把数学的实用价值作用发挥出来，你不但要通数学，通算法，还要通物理，通工程。 什么意思呢？ 不基于模型的算法，可以直接在真实世界来调。但问题是，调也只是在特定的环境之下，如果环境变了呢？而且这样的话，永远做不到阵阵的自适应、自学习算法。 基于模型的算法，调是针对模型来调的，不是针对真实世界来调的。只不过是希望模型跟真实世界“差别”不大，因此算法在实际中的效果也与在模型中“差别”不大。不论是数据的拟合，还是系统的辨识，等等，关键问题就在于怎么样判断哪些是可以舍弃的，哪些是必须要提取出来的。 当然，这个问题可以从不同层面理解，也不限于信号与系统。 一 PID/PI/PD/P 前馈 串级 处理饱和 Bode图等频域分析 性能极限的分析 鲁棒性分析 二 专家系统 模糊控制 自适应控制 预测控制 passivity-based控制 act-and-wait控制 迭代学习控制 容错控制 variance minimization控制 三 Smith预估器等内模控制 最优控制 H无穷和其它鲁棒控制 滑模控制 Bang-Bang控制 deadbeat控制 各种智能控制 四 look-up table 系统辨识 Kalman滤波 五 以上当然有overlap 另一方面，也可有组合，如： 专家系统PID 模糊PID 自适应PID 容错PID 乃至 自适应专家系统PID 自适应模糊PID 乃至 容错自适应模糊PID 。。。 先列出来，以后增加解释 --- 改变系统带宽、时间常数、阻尼等等吧，在（控制）算法上做，其实远没有在物理（机械、电气）上来的直接。 但是物理上改，比算法上改，“cost”大，周期长，很难iterate。 很多时候，是物理部分（包括系统，乃至包括干扰和噪声）给定了，不能或者很难随便改的。这时候，看算法该能再优化到多少。这个时候，就体现出limitation的意义了。当然，这能优化多少，是由物理部分决定了的。 再反过来说，limitation跟物理部分的关系，其实可以指导第一步时物理部分本身的设计跟改造。 --- 如下的几段，本来是删了的。没曾想网上流传的删之前的几个版本（希望大家以后转载注明出处^_^）。在这里干脆把这一段，综合一下，再加上吧。 There is nothing more practical than a good theory. 这句话的出处，网上说辞不一。其中有很多人说是Maxwell说的。麦克斯韦方程，当然是good的theory。但并不是所有的理论都是good的。其实自动控制发展这么多年，good的理论并不多，PID、卡尔曼滤波自然在其中。但也并不是网上很多人传的那么少，绝不仅限于这两个。 如今的计算机时代，这些good的理论，因为要practical，一定还有另一个特点，那就是同时也是good的算法。 先从Kalman Filter，卡尔曼滤波，开始说起吧。 吴军老师的《文明之光》里，有简短的一段介绍，这里贴在下面（侵删）： 不过纠正一下，确切的说，卡尔曼滤波是个估计算法（估计过去叫平滑smoothing，估计现在叫滤波filtering，估计未来叫预测prediction）。控制用的是最优控制。不过两者都是基于状态空间方法，因此被统称为现代控制理论（时域）。其实状态空间方法中的很多概念，如可控性/可观性，也都是卡尔曼提出的。 卡尔曼之前，控制与滤波理论中，经典控制理论（基于传递函数方法，频域）占据主流。而他几乎是凭借一己之力，扭转大方向到时域。有意思的是，卡尔曼到了晚年（仍在世），却到处推广一些的频域的想法。卡尔曼还曾讨论预测控制。模型预测控制（预测控制，Model Predictive Control，MPC，Predictive Cotnrol，Receding Horizon Control，Moving Horizon Control，Dynamic Matrix Control），另一个good theory，之后也会谈及。其实别的不说，就看这么多不同的名字，不同小领域的人们给它的，就知道它应该是用处不少的。 卡尔曼何许人也，Rudolf E. Kรกlmรกn，半个数学家。想必很多第一次接触卡尔曼滤波的推导时，都会有这个疑问，这么数学化的东西，还这么难推导，在现实中能用么？难道比用了这么多年的频域滤波靠谱？但它就是能用。而且频域滤波怎么调都调不到卡尔曼滤波的效果，因为卡尔曼那滤波已经不是线性时不变的了，而是线性时变的。这才是good的theory，已经超出了所有已有的框架了。 针对非线性系统，有EKF（扩展卡尔曼滤波，Extended Kalman filtering），UKF（无味卡尔曼滤波，Unscented Kalman Filtering）等。其中这UKF，是Simon J. Julier教授（http://www0.cs.ucl.ac.uk/people/S.Julier.htmlFirst-Hand:The Unscented Transform）的结果，也是个good的theory。实时应用中越来越多用到，比EKF准确，比Particle Filter（粒子滤波，PF）速度快。当然，PF的应用也也越来越多。说起Particle Filter，不得不提Monte Carlo算法。是冯 诺依曼与乌拉姆提出的。 所有的这些，都是理论化的，有的乃至很艰深。但同时却在实际中用的很多，乃至随处可见。可有趣的是，数学家不认为这些是数学，而卡尔曼、香农等，甚至都不被认为是数学家。当然也不认为是工程师，因为搞工程的，却觉得这些都是数学。从这一点上，卡尔曼、香农等的理论，其实更像是物理学，人造系统的物理学。传统理论物理学，是研究自然的，实验物理学家觉得是数学，但数学家不承认是数学。这一点上，尤其相似。 回到原问题，但并不是说所有艰深的理论都能用。其实绝大多数都不能用。这之间的差别在什么地方呢？ 一个朋友说，曾被卡尔曼的学生之一的Y Yamamoto（Yutaka Yamamoto's Website）教授“训”了一顿，仅仅是因为自己在讲述一个问题的assumptions（假设）的时候，觉得不大重要，叙述得不大严谨。Yamamoto教授直接就说，作为engineer，也不能sloppy with math，也提到了卡尔曼经常对engineers' sloppiness with math很不满。其实就词典，Yamamoto教授曾写过一篇文章，My Florida Days with Rudolf Kalman （IEEE Xplore Abstract (Keywords)）： These seminars were not like the ones I was familiar with. He often interrupted the speaker and started asking questions. Some questions seemed to take the speakers off track. He would pose a question on whether the theory is based on the correct assumptions or in the right framework, or even the right definitions. As a starting Ph.D. student, I was not aware how important it was to question whether we base our new theory on “right” definitions. In an ordinary seminar, we would naturally take the attitude that a definition is, after all, a definition, and we would hold our breath until we see the outcome. The seminars at the Center were very different. Rudolf Kalman always tried to see whether the theory is built on a sensible and fruitful definition. I soon became more comfortable with examining basic hypotheses and saw how important it was to do so. Obviously, such an attitude is also very time consuming, but I was convinced that it is the right way to understand and build theoretical developments. Later his favorite citation was one from Newton, “Hypotheses non fingo.” (I do not invent hypotheses.) My candid interpretation would be “I do not fiddle around with hypotheses.” He always emphasized clarity in understanding. His frequent usage of the phrase “What is crucial here is …” reflects how he places emphasis on clarifying the role of certain key ideas. Merely proving a theorem is obviously not enough for understanding a problem. What one needs to see is the overall structure, how a certain assumption plays a crucial role in a critical step of the theory. He has an incredibly deep intuition for seeing the critical steps in the overall structure of a problem. This intuition played a great role in formulating the filtering problem in the state-space theory. That theory has flourished as Kalman filtering, and this is merely one outcome of the state-space approach that he initiated in the late 1950s. 而牛顿的原话，是这样的（Hypotheses non fingo）： I have not as yet been able to discover the reason for these properties of gravity from phenomena, and I do not feign hypotheses (Hypotheses non fingo, Latin for "I feign no hypotheses," "I frame no hypotheses," or "I contrive no hypotheses"). For whatever is not deduced from the phenomena must be called a hypothesis; and hypotheses, whether metaphysical or physical, or based on occult qualities, or mechanical, have no place in experimental philosophy. In this philosophy particular propositions are inferred from the phenomena, and afterwards rendered general by induction. 卡尔曼滤波的假设很明确，线性系统（可时变），加性高斯白噪声，最小方差意义下，是最优滤波器。不满足这些假设，就不是最优。还有个结果，就是如果系统是非线性的（可时变），加性高斯白噪声，最小方差意义下，是最优的线性滤波器。 而有如此严格的假设界定，才产生了各种之后的如EKF，UKF，PF等的结果，解决非线性时，卡尔曼滤波不是最优的情况下的问题。其中PF又可处理非高斯的估计问题。非白噪声的问题也有相应的处理方法。这些EKF，UKF，PF等，都是非线性时变的滤波器了。 卡尔曼滤波本身是线性时变的，稳态时趋近一个线性时不变滤波器，跟发现卡尔曼滤波器之前的频域滤波器的结果一致。也就是说，到了对偶的控制问题，variance minimization control，线性系统（可时变），加性高斯白噪声，最小方差意义下，最优的反馈控制器也是线性时变的。而PID是线性时不变的，所以PID不是最优。类似的，系统是非线性的（可时变）时，也有类似结果。 Yamamoto教授其实也不愧为卡尔曼的学生，发明了YY Filter，也是以自己的名字命名的。有一篇文章，Signal reconstruction via H ∞ sampled-data control theory - beyond the Shannon paradigm （IEEE Xplore Abstract），关键词有两个，一个是把鲁棒控制的H无穷算法引入到数字信号处理中的sampling与reconstruction中；另一个是已经超过了香农、奈奎斯特 Nyquist 采样定理（Nyquist）的框架了（其实原问题也已经不一样了）。 一个朋友说，Yamamoto把这个专利卖给某日本的公司，好像是Sanyo，每一件产品抽专利费，赚了很多钱。 说到这里，想起来之前一个朋友（搞电力电子的）说，好像是一对夫妻，原来学术界的，后来创立了一家公司 One-Cycle Control，as its name indicates，做电力电子方面的control。其实电力电子方面，现在的智能电网，有非常多的控制问题。 在网上看到两段话： 冯纯伯院士：电力系统的实践与研究结果都表明：为抑制电力系统中的低频振荡，提高系统的稳定性，在多机电力系统中设置稳定器（PSS）是一种有些有效的方法。…为了进一步提高理论的普遍性，我又深入研究了PSS在镇定电力系统中的低频振荡和提高系统稳定性的作用机制。由于PSS的设计只能取发电机组的本组局部信号，所以它是一种分散控制结构的稳定器。多级电力系统作为一个大系统，其中的低频振荡能否被PSS分散镇定，这一问题的研究无疑有着重要的理论价值与实际意义。虽然，当时国际上已展开对PSS的分散镇定作用的研究，但还是停留在一些现场试验、仿真和实践的阶段，还未提高到理论上来分析和证明。然而这些结果已经表明，PSS确实能起到分散镇定低频振荡的作用。我利用大系统理论中的‘固定模态’的概念及其定理，证明了多机电力系统中引起低频振荡的机械振模，在PSS的分散控制结构下都不是‘固定模态’，因而在理论上证明了PSS具有分散镇定多机系统中低频振荡的作用。但是，究竟需要装多少台PSS即可镇定系统的低频振荡问题，还有待于进一步的研究。 杨叔子院士：我还记得，在80年代初期，我一方面研究了力学中采用有限元方法解决大型结构及其子结构的设计问题；另一方面，我也在学习自动控制理论中采用递阶控制算法解决大系统及其子系统中的设计问题。当时，我以为从数学上将，这两者是一回事。由于客观原因，这方面研究中断了，至今我深感可惜。当然对从事力学与自动控制研究的学者而言，这很可能是一个十分简单的问题。但对于从事机械工程的我来说，确是具有十分有效的启示的。 --- 另一个答案： --- 任何控制理论和控制算法的应用，都得看具体问题具体分析。德国机械控制、日本精密控制、欧美航空控制、过程控制等等的工程师，为什么别人可用上新的理论？不要某个新的理论、新的算法有别人用上了，效果好了，如果知道了，就跟着用、跟着山寨比谁都快。但是别人没用上之前，或者别人用上了不知道，就盲目地在那里固步自封，说还是要靠所谓的经验，所谓的调参，但说来说去的经验啊，也还不是不成体系。德国机械控制、日本精密控制、欧美航空控制、过程控制等等的工程师的，也有经验啊。 如果因为偏见导致中国的控制工程水平一直赶不，这可不是闹着玩的。当然也算追赶得不容易。但也要想一想，既然是落后的，那就要反思落后在什么地方？一定是自己本身有什么地方做得不够好。落后的原因有哪些？用不上、或者说不会用新理论、新算法有没可能是原因之一呢？如果是的话，那就ironic了！ 用理论也得按照信号和系统模型的假设。当然也并不是说什么样的理论都能用。甚至说大部分理论是不能用的。如何甄别这两者，才是功力所在。而不是一棒子打死。难道人类的控制科学，就到此止步了？不要人云亦云。 --- 模糊控制创始人Lotfi Zadeh在The Evolution of System Analysis and Control: A Personal Perspective 一文中的对于Bellman动态规划的回忆： In the early '60s my doubts were not shared by many. The ascendancy of mathematical methods was unchallenged, and Lyapounov's stability theory and differential-equations-based theory of nonlinear systems moved to the center of the stage, as did the problems relating to optimal control and systems optimization. The highly original work of Rudy Kalman on controllability, observability, and filtering was at the center of attention. Another contribution of major importance, whose impact transcended disciplinary lines, was Bellman's development of dynamic programming. I became acquainted with Bellman's work in 1954 and perceived dynamic programming as a powerful tool of wide applicability. I suggested to Bellman to submit to the IRE Proceedings a paper describing his work. He did so, but to my embarrassment his paper was rejected by the referees, who felt that Bellman did not provide convincing examples of practical applicability. It is ironic that about 30 years later, Bellman was awarded IEEE's Medal of Honor for his development of dynamic programming. --- 未完待续。一己之见，欢迎补充指正～