国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于UG二次開發(fā)干涉避障仿真研究

2019-09-10 07:22方瑞陳岳坪
關(guān)鍵詞:避障

方瑞 陳岳坪

摘 ? ?要:在實(shí)際的加工檢測(cè)過程中,對(duì)復(fù)雜曲面生成的測(cè)點(diǎn)依次進(jìn)行檢測(cè),檢測(cè)過程中可能會(huì)因?yàn)槁窂揭?guī)劃或者曲面曲率大小問題導(dǎo)致測(cè)頭碰撞工件,為了防止在線檢測(cè)過程中測(cè)頭測(cè)針與工件產(chǎn)生干涉,需要對(duì)UG干涉模塊進(jìn)行二次開發(fā).在簡(jiǎn)要闡述了UG二次開發(fā)基礎(chǔ)以及UG自帶的干涉模塊分析基礎(chǔ)上,基于UG平臺(tái),將Visual Studio與UG函數(shù)進(jìn)行關(guān)聯(lián),利用UG中的UISTyler和MenuSeript開發(fā)工具,實(shí)現(xiàn)了在線檢測(cè)中的干擾檢測(cè)和避障.

關(guān)鍵詞:UG二次開發(fā);干涉檢測(cè);避障

中圖分類號(hào):TH16;TP391.7 ? ? ?DOI:10.16375/j.cnki.cn45-1395/t.2019.03.011

引言

在復(fù)雜曲面零件的加工檢測(cè)過程中,需要用相應(yīng)的檢測(cè)技術(shù)來檢測(cè)和控制加工精度[1-2].基于坐標(biāo)測(cè)量機(jī)[3](CMM)的檢測(cè)技術(shù)一般情況下用于精密零件的形狀與位置精度檢測(cè),但對(duì)工件產(chǎn)生了二次裝夾定位誤差的問題以及對(duì)大型零部件測(cè)量的一些局限性問題.在數(shù)控機(jī)床上對(duì)零部件直接進(jìn)行加工精度的在線檢測(cè),使加工、測(cè)量與補(bǔ)償形成一體化的檢測(cè)系統(tǒng),是近幾年國內(nèi)外對(duì)在線檢測(cè)研究領(lǐng)域的研究熱點(diǎn)[4-5].為了能順利實(shí)現(xiàn)數(shù)控機(jī)床的在線檢測(cè),首先需要對(duì)所加工的零件進(jìn)行檢測(cè)仿真實(shí)驗(yàn),以免實(shí)際操作過程中出現(xiàn)測(cè)頭碰撞問題.雖然現(xiàn)在有許多帶有干涉檢查模塊的CAD軟件,如UG、Catia以及SolidWorks等,但專業(yè)性較差,過程繁瑣容易出錯(cuò),影響設(shè)計(jì)人員判斷,降低了干涉檢驗(yàn)的工作效率,浪費(fèi)大量的人力物力[6].目前,對(duì)于干涉檢測(cè)技術(shù),靜態(tài)干涉檢測(cè)研究較多.衡思迎等[7]對(duì)沖壓模具中的靜態(tài)干涉問題進(jìn)行了分析,提出一種基于坐標(biāo)極值來確認(rèn)實(shí)體非干涉的算法.郜亮等[6]對(duì)UG的干涉檢驗(yàn)?zāi)K進(jìn)行了分析,并針對(duì)檢測(cè)效率低的問題,對(duì)UG干涉模塊進(jìn)行二次開發(fā),相比傳統(tǒng)的UG自帶的干涉模塊,需要手動(dòng)方式選擇需要干涉的每個(gè)部位,其開發(fā)的干涉功能可以自動(dòng)實(shí)現(xiàn)干涉檢測(cè),提高了檢測(cè)效率.以UG6.0為開發(fā)平臺(tái),針對(duì)UG運(yùn)動(dòng)仿真方面,對(duì)動(dòng)態(tài)干涉檢驗(yàn)以及實(shí)現(xiàn)避障功能做了一定的研究.

1 ? ?UG二次開發(fā)基礎(chǔ)

