基于Unity3D的板球系统仿真实验建设与教学

2022-08-04 09:27郭铁铮郑亦峰陈国军邓君卓范晓阳
实验室研究与探索 2022年3期
关键词:板球方形控制算法

郭铁铮, 郑亦峰, 陈 巍, 陈国军, 邓君卓, 范晓阳

(南京工程学院 工业中心,南京 211167)

0 引 言

平衡板球系统是一个基于视觉的两自由度非线性机电系统,是控制原理研究的典型对象。目前不少控制理论课程已使用板球系统作为实验教学平台,对于帮助学生理解和掌握经典控制理论、现代控制理论及运动控制等知识起到了重要促进作用[1]。但当前的实验教学过程中存在着设备短缺、时间受限等问题,学生无法在有限的时间内完成机电系统使用、控制算法设计及验证等内容[2],尤其是需要自主设计算法的高阶部分,往往时间和实验平台无法同时满足。考虑到虚拟平台不受时间、空间的限制,具有成本低廉、反复演练等优点,并能将算法设计等内容前移至仿真平台,实现“理论学习-仿真设计-实物验证”的虚实结合教学方式,是解决上述问题的重要途径。不同于Matlab等传统仿真平台[3],Unity仿真系统以3D虚拟交互方式可以直观地展现板球系统的工作原理。

本文以控制原理实验课程为研究对象,利用Unity3D软件建设新型板球系统虚拟仿真平台,并以此为基础,设计虚实结合的板球系统实验教学方案。通过虚拟平台仿真和实物平台验证相结合的教学方法,提高实验教学效果,改善课程教学质量,对于培养学生掌握控制理论相关课程内容具有重要促进意义。

1 平衡板球系统设计

1.1 板球系统组成

平衡板球系统是一个不稳定的开环系统,目标是将自由滚动的球保持在特定位置或强制其沿方形板上特定的轨迹运动[4]。板球系统的示意图如图1所示,方形板由万向节固定在设备中心,可围绕两个水平轴旋转。视觉传感器(OV摄像头)布置在方形板上方,用于捕获球的图像与位置(xb,yb),并将其发送至控制器,处理后产生相应的驱动信号Ux、Uy[5]。两个步进电动机接收到驱动信号后,倾斜方形板以实现球的运动控制,如图2所示。球的运动速度由方形板的斜率和球的惯性矩决定。

图1 实验台示意图

图2 视觉系统组成

1.2 机械结构设计

为了克服步进电动机中偶尔出现的失步现象,通过测量电动机旋转角度,并推导旋转角度与方形板旋转角最终位置之间的几何关系来获取板的位置。电动机通过特殊设计的L形连杆与方形板相连,电动机旋转角度与方形板倾斜角度的关系参见图3所示的空间连杆机构示意图。L形连杆的每侧都有平行四边形连杆机构,其中L1和L2为垂直连杆机构,L3和L4为水平连杆机构。对于微小运动来说,由于平行四边形连杆机构运动学约束作用[6],该机械结构的设计可确保两个方形板倾斜角(φx和φy)和相应的电动机旋转角度(θm1和θm2)相等。

图3 板球系统空间连杆机构示意图

2 板球系统数学建模

由于首次接触控制原理课程的学生较难理解复杂的板球系统数学建模过程,对板球系统进行了建模简化,以便初学者快速掌握其原理和要领。

基本假设:

(1) 球与板之间没有打滑现象;

(2) 该系统的自由度是有限的;

(3) 忽略球绕其垂直轴的旋转;

(4) 忽略球与板之间的滚动摩擦;

(5) 假设板在其平衡范围内有很小的运动以确保板的倾斜角度大致等于电动机旋转角度;

(6) 方形板的x-z和y-z平面完全对称[7]。

根据以上条件可得出,在4个变量中,板和L形连杆机构具有两个自由度,与系统的输入(θm1、θm2、φx和φy)相符。因此,存在以下两个运动学约束方程,将电动机旋转角度(θm1、θm2)与板倾斜角度(φx、φy)相关联。

(H1cosφx-H1cosθm1)2+

(1)

