基于C++的单级倒立摆T-S模型模糊控制算法设计
Design of a Single-Stage Inverted Pendulum T-S Model Fuzzy Control Algorithm Based on C++
摘要: 针对传统控制方法在复杂系统中缺乏灵活性和应变能力的不足,研究基于T-S模糊模型的单级倒立摆控制系统设计,以实现复杂系统的有效稳定控制。采用线性T-S模糊模型对单级倒立摆系统进行建模,利用模糊规则结合系统局部信息和专家经验,以任意精度逼近实际被控对象。基于C++语言开发T-S模糊控制器,并设计仿真程序进行测试。仿真测试表明,在T-S模糊控制系统的调节下,原本不稳定的单级倒立摆能够实现稳定运行,验证了所设计控制器的有效性。本文基于C++开发的T-S模糊控制系统仿真平台,成功实现了单级倒立摆的稳定控制,验证了T-S模糊控制算法在复杂系统中的应用可行性,为后续复杂控制系统的设计与实现提供了有效的工具和参考依据。
Abstract: There are two types of traditional control methods: classical and modern, rely on accurate models of the controlled object but lack flexibility and adaptability. In production practice, experienced operators are able to realize effective control of complex systems with practical experience. This suggests that simulating the human brain to design the controller is an effective way to solve the complex system control, leading to fuzzy control. The single-stage inverted pendulum system is a classical problem in control research, which can be modeled by a linear T-S fuzzy model. In recent years, nonlinear modeling based on T-S fuzzy system has become a hot research topic in control theory. T-S fuzzy model can approximate the actual controlled object with arbitrary accuracy by using the local information of the system and expert experience in the form of fuzzy rules. In this paper, the design of T-S model fuzzy control system is further investigated. Based on the single-stage inverted pendulum model and T-S fuzzy rules, the T-S fuzzy controller is developed using C++ language and the simulation program is designed for testing. The results show that the originally unstable inverted pendulum can realize stable operation under the regulation of this control system.
文章引用:王金戈, 田益民. 基于C++的单级倒立摆T-S模型模糊控制算法设计[J]. 动力系统与控制, 2025, 14(3): 173-180. https://doi.org/10.12677/dsc.2025.143018

1. 引言

在现代科学的技术领域中,控制技术起着重要的作用。智能控制代表着控制理论发展的高级阶段,它是人工智能和自动控制相互交融的产物,具有不确定的模型,高度的非线性与复杂的任务要求。智能控制有几个重要分支,分别为遗传算法、专家控制、神经网络控制和模糊控制[1]。模糊数学的英文名称是Fuzzy Mathematics,是用于研究和处理模糊性现象的一种数学理论与方法。可以用一个有趣的理论来理解模糊理论概念,我们通常把这个理论称为“秃子悖论”,即如果一个有N根头发的人被称为秃子,那么,有N + 1根头发的人也是秃子,所以,(N + 1) + 1根头发的人还是秃子。以此类推,无论你有几根头发都是秃子。显而易见,这个结论是错误的,这是因为“秃子”不同于我们往常所理解的经典集合,有一个确定的界限,其中的成员都是非此即彼的。像“秃子”这种类型,没有明确的界限,描述的是一个程度的概念。因此我们会定义一个界限,也就是隶属度,用来描述一个元素在多大程度之上隶属于模糊集合“秃子”这样一个概念。若一个人有0到500根头发,那么他在1的程度上隶属于“秃子”这个模糊集合,随着头发数量的逐渐增大,隶属于秃子的隶属度逐渐下降,超过5000根,我们就认为,他完全不属于“秃子”这个模糊集合了。这就解释了秃子悖论这个问题。通过引用这样的例子,来理解秃子、胖子、数量多等等这些不同于经典集合非此即彼的模糊关系。模糊控制未来的发展方向包括Fuzzy-PID复合控制、专家模糊控制及自适应模糊控制等。T-S模糊控制也是研究热点之一。

