《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于網(wǎng)絡(luò)的工業(yè)機(jī)器人的仿真研究
基于網(wǎng)絡(luò)的工業(yè)機(jī)器人的仿真研究
2017年微型機(jī)與應(yīng)用第11期
洪惠超,,鄭力新,謝煒?lè)?/div>
工業(yè)智能化技術(shù)與系統(tǒng)福建省高校工程研究中心,,福建 泉州 362021
摘要: 依托StepRobotSA1400,,研究了OpenGL在機(jī)器人仿真系統(tǒng)的應(yīng)用;通過(guò)CoDeSys編寫(xiě)SA1400 PLC控制器程序,,基于TCP/IP協(xié)議實(shí)現(xiàn)PC或其他終端與機(jī)器人控制器的通信,,實(shí)現(xiàn)了在PC對(duì)StepRobotSA1400機(jī)器人進(jìn)行在線控制,;同時(shí)通過(guò)離線仿真功能,,真實(shí)地模擬了實(shí)際機(jī)器人的運(yùn)動(dòng)情況,,預(yù)測(cè)和減少了實(shí)體機(jī)器人在實(shí)際運(yùn)行中出現(xiàn)的各種問(wèn)題。
Abstract:
Key words :

  洪惠超,,鄭力新,,謝煒?lè)?/p>

  (工業(yè)智能化技術(shù)與系統(tǒng)福建省高校工程研究中心,福建 泉州 362021)

  摘要:依托StepRobotSA1400,,研究了OpenGL在機(jī)器人仿真系統(tǒng)的應(yīng)用,;通過(guò)CoDeSys編寫(xiě)SA1400 PLC控制器程序,基于TCP/IP協(xié)議實(shí)現(xiàn)PC或其他終端與機(jī)器人控制器的通信,,實(shí)現(xiàn)了在PC對(duì)StepRobotSA1400機(jī)器人進(jìn)行在線控制,;同時(shí)通過(guò)離線仿真功能,真實(shí)地模擬了實(shí)際機(jī)器人的運(yùn)動(dòng)情況,,預(yù)測(cè)和減少了實(shí)體機(jī)器人在實(shí)際運(yùn)行中出現(xiàn)的各種問(wèn)題,。

  關(guān)鍵詞三維仿真工業(yè)機(jī)器人,;運(yùn)動(dòng)學(xué)仿真,;OpenGL

  中圖分類(lèi)號(hào):TP24

  文獻(xiàn)標(biāo)識(shí)碼:A36

  DOI: 10.19358/j.issn.1674-7720.2017.11.002

  引用格式

  洪惠超,鄭力新,,謝煒?lè)?基于網(wǎng)絡(luò)的工業(yè)機(jī)器人的仿真研究[J].微型機(jī)與應(yīng)用,,2017,36(11):5-7,11.

0引言

  隨著生產(chǎn)力水平的不斷進(jìn)步和科學(xué)技術(shù)的飛速發(fā)展,工業(yè)機(jī)器人作為先進(jìn),、智能的工業(yè)化設(shè)備的代表,在社會(huì)生活的很多方面廣泛應(yīng)用\[1\],尤其利用計(jì)算機(jī)預(yù)先對(duì)機(jī)器人及其工作環(huán)境乃至生產(chǎn)過(guò)程進(jìn)行仿真可以得到很好的輔助效果,。通過(guò)系統(tǒng)仿真,可以在制造單機(jī)與生產(chǎn)線之前模擬出實(shí)物,,縮短生產(chǎn)工期,,避免不必要的返工。因此如何精準(zhǔn),、忠實(shí)地在計(jì)算機(jī)界面模擬實(shí)際機(jī)器人的生產(chǎn)過(guò)程,、所在的工作環(huán)境已經(jīng)成為機(jī)器人技術(shù)的一個(gè)突出問(wèn)題。除此之外,,在工業(yè)機(jī)器人的應(yīng)用領(lǐng)域還存在另一個(gè)較為嚴(yán)峻的問(wèn)題:一般的機(jī)器人控制器多以實(shí)現(xiàn)機(jī)器人內(nèi)部控制為主要目的,,缺乏與外界設(shè)備的信息交換能力。用戶不能以一種有效的手段動(dòng)態(tài)地對(duì)機(jī)器人本身進(jìn)行遠(yuǎn)程指令下發(fā),、監(jiān)控,。

  如果基于通用的網(wǎng)絡(luò)技術(shù)和目前成熟的計(jì)算機(jī)圖形技術(shù),仿真系統(tǒng)能夠?qū)崟r(shí)接收機(jī)器人控制器發(fā)來(lái)的狀態(tài)數(shù)據(jù),動(dòng)態(tài)地以三維模擬方式顯示或者將數(shù)據(jù)存儲(chǔ)起來(lái)以備將來(lái)分析,那么則可以降低機(jī)器的研發(fā)成本,,并極大地提高控制機(jī)器人的便利性,,因此開(kāi)發(fā)一種基于網(wǎng)絡(luò)可遠(yuǎn)程控制的機(jī)器人仿真軟件是十分必要的。

  本文構(gòu)建了一個(gè)在Visual Studio所提供的MFC框架下引入OpenGL圖形程序接口技術(shù)、基于TCP/IP通信協(xié)議開(kāi)發(fā)的機(jī)器人運(yùn)動(dòng)仿真及在線控制軟件,。本文將對(duì)在MFC下利用OpenGL實(shí)現(xiàn)三維顯示及運(yùn)動(dòng)學(xué)建模等關(guān)鍵技術(shù)進(jìn)行研究說(shuō)明,。最后簡(jiǎn)要闡述了基于通用的網(wǎng)絡(luò)通信技術(shù)與機(jī)器人仿真軟件相結(jié)合的一個(gè)應(yīng)用實(shí)例。

