文章編號:1003-6199(2011)04-0137-04
摘 要:利用OpenGL平臺導入三菱RV-3SQ垂直多關(guān)節(jié)型機器人3D模型,在VC++的環(huán)境中采用OpenGL平臺進行對3D模型對象進行控制,通過串口通信使模型機器人對象與實際機器人對象聯(lián)動,為機器人監(jiān)控提供便利。實驗表明,將基于 OpenGL平臺的圖形虛擬系統(tǒng)與實際控制對象結(jié)合起來,能夠更好的表現(xiàn)對象的運動過程,在監(jiān)控系統(tǒng)中具有很強的實用性。
關(guān)鍵詞:OpenGL;RV3SQ機器人;3D模型;監(jiān)控
中圖分類號: TP24;TP273+.5 文獻標識碼:A
Based on the OpenGL RV3SQ Vertical Multijoint
Robot Control Research
YAN Kui
(Nanjing Institute of Technolgy,Nanjing 210000,China)
Abstract:This paper aims to import the 3D model of Mitsubishi RV3SQ Robot in the platform of Opengl where the model could be controlled in VC++ environment.It will combine the virtual robot with the actual robot by Serial Communication.Experiment suggests that it could be very practical and it can provide great convenience to connect the virtual system and the actual control of the objects on Opengl Platform in the robot Monitored Control System.
Key words: OpenGL;RV3SQ robot ;3D model;monitor and control
1 引 言
工業(yè)生產(chǎn)線上機器人在現(xiàn)代工業(yè)制造和生產(chǎn)中地位非常重要,應用也越來越廣。如何對機器人監(jiān)控是保證機器人完成指定工作重要的環(huán)節(jié)。現(xiàn)場人員監(jiān)控以及利用攝像頭跟蹤機器人運動,并利用監(jiān)控畫面實現(xiàn)控制是現(xiàn)階段控制的主要手段。缺點在于:①對場地要求具備便于安裝攝像頭或者現(xiàn)場控制人員工位;②生產(chǎn)環(huán)境要求必須適應人員或者攝像頭,對于煙塵、蒸汽等有毒有害的生產(chǎn)場所,都不能采用上述方案。③監(jiān)視存在死角,不能多角度的觀測對象。為克服上述缺點,本文試圖應用OpenGL技術(shù)對機器人在上位計算機建立模型,并將該模型與機器人實際運動過程通過檢測和通信關(guān)聯(lián)起來,以便在控制中做應用,并且能夠克服上述的應用缺陷。
2 機器人模型的建立
機器人模型要針對具體的實際機器人對象,能夠還原機器人實際的運動和功能要求。由于機器人的種類很多,根據(jù)不同的生產(chǎn)要求功能也不盡相同,所以首先要對機器人進行建模。在我們的研究對象是三菱公司的RV3SQ垂直多關(guān)節(jié)型機器人。如圖1所示,它是6自由度關(guān)節(jié)機器人。此機器人為某合作項目中,可視化三菱 e-f@ctory 自動生產(chǎn)線上,零件的加工設(shè)備中的自動上下料機器人,主要在生產(chǎn)線上是完成加工件的上下料。基于上述要求可以對機器人進行建立模型,可以采用兩種方式:①利用OpenGL建立模型,即運用OpenGL的基本圖元方式(點、線、面)和OpenGL輔助庫中三維圖元直接構(gòu)造,將機器人分解成不同的幾何部分,然后調(diào)用庫函數(shù)進行對各個部分進行繪制,最后整合得到機器人模型。但是由于OpenGL不提供描述類似于飛機、汽車、分子形狀等復雜形體的圖形操作函數(shù)。用戶必須從最基本的圖形單元開始構(gòu)造自己的三維模型,所以對于像機器人這種模型建造起來比較復雜,同時會增加代碼的復雜程度,使得整個程序的效率和實時性受到影響。②利用第三方三維制作軟件,如3DMAX、solidwok 等軟件進行模型的建立,由軟件Milkshape3D進行格式轉(zhuǎn)換和添加關(guān)節(jié)(也稱為骨骼),然后對由OpenGL其動作進行控制及骨骼運動。這種方法一方面可以大大的節(jié)省上位機模型的建立時間,另一方面可以提提高程序的可讀性和執(zhí)行效率,缺點在于必須要對三維軟件所建立的文件格式非常熟悉,文件操作相對復雜。圖2為三維軟件建立的機器人模型。
3 基于OpenGL對機器人模型的處理
圖形處理軟件建立的上位機的三維機器人模型是一個三維信息文件,現(xiàn)在通過OpenGL 讀取、并控制這個上位機機器人模型,可實現(xiàn)機器人的虛擬可視化,這是實現(xiàn)監(jiān)控的重要部分。所運用的OpenGL平臺是一個與硬件圖形發(fā)生器的C語言軟件接口,它包括了多個圖形操作函數(shù),開發(fā)者可以利用這些函數(shù)來構(gòu)造景物模型、進行三維圖形交互軟件的開發(fā),是由世界計算機圖形學界領(lǐng)袖Silicon Graphic公司的開發(fā)的產(chǎn)品。由于OpenGL本身不提供復雜模型繪制,所有對于本論文中需要實現(xiàn)的機器人模型,是需要OpenGL中提供的點、線、面函數(shù)逐步來實現(xiàn),這樣將耗費大量的時間和精力,而且效果不好。我們采用專業(yè)的三維模型軟件繪制上位機機器人模型,然后對其處理。三維軟件畫出的機器人模型不是簡單的文檔文件,所以對其讀出不是簡單的文檔讀寫操作,需要對建立模型的格式進行處理。MS3D機器人模型是由3DMAX繪制,再由Milkshape3D軟件轉(zhuǎn)換的文件格式,原因在于:①可以添加控制關(guān)節(jié),使得模型機器人更加逼真機器人運動;②轉(zhuǎn)換后的格式便于C語言進行處理,同時與OpenGL可以進行良好的結(jié)合。MS3D文件格式的機器人模型從C語言的角度來講,是由數(shù)個數(shù)據(jù)結(jié)構(gòu)來描述三維信息的MS3D文件的數(shù)據(jù)結(jié)構(gòu)如下[1]:
//文件頭數(shù)據(jù)結(jié)構(gòu),描述版本信息等,用來文件讀入判斷
struct MS3DHeader
{
……
}
// 頂點信息數(shù)據(jù)結(jié)構(gòu):包括頂點個數(shù),以及每個頂點的位置數(shù)據(jù),有無骨骼。
struct MS3DVertex
{
……
// 三角形信息:模型是由多邊形組成的,所以包括三角形的個數(shù)和位置。
struct MS3DTriangle
{……
}
// 材質(zhì)信息
struct MS3DMaterial
{
……
} PACK_STRUCT;
//關(guān)節(jié)即骨骼連接信息
struct MS3DJoint
{
……
} PACK_STRUCT;
// 關(guān)鍵幀數(shù)據(jù)
struct MS3DKeyframe
{……
}
根據(jù)MS3D 格式的機器人模型文件所提供的頂點信息、三角信息、網(wǎng)格信息、紋理信息、骨骼信息、關(guān)節(jié)信息等,利用OPENGL提供函數(shù)將MS3D 格式的機器人模型重新繪制出來[5],這一點與在程序中常用的圖片調(diào)用不一樣。這里我們提供在OPENGL編程中具體用到的函數(shù),并且對這一過程的說明:
1)讀入文件,運用文件操作的方法對三維文件模型進行解構(gòu),并將這些信息存放在指定數(shù)組存儲,以便于OPENGL平臺在VC環(huán)境中進行重繪,程序流程圖如圖3所示:
2)在VC環(huán)境中進行重繪圖形并顯示,我們在三維制作軟件中,將機器人模型根據(jù)實際控制機器人對象按照關(guān)節(jié)分為幾個部分,將重繪寫成一個函數(shù)[7],將不同的部分畫出,程序流程圖4:
程序運行效果如圖5所示:
4 模型控制部分
三維模型在上位機畫出的是靜態(tài)圖像,為了使得機器人模型與實際機器人對象實現(xiàn)聯(lián)動,同時能予以控制,必須為其設(shè)置動作部分關(guān)節(jié)點,控制關(guān)節(jié)點,就能轉(zhuǎn)動手臂使得其到達規(guī)定工位。為了達到上述要求,本文將機器人分成幾個部分,并對各個部分進行控制。主要用到了glScalef,glTranslatef,glRotatef,glPopMatrix函數(shù)。運行程序,并控制在關(guān)節(jié)在不同的姿態(tài)如圖6所示:
5 通信監(jiān)控部分
實現(xiàn)模型機器人對象和實際控制機器人對象進行通信,使得模型對象與控制對象的聯(lián)動。一方面將控制信息傳遞到實際機器人對象,使得實際機器人對象根據(jù)控制信息要求進行指定運動,同時將這運動過程傳回模型對象,使模型對象與實際對象運動保持一致。由于具體的機器人因型號和廠家不同,支持的通信接口也不盡相同。我們所研究的對象是支持三菱公司的CCLINK工業(yè)總線,通過協(xié)議轉(zhuǎn)換可以將其轉(zhuǎn)換成串口通信,具體的協(xié)議轉(zhuǎn)換不是本論文所討論的,為不失一般性,我們假定機器人能接受串口,所以通信采用串口通信。由于三菱RV-3SQ垂直多關(guān)節(jié)型機器人還處于在生產(chǎn)線上調(diào)試中,所以本論文并沒有將模型和實際對象系統(tǒng)調(diào)試,只是將上下臂關(guān)節(jié)移動信息由串口輸出和輸入,并假定已通過串口轉(zhuǎn)成CCLINK傳遞到機器人中完成控制[8]。為此在機器人底座固定的情況下,只需要傳遞的數(shù)據(jù)就是上臂轉(zhuǎn)角angle1、下臂轉(zhuǎn)角angle2、底座轉(zhuǎn)角angle3。將角度信息設(shè)置全局變量,并設(shè)置定時器,定時采集角度信息等。部分代碼結(jié)構(gòu)如下:
void CFormDrive::OnCommMscomm1()
{
// TODO: Add your control notification handler code here
VARIANT variant_redinput;
……
if(m_ctrlComm.GetCommEvent()==2) //事件值為2表示接收緩沖區(qū)內(nèi)有字符
{ variant_redinput =m_ctrlComm.GetInput(); //讀緩沖區(qū)
……
m_strRXData+=strtemp; //將接收數(shù)據(jù)轉(zhuǎn)換成CString;
}
If(m_strRXData.find(\"angle1\")!=-1)//判斷是否對應轉(zhuǎn)角。
{ angel1=angelrobot1;
……
UpdateData(FALSE);
} 6 結(jié)束語
本文就在生產(chǎn)線機器人監(jiān)控中提出了一種基于3D模型的可視化監(jiān)控方法,改善以往在生產(chǎn)現(xiàn)場對機器人監(jiān)控由于現(xiàn)場條件的限制,而影響監(jiān)控效果的情況。系統(tǒng)地描述了 OpenGL 以及三維可視化的相關(guān)技術(shù)和應用,并給出了部分代碼框架。而且這一方法可以推廣到對非平面運動機構(gòu)多角度監(jiān)控上,在工業(yè)生產(chǎn)中具有較高的使用價值。
參考文獻
[1] Evan Piph.Focus On 3D Models[M] . Portland: Premier Press,2002:7.
[2] 李桂瓊,張文祥譯.Edward Angel.OpenGL程序設(shè)計指南[M].北京:清華大學出版社,2005.
[3] 楊志曉,韓金池,歐仁輝.基于OpenGL的虛擬機器人建模的優(yōu)化方法[J].計算機系統(tǒng)應用,2008,11:21-25.
[4] 馬志強,陳一民,汪地.面向?qū)ο蟮臋C器人仿真與監(jiān)控系統(tǒng)[J].計算機工程與設(shè)計,2005,(1):75-78.
[5] 梁磊,王勇,王憲倫.基于VRML和 JavaApplet的機器人三維仿真[J].山東大學學報,2004,34(6):4-7.
[6] 蔣蕉,何清華,王奕.基于VRML和Java的交互式虛擬裝配技術(shù)研究[J].機械研究與應用,2008,21(6):96-99.
[7] ZZMSLBin,ZLCBinggang. STATICS ANALYSIS AND OPENGL BASED 3D SIMULATION OF COLLABORATIVE RECONFIGURABLE PLANETARY ROBOTS[J].西安交通大學學報(英文版).2006.2
[8] Tetsuo Yoshimitsua. Microhopping Robot For Asteroid Exploration[J].ActaAstronautica,2003.52: 441-446.
收稿日期:2011-08-31
基金項目:南京工程學院校級科研基金項目(KXJ08093)
作者簡介:嚴 奎(1976—),男,四川南充人,講師,碩士,研究方向:控制工程與控制理論(E-mail:yankui@njit.edu.cn)。