T-S模糊模型是一种在复杂非线性系统模糊建模中广泛应用的典型模糊动态模型,于1985年被提出。其核心特点包括:模型的前提部分根据系统输入与输出之间是否存在局部线性关系进行划分;结论部分则通过多项式线性方程来表达。而且人们在研究中发现,与其他方法相比,模糊控制方法得到的系统动态响应曲线较好,响应时间短、动静态性能好[2]

近年来,国内外学者对模糊控制系统的稳定性、优化设计等进行了深入研究,取得了诸多成果。例如,朱嵘涛和陈希湘通过分布式补偿法(PDC)设计了单极倒立摆的模糊控制器,并验证了其优越性[3]。丁莉芬等学者证明了基于T-S模型的模糊控制方案相较于Mamdani模型在复杂度上的降低[4]。李志刚和吴楠利用改进的遗传算法优化了T-S模糊控制器,并且使得优化速度得到提升[5]。杨雨雨则通过对比研究发现模糊控制在某些情况下虽然复杂度较高,但在特定场景下具有独特优势[6]。单级倒立摆系统作为控制领域的经典研究对象,因其多变量、非线性和不稳定特性,成为验证控制理论有效性的理想平台。近年来,研究人员对单级倒立摆系统进行了广泛的研究,包括局部线性化与能量反馈控制、基于模糊模型的自适应控制、模糊滑模控制以及基于状态观测器的控制器设计[7],取得了显著的研究成果。

本文聚焦于使用C++算法设计单级倒立摆的T-S模型模糊控制器。针对单级倒立摆系统的特定应用场景,本文对控制器进行了优化设计,以更好地满足实际控制需求。通过制定模糊控制规则、实现三角隶属度函数、开发仿真程序以及设计模糊控制器的C++程序,本文验证了所设计的T-S模糊控制系统能够有效稳定单级倒立摆,满足预期控制要求。

2. 单级倒立摆数学模型

2.1. 建模前提

单级倒立摆是进行控制理论研究的理想实验平台。在对倒立摆系统的控制过程中,能够形象的描述许多控制理论的抽象概念,比如说系统的稳定性、系统的抗干扰能力以及系统的可控制性等[8]。自20世纪90年代以来,越来越多的控制理论专家加入了对复杂形式的倒立摆系统的研究,使倒立摆系统成为控制领域的一个研究热点。

为了方便对单级倒立摆系统的研究,首先要对单级倒立摆建立数学模型,这是对单级倒立摆进行分析和控制的基础。如果是要求建立比较精确的数学模型,通常用倒立摆以及数学函数表达式来描述。一般来讲,拉格朗日原理以及牛顿力学分析方法是对倒立摆数学建模最常用的方法。

拉格朗日方程描述物体的运动,是拉格朗日力学的主要方程,对完整系统用广义坐标表示的一种方程。它所反映的模型内部机理不明确。

牛顿力学分析方法从物理定律和结构数据出发,找出反映内部机理的规律,建立出机理模型或解析模型,具有明确的物理意义和现实意义。

由于单级倒立摆系统本身是一种不稳定的复杂系统,所以为了简化建模过程,降低存在的困难,我们需要忽略一些关于系统的次要因素,在建模时,做出如下假设:

(1) 单级倒立摆系统整体和它运动的平面是一个均匀不变的刚体;

(2) 运动时,忽略单级倒立摆系统与平面的摩擦力和它所受到的空气阻力;

(3) 摆杆在转动时,转动摩擦力忽略不计;

(4) 驱动电机施加在单级倒立摆上的驱动力无延时地直接作用在小车上。

Figure 1. Single-stage inverted pendulum model diagram

1. 单级倒立摆模型图

理想模型图像见图1

2.2. 单级倒立摆数学模型

理想的单级倒立摆至少由三部分组成:没有质量的摆杆,与摆杆相连的小球,以及最底层的木块(小车)。小球与摆杆是固定连接的,摆杆和小木块的连接点可以看作定滑轮,所以,摆杆和小球可以一起在平面内摆动。实验过程中,会对小木块施加一个力,于是它会按照力的方向向左或向右滑动,但由于倒立摆此时不受控制,所以摆杆会向右或向左倾倒。我们的目的便是在系统的控制下,摆杆能够保持垂直状态或在设定范围内摆动。当然,为了便于计算,研究过程中忽略空气阻力及各种摩擦力。

