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

智能機器人工作站仿真實時系統構建方法

2020-12-14 09:12:34張國棟洪榮晶方成剛
計算機應用與軟件 2020年12期
關鍵詞:設置信號

張國棟 洪榮晶,2 方成剛,2

1(南京工業大學機械與動力工程學院 江蘇 南京 211816)2(南京工大數控科技有限公司 江蘇 南京 211800)

0 引 言

機器人虛擬仿真方便了人們對整個機器人工作站的布局規劃以及整體預覽[1]。在實際工業應用中,常用的離線編程軟件robotstudio、DELMIA、SprutCAM都需要通過存儲設備將離線程序導入到機器人中,這一操作不能及時驗證機器人軌跡的正確性。在機器人離線編程的過程中,采用虛擬仿真與實際設備進行聯動,可以更方便地監控周遭設備的運行狀態。很多仿真軟件例如roboguide雖然實現了與機器人的信號交互,但與周遭設備之間的聯動運動卻不是很好,甚至根本無法做到。

針對以上實際研究過程中的不足與存在的問題,本文使用Python語言基于RoboDK軟件平臺開發了與周遭設備之間的信號交互功能,以及與機器人之間實時數據交互功能。這兩大功能在實際過程中有如下用途:(1)通過TCP/IP協議實現與機器人通信,可以將運動指令發送給機器人,方便檢查機器人軌跡的正確性,方便及時調整,并可以實時監控機器人運行狀態。(2)通過Python-Snap7模塊實現與周遭設備進行通信,實現與周遭設備的聯動,便于在項目實行時候查看整個工作站的運行情況。

1 機器人伴隨仿真系統搭建

機器人伴隨仿真系統具體流程框架如圖1所示,主要是Python接口函數與機器人端實現數據交互,然后通過解包等相關流程,結合RoboDK中Robolink、Robodk相關模塊,實現伴隨仿真。

圖1 仿真框架結構圖

1.1 創建機器人機構

機器人的正向運動學是旋轉運動中從機器人關節變量空間到笛卡爾坐標系空間的運動變換。對于給定的一組關節變量,求取末端執行器的位置和方向是正向運動學的主要問題[2]。確定UR機器人的正向運動學,主要是為了在實時傳輸機器人的關節值之后可以準確獲得相關機器人的一個實時姿態,從而在RoboDK的圖形界面中實時顯示機器人的姿態。

在RoboDK將機器人三維模型根據運動機構數分為BASE、J1、J2、J3、J4、J5、J6七個部分,保證機器人的基坐標系的位置處于工作站的原點。通過“實用程序”中“創建機構或者機器人”選項創建機器人,對于標準6軸機器人,通過其關節值和軸運動范圍定義機器人。其中UR機器人的關節長度如圖2所示。創建完成之后,機器人的D-H參數如表1所示。

圖2 UR機器人連桿長度

表1 UR機器人的D-H參數表

根據D-H參數方法,得到機器人的相鄰關節n到n-1的位姿變換為:

n-1A(θn)=

Rot(xn-1,θn)Trans(0,0,dn)Trans(an,0,0)Rot(xn,αn)

(1)

式中:an和dn為平移距離;θn和αn為旋轉角度。

對于六軸機械手,機器人法蘭末端到機器人的基坐標系的變換矩陣為:

Tn=0A11A22A33A44A55A6

式中:0A11A22A3確定末端法蘭的位置;3A44A55A6確定末端法蘭的姿態。

1.2 通信連接獲取機器人位姿信息

1.2.1Socket通信獲取機器人信息

Socket是TCP/IP網絡通信中最為常用的一個API(應用程序接口),任何網絡通信都是通過Socket來完成的。本文所使用的UR機器人在TCP/IP協議的基礎上,提供了豐富的端口用于與外部設備進行交互[3]。其中UR機器人30003為實時反饋端口,與客戶端信息交流的頻率為125 Hz,通過此端口每次收到的數據為1 044個字節,以標準網絡格式排列。主要反饋內容包括機器人的關節目標、速度、加速度、電流、扭矩等值。在Python中建立通信客戶端,對機器人控制器中的數據進行實時讀取,使用到的Python中提供的Socket模塊對象函數主要如表2所示。

表2 Socket對象函數

客戶端與服務器端(機器人端)連接時的時序圖如圖3所示。

圖3 面向連接TCP的時序圖

