高海濤,韓亞麗,許有熊,徐 飛
GAO Hai-tao, HAN Ya-li, XU You-xiong, XU Fei
(南京工程學(xué)院 機(jī)械學(xué)院,南京 211167)
積木式機(jī)器人是一類以機(jī)械和電子結(jié)構(gòu)件為基本組合模塊,以簡易、快速的積木拼裝為主要組裝方式的模塊機(jī)器人[1]。積木式機(jī)器人的基本組成如圖1所示。它一般分為了軟件和硬件兩大部分,其中軟件部分主要包括了一個集成編程環(huán)境,用以進(jìn)行教育機(jī)器人控制程序的設(shè)計;硬件部分包括了模塊化、系列化的基礎(chǔ)構(gòu)件、傳動部件、動力部件、控制器和傳感器等。利用這些部件,用戶可以根據(jù)自己的創(chuàng)意,自由地拼接組合成種類繁多的機(jī)器人系統(tǒng)。目前常見的積木式教育機(jī)器人如丹麥樂高公司的LEGO機(jī)器人[4],及德國的慧魚機(jī)器人[5],東南大學(xué)的教育機(jī)器人等。
圖1 積木式教育機(jī)器人
盡管積木式教育機(jī)器人產(chǎn)品眾多,然而這些機(jī)器人主要還是生產(chǎn)廠家提供的實體機(jī)器人,這雖然能夠提高學(xué)生的動手能力,但對培養(yǎng)學(xué)生更高層次的想象能力和創(chuàng)新能力尚存在差距。為此急需要建立一個與之相適應(yīng)的機(jī)器人三維仿真平臺,以彌補(bǔ)其缺少仿真的缺陷。本文以東南大學(xué)關(guān)節(jié)型積木教育機(jī)器人為基礎(chǔ),結(jié)合現(xiàn)代先進(jìn)制造技術(shù)和機(jī)器人仿真技術(shù),建立了一種集機(jī)器人設(shè)計、控制程序編寫及動態(tài)物理仿真等功能為一體的三維可視化機(jī)器人仿真平臺。
圖2 仿真平臺的框架結(jié)構(gòu)
根據(jù)三維仿真平臺模塊化、可擴(kuò)展的功能需求,建立了如圖2所示的積木式機(jī)器人三維仿真平臺框架。仿真平臺主要分為了人機(jī)交互層、框架層、應(yīng)用層和數(shù)據(jù)管理層等四層體系結(jié)構(gòu)。各層之間通過信息流和控制流相互關(guān)聯(lián)。仿真平臺的主要功能模塊包括:
1)三維顯示:主要用于積木式機(jī)器人模型的渲染以及三維場景的繪制。
2)圖形化界面:提供了用戶與系統(tǒng)之間的圖形化操作界面。用戶可以通過鼠標(biāo)或鍵盤與系統(tǒng)進(jìn)行交互,選擇進(jìn)入各個場景或?qū)鼍爸械膶ο筮M(jìn)行操作或施加命令。
3)機(jī)器人設(shè)計:實現(xiàn)組合機(jī)器人的設(shè)計和組裝。
4)集成編程:用于控制程序的設(shè)計,其中包括了圖形化編程語言及類C編程語言兩種編程語言,以適應(yīng)不同層次的用戶。
5)動態(tài)仿真:用于建立物理場景驗證教育機(jī)器人的功能,實現(xiàn)積木式教育機(jī)器人的逼真仿真。
6)數(shù)據(jù)管理器:用于管理教育機(jī)器人三維仿真平臺中的各種數(shù)據(jù)文件,實現(xiàn)文件的讀取,解析、轉(zhuǎn)換和存儲等功能。
本文主要對實現(xiàn)三維仿真平臺的模型表達(dá)、機(jī)器人裝配、及動態(tài)物理仿真等關(guān)鍵技術(shù)進(jìn)行研究。
對虛擬機(jī)器人來講,首先要有高質(zhì)量的三維幾何模型,才能夠進(jìn)行機(jī)器人的三維搭建和仿真。
由于仿真平臺包括了機(jī)器人裝配仿真、編程、動態(tài)仿真等多個過程,每個階段所需的機(jī)器人模型有所不同,為了全面地表達(dá)積木式機(jī)器人模型所需的各種信息,本文提出了一種幾何與參數(shù)相結(jié)合的機(jī)器人表達(dá)模型(如圖3所示)。該模型以機(jī)器人幾何模型為基礎(chǔ),補(bǔ)充機(jī)器人裝配和仿真所需要的裝配、剛體及功能等參數(shù)信息。實現(xiàn)教育機(jī)器人零件的完整表達(dá)。
圖3 機(jī)器人零件模型
機(jī)器人零件幾何模型由3DMax建立,然后導(dǎo)入到專門的設(shè)計器中補(bǔ)充裝配、剛體及功能等參數(shù)信息,常見的數(shù)據(jù)如關(guān)節(jié)孔位置、直徑、配合關(guān)系等[6]。采用形式化的描述方法,一個積木式機(jī)器人零件模型可以表示為:
<零件信息>:: =<基本信息> <特征信息>
<基本信息>:: =<零件標(biāo)識> <零件名稱> <物理屬性> <坐標(biāo)系統(tǒng)> <顯示屬性>
<物理屬性>:: =<質(zhì)心> <質(zhì)量> <轉(zhuǎn)動慣量> <摩擦系數(shù)>
<特征信息>:: =<顯示特征> <裝配特征> <剛體特征> <功能特征>
<顯示特征>:: =<幾何模型> <材質(zhì)列表>
<幾何模型>:: =<面列表> <頂點(diǎn)列表> <法向量> <紋理坐標(biāo)列表>
<裝配特征>:: =<特征ID> <特征名稱> <所屬零件名稱><幾何特征>…
…
<剛體特征>:: =<整體包圍盒> <層次包圍盒> <面片包圍盒>
…
與一般機(jī)器人裝配過程不同,積木式教育機(jī)器人主要是利用銷孔聯(lián)接或裝配關(guān)節(jié)點(diǎn)來進(jìn)行組裝的[7]。為了簡化裝配過程,結(jié)合關(guān)節(jié)型教育機(jī)器人裝配特點(diǎn),本文建立了一種基于裝配特征面的積木教育機(jī)器人快速裝配方法。該裝配方法首先選中待裝配零件的一個面作為裝配基準(zhǔn),然后通過移動和旋轉(zhuǎn)零件匹配關(guān)節(jié)孔實現(xiàn)裝配。
在三維環(huán)境中,可以利用射線檢測技術(shù)實現(xiàn)零件模型的鼠標(biāo)拾取[8]。但由于由3dMax創(chuàng)建的零件模型只包含了零件的三角面片信息,未包含幾何體素信息[9],因而鼠標(biāo)只能選取到零件,卻無法直接選取零件上的裝配面。要想實現(xiàn)裝配面的選取,必須尋找另外的途徑。
注意到幾何網(wǎng)格建立零件模型都具有同一裝配面上的三角面片法線相同的特點(diǎn)。利用這一特點(diǎn),只要能夠獲取與射線相交的三角形面片及其法線方向,然后搜索相鄰區(qū)域內(nèi)與該三角形法線方向相同的所有三角形,就可以間接地實現(xiàn)裝配面的選取。
在鼠標(biāo)獲取到零件的控制權(quán)后,建立一條由鼠標(biāo)點(diǎn)擊點(diǎn)發(fā)出的虛擬射線,并檢測與之相交的三角面片及法線方向[10]。設(shè)某一三角形面片的三個頂點(diǎn)為:P1,P2,P3,根據(jù)解析幾何原理,三角形面片及其內(nèi)部所有點(diǎn)可以表示為頂點(diǎn)的加權(quán)平均值,即:
其中:e1,e2,e3分別為三個頂點(diǎn)的權(quán)重,并且滿足條件:e1≥0;e2≥0,e3≥0;且e1+e2+e3=1。于是,求射線與三角形的交點(diǎn)也就變成了求解如下方程:
將t,e2,e3提取出來作為未知數(shù),移項并整理得,得到如下線性方程組:
利用克萊姆法則求解下列方程,并用向量混合積的形式表示:
其中:V1= P2- P1,V2= P3- P1,T = C- P1。
判斷射線與三角形面片是否存在著交點(diǎn),實現(xiàn)三角面片的選取。在選取到與射線相交的三角面片后,求解其法線,搜索相鄰區(qū)域法線相同的三角形面片,并渲染這些三角形為高亮顏色,就可以間接地實現(xiàn)裝配面的選取與高亮顯示。
圖4 重合關(guān)節(jié)點(diǎn)的計算示意圖
1)可能裝配關(guān)節(jié)點(diǎn)的搜索
根據(jù)關(guān)節(jié)型機(jī)器人機(jī)器人裝配規(guī)則,在確定裝配基準(zhǔn)面之后,兩待裝配零件的裝配面應(yīng)處于同一平面上,于是,可以以其中某一零件上的關(guān)節(jié)點(diǎn)為中心建立一個與裝配環(huán)境世界坐標(biāo)系Ow相平行的正方形區(qū)域,通過判斷靠近零件的關(guān)節(jié)點(diǎn)是否落入該正方形區(qū)域內(nèi)來判斷操作者的意圖。如圖4所示,對于兩個待裝配零件桿件PartA和基板PartB,設(shè)待裝配零件PartA上某個關(guān)節(jié)點(diǎn)JA在裝配世界坐標(biāo)系中的坐標(biāo)為(xA,yA,zA),忽略Z軸影響(兩零件在同一平面上)。以關(guān)節(jié)點(diǎn)為中心建立一個平行于裝配面的的正方形區(qū)域a1a2a3a4該正方形區(qū)域的四個頂點(diǎn)坐標(biāo)分別為:a1(xa-a/2,ya+a/2),a2(xa-a/2,ya-a/2),a3(xa+a/2,ya-a/2),a4(xa+a/2,ya+a/2),其中a為零件PartA關(guān)節(jié)孔的間距。判斷靠近物體的關(guān)節(jié)點(diǎn)是否在這個正方形區(qū)域內(nèi)可以通過判斷關(guān)節(jié)點(diǎn)的坐標(biāo)值是否在這四個頂點(diǎn)坐標(biāo)之間來實現(xiàn)。算法的偽代碼如下:
該匹配算法只需要進(jìn)行坐標(biāo)值大小的比較就可以判斷可能裝配點(diǎn),無需進(jìn)行裝配關(guān)節(jié)點(diǎn)間的距離運(yùn)算,這提高了匹配速度。
圖5 裝配關(guān)節(jié)點(diǎn)的匹配
2)裝配關(guān)節(jié)點(diǎn)匹配
當(dāng)搜索到可能裝配點(diǎn)后,在裝配點(diǎn)處會克隆一個當(dāng)前裝配物體的虛物體來標(biāo)識兩物體的最終裝配位置。此外,對多孔桿件及板件而言,在計算重合點(diǎn)時,有可能出現(xiàn)多個重合關(guān)節(jié)點(diǎn)的情況。此時需要記錄所有重合關(guān)節(jié)點(diǎn)的位置,并在重合關(guān)節(jié)點(diǎn)位置處放置虛銷釘,由用戶選擇裝配位置(如圖5所示)。
教育機(jī)器人物理仿真場景通過對真實物理環(huán)境的模擬為虛擬教育機(jī)器人提供了一個擬實的作業(yè)場景,這可以讓虛擬教育機(jī)器人能夠在其中進(jìn)行作業(yè)仿真和調(diào)試,從而給用戶一個直觀、真實的印象。
建立的積木式教育機(jī)器人動態(tài)仿真環(huán)境主要由碰撞檢測、碰撞響應(yīng)、動力學(xué)仿真、控制系統(tǒng)仿真等五個模塊組成(如圖6所示)。動態(tài)仿真的循環(huán)過程如下:在每一仿真步長內(nèi),碰撞檢測模塊獲取環(huán)境中物體的位置和剛體(主要為包圍盒數(shù)據(jù))信息,并調(diào)用碰撞檢測算法獲取場景中物體間碰撞信息,形成一個碰撞列表傳遞給碰撞響應(yīng)模塊。而碰撞響應(yīng)模塊則根據(jù)碰撞參數(shù)建立碰撞動力學(xué)模型,并求解碰撞響應(yīng),輸出碰撞(接觸)力??刂葡到y(tǒng)仿真模塊在程序的控制下,讀取傳感器信息,輸出控制參數(shù),驅(qū)動執(zhí)行器。最后,動力學(xué)仿真模塊根據(jù)碰撞響應(yīng)結(jié)果以及相關(guān)的驅(qū)動參數(shù)建立動力學(xué)方程,進(jìn)行動力學(xué)計算獲取下一時刻剛體的相互力學(xué)關(guān)系和,更新場景中的物體狀態(tài)。當(dāng)上述循環(huán)過程達(dá)到一定的播放速度后,場景中的物體呈現(xiàn)出了連續(xù)運(yùn)動的效果,從而實現(xiàn)物體物理運(yùn)動的動態(tài)模擬[1]。下面我們將對其中的控制系統(tǒng)仿真方法進(jìn)行詳細(xì)闡述。
圖6 物理仿真環(huán)境框架
圖7 虛擬單片機(jī)類圖
控制系統(tǒng)仿真主要是利用宿主計算機(jī)的資源和高級編程語言模擬控制器、傳感器、執(zhí)行器的功能。其中,控制器仿真主要模擬了MCS-51系列單片機(jī)功能,讀取狀態(tài)信息,執(zhí)行控制程序,輸出控制指令,虛擬傳感器則模擬真實傳感器功能,感知仿真環(huán)境中的相關(guān)信號,通過接口模塊將信號傳輸給虛擬控制器;而虛擬執(zhí)行器則執(zhí)行相關(guān)指令。為了保證事件的同步,虛擬控制系統(tǒng)仿真采用了幀時間作為仿真步長,實現(xiàn)整個控制系統(tǒng)的仿真循環(huán)運(yùn)行。
參照常用的MCS-51系列單片機(jī)結(jié)構(gòu)[11],結(jié)合面向?qū)ο缶幊陶Z言的建模方法,建立如圖7所示的虛擬單片機(jī)仿真結(jié)構(gòu)。該虛擬控制器能夠完全模擬MCS-51系列單片機(jī)的指令系統(tǒng),輸入/輸出口、定時器/計數(shù)器、中斷及寄存器等軟硬件資源和功能。虛擬單片機(jī)中的一些功能模塊如由CPU仿真,數(shù)據(jù)寄存器仿真,程序寄存器仿真,I/O口仿真以及時鐘源仿真等分別利用了C++程序中的一些類、變量、數(shù)組及函數(shù)來實現(xiàn)。如RAM的存儲功能及讀寫功能就被封裝成一個RAM類進(jìn)行模擬,其中寄存器的存儲為數(shù)組變量m_reg[4],而寄存器的讀寫功能則為函數(shù)RAM_Read()及RAM_Write()。
虛擬單片機(jī)的運(yùn)行代碼如下:
隨著社會的發(fā)展以及對創(chuàng)新人才培養(yǎng)的需要,積木式教育機(jī)器人作為一種嶄新的教育手段和教學(xué)載體必將引起人們越來越多的關(guān)注。本文提出的積木式教育機(jī)器人三維仿真平臺綜合運(yùn)用了3D圖形圖像技術(shù)、虛擬裝配、多媒體、機(jī)器人、智能控制等多種技術(shù),彌補(bǔ)了現(xiàn)有機(jī)器人訓(xùn)練過程不完備的缺點(diǎn),為學(xué)生創(chuàng)新訓(xùn)練提供了一個新的認(rèn)知環(huán)境和訓(xùn)練平臺。在實現(xiàn)機(jī)器人三維仿真平臺相關(guān)關(guān)鍵技術(shù)的基礎(chǔ)上,我們也利用開源三維圖形化引擎Ogre(Object-oriented Graphics Rendering Engine)及C++編程環(huán)境編程對機(jī)器人三維仿真平臺進(jìn)行了實現(xiàn)(如圖8所示)。實際試用表明該仿真平臺具有良好的應(yīng)用效果。
圖8 三維仿真平臺的應(yīng)用
[1] 高海濤.教育機(jī)器人三維仿真平臺關(guān)鍵技術(shù)研究[D].南京:東南大學(xué)機(jī)械學(xué)院,2010.
[2] Nourbakhsh K.Crowley A. Bhave.The Robotic Autonomy Mobile Robotics Course: Robot Design, Curriculum Design and Educational Assessment[J].Autonomous Robots,2005(18):103-127.
[3] 李春華,崔世鋼,鄭桐,等.發(fā)展機(jī)器人教育培養(yǎng)綜合型創(chuàng)新人才的研究與實踐[J].天津工程師范學(xué)院學(xué)報,2005(4):61-63.
[4] LEGO GROUP.LEGO Robot Product [EB/OL].http: //www.lego.com/en-us/,2014-3-30.
[5] FISCHER GROUP.Fischertechnik model [EB/OL].http:// www. fischertewchnik. de/en/ home. Aspx,2014-3-30.
[6] 李明.教育機(jī)器人三維設(shè)計器的研究與實現(xiàn)[D].南京:東南大學(xué)機(jī)械學(xué)院,2008.
[7] 劉全良.基于LEGO的工程創(chuàng)新設(shè)計[M].北京:機(jī)械工業(yè)出版社,2006.
[8] 高海濤,韓亞麗,許有熊,等.虛擬教育機(jī)器人快速裝配方法研究[J]. 現(xiàn)代制造工程,2014(6):22-26.
[9] 王明強(qiáng).計算機(jī)輔助設(shè)計[M].北京:科學(xué)出版社,2002.
[10] 王志強(qiáng),洪嘉振,楊輝.碰撞檢測算法綜述[J].軟件學(xué)報,1999(10):545-550.
[11] 徐泳龍.單片機(jī)原理及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2011.