UG的二次開發(fā)是基于UG軟件,利用UG軟件自帶的一些函數(shù),使用戶可以很方便的利用C語言的編程,調(diào)用UG軟件自帶的函數(shù),實(shí)現(xiàn)用戶對(duì)于產(chǎn)品設(shè)計(jì)的某種特殊需求.UG二次開發(fā)中的API函數(shù)可以作為外部應(yīng)用程序與UG應(yīng)用軟件之間銜接的橋梁,該函數(shù)可以實(shí)現(xiàn)對(duì)UG模型的控制以及對(duì)于用戶的某種特殊需求.UG軟件中,有一個(gè)菜單模塊與樣式編輯模塊,它們可以用來定制用戶的專用菜單并使用戶創(chuàng)建的對(duì)話框樣式與UG軟件風(fēng)格形成一致.利用樣式編輯模塊創(chuàng)建的對(duì)話框在存儲(chǔ)的時(shí)候,將會(huì)自動(dòng)生成相對(duì)應(yīng)的.c文件以及.h文件,將這兩種文件復(fù)制到C語言開發(fā)程序當(dāng)中,用戶將節(jié)省很多的開發(fā)時(shí)間.

2 ? ?干涉檢查模塊的應(yīng)用分析

UG中,干涉分為靜態(tài)干涉與動(dòng)態(tài)干涉.靜態(tài)干涉主要是針對(duì)零件各個(gè)位置度以及零件之間的公差配合等方面進(jìn)行檢測(cè),從而判斷是否發(fā)生干涉.動(dòng)態(tài)干涉是對(duì)于零件在運(yùn)動(dòng)過程中,分析其運(yùn)動(dòng)過程,判斷零件在空間運(yùn)行時(shí)是否發(fā)生干涉.在UG中,靜態(tài)干擾是檢查UG組件之間的間隙.在UG6.0版本基礎(chǔ)上,針對(duì)一個(gè)復(fù)雜曲面模型進(jìn)行簡(jiǎn)單的干涉檢驗(yàn)分析.首先,打開模型圖;然后,選擇菜單欄分析下拉菜單的簡(jiǎn)單干涉,彈出簡(jiǎn)單干涉對(duì)話框,選擇需要干涉的兩個(gè)體,在干涉檢查結(jié)果一欄,選擇結(jié)果對(duì)象為“高亮顯示的面對(duì)”,輸出干涉結(jié)果.圖1為簡(jiǎn)單干涉界面.

如圖1所示,使用簡(jiǎn)單干涉時(shí)每次檢查干涉,只能選擇兩個(gè)組件進(jìn)行干涉,并且在檢查干涉情況下,只能選擇可見的零部件,在部件較多的時(shí)候,或者部件運(yùn)動(dòng)過程中,很難判斷干涉情況.相比圖1所示的簡(jiǎn)單干涉,另外一種是檢查間隙.在菜單選項(xiàng)中選擇菜單欄中分析下拉菜單的裝配間隙,此方法可以對(duì)多個(gè)部件一起進(jìn)行干涉檢查,當(dāng)間隙小于默認(rèn)安全區(qū)域時(shí),則確認(rèn)部件間為干涉,這時(shí)需要對(duì)裝配進(jìn)行修改如圖2所示.但對(duì)于測(cè)桿運(yùn)動(dòng),這兩種干涉仍無法進(jìn)行判斷干涉.綜上所述,UG中的干涉檢測(cè)模塊存在著不足之處.為了解決運(yùn)動(dòng)體的干涉問題,本文利用UG的二次開發(fā)技術(shù)對(duì)此模塊進(jìn)行二次開發(fā),并在實(shí)現(xiàn)干涉碰撞之后,可以實(shí)現(xiàn)自動(dòng)避障功能.

3 ? ?干涉避障模塊的二次開發(fā)分析

基于UG干涉檢測(cè)仿真系統(tǒng)包括以下幾個(gè)模塊:

1)測(cè)頭運(yùn)動(dòng)仿真模塊參數(shù)設(shè)置

該模塊可以根據(jù)實(shí)際在線檢測(cè)過程中使用的測(cè)頭大小以及在測(cè)頭運(yùn)動(dòng)過程中需要的測(cè)量速度、非測(cè)量速度以及回退距離進(jìn)行設(shè)置.

2)曲面信息的抓取

該模塊可以根據(jù)曲線上的法失,自動(dòng)抓取需要檢測(cè)的曲面信息,為后面測(cè)點(diǎn)生成以及需要干涉的曲面做鋪墊.

3)曲面測(cè)點(diǎn)生成模塊

該模塊可以根據(jù)獲取的曲面信息,根據(jù)曲面上的法失,利用等弧長(zhǎng)方式對(duì)曲面自適應(yīng)地生成一系列測(cè)點(diǎn).

4)導(dǎo)入測(cè)點(diǎn)數(shù)據(jù)模塊

