目录

一、倒立摆系统简介

二、二级倒立摆模型构建

三、二级倒立摆的线性化模型

四、二级倒立摆的状态空间模型


一、倒立摆系统简介

倒立摆控制系统作为实验装置在控制理论领域的教学与科研工作中担任着不可或缺的角色。在对其稳定控制研究过程中,许多实际抽象的关键问题,如镇定性、鲁棒性以及跟踪性等等,都可以被直观的呈现出来,倒立摆系统可以说为控制界的经典实验装置。 倒立摆时刻处于倒置,状态不稳定,只有人为控制能使其达到并保持动态平衡状态。倒立摆通常包含两部分,即可以沿导轨来回运动的小车和小车上通过转轴固定的摆体,摆体数量决定了倒立摆的级数。在小车移动的过程中,小车上摆体一端通过铰链与小车顶部或另一摆体顶端相连,另一端则在与小车轨道所在的垂直平面上随意转动[。倒立摆按照其样式可分为直线倒立摆、平面倒立摆、环形倒立摆等;按照其摆数可分为一级、二级、三级乃至多级倒立摆;按照其轨道形式可分为水平式、倾斜式;按照其控制电机又可分为单电机控制和多级电机控制,形式非常多样。

倒立摆是控制理论中的典型被控对象,它具有高阶次、非线性、快速、多变量、强耦合、不稳定的特点,通常用来验证某个理论的正确性。在系统设计中,通常引入一个合适的控制方法使得就倒立摆系统成为一个稳定系统,由此来检验控制方法对于不稳定性、非线性、快速性系统的处理能力。

倒立摆有三种控制方法在实际应用中较为常见,即线性控制、预测控制和智能 控 制 。 使 用 线 性 控 制 时 , 首 先 要 确 定 倒 立 摆 系 统 的 平 衡 位 置,在平衡点附近将其非线性模型进行线性近似处理,求得其在平衡点附近的线性模型,根据该线性模型选择合适的控制算法设计线性控制器,实现其稳定控制,由于需先对非线性模型线性化,在进行倒立摆控制研究时,线性控制理论有着很大的局限性,尤其随着摆杆数目的增大,线性控制逐步不能满足系统控制精度的要求,甚至无法实现倒立摆的稳定控制;预测控制、变结构控制以及本文中将会使用到的自适应控制均隶属于第二种控制类别——预测控制,相较于线性控制,预测控制充分考虑到了上述局限性;智能控制作为第三类控制方法,是当下比较热门的一种控制方式,其结合了计算机、物理、数学等多门学科,自然科学与社会学科交叉渗透,不再需要对被控对象建立精确的数学模型求,以人的实践经验迎合较复杂系统,多与前两种控制手法相结合,以实现更好的控制效果[。随着科研的深入,倒立摆控制策略不再局限于单一控制方法,多算法控制越来越多的被应用到各级倒立摆的稳定控制当中,智能控制算法之间的混合以及预测算法与智能算法的混合都越来越频繁的涌入人们的视野。 

倒立摆按照级数可以分为一级、二级、三级、多级,这里我们研究二级倒立摆。

python仿真二级倒立摆 二级倒立摆建模方法_python仿真二级倒立摆

对于二级倒立摆我们选取以下参数(注意没有图中的质量块m).

表1 二级倒立摆参数选择

符号

意义

具体取值

M

小车的质量

1.2kg

m1

下摆杆的质量

0.06kg

m2

上摆杆的质量

0.14kg

l

下摆杆长度的一半

0.08m

l2

上摆杆长度的一半

0.25m

x

小车的位置

/

θ1

下摆摆角

/

θ2

上摆摆角

          /

g

重力加速度

9.8m/s^2

二、二级倒立摆模型构建

我们根据拉格朗日方程进行了二阶倒立摆的数学模型的建立

小车的动能

python仿真二级倒立摆 二级倒立摆建模方法_simulink_02

下摆的动能

python仿真二级倒立摆 二级倒立摆建模方法_python仿真二级倒立摆_03

上摆的动能

python仿真二级倒立摆 二级倒立摆建模方法_simulink_04

系统总动能

python仿真二级倒立摆 二级倒立摆建模方法_二级_05

系统总势能

python仿真二级倒立摆 二级倒立摆建模方法_二级_06

拉格朗日算子

python仿真二级倒立摆 二级倒立摆建模方法_matlab_07

根据

python仿真二级倒立摆 二级倒立摆建模方法_python仿真二级倒立摆_08

python仿真二级倒立摆 二级倒立摆建模方法_matlab_09

python仿真二级倒立摆 二级倒立摆建模方法_matlab_10

解得

python仿真二级倒立摆 二级倒立摆建模方法_simulink_11

python仿真二级倒立摆 二级倒立摆建模方法_simulink_12

python仿真二级倒立摆 二级倒立摆建模方法_python仿真二级倒立摆_13

三、二级倒立摆的线性化模型

  我们在后面利用倒立摆的状态空间模型进行能控能观性的分析、状态反馈极点配置、观测器的设计都需要用到倒立摆的线性化的模型,所以我们在这里首先将二阶倒立摆系统在平衡点位置附近进行泰勒级数展开,从而进行线性化。

  从上面的推到我们得到了二阶倒立摆的精确数学模型,由此可以进行如下的线性化:

python仿真二级倒立摆 二级倒立摆建模方法_matlab_14

python仿真二级倒立摆 二级倒立摆建模方法_二级_15

设二阶倒立摆的精确数学模型表示为:

python仿真二级倒立摆 二级倒立摆建模方法_二级_16

python仿真二级倒立摆 二级倒立摆建模方法_matlab_17

由泰勒级数定义可以得到:

python仿真二级倒立摆 二级倒立摆建模方法_二级_18

python仿真二级倒立摆 二级倒立摆建模方法_python仿真二级倒立摆_19

python仿真二级倒立摆 二级倒立摆建模方法_数学建模_20

python仿真二级倒立摆 二级倒立摆建模方法_数学建模_21

python仿真二级倒立摆 二级倒立摆建模方法_数学建模_22

python仿真二级倒立摆 二级倒立摆建模方法_python仿真二级倒立摆_23

python仿真二级倒立摆 二级倒立摆建模方法_数学建模_24

python仿真二级倒立摆 二级倒立摆建模方法_matlab_25

python仿真二级倒立摆 二级倒立摆建模方法_数学建模_26

python仿真二级倒立摆 二级倒立摆建模方法_数学建模_27

python仿真二级倒立摆 二级倒立摆建模方法_数学建模_28

python仿真二级倒立摆 二级倒立摆建模方法_python仿真二级倒立摆_29

python仿真二级倒立摆 二级倒立摆建模方法_matlab_30

python仿真二级倒立摆 二级倒立摆建模方法_数学建模_31

根据二阶倒立摆的相关参数,可以进行计算:

python仿真二级倒立摆 二级倒立摆建模方法_matlab_32

python仿真二级倒立摆 二级倒立摆建模方法_simulink_33

 

python仿真二级倒立摆 二级倒立摆建模方法_二级_34

python仿真二级倒立摆 二级倒立摆建模方法_matlab_35

python仿真二级倒立摆 二级倒立摆建模方法_matlab_36

 

python仿真二级倒立摆 二级倒立摆建模方法_二级_37

四、二级倒立摆的状态空间模型

这里我们取x,θ1,θ2,x,θ1,θ2 为这个系统的状态变量

通过式子

python仿真二级倒立摆 二级倒立摆建模方法_simulink_38

  我们可以得到,在二阶倒立摆工作在平衡点附近的时候,Fx 成正比,所以我们可以选择u=x 为这个系统的控制输入。所以可以得到:

python仿真二级倒立摆 二级倒立摆建模方法_matlab_39


python仿真二级倒立摆 二级倒立摆建模方法_simulink_40

python仿真二级倒立摆 二级倒立摆建模方法_python仿真二级倒立摆_41

python仿真二级倒立摆 二级倒立摆建模方法_python仿真二级倒立摆_42

通过上面的线性化模型,可以得到:

python仿真二级倒立摆 二级倒立摆建模方法_python仿真二级倒立摆_43

python仿真二级倒立摆 二级倒立摆建模方法_matlab_44


代入线性化模型数据可得:

python仿真二级倒立摆 二级倒立摆建模方法_python仿真二级倒立摆_45

python仿真二级倒立摆 二级倒立摆建模方法_simulink_46

python仿真二级倒立摆 二级倒立摆建模方法_二级_47

python仿真二级倒立摆 二级倒立摆建模方法_simulink_48