張華文 梁艷陽
摘要:在機械臂實體上進行正逆運算的結(jié)果往往難以分析和驗證,且機械臂實體的成本比較昂貴,針對此問題,設(shè)計了一套六自由度機械臂的三維仿真軟件,可以對機械臂的運動進行實時仿真。該軟件以VS2008為開發(fā)平臺,使用OpenGL函數(shù)庫進行機械臂三維模型的創(chuàng)建,使用Qt界面庫進行軟件界面的設(shè)計,提供正逆解運算和演示。結(jié)果表明,該軟件操作界面良好,能夠很好地仿真出機械臂的運動過程。
關(guān)鍵詞:機械臂;運動學(xué)建模;運動學(xué)正逆解;OpenGL;三維仿真
中圖分類號:TP391.9 文獻標(biāo)識碼:A 文章編號:1009-3044(2014)01-0060-03
1 概述
隨著自動化技術(shù)的不斷發(fā)展,工業(yè)機器人的應(yīng)用越來越廣泛,機器人的三維仿真技術(shù)也越來越受到人們的重視。使用機器人仿真軟件不會影響機器人的正常工作,待仿真完成后,直接把仿真程序下載到機器人中即可完成機器人的控制,從而提高生產(chǎn)效率。現(xiàn)在大多數(shù)院校的學(xué)生沒有太多的機會去接觸到實體機器人,使用機器人仿真軟件可以讓學(xué)生們更真實地感受機器人的運動,對教育教學(xué)有著十分重要的意義。該文以設(shè)計了六自由度機械臂的三維仿真軟件,能夠良好地仿真出機械臂的運動過程。
2 機械臂三維實體的繪制
按照模塊化的思想,把機械臂自上而下進行分解:六自由度機械臂由六個關(guān)節(jié)組成,每個關(guān)節(jié)由多個立體形狀組成,每個立體形狀由多個面組成。繪制模型時,先繪制面,再由面去組成立體形狀,然后由多個立體形狀組成關(guān)節(jié),最后由六個關(guān)節(jié)組成機械臂。采用模塊化的思想,可以使各個關(guān)節(jié)之間獨立,能夠自由地添加關(guān)節(jié)和改變各個關(guān)節(jié)的形狀。
1)面的繪制。對于一些簡單的平面(例如:三角形,矩形等),只要確定各個頂點,就可以繪制出來。對于曲面,可以把它劃分成許多個三角形。創(chuàng)建面時,要創(chuàng)建三個數(shù)組,分別用來存儲頂點,頂點的法線和頂點的索引。使用glVertexPointer()函數(shù)來指定頂點數(shù)據(jù),使用glNormalPointer()函數(shù)來指定法線數(shù)據(jù)。在繪制圖形時,每次取三個頂點,通過繪制三角形來組合成面。使用glDrawElements()函數(shù)來調(diào)用頂點索引數(shù)組來進行頂點的繪制。實際繪制時,對于曲面,需要確定其細(xì)分?jǐn)?shù),即將其分解成小三角形的數(shù)目。細(xì)分?jǐn)?shù)越大,模型越細(xì)膩,但繪制過程就越慢,因此必須均衡考慮細(xì)分?jǐn)?shù)。
2) 關(guān)節(jié)的繪制。每個關(guān)節(jié)都是由不同的形狀組成的,首先確定組成關(guān)節(jié)所需的形狀,然后去創(chuàng)建每個形狀,再進行旋轉(zhuǎn)和平移變換將其移動到相應(yīng)的位置。所有的關(guān)節(jié)都由兩種基本形狀組成:方形棱柱和圓柱形棱柱。棱柱的每個面都可以調(diào)整參數(shù)來改變尺寸。
3) 關(guān)節(jié)聯(lián)動的實現(xiàn)。為了達到關(guān)節(jié)聯(lián)動的效果,后一關(guān)節(jié)的局部坐標(biāo)系必須建立在前一關(guān)節(jié)的局部坐標(biāo)系之上。在進行繪圖時,調(diào)用OpenGL的庫函數(shù)glPushMatrix()使上一個關(guān)節(jié)的局部坐標(biāo)系作為當(dāng)前坐標(biāo)系。如果該關(guān)節(jié)是最后一個關(guān)節(jié),繪圖完成后要調(diào)用glPopMatrix()函數(shù)來釋放棧上的當(dāng)前坐標(biāo)系。
3 運動學(xué)建模與正逆解
3.1 D-H參數(shù)建模
使用D-H表示法進行運動學(xué)建模。建模時遵循以下原則,以達到簡化模型的目的。
1) 機器人每個關(guān)節(jié)的初始角度都處于0度。
2) 盡量使關(guān)節(jié)坐標(biāo)系的原點重合,從而減少計算次數(shù)。
3) 盡量使所有關(guān)節(jié)坐標(biāo)系的X軸都重合,從而減少計算參數(shù)。
4) 使最后三個關(guān)節(jié)坐標(biāo)系的原點重合,這里選定原點為第五關(guān)節(jié)的轉(zhuǎn)動中心。從而使手臂和手腕解耦,手腕用于機械臂的姿態(tài)控制,手臂用于機械臂的位置控制。
其中,[x0-z0]表示基座坐標(biāo)系,[xj-zj(j=1,2...6)]表示關(guān)節(jié)1到關(guān)節(jié)6的坐標(biāo)系。
使用該方法建模后,所有的關(guān)節(jié)坐標(biāo)系都只需經(jīng)過4次相同的變換,就可以轉(zhuǎn)換為下一個關(guān)節(jié)坐標(biāo)系。記[j-1Tj]為從坐標(biāo)系[j-1]到坐標(biāo)系[j]的變換,則有:
[j-1Tj=Rot(x,αj)*Trans(x,dj)*Rot(z,θj)*Trans(z,rj)] (1)
[[j]\&[αj(°)]\&[dj(mm)]\&[θj(°)]\&[rj(mm)]\&初始角度\&關(guān)節(jié)角度變化范圍[(°)]\&1\&0\&0\&[θ1]\&0\&0\&-170-170\&2\&90\&0\&[θ2]\&0\&0\&-180—45\&3\&0\&106\&[θ3]\&0\&0\&-135-45\&4\&-90\&0\&[θ4]\&122\&0\&-160-160\&5\&90\&0\&[θ5]\&0\&0\&-90-90\&6\&-90\&0\&[θ6]\&0\&0\&-360-360\&]
3.2 正逆解
運動學(xué)正解根據(jù)當(dāng)前每個關(guān)節(jié)的角度推算出末端的姿態(tài)。由于參考坐標(biāo)系、基座坐標(biāo)系和第一關(guān)節(jié)坐標(biāo)系是重合的,根據(jù)式(1)從參考坐標(biāo)系依次變換到末端工具坐標(biāo)系:
[rTt=0Tt=0T11T22T33T44T55T66Tt=nxoxaxpxnyoyaypynzozazpz0001] (2)
運動學(xué)逆解根據(jù)當(dāng)前末端的姿態(tài),求出各個關(guān)節(jié)的角度。由于篇幅限制,這里未給出詳細(xì)求解步驟。算法流程如下:
1)設(shè)定每個關(guān)節(jié)的限位角度。
2)設(shè)定每個關(guān)節(jié)每次運動最大的差值。
3)每求解一個關(guān)節(jié),用1、2條件判斷,如果不滿足,則直接進行下一組解。
4)判斷是否超出機器人的工作空間,如果超過,則直接進行下一組解。
5)判斷是否出現(xiàn)奇異,如果出現(xiàn),則處理奇異情況。
6)用性能函數(shù)對所求得的所有解進行篩選,取最優(yōu)解。
性能函數(shù)定義為[f=i=16(λiΔθi)2],其中[θi]表示關(guān)節(jié)[i]轉(zhuǎn)動的角度,[λi]是權(quán)重。關(guān)節(jié)轉(zhuǎn)動時,對位姿影響越大,則[λi]越大。
4 人機界面
圖3 機械臂仿真軟件界面
界面左上方是機械臂的三維模型顯示,左下方是狀態(tài)顯示,右邊是控制區(qū)域。能夠?qū)崿F(xiàn)以下功能:
1)關(guān)節(jié)控制。設(shè)定運動速度,讓每個關(guān)節(jié)進行轉(zhuǎn)動。
2)坐標(biāo)控制。設(shè)定運動速度,使機械臂沿三個坐標(biāo)軸平移和旋轉(zhuǎn)。
3)工具控制。控制末端手爪的開合狀態(tài)。
4)狀態(tài)顯示。實時地顯示每個關(guān)節(jié)的角度和機械臂的位姿。
5)視角切換。使用鼠標(biāo)拖動機械臂進行視角的切換。
6)機械臂整體的移動。通過光標(biāo)鍵,移動機械臂在屏幕中的位置。
7)視窗大小的調(diào)整。通過鼠標(biāo)滑輪滾動,調(diào)整機械臂視窗大小。
8)運動軌跡的顯示。能夠動態(tài)地顯示出機械臂的運動軌跡。
5 結(jié)論
本文設(shè)計了一套六自由度機械臂三維仿真軟件。使用OpenGL創(chuàng)建三維模型,使用D-H表示法建立運動學(xué)模型,使用VS2008開發(fā)平臺和Qt界面庫提供良好的人機交互界面。結(jié)果表明,該仿真軟件可以有效地驗證機械臂的運動學(xué)模型和正逆解,并且能夠良好地仿真出機械臂的運動過程,對機械臂的研究和教學(xué)起到了促進作用。
參考文獻:
[1] 張聰,楊光,王晨升.基于OpenGL的六自由度機械臂建模及仿真[C].第四屆圖像圖形技術(shù)與應(yīng)用學(xué)術(shù)會議, 2009:236-239.
[2] 陳素麗,任福深.基于OpenGL 的弧焊機器人仿真設(shè)計[J].科學(xué)技術(shù)與工程,2012,12(3):544-550.
[3] Carlos Vázquez Hurtado, Alejandro Rojo Valerio, Luis Ruvalcaba Sánchez. Virtual Reality Robotics System for Education and Training[C].Robotics and Automotive Mechanics Conference,2012:162-164. (下轉(zhuǎn)第75頁)
(上接第62頁)
[4] 閆賀,吳懷宇,彭晟遠(yuǎn),等.四自由度模塊化機械臂運動學(xué)建模[J].信息技術(shù),2011(10):1-4.
[5] 孫亮,馬江,阮曉鋼.基于OpenGL的六自由度機械臂三維仿真工具的設(shè)計[J].計算機測量與控制,2009,17(5):983-984.
[6] Lida Zhu,Chunxia Zhu.Research on Motion Simulation for Robot Based on Virtual Reality[C].International Conference on Robotics and Biomimetics,2007:1296-1300.
[7] 陳幼平,馬志艷,袁楚明,等.六自由度機械手三維運動仿真研究[J].計算機應(yīng)用研究,2006, (6):205-207.
[8] 沈靖,呂恬生.教學(xué)機器人三維仿真與遠(yuǎn)程控制軟件實現(xiàn)[J].計算機仿真,2006,23(10):289-292.
[9] 解偉,王曉璨.基于 OpenGL的六自由度機器手建模仿真[J].信息化縱橫,2009(12):65-67.