控制算法手记--建模重要嚒?

写在前面

  • 在现实中,一个常见的情境是工程师或者初步接触控制算法设计的同学们看见某控制算法在特定应用领域取得了惊艳的效果后,于是倍加推崇。往往会直接套用到自己的问题中,经过一番折腾,发现效果并不理想,甚至还不如PID好,于是又回到控制理论无用论和PID万能论中去。这其中的原因在于工程师或初学者通常并不理解每种控制算法背后的基本假设和所要解决的一类数学问题,导致了控制算法泛化的风险;比如自抗扰控制ADRC在运动控制领域(被控对象通常满足串联积分标准型的假设,二阶系统)取得了成功,但对于过程控制(大死区、多回路耦合、复杂非线性等因素)却未必适合或者能够直接套用。

  • 控制实践和控制理论的脱节,除了理论研究和实践的导向不同,作者认为一个很重要的原因在于缺少沟通语言,即缺少对现实被控系统的数学描述(也即模型)。如图1(a)所示,一方面,控制理论研究者们直接从数学式子(一般为微分方程)出发,通过数学推导和证明,给出数学上的系统性质(如稳定域、可观可控等)以及理论上的控制率,缺少对数学式子如何得来、式子能在能在多少程度上描述现实系统,式子中每一个数学变量如何与现实被控系统中的物理量相关联、这些数学变量是否可以实时准确获知、运算这些式子的所需要的计算资源等现实因素的关注;另一方面,工程师面对的是一个个具体的被控系统(完成特定工作/工艺过程),需要处理工艺逻辑、信号采集/处理、硬件配置、软件编程实现等问题,且面临着现场调试压力,自然无暇也无力深入思考自己的被控系统到底如何用数学语言描述,本质归类为哪一类问题诸如此类的话题了。

  • 控制实践和控制理论之间缺少可以沟通的语言,使得一方面现实中亟待解决的控制难题高度依赖PID调试经验和手动干预,无法实现良好的自动化,更不用说数字化和智能化了;另一方面,大量在数学上证明严谨、优美的控制理论,却不能根据实际情况有效改进,从而在工业界有效落地推广。建模作为建立这一沟通渠道的有效方法,却面临着失语的境地,使作者深感遗憾。

  • 即使对于想要摆脱模型依赖的数据驱动控制算法来说,如果要在现实被控系统真正落地应用,建立合乎需要的数学描述(不要求精确,但应该能大概描述出系统主要动态特性)仍是必要的,这有助于控制算法的设计和调试,避免不必要的试错时间和成本。比如对于PID控制器(本质为数据驱动控制器)来说,如果系统为一阶惯性环节(比如电机控制中的电流环、速度环等),通常选用PI就足够了;如果对象为二阶环节(如位置控制系统),则通常需要考虑使用微分功能,以改善相位滞后,增大系统阻尼系数。
图1. 控制算法,控制理论、控制实践的关系

正如作者在专栏文章‘认识你的被控系统’所写,正确认识和认真对待建模在控制算法中的作用显得尤为重要(图1b),也格外紧迫,尤其在制造业升级转型和强调源头自主创新的今天。

好的控制算法应该是强大物理概念和数学工具的完美结合,即在对实际物理世界中的问题深刻理解的基础上,找到合适的数学工具去描述和解决。具体到控制算法的设计,系统动力学分析和建模作为联结物理世界和数学世界的工具显得尤为重要。

模型是啥?

首先应该明确模型是为定性/定量分析、正确描述被控系统从而设计合适的控制算法而存在的,这里面模型指对现实被控系统主要问题的数学描述