1在MFC(Microsoft Foundation Classes)下的OpenGL三維顯示技術(shù)

  OpenGL是由SGI公司所開(kāi)發(fā)的一個(gè)成熟而久負(fù)盛名的跨平臺(tái)的計(jì)算機(jī)圖形應(yīng)用程序接口規(guī)范,,其高效,、功能完善、支持幾乎所有現(xiàn)有的主流操作系統(tǒng)平臺(tái),。本文采用OpenGL2.0版本結(jié)合微軟基礎(chǔ)類(lèi)庫(kù)實(shí)現(xiàn)系統(tǒng)的人機(jī)交互功能,。以下簡(jiǎn)單介紹應(yīng)用OpenGL和MFC實(shí)現(xiàn)三維圖形軟件的過(guò)程。

 ?。?)開(kāi)發(fā)環(huán)境配置:應(yīng)用OpenGL和MFC開(kāi)發(fā)三維圖形軟件需要用到opengl32.dll和glu.dll這兩個(gè)文件,。在開(kāi)發(fā)本程序時(shí),還使用了glut庫(kù),,在程序中,,可以利用glut提供的各種庫(kù)函數(shù)來(lái)實(shí)現(xiàn)對(duì)鼠標(biāo)、鍵盤(pán)的消息進(jìn)行響應(yīng)以及繪制三維圖形\[2\],。

 ?。?)設(shè)置像素格式的結(jié)構(gòu)和參數(shù)

  ①填充 PIXELFORMATDESCRIPTOR 結(jié)構(gòu)設(shè)置像素格式,。

 ?、谟肅hoosePixelFormat()函數(shù)比較傳來(lái)的像素格式描述和OpenGL支持的像素格式,返回一個(gè)最佳匹配的像素格式索引。

 ?、壅{(diào)用SetPixelForlnat用格式索引iPixelFormat來(lái)設(shè)置hdc的像素格式,。

  (3)設(shè)置著色描述表:OpenGL的著色描述表定義為hRC,。為了讓程序能夠繪制窗口,,還需要?jiǎng)?chuàng)建一個(gè)設(shè)備描述表。Windows的設(shè)備描述表被定義為hDC,。DC將窗口連接到GDI(圖形設(shè)備接口),。而RC將OpenGL連接到DC。

 ?。?)添加響應(yīng)WM_PAINT消息的消息處理函數(shù)OnPaint,,在函數(shù)OnPaint函數(shù)體中建立機(jī)器人三維模型及繪制其工作環(huán)境\[34\]。

 ?。?)建立消息映射和命令傳遞,。

  (6)定義場(chǎng)景(包括機(jī)器人和其工作環(huán)境)重繪函數(shù)DrawStepRoot(),,在DrawStepRobot()函數(shù)中需要繪制包括氣缸 ,、活塞,、上下平臺(tái)和鉸鏈等元件,繪制時(shí)這些元件則由更小的細(xì)節(jié)組成,,這些細(xì)節(jié)均可通過(guò)OpenGL以及glut所提供的基本點(diǎn) ,、線 、多邊形的繪制函數(shù)繪制而成,;關(guān)節(jié)與關(guān)節(jié)之間的相對(duì)旋轉(zhuǎn)則可以分別由OpenGL中的glTranslatef()函數(shù)所實(shí)現(xiàn),,將每個(gè)關(guān)節(jié)角作為函數(shù)傳入glTranslatef()中,,通過(guò)DDX_(對(duì)話數(shù)據(jù)交換函數(shù))實(shí)現(xiàn)控件值與上述函數(shù)參數(shù)(如位置,、姿態(tài)、每個(gè)關(guān)節(jié)的角度)的綁定,;登記按鈕或鼠標(biāo)等命令消息,,在對(duì)應(yīng)的消息處理函數(shù)中通過(guò)

  

