基于LabVIEW的二级倒立摆控制系统三维仿真
2011-06-05吴震宇
吴震宇, 方 敏, 丁 康
(合肥工业大学 电气与自动化工程学院,安徽 合肥 230009)
倒立摆系统是一种非最小相位系统,它具有非线性、多变量和不稳定的特点,因而成为控制理论教学和科研的典型对象[1]。随着计算机技术的发展,虚拟现实技术被大量地运用到生产实践中,也为科学研究提供了一种新的途径。LabVIEW是当前流行的一种图形化编程语言,其自带三维图形工具箱能够建立或导入三维模型,并能控制三维模型。将LabVIEW与三维模型相结合,充分利用了三维带来的可视化和动态的交互性等特点,可应用于硬件在环中的仿真分析,也可通过三维模型显示某远程控制平台的实时状态,使设计、仿真过程直观形象。本文使用LabVIEW和其中的三维图形工具箱,设计了一个倒立摆虚拟模型仿真系统,可以在该系统中完成设计和仿真,并形象、直观地展示倒立摆的运动过程。
1 倒立摆的数学模型
直线倒立摆是由电机、同步带、小车和摆杆组成,电机通过同步带带动小车在轨道上来回运动来保持摆杆始终处于竖直向上平衡位置。直线倒立摆按摆杆数量的不同,可分为一级、二级、三级倒立摆等。本文以直线二级倒立摆为研究对象,在建模时忽略了空气阻力和各种摩擦,并认为摆杆为刚体[2]。(1)式和(2)式中的θ1与θ2分别是摆杆1和摆杆2偏离垂直向上位置的角度;F是作用在系统上的外力;x是小车离开初始位置的距离。
倒立摆实物的各项参数值如下:小车质量M=1.32kg;摆杆1的质量m1=0.04kg;摆杆1转动中心到质心的距离l1=0.09m;摆杆2的质量m2=0.132kg;摆杆2转动中心到质心的距离l2=0.27m;m3=0.208kg。
根据上述参数,推导出的倒立摆状态空间表达式为:
控制信号U为作用在小车上的加速度,反映了作用在小车上力F的大小。
2 倒立摆在LabVIEW中的建立和显示
倒立摆三维场景是利用虚拟现实技术建立的。虚拟现实技术(Virtual Reality)是20世纪90年代发展起来的一个新的研究领域,用计算机图形构成三维空间,可比较真实地描述物体的运动特点[3]。
2.1 在LabVIEW中建立倒立摆三维模型
要进行倒立摆的虚拟三维仿真,首先要在LabVIEW中建立其三维模型。三维模型既可以利用LabVIEW自带的三维图形工具箱建立,也可以使用其它的专业建模软件建立后再导入LabVIEW。
在LabVIEW 8.2以后的版本中自带了三维图片控件工具箱,可以利用其中的控件绘制一些三维图形,如长方体、圆柱体、锥体等,这种方法多用于绘制较为简单的三维场景。对于复杂物体的建模,LabVIEW提供了另外一种方法:从外部文件中导入制作好的三维模型,即先使用专业的三维建模软件如3DMAX、SolidWorks等建立复杂物体的三维模型,再将该模型导入LabVIEW,并可以在导入模型的基础上添加三维物体,进一步丰富虚拟场景。目前,LabVIEW支持3种格式的三维文件导入,分别是VRML(Virtual Reality Modeling Language)、STL(Stereo Lithography)和ASE(ASCII Scene Export)。
在本文中,用SolidWorks制作好不含摆杆的倒立摆三维模型,其文件格式为VRML,再使用LabVIEW三维图片控件工具箱里的“加载VRML文件.vi”导入。VRML为虚拟现实建模语言,是近年来兴起的一种新型用于三维建模和渲染的图形描述语言,与HTML一样,均为ASCII文本格式的描述性语言,文件类型扩展名为.wrl或.wrz[4]
2.2 LabVIEW中三维模型的实时动态显示
在LabVIEW中,显示二维曲线的控件功能非常完善,例如“波形图”控件,可以设定缓存数据值、曲线图的更新模式,也可根据数据范围自动调整曲线图坐标上下限。但是LabVIEW的三维显示控件目前还不具备如此强大的功能,为了实现三维图形不断更新,就必须用新数据代替旧的数据,一般可使用LabVIEW中的反馈节点来完成,但会使整个程序框图可读性较差,增加了设计难度。为解决这个问题,可使用While循环或For循环的移位寄存器功能[5]。在While循环上单击右键,选择“添加移位寄存器”,即可使用移位寄存器将值从上一个循环传递到下一个循环。
2.3 三维仿真程序的层次结构
对于较复杂的三维仿真系统,建立VI的分层结构,以降低程序设计的复杂性,加快开发的过程[6]。本文构造了3层VI结构,如图1所示。
(1)仿真程序VI。完成仿真参数的设定、倒立摆模型的建立,并向模型控制VI发送状态数据,其包含仿真循环、控制系统数学模型以及模型控制VI。
(2)模型控制VI。提供数据接口,显示虚拟场景并将接收的状态数据用于控制小车的位置和摆杆角度。
(3)模型构建VI。实现模型文件的导入和模型部件运动节点约束关系的设置,这是由三维图形工具箱的基本控件实现的。?
图1 VI间的层次结构图
在制作三维模型时,组成模型的部件都有一个名称可方便地对各部件分别操作。在LabVIEW中使用“查找对象.vi”获取三维场景对象,然后通过变形控件对这些对象进行控制,实现三维动画。本文利用“查找对象.vi”将倒立摆的小车、一级摆和二级摆3个对象进行分别处理,摆体能够根据计算出的位置信号在轨道上水平移动,2个摆杆能根据模型算出的角度绕轴转动相应的角度。
2.4 LabVIEW与三维场景的互动
建立的倒立摆模型能根据输入接口上的数据改变小车的位置和2个摆杆的角度,在视觉上表现为小车模型左右的移动,摆杆模型绕着转轴转动,这些都是对三维模型进行变换后得到的效果。
变换是指根据某种数学规则改变三维场景中对象的方向或外观,LabVIEW中的变换VI可改变三维场景中对象的大小、方向和位置。常用变换有以下3种[7]。
(1)平移。将三维对象平移到三维场景中的一个新位置,对象平移的方向和大小用一个向量表示,作为“平移对象.vi”的参数。本文中对小车位置的变换采用了“平移对象.vi”。
(2)旋转。以给定的旋转轴和旋转角作为“旋转对象.vi”的参数,三维对象绕轴转一个角度。本文中对摆杆角度的变换使用“旋转对象.vi”。
(3)缩放。按照三维场景的x、y和z坐标的比例因子缩放三维场景中对象的的大小。
上述各变换又包括绝对变换和相对变换。例如,“设置平移.vi”用于三维对象的绝对平移,“平移对象.vi”则用于相对地平移一个三维对象。
在LabVIEW中,对三维场景的变换都要通过“调用节点.vi”获取场景对象,再用于变换操作,从而控制场景中的物体。
图2所示是创建摆杆三维模型的程序,通过“创建柱面.vi”建立三维摆杆模型,由于摆杆的默认初始位置是垂直于屏幕的,要对其进行修改才能符合模型要求。为此通过“设置旋转.vi”将摆杆绕x轴旋转90°,再用“设置平移.vi”将摆杆移动到小车的位置,使之符合物理模型的实际情况。为了在之后能调用摆杆的三维场景,需要将创建好的摆杆1模型加入一个名为“pendulum1”(摆杆1)的空白场景对象中。在使用时,只需调用“pendulum1”场景即可。
图2 创建摆杆1的三维模型
对于2级倒立摆三维模型,如何在模型中反 映2个摆杆之间相互转动的关系是另一个问题,一级摆杆可绕小车上的连接轴转动,二级摆杆绕其与一级摆杆的连接轴转动。本文通过设置三维场景之间的层次关系来解决这一问题,将三维场景中某一对象添加为另一对象的父对象,则子对象会继承对父对象做得任何变换。子对象也可以是层次结构中更低对象的父对象,在较大的三维场景中使用对象关系可提高编程效率,也可用于设置相对运动的三维场景。
本文采用LabVIEW中的调用节点,调用三维场景中的“对象:添加对象”方法,将二级摆杆作为一级摆杆添加对象作为的子对象,一级摆杆作为子对象添加到小车模型上,这样对小车模型的平移变换同时会应用到摆杆系统上,对一级摆杆的旋转变换也会作用于二级摆杆上,而对二级摆杆的旋转变换仅作用于该模型。
3 倒立摆控制系统的三维仿真
3.1 倒立摆系统的LQR控制器的设计
倒立摆的状态方程为:
其中,系统状态X=[xθ1θ2x′θ1′θ2′]T,物理含义分别为小车的位移、一级和二级摆与竖直方向的夹角、小车速度、一级和二级摆杆的角速度。设小车初始位置为0,一级和二级摆在竖直位置(即平衡位置)的角度为0;系统输出Y=[x θ1θ2]T;U为LQR控制器的输出。R=[000 000]T是希望的状态,E为状态误差。
确定最优控制器u(t)=Ke(t),使得目标函数J=∫∞0(XTQX+UTRU)dt达到最小值,其中反馈阵K=[k1k2k3k4k5k6]。当倒立摆最终稳定运行时,状态变量X应趋于零[8]。
3.2 倒立摆仿真系统程序设计
在LabVIEW提供的控制设计与仿真模块中提供了多种控制算法程序,为设计控制器提供了极大的便利。
在图3所示的程序框图中,cd-Linear Quadratic Regulator.vi通过连接至其输入接线端的系统数学模型和Q、R自动计算出反馈阵K,并将数据通过输出接线端送至其他VI节点。用户只需提供必须的数据而不用编写任何计算代码,大大降低了开发难度。
LabVIEW的控制设计与仿真模块提供了包括状态空间在内的各种常用形式的系统数学模型,能够方便地使用这些模型进行仿真测试。图4所示为倒立摆控制系统程序框图。
图3 倒立摆LQR控制参数的计算
图4 倒立摆控制系统程序框图
黑色方框为控制仿真循环,该循环作用类似于Matlab中的Simulink,其中的程序按照设定的步长进行仿真运算。
图中圆圈处为状态空间VI,在每个仿真循环内其根据倒立摆数学模型和本次循环中控制器的输出来确定状态量的输出,同时状态量与给定之间误差作为下次循环控制器的输入,并将小车位移、一级摆的角度和二级摆的角度送至3D动画显示VI和绘制曲线VI。
3D动画显示VI在首次运行时使用“查找对象.vi”将倒立摆3D模型中小车和摆杆部件提取出来,之后每次运行都会按照模型输出的状态量分别对模型中的小车和摆杆进行平移和旋转,并将变换后的3D场景对象显示在前面板上。每次循环时都会更新小车位置和摆杆角度,当循环速度足够快时,3D模型就出现动态效果。
3.3 倒立摆三维仿真系统界面的设计
LabVIEW能够使用其中的显示控件,轻松地设计出丰富的人机交互界面。本文使用Lab-VIEW设计的直线二级倒立摆LQR控制系统的用户界面,如图5所示。图5左下部分为操作区,可通过2个选项卡输入参数。在“二级倒立摆模型”选择卡中,可以修改二级倒立摆的状态空间参数来仿真不同的倒立摆模型。在“控制器参数”选项卡中,用户可输入不同的权矩阵Q和R来验证哪组参数效果最佳。拖动“设定小车位置”的水平滑动杆可以改变小车在轨道上的位置。
图5右下部分为实时曲线图,该曲线图显示了小车的位置、2个摆杆角度的变化曲线。
图5上半部分为二级倒立摆三维模型的显示区,三维模型中的小车和摆杆依据系统运行状态数据,产生相应的位移和转动,实现动画的效果,并可用鼠标转动三维模型,可以实现多方位、多角度的观测。
图5 线性二级倒立摆三维仿真程序前面板
4 结束语
LabVIEW是一个理想的控制原型开发、分析设计和测试控制算法的平台,作为原型开发的一个部分,3D仿真能够将控制系统的状态和控制器算法的效果以可见的方式显示出来。
本文通过LabVIEW中的三维模型控件建立倒立摆的虚拟场景,在倒立摆控制系统的仿真信号与虚拟场景之间建立数据连接。仿真过程中不仅可以看到可视化的虚拟模型,还可以对对象进行操作控制。比起仅有仿真曲线图的环境,虚拟倒立摆仿真提供了一个较为逼真的三维视图,并且可以多方向多角度地观察摆杆的摆动以及小车的整个移动过程,为倒立摆仿真提供了一个新的可视化平台。
[1]丛 爽,李泽湘.实用运动控制技术[M].北京:电子工业出版社,2006:241-242.
[2]固高科技有限公司.倒立摆与自动控制原理实验[EB/OL].[2005-24-30].http://www.googoltech.com.cn.
[3]侯 俊,过学迅.虚拟现实技术在电动车测试中的应用[J].现代制造技术与装备,2008(1):48-49.
[4]徐 林,高 巍,邱联奎.基于VRML的倒立摆三维仿真[J].计算技术与自动化,2009,28(3):24-26.
[5]阮奇桢.我和LabVIEW:一个NI工程师的十年编程经验[M].北京:北京航空航天大学出版社,2009:95-96.
[6]杨文铂,尤一鸣.LabVIEW在模型车无线测控系统中的应用[J].天津工业大学学报,2007,26(6):42-44.
[7]美国国家仪器公司.LabVIEW 帮助[EB/OL].[2011-01-02].http://www.ni.com.
[8]胡寿松.自动控制原理[M].第4版.北京:科学出版社,2001:516-519.