通過Socket連接之后,客戶端接收由機器人30003端口發送出來的機器人所有狀態信息,返回信息以字節形式返回。其中客戶端接收機器人的主要信息如下:

dic= {′MessageSize′: ′i′, ′Time′: ′d′, ′q target′: ′6d′, ′qd target′: ′6d′, ′qdd target′: ′6d′,′I target′: ′6d′,

′M target′: ′6d′, ′q actual′: ′6d′, ′qd actual′: ′6d′, ′I actual′: ′6d′, ′I control′: ′6d′,

′Tool vector actual′: ′6d′, ′TCP speed actual′: ′6d′, ′TCP force′: ′6d′, ′Tool vector target′: ′6d′,

′TCP speed target′: ′6d′, ′Digital input bits′: ′d′, ′Motor temperatures′: ′6d′, ′Controller Timer′: ′d′,

′Test value′: ′d′, ′Robot Mode′: ′d′, ′Joint Modes′: ′6d′, ′Safety Mode′: ′d′, ′empty1′: ′6d′, ′Tool Accelerometer values′: ′3d′,

′empty2′: ′6d′, ′Speed scaling′: ′d′, ′Linear momentum norm′: ′d′, ′SoftwareOnly′: ′d′, ′softwareOnly2′: ′d′, ′V main′: ′d′,

′V robot′: ′d′, ′I robot′: ′d′, ′V actual′: ′6d′, ′Digital outputs′: ′d′, ′Program state′: ′d′, ′Elbow position′: ′3d′, ′Elbow velocity′: ′3d′}

1.2.2struct函數解析數據

在TCP/IP協議進行諸如Int、char之類的數據傳輸的時候,服務器端需要某種機制將某些特定的結構體的類型打包成二進制流的字符串后進行網絡傳輸,而客戶端也應該經過某種機制進行解包還原原來的結構體數據[4]。從機器人控制器端發送來的1 044個字節,對其進行解包獲得相應的數據,對照機器人30003端口發送的數據表得知前256個字節的排列順序以及相關內容如表3所示。

表3 實時反饋數據包

通過struct.unpack_from()對接收到的機器人的信息進行解包,其流程如圖4所示。

圖4 數據解包流程

Struct.unpack_from()函數中參數分別表示:格式化字符串格式、緩沖區、偏移量。函數定義方法如下:根據格式化字符串格式從位置偏移處開始從緩沖區解包。緩沖區大小(以字節為單位,減去偏移量)至少為格式所需要的大小。圖4表示從緩存區第256個字節開始解包,解包數據格式為“!dddddd”,即6個整數,按網絡字節順序進行排列,即得到機器人6個實時關節值。

1.3 機器人模型運動仿真

通過1.1節、1.2節獲得機器人的實時關節數據。機器人傳輸過來的值為UR所規定的格式,均為弧度制。需要對其利用相關的數學公式轉化為度數,然后利用Robolink模塊對應函數,實現對模擬環境中機器人的動作控制。

程序中可設置刷新時間以及進行多線程編程,可以讓機器人進行數據獲取的同時執行模擬環境中機器人移動操作。在RoboDK中,通過其提供的基于Python的API,將工業機器人虛擬環境中的三維運動與實際相結合。用于Python的RoboDK API分為以下兩個模塊:Robolink模塊,Robodk模塊。Robolink模塊主要功能為:檢索RoboDK工作站樹中的任何對象,由Item對象表示;根據Robolink.Item類對該項執行不同的操作。本次運用到的Robolink.ltem類函數主要是setJoints(),其主要說明為:設置機器人或目標的當前關節。如果設置了機器人關節,則將在屏幕上更新機器人位置。

對從上述Socket通信和解包所得到的真實機器人的關節值進行相關數學轉換,轉換程序如下:

def on_packet(packet):

global ROBOT_JOINTS

#從數據包中檢索所需信息

rob_joints_RAD=packet_value(packet,UR_GET_JOINT_POSITIONS)

#print(rob_joints_RAD)

ROBOT_JOINTS=[ji*180.0/pi for ji in rob_joints_RAD]

轉換完成之后得到的機器人的關節值為度數,將變量放入到setJoints函數中即可。在此之前,需要獲取已經配置好的機器人名稱,其中更新位姿的主要流程如圖5所示。

圖5 更新位姿流程

