加速机器人及自主系统控制开发——MATLAB/Simulink 驱动先进控制应用(上)

作者:杨超,文章来源:Matlab

作为机器人控制工程师,你有没有过这样的经历?

  • 明明反复调试了多个控制回路的 PID 参数,机器人的动作还是不够稳;

  • 机械臂在高速运动时抖动严重,轨迹跟踪总差那么一点;

  • 换个负载、换个地形或者环境,整个系统就得重新“调教”一遍……

近年来,机器人系统的控制复杂度正在快速攀升,这并非只源于外部环境变化,而是系统内在动态特性与性能要求的双重升级,主要体现在:

  • 多自由度强耦合

先进机械臂、人形机器人普遍拥有 10 个以上自由度,各关节间存在显著的动力学耦合。一个关节的加速会通过惯性力矩强烈影响其他关节,这种"牵一发而动全身"的特性,使得单独设计每个关节的控制器变得异常困难,必须将系统作为整体进行控制设计。

  • 高度非线性

机器人的动力学特性本质上是非线性的。以机械臂为例,当其处于不同姿态和运动状态时,惯性矩阵、科氏力和离心力都会发生显著变化。这就使得像 PID 这种传统的线性控制方法难以适应这种全工作范围内的动态特性变化,导致在某个工作点精心调试的控制器参数,在其他工作区域可能完全失效。

  • 外部未知干扰与系统不确定性加剧

真实工作环境中的机器人需要面对各种难以预测的外部扰动,移动机器人或者无人机会面临的地面摩擦系数变化、风力干扰;操作机器人遇到的负载变化、接触力不确定性;环境参数波动(例如温度漂移)带来的系统特性改变,再加上机械磨损等性能衰退都会导致系统参数持续时变,使得固定增益的控制器无法满足要求。更棘手的事,这些扰动通常无法准确测量和建模,给控制系统设计带来极大挑战。

  • 物理约束日益严格

除了传统的输入饱和,现代机器人还需满足关节限位、速度限制、能耗边界甚至振动抑制等多重约束。而随着机器人的作业任务越来越复杂,针对其安全性要求的操作区域限制已经不再是简简单单的“上下限”,可能会有更复杂的数学表达。这使得控制方在优化性能的同时,还需要额外的“优化能力”来严格保证所有这些约束条件。

上述这些都意味着如今的机器人控制,早已不是“调好 PID 三个参数”就能解决的问题,而是一场对建模精度、算法鲁棒性与工程实现能力的全面考验。正因如此,工程师亟需一套既能快速建立闭环模型支撑复杂算法设计,又能高效验证算法与部署的统一平台—而这正是 MATLAB/Simulink 的核心优势所在。

01 自动回路解耦与调节

利用 Control System Tuner 整定多输入多输出 PID

既然是控制相关主题,就不得不从 PID 讲起。PID 简单直观,在工程领域绝对是首选,但当应用场景变得复杂,往往显得“力不从心”,最典型的就是多输入多输出耦合的情况。

我们考虑一个如下图所示的六自由度机械臂,每个自由度均由直流电机控制,可以通过 Simcape 与 Simulink 建立系统模型。

1.png

如果每个自由度上的直流电机均有一个 PID 来控制,就会形成一个六回路,多输入多输出(MIMO)的控制器,并且每个自由度都会对其它的自由度位置产生影响,于是手动调节每个 PID 参数,得到目标的作动轨迹变得非常不现实。

2.png


在 Simulink 中,我们可以使用控制系统调节器,即 Control System Tuner 来解决这个问题,控制系统调节器会自动调节控制器参数,以满足这些必要需求(设计约束)并尽量满足其余需求(目标)。您可以使用调节目标库以适合快速自动调节的形式捕获设计需求。可用的调节目标包括标准控制目标,如参考跟踪、抗扰、环路形状、闭环阻尼和稳定裕度。

我们可以直接针对不同维度的控制目标(跟踪性能、响应带宽和稳定裕度)分别建立对上述 MIMO 控制器的控制目标,包括时域(指令跟随)和频域(响应带宽和相角裕度)目标。

3.png

然后只需要点击 APP 的 Tune 按钮,工具会自动根据指定闭环控制性能指标算出合适的多回路 PID 控制器参数。

4.png


02 超越 PID 

利用 Simulink 加速先进控制算法落地

对于传统的嵌入式应用而言,成本上的考量使得硬件的进一步提升成为一种奢望,也从一定程度上限制了更加“智能”的控制算法的应用。例如在自动驾驶或者自主系统控制领域颇为流行的非线性模型预测控制,很难直接应用于算力更加紧张,但也更广泛的传统嵌入式场景当中,工程师们也只能去选择更加“简化”的控制算法来实现部署,这也是为什么在传统的嵌入式控制场景中,基于经典线性控制理论的 PID 控制器依然很流行。

但如我们在文章开始时所说,机器人系统的自由度耦合性、非线性程度、外部扰动和不确定性越来越高,已经到了 PID 明显力不从心的时候。MathWorks 作为工具厂商也在积极响应这方面的需求,在之前的微信推送中,作者也给大家介绍过诸如模型参考自适应控制、自抗扰控制和模型预测控制等功能(详见之前的文章《让控制器变“聪明”-Simulink 自适应控制探讨》)以及滑模控制(详见之前的文章《高效应对“外部干扰与非线性”- Simulink 滑模控制(SMC)更新探讨》)等功能的更新和应用案例。

其实,MathWorks 对于先进控制的跟踪还不仅仅局限于上述文章中的几个典型算法,而是一个更加广泛和体系化的适配,我们可以从下面的示意图中略知一二。

5.png


这时,我们又不禁思考另外一个问题,如果 PID 控制器无法满足目前的控制性能目标,那么应该选择上述哪种先进控制来解决问题最合适呢。

相比于 PID 调参,这可能是控制工程师在先进控制应用落地时候要面对另外一个巨大挑战,这世上不可能存在“万能”的控制理论或者算法,任何控制算法都会存在对目标问题的“假设”,进而存在适用范围,关键在于为正确的场景选择正确的控制技术。

在本文的下半部分,我们将以机器人/无人系统的典型控制场景为例,为大家介绍一下 MATLAB/Simulink 在最近版本中的一些相关更新,尽情期待!

参考文档(上)

1. 利用 Control System Tuner 整定多输入多输出 PID:https://ww2.mathworks.cn/help/releases/R2025b/slcontrol/ug/multi-loop-pi...

相关微信文章:

1. 《让控制器变“聪明”-Simulink 自适应控制探讨》

2. 《高效应对“外部干扰与非线性”- Simulink 滑模控制(SMC)更新探讨》