999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的UR10機械臂可視化仿真平臺設計*

2021-01-22 13:40:34鄭怡廷趙琛王一帆陶澤勇
數字技術與應用 2020年12期
關鍵詞:程序機械

鄭怡廷 趙琛 王一帆 陶澤勇

(國核電站運行服務技術公司,上海 200233)

0 引言

隨著當今科技的快速發展,工業用機械臂已經成為工業生產、運輸、無損檢測等多種領域不可或缺的設備。尤其是在高溫、高輻射、有毒氣體等惡劣環境中,機械臂能夠代替操作人員進行現場工作,使得操作人員可在安全位置進行遠程操控[1-3]。

各類機械臂廠商會提供響應的操作界面,但有時其使用受到各類限制且使用起來不甚方便,故而廠商也提供了各類接口供操作人員進行二次開發,通過二次開發,可定制各類特定功能以方便現場的各類操作[4-7]。機械臂在實際使用過程中,如果直接在某些場合使用,會造成碰撞等事故,對現場設備和機械臂本身造成損壞。再者,操作過程中有時操作人員收現場條件限制,無法準確觀測現場情況,需要借助仿真軟件輔助推斷現場情況。故而機械臂仿真軟件對于機械臂的使用起到極其重要的作用。

本文介紹使用Python語言對優傲公司生產的UR10機械臂進行二次開發,實現對UR10機械臂進行遠程操控,同時連接V-REP EDU仿真軟件,實現同步仿真功能。

1 UR10機械臂簡介

1.1 UR10機械臂

優傲公司(Universal Robots,簡稱UR)是一家專業從事生產多功能、協作式工業機械臂的丹麥公司,主要產品包括臺式的機械臂UR3、UR3e,中小型機械臂UR5、UR5e、UR10、UR10e,重型機械臂UR16e。所有的型號都是六關節機械臂,依照不同型號支持不同的負載。優傲公司生產的機械臂在多種場合廣泛運用,為了在現場的環境中能夠更好的使用,有必要對其進行仿真的開發研究[8]。

本軟件采用了UR10型號的機械臂作為研究對象。該機械臂擁有1300mm半徑移動范圍,有效荷載10千克和六個軸,所有軸轉動范圍都支持正負360°,支持Modbus-TCP,EthernetIP以及Profinet三種主線。同時,UR10支持多個通訊接口,包括Dashboard、Primary、Secondary、Realtime、RTDE、Socket、XML-RPC等接口,主要使用的接口包括:Dashboard使用29999端口,執行機器人初始化、加載程序、開始和暫停程序、運行以及設置用戶角色等,該接口需要上位機主動發送Dashboard命令字符串后返回相應數據;Primary接口使用30001端口,主要發送機器人狀態以及附加信息,會以10HZ的頻率向上位機發送相關信息,當接口在收到上位機腳本指令字符串后會立即中斷當前運行的程序,然后運行收到的指令。Secondary接口使用30002端口,與Primary接口相似,但發送的信息中只包括機器人狀態而不包括附加信息。Realtime,接口使用30003端口,與Primary、Secondary接口相似,以125HZ的頻率向上位機發送詳細狀態信息。RTDE接口使用3004端口,RTDE接口不能接收腳本信息,只能以125HZ頻率發送機器人的詳細狀態信息。Socket 通訊通過Socket相關腳本指令與上位機進行通訊。XML-RPC通訊通過XML格式傳輸數據。Modbus-TCP通過Modbus協議傳輸數據。UR10機械臂支持三種運動模式:關節運動、線性運動、圓周運動。關節運動(MoveJ),通過輸入6個關節的弧度值來確定移動位置,移動采用曲線路徑。線性運動(MoveL),通過輸入6個參數,其中3個參數代表位置,3個參數代表姿態來確定移動位置,移動采用線性方式,使工具保持在線性路徑上。圓周運動(MoveP)同樣通過輸入6個參數,3個參數代表位置,3個參數代表姿態來確定移動位置,但是是以恒定速度通過圓形混合區進行移動。

1.2 URScript腳本編程

UR機械臂有三種種編程方式:Polyscope編程、URScript腳本編程以及C-API編程,本文中UR10為更好通過Python來呈現,降低延遲率,故選用UR公司自有的URScript腳本級機器人編程語言。和大部分腳本編程語言一樣,URScript支持布爾值、整數、浮點、字符串、null等基本類型,此外有獨有的姿態類型,用來表示機械臂的位姿。URScript支持自定義函數、控制流語句、多線程功能[9]。

