李壽杰,宋華軍,興 雷,李 鄭,劉東凱
(中國石油大學(xué)(華東) 信息與控制工程學(xué)院,山東 青島 266580)
從谷歌公司AlphaGo 圍棋機器人與李世石圍棋對弈,人機對戰(zhàn)機器人便受到廣泛關(guān)注,各種各樣的機器人開始不斷向人類挑戰(zhàn)。如文獻[1]中的網(wǎng)球機器人,文獻[2]中的乒乓球機器人。本文設(shè)計了一款適用于實驗教學(xué)的氣冰球機器人實驗系統(tǒng),以較高的交互性,加深學(xué)生對機器人的理解與學(xué)習(xí)。
在人機對抗機器人設(shè)計中,成本、可靠性、準確性是核心問題。目前氣冰球機器人機械結(jié)構(gòu)設(shè)計方案分為兩類:一是利用文獻[3]所說的多自由度工業(yè)機械臂原理;二利用是文獻[4]所說的并聯(lián)機械手原理。第一類設(shè)計方案硬件設(shè)計簡單、精度好,但成本高,不適宜廣泛應(yīng)用,第二類方案成本低,但機械結(jié)構(gòu)較復(fù)雜。
氣冰球機器人的位置信息采集方案也有兩類,一是文獻[5]提到的陀螺儀方案,這種方案成本低,但可靠性、穩(wěn)定性差;二是采用攝像頭,借助機器人視覺進行數(shù)據(jù)采集,正如文獻[6]所提到的技術(shù),這種方案可靠性強,設(shè)計靈活,但成本較高。
文獻[7-8]介紹了一種步進電機的快速控制算法,可使步進電機更快地移動,文獻[9-10]所提到的軌跡預(yù)測算法,為氣冰球機器人的軌跡預(yù)測提供了理論參考。
綜上所述,為了減少成本、提高系統(tǒng)的穩(wěn)定性,本文基于機器視覺,采用步進電機的機械結(jié)構(gòu),結(jié)合文獻[11]介紹的透視變換及文獻[12]提到的 Hough 變換輪廓檢測、軌跡預(yù)測、碰撞檢測、位置校準等算法,對氣冰球的運動軌跡建模后,設(shè)計了一套穩(wěn)定可靠的氣冰球機器人實驗系統(tǒng)。
整個實驗系統(tǒng)由氣冰球機器人和氣冰球兩部分組成。其中系統(tǒng)硬件包括氣冰球桌、攝像頭、步進電機機械臂,如圖1 所示。攝像頭位于氣冰球桌中心位置正上方,以保證采集到的圖像比例適宜。由3 個步進電機組成沿{Ow}世界坐標系的機械臂,因為 Y 軸方向的負載較大,所以由2 個步進電機控制Y 軸方向,另1 個步進電機控制X 軸方向,以保證氣冰球機器人能夠快速響應(yīng)。
軟件設(shè)計由目標追蹤模塊和運動策略設(shè)計模塊構(gòu)成。目標追蹤模塊負責(zé)氣冰球機器人和氣冰球的識別和位置追蹤,運動策略設(shè)計模塊負責(zé)預(yù)測氣冰球下一步的位置和進行位置校準。

圖1 氣冰球機器人硬件結(jié)構(gòu)示意圖
為了準確描述氣冰球機器人的運動,建立了3 個坐標系,{Ow}為世界坐標系,表示氣冰球的桌上位置;{Or}為標記坐標系,以標記點為中心;{Oc}為攝像頭采集到的圖像坐標系。氣冰球和氣冰球機器人上各有一個顏色卡片作為顏色識別標志。
為了更準確地描述和預(yù)測氣冰球的運動軌跡,在{Ow}世界坐標系中對氣冰球的運動進行建模。氣冰球的運動符合平面上的變加速運動,其產(chǎn)生一個v0的初速度,假設(shè)桌面的摩擦力為μ,t時刻的速度為vt,加速度為a,t時刻發(fā)生的位移為s,氣冰球的質(zhì)量為m,建立速度方程、位移方程和受力方程:


利用上述方程可以得到氣冰球到達進攻范圍所消耗的時間及最終的速度,從而提前設(shè)定好氣冰球機器人的響應(yīng)時間和運動速度。坐標系方程為:

若氣冰球與氣冰球桌的邊緣發(fā)生碰撞,則會發(fā)生運動軌跡的變化,假設(shè)與氣冰球桌發(fā)生碰撞時的速度為v1,發(fā)生碰撞后的速度為v2,發(fā)生碰撞后氣冰球桌的速度為v′,建立如下方程:



圖2 氣冰球碰撞軌跡反彈原理圖
如圖3 所示,氣冰球機器人實驗系統(tǒng)采用了步進電機點到點的設(shè)計方式,建立坐標系之后,將氣冰球的運動軌跡數(shù)字化。在{Or}標記坐標系對氣冰球機器人實驗系統(tǒng)進行建模,在氣冰球桌上建立一個進攻界限ym,通過其與氣冰球機器人軌跡方程y=kx+b的交點,得到xm,從而確定氣冰球機器的運動終點及氣冰球的運動距離s,利用公式(4)就可以得到氣冰球到達進攻界限所需要的時間,進而可規(guī)劃氣冰球機器人的運動。