Image 001.jpg

  重繪函數(shù)DrawStepRoot()對(duì)機(jī)器人的狀態(tài)進(jìn)行更新\[45\]。

  機(jī)器人本體和機(jī)器人仿真模型如圖1和圖2所示,。

2在Windows下網(wǎng)絡(luò)數(shù)據(jù)通信的實(shí)現(xiàn)

  本文所搭建的仿真軟件是以SA1400機(jī)器人本體為客戶端,,而以其他設(shè)備為服務(wù)端。目的是實(shí)現(xiàn)一臺(tái)支持TCP/IP協(xié)議的終端盡最大的可能對(duì)多臺(tái)機(jī)器進(jìn)行操控,。

  在實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)倪^(guò)程中,,因?yàn)閷?duì)數(shù)據(jù)的可靠性和完整性均有極高的要求,基于此,,此處選擇了多線程流式Socket方式,。

  以傳輸機(jī)器人6個(gè)關(guān)節(jié)角為例,服務(wù)器程序?qū)崿F(xiàn)如下:

 ?。?)在OnInitDialog()函數(shù)中添加用于初始化和建立套接字的代碼,,用listen()和Accept()函數(shù)監(jiān)聽(tīng)客戶端請(qǐng)求。

 ?。?)創(chuàng)建線程對(duì)象 pThread用于接收客戶端的連接請(qǐng)求:

  CThread*pThread=(CThread*)AfxBeginThread(RUNTIME_CLASS(CThread));

  這時(shí),服務(wù)器方通信的初始化完成,創(chuàng)建新的線程,,避免由于通信造成主程序阻塞而不能對(duì)機(jī)器人進(jìn)行控制,妨礙用戶界面上的操作和結(jié)果的顯示。

 ?。?)用Send()函數(shù)向機(jī)器人本體傳輸數(shù)據(jù)

  對(duì)應(yīng)機(jī)器人的6個(gè)關(guān)節(jié)角,,定義了一個(gè)長(zhǎng)度為6的浮點(diǎn)型數(shù)組,通過(guò)send()函數(shù)與機(jī)器人本體通信,。具體為在消息響應(yīng)函數(shù)中加入如下代碼:

  send (app>ClientSock, (char*)(data), 24, 0),;

  這種方法的不足之處是當(dāng)僅僅只需要更新一個(gè)關(guān)節(jié)角度值時(shí),則另外5個(gè)關(guān)節(jié)角度也需要同步更新,,傳輸?shù)臄?shù)據(jù)量由本來(lái)的4 B變?yōu)榱?4 B,;以及只能傳輸機(jī)器人的6個(gè)關(guān)節(jié)角度,而對(duì)于速度等其余數(shù)據(jù)則需要另行定義,。

  為了避免這種情況的出現(xiàn)以及適應(yīng)更多類(lèi)型數(shù)據(jù)的傳輸,,本系統(tǒng)做了如下的設(shè)計(jì),,定義發(fā)送數(shù)據(jù)包格式如圖3。