单级倒立摆的数学模型为:

x ˙ 1 = x 2 (1)

x ˙ 2 = gsin x 1 aml x 2 2 sin( 2 x 1 )/2 aucos x 1 4l/3 aml cos 2 x 1 (2)

a= 1 M+m (3)

上面的几个式子中,2l为摆长,u为加在小车上的控制输入, a= 1 M+m Mm分别为小车和摆

的质量, x 1 为倒立摆的角度, x 2 为倒立摆的角速度。并且取g = 9.8 m/s²,摆的质量m = 2.0 kg,小车质量M = 8.0 kg,2l = 1.0 m。

3. T-S模糊控制器

3.1. T-S模糊控制器的设计步骤

模糊控制器的设计包括确定输入输出变量、设计模糊推理规则、模糊化与非模糊化方法、设计隶属函数、编写控制程序。在设计过程中,模糊规则的设计是关键,需结合专家经验和系统特性。T-S模糊模型通过模糊规则将非线性系统分解为局部线性系统。设计步骤包括定义模糊规则、计算隶属度、设计局部控制器,并通过并行分布补偿法(PDC)实现全局控制。

并行分布补偿(PDC)方法是一种基于模型的模糊控制器设计方法,适用于解决基于T-S模糊建模的非线性控制问题。根据模糊系统的反模糊化定义,针对连续非线性系统,再根据模糊控制规则,采用PDC方法设计出模糊控制器。即:

(4)

3.2. 单级倒立摆模糊控制规则

根据倒立摆的模型,可以得出四条T-S模糊规则:

规则1:IF x 1 ( t ) is about 0, Then x ˙ ( t )= A 1 x( t )+ B 1 u( t )

规则2:IF x 1 ( t ) is about ± π 2 ( | x 1 |< π 2 ) , Then x ˙ ( t )= A 2 x( t )+ B 2 u( t )

规则3:IF x 1 ( t ) is about ± π 2 ( | x 1 |> π 2 ) , Then x ˙ ( t )= A 3 x( t )+ B 3 u( t )

规则4:IF x 1 ( t ) is about ±π , Then x ˙ ( t )= A 4 x( t )+ B 4 u( t )

上述规则中:

A 1 =[ 0 1 g 4l/3 aml 0 ] B 1 =[ 0 α 4l/3 aml ] (5)

A 2 =[ 0 1 2g π( 4l/3 aml β 2 ) 0 ] B 2 =[ 0 αβ 4l/3 aml β 2 ] (6)

A 3 =[ 0 1 2g π( 4l/3 aml β 2 ) 0 ] B 3 =[ 0 αβ 4l/3 aml β 2 ] (7)

A 4 =[ 0 1 0 0 ] B 4 =[ 0 α 4l/3 aml ] (8)

其中, β=cos( 88 ° )

3.3. 单级倒立摆模糊控制器

结合并行分布式补偿法与控制理论中的极点配置法,设计模糊控制器。

运用并行分布式补偿法设计T-S模糊控制系统就是将整个非线性T-S模糊控制系统分为各个局部线性控制器,将T-S模糊控制器的每条规则作为一个线性控制器处理,通过运用现代控制理论中的相关方法,分别对各个局部线性控制器进行设计,随后借助T-S模糊运算,将各局部线性控制器的输出结果进行“融合”。

并行分布式补偿法可分为试凑法和直接法,运用试凑法进行模糊控制器的设计,随机设计每个线性控制器,将它们聚合在一起,即随机设计T-S模糊控制器的控制规则,若随机设置的T-S模糊控制系统符合控制要求,则作为设计的T-S模糊控制系统,否则重新设计[9]。而直接法则是通过对T-S模糊控制系统稳定性条件的分析,将T-S模糊控制器的设计转化为求解线性矩阵不等式的问题。

