仿真在提高機(jī)器人工作效率、復(fù)雜運(yùn)動(dòng)軌跡規(guī)劃、碰撞和干涉檢驗(yàn)、直觀地觀察編程結(jié)果、優(yōu)化編程等方面的優(yōu)勢(shì)已引起了人們的極大興趣,并成為當(dāng)今機(jī)器人學(xué)中—個(gè)十分活躍的研究方向。以往由于機(jī)器人圖形和動(dòng)畫仿真的計(jì)算量很大,在微機(jī)上實(shí)現(xiàn)效果不佳或根本無法實(shí)現(xiàn),因此大多數(shù)的仿真都是基于圖形工作站的。由于設(shè)備昂貴,從而限制了這項(xiàng)技術(shù)的發(fā)展。隨著計(jì)算機(jī)硬件以及CAD/CAM技術(shù)的飛速發(fā)展,這一問題得到了進(jìn)一步解決。
AutoCAD是國(guó)內(nèi)使用最多的CAD軟件之一,它為開發(fā)人員配備了更加豐富的ActiveX對(duì)象用于二次開發(fā)??梢园裋BA工程嵌入到DWG文件中,由此可以將DWG文件所需要的應(yīng)用程序與其一起傳送。以AutoCAD為工作平臺(tái),以參數(shù)化三維實(shí)體造型進(jìn)行建模,通過AutoCAD二次開發(fā)工具VBA編程驅(qū)動(dòng)機(jī)器人模型,建立一個(gè)在AutoCAD平臺(tái)上的機(jī)器人運(yùn)動(dòng)仿真系統(tǒng)。這種系統(tǒng)可以在幾秒鐘內(nèi)產(chǎn)生所需要的機(jī)器人模型,實(shí)時(shí)地模擬機(jī)器人的操作過程,并形象地顯示出來。通過這種模擬,可以確定機(jī)器人與環(huán)境的關(guān)系,檢查桿件之間的干涉和碰撞。規(guī)劃?rùn)C(jī)器人的運(yùn)動(dòng)路徑,判斷作業(yè)的可行性和評(píng)定機(jī)器人的性能。因此,該系統(tǒng)也為設(shè)計(jì)、研究機(jī)器人提供了強(qiáng)有力的幫助。
一、VBA在AutoCAD中的實(shí)現(xiàn)方法
VBA(Visual Basic for Applications)是Microsoft公司開發(fā)的一個(gè)面向?qū)ο蟮目梢暬幊汰h(huán)境,它功能強(qiáng)大、內(nèi)容豐富,使用簡(jiǎn)單,AutoDesk公司將它納入到AutoCAD內(nèi)部。要掌握VBA在AutoCAD中的實(shí)現(xiàn)方法,我們先需了解ActiveX這一概念,ActiveX是Microsoft提出的一個(gè)基于COM(Component Object Model)的技術(shù)標(biāo)準(zhǔn),它是一種面向?qū)ο蟮募夹g(shù),利用ActiveX在windows系統(tǒng)的統(tǒng)一管理下,不同的應(yīng)用程序之間可以相互溝通,相互控制。ActiveX在AutoCAD與VBA之間起著橋梁的作用。AutoCAD ActiveX 提供了一種機(jī)制,該機(jī)制可使編程者通過編程手段從AutoCAD的內(nèi)部或外部來操縱AutoCAD。ActiveX與 AutoCAD和VBA之間的關(guān)系如圖1所示。
二、利用VBA及ActiveX對(duì)AutoCAD進(jìn)行二次開發(fā)
用AutoCAD VBA進(jìn)行二次開發(fā),和VB一樣,都要用工程來組織應(yīng)用程序。一個(gè)工程就是與應(yīng)用程序有關(guān)的全部模塊、對(duì)象以及和環(huán)境選項(xiàng)有關(guān)的設(shè)置。在AutoCAD VBA中,工程分為嵌入式(embedded project)工程與通用式(global project)工程兩種。嵌入式工程在打開圖形文件的時(shí)候自動(dòng)加載,其本身依賴文件的存在而存在;通用式工程是以文件的形式保存在磁盤上,具有更好的通用性。通用式工程可以方便地實(shí)現(xiàn)不同用戶和不同圖形文件之間的共享。利用AutoCAD VBA進(jìn)行二次開發(fā)步驟和VB類似,首先,在AutoCAD中啟動(dòng)VBA開發(fā)環(huán)境,即在AutoCAD命令行上鍵入VBAIDE,或點(diǎn)菜單中的工具下拉菜單宏中的子菜單Visual Basic編輯器就可啟動(dòng)VBA開發(fā)環(huán)境,如圖2所示。在VBA的可視化開發(fā)環(huán)境中,根據(jù)用戶需求,建立相應(yīng)的工程文件,添加所需要的各種模塊、窗體、控件,定義對(duì)象的屬性和方法,編寫對(duì)象相應(yīng)事件對(duì)應(yīng)的程序代碼,最后完成整個(gè)工程設(shè)計(jì)。
三、機(jī)械手建立與運(yùn)動(dòng)仿真
1.系統(tǒng)總體結(jié)構(gòu)
編制機(jī)器人運(yùn)動(dòng)學(xué)仿真模擬軟件,分為三個(gè)模塊,如圖3所示。
仿真軟件設(shè)計(jì)流程圖如圖4所示。
2.機(jī)械手模型的設(shè)計(jì)
AutoCAD最大優(yōu)點(diǎn)就是造型功能強(qiáng)大,所以,用VBA編寫一般的三維實(shí)體非常方便,在造型時(shí)使用VBA的對(duì)象Acad3Dsolid,它提供了豐富的三維造型命令,如創(chuàng)建長(zhǎng)方體用Acad3Dsolid對(duì)象中的Add Box,創(chuàng)建圓錐體用Add Cone,創(chuàng)建圓柱體用Add Cylinder。本軟件中復(fù)雜的三維實(shí)體,都是用以上基本實(shí)體造型,通過交、差、并以及布爾運(yùn)算來實(shí)現(xiàn)的。如在This Drawing文檔的模型空間內(nèi)創(chuàng)建圓柱體cyObj2的命令為cyObj2 = This Drawing Model Space Add Cylinder (center, radius,height),其中Model Space為模型空間(圖樣空間為acPaper Space),center為圓柱體中心點(diǎn)坐標(biāo),radius為圓柱體半徑,height為圓柱體高度。為了使建立的模型有良好的顯示效果,采用體著色,需調(diào)用AutoCAD的命令,命令為This Drawing Send Command “shademodeg”。需要注意的一點(diǎn)就是在字符串的最后有一個(gè)空格,代表的是最后的回車鍵,用來執(zhí)行命令。軟件采用的是參數(shù)化建模方法,即可以用鍵盤的方式參數(shù)化各個(gè)連桿的長(zhǎng)度,特建立以下對(duì)話框,如圖5所示。
3.機(jī)械手動(dòng)作模擬的實(shí)現(xiàn)
機(jī)械手由各個(gè)關(guān)節(jié)組成,關(guān)節(jié)之間的運(yùn)動(dòng),或?yàn)樾D(zhuǎn)或?yàn)槠揭啤M瑯佑面I盤的方式對(duì)各個(gè)關(guān)節(jié)的運(yùn)動(dòng)加以控制,對(duì)各個(gè)關(guān)節(jié)進(jìn)行變換操作,過程與機(jī)械手的參數(shù)化建模相仿,如圖6所示。
在VBA中對(duì)圖像的旋轉(zhuǎn)和平移十分方便,由于該機(jī)械手的各關(guān)節(jié)為旋轉(zhuǎn)運(yùn)動(dòng),所以僅使用對(duì)象中的Rotate3D即可。如旋轉(zhuǎn)圓柱體的命令為cyObj.Rotate3D rotatePt1,rotatePt2,rotate Angle就能完成(其中rotatePt1、rotatePt2為兩點(diǎn)定義的旋轉(zhuǎn)軸,rotate Angle為旋轉(zhuǎn)的角度),仿真結(jié)果位置如圖7所示。
王衛(wèi)東,浙江工業(yè)職業(yè)技術(shù)學(xué)院)