实际中,很多人会认为数学模型是不必要的,会把问题复杂化,直接在现场根据PID相关调参经验调试机器不就好了嚒,为什么要牵涉一大堆数学公式。然而,即使对于PID现场调试,适当的模型以及以此为基础的分析仍是必要的:

  • 你总要知道能控制的部分(控制输入)是如何作用于系统并影响到系统输出吧,是起正作用还是反作用,是立马起作用还是过段时间起作用,还是慢慢起作用,如图2所示的几种常见系统的阶跃曲线(为方便对比,进行了归一化处理);
  • 你总要知道你所面对的机器的工作过程/工况吧,这些工况下哪些参数/条件会改变,变化的幅度和快慢,以及是如何影响你的系统;
  • 你总要知道你的控制目标吧,精度是多少,动态响应/带宽是多少,允许的超调量;
图2. 典型阶跃响应曲线以及对应传递函数模型(延迟环节多见于过程控制系统)

以上这些,需要做某种定量性描述,并作一定理论分析,才能帮助你找到方向性得进行调试。比如,对于图2所示的几种典型阶跃响应曲线,借助于传递函数模型便可以分析、确定系统类型(如时间常数/响应快慢,是否有延迟,延迟/时间常数之比,是否欠阻尼,是否是最小相位系统)等信息,这些信息的确定有助于选择合适的PID控制器设计策略,是PID自动整定(auto-tuning)的基础。

实际上,取决于所要描述问题的类型,模型可以表现为多种形式。如果是动态过程,可以用频域传递函数描述也可以用时域状态空间描述,可以在连续域描述,也可以在离散域描述;如果是静态非线性关系,可以用多项式也可以用特殊函数,甚至模糊、神经网络等描述;或者两者结合形成的Hammerstein-Wiener模型。

如何建模?

在控制算法设计的语境中,建模应该是以控制算法设计/实施为导向的不是要把整个系统都进行建模,而对和控制性能最相关、能够代表当前被控系统主要问题的部分进行建模

比如对于机器人控制系统来说,如果是一些低速,精度要求不高的场合,显然没有必要涉及动力学建模,只需要知道运动学正向和逆向模型即可。如果涉及高速、高精度场合,那么考虑动力学模型,深入到关节柔性甚至对摩檫力准确建模就是必须的,因为关节柔性、摩檫力决定了在这些场合下的机器人控制性能。

因此,建模的第一原则:确定建模目的以及建模涉及的范围(描述的主要问题)

在此基础上,建模的第二原则模型结构应该和所要描述对象的结构特点相匹配,也就是模型能够直观、显性地描述问题,最好能够直接从模型中的数学式子中分析问题的本质。对于被控系统来说,各种不同类型的问题(如被控对象特性、反馈噪声、外部干扰等)都可能会主导控制系统性能的好坏。对不同类型的问题描述,势必要采取不同的模型形式、结构