接下来,根据上文所得公式,并采用并行式分布补偿方法,可以设计出所需要的T-S模糊控制器。所设计的模糊控制器如下所示:

u= ω 1 ( x 1 ) K 1 x( t )+ ω 2 ( x 1 ) K 2 x( t )+ ω 3 ( x 1 ) K 3 x( t )+ ω 4 ( x 1 ) K 4 x( t ) (9)

其中, ω 1 + ω 2 + ω 3 + ω 4 =1

4. 利用C++设计算法

4.1. 设计状态反馈增益矩阵与三角隶属度函数

根据极点配置函数,由倒立摆系统参数和期望极点位置,获取系统状态反馈增益。在设计状态反馈时应注意,当极点设定在原点附近并距离原点越远动态响应越快但会导致较大的控制力和灵敏度,对硬件的要求变得苛刻,所以选取极点位置时,在满足要求的情况下不要远离原点位置[8]

另外,求状态反馈控制系统在共轭极点下的反馈增益矩阵程序gain时可以使用极点配置法,算法中的Place函数是一个状态反馈控制系统的极点配置函数,用于求解给定系统在指定共轭复数极点下的反馈增益矩阵gain。

隶属函数很好地描述了事物的模糊性,它的值域为[0, 1],它将普通集合只能取0和1两个值,推广到[0, 1]闭区间上取连续值。隶属函数是模糊数学的核心概念,它能够完整地定义模糊集合。不同的隶属函数对应着不同的模糊集合描述。而三角隶属函数(trimf)是常用的几种函数的一种,它的应用比较普遍,它的形状由三个参数确定,两个分别确定三角形的“脚”,一个确定三角形的“峰”。通常用来描述温度适中、身材适中等等这样模糊集合的概念。

根据上文的单极倒立摆的四条模糊规则,采用三角隶属函数,达到对摆角的模糊化。TrimfFun函数根据输入的值以及三个分界点计算隶属度,模糊隶属度函数示意图见图2

Figure 2. Schematic diagram of fuzzy affiliation function

2. 模糊隶属度函数示意图

再定义一个倒立摆的结构体,将倒立摆的相关参数储存在结构体中,并将上文中的模糊隶属度函数与结构体共同储存在同一个程序下。之后,根据系统状态和上文的四条模糊规则,获得控制输入量。由上文状态反馈增益以及模糊控制规则的程序,可以得到模糊控制器的程序。

4.2. 设计倒立摆仿真系统

根据上文中的单级倒立摆模型以及它的公式1、2、3,使用C++写出仿真程序。这段代码实现了一个倒立摆仿真系统,用于模拟单级倒立摆模型的动态行为。它由一个名为PendulumPlant的类来实现,其中构造函数需要输入倒立摆的参数信息和初始状态,并且包含一个Sim()函数用于进行数值仿真。该Sim()函数接受时间步长dt和控制输入量u作为输入,输出下一个时刻的状态(即倒立摆的角度和角速度)。Sim()函数内部使用四阶龙格库塔法求解倒立摆微分方程组的值,并对结果进行返回。

倒立摆模型中的微分方程用Model()函数来表示,它接受当前状态x和控制输入量u作为输入,返回状态x的导数。其中,Model()函数的运算过程中需要使用倒立摆的参数信息计算出倒立摆的相应物理量,因此需要在类中定义一个包含倒立摆相关参数的Pendulum对象。

在R_K_Solver()函数中,使用四阶龙格库塔法来实现微分方程的数值解法,它涉及到对微分方程的求解以及复杂的矢量加法与标量乘法等矢量运算,因此在代码中分别实现了ArraySum()和ArrayScale()两个辅助函数来进行矢量加法和标量乘法的操作。

4.3. 控制的实现

运行可执行文件,进行仿真实验,得到实验数据。实验数据同时也会以txt格式存入sim_result.txt文件,四列结果分别为“时间”、“控制输入”、“倒立摆角度”、“倒立摆角速度”。部分实验结果见表1

Table 1. System resulting data of standard experiment

1. 标准试验系统结果数据

时间/s

