張鵬 仲梁維 張澤南













摘? 要:在機械產品制造過程中,裝配工作占有重要的地位,其成本可以占到制造成本的30%—50%。裝配工作對產品的最終質量也有很大影響。虛擬裝配可以提前模擬裝配過程,對保障裝配質量和最終產品質量有著重要的意義,機械手臂的應用也使得裝配工作更可控。本文基于SolidWorks三維模型設計軟件,利用SolidWorks提供的API接口,通過.NET編程語言控制機械手臂,對產品零件進行裝配模擬、碰撞干涉檢查和機械手臂運動空間路徑規劃,最終生成機械手臂裝配最優路徑,大大減少了人工對機械手臂運動的調試工作,提高了產品的最終質量,對加速制造業發展具有重要意義。
關鍵詞:虛擬裝配;六自由度機械手臂;包圍盒;蟻群算法
中圖分類號:TP319? ? ?文獻標識碼:A
Research of Virtual Assembly Path Planning based on SolidWorks
ZHANG Peng, ZHONG Liangwei, ZHANG Zenan
(School of Mechanical Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)
hefengzxp@163.com; zlvcad@126.com; 1727358290@qq.com
Abstract: In the manufacturing process of mechanical products, assembly work plays an important role, and its cost can account for 30% to 50% of the manufacturing cost. Assembly work also has a great impact on the final quality of products, as it can simulate assembly process in advance, which is of great significance to ensure assembly quality and final product quality. The application of manipulator also makes the assembly work more controllable. Based on SolidWorks 3D model design software and its API interface, this paper proposes to use .NET programming language to control the manipulator, and conduct assembly simulation of product parts, collision interference inspection and manipulator movement space path planning. Finally, the optimal path for the manipulator assembly is generated. It greatly reduces the manual adjustment of the movement of the manipulator, improves the final quality of the product, and is of great significance for accelerating the development of the manufacturing industry.
Keywords: virtual assembly; six-degree-of-freedom (six-DOF) manipulator; bounding box; ant colony algorithm
1? ?引言(Introduction)
在機械制造等領域,裝配是產品生產過程中必不可少的一步,裝配工藝的把控也直接影響著產品的質量以及產品的檢修工作[1]。隨著計算機輔助設計的發展,虛擬裝配技術被廣泛應用到生產領域。虛擬裝配可以在實際生產之前模擬工人對零件的操作,在虛擬的環境中通過和計算機交互的方式對零件進行安裝檢測,可以極大地減少人力資源成本及實際裝配過程中的錯誤率和故障率,有效提高實際裝配效率[2]。隨著我國制造業的崛起,將手工裝配與機器人相結合的裝配車間非常普遍并且已經成為制造業的發展趨勢[3]。在航空航天制造領域,生產周期往往會因為復雜的裝配工作而延期[4]。通過虛擬裝配技術與機器人相結合的方法,可以在產品裝配之前進行裝配路線模擬、干涉檢測等工作,尋找到最優的裝配路徑。目前,SolidWorks的運動仿真及虛擬裝配功能已經非常完善,運用二次開發技術,可以實現特定功能的產品開發,使SolidWorks滿足特定功能的需求。
2? ?系統設計(System design)
2.1? ?開發工具
虛擬路徑規劃主要有兩個部分,第一是虛擬三維環境,第二是機器手模型和裝配零部件模型。SolidWorks是一款優秀的三維建模軟件,能夠提供開發所需要的三維環境,且具有界面簡潔、易于上手、使用方便的特點,同時提供大量的二次開發接口API函數,支持多種編程語言接口,其中包括C#、VB.net、C++等語言,擴展性較好[5],并且還支持外部EXE程序開發和插件式DLL開發。為了更好地實現與SolidWorks的交互,提高程序運行效率,本系統在采用DLL插件模式開發的基礎上,通過WinForm應用程序窗口實現交互功能。
對于編程語言的選擇,C#語言是一門面向對象的高級語言,其對于Windows編程天生具有其他語言無法替代的優越性,是完全契合.Net Framework框架的一門語言。本系統采用C#編程語言,可以大大提高開發效率和提升程序的性能。
2.2? ?系統輸入與輸出
在整個路徑規劃系統設計之前,需要對系統初始部分進行分析。系統提供的初始部分有:(1)產品模塊零部件實體幾何參考模型;(2)產品裝配工藝文件;(3)六自由度機械手臂實物。
針對系統輸入對象,需要進行一定的處理。第一步:將產品零部件模型按照1∶1比例在SolidWorks中測繪建模。第二步:按照產品安裝工藝文件將零部件模型裝配成產品各模塊。第三步:將六自由度機械手臂按照1∶1比例建立模型并裝配成裝配體。
經過此系統的計算分析,最終需要得到的數據為產品模塊在機械手臂抓舉下進行裝配時的路徑信息,該路徑信息包括路徑的關鍵節點位置和路徑中產品模塊的幾何姿態信息。其總體分析和對象處理流程如圖1所示。
2.3? ?系統功能
路徑規劃的本質就是在三維空間中尋找一條將運動件從起點搬運到終點且中間無干涉碰撞的一條路徑。系統功能設計包括圖1的系統層和輸出層兩個層面的功能,這里將系統功能主要分為以下四個功能模塊來實現。
第一,六自由度機械手臂控制功能模塊。此功能模塊是通過算法驅動六自由度機械手臂在SolidWorks環境下運動,達到模擬實際機械手臂在實際生產中運動的目的。機械手臂的運動是整個系統功能實現的前提,六自由度機械手臂控制功能的實現為后續路徑規劃等功能的實現提供了基礎。
第二,零件運動控制功能模塊。此功能模塊主要功能是通過程序控制零件模塊在SolidWorks三維空間環境中進行任意方向的移動和繞任意軸轉動。
第三,路徑規劃算法實現功能模塊。該模塊主要利用基于蟻群算法思想的貪心算法加動態規劃來進行功能實現,并基于隨機游走的快速隨機擴展算法加弗洛伊德算法尋求圖節點中的最短路徑。該模塊也包含裝配過程中的干涉碰撞檢測算法。
第四,路徑規劃結果展示模塊和數據導出模塊。結果展示包括規劃的三維空間路徑曲線自動顯示,數據導出主要將三維路徑參數導出到數據庫中。
整體功能框架如圖2所示。
3? ?六自由度機械手臂控制算法(Control algorithm of six-DOF manipulator)
3.1? ?六自由度機械手臂建模
如圖3所示的是NACHI六自由度機器手臂的實物以及按照1∶1建模的SolidWorks三維模型。按照實際尺寸將機器手臂各關節零部件建立模型,之后再進行裝配。
3.2? ?六自由度機械手臂逆解
求解逆解就是在已知目標點的位置坐標和姿態時求解機械手臂六個關節的角度,以使得機械手臂末端能準確到達指定目標點。
為了更好地描述機械手臂,我們先對機械手臂的各關節規定運動正負方向,如圖4所示。
將機械手臂基座坐標系定為世界坐標系,則執行件末端可以用表1的各項參數表示其相對于世界坐標系的位置。
通過觀察六自由度機械手臂的模型結構,可在機械手臂各關節分別建立關節坐標系。其建立方法是以關節旋轉中心為Z軸,作相鄰的兩個關節Z軸的公垂線,該公垂線的方向為坐標系的X軸,再以右手定則確定Y軸;當相鄰兩個Z軸相交時,沿著第一個Z軸與下一個Z軸相交的延長線為Y軸,再以右手定則確定X軸。坐標系如圖5所示,圖中坐標系分別表示各軸的正方向。
有了坐標系之后,就可以建立六自由度機械手臂D-H參數表,其變換規則如下:
(1)平移以世界坐標系為參考取正方向;旋轉依據右手定則判斷正方向:大拇指指向旋轉軸正方向,四指旋轉方向為旋轉的正方向。
(2)繞軸,旋轉,使得與平行(方向一致)。
(3)沿著軸,平移,使得與共線。
(4)沿著軸,平移,使得與原點重合。
(5)繞軸,旋轉,使得與共線。
根據上述變換,可得到機械手臂D-H表,如表2所示。
正解的求法是已知各關節的旋轉角度矩陣,即(1,2,3,4,5,6),求解末端位姿矩陣(X,Y,Z,A,B,C),通過各關節坐標系矩陣變換可以很容易地得到結果。反向求解和正解正好相反,它是將正解的結果作為已知條件,將正解的條件作為未知數進行計算求解。正解的解一定是唯一的,因為機械手臂的關節一旦都已知了,末端的姿態就固定不變了,但是逆解的計算就不一樣了,最終解的結果也不一定唯一,甚至出現多解的情況,一般情況下可以得到八組解[6]。
3.3? ?六自由度機械手臂運動控制
機械手臂姿態是由六個旋轉關節的角度所決定的,所以本質上控制機械手臂的運動實際上就是實現六個關節旋轉角度的驅動。在三維模型中通過建模,添加角度配合,已經在模型中添加了六個角度的變量信息,如圖6所示,其角度尺寸對應的參數如表3所示。
SolidWorks提供了角度變換的API,通過驅動角度變換可實現對各關節旋轉角度的驅動。其具體API函數為:
//swDis表示IDisplayDimension對象
swDis=(IDisplayDimension)swMate.DisplayDimension;
swDim=swDis.GetDimension();//swDim表示IDimension對象
swDim.SystemValue=ang*Math.PI/180;//ang表示要驅動的角度值
swModel.ClearSelection2(true);
通過API驅動再結合逆解角度的思想,就可以控制機械手臂的運動了。為了達到連續運動的目的,程序中需要用到多線程來同時計算和驅動。
4? 零件運動控制算法的實現(Parts motion control algorithm implementation)
在SolidWorks三維軟件環境中,零件的位姿矩陣如公式(1)所示[7]。各項參數的大小決定了當前零件的顯示狀態和位置。同時,SolidWorks也給用戶提供了豐富的API接口,用戶可通過程序調用函數的方式修改位姿矩陣的各項參數來對零件進行操作。
對于移動,只需要改變零件位姿矩陣中的j、k、l三個參數,就可以實現沿著任意方向的移動。對于旋轉操作則是更改a—i這前九個元素組成的3×3子矩陣。為了方便矩陣的計算,SolidWorks提供了詳細的矩陣計算的API。結合API函數對位姿矩陣的各項參數進行賦值,就可以實現零件在裝配體世界坐標下的移動旋轉等操作。整體操作邏輯如圖7所示。
按照上述對零件位姿矩陣的操作可以實現零件的位姿狀態變換,但是無法看到實際用鼠標拖曳的中間過程動畫。為了實現動畫效果,需要對整個矩陣運算過程進行若干等分,將參數運算分成若干個步驟,每一步驟刷新一次顯示,就可以實現動畫過程。如果是移動變換,以每次移動1 mm的間隔進行移動,假設移動方向,以毫米為單位進行單位化,記長度,則可得到單位毫米移動矩陣,如公式(2)所示。
結合鼠標的拖動事件進行循環拖動,每次拖動后讓程序休眠一定的時間,如20 ms,這樣就可以看到整個變換過程是連續的。旋轉變換實現連續動畫的方法和移動變換的方法基本一致。
5? ?路徑規劃(Path planning)
5.1? ?碰撞干涉檢測算法
路徑規劃算法中的碰撞干涉檢測至關重要,它在一定程度上決定了整個路徑規劃的結果。
動態路徑規劃的具體方法是在零件運動控制算法中加入靜態干涉算法,即零件在每個單位化的運動之后進行靜態干涉檢測,就可以實現動態檢測。其動態干涉檢測流程圖如圖8所示。
下面介紹靜態干涉檢測原理。目前,有很多學者在研究靜態干涉檢測方法,運用比較廣泛的是空間包圍盒(BoxTree)的思想,但是針對幾何形狀復雜的零部件,如具有較多孔洞特征的零部件,普通的包圍盒方法會產生很大的誤差。對此本文提出了一種基于有限分割思想的方法,先將零件按照一定單位空間的正方體大小分割成許多單元,然后再按照包圍盒空間檢測的方法在零件之間進行干涉檢測。空間長方體包圍盒存在干涉的條件是:兩個長方體中心點之間的距離在X、Y、Z方向上的投影長度小于X、Y、Z相應方向上兩個長方體對應邊長之和的一半,就表示存在干涉。
為了簡化單元劃分,在三維場景中利用AABB包圍盒的特點對幾何零件進行三維單元劃分,如圖9所示為在SolidWorks中對零部件進行劃分的結果。
其具體的劃分方法為:以整個零部件外包圍盒的三個表面(左、前、上)作為基準分別建立X、Y、Z朝向的三個參考平面,參考平面選擇陣列屬性,沿著包圍盒方向陣列,設置切分單元大小,陣列只達到另一端為止。而后點擊“插入”,在特征選項中選擇切割特征,選擇切割平面進行切割,當沿著三個方向切割后形成如圖9所示的情況,整個零部件被切割成一個個較小的單元。在左側特征樹中可以看到“實體”這個文件夾,里面包含切割的實體,通過特征樹遍歷可以讀取每個分割后的實體包圍盒信息。至此可以完成對零部件有限分割后求取獨立的包圍盒信息,更加精確地反映零部件在空間的占用信息。實體切割流程圖如圖10所示。
在進行干涉檢測前,先采用最大包圍盒空間AABB方法進行檢測[8],排除大量不可能干涉的零部件之間的檢測。如果這一步檢測結果沒有發生干涉,那么就說明這兩個幾何體之間無干涉;如果第一步檢測結果發生干涉,則進行有限分割的包圍盒按照同樣的方法進行檢測。
5.2? ?路徑規劃算法
蟻群算法是仿生算法,由大自然的一些規律衍生而來。該算法是由意大利學者DORIGO等人在20 世紀90 年代初期通過模擬螞蟻尋找路徑的行為而提出的一種啟發式隨機搜索算法[9]。由于三維空間的復雜特性,常規的蟻群算法在三維路徑規劃中存在許多不合理的地方。本文提出了一種基于單個螞蟻加上貪心算法[10]的簡化動態蟻群算法來實現路徑規劃。為了更好地說明此算法,下面先定義一些關鍵變量,如表4所示。
具體步驟如下:
第一步:計算規劃空間,得到整個規劃空間的可行域的邊界范圍B。
第二步:由起點位姿矩陣s和終點位姿矩陣e計算移動距離D。
判斷中的最大值,確定路徑劃分平面。如:j方向值最大,則采用平行于yoz平面的平面切分路徑。
第三步:按照step將起點到終點進行直線位置劃分,劃分成step-1個點,即劃分成step段。假設劃分的節點依次記為,按照在第一步中得出的劃分平面,以每個節點為中心點,按照網格單元大小dis進行網格劃分,得到一系列網格劃分節點。然后對這些網格點按照如下貪心算法的規則進行排序處理:
(1)計算每個網格點到上一步規劃點的距離和到終點的距離,并求和;
(2)按照上述步驟中計算的距離進行從小到大排序。
第四步:結合干涉碰撞檢測算法規劃路徑。
6? ?結果展示(Results presentation)
圖11為整個系統最終結果圖。圖中有兩個六自由度機械手臂、一塊長方體放物臺、兩塊板狀零件和五顆螺釘。首先機械手臂分別將兩塊板狀零件放置在空間指定位置,然后再將螺釘分別放置在指定位置并生成螺釘的運動路徑。右側為生成路徑的關鍵點坐標結果。
7? 結論(Conclusion)
本文針對產品生產過程中的裝配環節,結合SolidWorks三維軟件和二次開發技術,通過程序實現產品裝配環節的模擬和路徑尋優,提高了產品生產過程中裝配環節的效率。本文提出的有限分割的方法能夠有效地降低干涉檢測的錯誤率,結合單個螞蟻動態貪心算法,可規劃出較合理的裝配路徑,為實際裝配過程提供了很好的依據。
參考文獻(References)
[1] 唐殿容.機械裝配工藝的關鍵技術探究[J].科技創新與應用,2020(20):91-92.
[2] 陳瑤瑤,劉永霞,符純明.虛擬裝配技術的發展現狀分析[J].機械工程與自動化,2020(06):220-222.
[3] 鄒方.人機協作標準及應用動態研究[J].航空制造技術,2016? ?(Z2):58-63,76.
[4] 王洪雨,胡溶溶,喻懋林.裝配仿真技術在衛星裝配中的應用[J].航空制造技術,2015(21):56-58.
[5] 江洪,魏征,王濤威,等.SolidWorks二次開發實例解析[M].北京:機械工業出版社,2004:1-9.
[6] 肖振楠,申燚,倪辰旖.六自由度機械手的運動軌跡規劃與仿真[J].機床與液壓,2018,46(15):58-63.
[7] 張澤南,仲梁維.基于SolidWorks的自動焊縫標注的二次開發[J].軟件工程,2020,23(05):17-20.
[8] 楊帆.基于B+樹存儲的AABB包圍盒碰撞檢測算法[J].計算機科學,2021,48(S1):331-333,348.
[9] DORIGO M, MANIEZZO V, COLORNI A. Ant system: Optimization by a colony of cooperating agents[J].IEEE Transaction on Systems, Man and Cybernetics-Part B,? ?1996, 26(1):29-41.
[10] 曾妮,陳俊豪,傅清爽.基于貪心算法的動態規劃策略[J].電腦知識與技術,2021,17(20):141-143,152.
作者簡介:
張? ?鵬(1996-),男,碩士生.研究領域:計算機輔助設計與智能制造.
仲梁維(1962-),男,碩士,教授.研究領域:計算機輔助設計與智能制造.
張澤南(1993-),男,碩士生.研究領域:計算機輔助設計與智能制造.