比如:

  • 如果被控对象的定常线性动态系统,且只关心输入输出之间的联系,那么采用基于Laplace变换的频域传递函数就是合适的;如果还牵涉到其他关联状态变量的观测或反馈,那么可以考虑采用状态空间表示形式;如果被控对象是非线性动态系统,则一般考虑基于状态变量的时域微分方程;

  • 如果被控对象存在参数变化,需要用到参数辨识,则根据参数变化快慢/规律,是否有界以及与输入/输出数据之间的关系等信息,可以将参数解析模型写成不同的形式。比如,对于机器人控制系统中的参数辨识,需要将一些待辨识参数进行组合形成待辨识参数向量,为避免对加速度信息的使用,需要对参数解析模型做些特别改进(参考Slotine and Li's Approach).
  • 存在高频未建模动态、不确定性的情况下,如果能够知道这些未知信息的结构或者如何影响系统,也应该通过数学式子表达出来(加性/乘性不确定,是否有界,是否互相独立等);

  • 如果无法准确获知被控对象的机理,无法从第一原理出发通过理论推导建立准确机理模型,只能建立数据模型,那么也应显性表示输入-输出的关系,比如当前时刻的输出和之前多少时刻的输入相关联,干扰/噪声是通过什么通道进入系统等(参考无模型自适应控制的相关做法);

【备注】:无模型(Model-free)等在数据驱动控制常用到的称呼,并不是说不需要模型,而是指不需要机理模型,见作者的以下分析:

无模型自适应控制主要指在自适应控制中并不需要(被控系统机理模型和参数解析模型)就可以进行控制系统的设计、分析和运算。然而,作为一种数据驱动控制方法,无模型自适应控制需要对系统输入输出数据进行有效组织和整理,从中挖掘出有效信息并根据该信息计算控制指令。这里系统数据的组织整理形式即表现为数据模型。因此,在无模型自适应控制中,需要数据模型这一数据组织形式以描述系统可用数据之间的联系,为控制器的设计奠定基础
  • 如果是对外部干扰进行描述,如非线性摩檫力、力矩波动等,则可以考虑多项式拟合或者谐波叠加等形式;如果还需要描述外部干扰动态或与控制系统状态变量之间的关联,则可以考虑状态空间表示形式,对原有动态系统状态变量进行扩展;
  • 如果反馈噪声是工频干扰/逆变器干扰引起,可以用谐波叠加进行描述,如果是随机噪声,则可以考虑白噪声等进行描述;

对以上问题进行恰当的描述,有助于从本质上分析问题,更准确匹配已有的控制算法(比如,控制算法中常用到的卡尔曼滤波器是假设噪声是白噪声,对于周期噪声干扰就未必合适,需要经过改造或者选用其他滤波方法),并最大程度地组织已知的信息,从而为设计高效的控制算法奠定基础(控制算法对已知信息利用得越充分,达到的控制效果越好,比如对于自适应控制等算法,知道参数上下界,可以保证辨识参数有界并改善瞬态性能;对于鲁棒控制,如果知道不确定性的结构信息,则可以降低控制算法的保守性)。

在选择合适模型结构/形式的基础上,建模的第三原则模型应该兼顾精确性和实时运算性能。在控制算法设计的语境中,根据需要,模型的信息是需要用到控制算法的不同模块中,如图3所示。模型的信息(模型一般需要经过某种形式转换后才能用到控制系统中,因此图中用需要表示隐性/间接用到模型信息的情况)可以用在输入整形/轨迹规划,前馈补偿组成的外环前向通道上,也可以用在反馈控制器上(如模型预测、自适应、鲁棒/滑膜控制),或者内环的观测器通道上(如状态/干扰估计以及参数辨识)。

这些模块或多或少需要对模型进行实时运算。如果模型太过复杂,尽管能够相对精确的描述问题,但也由此增大了实时运算量(需要更高性能的控制器或者相对较长的运算周期),同时也会导致对应的控制器阶数变高,增加了控制系统分析、设计的难度。因此,在满足控制性能要求的前提下,应该在模型精确性和实时运算中做折衷处理。

图3. 模型信息用于控制算法设计

最后,模型在真正用于控制系统前,建模的第四个原则:模型必须经过某种形式的验证/实际测试,以确保模型的正确性和准确性(正确性要求模型能够反映问题的主要变化规律,准确性则要求模型和实际之间的误差相对较小)

总结

建立被控系统的数学模型,分析其本质特性,并建立起物理直觉,在控制算法设计及调试阶段都尤为重要

  • 在控制算法设计阶段,在认真分析被控系统的基础上(参考专栏文章‘认识你的被控系统’),通过建模不仅能够科学分析自己面临的真正问题,而且拥有了进入控制理论大厦的钥匙,在项目初期便能选择大体正确的方向以及合适的控制算法类型,并从中选择合适的控制方法并进行合乎需要的改造、组合乃至创新、超越。这一从物理世界到数学世界的抽象是必要的,也是真正从本质上确切认识事物,进行源头创新的关键。

  • 在控制算法调试阶段,有了对模型的深入分析和物理直觉,可以帮助工程师迅速判断调试中出现的问题并分析可能的原因,并由此提供正确的调试方向或者算法改进方法,避免无谓的试错,缩短项目周期。这一从数学世界到物理世界的回归也是必要的,可以帮助理论创新真正的落地,并在实践中不断完善。