(H2sinθm2-H2sinφycosφx+V2)2+(H2cosφy-

(2)

从非线性方程(1)和(2)中可以看出,方形板倾斜角(φx和φy)和相应的电动机旋转角度(θm1和θm2)相关[8]。因此,可以将式(1)和(2)中的表达式简化为如下的线性关系:

φx=θm1,φy=θm2

(3)

球位置和方形板倾斜角度之间的关系可用欧拉-拉格朗日方程表示:

(4)

板球系统的4个变量中,2个变量描述球在板上的运动,另外2个变量描述方形板的倾斜度。坐标xb和yb描述了球的位置,φx和φy描述了方形板的倾斜角,并表示如下:

q1=xb,q2=yb,q3=φx,q4=φy

球的动能Ekb可由转动与平动两个动能表示:

(5)

式中,m为球的质量,球惯性Ib表示为

(6)

则方形板的动能Ekp与球位置(xb,yb)的关系表示为:

(7)

板球系统的总动能为:

Ek=Ekb+Ekp

(8)

系统势能由球位置和方形板倾斜角表示为:

Ep=mg(xbsinφx+ybsinφy)

(9)

由此可以得到非线性微分方程,并经过推导得到欧拉方程特解

mgxbsinφx=0

(10)

mgybsinφy=0

(11)

(12)

(13)

式(10)和(11)描述了球在方形板上的运动,证明球在运动时的加速度取决于方形板倾斜的角度和角速度。式(12)和(13)说明了外部驱动力、球的位置和速度对方形板倾斜动力学的影响。

式(10)和(12)中特定术语的解释如表1所示。

表1 特定术语解释

3 虚拟仿真平台建设

3.1 开发平台选择

虚拟仿真系统是一种实现软、硬件一体化的系统,其中Unity3D具有功能模块化、开发效率高、画面质量优、兼容性好、交互性强等优点[9]。本文根据实际需求,最终确定了基于Unity3D技术的虚拟仿真方案。该方案设计出的系统实现了一个高沉浸性与交互性的虚拟仿真环境,后期与硬件设备调试结合,为学生提供了一套完整的控制系统实验教学体系。

3.2 场景元素设计

为帮助学生对平衡板球系统有更直观的认识和理解,在Unity3D中建立了板球系统模型,着力于详细展现真实操作中的各个细节,使学生在虚拟实验过程中提高创新思维,为后续的实际实验操作打下坚实基础。具体建模内容如下:

(1) 方形板。如图4(a)所示,方形板主体部分由渲染层(黑色表面)、物理碰撞箱(用于物理运算)和触发器碰撞箱(用于球离开板的检测)组成。3个部分在此处作为一个整体的板,并保持相对静止。

(2) 标记点。如图4(b)所示,标记点由渲染层(黑底白圈)和触发器碰撞箱(白圈区域,用于球进出标记点检测)组成,在方形板区域均匀分布9个,与方形板保持相对静止,球在接触碰撞箱边缘时会触发相应事件。

(3) 球。如图4(c)所示,球模型由渲染层和物理碰撞箱构成,同时带有刚体属性,该属性使得Unity物理引擎可对它施加重力,并进行惯性运算。

(4) 摄像机。摄像机用于设定Unity中的渲染视角。场景中存在3个摄像机,1个保持在球的正上方,1个保持在板的正上方,还有1个可根据需要使用鼠标缩放和移动。2个跟随相机使用平行透视(无近大远小关系),1个可移动的主摄像机使用焦点透视。

(5) 物理模拟设定。上述模拟中,所有表面摩擦系数均设定为0,接触面摩擦系数采用最小值,即取两接触面中摩擦系数较小的作为接触区域摩擦系数。在运动中,空气阻力不计,球质量设定为1 g。方形板、摄像机没有被附加刚体属性,不计质量,因此可以任意速度、加速度移动。

3.3 开发思路与流程

基于Unity3D软件构建板球系统元素的模型,在模型中添加物理碰撞箱用于设置与检测碰撞。而后编写脚本,通过脚本指令获取对象之间的实时反馈。系统总体框架设计完成后,进一步探索研究所需关键技术:碰撞检测、控制程序设计、脚本设计等。最后通过调试,并打包发布。图5所示为系统开发流程。

图5 系统开发流程

人机交互界面设计和板球系统仿真程序由C#编写,控制程序通过调用软件开发工具包(Software Development Kit,SDK)相关函数来对Unity中场景进行控制和检测。控制程序可获取球坐标和方形板在x、y轴转动角度,并可设定方形板转动角度。球可触发以下相应事件:球靠近时接触白圈、球完全进入白圈、球离开时接触白圈、球完全离开白圈、球离开板范围等。仿真平台相关代码已上传至github平台。

Unity场景和脚本:

https://github.com/developer-ken/BallSim

SDK控制程序端:

https://github.com/developer-ken/BallSim-SDK

仿真系统跨进程通信如图6所示,使用用户数据包协议(User Datagram Protocol,UDP)进行跨进程通信[10]。在Unity中编写的脚本监听一个固定的本地端口,并等待数据包传入。SDK端嵌入在控制程序中,监听另一个本地端口,并发送Ping包通知Unity端已启动,Unity端脚本收到Ping包后记录发送者端口号用于后续通信,并开始以60 F/s,的速度将当前球坐标、板角度发送至SDK端。SDK端在需要时将希望设定的板角度发送给Unity端的脚本,对应脚本通过调用Unity引擎的相关资源修改角度。

图6 跨进程通信示意图

4 虚实结合的板球系统实验教学设计

4.1 实验教学目标

结合实际教学情况,进行虚实结合的板球系统实验课程方案总体设计,并细化各部分内容,形成一套完整的板球系统实验教学体系。教学方案分为实验准备工作、虚拟仿真实验和实物调试考核3个阶段,具体内容如图7所示。

图7 板球系统实验教学方案

通过实验课程设计,实现如下教学目标:① 巩固控制系统理论知识;② 掌握C#语言编程方法;③ 通过运用仿真软件掌握板球机构控制原理与控制算法;④ 熟练OpenCV基本操作,掌握OpenCV的图像处理方法、特征提取与描述;⑤ 在板球实物搭建中锻炼学生实操能力。

4.2 实验准备工作

在进行板球系统实验教学前,教师在控制原理课程中完成相关理论知识、控制算法、板球机构及原理、仿真软件操作流程等理论讲授工作,并准备方形板、小球、OV摄像头、步进电动机等实验器材。其中,方形板上均匀分布9个圆形区域,从左上角起按顺序编为1~9号区域[11]。

4.3 虚拟仿真实验

学生下载Unity3D软件,根据教师提供的资料包运行板球系统虚拟仿真平台的程序代码,熟悉仿真平台的操作流程,调试并修改代码以实现球位选择、板角倾斜、球的静止与运动等相关操作。教师根据学生的实际情况,布置板球平衡仿真实验的基本要求与高阶要求(见表2)。

表2 仿真实验要求

在调试的过程中,学生可以运用相关算法(如PID算法、模糊控制等)实现小球的运动和稳定控制。仿真平台可以为学生提供球坐标、方形板旋转角度和x、y轴方向的误差等信息,在学生实验中统计的小球多个位置信息如表3所示。此外,学生还可以实时观测小球的运动情况,图8所示为仿真过程中球接触碰撞箱触发相应事件时,标记点边缘会变为黄色。

表3 小球位置信息

在仿真实验过程中,学生还可以理解并改进控制算法,为控制算法在实物调试中的应用打下基础。例如,加入一个新的偏差值定义public float Err_last_last,可以使球更快速稳定地到达目标点,效果如图9所示。改进后算法小球在4次振荡后约4.3 s到达目标点,改进前算法小球在多次振荡后仍处于发散状态。

图8 板球系统仿真实验过程

图9 算法改进效果图

4.4 实物调试考核

仿真实验后,学生分组进行实物实操考核。实物实操分为板球结构搭建、OpenCV球识别和板球运动控制3部分,其中球位的识别与确定是实现板球平衡的关键。主要步骤为:

(1) RGB转灰度。多通道转单通道,取各通道值的平均值作为该像素单通道的值[12]。

(2) 阈值二值化。灰度图转二值图,设定合适阈值,大于阈值的记作1,否则记作0。

(3) 边缘查找。二值图转轮廓点集,获取一个二维数组,其中第一维代表不相连的路径,第二维代表路径中的点[13]。

(4) 圆形拟合。对4个角定位点进行查找,求出形状轮廓的非旋转最小外切矩形,以其长宽平均值的1/2作为圆的半径,扫描形状轮廓上的点,判断偏离拟合圆的程度,以此计算一个图形是圆形的概率。该最小非旋转外切矩形的中心即为拟合圆的圆心。

(5) 计算。通过线性代数计算出一个正好可以同时将4个角定位点移动到4个参考位置的矩阵。

(6) RGB图变形。使用变形矩阵对原RGB图进行变形,即对图像矩阵每个坐标进行处理[14]。

(7) RGB图二值化。对变形后的RGB图进行二值化[15],为RGB 3个通道各自设定范围,在范围内的像素记为1,否则记为0,通过选择合适的范围,视野内将只有识别目标1个亮斑。

(8) 小球识别。获取画面中亮斑的坐标,计算亮斑的可旋转最小外切矩形,其中心坐标记为球坐标[16]。最终效果如图10所示。

(a) 小球识别与标记效果

小球识别步骤完成后,学生可将仿真实验中调试的控制算法应用于实物验证。区别于仿真实验,在板球控制算法实际验证过程中,会遇到算法适应性问题。例如,仿真实验时板倾斜角度可在短时间内发生较大变化,而在现实中步进电动机是无法实现的,且板倾斜角度过大会导致球因惯性滚出方形板。因此,学生可以在程序中加入板倾斜角度限制代码,防止板倾斜角度过大的现象发生。核心代码如下:

Angle=kp*Err+ki*Integral+kd*(Err-Err_last);

If(Angle>10)

Angle=10f;

if(Angle<-10)

Angle=-10f;

Err_last=Err;

Err_last_last=Err_last;

5 结 语

本文以控制理论实验课程为研究对象,采用虚拟仿真技术与板球实验平台相结合的方法,在Unity仿真系统中展现板球系统的结构、原理和操作,并进行虚实结合的实验建设与教学研究。学生在实验过程中不仅能掌握平衡板球控制原理,理解书本学习的控制算法,还可以了解机器视觉等前沿技术,并熟练掌握C#、python等程序语言的编写,实现相关理论知识的传递、内化、巩固与拓展,从而弥补传统仿真软件与教学模式的缺陷和不足,调动学生参与课程学习的积极性和主动性,对控制原理课程建设与教学改革具有一定的促进作用。

猜你喜欢
板球方形控制算法
关于我国板球项目后备人才培养体系建立的初步研究
捕捉方形泡泡
我的方形创想
方形夹具在线切割切槽的应用
Quora:What Is the Saddest Truth about Life
基于ARM+FPGA的模块化同步控制算法研究
高精度位置跟踪自适应增益调度滑模控制算法
数图形
板球运动在普通高校的发展探究
基于航迹差和航向差的航迹自动控制算法