控制输入/N

倒立摆角度(x1)/rad

倒立摆角速度(x2)rad/s

0

−3432.31

3

0

0.01

−2849.99

2.98864

−2.72597

0.02

−2601.32

2.95201

−4.97122

0.03

−2350.2

2.89388

−6.98611

0.04

−1923.6

2.81663

−8.75027

0.05

−1300.67

2.72341

−10.1139

0.06

−612.721

2.6188

−10.9387

0.07

−37.4193

2.50821

−11.22

0.08

337.364

2.39651

−11.0982

0.09

543.101

2.28695

−10.7582

0.1

656.868

2.18114

−10.3366

4.99

−1.60e−05

8.48e−08

−6.96e−07

5

−1.702e−05

7.99e−08

−6.703e−07

Figure 3. Experimental data images

3. 实验数据图像

将所有输出数据绘制图像见图3,该系统在初始时刻能够迅速响应,通过动态调整控制输入,使倒立摆的角度和角速度逐渐减小并趋于零,最终实现稳定控制。

设计的控制系统具有稳定性,控制输入的适应性以及收敛速度快的性质。从数据可以看出,倒立摆的角度和角速度在初始时刻较大,但随着时间的推移,这两个值逐渐减小并趋于零。这表明T-S模糊控制系统能够有效地将倒立摆稳定在垂直位置;控制输入在初始时刻较大,随后逐渐减小并趋于零。这表明控制器能够根据系统的状态动态调整控制输入,以实现稳定控制;倒立摆在较短时间内就达到了稳定状态,说明T-S模糊控制系统具有较快的响应速度和良好的动态性能。

5. 结论

单级倒立摆是典型的不稳定系统,具有多变量、非线性和不稳定性,可用于验证多种控制理论的关键问题,如镇定、鲁棒性和非线性处理。其控制方法广泛应用于航天、船舶、军工、机器人和基础工业等领域,具有重要的工程背景和实际意义。随着新控制方法的不断涌现,倒立摆成为检验这些方法是否能满足预期控制要求的理想对象,尤其在处理多变量、强耦合和自然不稳定系统方面。

本文首先对单级倒立摆系统进行了简要介绍和分析,建立了其数学模型。接着,研究了T-S模糊控制方法,并基于此设计了模糊控制器。通过制定四条模糊控制规则,实现了三角隶属度函数、仿真程序和模糊控制器C++程序开发。最终,验证了该T-S模糊控制系统能够有效稳定单级倒立摆,满足预期控制要求。

NOTES

*通讯作者。

参考文献

[1] 刘金坤. 智能控制[M]. 第4版. 北京: 电子工业出版社, 2017: 94-116.
[2] 翟彦彦. 一级倒立摆模糊控制、LQR控制和PID控制的比较研究[J]. 电子设计工程, 2016, 24(7): 116-119+124.
[3] 朱嵘涛, 陈希湘. T-S模糊模型在单级倒立摆中的控制研究[J]. 现代电子技术, 2020, 43(8): 179-182.
[4] 丁莉芬, 韩晓峰, 陈志武, 等. 基于T-S模型的倒立摆模糊控制[J]. 郑州轻工业学院学报(自然科学版), 2009, 24(4): 88-91.
[5] 李志刚, 吴楠. 二级倒立摆T-S模糊控制器优化设计[J]. 现代电子技术, 2018, 41(21): 111-116.
[6] 杨雨雨. 倒立摆系统的模糊控制器设计及研究[D]: [硕士学位论文]. 郑州: 中原工学院, 2014.
[7] 陈谋, 姜长生, 吴庆宪. 基于非线性控制方法的倒立摆系统控制[J]. 控制理论与应用, 2004(5): 684-688.
[8] 胡小莺. 直线倒立摆系统控制算法的研究[D]: [硕士学位论文]. 济南: 山东轻工业学院, 2011.
[9] 王斌, 赵庆, 李巾锭. 串级模糊控制在多变量单级倒立摆中的应用[J]. 自动化与仪表, 2019, 34(3): 1-3+65.