Image 002.jpg

  關(guān)節(jié)ID:表明當(dāng)前接收的數(shù)據(jù)適用于第n個(gè)關(guān)節(jié),。

  指示執(zhí)行動(dòng)作類(lèi)型:表明關(guān)節(jié)ID將做何種狀態(tài)改變,,如速度、旋轉(zhuǎn)角度等,。

  數(shù)據(jù)字段:指明了關(guān)節(jié)ID執(zhí)行動(dòng)作的改變量,,如速度改變量、旋轉(zhuǎn)角度改變量等,。

  對(duì)于服務(wù)器而言,,SA1400在接收數(shù)據(jù)時(shí),服務(wù)器解析第一個(gè)字段ID,,確定需要更新第n個(gè)關(guān)節(jié)角后,,解析指示執(zhí)行動(dòng)作類(lèi)型字段以及數(shù)據(jù)字段,由此機(jī)器人做出相應(yīng)的狀態(tài)改變,。

  基于MFC的多線程流式Socket方式的通信設(shè)計(jì)以及對(duì)發(fā)送數(shù)據(jù)包的改進(jìn)不僅能有效地實(shí)現(xiàn)一個(gè)終端對(duì)多臺(tái)機(jī)器人的控制,,同時(shí)在發(fā)送數(shù)據(jù)量減少4倍的情況下,實(shí)現(xiàn)了機(jī)器人多種狀態(tài)的更新,。

3機(jī)器人運(yùn)動(dòng)學(xué)建模

  研究工業(yè)機(jī)器人運(yùn)動(dòng)學(xué)的運(yùn)動(dòng)特性,,就是研究各連桿的速度、加速度,、位置變量的所有高階導(dǎo)數(shù),;選擇合適的方法確定機(jī)器人的連桿參數(shù),以及對(duì)機(jī)器人進(jìn)行工作空間規(guī)劃則有助于減小機(jī)器人三維尺寸,,提高機(jī)器人的運(yùn)行效率\[6\],。

  為了描述連桿坐標(biāo)系之間的關(guān)系,Denavit 和Hartenberg提出一種通用的方法,,這種方法在機(jī)器人的每個(gè)連桿上都固定一個(gè)坐標(biāo)系,,用4×4的齊次變換矩陣來(lái)描述相鄰兩連桿的空間關(guān)系。通過(guò)依次變換可最終推導(dǎo)出末端執(zhí)行器相對(duì)于基坐標(biāo)系的位姿,,從而建立機(jī)器人的運(yùn)動(dòng)學(xué)方程\[7\],。

  實(shí)現(xiàn)方法如下:

  對(duì)機(jī)器人,如圖4所示,采用DH參數(shù)法進(jìn)行建模,得到關(guān)于SA1400機(jī)器人的DH坐標(biāo)系,,如圖5所示,。

  

Image 003.jpg

  其中圖5中參數(shù)an表示連桿長(zhǎng)度; dn為移動(dòng)關(guān)節(jié)移動(dòng)變量,。

  根據(jù)圖5可得關(guān)于SA1400的DH參數(shù),如表1所示,。其中θn為轉(zhuǎn)動(dòng)關(guān)節(jié)變量,αn是兩關(guān)節(jié)軸扭角。

  