上述過程完成之后,在RoboDK客戶端實時獲取實際機器人的末端位姿,在UR5機器人控制器中固定IP,啟用機器人以太網通信。通過UR機器人控制面板polyscope面板控制機器人運動,即可在RoboDK中實時顯示機器人位姿,如圖6所示。其中,左端為離線編程的環境中機器人位姿,右端為機器人polyscope控制面板。可以看出,實際機器人的關節值實時傳遞給虛擬環境中的機器人,到達位姿一致,且可以實時更新,保證機器人控制面板和虛擬機器人面板的關節值均保持相同。

圖6 實驗結果圖

2 機構仿真系統搭建

在工業機器人的離線編程的實際應用中,機器人常會與周遭設備進行互動,例如焊接時,焊接機器人往往需要與變位機設備進行互動,如果在仿真場景中實時反饋變位機的位姿,對機器人的離線編程具有很大的幫助。在自動化系統之中,很多設備都是由PLC監控其運行,通過PLC可以知道當前設備的一個運行狀態、位置。可以在虛擬場景中得知PLC相關狀態的信號,然后將這些信號通過RoboDK中Robolink、Robodk兩大模塊,虛擬出實際場景中運動機構的動作。機構半實物仿真相關過程如圖7所示。

圖7 機構半實物仿真過程

2.1 Python讀取PLC數據

Python與西門子PLC進行通信,主要是靠snap7套件。snap7是一個開源的32/64位多平臺以太網通信套件[5],主要用于與西門子S7系列1200、1500的PLC進行本地連接。Python-snap7是snap7庫的Python包裝器。通過RoboDK中嵌套的Python API接口,安裝好Python-snap7模塊、snap7模塊。完成環境搭建工作之后,方可與相關的PLC之間進行通信。

結合Python-snap7的模塊函數的相關分析以及相關文檔,Python-snap7庫中的函數主要類方法是read_area和write_area[6],函數中主要的函數參數為需要提供PLC的區域地址(area、dbnumber)、起始偏移地址(start)、讀和寫的數據長度(size/data)。PLC能提供如下信息:PLC的存儲區通過tag的形式與存儲區間關聯,分為輸入(I)、輸出(O)、位存儲區(M)、數據塊(DB)。程序在訪問對應的(I/O)tag時,是通過訪問CPU中的過程影響存儲區對應的地址進行操作的。函數參數中area、size的取值與數據區域、數據類型的對應關系如表4所示。

表4 函數參數對應關系表

從PLC的用戶手冊可知,對于M3.4,對應的就是MK(0x83),對應的起始地址是3,對應的bit位為4,即數據類型為bit。在讀取該位即調用函數的時候,其變量需要設置為area=snap7.snap7types.areas.MK,dbnumber=0,start=3.3,size=1,即可讀取關于M3.4的狀態。為了更好地對PLC狀態進行讀寫,現通過Python語言實現了PLC程序監控測試面板,并且通過RoboDK中嵌入的API接口將面板嵌入其中,如圖8所示,通過該交互界面可以實現以下功能:

圖8 PLC程序監控面板

(1)PLC狀態讀取。通過GUI界面中輸入PLC的IP,確定其機架號、插槽號;并且設置相關的讀取數據區域,其中讀寫數據的參數主要由表4到表6決定,設置好相關參數之后,點擊“查詢數據”按鈕,即可在最下方文本顯示框中看到相關數據。

(2)PLC 數據寫入。先設置好要寫入的數據區域(基本步驟參見第一步),然后設置要寫入的數據,如要寫入MB0中的M0.3、M0.4為1,設置好讀寫區域之后,將準備發送的數據寫為“2#0001 1000”或“24”即可。

2.2 設備仿真

將上述功能面板進行精簡化之后,所得PLC信號監控面板如圖9所示。為了方便對機構的控制,通過博途軟件進行PLC程序的編寫,將梯形圖程序下載到PLC中之后,通過PLC信號設置精簡面板,設置相對應的PLC輸入信號以及監控相關輸出信號,驅動相應機構運動,并且設置相關的仿真機構的運動。本次仿真機構為變位機,其驅動程序如圖10所示。

圖9 PLC信號設置精簡面板

圖10 變位機驅動程序

變位機運動由三個電磁閥控制,其中:閥1、閥2分別控制變位機正轉、反轉;閥3控制壓緊氣缸的伸縮,并且有一光電傳感器開關為變位機運動到位的標記信號。M2.0、M2.1控制變位機的正反轉,如表5所示。對PLC進行值寫入時,直接對MB2進行操作即可。

