晏祖根,肖俊,董旭涓
糖果包裝機虛擬拆裝碰撞檢測研究
晏祖根1*,肖俊1,董旭涓2
(1.哈爾濱商業(yè)大學,哈爾濱 150028;2.基巖科技(杭州)開發(fā)有限公司,杭州 311100)
為了提高虛擬裝配系統(tǒng)中碰撞檢測的效率,提出以AABB包圍盒粗檢測和深度圖細檢測的碰撞檢測方法。首先利用SolidWorks軟件建立BZ350糖果包裝機模型,以STL格式導入到引擎中,通過對零件先建立AABB包圍盒做粗檢測后,分別對2個零件獲取對應(yīng)的深度圖,使用OpenCV對2張深度圖相疊加,根據(jù)疊加后像素值的大小來判斷零件是否發(fā)生了碰撞。實驗表明,當疊加后深度值小于100的數(shù)量占所有深度值不為0的數(shù)量的比例大于86.2736%時,即可認定兩零件發(fā)生碰撞。對比傳統(tǒng)檢測算法,此算法在保證了檢測速度和檢測精度的前提下,對復(fù)雜模型的檢測具有優(yōu)勢,并且保證了運行的速度在40幀/s以上的流暢運行。
糖果包裝機;碰撞檢測;實驗研究
扭結(jié)式糖果包裝機是一種采用柔性包裝材料包裹糖果且在兩端開口處進行扭結(jié)處理的機器,在糖果生產(chǎn)中被大量使用[1]。對糖果包裝機進行拆裝工作是一個不可避免的過程,而且目前對糖果包裝機進行虛擬裝配方向研究的還比較少。為了確保糖果包裝機裝配可行性并提高裝配質(zhì)量和效率[2-3],對其進行虛擬裝配研究是必要的。在裝配系統(tǒng)中,零件間的碰撞會導致?lián)p壞或者減少壽命,為了確保作業(yè)過程的真實性和高效性,必須做好零件之間發(fā)生碰撞后的檢測工作[4-6]。
碰撞檢測方法按空間域角度大致可分為基于圖像空間的碰撞檢測方法和基于實體空間的碰撞檢測方法,而基于圖像的算法優(yōu)勢在于可通過圖形硬件(GPU)來分擔CPU的壓力[7]。廖偉東等[8]以包圍盒干涉檢查作為粗檢測,三角形面片相交檢測作為精確檢測,提出一種基于截距式方程的三角形干涉算法,實驗結(jié)果得出碰撞檢測時間為5~23 ms,使碰撞檢測效率提高。張振宇等[9]通過獲得機器人力矩偏差一階差分以及二階差分來判斷機器人發(fā)生的是有意碰撞還是無意碰撞,該方法以較小的誤差提高了碰撞檢測算法中預(yù)測力矩的準確性。陳晨等[10]利用了層次包圍盒二叉樹結(jié)構(gòu)結(jié)合三角形面片相交的檢測方法,但其二叉樹遞歸剖分至單個三角形面片,當模型尺寸較大時會出現(xiàn)遞歸深度過大導致棧溢出的問題。陳果等[11]結(jié)合UG、3DMAX和Unity3d,開發(fā)一個虛擬培訓系統(tǒng),提高用戶在鉆機生產(chǎn)裝配過程中的安全警惕性,極力避免安全事故的發(fā)生。
本文以BZ350糖果包裝機為研究對象,利用SolidWorks建立三維模型,開發(fā)基于糖果包裝機的虛擬現(xiàn)實人機交互系統(tǒng),使用AABB包圍盒對模型進行粗檢測,提出一種基于深度圖的圖像碰撞檢測算法。對模型進行精確的碰撞檢測,既提高了檢測效率以及普適性,又能保證運行的速度穩(wěn)定。
基于VR、多媒體等技術(shù),虛擬拆裝實驗及支撐平臺,包括數(shù)據(jù)層、服務(wù)層、實驗層以及應(yīng)用層,層與層之間相互聯(lián)系,下層為上層提供運行與服務(wù),直到達到虛擬實驗項目的整體化、完整化的體系構(gòu)建?;谔摂M實驗系統(tǒng)架構(gòu)和功能需求分析,采用模塊化設(shè)計思想,建立基于虛擬手操作的包裝機虛擬拆裝實驗系統(tǒng)開發(fā)的功能模塊體系,各模塊主要功能如下:
1)用戶界面模塊。用戶與系統(tǒng)交互的橋梁,包括輸入設(shè)備與輸出設(shè)備。操作者通過手部控制器與軟件界面交互,完成學生信息管理、用戶注冊、實驗選擇、成績評定等功能;通過手部控制器與系統(tǒng)的虛擬環(huán)境對象交互;通過頭盔顯示器、電腦顯示器等輸出設(shè)備得到及時反饋。
2)數(shù)據(jù)接口模塊。系統(tǒng)的數(shù)據(jù)基礎(chǔ),將SolidWorks等軟件建立的包裝機三維模型的零件幾何模型、零件物理特征信息等,通過一定的轉(zhuǎn)換處理,輸入到虛擬裝配環(huán)境模塊中,以生成適應(yīng)系統(tǒng)不同需求的虛擬零件模型。
3)虛擬裝配環(huán)境模塊。系統(tǒng)的核心,包括虛擬現(xiàn)實技術(shù)和交互式裝配模擬兩部分。虛擬現(xiàn)實技術(shù)是系統(tǒng)開發(fā)的基礎(chǔ),虛擬環(huán)境管理主要對裝配環(huán)境進行配置和渲染生成身臨其境的虛擬裝配環(huán)境,虛擬現(xiàn)實算法包括碰撞檢測算法、多細節(jié)層次模型算法等。交互式虛擬裝配包括虛擬手操作和裝配過程仿真,虛擬手操作關(guān)注虛擬手與零件的交互作用,裝配過程仿真關(guān)注零件與零件之間的交互作用。
4)數(shù)據(jù)輸出模塊。輸出產(chǎn)品虛擬模型、裝配路徑、裝配過程動畫等,為虛擬裝配相關(guān)應(yīng)用提供數(shù)據(jù)支持。
碰撞檢測也被叫做相交測試或者是接觸測試,是用來判斷物體之間的位置關(guān)系,物體運動時總要判斷它們之間是否有相交的區(qū)域,什么時候相交,有多少相交區(qū)域[12-13]。通常的檢測方式就是通過對模型構(gòu)建幾何機構(gòu)找出相交物體,由于零件的不規(guī)則性,本文將選擇AABB包圍盒作為粗檢測的包圍盒。一方面是只是對其進行粗略檢測,加測出2個碰撞物體的編號;另一方面是該包圍盒簡單,可以優(yōu)化系統(tǒng)的整體運行速度,如圖1所示。
AABB包圍盒定義為包裹待測模型且平行于空間坐標軸的最小長方體,通過計算待測模型在空間坐標軸方向上的最值點,就可確定一個AABB包圍盒,即6個點坐標表述一個軸對齊包圍盒。AABB包圍盒的相交測試快、性能好、應(yīng)用廣泛,適用于直接從外部導入的模型。AABB區(qū)域如式(1)所示。
通過實時檢測零件的包圍盒是否與其他包圍盒存在交互,通過此判斷零件的交互情況。
上述的包圍盒粗略檢測階段只需判斷幾何體之間是否存在交集情況,接下來本文將通過使用深度圖來判斷幾何體之間的精確交互情況。
深度圖是3D渲染中的其中一種,在很高級效果實現(xiàn)中都起到了非常重要的作用,比如全局霧效、景深、特效柔和,基于屏幕空間的反射、陰影、貼花等。深度指像素到攝像機的距離,每一個像素經(jīng)過渲染之后都會得到一個深度,距離攝像機越近,那么它的深度值也就越小[14-15],渲染的范圍只存在遠裁面以及近裁面之間的物體,其余區(qū)域都會被裁剪掉,原理見圖2。
圖2 深度圖原理
如圖2所示,通常說的深度是一個0~1內(nèi)的值,當物體轉(zhuǎn)換到攝像機空間之后,如果頂點正好在近裁面上,那么深度值為0;如果在遠裁面上,那么深度值為1。因此在深度圖中,模型距離距離攝像機越近的像素,深度越接近0,顏色越接近黑色;模型距離攝像機越遠的像素,深度越接近1,顏色越接近白色。
深度圖之中存儲的都是非線性深度,需要將其轉(zhuǎn)化為線性深度從而完成后續(xù)的計算。首先頂點會通過模型變換以及視圖變換從本地空間轉(zhuǎn)化到世界空間,再從世界空間轉(zhuǎn)化成視圖空間,視圖空間還需要通過投影變換轉(zhuǎn)化成為裁切空間,轉(zhuǎn)換的規(guī)則如下:
投影變換矩陣如式(2)所示。
在NDC空間下值的范圍是?1~1,而深度的范圍是0~1,把結(jié)果歸一化到0到1之間,見式(4)。
通過式(4)就能使用深度圖來反算出線性深度的值,并且其線性深度的變化最為平滑,因此能夠作為準確評估距離的參數(shù)使用。
當2個零件的包圍盒出現(xiàn)交互情況的時候,碰撞的粗檢測通過后,開始對手上的零件進行深度圖獲取,如圖3所示。
圖3 攝像機設(shè)定
虛擬環(huán)境中用手抓取一個零件去和另外一個零件裝配碰撞時,當兩包圍盒交互時,粗檢測通過之后,會得到手上零件的模型名稱(以下稱手上零件)以及碰上的另一個零件的名稱(以下稱待測零件)。這時在虛擬環(huán)境中分別設(shè)置2個攝像機進行拍攝,分別是攝像機A以及攝像機B。
近裁面選擇的是零件的正面,目標是為了拍取手上零件的深度圖。考慮到攝像機設(shè)置過近的話無法拍出手上零件以及待測零件的整體輪廓,因此攝像機A設(shè)置的位置是距離近裁面=10 m的位置;而由于手上零件需要拍出其精確的深度變化,近裁面以及遠裁面的距離不易過大,因此遠裁面設(shè)置的位置是近裁面距離=255 mm的位置。由于像素的范圍是0~255,將距離設(shè)置為255 mm,既保證了能夠拍出零件精確深度圖的要求,又有利于做距離判斷,使得1個像素對應(yīng)的是1 mm的距離。
近裁面選擇的是距離近裁面反方向=100 mm的位置,目標是為了拍取待測零件的深度圖。攝像機B設(shè)置的位置是近裁面距離=10 m的位置,遠裁面設(shè)置的位置是近裁面距離=255 mm的位置。
由圖3可知,從開始進行精確碰撞檢測獲取深度圖時,攝像機A拍出的手上零件的深度圖A是始終不會變化的,而攝像機B拍出的待測零件的深度圖B是始終變化的。
由上述分析可知,深度值的變化線性的,而且深度圖A以及深度圖B獲取結(jié)果穩(wěn)定,因此以深度圖作為判斷兩零件的距離情況以及碰撞情況是可靠的。
虛擬拆裝實驗系統(tǒng)開發(fā)系統(tǒng)通過虛擬現(xiàn)實環(huán)境引擎與VS2019相結(jié)合,利用SolidWorks做前期的零件建模、虛擬環(huán)境渲染和動畫制作,利用Steam VR對頭盔顯示器、手部控制器等交互設(shè)備進行連接、定位及插件設(shè)置,采用Access數(shù)據(jù)庫支撐虛擬實驗系統(tǒng)數(shù)據(jù)信息的存取。使用SolidWorks建立BZ350糖果包裝機三維模型,如圖4所示。
圖4 BZ350糖果包裝機
雙端扭結(jié)式糖果包裝機模型,主要由理糖部件、進糖部件、供膜部件、扭結(jié)部件、工序盤以及箱體部件、傳動系統(tǒng)等組成,實現(xiàn)單層或雙層薄膜糖果雙端扭結(jié)裹包[16]。根據(jù)運行過程,扭結(jié)部件需要對糖果包裝紙進行夾取以及扭轉(zhuǎn)的工序,其零件發(fā)生干涉的情況比較多,比較具有代表性。將BZ350糖果包裝機模型以STL格式導入到引擎中使用,下面將以扭結(jié)部件為例,對其進行基于深度圖的碰撞檢測。
在虛擬裝配中,手上零件以及待測零件存在3種情況,分別是貼合情況、碰上情況以及分離情況,以端蓋以及扭結(jié)箱體為例,如圖5所示。
圖5 裝配過程3種碰撞狀態(tài)
當處于貼合的狀態(tài)時手上零件端蓋有一小凸起,因此凸起的深度圖A像素值有2個,分別是凸起位置像素值為0,以及平面像素值為6;深度為平整的一個平面,因深度圖B的像素值為94。
當碰上的時候,可以理解為待測零件距離近裁面的距離減少了,也就意味著深度圖A的像素值不變,但是深度圖B的像素值減小。
分離的情況與碰上的情況正好相反,手上零件與待測零件分離了意味著待測零件距離近裁面的距離增加了,那么也就是說明深度圖A的像素值不變,但是深度圖B的像素值增大。以上述3種碰撞狀態(tài)拍取深度圖,其側(cè)視圖如圖6所示。
圖6 碰撞狀態(tài)深度側(cè)視圖
圖6中拍取的深度圖A,即端蓋的深度圖是不變的;而深度圖B,即扭結(jié)箱體,根據(jù)其距離端蓋的距離不同,由遠及近它的顏色逐漸變深,其深度值也逐漸變小。
OpenCV提供能對讀取以及處理像素圖的API,通過使用OpenCV中的API來對深度圖A和深度圖B進行疊加處理,再對其進行統(tǒng)計。當手上零件以及待測零件處于貼合狀態(tài)時,得到的統(tǒng)計結(jié)果如表1所示。
表1 OpenCV實驗結(jié)果
Tab.1 OpenCV experimental results
當貼合時,通過OpenCV對2張深度圖進行相加疊加之后可以得出貼合時的像素值為100,但是由于像素值是有偏差的,經(jīng)過OpenCV統(tǒng)計可知,當完全貼合的時候像素值剛好等于100的像素點數(shù)量占所有非255像素值的86.808 5%,那么只有當像素值為100的數(shù)量占比大于86.808 5%時候才能被認為是貼合。當碰上的時候,也就意味著深度圖A與深度圖B相加疊加的像素值小于100。當分離的時候,也就意味著深度圖A與深度圖B相加疊加的像素值大于100。
由于該實驗需要做的是判斷手上零件以及待測零件是否處于碰撞狀態(tài),那么需要做的只需要用OpenCV統(tǒng)計出所有非255像素值中小于100的數(shù)量,要是該數(shù)量大于86.2736%即可判斷出手上零件與待測零件發(fā)生了碰撞。
使用者點擊扳機鍵選中零件,移動到需要裝配的零件對應(yīng)位置上完成裝配,并且裝配過程中速度保持在40幀/s以上,如圖7所示。
圖7 裝配過程
裝配過程中,當手上零件碰撞到待測零件時或者松手時,手上零件將不再能被選中,拖動待測零件移動時手上零件將會跟隨移動,如圖8所示。
圖8 圓柱齒輪裝配完成
裝配完成時手上零件以及待測零件空間坐標位置以及旋轉(zhuǎn)值情況如圖9所示。
在對圓柱齒輪進行5次裝配后,分別記錄圓柱齒輪和二軸在完成裝配后的大地坐標位置以及旋轉(zhuǎn)值的情況如圖9a和圖9b所示。實驗結(jié)果顯示,圓柱齒輪和二軸完成裝配后,其大地坐標位置幾乎相同,可知兩零件實現(xiàn)了跟隨,達到了完成裝配的要求;反觀兩零件的旋轉(zhuǎn)值,由于一方面手部在裝配的過程中會有一定的抖動,另一方面受制于視角偏差,所以存在細微的差距,但是在允許范圍內(nèi)。綜上,上述的旋轉(zhuǎn)值符合完成裝配的要求。
圖9 坐標位置以及旋轉(zhuǎn)值
本文以BZ350糖果包裝機為模型,對虛擬環(huán)境下模型間的碰撞檢測進行研究,實驗結(jié)果表明:
1)以深度圖作為碰撞精確判斷的主要依據(jù),優(yōu)勢在于只需要對模型建立最簡單的AABB包圍盒后,再使用深度圖做后續(xù)判斷即可。深度圖的獲取簡單,深度值的變化穩(wěn)定,可靠,降低了對待模型的處理難度,提高了碰撞檢測的效率,并且在運行期間速度夠保持在40幀/s以上。
2)由于本算法是對深度圖的像素值進行判斷,因此不會因模型的復(fù)雜程度而改變其運算速度,因此對處理復(fù)雜模型有優(yōu)勢
3)該虛擬裝配技術(shù),可以以較低的成本模擬出裝配工藝。在整體布局和生產(chǎn)節(jié)拍方面為其他產(chǎn)品自動化生產(chǎn)方案的優(yōu)化、升級改造提供了參考。
[1] 葉軍, 薛明瑞, 沈姍姍, 等. 新型糖果包裝機推糖機構(gòu)設(shè)計[J]. 包裝工程, 2022, 43(1): 266-271.
YE J, XUE M R, SHEN S S, et al. Design of a New Feeding Mechanism for Candy Packaging Machine[J]. Packaging Engineering, 2022, 43(1): 266-271.
[2] 梅文娟, 鄭兆啟, 李占勇, 等. 生鮮食品包裝機的研究[J]. 包裝與食品機械, 2021, 39(1): 82-88.
MEI W J, ZHENG Z Q, LI Z Y, et al. Study on Packaging Machine for Fresh Food[J]. Packaging and Food Machinery, 2021, 39(1): 82-88.
[3] 陳亞琳. 三伺服枕式包裝機控制系統(tǒng)設(shè)計[J]. 包裝與食品機械, 2020, 38(1): 61-63.
CHEN Y L. Control System Design of Three Servo Pillow Food Packaging Machine[J]. Packaging and Food Machinery, 2020, 38(1): 61-63.
[4] 韓朝, 游有鵬, 王櫟, 等. 七軸機器人折彎仿真的路徑規(guī)劃[J]. 現(xiàn)代制造工程, 2023(6): 52-56.
HAN C, YOU Y P, WANG L, et al. Path Planning for Bending Simulation of Seven-Axis Robot[J]. Modern Manufacturing Engineering, 2023(6): 52-56.
[5] VISSER P M. Collision Detection for N-body Kepler Systems[J]. Astronomy & Astrophysics, 2023(669): 97.
[6] SINGH, SHIVANG S, MAYANK A, et al. Collision Detection and Prevention for the Visually Impaired Using Computer Vision and Machine Learning[J]. Advances in Engineering Software, 2023(179): 103424.
[7] 朱博承, 王志軍, 李占賢. 碰撞檢測及其在機器人領(lǐng)域中的應(yīng)用研究綜述[J]. 機床與液壓, 2023, 51(16): 201-210.
ZHU B C, WANG Z J, LI Z X. A Review of Collision Detection and Its Application in Robotics[J]. Machine Tool & Hydraulics, 2023, 51(16): 201-210.
[8] 廖偉東, 李俊淵, 黃昕. 機器人仿真系統(tǒng)碰撞檢測技術(shù)研究[J]. 機床與液壓, 2021, 49(9): 67-70.
LIAO W D, LI J Y, HUANG X. Research on Collision Detection Technology of Robot Simulation System[J]. Machine Tool & Hydraulics, 2021, 49(9): 67-70.
[9] 張振宇, 鐘佩思, 張超, 等. 基于工業(yè)機器人動力學模型的差分力矩偏差碰撞檢測方法[J]. 制造技術(shù)與機床, 2023(3): 163-172.
ZHANG Z Y, ZHONG P S, ZHANG C, et al. Differential Torque Deviation Collision Detection Method Based on the Dynamic Model of Industrial Robot[J]. Manufacturing Technology & Machine Tool, 2023(3): 163-172.
[10] 陳晨, 張為民, 褚寧. 基于包圍盒和三角面片的碰撞檢測優(yōu)化算法[J]. 制造技術(shù)與機床, 2013(6): 73-76.
CHEN C, ZHANG W M, CHU N. Optimized Collision Detection Algorithm Based on Bounding Volume Hierarchy and Triangular Facets[J]. Manufacturing Technology & Machine Tool, 2013(6): 73-76.
[11] 陳果, 劉桂芹. 基于Unity3D煤礦鉆機虛擬裝配培訓系統(tǒng)開發(fā)[J]. 包裝工程, 2022, 43(12): 106-112.
CHEN G, LIU G Q. Development and Application of Virtual Assembly Training System of Mine Drilling Rig Based on Unity3D[J]. Packaging Engineering, 2022, 43(12): 106-112.
[12] ZHANG X B, LIU J G. Research on Collision Detection Algorithm for Human-SRL Collaborative Motion Planning[J]. Journal of Physics: Conference Series, 2022, 2402(1): 1-11.
[13] MUBARAK S A, ALMUTAIRI K, CHIROMA H. Hybrid of Deep Recurrent Network and Long Short Term Memory for Rear-End Collision Detection in Fog Based Internet of Vehicles[J]. Expert Systems with Applications, 2023(213): 119033.
[14] LIANG B Y. Depth Map Guided Triplet Network for Deepfake Face Detection[J]. Neural Networks, 2023(159): 34-42.
[15] ROMERO-LUGO A, MAGADAN-SALAZAR A, FUENTES-PACHECO J, et al. A Comparison of Deep Neural Networks for Monocular Depth Map Estimation in Natural Environments Flying at Low Altitude[J]. Sensors (Basel), 2022, 22(24): 9830.
[16] 郎詩慧, 辛洪兵. 糖果包裝機推糖機構(gòu)的運動精度分析[J]. 包裝工程, 2017, 38(5): 49-57.
LANG S H, XIN H B. Kinematic Accuracy of Candy Pusher of Candy Packaging Machine[J]. Packaging Engineering, 2017, 38(5): 49-57.
Virtual Disassembly Collision Detection of Candy Packaging Machine
YAN Zugen1*, XIAO Jun1, DONG Xujuan2
(1. Harbin University of Commerce, Harbin 150028, China; 2.Bedrock Technology (Hangzhou) Development Co., Ltd., Hangzhou 311100, China)
The work aims to propose a collision detection method combining AABB enclosing box coarse detection and depth map fine detection, in order to improve the efficiency of collision detection in the virtual assembly system. First of all, SolidWorks software was used to build a model of the BZ350 candy packaging machine and import it into the engine in STL format. An AABB enclosing box was built for the part to carry out coarse detection, and then the corresponding depth maps for the two parts were obtained respectively, and the two depth maps were superposed with OpenCV. Next, according to the superimposed pixel values, whether the parts collided or not was judged. The experiment showed that when the number of superimposed depth values less than 100 accounted for more than 86.2736% of all depth values other than 0, it could be recognized that the two parts collided. Compared with the traditional detection algorithm, this algorithm has advantages for the detection of complex models under the premise of guaranteeing the detection speed and detection accuracy and ensuring that the running speed is above 40 frames/s to run smoothly.
candy packaging machine; collision detection; experimental study
TP391.9
A
1001-3563(2024)09-0158-06
10.19554/j.cnki.1001-3563.2024.09.020
2023-09-26