該模塊在曲面測(cè)點(diǎn)生成完成和對(duì)測(cè)針參數(shù)設(shè)置完畢之后,將需要檢測(cè)的數(shù)據(jù)點(diǎn)導(dǎo)入到系統(tǒng)當(dāng)中進(jìn)行檢測(cè).

5)干涉檢查模塊

此模塊是檢查在檢測(cè)過程中是否會(huì)出現(xiàn)干涉情況,以免在實(shí)際操作過程中發(fā)生危險(xiǎn).

6)自動(dòng)避障模塊

此模塊是根據(jù)干涉模塊延伸出來的,當(dāng)測(cè)針與物體發(fā)生干涉時(shí),測(cè)針會(huì)自動(dòng)規(guī)劃路徑尋找最優(yōu)點(diǎn),達(dá)到防止測(cè)針與物體相撞功能.

軟件操作流程圖如圖3所示.

3.1 ? 用戶菜單及對(duì)話框創(chuàng)建

為了能實(shí)現(xiàn)UG動(dòng)態(tài)仿真干涉實(shí)驗(yàn)研究,需要先設(shè)定UG與Visual Studio之間的環(huán)境變量,并利用UG/Open MenuSeript創(chuàng)建用戶菜單,用戶便可以很方便地使用腳本文件編輯自己的開發(fā)程序.創(chuàng)建菜單腳本文件是先新建一個(gè)記事本,并用ASCALL碼編寫菜單腳本文件,最后將腳本文件放入startup目錄下,后綴名為*.men.

菜單腳本代碼如下:

VERSION 120

EDIT UG_GATEWAY_MAIN_MENUBAR

HIDE UG_HELP

!一級(jí)菜單編輯

BEFORE UG_HELP

CASCADE_BUTTON MENU_ID_1

LABEL 數(shù)控機(jī)床在線檢測(cè)系統(tǒng)

END_OF_BEFORE

!二級(jí)菜單編輯

MENU MENU_ID_1

BUTTON MENU_ID_1_2

LABEL 檢測(cè)代碼生成與數(shù)據(jù)處理

ACTIONS UFDLG_1

END_OF_MENU

!三級(jí)菜單編輯

MENU MENU_ID_1

BUTTON MENU_ID_1_3

LABEL 在線檢測(cè)仿真系統(tǒng)

ACTIONS UFDLG_2

END_OF_MENU

其中CASCADE_BUTTON MENU_ID_1代表一級(jí)菜單名稱,對(duì)在線檢測(cè)仿真系統(tǒng)添加按鈕并產(chǎn)生響應(yīng),使用BUTTON以及ACTIONS.菜單添加后如圖4所示.

為了方便操作UG與用戶開發(fā)程序之間的互通,利用樣式編輯器創(chuàng)建用戶對(duì)話框,將生成結(jié)束的對(duì)話框產(chǎn)生的.dlg文件保存于application文件夾中.

3.2 ? 測(cè)頭運(yùn)動(dòng)仿真研究

實(shí)現(xiàn)干涉碰撞仿真之前,需要對(duì)測(cè)頭進(jìn)行運(yùn)動(dòng)仿真,測(cè)頭從P1運(yùn)動(dòng)到M,再返回P1,再進(jìn)行下一個(gè)點(diǎn)檢測(cè),從P1運(yùn)動(dòng)到P2,再從P2運(yùn)動(dòng)到N,返回P2.測(cè)頭運(yùn)動(dòng)的原理如圖5所示.

數(shù)控機(jī)床在線檢測(cè)過程中,測(cè)頭所進(jìn)行的每一步運(yùn)動(dòng)都可被簡(jiǎn)化為直線運(yùn)動(dòng),也稱平移運(yùn)動(dòng).所用到的函數(shù)為:平移矩陣函數(shù)uf5943(translation,matrix)和平移運(yùn)動(dòng)函數(shù)UF_MODL_transform_entities(2,entities, matrix).

測(cè)頭從檢測(cè)點(diǎn)M運(yùn)動(dòng)到檢測(cè)點(diǎn)N,測(cè)頭需要分為五步進(jìn)行運(yùn)動(dòng).每個(gè)點(diǎn)是相同的程序和相同的循環(huán),其代碼如下:

回退至測(cè)量點(diǎn)安全點(diǎn):

translation[0] =xx[pointcount]+uu[pointcount]*t+translation1[0];

translation[1] =yy[pointcount]+oo[pointcount]*t+translation1[1];

translation[2] =zz[pointcount]+pp[pointcount]*t+translation1[2];

uf5943(translation,matrix);

UF_MODL_transform_entities(2, entities,matrix);

逼近測(cè)點(diǎn):