2 UR10運動編程環境構建

在UR10機械臂運動編程仿真環境中,基于通訊接口Realtime來開發,可以將不同語言開發的模型集成在一個平臺上運行,實現低延遲操控和仿真。通過對UR10機械臂、空間環境、運動策略等參數進行配置,能夠快速構建適用于所需空間和運動操控的任務,如圖1所示。

2.1 Python編程軟件

Python語言作為當今最流行的程序開發語言之一,代碼優美易讀,開發效率高,擁有種類齊全豐富的開發庫。本文考慮語言通用性,采用版本Python3.6來進行語言編寫,其中,程序使用Tkinter8.6圖形界面接口庫,Tk是一個輕量級、跨平臺的圖形用戶開發包,Tkinter是其在Python上的接口。在開發時使用的集成開發環境(IDE)為JetBrains PyCharm,是著名的開發Python語言的IDE,界面簡潔,功能齊全,易于使用[10]。

圖1 UR10機械臂編程仿真結構

Python在官方網站下載即可,注意下載與本機操作系統和位數相符的安裝本,下載完成后默認安裝即可,注意需要勾選Add Python to PATH,否則安裝完成后需要手動配置環境變量。如果選擇自定義安裝,則一定要勾選td/tk and IDLE,Tkinter是Python的自帶庫,完成安裝后即搭建了開發環境。

2.2 V-REP仿真平臺

V-REP(Virtual Robot Experimentation Platform EDU,虛擬機器人實驗平臺(教育版))是一款跨平臺的仿真軟件。V-REP軟件內自帶眾多機器人模型,同時也支持從外部文件導入模型。V-REP支持嵌入腳本、附加腳本或沙盒腳本、插件、遠程API、ROS節點。其中嵌入腳本、附加腳本或沙盒腳本、插件都支持Lua語言,遠程API支持C、Python、Java、Matlab、Octave和Lua等語言。V-REP軟件自帶UR10模型,可直接使用,但為了能和程序進行正常通訊,需要作一定的配置。首先,要在V-REP中新建場景,之后將UR10模型拖入場景中,然后需要編輯UR10的子腳本,在自動生成的子腳本下function sysCall_init()子函數中調用simRemoteApi.start函數,該函數可在指定端口上啟動API服務,用于與程序進行通訊,做循環判定,當simRemoteApi.start函數返回-1時則結束程序[11-12]。

為了更好地觀測仿真UR10的運動軌跡,需要在UR10的TCP處加入軌跡顯示,在UR10_link7節點新增Graph控件,在Graph控件的配置中新增三個記錄數據流(data stream to record),分別對應UR10_link7在笛卡爾坐標系的X,Y,Z軸,配置完畢后,隨著機械臂在V-REP軟件內的移動,操作人員可在V-REP軟件內直觀觀察到過去一段時間機械臂的移動軌跡,當機械臂作一定功能的移動時,軌跡功能很好的輔助操作人員確認移動情況。

3 UR10可視化仿真平臺設計

UR10機械臂可視化仿真平臺由三個模塊組成,分別為數據接收模塊、數據發送模塊、仿真交互模塊。數據接收模塊接收UR10機械臂發出的狀態數據,數據發送模塊發送向機械臂發送指令使機械臂運動,仿真交互模塊與VREP交互數據實現仿真。

3.1 數據接收模塊

數據接收模塊使用Realtime接口,30003端口,采用TCP連接方式連接,連接后機械臂會以以125HZ的頻率發送詳細狀態信息。考慮到上位機的處理能力和資源配置情況,在時間精度要求不高的場合,不必拆解每一個包,可根據實際情況適當降低獲取的頻率。

Realtime接口每次發送1108個字節(UR10不同的內置軟件版本會有所不同,但主要數據格式不變),發送的數據格式如表1:

表1中的笛卡爾坐標采用(X,Y,Z,Rx,Ry,Rz)表示,其中X,Y,Z表示位置,Rx,Ry,Rz表示姿態,UR10機械臂采用旋轉矢量法表示姿態。由于并非所有的數據都需要觀測,本程序僅選取較為重要的一些數據進行顯示。獲取數據后,使用struct.unpack函數,將tcp接收到的返回值轉換為指定格式,除了數據包總長度為int外其他所有的數據都為double,此外還需要注意,接收到的數據為大端格式,所以要按照">d"的格式轉換數據,無論有幾個值,數據最終都以元祖格式返回,后續處理時需自行轉換。