圖3 氣冰球進攻策略原理圖
為了提高移動的準確性和穩(wěn)定性,采用了S 形速度曲線來驅(qū)動步進電機。S 形曲線的加減速過程光滑,但加減速調(diào)參過程要比梯形曲線復(fù)雜。因此使用正弦函數(shù)曲線的 1/4 周期作為氣冰球機器人的加減速曲線,如圖4 所示。

圖4 正弦曲線加速過程
設(shè)用正弦函數(shù)曲線對步進電機進行加速控制,目標速度為A。通過控制脈沖數(shù)目來控制步進電機角位移,設(shè)加速過程中總位移為S,則速度v與時間t的關(guān)系為:

由于已經(jīng)指定加速距離為S(單位為脈沖,即 S個脈沖),所以曲線下面積S為:

聯(lián)立式(9)和式(10),可解得:

由于步進電機的速度取決于給定脈沖的頻率,每個脈沖周期的大小決定了在該脈沖出現(xiàn)時刻步進電機的速度,所以可通過控制每個脈沖高電平與低電平的時間之和來控制步進電機的速度。通常每個脈沖的周期非常短,不適合使用單片機進行實時運算,所以采用空間換時間的策略,提前建立好加減速過程中每個脈沖的延時長度數(shù)組,在使用時直接調(diào)用即可。

當(dāng)求出上式中ti之后,即可求出每個脈沖高低電平時間之和:解上式可得:

利用公式(13)的數(shù)值解對每一個時間點的電機速度進行控制。
針對氣冰球機器人目標追蹤的要求,開發(fā)了基于HSV 顏色識別的動態(tài)目標追蹤模塊。識別過程主要包含透視變換、去噪點及輪廓檢測等。圖像處理模塊軟件流程如圖5 所示,在完成圖像采集后,先利用透視變換算法進行圖像矯正,之后根據(jù)氣冰球的HSV 閾值構(gòu)建掩膜,利用腐蝕膨脹算法消除干擾,最后通過邊緣檢測算法得到氣冰球的位置坐標。

圖5 圖像處理模塊軟件流程
在進行圖像采集時,攝像頭的位置不可能完全位于氣冰球桌的中心,而移動攝像頭需要很繁瑣的操作,所以采用了透視變換,將攝像頭采集到的不規(guī)則的氣冰球桌圖像變換為規(guī)則的長方形。
在{Oc}坐標系中對采集到的圖像進行建模,透視變換的本質(zhì)是將圖像投影到一個新的視平面,其通用變換公式為:

其中(u,v)為原始圖像像素坐標,(x=x?/w?,y=y?/w?)為變換之后的圖像像素坐標。原圖像及透視變換后的圖像如圖6 所示。

圖6 原圖像(上)透視變換后的圖像(下)
在進行顏色捕捉時采用了HSV 顏色空間模型,首先利用HSV 篩選器選擇出所需要的顏色。在根據(jù)HSV閾值構(gòu)建掩膜后,為了有效濾除噪聲,保留圖像中原有信息,采用了形態(tài)學(xué)中的膨脹與腐蝕兩種操作。利用先腐蝕后膨脹的過程可以消除小物體,在纖細點處分離物體,平滑較大物體邊界,但同時并不會明顯改變原來物體的面積。這樣就可以減少環(huán)境中與氣冰球顏色相近的物體的影響,效果如圖7 所示。

圖7 HSV 過濾后的圖像(上)先腐蝕后膨脹后的圖像(下)
為了確定氣冰球和氣冰球機器人的位置,首先采用Hough 變換輪廓檢測找到二者的圖像,之后通過質(zhì)心判斷來確定二者的中心和坐標。
在霍夫圓檢測方法中,采用了一種投票方式來記錄參數(shù)空間里的相關(guān)參數(shù),并由此參數(shù)得到所需的圖像空間信息。通過投票方式,可以得到累加器中最大值對應(yīng)的圓心坐標(a,b)以及圓的半徑r,如圖8 所示。圖中黃色所圈出的為所要檢測的圓,圓心坐標為(629, 213)。

圖8 Hough 變換檢測所得到的圓
運動策略設(shè)計模塊由氣冰球機器人的位置校準模塊和氣冰球軌跡預(yù)測模塊兩部分組成。氣冰球機器人位置校準模塊是為了防止氣冰球機器人在快速移動過程中,出現(xiàn)丟步現(xiàn)象而不能到達預(yù)定位置。氣冰球軌跡預(yù)測模塊則是通過氣冰球機器人的移動,來確定氣冰球最后的碰撞點。
為了降低成本,在設(shè)計時采用的是沒有負反饋的步進電機。這種電機在高速移動或者撞擊過程中難免會出現(xiàn)丟步現(xiàn)象,為了糾正丟步所帶來的誤差,采用圖像校正方法進行位置調(diào)整。
在氣冰球機器人的前端有一個顏色卡片,用以確定氣冰球機器人的位置。初始化時,氣冰球機器人會有一個固定位置(x0,y0),若不在此位置則應(yīng)通過當(dāng)前實際位置(x,y)及要達到的位置(x0,y0),來確定下一步應(yīng)該移動的距離,具體流程如圖9 所示。

