亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于RoboDK Python編程的工業(yè)機器人工作站工件生成及搬運仿真

        2021-04-12 10:56:00朱小利王夢茹
        關鍵詞:指令設置

        朱小利,王夢茹

        (安徽郵電職業(yè)技術學院,安徽 合肥 230000)

        0 引 言

        隨著“工業(yè)4.0”概念在德國的提出,以“智能工廠、智能制造”為主導的第四次工業(yè)革命已經(jīng)悄然來臨。工業(yè)機器人產(chǎn)業(yè)在其中發(fā)揮了不可替代的作用。隨著工業(yè)機器人技術以及智能水平的提高,工業(yè)機器人已在眾多領域得到了廣泛的應用。未來幾年,隨著行業(yè)的需要和勞動力成本的不斷提高,中國機器人市場增長潛力巨大[1]。工業(yè)機器人專業(yè)的人才需求也會愈來愈強烈?;诖似鯔C,我院順應時代發(fā)展潮流,開設了工業(yè)機器人專業(yè)。新事物的產(chǎn)生會帶來一系列的變革,同時也會面臨發(fā)展初期的困境。如在實訓室建設方面,由于工業(yè)機器人實訓系統(tǒng)設備普遍較為昂貴,且設備的使用維護成本也較高,在資金有限的情況下,實訓設備數(shù)量難以滿足實訓要求[2]。為解決此問題,各院校采用機器人虛擬仿真軟件配合真實的工業(yè)機器人實訓設備進行實訓教學。采用虛擬仿真軟件可以形象地對工業(yè)機器人各種實際的工作案例進行仿真,能使學生即使沒條件去工業(yè)現(xiàn)場也能了解工業(yè)機器人的實際工作過程,并且安全可靠,不會出現(xiàn)實際的實訓設備在使用過程中出現(xiàn)的碰撞、損壞等情況。虛擬仿真實驗室的建設成本較低,只需在相應機房安裝仿真軟件即可,且維護成本較低[3]。為工業(yè)機器人專業(yè)學生從學校走向企業(yè)提供了良好過渡,為培養(yǎng)應用型人才提供支撐。

        為此,各國都在開發(fā)研制工業(yè)機器人虛擬仿真軟件,目前市面上比較著名的且應用較為廣泛的有ABB公司的RobotStudio、KUKA公司的KUKASim、Fanuc公司的RoboGuide以及一些第三方公司的仿真軟件,如RoboDK、RobotMaster、ROBCAD等[4]。與其他軟件相比RoboDK有許多優(yōu)勢,各個公司生產(chǎn)的仿真軟件只能對其本品牌的工業(yè)機器人進行仿真,如RobotStudio只能仿真ABB品牌的機器人,KUKASim只能仿真KUKA品牌的機器人。而RoboDK可以仿真市面上大多數(shù)品牌的機器人,如ABB、KUKA、安川、匯博、埃夫特等,還可在軟件中創(chuàng)建機器人,且仿真功能強大,支持基于Python的編程仿真,并支持和機器人的通訊,可將在軟件中編制好的程序下載到機器人本體,以便于更好、更方便調(diào)試實現(xiàn)工業(yè)機器人工作站的功能[5]。

        本文將在RoboDK中創(chuàng)建工作站,完成工作站、機器人、工具以及工件等的加載與布局,并采用Python編程來實現(xiàn)工件的生成與布局、工件的搬運等功能任務。

        1 系統(tǒng)任務要求

        要實現(xiàn)的任務如下。首先,打開RoboDK新建工作站,并完成工作站、機器人、吸盤工具、工件的加載及位置布局,如圖1所示;之后編制Python程序,將圖1碼盤1中的1個工件復制生成9個工件,并放置到碼盤1對應的卡槽中;最后,編制Python程序,實現(xiàn)9個工件的搬運任務,將碼盤1中的9個工件搬運到碼盤2對應的卡槽位置中,且搬運程序可反復無誤地運行,2個碼盤及碼盤中卡槽位置如圖2所示。

        圖1 工作站系統(tǒng) 圖2 碼盤及卡槽位置

        2 模型的導入及布局

        表1 模型位置坐標值 mm

        打開RoboDK新建工作站,將事先用其他三維軟件創(chuàng)建好的保存在本地的工作站模型、吸盤工具模型、ABB-120系列機器人模型加載進來,并根據(jù)表1所示坐標值對它們進行位置的布局。模型導入及布局后效果如圖3所示。

        圖3 系統(tǒng)布局 圖4 工件坐標系及工件布局

        3 創(chuàng)建工件坐標系

        表2 工件坐標系 mm

        為實現(xiàn)將碼盤1中的9個工件搬運到碼盤2中對應的9個卡槽位置中,可分別以碼盤1及碼盤2的左上邊角為坐標系原點創(chuàng)建2個工件坐標系Frame1和Frame2。這樣,碼盤1中的1~9個卡槽的中心點位置相對于坐標系Frame1的原點位置偏移量與碼盤2中的1~9個卡槽的中心點位置相對于坐標系Frame2的原點位置偏移量是相同的,利用此特點,可使9個工件的搬運程序指令簡化,具體實現(xiàn)在后面詳細介紹。

        由第三方軟件測得,碼盤1和碼盤2左上邊角相對于機器人基座標系原點偏移量見表2。根據(jù)此偏移量創(chuàng)建坐標系Frame1和Frame2,之后導入紅色三角形工件,并根據(jù)表2中的位置值進行布局,如圖4所示。

        4 工件的生成

        在RoboDK中創(chuàng)建Python程序,命名為“生成工件”,調(diào)用相關函數(shù),編寫相關指令,實現(xiàn)將1個紅色工件復制成9個,并放置到碼盤1相應的卡槽中。用第三方軟件測得新生成的8個工件在碼盤1中相對于參考坐標系Frame1的原點位置偏移量(表3)。為實現(xiàn)此功能,將調(diào)用工件的復制函數(shù)iPart.Copy(),此函數(shù)的功能是將工件iPart進行復制;并將調(diào)用工件的粘貼函數(shù)fFrame.Paste(),此函數(shù)的功能是將復制的工件粘貼到fFrame坐標系下;除此之外,還需調(diào)用函數(shù)iNewPart.setName( ),對新生成的工件名稱進行設置;最后調(diào)用iNewPart.setPose()函數(shù)。根據(jù)表3中的位置偏移量對新生成的工件進行布局。

        表3 新工件位置 mm

        具體程序指令如下所示:

        首先導入API模塊RoboDK和Robolink:from robolink import * # RoboDK API

        from robodk import * # Robot toolbox

        RDK = Robolink()

        然后對工作站中的對象進行定義:

        1)iPart=RDK.Item('工件1')#定義工件。

        2)fFrame1=RDK.Item('Frame1')#定義編碼盤1的工件坐標系。

        之后調(diào)用相關函數(shù)進行工件的生成及布局,具體程序指令如下:

        iPart.Copy()#復制工件

        iNewPart1=fFrame1.Paste()#粘貼工件

        iNewPart2=fFrame1.Paste()#粘貼工件

        iNewPart3=fFrame1.Paste()#粘貼工件

        iNewPart4=fFrame1.Paste()#粘貼工件

        iNewPart5=fFrame1.Paste()#粘貼工件

        iNewPart6=fFrame1.Paste()#粘貼工件

        iNewPart7=fFrame1.Paste()#粘貼工件

        iNewPart8=fFrame1.Paste()#粘貼工件

        iNewPart1.setName('工件2')#設置工件的名字

        iNewPart2.setName('工件3')#設置新工件的名字

        iNewPart3.setName('工件4')#設置新工件的名字

        iNewPart4.setName('工件5')#設置新工件的名字

        iNewPart5.setName('工件6')#設置新工件的名字

        iNewPart6.setName('工件7')#設置新工件的名字

        iNewPart7.setName('工件8')#設置新工件的名字

        iNewPart8.setName('工件9')#設置新工件的名字

        iNewPart1.setPose(transl(58.5,23,3))#設置新工件的位置

        iNewPart2.setPose(transl(100,23,3))#設置新工件的位置

        iNewPart3.setPose(transl(25,53,3)*rotz(-pi))#設置新工件的位置

        iNewPart4.setPose(transl(66,53,3)*rotz(-pi))#設置新工件的位置

        iNewPart5.setPose(transl(108,53,3)*rotz(-pi))#設置新工件的位置

        iNewPart6.setPose(transl(17,83,3))#設置新工件的位置

        iNewPart7.setPose(transl(58.5,83,3))#設置新工件的位置

        iNewPart8.setPose(transl(100,83,3))#設置新工件的位置

        運行程序,進行新工件的生成及布局,如圖5所示。

        圖5 新工件的生成及布局 圖6 工件的初始化

        5 工件的搬運

        5.1 工件位置的初始化

        本系統(tǒng)所要實現(xiàn)的工件搬運功能是將碼盤1中的9個工件搬運到碼盤2對應的卡槽中,并且每次運行程序之初,保證9個工件在碼盤1中的9個卡槽中,即需進行9個工件的位置初始化設置。為實現(xiàn)此功能,工件生成并如圖5所示布局后,可在Python程序中自定義初始化函數(shù),并調(diào)用;也可先創(chuàng)建Program程序,命名為“初始化物體位置”,并添加工件的初始化指令,對工件1~9的位置進行初始化設置,本項目采用后者,具體操作如圖6所示。之后在Python搬運程序中編寫指令語句:RDK.RunProgram(‘初始化物塊位置’),調(diào)用此Program程序,完成9個工件的位置初始化。

        5.2 工件的搬運程序編制

        創(chuàng)建Python程序,命名為“搬運”,調(diào)用相關函數(shù),編寫語句指令,完成碼盤1中的9個工件搬運到碼盤2對應的卡槽中的操作。為使搬運過程簡化,已在碼盤1和碼盤2的邊角處創(chuàng)建工件坐標系Frame1和Frame2。因碼盤1中9個卡槽中心點相對于Frame1坐標系原點的偏移量與碼盤2中相對應的9個卡槽中心點相對于Frame2坐標系原點的偏移量相同,即某一工件的抓取點相對于Frame1坐標系原點的偏移量與其放置點相對于Frame2坐標系原點的偏移量相同。因此,在搬運程序編寫過程中,在參考坐標系Frame1下計算出某一工件的抓取點之后,只需將參考坐標系改成Frame2即可計算出其放置點。工件的抓取點可由工件在碼盤1中的放置位置點(即在Frame1坐標系下的位置偏移量)在x軸方向旋轉180°得到。因此,可用指令iPart = RDK.Item('工件'+str(i))計算出第i個工件的位置,再編寫指令target_i = iPart.Pose()*rotx(pi)計算出第i個工件的抓取點或放置點。當參考坐標系選擇Frame1時,target_i即為第i個工件的搬運抓取點;當參考坐標系選擇Frame2時,target_i即為第i個工件的搬運放置點。要實現(xiàn)9個工件的搬運,因此i取值在1~9之間。工件的搬運流程:機器人坐標原點→第i個工件預抓取點→第i個工件抓取點→抓取工件→返回第i個工件預抓取點→第i個工件預放置點→第i個工件放置點→放置工件→返回第i個工件預放置點→第i+1個工件預抓取點┄┄。為簡化搬運指令,可采用for循環(huán)語句實現(xiàn)9個工件的搬運。

        具體指令如下所示:

        導入API模塊RoboDK和Robolink:

        from robolink import * # RoboDK API

        from robodk import * # Robot toolbox

        RDK = Robolink()

        定義工作站中的對象:

        iWorkstation = RDK.Item('workstation7') #定義工作臺

        iRobot = RDK.Item('ABB IRB 120-3/0.6') #定義機器人

        iTool = RDK.Item('Gripper') #定義工具

        iFrame1 = RDK.Item('Frame 1') #定義編碼盤1的工件坐標系

        iFrame2 = RDK.Item('Frame 2') #定義編碼盤2的工件坐標系

        定義機器人初始位置目標點:

        jHome = [0,0,0,0,90,0] #定義機器人初始關節(jié)值

        調(diào)用Program指令“初始化物塊位置”完成9個工件的初始化設置:

        RDK.RunProgram('初始化物塊位置') #定義工件的初始化程序

        設置機器人的工具及運行速度:

        iRobot.setPoseTool(iTool) #設置機器人工具

        iRobot.setSpeed(20,20) #設置機器人速度

        編寫運動指令,完成9個工件的搬運:

        iRobot.MoveJ(jHome)#機器人以關節(jié)運動方式回原點位置

        for i in range(1,10):#采用循環(huán)語句,實現(xiàn)9個工件的搬運

        iPart = RDK.Item('工件'+str(i)) #定義待搬運塊“工件 i”

        target_i = iPart.Pose()*rotx(pi) #計算工件的抓取點或放置點

        iRobot.setPoseFrame(iFrame1) #設置抓取工件的參考坐標系

        iRobot.MoveJ(target_i*transl(0,0,-50)) #機器人以關節(jié)運動方式移動到工件預抓取位置,即抓取位置點正上方50 mm的位置,也即在抓取點z軸方向偏移-50 mm

        iRobot.MoveL(target_i) #機器人以直線運動方式移動到工件抓取位置

        iTool.AttachClosest() #抓取工件

        iRobot.MoveL(target_i*transl(0,0,-50)) #機器人以直線運動方式返回工件預抓取位置

        iRobot.setPoseFrame(iFrame2) #設置放置工件的參考坐標系

        iRobot.MoveL(target_i*transl(0,0,-50)) #機器人移動到工件預放置位置

        iRobot.MoveL(target_i) #機器人移動到工件放置位置

        iTool.DetachAll(iFrame2) #放置工件于iFrame2坐標系下

        iRobot.MoveL(target_i*transl(0,0,-50)) #機器人返回工件預放置位置

        圖7 搬運程序運行結果

        iRobot.MoveJ(jHome)#機器人返回原點位置

        用Python編寫指令實現(xiàn)對機器人工作站搬運案例進行仿真,需要先導入API模塊RoboDK和Robolink模塊;之后對工作站中的對象進行定義,并調(diào)用Item函數(shù)將工作站中的對象與在Python中對其定義的變量關聯(lián)起來。并需設定工具坐標系及工件坐標系,機器人運動過程中所走路徑的目標點均是在相應的坐標系下創(chuàng)建確定的。在編寫實現(xiàn)搬運功能的運動指令之前還需設置機器人的運動速度。執(zhí)行搬運指令之后的運行結果如圖7所示。

        6 結 論

        隨著工業(yè)機器人在制造業(yè)中的應用越來越廣泛,對工業(yè)機器人專業(yè)人才的需求也日益增多[6],因此,許多院校都開設了工業(yè)機器人專業(yè),來培養(yǎng)適應需求的工業(yè)機器人專業(yè)應用型人才,而工業(yè)機器人仿真軟件在教學、科研及生產(chǎn)過程中起到了非常大的作用,RoboDK是一款應用非常廣泛、功能強大且支持離線編程的仿真軟件[7]。

        本文采用RoboDK中基于API的Python編程實現(xiàn)對工件的生成及位置布局以及對多個工件的搬運任務的仿真。采用Python編程可實現(xiàn)用Program編程無法實現(xiàn)的工件的生成功能,可方便地編寫相關指令語句實現(xiàn)目標點的計算,省去在工作站中一個個去創(chuàng)建目標點的過程。另外,采用Python中的for循環(huán)語句編程,可將多個工件的搬運指令簡化?;赗oboDK API的Python編程實現(xiàn)工件的生成與搬運仿真可通過編制Python指令語句實現(xiàn)將1個工件生成多個工件并進行位置的布局,同時可方便地完成多個工件的搬運任務,且RoboDK仿真界面立體直觀,使得搬運過程的仿真更為直觀,更有利于對工業(yè)機器人的研究以及教學活動的開展。

        猜你喜歡
        指令設置
        聽我指令:大催眠術
        中隊崗位該如何設置
        少先隊活動(2021年4期)2021-07-23 01:46:22
        7招教你手動設置參數(shù)
        ARINC661顯控指令快速驗證方法
        測控技術(2018年5期)2018-12-09 09:04:26
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        電子測試(2018年18期)2018-11-14 02:30:34
        殺毒軟件中指令虛擬機的脆弱性分析
        電信科學(2016年10期)2016-11-23 05:11:56
        本刊欄目設置說明
        中俄臨床醫(yī)學專業(yè)課程設置的比較與思考
        一種基于滑窗的余度指令判別算法
        艦船人員編制的設置與控制
        久久精品国产亚洲av大全| 亚洲av乱码国产精品观| 人妻少妇被猛烈进入中文字幕| 天堂新版在线资源| 在线精品免费观看| 亚洲乱码一区AV春药高潮| 日本一区二区三区高清千人斩| 亚洲午夜无码视频在线播放| 国产一区二区三区中出| 亚洲午夜精品一区二区| 精品人妻人人做人人爽| 久久久精品电影| 丰满熟女人妻一区二区三区 | 亚洲av成人一区二区三区不卡| 亚洲一区二区三区地址| 欧美一区二区三区视频在线观看| 亚洲熟妇av乱码在线观看| 国产精品人成在线观看| 亚洲中文字幕精品视频| 免费观看91色国产熟女| 老熟妇仑乱视频一区二区| 日韩欧美亚洲中字幕在线播放| 在线亚洲精品免费视频| 精品卡一卡二乱码新区| 熟女人妻在线视频| 成人永久福利在线观看不卡| 亚洲av调教捆绑一区二区三区| 久久婷婷五月综合色欧美| 亚洲熟妇无码av不卡在线播放| 男女性搞视频网站免费| 亚洲色图视频在线免费看| 人人妻人人妻人人片av| 草草影院国产| 蜜桃夜夜爽天天爽三区麻豆av| 精品久久人妻av中文字幕| 亚洲产国偷v产偷v自拍色戒| 黑人一区二区三区高清视频| 日本视频二区在线观看| 日韩精品无码免费专区网站| 国产精品第1页在线观看 | 男女啪啪在线视频网站|