摘 要 根據(jù)工業(yè)機(jī)器人運(yùn)動(dòng)軌跡模擬的需要,應(yīng)用OpenGL和3DSMAX等軟件相互配合,在3DSMAX中建立其模型,應(yīng)用VC++設(shè)計(jì)運(yùn)動(dòng)模擬系統(tǒng),在該系統(tǒng)中讀取該工業(yè)機(jī)器人的模型參數(shù),根據(jù)工業(yè)機(jī)器人運(yùn)動(dòng)的關(guān)系,實(shí)現(xiàn)它的運(yùn)動(dòng)軌跡模擬。
關(guān)鍵詞 工業(yè)機(jī)器人;運(yùn)動(dòng)軌跡;模擬
中圖分類號(hào):TP242 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-7597(2014)06-0022-01
1 工業(yè)機(jī)器人三維模型
OpenGL的三維圖形功能比較強(qiáng)大,不僅能夠設(shè)置光照、材質(zhì),并且提供各種用途的函數(shù)。工業(yè)機(jī)器人的模型具體實(shí)現(xiàn)過程及部分程序代碼如下為:首先在CRenderView類中添加一個(gè)成員函數(shù):mySolidCylinder(GLdouble radius, GLdouble height, int n_div),該成員函數(shù)用于實(shí)現(xiàn)機(jī)器人模型的功能,然后再在CRenderView類中添加一個(gè)成員函數(shù)DrawMyrobot(),該函數(shù)用來繪制機(jī)器人本體,機(jī)器人的各個(gè)關(guān)節(jié)位置都按照D-H方法進(jìn)行設(shè)置,模型具體代碼如下:
GLfloat red_ambient[] = { 0.2f, 0.0f, 0.0f };//環(huán)境光
GLfloat red_diffuse[] = { 0.5f, 0.0f, 0.0f };//擴(kuò)散光
然后設(shè)定材質(zhì)函數(shù)glMaterialfv,將定義的材質(zhì)設(shè)定為繪制物體的材質(zhì):
glMaterialfv( GL_FRONT, GL_AMBIENT, red_ambient);
glMaterialfv( GL_FRONT, GL_DIFFUSE, red_diffuse );
3DSMAX中的Chunk的基本單元在構(gòu)建模型中起到重要的作用,可在VC++基礎(chǔ)類庫中定義專門用來讀入和重繪的類,比如定義Class 3DSload,在該類中定義顏色結(jié)構(gòu)、頂點(diǎn)結(jié)構(gòu)和主函數(shù)等用于建立工業(yè)機(jī)器人的3DS模型。
2 模擬系統(tǒng)界面的介紹
工業(yè)機(jī)器人模擬系統(tǒng)是一個(gè)具有交互式的界面,人機(jī)可以很好地交互,具有工具欄和菜單欄,工具欄即為菜單欄的圖標(biāo)式說明,該系統(tǒng)工具欄主要圖標(biāo)的說明:
1)模型導(dǎo)入圖標(biāo):是實(shí)現(xiàn)該系統(tǒng)與其它三維造型軟件聯(lián)系的接口,點(diǎn)擊該圖標(biāo),系統(tǒng)會(huì)彈出一個(gè)打開文件的窗口,文件的后綴名默認(rèn)為.3ds,點(diǎn)擊“打開”按鈕即可在該系統(tǒng)中顯示由外部3d軟件所繪制的3d模型。
2)基本設(shè)置圖標(biāo):可實(shí)現(xiàn)對(duì)系統(tǒng)的背景顏色、光照,及模型的顯示方式(點(diǎn)化式、線框式、面填充式,默認(rèn)為面填充式)進(jìn)行設(shè)置。
3 工業(yè)機(jī)器人模型的裝配
實(shí)現(xiàn)工業(yè)機(jī)器人的運(yùn)動(dòng)模擬,則要把機(jī)器人裝配好,保證模擬的正確進(jìn)行,在DrawWithOpenGL()函數(shù)中重繪機(jī)器人模型時(shí)必須嚴(yán)格按照機(jī)器學(xué)中D-H法建立機(jī)器人各個(gè)關(guān)節(jié),則相應(yīng)各個(gè)關(guān)節(jié)的變化矩陣可用OpenGL提供的旋轉(zhuǎn)變換函數(shù)glRotatef(m_R,x,y,z),其中m_R表示旋轉(zhuǎn)角度,x、y、z,的取值為0或1,取1表示該軸即為旋轉(zhuǎn)軸。與平移變換函數(shù)glTranslatef(m_x,m_y,m_z),其中
三個(gè)參數(shù)對(duì)應(yīng)三個(gè)坐標(biāo)軸,、、、、、表示關(guān)節(jié)間的轉(zhuǎn)換矩陣。
則機(jī)器人裝配源程序如下:
void CRenderView::DrawWithOpenGL(GLenum mode)
{ glCallList(1);調(diào)用顯示列表繪制機(jī)器人基座
由關(guān)節(jié)1到基座的變換矩陣
glCallList(2);調(diào)用顯示列表繪制機(jī)器人第一個(gè)關(guān)節(jié)
…
由關(guān)節(jié)6到關(guān)節(jié)5的變換矩陣
glCallList(7);
}
4 工業(yè)機(jī)器人軌跡模擬的實(shí)現(xiàn)
運(yùn)動(dòng)軌跡模擬可以在兩種不同的空間進(jìn)行模擬,由工業(yè)機(jī)器人軌跡規(guī)劃所提供的軌跡規(guī)劃算法,運(yùn)用C++的程序編程方法,編寫如下的程序:
BOOL Industryrobot::Angle() //定義一個(gè)角度類
{CMyRoate *angle;
CRenderView *pView;
angle =MyComputeReverse(CMyGpoint pt);調(diào)用求機(jī)器人逆解函數(shù),將插值點(diǎn)位姿轉(zhuǎn)換為關(guān)節(jié)角度
th[i][j]= CThInterploation(thata0[i],thata[i],totletim1,(j+1)*stime);
CThInterploation 為三次多項(xiàng)式插值函數(shù),其中angle0為初始關(guān)節(jié)角度,angle為終點(diǎn)關(guān)節(jié)角度,totletim運(yùn)行的時(shí)間,(j+1)*stime表示當(dāng)前時(shí)間[1]。
pView->therecord[i][j]=th[i][j]; 將插值所得角度存取到視類關(guān)節(jié)存取數(shù)組中。
軌跡規(guī)劃部分程序代碼如下:
void CLineInter::LInterpolation(CMyGpoint gpt[], float V, float ts)
其中CMyGpoint gpt[]插補(bǔ)點(diǎn)位姿,V插補(bǔ)速度,ts插補(bǔ)時(shí)間間隔。
如圖1是工業(yè)機(jī)器人末端從初始位置經(jīng)中間點(diǎn)該點(diǎn)位姿為,運(yùn)動(dòng)到終點(diǎn)該點(diǎn)位姿,設(shè)置模擬運(yùn)行時(shí)間4秒,每隔0.025秒進(jìn)行一次采樣,可以得到運(yùn)動(dòng)的軌跡。
圖1 三次多項(xiàng)式軌跡模擬圖
5 結(jié)束語
該模擬系統(tǒng)創(chuàng)造了用戶和機(jī)器人進(jìn)行交互的虛擬環(huán)境,對(duì)于檢測(cè)、設(shè)計(jì)機(jī)器人或者想看它運(yùn)行的軌跡等,操作人員在該模擬系統(tǒng)可以清晰觀摩到機(jī)器人的運(yùn)動(dòng)狀況及其軌跡等,從而可以選擇最佳的運(yùn)動(dòng)軌跡或者設(shè)計(jì)策略,對(duì)于工業(yè)生產(chǎn)有一定的實(shí)際意義。
參考文獻(xiàn)
[1]萬三國.機(jī)械手拋光技術(shù)軌跡規(guī)劃及其仿真研究[D].五邑大學(xué),2012.
作者簡(jiǎn)介
萬三國(1986-),男,江西余干人,碩士研究生,研究方向:工業(yè)自動(dòng)化。endprint
摘 要 根據(jù)工業(yè)機(jī)器人運(yùn)動(dòng)軌跡模擬的需要,應(yīng)用OpenGL和3DSMAX等軟件相互配合,在3DSMAX中建立其模型,應(yīng)用VC++設(shè)計(jì)運(yùn)動(dòng)模擬系統(tǒng),在該系統(tǒng)中讀取該工業(yè)機(jī)器人的模型參數(shù),根據(jù)工業(yè)機(jī)器人運(yùn)動(dòng)的關(guān)系,實(shí)現(xiàn)它的運(yùn)動(dòng)軌跡模擬。
關(guān)鍵詞 工業(yè)機(jī)器人;運(yùn)動(dòng)軌跡;模擬
中圖分類號(hào):TP242 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-7597(2014)06-0022-01
1 工業(yè)機(jī)器人三維模型
OpenGL的三維圖形功能比較強(qiáng)大,不僅能夠設(shè)置光照、材質(zhì),并且提供各種用途的函數(shù)。工業(yè)機(jī)器人的模型具體實(shí)現(xiàn)過程及部分程序代碼如下為:首先在CRenderView類中添加一個(gè)成員函數(shù):mySolidCylinder(GLdouble radius, GLdouble height, int n_div),該成員函數(shù)用于實(shí)現(xiàn)機(jī)器人模型的功能,然后再在CRenderView類中添加一個(gè)成員函數(shù)DrawMyrobot(),該函數(shù)用來繪制機(jī)器人本體,機(jī)器人的各個(gè)關(guān)節(jié)位置都按照D-H方法進(jìn)行設(shè)置,模型具體代碼如下:
GLfloat red_ambient[] = { 0.2f, 0.0f, 0.0f };//環(huán)境光
GLfloat red_diffuse[] = { 0.5f, 0.0f, 0.0f };//擴(kuò)散光
然后設(shè)定材質(zhì)函數(shù)glMaterialfv,將定義的材質(zhì)設(shè)定為繪制物體的材質(zhì):
glMaterialfv( GL_FRONT, GL_AMBIENT, red_ambient);
glMaterialfv( GL_FRONT, GL_DIFFUSE, red_diffuse );
3DSMAX中的Chunk的基本單元在構(gòu)建模型中起到重要的作用,可在VC++基礎(chǔ)類庫中定義專門用來讀入和重繪的類,比如定義Class 3DSload,在該類中定義顏色結(jié)構(gòu)、頂點(diǎn)結(jié)構(gòu)和主函數(shù)等用于建立工業(yè)機(jī)器人的3DS模型。
2 模擬系統(tǒng)界面的介紹
工業(yè)機(jī)器人模擬系統(tǒng)是一個(gè)具有交互式的界面,人機(jī)可以很好地交互,具有工具欄和菜單欄,工具欄即為菜單欄的圖標(biāo)式說明,該系統(tǒng)工具欄主要圖標(biāo)的說明:
1)模型導(dǎo)入圖標(biāo):是實(shí)現(xiàn)該系統(tǒng)與其它三維造型軟件聯(lián)系的接口,點(diǎn)擊該圖標(biāo),系統(tǒng)會(huì)彈出一個(gè)打開文件的窗口,文件的后綴名默認(rèn)為.3ds,點(diǎn)擊“打開”按鈕即可在該系統(tǒng)中顯示由外部3d軟件所繪制的3d模型。
2)基本設(shè)置圖標(biāo):可實(shí)現(xiàn)對(duì)系統(tǒng)的背景顏色、光照,及模型的顯示方式(點(diǎn)化式、線框式、面填充式,默認(rèn)為面填充式)進(jìn)行設(shè)置。
3 工業(yè)機(jī)器人模型的裝配
實(shí)現(xiàn)工業(yè)機(jī)器人的運(yùn)動(dòng)模擬,則要把機(jī)器人裝配好,保證模擬的正確進(jìn)行,在DrawWithOpenGL()函數(shù)中重繪機(jī)器人模型時(shí)必須嚴(yán)格按照機(jī)器學(xué)中D-H法建立機(jī)器人各個(gè)關(guān)節(jié),則相應(yīng)各個(gè)關(guān)節(jié)的變化矩陣可用OpenGL提供的旋轉(zhuǎn)變換函數(shù)glRotatef(m_R,x,y,z),其中m_R表示旋轉(zhuǎn)角度,x、y、z,的取值為0或1,取1表示該軸即為旋轉(zhuǎn)軸。與平移變換函數(shù)glTranslatef(m_x,m_y,m_z),其中
三個(gè)參數(shù)對(duì)應(yīng)三個(gè)坐標(biāo)軸,、、、、、表示關(guān)節(jié)間的轉(zhuǎn)換矩陣。
則機(jī)器人裝配源程序如下:
void CRenderView::DrawWithOpenGL(GLenum mode)
{ glCallList(1);調(diào)用顯示列表繪制機(jī)器人基座
由關(guān)節(jié)1到基座的變換矩陣
glCallList(2);調(diào)用顯示列表繪制機(jī)器人第一個(gè)關(guān)節(jié)
…
由關(guān)節(jié)6到關(guān)節(jié)5的變換矩陣
glCallList(7);
}
4 工業(yè)機(jī)器人軌跡模擬的實(shí)現(xiàn)
運(yùn)動(dòng)軌跡模擬可以在兩種不同的空間進(jìn)行模擬,由工業(yè)機(jī)器人軌跡規(guī)劃所提供的軌跡規(guī)劃算法,運(yùn)用C++的程序編程方法,編寫如下的程序:
BOOL Industryrobot::Angle() //定義一個(gè)角度類
{CMyRoate *angle;
CRenderView *pView;
angle =MyComputeReverse(CMyGpoint pt);調(diào)用求機(jī)器人逆解函數(shù),將插值點(diǎn)位姿轉(zhuǎn)換為關(guān)節(jié)角度
th[i][j]= CThInterploation(thata0[i],thata[i],totletim1,(j+1)*stime);
CThInterploation 為三次多項(xiàng)式插值函數(shù),其中angle0為初始關(guān)節(jié)角度,angle為終點(diǎn)關(guān)節(jié)角度,totletim運(yùn)行的時(shí)間,(j+1)*stime表示當(dāng)前時(shí)間[1]。
pView->therecord[i][j]=th[i][j]; 將插值所得角度存取到視類關(guān)節(jié)存取數(shù)組中。
軌跡規(guī)劃部分程序代碼如下:
void CLineInter::LInterpolation(CMyGpoint gpt[], float V, float ts)
其中CMyGpoint gpt[]插補(bǔ)點(diǎn)位姿,V插補(bǔ)速度,ts插補(bǔ)時(shí)間間隔。
如圖1是工業(yè)機(jī)器人末端從初始位置經(jīng)中間點(diǎn)該點(diǎn)位姿為,運(yùn)動(dòng)到終點(diǎn)該點(diǎn)位姿,設(shè)置模擬運(yùn)行時(shí)間4秒,每隔0.025秒進(jìn)行一次采樣,可以得到運(yùn)動(dòng)的軌跡。
圖1 三次多項(xiàng)式軌跡模擬圖
5 結(jié)束語
該模擬系統(tǒng)創(chuàng)造了用戶和機(jī)器人進(jìn)行交互的虛擬環(huán)境,對(duì)于檢測(cè)、設(shè)計(jì)機(jī)器人或者想看它運(yùn)行的軌跡等,操作人員在該模擬系統(tǒng)可以清晰觀摩到機(jī)器人的運(yùn)動(dòng)狀況及其軌跡等,從而可以選擇最佳的運(yùn)動(dòng)軌跡或者設(shè)計(jì)策略,對(duì)于工業(yè)生產(chǎn)有一定的實(shí)際意義。
參考文獻(xiàn)
[1]萬三國.機(jī)械手拋光技術(shù)軌跡規(guī)劃及其仿真研究[D].五邑大學(xué),2012.
作者簡(jiǎn)介
萬三國(1986-),男,江西余干人,碩士研究生,研究方向:工業(yè)自動(dòng)化。endprint
摘 要 根據(jù)工業(yè)機(jī)器人運(yùn)動(dòng)軌跡模擬的需要,應(yīng)用OpenGL和3DSMAX等軟件相互配合,在3DSMAX中建立其模型,應(yīng)用VC++設(shè)計(jì)運(yùn)動(dòng)模擬系統(tǒng),在該系統(tǒng)中讀取該工業(yè)機(jī)器人的模型參數(shù),根據(jù)工業(yè)機(jī)器人運(yùn)動(dòng)的關(guān)系,實(shí)現(xiàn)它的運(yùn)動(dòng)軌跡模擬。
關(guān)鍵詞 工業(yè)機(jī)器人;運(yùn)動(dòng)軌跡;模擬
中圖分類號(hào):TP242 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-7597(2014)06-0022-01
1 工業(yè)機(jī)器人三維模型
OpenGL的三維圖形功能比較強(qiáng)大,不僅能夠設(shè)置光照、材質(zhì),并且提供各種用途的函數(shù)。工業(yè)機(jī)器人的模型具體實(shí)現(xiàn)過程及部分程序代碼如下為:首先在CRenderView類中添加一個(gè)成員函數(shù):mySolidCylinder(GLdouble radius, GLdouble height, int n_div),該成員函數(shù)用于實(shí)現(xiàn)機(jī)器人模型的功能,然后再在CRenderView類中添加一個(gè)成員函數(shù)DrawMyrobot(),該函數(shù)用來繪制機(jī)器人本體,機(jī)器人的各個(gè)關(guān)節(jié)位置都按照D-H方法進(jìn)行設(shè)置,模型具體代碼如下:
GLfloat red_ambient[] = { 0.2f, 0.0f, 0.0f };//環(huán)境光
GLfloat red_diffuse[] = { 0.5f, 0.0f, 0.0f };//擴(kuò)散光
然后設(shè)定材質(zhì)函數(shù)glMaterialfv,將定義的材質(zhì)設(shè)定為繪制物體的材質(zhì):
glMaterialfv( GL_FRONT, GL_AMBIENT, red_ambient);
glMaterialfv( GL_FRONT, GL_DIFFUSE, red_diffuse );
3DSMAX中的Chunk的基本單元在構(gòu)建模型中起到重要的作用,可在VC++基礎(chǔ)類庫中定義專門用來讀入和重繪的類,比如定義Class 3DSload,在該類中定義顏色結(jié)構(gòu)、頂點(diǎn)結(jié)構(gòu)和主函數(shù)等用于建立工業(yè)機(jī)器人的3DS模型。
2 模擬系統(tǒng)界面的介紹
工業(yè)機(jī)器人模擬系統(tǒng)是一個(gè)具有交互式的界面,人機(jī)可以很好地交互,具有工具欄和菜單欄,工具欄即為菜單欄的圖標(biāo)式說明,該系統(tǒng)工具欄主要圖標(biāo)的說明:
1)模型導(dǎo)入圖標(biāo):是實(shí)現(xiàn)該系統(tǒng)與其它三維造型軟件聯(lián)系的接口,點(diǎn)擊該圖標(biāo),系統(tǒng)會(huì)彈出一個(gè)打開文件的窗口,文件的后綴名默認(rèn)為.3ds,點(diǎn)擊“打開”按鈕即可在該系統(tǒng)中顯示由外部3d軟件所繪制的3d模型。
2)基本設(shè)置圖標(biāo):可實(shí)現(xiàn)對(duì)系統(tǒng)的背景顏色、光照,及模型的顯示方式(點(diǎn)化式、線框式、面填充式,默認(rèn)為面填充式)進(jìn)行設(shè)置。
3 工業(yè)機(jī)器人模型的裝配
實(shí)現(xiàn)工業(yè)機(jī)器人的運(yùn)動(dòng)模擬,則要把機(jī)器人裝配好,保證模擬的正確進(jìn)行,在DrawWithOpenGL()函數(shù)中重繪機(jī)器人模型時(shí)必須嚴(yán)格按照機(jī)器學(xué)中D-H法建立機(jī)器人各個(gè)關(guān)節(jié),則相應(yīng)各個(gè)關(guān)節(jié)的變化矩陣可用OpenGL提供的旋轉(zhuǎn)變換函數(shù)glRotatef(m_R,x,y,z),其中m_R表示旋轉(zhuǎn)角度,x、y、z,的取值為0或1,取1表示該軸即為旋轉(zhuǎn)軸。與平移變換函數(shù)glTranslatef(m_x,m_y,m_z),其中
三個(gè)參數(shù)對(duì)應(yīng)三個(gè)坐標(biāo)軸,、、、、、表示關(guān)節(jié)間的轉(zhuǎn)換矩陣。
則機(jī)器人裝配源程序如下:
void CRenderView::DrawWithOpenGL(GLenum mode)
{ glCallList(1);調(diào)用顯示列表繪制機(jī)器人基座
由關(guān)節(jié)1到基座的變換矩陣
glCallList(2);調(diào)用顯示列表繪制機(jī)器人第一個(gè)關(guān)節(jié)
…
由關(guān)節(jié)6到關(guān)節(jié)5的變換矩陣
glCallList(7);
}
4 工業(yè)機(jī)器人軌跡模擬的實(shí)現(xiàn)
運(yùn)動(dòng)軌跡模擬可以在兩種不同的空間進(jìn)行模擬,由工業(yè)機(jī)器人軌跡規(guī)劃所提供的軌跡規(guī)劃算法,運(yùn)用C++的程序編程方法,編寫如下的程序:
BOOL Industryrobot::Angle() //定義一個(gè)角度類
{CMyRoate *angle;
CRenderView *pView;
angle =MyComputeReverse(CMyGpoint pt);調(diào)用求機(jī)器人逆解函數(shù),將插值點(diǎn)位姿轉(zhuǎn)換為關(guān)節(jié)角度
th[i][j]= CThInterploation(thata0[i],thata[i],totletim1,(j+1)*stime);
CThInterploation 為三次多項(xiàng)式插值函數(shù),其中angle0為初始關(guān)節(jié)角度,angle為終點(diǎn)關(guān)節(jié)角度,totletim運(yùn)行的時(shí)間,(j+1)*stime表示當(dāng)前時(shí)間[1]。
pView->therecord[i][j]=th[i][j]; 將插值所得角度存取到視類關(guān)節(jié)存取數(shù)組中。
軌跡規(guī)劃部分程序代碼如下:
void CLineInter::LInterpolation(CMyGpoint gpt[], float V, float ts)
其中CMyGpoint gpt[]插補(bǔ)點(diǎn)位姿,V插補(bǔ)速度,ts插補(bǔ)時(shí)間間隔。
如圖1是工業(yè)機(jī)器人末端從初始位置經(jīng)中間點(diǎn)該點(diǎn)位姿為,運(yùn)動(dòng)到終點(diǎn)該點(diǎn)位姿,設(shè)置模擬運(yùn)行時(shí)間4秒,每隔0.025秒進(jìn)行一次采樣,可以得到運(yùn)動(dòng)的軌跡。
圖1 三次多項(xiàng)式軌跡模擬圖
5 結(jié)束語
該模擬系統(tǒng)創(chuàng)造了用戶和機(jī)器人進(jìn)行交互的虛擬環(huán)境,對(duì)于檢測(cè)、設(shè)計(jì)機(jī)器人或者想看它運(yùn)行的軌跡等,操作人員在該模擬系統(tǒng)可以清晰觀摩到機(jī)器人的運(yùn)動(dòng)狀況及其軌跡等,從而可以選擇最佳的運(yùn)動(dòng)軌跡或者設(shè)計(jì)策略,對(duì)于工業(yè)生產(chǎn)有一定的實(shí)際意義。
參考文獻(xiàn)
[1]萬三國.機(jī)械手拋光技術(shù)軌跡規(guī)劃及其仿真研究[D].五邑大學(xué),2012.
作者簡(jiǎn)介
萬三國(1986-),男,江西余干人,碩士研究生,研究方向:工業(yè)自動(dòng)化。endprint