圖9 位置校準流程
軌跡預(yù)測模塊是氣冰球機器人進行攻擊和防御的核心算法,通過軌跡預(yù)測系統(tǒng)來確定氣冰球到達攻擊區(qū)域時的位置,從而控制與氣冰球機器人的碰撞。軌跡預(yù)測包括與冰球桌的兩側(cè)發(fā)生碰撞和不發(fā)生碰撞兩種情況。由于氣冰球桌利用氣體的吹力減少了氣冰球與桌面的摩擦,所以其移動軌跡可以看作線性函數(shù)y=kx+b。
當(dāng)通過軌跡預(yù)測得到其軌跡運動函數(shù)后,如果其終點超過了氣冰球桌的邊界,則判定本次氣冰球?qū)⑴c冰球桌碰撞,需對軌跡函數(shù)進行修改,使k= -k,得到碰撞之后的軌跡參數(shù)。
為了準確判斷氣冰球到達攻擊范圍的時間,加入了速度檢測,在算法中加入計時函數(shù),來讀取相鄰兩幀圖像拍攝的時間,并獲取在兩幀圖像范圍內(nèi)氣冰球位置的變換,計算氣冰球在X 軸、Y 軸的速度。再根據(jù)此速度確定氣冰球到達氣冰球機器人攻擊范圍的時間,從而給氣冰球機器人設(shè)置攻擊時間和速度。
為了驗證設(shè)計的有效性,所使用的氣冰球機器人實驗系統(tǒng)測試平臺如圖10 所示,長×寬×高為105.6 cm×57.5 cm×65 cm;供電電壓為220 V。

圖10 氣冰球機器人測試平臺實物圖
氣冰球機器人實驗系統(tǒng)除了氣冰球桌以外,其他結(jié)構(gòu)全部通過機械加工或3D 打印制成,包括3 個步進電機及皮帶、導(dǎo)軌、電機控制器、攝像頭、支架等。步進電機具有精度高、響應(yīng)速度快、扭力大等特點,通過持續(xù)發(fā)送一定占空比的 PWM 波使其到達某一位置。將X 軸的步進電機通過滾珠軸承固定在導(dǎo)軌上,兩個Y 軸步進電機利用皮帶拉動其沿X 軸的移動。
圖11 中的藍線為初始預(yù)測的曲線,綠線為發(fā)生碰撞之后的軌跡曲線。

圖11 氣冰球碰撞軌跡預(yù)測圖
為了測試步進電機的移動速度,首先用刻度尺量出20 cm、10 cm、5 cm 的距離,在氣冰球桌上標好位置,在程序內(nèi)部建立計時函數(shù),當(dāng)執(zhí)行完成后顯示所用時間。通過不斷提高速度和調(diào)整S 形速度曲線參數(shù),來保證在不丟步的情況下實現(xiàn)氣冰球機器人的最大反應(yīng)速度。
由實驗數(shù)據(jù)可得,當(dāng)步進電機速度為30 cm/s 時,其速度保持穩(wěn)定,并且不存在丟步現(xiàn)象,最后得到的步進電機參數(shù)如表1。

表1 步進電機設(shè)定參數(shù)
為了驗證軌跡預(yù)測模塊的準確性,在實驗中設(shè)定特定的軌跡路線,對采集到的圖像的預(yù)測軌跡與實際氣冰球所到達的位置進行比較,來驗證軌跡預(yù)測模型的準確度。
測試實驗發(fā)現(xiàn),不發(fā)生碰撞的情況下估計時間誤差為±0.024 s,發(fā)生碰撞情況下估計時間誤差為±0.04 s,在時間誤差范圍內(nèi)發(fā)生的位移為±0.72 cm 和±1.2 cm,估計距離誤差為±0.8 cm,氣冰球機器人的直徑為9 cm,滿足系統(tǒng)設(shè)計要求。
本文提供了一種基于機器視覺和步進電機快速控制系統(tǒng)的氣冰球機器人實驗系統(tǒng)設(shè)計。系統(tǒng)包括追蹤模塊、運動策略設(shè)計模塊及機械結(jié)構(gòu)3 部分。采用了碰撞檢測方式,將氣冰球的運動軌跡擬合為線性函數(shù)曲線,在與冰球桌碰撞情況下依然可以準確預(yù)測氣冰球的位置。所采用的邊緣檢測算法,可以實時準確捕捉氣冰球的位置。整個機械結(jié)構(gòu)的不斷改進,將使氣冰球機器人實驗系統(tǒng)的教學(xué)性和趣味性不斷增加。