表1

如下示例獲取第一個軸的實際位置:

data = tcp_connect.get_tcp_recv()

position = struct.unpack(">d",data[252:260])[0]

獲取的值是弧度,在程序中將其轉換為角度方便使用。在獲取到數據后,程序如上述例子數據處理并顯示到程序界面上供操作人員查看。

3.2 數據發送模塊

數據發送模塊負責將根據操作人員的操作生成的上位機指令發送到UR10機械臂,以實現對通過二次開發的本軟件對UR10機械臂的操控。數據發送模塊同樣采用30003端口,TCP協議發送,發送命令使用URScript語言。移動命令支持JOG、Move Pose、Move Location模式。JOG,即點動,按下鼠標左鍵后開始移動,移動過程中松開鼠標不放,鼠標放開后即停止。支持兩種方式,軸移動和位姿移動,軸移動采用關節運動方式,即MoveJ方式,位姿移動采用線性運動,即MoveL方式。

MoveJ方式:movej([j1,j2,j3,j4,j5,j6],a,v),其中j1-j6代表UR10機械臂的六個軸,a代表關節加速度(rad/s^2),v代表關節速度(rad/s),還有兩個可選參數時間和交融半徑可選,本程序不用。點動時,操作人員選擇要動的軸,程序通過拼接字符串將命令拼接好發送至UR10機械臂。

MoveL方式:movel([x,y,z,Rx,Ry,Rz],a,v),其中x,y,z代表三軸的位置,Rx,Ry,Rz代表姿態,其他與MoveJ類似。

Move Pose方式,即由操作人員輸入6軸的位置,UR10機械臂通過內部算法直接移動到響應位置。

Move Location方式,與Move Pose類似,操作人員輸入位姿的6個參數,UR10機械臂通過內部算法直接移動到響應位置。

當需要機械臂停止時,發送停止命令即可,stopj命令對應MoveJ運動方式,stopl命令對應MoveL移動方式。本程序還定制了一些現場實際使用的特定模式,例如三點間的循環運動,機械臂與每個點停留一定時間,之后向下個點運動。腳本直接存放于程序下,可根據現場的實際情況實施修改。

3.3 仿真交互模塊

仿真交互模塊負責程序與V-REP交互,主要功能是將UR10機械臂的位置數據反饋到V-REP中,使得操作者能夠觀測仿真環境。在使用前,需要對程序進行配置才可使Python程序正常鏈接V-REP。在V-REP安裝目錄下programming emoteApiBindingspythonpython目錄中找到vrep.py、vrepConst.py、remoteApi.dll這三個文件,將其拷貝到本程序的同級目錄下,之后在Python程序頭部導入vrep模塊即可。隨后需要考慮鏈接V-REP的功能,使用vrep.simxStar函數,該函數作用是啟動一個通信線程與V-REP相連,注意函數中的端口號要與V-REP子腳本中配置的端口號一致。

圖2 UR10機械臂可視化平臺操控界面

使用時分為仿真模式和實時同步模式,仿真模式時只在V-REP中驅動仿真界面不操作實際機械臂,實時同步模式實際操作機械臂,通過數據接收模塊讀取UR10機械臂的實際位置后將其反饋給V-REP。仿真模式較為簡單,由于無需與UR10機械臂交互,當操作人員點擊按鈕后,只要算出移動后的位置,將移動位置傳輸給V-REP接口即可。實時同步模式中,當操作人員點擊按鈕后,首先通過數據發送模塊將命令傳送給UR10機械臂,然后通過數據接收模式獲取UR10機械臂的實時位置反饋,最后通過仿真交互模塊將位置數據傳給V-REP以實現仿真功能。

在連接成功后,通過vrep.simxGetObjectHandle函數獲取UR10和UR10各個關節軸的句柄,將其存于一個變量之中以供之后調用。當用戶操作后程序獲取位置時,將各軸位置通過vrep.simxSetJointTargetPosition函數通知VREP程序,調用時將各軸位置和之前獲取的句柄一一對應。simxSetJointTargetPosition中的各軸位置使用的是弧度,源程序使用的角度,需要在程序中進行轉換。

4 UR10仿真交互控制結果

