郭鐵錚, 鄭亦峰, 陳 巍, 陳國軍, 鄧君卓, 范曉陽
(南京工程學院 工業中心,南京 211167)
平衡板球系統是一個基于視覺的兩自由度非線性機電系統,是控制原理研究的典型對象。目前不少控制理論課程已使用板球系統作為實驗教學平臺,對于幫助學生理解和掌握經典控制理論、現代控制理論及運動控制等知識起到了重要促進作用[1]。但當前的實驗教學過程中存在著設備短缺、時間受限等問題,學生無法在有限的時間內完成機電系統使用、控制算法設計及驗證等內容[2],尤其是需要自主設計算法的高階部分,往往時間和實驗平臺無法同時滿足。考慮到虛擬平臺不受時間、空間的限制,具有成本低廉、反復演練等優點,并能將算法設計等內容前移至仿真平臺,實現“理論學習-仿真設計-實物驗證”的虛實結合教學方式,是解決上述問題的重要途徑。不同于Matlab等傳統仿真平臺[3],Unity仿真系統以3D虛擬交互方式可以直觀地展現板球系統的工作原理。
本文以控制原理實驗課程為研究對象,利用Unity3D軟件建設新型板球系統虛擬仿真平臺,并以此為基礎,設計虛實結合的板球系統實驗教學方案。通過虛擬平臺仿真和實物平臺驗證相結合的教學方法,提高實驗教學效果,改善課程教學質量,對于培養學生掌握控制理論相關課程內容具有重要促進意義。
平衡板球系統是一個不穩定的開環系統,目標是將自由滾動的球保持在特定位置或強制其沿方形板上特定的軌跡運動[4]。板球系統的示意圖如圖1所示,方形板由萬向節固定在設備中心,可圍繞兩個水平軸旋轉。視覺傳感器(OV攝像頭)布置在方形板上方,用于捕獲球的圖像與位置(xb,yb),并將其發送至控制器,處理后產生相應的驅動信號Ux、Uy[5]。兩個步進電動機接收到驅動信號后,傾斜方形板以實現球的運動控制,如圖2所示。球的運動速度由方形板的斜率和球的慣性矩決定。

圖1 實驗臺示意圖

圖2 視覺系統組成
為了克服步進電動機中偶爾出現的失步現象,通過測量電動機旋轉角度,并推導旋轉角度與方形板旋轉角最終位置之間的幾何關系來獲取板的位置。電動機通過特殊設計的L形連桿與方形板相連,電動機旋轉角度與方形板傾斜角度的關系參見圖3所示的空間連桿機構示意圖。L形連桿的每側都有平行四邊形連桿機構,其中L1和L2為垂直連桿機構,L3和L4為水平連桿機構。對于微小運動來說,由于平行四邊形連桿機構運動學約束作用[6],該機械結構的設計可確保兩個方形板傾斜角(φx和φy)和相應的電動機旋轉角度(θm1和θm2)相等。

圖3 板球系統空間連桿機構示意圖
由于首次接觸控制原理課程的學生較難理解復雜的板球系統數學建模過程,對板球系統進行了建模簡化,以便初學者快速掌握其原理和要領。
基本假設:
(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 特定術語解釋
虛擬仿真系統是一種實現軟、硬件一體化的系統,其中Unity3D具有功能模塊化、開發效率高、畫面質量優、兼容性好、交互性強等優點[9]。本文根據實際需求,最終確定了基于Unity3D技術的虛擬仿真方案。該方案設計出的系統實現了一個高沉浸性與交互性的虛擬仿真環境,后期與硬件設備調試結合,為學生提供了一套完整的控制系統實驗教學體系。
為幫助學生對平衡板球系統有更直觀的認識和理解,在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。方形板、攝像機沒有被附加剛體屬性,不計質量,因此可以任意速度、加速度移動。
基于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 跨進程通信示意圖
結合實際教學情況,進行虛實結合的板球系統實驗課程方案總體設計,并細化各部分內容,形成一套完整的板球系統實驗教學體系。教學方案分為實驗準備工作、虛擬仿真實驗和實物調試考核3個階段,具體內容如圖7所示。

圖7 板球系統實驗教學方案
通過實驗課程設計,實現如下教學目標:① 鞏固控制系統理論知識;② 掌握C#語言編程方法;③ 通過運用仿真軟件掌握板球機構控制原理與控制算法;④ 熟練OpenCV基本操作,掌握OpenCV的圖像處理方法、特征提取與描述;⑤ 在板球實物搭建中鍛煉學生實操能力。
在進行板球系統實驗教學前,教師在控制原理課程中完成相關理論知識、控制算法、板球機構及原理、仿真軟件操作流程等理論講授工作,并準備方形板、小球、OV攝像頭、步進電動機等實驗器材。其中,方形板上均勻分布9個圓形區域,從左上角起按順序編為1~9號區域[11]。
學生下載Unity3D軟件,根據教師提供的資料包運行板球系統虛擬仿真平臺的程序代碼,熟悉仿真平臺的操作流程,調試并修改代碼以實現球位選擇、板角傾斜、球的靜止與運動等相關操作。教師根據學生的實際情況,布置板球平衡仿真實驗的基本要求與高階要求(見表2)。

表2 仿真實驗要求
在調試的過程中,學生可以運用相關算法(如PID算法、模糊控制等)實現小球的運動和穩定控制。仿真平臺可以為學生提供球坐標、方形板旋轉角度和x、y軸方向的誤差等信息,在學生實驗中統計的小球多個位置信息如表3所示。此外,學生還可以實時觀測小球的運動情況,圖8所示為仿真過程中球接觸碰撞箱觸發相應事件時,標記點邊緣會變為黃色。

表3 小球位置信息
在仿真實驗過程中,學生還可以理解并改進控制算法,為控制算法在實物調試中的應用打下基礎。例如,加入一個新的偏差值定義public float Err_last_last,可以使球更快速穩定地到達目標點,效果如圖9所示。改進后算法小球在4次振蕩后約4.3 s到達目標點,改進前算法小球在多次振蕩后仍處于發散狀態。

圖8 板球系統仿真實驗過程

圖9 算法改進效果圖
仿真實驗后,學生分組進行實物實操考核。實物實操分為板球結構搭建、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;
本文以控制理論實驗課程為研究對象,采用虛擬仿真技術與板球實驗平臺相結合的方法,在Unity仿真系統中展現板球系統的結構、原理和操作,并進行虛實結合的實驗建設與教學研究。學生在實驗過程中不僅能掌握平衡板球控制原理,理解書本學習的控制算法,還可以了解機器視覺等前沿技術,并熟練掌握C#、python等程序語言的編寫,實現相關理論知識的傳遞、內化、鞏固與拓展,從而彌補傳統仿真軟件與教學模式的缺陷和不足,調動學生參與課程學習的積極性和主動性,對控制原理課程建設與教學改革具有一定的促進作用。