Image 006.jpg

  由于所有的運(yùn)動(dòng)都是相對(duì)于當(dāng)前坐標(biāo)系而言的,,因此,,總的變換矩陣A等于各變換矩陣右乘,。

  RPQ{31SH~W053@}XCY}XH$K.png

  將表1參數(shù)代入式(1),從而得到A1,、A2,、A3、A4,、A5,、A6。

  可得連續(xù)的連桿變換為:

  206610NOYAJE({TBCYGWNZN.png

  所求T中的參數(shù)nx,、ny,、nz、ox,、oy,、oz,、px,、py、pz即為根據(jù)機(jī)器人各關(guān)節(jié)角度計(jì)算出來(lái)的末段執(zhí)行器的姿態(tài)和位置,,也就是SA1400機(jī)器人正運(yùn)動(dòng)學(xué)方程的建立過(guò)程,。與之相反的是機(jī)器人逆運(yùn)動(dòng)方程的建立,即已知末端位姿求出各個(gè)關(guān)節(jié)旋轉(zhuǎn)的角度,。

  對(duì)于機(jī)器人求逆解的方法有多種,,最常用的方法是封閉解法,采用該方法不僅便于實(shí)時(shí)控制,,而且計(jì)算速度快且效率高,。封閉解法包含代數(shù)、幾何兩種解法,。此處采用一種系統(tǒng)化的代數(shù)解法,。具體過(guò)程如下:如式(2)所示,已知nx,、ny,、nz、ox,、oy,、oz、px,、py,、pz,而A1,、A2,、A3,、A4、A5,、A6則為未知矩陣,,其中所含的未知變量為θ1、θ2,、θ3,、θ4、θ5,、θ6,。用未知的連桿的逆變換左乘方程的兩端,把關(guān)節(jié)變量分離出來(lái),,從而求出解,,按照這種方法讓矩陣左右兩邊的元素相等便可求出各個(gè)關(guān)節(jié)變量的值。計(jì)算過(guò)程可用下述等式表示:

  A)V(JY3OJO%(4$$`%S{)JT7.png

4應(yīng)用實(shí)例

  本文構(gòu)建的基于網(wǎng)絡(luò)和StepRobotSA1400工業(yè)機(jī)器人的仿真系統(tǒng)基本上能模擬真正機(jī)器人所實(shí)現(xiàn)的功能,,圖6為轉(zhuǎn)動(dòng)關(guān)節(jié)變量J1~J6為0時(shí),,機(jī)器人仿真軟件的仿真結(jié)果;圖7為J1~J2為0,、J3=30°,、J4~J6為0時(shí),機(jī)器人仿真軟件的仿真結(jié)果,。

  可以從圖6,、圖7中的正運(yùn)動(dòng)學(xué)求解模塊中輸入轉(zhuǎn)動(dòng)關(guān)節(jié)變量獲得機(jī)器人末端執(zhí)行器的位姿矩陣,也可以在逆運(yùn)動(dòng)學(xué)求解模塊中設(shè)定末端執(zhí)行器的位姿矩陣,,求得6個(gè)關(guān)節(jié)變量的角度值并在仿真界面中顯示,。當(dāng)所求逆運(yùn)動(dòng)學(xué)解或輸入關(guān)節(jié)角度超過(guò)關(guān)節(jié)范圍時(shí)(關(guān)節(jié)角度范圍如表1所示),則程序?qū)棾鼍骓?yè)面(如圖8所示),,若沒(méi)有對(duì)其進(jìn)行該設(shè)計(jì),,當(dāng)關(guān)節(jié)超限時(shí),機(jī)器人的末端執(zhí)行器將可能對(duì)地板等硬物產(chǎn)生撞擊,,造成機(jī)器人本體的損壞,。

  

Image 004.jpg

  機(jī)器人模型所對(duì)應(yīng)的狀態(tài)

  

Image 005.jpg

5結(jié)束語(yǔ)

  本文構(gòu)建了一個(gè)基于網(wǎng)絡(luò)的工業(yè)機(jī)器人的仿真及在線控制系統(tǒng)。該系統(tǒng)利用OpenGL搭建了機(jī)器人本體仿真模型,,避免了調(diào)試過(guò)程中對(duì)機(jī)器人本體可能造成的損傷,;同時(shí)引進(jìn)在線控制功能,對(duì)傳輸?shù)臄?shù)據(jù)包做了進(jìn)一步的優(yōu)化,,減少了網(wǎng)絡(luò)的通信量,,實(shí)現(xiàn)對(duì)機(jī)器人的遠(yuǎn)程監(jiān)控,證明了仿真技術(shù)和網(wǎng)絡(luò)通信結(jié)合的可行性,。

參考文獻(xiàn)

 ?。?] 郭青陽(yáng).基于KUKA工業(yè)機(jī)器人的定位誤差補(bǔ)償方法的研究\[D\].長(zhǎng)春:長(zhǎng)春工業(yè)大學(xué),,2016.

  [2] 董天平,馬燕,劉倫鵬.基于OpenGL的工業(yè)化機(jī)器人仿真研究\[J\].重慶師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,30(2): 6064.

 ?。?] 李春雨. 計(jì)算機(jī)圖形學(xué)及實(shí)用編程技術(shù)\[M\]. 北京:北京航空航天大學(xué)出版社, 2009.

 ?。?] 馮勝?gòu)?qiáng), 胡繩蓀, 申俊琦. 基于UG的弧焊機(jī)器人模型裝配與運(yùn)動(dòng)仿真\[J\]. 天津大學(xué)學(xué)報(bào), 2009, 42(6):518522.

  [5] 祁若龍, 周維佳, 劉金國(guó),等. VC平臺(tái)下機(jī)器人虛擬運(yùn)動(dòng)控制及3D運(yùn)動(dòng)仿真的有效實(shí)現(xiàn)方法\[J\]. 機(jī)器人, 2013, 35(5):594599.

 ?。?] CRAIG J J.機(jī)器人學(xué)導(dǎo)論(第3版)\[M\].贠超,,譯.北京:機(jī)械工業(yè)出版社, 2006.

  [7] DENAVIT J, HARTENBERG R S. A kinematic notation for lowerpair mechanisms based on matrices\[J\]. Trans.of the Asme. Journal of Applied Mechanics, 1955(22):215221.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。