translation[0] = (-uu[pointcount]*(t-5));

translation[1] = (-oo[pointcount]*(t-5));

translation[2] = (-pp[pointcount]*(t-5));

uf5943(translation,matrix);

UF_MODL_transform_entities(2, entities,matrix);

測(cè)量點(diǎn):

translation[0] = (-uu[pointcount]*5);

translation[1] = (-oo[pointcount]*5);

translation[2] = (-pp[pointcount]*5);

uf5943(translation,matrix);

UF_MODL_transform_entities(2, entities,matrix);

回退點(diǎn):

translation[0] = (uu[pointcount]*t);

translation[1] = (oo[pointcount]*t);

translation[2] = (pp[pointcount]*t);

uf5943(translation,matrix);

UF_MODL_transform_entities(2, entities,matrix);

在線檢測(cè)仿真系統(tǒng)界面如圖6所示.

3.3 ? 測(cè)頭干涉避障功能

利用等弧長(zhǎng)方法生成曲面測(cè)點(diǎn),測(cè)頭進(jìn)行運(yùn)動(dòng)仿真時(shí),需要檢測(cè)該曲面測(cè)點(diǎn)與測(cè)頭是否會(huì)發(fā)生干涉.本文針對(duì)復(fù)雜曲面所研究的干涉會(huì)出現(xiàn)兩種:一種是曲率干涉,表明測(cè)針檢測(cè)工件時(shí),曲面曲率較小,導(dǎo)致測(cè)頭與曲面發(fā)生碰撞;另一種是測(cè)頭從圖5所示P1到P2運(yùn)動(dòng)干涉,表明測(cè)頭從當(dāng)前點(diǎn)運(yùn)動(dòng)到下一個(gè)點(diǎn)時(shí),測(cè)頭與曲面之間抬高的距離不夠,則測(cè)頭會(huì)與工件產(chǎn)生碰撞.當(dāng)測(cè)頭與曲面發(fā)生干涉時(shí),會(huì)出現(xiàn)干涉提示,此時(shí),利用最小距離法進(jìn)行安全避障,設(shè)定測(cè)球與曲面最小距離不能大于0.000 1,如果大于此公差,需要重新進(jìn)行判斷,直到公差小于0.000 1,所用到的干涉函數(shù)為UF_MODL_check_interference以及最小距離函數(shù)為UF_MODL_ask_minimum_dist.

干涉檢驗(yàn)及避障的部分函數(shù)代碼如下:

UF_MODL_check_interference(object_tag,1,&entities[0],&results);

if (results ==1)