表5 變位機狀態與MB2取值對應表

通過變位機的三維創建其機構,如圖11所示。設置其變位機機構回轉速度和回轉加速度與真實機構一致,將仿真機構的驅動信號設置為PLC的等待信號。程序結構如圖12所示。

圖11 創建變位機機構

圖12 變位機運動程序

通過驅動該程序,設置MB2信號為1,真實變位機正轉,同時變位機仿真程序也開始運行。設置MB2信號為0,真實變位機回零位,同時仿真程序驅動虛擬變位機回零位[7]。

3 結 語

本文通過RoboDK中Python的API接口,實現機器人關節目標值的讀取,并且利用了RoboDK API接口中Robolink模塊,完成了從實際機器人控制虛擬機器人的伴隨仿真。拓展了該軟件的新功能,并且可在其他支持TCP/IP通信的機器人上進行相關測試。該功能可在離線環境中實時觀測機器人的位置,便于機器人位置的監控,且可以方便機器人創建相對工件坐標系。對于離線軌跡的創建也較為方便,在離線仿真中意義重大。同時也實現與PLC控制系統之間的信號交互,可實現與實際設備之間的伴隨仿真。目前該系統功能測試階段已過,處于程序優化階段,但基本功能已經實現。今后將繼續優化該系統的兩大功能,進一步完善RoboDK相關拓展功能[8-9]。

猜你喜歡
設置信號
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
完形填空二則
7招教你手動設置參數
孩子停止長個的信號
基于LabVIEW的力加載信號采集與PID控制
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
一種基于極大似然估計的信號盲抽取算法
艦船人員編制的設置與控制
主站蜘蛛池模板: 国产精品视频公开费视频| 亚洲国产高清精品线久久| 亚洲男人天堂2018| 日本人又色又爽的视频| 亚洲欧洲日韩综合色天使| 色综合成人| 91最新精品视频发布页| 国产乱子伦视频在线播放| 91破解版在线亚洲| 香蕉综合在线视频91| 被公侵犯人妻少妇一区二区三区 | 亚国产欧美在线人成| 精品国产中文一级毛片在线看| 99中文字幕亚洲一区二区| 日韩欧美色综合| 国产99免费视频| 久久久久久尹人网香蕉| 国产一级片网址| 午夜a视频| 三上悠亚一区二区| 国产一区二区丝袜高跟鞋| Aⅴ无码专区在线观看| 伊人福利视频| 国产视频欧美| 亚洲欧美激情另类| 波多野结衣无码视频在线观看| 国产成人无码AV在线播放动漫| 国产内射在线观看| www欧美在线观看| 日韩福利视频导航| 99色亚洲国产精品11p| 91伊人国产| 91年精品国产福利线观看久久| 麻豆精品在线| 欧美成人精品一级在线观看| 国产一区免费在线观看| 欧美α片免费观看| 国产精品太粉嫩高中在线观看| 亚洲精品第一页不卡| 国产在线观看91精品| 怡红院美国分院一区二区| 99视频在线精品免费观看6| 国产拍揄自揄精品视频网站| 国产一级妓女av网站| 91久久青青草原精品国产| 国产精品无码久久久久AV| 欧美一级在线播放| 亚洲精品动漫在线观看| 亚洲三级成人| 激情国产精品一区| 一本大道香蕉中文日本不卡高清二区| 一本大道香蕉久中文在线播放| 亚洲国产精品日韩欧美一区| 久久综合伊人77777| 中字无码精油按摩中出视频| 国产香蕉在线| 亚洲美女高潮久久久久久久| 国内视频精品| 99精品福利视频| 国产自无码视频在线观看| 欧美啪啪网| 精品久久人人爽人人玩人人妻| 久久久亚洲国产美女国产盗摄| 久久久久国产一区二区| 中文字幕天无码久久精品视频免费 | 亚洲伊人久久精品影院| 黄色免费在线网址| 九色视频最新网址 | 四虎国产在线观看| 日本人妻一区二区三区不卡影院 | 国产精品大尺度尺度视频| 777午夜精品电影免费看| 国产素人在线| 久久国产精品电影| 国产精品所毛片视频| 永久免费无码日韩视频| 亚洲成人高清在线观看| 99热这里只有精品在线观看| 999精品视频在线| 1024你懂的国产精品| 中文字幕亚洲综久久2021| 精品1区2区3区|