基于Python的UR10機械臂可視化平臺操控界面如圖2所示。

首先,打開V-REP軟件,打開先前設置好的V-REP場景,并啟動模擬環境。之后打開操作程序,點擊V-REP連接按鈕,當程序提示成功后,如果使用仿真模式即可直接操作,在V-REP上查看仿真運動軌跡。如果使用實時同步模式還需要點擊機械臂連接按鈕,之后即可各種操作,觀察UR10機械臂的運動情況和V-REP中的仿真情況。操作人員按下各個JOG+、JOG-按鈕即可對相應的軸或者位姿進行點動,放開鼠標即停止點動,為了安全原因,每次點動最多移動90°,移動超過90°后會自動停止,需要繼續移動要松開鼠標并再次按下鼠標。經過測試,本軟件能夠順利操控機械臂,延遲時間低,在實時同步模式下UR10機械臂與VREP軟件延遲低于0.1s,能夠使操作人員較好的利用仿真環境操控實際機械臂,實現了UR機械臂模擬的需求。

5 結論

基于對UR10機械臂可視化仿真平臺設計分析,敘述了Python語言編寫的操控及仿真的機構、設計和實現,通過仿真結果來驗證該設計方案的可行性,體現了平臺的通用性和可擴展性,為進一步優化、研究機械臂仿真和操控打下了基礎。

猜你喜歡
程序機械
機械革命Code01
電腦報(2020年35期)2020-09-17 13:25:53
調試機械臂
當代工人(2020年8期)2020-05-25 09:07:38
ikbc R300機械鍵盤
電腦報(2019年40期)2019-09-10 07:22:44
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
簡單機械
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
機械班長
按摩機械臂
主站蜘蛛池模板: 亚洲国产日韩一区| 色婷婷在线播放| 久视频免费精品6| 97国产在线视频| 全午夜免费一级毛片| 72种姿势欧美久久久大黄蕉| 国产精品林美惠子在线播放| 国产日韩欧美在线播放| 国产成人精品第一区二区| 91青青草视频在线观看的| 欧美色丁香| 国产精品成人免费综合| 夜夜拍夜夜爽| 国产人人射| а∨天堂一区中文字幕| 伊人色在线视频| 2021精品国产自在现线看| 亚洲精品天堂在线观看| 亚洲免费成人网| 综合网久久| 国产精品香蕉| 男人天堂亚洲天堂| 91av成人日本不卡三区| 亚洲高清国产拍精品26u| 思思热在线视频精品| 午夜无码一区二区三区| 在线不卡免费视频| 中文字幕永久在线观看| 国产激情国语对白普通话| 国产屁屁影院| 久久无码av三级| 国产一区二区三区在线精品专区 | 久久精品66| 亚洲精品国产成人7777| 中国成人在线视频| 99国产在线视频| 日本午夜在线视频| 伊人色婷婷| 国产精品一区二区不卡的视频| 自拍偷拍欧美日韩| 国产日韩丝袜一二三区| 国产精品不卡永久免费| 中文字幕在线一区二区在线| 亚洲v日韩v欧美在线观看| 精品视频第一页| 精品少妇三级亚洲| 国产精品3p视频| 中文字幕色在线| 国产日韩AV高潮在线| 日本人妻一区二区三区不卡影院| 欧美亚洲综合免费精品高清在线观看| 中文国产成人久久精品小说| 国产精品欧美亚洲韩国日本不卡| 亚洲人成网站在线播放2019| 国产丰满成熟女性性满足视频| 久久国产亚洲偷自| 99re视频在线| 91视频青青草| 久久免费精品琪琪| 综合色亚洲| 在线日韩一区二区| 欧美日韩激情在线| 国产精品污污在线观看网站| 久久香蕉国产线看观| 欧美成人aⅴ| 第一页亚洲| 欧美日一级片| 超碰91免费人妻| 国产精品亚洲αv天堂无码| 欧美97欧美综合色伦图| 日韩精品无码免费一区二区三区 | 亚洲中文字幕精品| 谁有在线观看日韩亚洲最新视频| 国产精品熟女亚洲AV麻豆| a亚洲天堂| 福利在线一区| 国产日本欧美在线观看| 国产欧美日韩91| 国产免费看久久久| 啪啪啪亚洲无码| 国产精品视频猛进猛出| 色哟哟精品无码网站在线播放视频|