{uc1601("有干涉?",1);

int results;

tag_t body_1 = object_tag;

tag_t body_tool = entities[0];

UF_MODL_check_interference(body_1,1,&body_tool,&results);

UF_MODL_ask_minimum_dist(body_1,body_tool,0,guess1,0,guess2,&min_dist,pt_on_ent1,pt_on_ent2);

while(min_dist >= 0.0001)

{double translation [ 3 ] = {0,0,-min_dist};

uf5943(translation,matrix);

uf5947(matrix,&body_tool,&objects,&move,&layer,&trace_curves,&body_tag2,NULL,&status);

dist3 -= min_dist;

UF_MODL_ask_minimum_dist(body_1,body_tool,0,guess1,0,guess2,&min_dist,pt_on_ent1, pt_on_ent2); }

首先設(shè)置好測(cè)頭參數(shù),導(dǎo)入測(cè)點(diǎn).當(dāng)測(cè)頭進(jìn)行仿真運(yùn)行時(shí),從第一個(gè)接觸點(diǎn)開始進(jìn)行自動(dòng)判斷.如果沒有發(fā)生干涉,測(cè)頭從圖5所示P1到P2運(yùn)動(dòng)到下一個(gè)點(diǎn),當(dāng)下一個(gè)點(diǎn)產(chǎn)生圖7所示曲率干涉時(shí),會(huì)出現(xiàn)提示有干涉.此時(shí),將測(cè)頭抬高,自動(dòng)尋找當(dāng)前點(diǎn)旁邊坐標(biāo)的最優(yōu)點(diǎn),判斷測(cè)頭與工件接觸時(shí),在沒有出現(xiàn)干涉情況下,與工件之間的最小距離間隙.當(dāng)最小間隙滿足所設(shè)定的公差范圍,即該點(diǎn)定義為當(dāng)前坐標(biāo)檢測(cè)最優(yōu)點(diǎn),調(diào)整測(cè)頭與當(dāng)前點(diǎn)之間間隙如圖8所示,當(dāng)間隙在公差范圍之內(nèi),進(jìn)行下一個(gè)點(diǎn)檢測(cè).

4 ? ?結(jié)束語

本文介紹了UG二次開發(fā)的基礎(chǔ)知識(shí)以及UG自帶的干涉檢查模塊分析,并將UG與Visual Studio開發(fā)軟件相結(jié)合,對(duì)UG運(yùn)動(dòng)仿真以及干涉避障模塊進(jìn)行二次開發(fā),解決了UG中干涉檢查模塊不可以判斷運(yùn)動(dòng)物體之間的干涉情況以及需要手動(dòng)選擇干涉的部位的弊端,為后續(xù)進(jìn)行在線檢測(cè)實(shí)驗(yàn)做了鋪墊,以防測(cè)頭運(yùn)行過程中出現(xiàn)撞針.

參考文獻(xiàn)

[1] 劉彥臣,李戰(zhàn)芬,李彩霞,等.基于加工文件的復(fù)雜曲面反求研究[J].中北大學(xué)學(xué)報(bào)(自然科學(xué)版),2011,32(2):154-157.

[2] 陳祥林,丁天懷.曲面間隙測(cè)量電渦流傳感器探頭的性能研究[J].測(cè)試技術(shù)學(xué)報(bào),2005,19(4):437-441.

[3] 湯慧,陳岳坪,陳大偉,等.復(fù)雜曲面的加工誤差分析[J].廣西科技大學(xué)學(xué)報(bào),2016,27(3):17-20.

[4] 裘祖榮,石照耀,李巖.機(jī)械制造領(lǐng)域測(cè)量技術(shù)的發(fā)展研究[J].機(jī)械工程學(xué)報(bào),2010,46(14):1-11.

[5] 白瑞平,王愛玲.基于數(shù)控機(jī)床的齒輪超聲自動(dòng)檢測(cè)技術(shù)[J].中北大學(xué)學(xué)報(bào)(自然科學(xué)版),2008,29(5):413-416.

[6] 郜亮,侯開虎.基于UG的二次開發(fā)在裝配干涉檢測(cè)中的應(yīng)用[J].中國制造業(yè)信息化,2012,41(9):69-71,75.

[7] 衡思迎,常青,鄧?yán)?,?基于UG二次開發(fā)的沖壓模具靜態(tài)干涉檢查研究[J].模具制造,2017(10):24-26.

Abstract:In the actual processing and testing process, the measuring points generated by the complex curved surface are inspected in turn. During the inspection process, the probe may collide with the workpiece due to the path planning or surface curvature problem. In order to prevent the probe stylus and workpiece from interfering during the online inspection process, the UG interference module needs to be redeveloped. Presenting the basic knowledge of UG secondary development and built-in interference module analysis, associating Visual Studio with the UG function based on the UG platform, this paper uses UISTyler and MenuSeript development tools to implement interference inspection and obstacle avoidance in online detection.

Key words:UG secondary development; interference inspection; obstacle avoidance

(責(zé)任編輯:黎 ? 婭)

猜你喜歡
避障
除雪機(jī)的設(shè)計(jì)及其液壓控制
基于混合算法的仿生機(jī)器魚路徑規(guī)劃
一種單雙目結(jié)合的全景避障測(cè)距方法
智能引導(dǎo)小車的設(shè)計(jì)與實(shí)現(xiàn)
基于LabVIEW的自主巡航與遙控雙功能智能小車研發(fā)
基于HC—SR04超聲波傳感器的智能避障小車設(shè)計(jì)
基于STM32芯片的移動(dòng)機(jī)器人的避障研究
基于圖像邊緣檢測(cè)的機(jī)器人避障方案設(shè)計(jì)
基于“STC80C51單片機(jī)”的智能小車系統(tǒng)的設(shè)計(jì)
智能移動(dòng)機(jī)器人的超聲避障
新营市| 乌兰察布市| 漾濞| 霍林郭勒市| 莎车县| 渝中区| 阜阳市| 彝良县| 兴城市| 金寨县| 洞口县| 宝鸡市| 阳泉市| 广灵县| 博兴县| 武陟县| 南岸区| 遂溪县| 治县。| 荣成市| 固镇县| 吐鲁番市| 彭州市| 枝江市| 社旗县| 莆田市| 通辽市| 海南省| 信丰县| 邯郸市| 赤壁市| 桃园市| 抚松县| 南澳县| 陕西省| 陈巴尔虎旗| 湘阴县| 石门县| 福建省| 奉化市| 阳原县|