感謝 - auto.fcu.edu.t ·...

51

Transcript of 感謝 - auto.fcu.edu.t ·...

Page 1: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接
Page 2: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接
Page 3: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

感謝感謝感謝感謝

感謝逢甲自動控制工程學系的師長、學長姐在學業上的指導;特別是專題

的指導教授黃榮興老師,他給予我們充分的空間及資源,而在我們遇到疑難的

時候,也提供適當的指導和協助。

另外,還要感謝機電整合實驗室的學姊高鳳呈,協助我們解決製作專題過

程中遇到的許多困難,耐心地指導我們,並且給予我們解決問題的方向;還有

第一組和第三組同學,互相的配合,挪出時間與我們討論專題進度,以及成果

上的分享,讓我們得以順利完成且整合這個專題。

除此之外,更要感謝專題發表口試老師,黃建立、吳穎強老師,給了我們

許多寶貴的意見,讓我們知道專題內容不足的地方,並且加以改進;也感謝系

上老師各種課程的教導,使得我們能在專題上更廣泛的延伸與應用。

Page 4: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

i

中文摘要中文摘要中文摘要中文摘要

本論文之研究目的,主要是在建構一雙手機器人探索雙手機器人的動態行

為及架構其機器人監控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

給予馬達轉動命令的方式,利用影像擷取機器人動作時的移動軌跡,然後將其

分析得到各個連桿(Link)與關節(Joint)的相關位置參數,再利用D-H

method及逆向運動學反求機器人的關節角度值。利用上述求得的關節角度驅動

Visual C++ OpenGL 3D/VR機器人模型來模擬雙足機器人之動態行為,此外驗證

所得到的資料參數是否正確。

Page 5: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

ii

Abstract

The main purpose of this research is to construct a bimanous robot which

investigates the dynamic behavior of the bimanous robot and setup the monitor system.

In planning the moving trajectory of bimanous robot, we adopt and offer the way in

which the motor rotates under the direct command and then utilize the image

processing to pick the moving trajectory and the related parameters of all the links

and joints. On the other hand, we use D-H method and inverse kinematics to calculate

the angle values of joints. Finally we build an OpenGL 3D/VR robot model with

Visual C++ to simulate the dynamic behavior of the bimanous robot and validate all

the parameters.

Page 6: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

iii

目錄目錄目錄目錄

中文摘要.........................................................................................................................i

Abstract ..........................................................................................................................ii

目錄...............................................................................................................................iii

圖目錄...........................................................................................................................iv

表目錄............................................................................................................................v

第一章 緒論...................................................................................................................1

1.1 研究背景及動機..............................................................................................1

1.2 研究目的及其重要性......................................................................................2

1.3 國內外相關研究..............................................................................................3

第二章 系統簡介與理論說明.......................................................................................6

2.1 機器人及系統簡介..........................................................................................6

2.2 雙臂機器人之運動學分析.............................................................................9

第三章 監控系統與程式設計.....................................................................................15

3.1 監控系統之設計............................................................................................15

3.2 OpenGL 虛擬實境.........................................................................................15

3.3 程式設計........................................................................................................20

第四章 模擬驗證與結果分析.....................................................................................25

4.1 模擬驗證─動作一........................................................................................25

4.2 模擬驗證─動作二........................................................................................27

第五章 結論與未來展望.............................................................................................29

參考文獻......................................................................................................................30

附錄 A..........................................................................................................................31

附錄 B..........................................................................................................................41

Page 7: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

iv

圖目錄圖目錄圖目錄圖目錄

圖 1.1 WABOT-1............................................................................................................... 4

圖 1.2 WABIAN-2LL[5] ................................................................................................... 4

圖 1.3 三菱企業的機器人................................................................................................. 4

圖 1.4 能用三國語言與人對話的機器人......................................................................... 5

圖 1.5 能自行閃避行人的機器人..................................................................................... 5

圗 2.1 雙足機器人之雙腳模型圖..................................................................................... 6

圗 2.2 雙足機器人之上半身模型圖................................................................................. 7

圗 2.3 雙足機器人之馬達機構圖..................................................................................... 7

圗 2.4 雙足機器人之馬達實體圖..................................................................................... 7

圗 2.5 雙足機器人之全身模型圖..................................................................................... 8

圖 2.6 桿件參數的定義..................................................................................................... 9

圖 2.7 雙臂機器人之各個座標系統標示....................................................................... 11

圖 3.1 監控系統............................................................................................................... 15

圖 3.2 OpenGL處理指令之流程圖 ................................................................................ 18

圖 3.3 OpenGL機器人的手 ............................................................................................ 19

圖 3.4 OpenGL機器人的腳踝 ........................................................................................ 19

圖 3.5 OpenGL機器人的大腿 ........................................................................................ 19

圖 3.6 OpenGL機器人的左腳 ........................................................................................ 19

圖 3.7 OpenGL機器人的身體 ........................................................................................ 19

圖 3.8 OpenGL機器人的全身展示圖 ............................................................................ 20

圖 3.9 OpenGL機器人的全身線架構圖 ........................................................................ 20

圖 3.10 OpenGL機器人的馬達圖 .................................................................................. 20

圖 3.11 OpenGL機器人的馬達線架構圖 ...................................................................... 20

圖 3.12 Data file 驅動程式流程圖 .................................................................................. 23

圖 4.1 實體機器人之座標定義....................................................................................... 25

圖 4.2 機器人動作一拍攝圖........................................................................................... 26

圖 4.3 機器人動作一模擬圖........................................................................................... 26

圖 4.4 機器人動作二拍攝圖........................................................................................... 27

圖 4.5 機器人動作二模擬圖........................................................................................... 28

Page 8: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

v

表目錄表目錄表目錄表目錄

表 2.1 基底座標至各 Joint 之參數表 ............................................................................. 12

Page 9: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

1

第一章第一章第一章第一章 緒論緒論緒論緒論

1.1 研究背景及動機研究背景及動機研究背景及動機研究背景及動機

早在工業革命時代,人們就發現勞力的工作可以由機器來取代,由於這項

需求,機械手臂就這樣誕生了,它幫助當時的人處理高重複性和費力的工作;

但是科技的日新月異,許多工作也伴隨著高危險性,這時便誕生了可移動式的

機器人,像是利用輪子、軌道或步行移動的各種機器人,其中又以步行機器人

的機動性最高,最能夠克服不良地形的移動問題,因此,步行機器人便成為各

國工業界和學術界極力研究的課題。

現今已經有許多研究達成了使機器人可以像人類一樣利用雙手進行各種動

作,並且進一步去探討如何使機器人雙手在 3 度空間中自由移動取物;本研究

的焦點是放在建構雙手機器人之雛形,並探索其動態行為,首先驅動所購得之

機器人,利用 CCD 影像擷取其抓取時移動軌跡,採用逆向工程法,推導其逆向

運動方程,再驅動所建構之 OpenGL 3D/VR 機器人模型,以進行一連串分析研

究。

Page 10: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

2

1.2 研究目的及其重要性研究目的及其重要性研究目的及其重要性研究目的及其重要性

雙手機器人的手部抓取運動可以分為兩種方式,分別是給角度抓取(順向

運動方程)與定座標抓取(逆向運動方程),本論文之研究目的,主要是如上

節研究動機所述,希望能使機器人的抓取能夠更加的擬人化。為此我們針對購

得的雙足機器人KHR-1做分析模擬,採用逆向工程的方式來建構出機器人的模

擬介面;其中,包括了機構的設計、馬達的運作以及逆向運動方程推導,期望

能在最短時間,建構出機器人機構及其監控系統。

相信在不久的將來,人型機器人將會取代現階段人類花費勞力的工作,提

供更穩定的工作效率,也可以在高危險性的工作環境中代替人類執行作業,所

以,人型機器人的誕生將會是人類的一大福音。

Page 11: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

3

1.3 國內外相關研究國內外相關研究國內外相關研究國內外相關研究

西元1966時,國外的Waseda University 就已經開始著手於雙足擬人化機器

人的研究,在西元1973年終於誕生了世界上第一台能夠用兩隻腳行走於水平面

上的雙足機器人-WABOT-1如圖1.1所示,當時採用的就是靜態步行(Statically

Stable Walking)的方法;時至今日,單純的水平行走已經不能滿足需求,所以

各式各樣的行走方式仍然在持續研發中。

1990年,McGeer設計了一個純動力的双足機器人[1],此機器人只有一個理

論上的自由度,沒有身體部分只有兩條腿交接在一起,在正視面中沒有運動,

在側視面中雙足機器人像圓規一樣2連桿的運動,McGeer已經能夠完成在側視

面中完美對稱的機構,而此雙足機器人沒有驅動器,僅靠重力驅動,所以它只

能在下坡道移動。

1990 年,Takanishi et al.設計數種有軀幹的雙足機器人,一個動力 9 個自由

度的雙足機器人[2],僅能作側視面中的運動,在正視面中只有在骨盆上的軀幹

可運動,做倒立擺錘運動。

1992 年,Kajita et al.設計一個純動力 4 個自由度的雙足機器人[3],它可以

在平地上沿著直線爬階梯,此雙足機器人藉著腳踵撞擊地面的震盪來平衡不穩

定的一邊。

1994 年,Grishin et al.設計一個純動力 2 個自由度的雙足機器人[4],它由一

個骨盆部(Pelvis)及兩個可伸縮的腿所組成。為了避免傾倒,機器人的腿加裝

了垂直於地面的腳掌,在側視面中如 3 連桿般的運動,此雙足機器人能在平地

上直線行走。

西元1998年,日本Honda公司發表了P3的相關簡介,後續也有ASIMO型號

機器人的誕生,同樣是日本公司的SONY和YAMAHA也都有其研發的機器人問

世,使得日本嚴然成為機器人研發的佼佼者,並帶領機器人從靜態步行

(Statically Stable Walking)走向動態步行(Dynamically Stable Walking)的境

界,日本的學術界也有相當傲人的成績,像由Yu Ogura、Hiroyuki Aikawa、

Hun-ok Lim和Atsuo Takanish所投稿在IEEE 的機器人WABIAN的各代作品,均

漂亮的呈現出機器人的步行規劃很成功,也有實體機台的驗證,如圖1.2所示。

Page 12: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

4

圖1.1 WABOT-1 圖1.2 WABIAN-2LL[5]

2000年,Hun-ok Lim, Yousuke Yamamoto and Atsuo Takanishi三名學者於

Waseda大學,研究機器人的平衡,嘗試將機器人分為許多質點逐一探討來強調

精確,將原本精簡的ZMP方程式修改的較為精密[11]。

2005年,日本愛知縣的萬國博覽會,許多企業也展示了他們的機器人,如

下所示:

圖1.3所展示的是三菱企業的機器人,他是以輪型方式運作,可以在舞台上

依照指令移動,在此作用為節目主持人,手部自由度為3,工作空間廣。

圖1.3 三菱企業的機器人

Page 13: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

5

圖1.4 能用三國語言與人對話的機器人

圖1.5 能自行閃避行人的機器人

Page 14: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

6

第二章第二章第二章第二章 系統簡介與理論說明系統簡介與理論說明系統簡介與理論說明系統簡介與理論說明

2.1 機器人及系統簡介機器人及系統簡介機器人及系統簡介機器人及系統簡介

本研究主要方法為利用逆向工程方式,分析機器人的機構和其作動行為,

並以逆向運動學來驅動所架設的監控系統中之 3D/VR,藉此驗證運動方程的正

確性以及機器人的運動軌跡。

2.1.1 自由度分析自由度分析自由度分析自由度分析

為了使建構的雙足機器人能像人類般行走,因此我們以人類為基礎模型來

設計雙足機器人的雙腳,也就是將雙足機器人的關節數目依照人類的關節數目

來設立,這樣除了可以使機器人擬人化,另外還有個好處,就是可以簡化步行

的條件限制。在步行中,以單腳而論,向前跨步的動作在側視面需要有三個自

由度,分別在於踝關節、膝關節和髖關節;為了讓雙足機器人在行走時能保持

左右平衡,正視面需要有兩個自由度,分別在踝關節和髖關節;综合上述所需

要的自由度,合計一隻腳需要擁有五個自由度,兩隻腳則共有十個自由度,如

圖 2.1 所示。

圗2.1 雙足機器人之雙腳模型圖

在上半身方面,KHR-1 的手臂有 3 個自由度,雙手共 6 個自由度,以及頭

部 1 個自由度,如圖 2.2 所示。

Page 15: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

7

圗2.2 雙足機器人之上半身模型圖

2.1.2 機構設計機構設計機構設計機構設計

在本研究中使用之機器人為 KONDO 公司所做之機器人 KHR-1,藉著逆向

工程來分析其機構,建構機器人細部藍圖,作為未來等身機器人建構的基礎。

KHR-1 是一個全身擁有 17 個自由度的機器人,而他的作動方式,是靠著伺

服馬達以及鋁板的聯接來完成。該機器人的尺寸為 340×18mm 重量約 1.2 公

斤,使用 RS232 來傳輸訊號進行指定之動作,圖 2.3 為 KHR-1 的驅動靈魂伺服

馬達機構圖,圖 2.4 為伺服馬達之實體圖,圖 2.5 為 KHR-1 之全身實體圖。

圗 2.3 雙足機器人之馬達機構圖 圗 2.4 雙足機器人之馬達實體圖

Page 16: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

8

圗2.5 雙足機器人之全身模型圖

Page 17: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

9

2.2 雙雙雙雙臂臂臂臂機器人之運動學分析機器人之運動學分析機器人之運動學分析機器人之運動學分析

運動學,就是描述物體運動時之運動軌跡的一門科學,包括順向運動學與

逆向運動學。

所謂順向運動學即為給予即機器人之各關節角度值,求其端效端 (end-

effector)之方位姿態。

機構的自由度個數,關係著機構的運動情形。簡而言之,一個自由度的存

在,即表示機器手臂按照一定方向運動的能力。

再引用 D-H 座標系統方法,訂定出適當的連桿參數,使原本狀似複雜的轉

換關係變得明白簡單。

根據 Denavit-Hartenberg 法則的定義,得到以下四個連桿參數:

連桿長度(link length): a

連桿扭轉(link twist):α

連桿分出(link offset): d

關節角度(joint angle):θ

各連桿的定義及示意圖,如圖 2.6 所示:

id :沿著 iZ 計算從 1iX−到 iX 的距離

iθ :沿著 iZ 計算從 1iX−到 iX 的角度

ia :沿著 iX 計算從 1iZ−到 iZ 的距離

iα :沿著 iX 計算從 1iZ−到 iZ 的角度

圖2.6 桿件參數的定義

Page 18: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

10

由圖 2.6 可以知道由第(i-1)個座標系統經過連續的位移與旋轉來轉至第 i 個座標

系統,如下所述:

第(i-1)個座標系統沿著 1−iZ 軸位移距離 id ,使得 1−iO 與 1−iH 重合在一起。其轉換

矩陣如下:

( )

1 0 0 0

0 1 0 0,

0 0 1

0 0 0 1

i

T z dd

=

(2.1)

第(i-1)個座標系統沿著1−iZ 軸旋轉角度

iθ ,使得1−iX 軸與

iX 軸同在一直線上。其

轉換矩陣如下:

( )

=

1000

0100

00

00

,ii

ii

cs

sc

zTθθ

θθ

θ (2.2)

第(i-1)個座標系統沿著iX 軸位移距離

ia ,使得1−iO 與

iO 重合在一起。其轉換矩

陣如下:

( )

=

1000

0100

0010

001

,

ia

axT (2.3)

第(i-1)個座標系統沿著 iX 軸旋轉角度 iα ,最後使得兩個座標系統重合在一起。

轉換矩陣如下:

( )

−=

1000

00

00

0001

,ii

ii

cs

scxT

αα

ααα (2.4)

因此,轉換矩陣 i

iA

1− 最後的結果可由上面四個轉換矩陣求得

( ) ( ) ( ) ( )αθ ,,,,1xTaxTzTdzTAi

i=

− (2.5)

將上面四式代入後,可得

Page 19: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

11

=−

1000

0

1

iii

iiiiiii

iiiiiii

i

i

dcs

sacsccs

cassscc

Aαα

θθαθαθ

θθαθαθ

(2.6)

其反置矩陣如下:

1 1

1

0

( )

0 0 0 1

i i i

i i i i i i ii i

i i

i i i i i i i

c s a

c s c c s d sA A

s s s c c d c

θ θ

α θ α θ α α

α θ α θ α α

− −

− − − = =

− −

(2.7)

即為 Denavit-Hartenberg(D-H)轉換矩陣。

假設 [ ]Tzyx

ipppp 1= 為 i 座標系上的一個位置,則此位置由 i 座標系轉換

到(i-1)座標系可用以下來表示:

pApi

i

ii 11 −−= (2.8)

依照前面所敘述之方法找出各座標系統間之參數 iiii ad αθ 、、、 。根據上述之步

驟,我們將雙足機器人之各個座標系統標示如圖 2.7 所示,之後利用 DH 轉換矩

陣之步驟來求得其相關之參數 iiii ad αθ 、、、 ,系統 1 至系統間之轉換關係,列於

表 2.1 中。

圖2.7 雙臂機器人之各個座標系統標示

z1 z2

z3 x1

x2

x3

y3 y2

y1

x0

z0

y0

Page 20: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

12

表 2.1 基底座標至各 Joint 之參數表

Joint id iθ ia iα

1 1d 1θ 0 o90

2 0 2θ 2a o0

3 0 3θ 3a o0

將表 2.1 中之參數代到(2.6)式

=−

1000

0

1

iii

iiiiiii

iiiiiii

i

i

dcs

sacsccs

cassscc

Aαα

θθαθαθ

θθαθαθ

即可得到:

−=

1000

010

00

00

1

11

11

1

0

d

cs

sc

Aθθ

θθ

(2.9)

=

1000

0100

0

0

2222

2222

2

1θθθ

θθθ

sacs

casc

A (2.10)

=

1000

0100

0

0

3333

3333

3

2θθθ

θθθ

sacs

casc

A (2.11)

整理可得

[ ]

[ ]

+++++

++++

++++

=

1000

dsa)s(a0)c()s(

ca)c(asc-)s(s-)c(s

ca)c(acs)s(c-)c(c

A1223233232

2232311321321

2232311321321

3

0

θθθθθθθ

θθθθθθθθθθθ

θθθθθθθθθθθ

(2.12)

Page 21: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

13

今假設座標系 3 的原點為 [ ]T3 1000q = (2.13)

則此點相對於座標系 0 為 [ ]1qqqq zyx

0= (2.14)

由此可知

[ ]

[ ]

+++

++

++

=

=

⇒=

1

dsa)s(a

ca)c(as

ca)c(ac

1

0

0

0

A

1

q

q

q

qAq122323

223231

223231

3

0

z

y

x

3

3

00

θθθ

θθθθ

θθθθ

(2.15)

其中 [ ]223231x ca)c(acq θθθθ ++= (2.16)

[ ]223231y ca)c(asq θθθθ ++= (2.17)

1

2

1

x

ytan

c

s

q

θ

θ==⇒

qx

qtan

y1-

1 =⇒ θ (2.18)

[ ]223231x ca)c(acq θθθθ ++= θθθθ

ca)c(ac

q2323

1

x ++=⇒ (2.19)

[ ]223231y ca)c(asq θθθθ ++= θθθθ

ca)c(as

q2323

1

y++=⇒ (2.20)

dsa)s(aq 22323z +++= θθθ θθθ sa)s(ad-q 23231z ++=⇒ (2.21)

令 1zy

1

y

x

1

xx d-qp )

s

qp(or

c

qp ===

θθ (2.22)

則 23322y

23322x

sasap

cacap

θθ

θθ

+=

+= (2.23)

332

2

3

2

2

2

y

2

x ca2aaapp θ++=+⇒ (2.24)

32

2

3

2

2

2

y

2

x1-

3a2a

a-a-ppcos

+=⇒θ (2.25)

將 23322y

23322x

sasaP

cacaP

θθ

θθ

+=

+=

展開求 2θ

⇒ y2332233

x2332332

p)sca(a)cs(a

p)ss(a-)cca(a

=++

=+

θθθθ

θθθθ (2.26)

Page 22: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

14

332

332y33x

2

332

2

3

2

2

33y332x

2

ca2aaa

)ca(apsap-s

ca2aaa

sap)ca(apc

θ

θθθ

θ

θθθ

++

++=

++

++=

(2.27)

得 )c,tan2(s 222 θθθ A= (2.28)

Page 23: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

15

第三章第三章第三章第三章 監控系統監控系統監控系統監控系統與與與與程式設計程式設計程式設計程式設計

3.1 監控系統之設計監控系統之設計監控系統之設計監控系統之設計

本論文之監控系統是使用 Visual C++來撰寫,應用 MFC(Microsoft

Function Class)來設計視窗架構,設計所需要的物件及功能,圖 3.1 便為本

研究所設計之監控系統。

圖3.1 監控系統

3.2 OpenGL 虛擬實境虛擬實境虛擬實境虛擬實境

隨著計算機圖形學的發展與不斷完善,三維圖形的應用也越來越廣泛,三

維圖形應用軟體也得到相應的發展。作為目前較為領先的主流 3D 軟體,OpenGL

是一種比較完善的三維開放圖形標準,它作為一種硬體圖形的軟體界面,顯著

的優點是作為一個獨立的工作平台,獨立的硬體設備、窗口系統和作業系統,

用它編寫的軟體可以在 UNIX、Windows95 OSR2、Window 98/NT 等系統間實現。

但是,OpenGL 僅是一個包含 120 多個圖形函數組成的圖形庫,它缺乏面向

對象能力,不符合當前流行的軟體設計思想,況且它與作業系統之間的連接煩

瑣,每次創建 OpenGL 應用程式時都需要重新書寫連接代碼,而無法共享這部分

Page 24: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

16

公用代碼,另外在 Visual C++環境中編程時,它把對像素架構描述、著色環境

創建等代碼都添加到視類中處理,不符合軟體編程習慣,不利於了解程式編製

的流程、思路和思想。因此,OpenGL 的特點是它支援了高品質的顯像方式,因

此利用它可以建立高水準的電腦 3D 繪圖。不過它的缺點就是速度相對的比較緩

慢。

OpenGL 是近幾年發展起來的一個性能卓越的三維圖形平台。它的前身是由

SGI 公司為其圖形工作站開發的 IRIS GL,後來 SGI 和微軟共同開發了 Windows

NT 下的新版本,即 OpenGL1. 1,並把它集成到 Windows95 OSR2 中。現在

OpenGL 以動態連接庫形式掛接到 Windows NT 3. 51、Windows NT 4. 0 和

Windows OSR2、Windows 98 等環境中,並把 OpenGL 圖形庫封裝在 Visual C++2.

0 及其以上版本中,開發者可以在多種硬體平台及作業系統下方便地利用這個

圖形庫,創建出接近光線跟蹤的高品質靜止或動畫的三維彩色圖像,而且要比

光線跟蹤算法快一個數量級。

為了利用 Visual C++的強大功能來實現對 OpenGL 三維圖形的繪製,

Windows 提供了 OpenGL32. DLL 和 GLU32. DLL 動態連接庫,Visual C++包含了

GL 庫(opengl32. Lib)、輔助庫(glaux. lib)和實用庫(glu32. lib),

並且 OpenGL 在網路上工作時,顯示圖形的計算機(客戶機)可以不是營運圖形

程式的計算機(伺服器),客戶機與伺服器可以是不同類型的機器,只要兩者

服從相同的協議。另外,OpenGL 並引入了一些新的功能,如︰包含 OpenGL 調

用,改進印表機支持,提升頂點數組的新特性,提升頂點位置、法線、顏色及

色彩指數、紋理坐標、多邊形邊緣標識的傳輸速度,引入新的紋理特性等等。

這些都是為了實現高品性、交互式三維圖像開發提供了良好的便利條件。

三維圖形及動畫場景的顯示,就是把所建立的三度空間模型,經過計算機

的複雜處理,最終在計算機二維螢幕上顯示的過程。一般,設計三維圖形軟體

要經過以下步驟︰

A、圖元建立三維模型。(以 OpenGL 為例,OpenGL 是一個開放的圖形程式

庫,它可在 UNIX、Windows 95、Windows NT 等環境下運作)。

B、設置觀看物體的窗口和觀看點(視點)。

C、設定各物體的屬性(如色彩、光照、紋理映射等)。

D、如果要物體動起來,還要進行圖形變換(如幾何變換、視窗變換和投影

Page 25: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

17

變換等)。

E、三維圖形的二維化。

其流程如下︰利用 OpernGL 的函數, 我們較容易按步驟實現三維圖形處理

軟體的設計。

1. 建立三維模型

建立三維模型,就是在三維坐標系中畫三維場景。利用畫點(Point)、畫

線(Line)、畫多邊形(Polygon)等函數可以建立複雜的空間模型。在表示

三度空間時,一般用齊次坐標(Homogeneous Coordinate)。在實際應用

時一般把一系列頂點(Vertex )組織起來以構成物體或圖元。

2. 置窗口和視口

圖形顯示的區域稱為顯示窗口,其流程順序為︰

定義一個窗口,一般由以下步驟完成︰設置窗口模式,設置窗口位置、大

小,初始化窗口,窗口顏色設置。

清理窗口是指把窗口清成某種顏色。要觀看場景,也需要一個窗口,即視

口。通俗地講,視口變大,場景就被放大,視口變小,場景就被縮小。

3. 設置光照

要使物體具有真實感,就要對物體進行光照處理。在計算機圖形學中,物

體的真實感應考慮兩種元素︰光源和物體材質。

光源︰對人眼而言,光線照射物體可以看見兩種光︰反射光和透射光,其

中反射光有三個成分︰環境反射、漫反射和鏡面反射。

光源的實現過程為︰較常用的有,環境光、漫反射光、鏡面反射光、光源

位置、點光源聚光指數、點光源聚光指數、點光源發

散角。

材質︰在 OpenGL 中,用材料對光的三原色(紅綠藍)的反射率大小來定義材

料的顏色。與光源相對應,材料的顏色,也分為環境色,漫反射色

和鏡面反射色,由此決定該材料對應不同的光呈現出不同的反射

率。由於人所看到物體的顏色是光源發出的光經物體反射後進入眼

睛的顏色。所以,物體的顏色是光源的環境光,漫反射光和鏡面反

射光與材料的環境色,漫反射色和鏡面反射色的綜合。例如︰

OpenGL 的光源色是(LR,LG,LB),材質色為(MR,MG,MB),那

Page 26: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

18

麼,在忽略其他反射效果的情況下,最終進入眼睛的顏色是

(LR*MR,LG*MG,LB*MB)。

4. 動畫

就是把三維物體透過各種三維圖形變換,把它投影到視口中。OpenGL 提供

在雙重緩衝區模式下存取動畫。計算機在顯示前台緩存中的畫面同時,在

後台緩存中繪製下一個畫面,需要顯示後台緩存中之畫面時,只要用函數

把前後台緩衝存取交換即可。圖形變換常用的函數,有︰平移、旋轉、放

縮。

三維圖形是透過二維視口(螢幕)來觀看的,因此,必須對三維圖形進行

投影變換和透視變換。在 OpenGL 程式中,資料是由點、線還有多邊形所組成

的,而在本論文中我們使用 OpenGL 3D/VR 來展現打磨機之虛擬實境。

圖3.2所示為OpenGL處理指令的流程,當應用程式發出OpenGL API函數呼叫

時,指令會被放到指令緩衝區中(command buffer)。緩衝區最終會填滿指令、

座標點資料、材質資料等等。當緩衝區清空(flush)時,不管是經由程式指令

或驅動程式本身的設計,指令與資料都會被傳到程序中的下一個階段。座標點

(vertex)資料會先被轉換並進行燈光運算,用以描述物體幾何位置的座標點會

針對物體的位置與方向進行運算,同時也會進行光影計算,以得出每個點上的

顏色該有多亮。完成這個程序後,就把資料提供給程序的rasterization(掃描顯

像)部份。掃描顯像將依據幾何位置、顏色與材質資料建立影像。然後影像會

被放到frame buffer中。frame buffer是圖形顯示裝置(例如:繪圖卡、顯示卡)

的記憶體,因此這個階段會把影像顯示到螢幕上。

圖3.2 OpenGL處理指令之流程圖

在 OpenGL 的繪圖流程,首先必須架構出各零件部位的尺寸機構圖,在本研究

中採用繪製 AUTO CAD 三視圖的方式達成(附錄 A),藉由各部位零件圖的完

成如圖 3.3-3.7,最後可以經過組合,完成圖 3.8 的 OpenGL 機器人完整機構

圖。

Page 27: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

19

我們以其中的驅動元件伺服馬達為例,介紹如何畫出 OpenGL 的 3D 虛擬實

境圖像於附錄 B:

圖 3.3 OpenGL機器人的手 圖 3.4 OpenGL機器人的腳踝

圖 3.5 OpenGL機器人的大腿 圖 3.6 OpenGL機器人的左腳

圖3.7 OpenGL機器人的身體

Page 28: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

20

圖 3.8 OpenGL機器人的全身展示圖 圖 3.9 OpenGL機器人的全身線架構圖

圖 3.10 OpenGL機器人的馬達圖 圖 3.11 OpenGL機器人的馬達線架構圖

3.3 程式設計程式設計程式設計程式設計

3.3.1 手部逆向運動方程手部逆向運動方程手部逆向運動方程手部逆向運動方程

藉由 OpenGL 的繪圖功能以及前述之逆向運動方程的推導,我們可以透過

Visual C++設計程式,使得實體機器人的影像圖,得以用 3D/VR 模擬出來。

/////////////////////////////////////////////////////

///////////////////手部運動方程//////////////////////

/////////////////////////////////////////////////////

float ha,hb,hc,hd,he,hk;

float lqx,lqy,rqx,rqy;

Page 29: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

21

float HLangle1,HLangle2,HLangle3;

float HRangle1,HRangle2,HRangle3;

///////////////////////左手//////////////////////////

if(hlqx==0.0f && hlqy==0.0f)

HLangle1=0.0f;

else

HLangle1=float(atan(hlqy/hlqx));

if(cos(HLangle1)<=0.01)

lqy=float(hlqy/sin(HLangle1));

else

lqy=float(hlqx/cos(HLangle1));

lqx=hlqz-hd1;

hk=((lqx*lqx+lqy*lqy-ha2*ha2-ha3*ha3)/(2*ha2*ha3));

if(fabs(hk)>=1.0f) //加上限制條件,防止角度發散

HLangle3=0.0f;

else

HLangle3=float(acos(hk)); //cos有兩組解,需視設定座標取正或負

ha=float((lqx*(ha2+ha3*cos(HLangle3))+lqy*ha3*sin(HLangle3))/(ha2*ha2+ha3*ha3

+2*ha2*ha3*cos(HLangle3)));//cos(1)

hb=float((-

lqx*ha3*sin(HLangle3)+lqy*(ha2+ha3*cos(HLangle3)))/(ha2*ha2+ha3*ha3+2*ha2*h

a3*cos(HLangle3)));//sin(1)

if(fabs(ha)<=0.01 && fabs(hb-1)<=0.01) //加上限制條件,防止分母為零

HLangle2=pi/2;

else

HLangle2=float(atan2(hb,ha));

Hleft1=-HLangle1*(180.0f/pi)-90.0f;

Hleft2=-HLangle2*(180.0f/pi);

Page 30: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

22

Hleft3=HLangle3*(180.0f/pi);

///////////////////////右手//////////////////////////

if(hrqx==0.0f && hrqy==0.0f)

HRangle1=0.0f;

else

HRangle1=float(atan(hrqy/hrqx));

if(cos(HRangle1)<=0.01)

rqy=float(hrqy/sin(HRangle1));

else

rqy=float(hrqx/cos(HRangle1));

rqx=hrqz-hd1;

hc=((rqx*rqx+rqy*rqy-ha2*ha2-ha3*ha3)/(2*ha2*ha3));

if(fabs(hc)>=1.0f) //加上限制條件,防止角度發散

HRangle3=0.0f;

else

HRangle3=float(acos(hc)); //cos有兩組解,需視設定座標取正或負

hd=float((rqx*(ha2+ha3*cos(HRangle3))+rqy*ha3*sin(HRangle3))/(ha2*ha2+ha3*ha

3+2*ha2*ha3*cos(HRangle3)));//cos(1)

he=float((-

rqx*ha3*sin(HRangle3)+rqy*(ha2+ha3*cos(HRangle3)))/(ha2*ha2+ha3*ha3+2*ha2*

ha3*cos(HRangle3)));//sin(1)

if(fabs(hd)<=0.01 && fabs(he-1)<=0.01) //加上限制條件,防止分母為零

HRangle2=pi/2;

else

HRangle2=float(atan2(he,hd));

Hright1=HRangle1*(180.0f/pi)+90.0f;

Hright2=HRangle2*(180.0f/pi);

Hright3=-HRangle3*(180.0f/pi);

Page 31: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

23

////////////////////顯示座標///////////////////

fprintf(angle,"Hleft1=%f ",Hleft1);

fprintf(angle,"Hleft2=%f ",Hleft2);

fprintf(angle,"Hleft3=%f ",Hleft3);

fprintf(angle,"Hright1=%f ",Hright1);

fprintf(angle,"Hright2=%f ",Hright2);

fprintf(angle,"Hright3=%f \n",Hright3);

}

其中,hlqx、hlqy、hlqz分別為端效器相對於原點的向量,然而,在程式設

計上,許多擁有兩組解的反三角函數無法在運算過程中得到另一組答案,因此

在程式加上許多if、else迴圈,限制與需求不符合的解。而程式之中,也因為逆

向運動方程與OpenGL的座標定義不同,因此程式需要做角度轉換,在程式後段

也以顯示座標的方式,來檢查角度是否正確。

3.3.2 使用使用使用使用 Data file 驅動機器人驅動機器人驅動機器人驅動機器人

圖 3.12 Data file 驅動程式流程圖

為了讓 3D/VR 模擬能隨著影像中參考點的位置變化而移動,因此把圖片中

記錄到的參考點位置,透過 Data file 讀入程式之中,讓模擬能夠同步化。以下

為讀入參考點座標的程式。

///////////////// 讀資料 ///////////////////////

inputfile>>Data[number].rnumx>>Data[number].rnumy>>Data[number].lnumx

>>Data[number].lnumy>>Data[number].wnumx>>Data[number].wnumy

Page 32: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

24

>>Data[number].rpnumx>>Data[number].rpnumy>>Data[number].lpnumx

>>Data[number].lpnumy>>Data[number].zmpnumx>>Data[number].zmpnumy

>>Data[number].lqnumx>>Data[number].lqnumy>>Data[number].lqnumz

>>Data[number].rqnumx>>Data[number].rqnumy>>Data[number].rqnumz;

rfoot_z=Data[number].rnumx;

rfoot_y=Data[number].rnumy;

lfoot_z=Data[number].lnumx;

lfoot_y=Data[number].lnumy;

waist_z=Data[number].wnumx;

waist_y=Data[number].wnumy;

rpz=Data[number].rpnumy;

rpy=-Data[number].rpnumx;

lpz=Data[number].lpnumy;

lpy=-Data[number].lpnumx;

zmpx=Data[number].zmpnumx;

zmpy=Data[number].zmpnumy;

hlqx=Data[number].lqnumx;

hlqy=Data[number].lqnumy;

hlqz=Data[number].lqnumz;

hrqx=Data[number].rqnumx;

hrqy=Data[number].rqnumy;

hrqz=Data[number].rqnumz;

Page 33: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

25

第四章第四章第四章第四章 模擬驗證與結果分析模擬驗證與結果分析模擬驗證與結果分析模擬驗證與結果分析

在本論文中,針對所購之KHR-1機器人的動態作分析,首先拍攝下機器人

的手部運動影像,再將其分割為數個影像片段。我們可以分別處理過圖片後從

中取出機器人各點的變化然後得知其軌跡路徑,並以此為依據推算到達定點所

需的角度。

圖4.1 實體機器人之座標定義

4.1 模擬驗證模擬驗證模擬驗證模擬驗證────動作一動作一動作一動作一

X

Y

Z Z

Y

X

Page 34: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

26

圖4.2 機器人動作一拍攝圖

圖4.3 機器人動作一模擬圖

Page 35: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

27

4.2 模擬驗證模擬驗證模擬驗證模擬驗證────動作二動作二動作二動作二

圖4.4 機器人動作二拍攝圖

Page 36: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

28

圖4.5 機器人動作二模擬圖

Page 37: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

29

第五章第五章第五章第五章 結論與未來展望結論與未來展望結論與未來展望結論與未來展望

本論文為國科會計畫「仿生機器人之建構」第一期之研究,目的在於採用

逆向工程原理,架構出機器人之機構及監控介面,採用影像擷取方式得到各關

節參考點位置,並研究其抓取軌跡之動作。

在研究中,我們成功的利用 Visual C++建構機器人的監控系統,並使用

OpenGL 實現 3D/VR 虛擬實境,使模擬機器人在抓取動作時,更能掌控機器人的

動向以及運動方程推導的驗證。現今機器人為許多國家、學校致力發展的學

問,在仿生擬人化方面以日本的成就最為卓著,日本的各大企業均有其代表的

作品,有的具有高自由度以及平滑的動作,有的作為接待機器人,能夠根據人

類的聲音作應對。目前我們只是在剛起步的階段,或許和這領域的佼佼者相比

之下微不足道,但是希望從現在開始努力發展,在未來能夠迎頭跟上他們的腳

步。

Page 38: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

30

參考文獻參考文獻參考文獻參考文獻

[1]曾堃豪,黃榮興,“雙足機器人之建構及其動態行為之探索”,逢甲大學自

動控制工程學系碩士論文,民國 95 年。

[2]位元文化,“Windows Me 程式設計入門”,2000 年 9 月,初版一刷。

[3]晉茂林,“機器人學”,台北市 : 五南, 民 89 。

[4]陳正凱,“C/C++入門與應用”, 臺北市 : 知城數位科技, 2001[民

90] 。

[5]H. Asada and J.-J. E. Slotine ,“Robot analysis and control ”,

New York, N.Y. : J. Wiley, c1986 。

Page 39: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

31

附錄附錄附錄附錄 A

Page 40: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

32

Page 41: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

33

Page 42: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

34

Page 43: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

35

Page 44: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

36

Page 45: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

37

Page 46: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

38

Page 47: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

39

Page 48: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

40

Page 49: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

41

附錄附錄附錄附錄 B

glPushMatrix();

{

glRotatef(xRot, 1.0f, 0.0f, 0.0f);//視角旋轉角度

glRotatef(yRot, 0.0f, 1.0f, 0.0f);//視角旋轉角度

glRotatef(zRot, 0.0f, 0.0f, 1.0f);//視角旋轉角度

glPushMatrix();//馬達

{

glTranslatef(0.0f,0.0f,0.0f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(77.0f,77.0f,77.0f);

drawRetc(21.0f,41.0f,35.0f);

glPushMatrix();

{

glTranslatef(0.0f,10.0f,19.5f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(77.0f,77.0f,77.0f);

drawCir(10.5f,4.0f,35.0f);

glPushMatrix();

{

glTranslatef(0.0f,0.0f,2.75f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(77.0f,77.0f,77.0f);

drawCir(5.5f,1.5f,35.0f);

}

glPopMatrix();

glPushMatrix();

{

glTranslatef(0.0f,-11.5f,0.0f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(77.0f,77.0f,77.0f);

drawCir(6.0f,4.0f,35.0f);

}

glPopMatrix();

glPushMatrix();

{

glTranslatef(0.0f,0.0f,5.5f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(0.0f,0.0f,255.0f);

drawCir(3.0f,4.0f,35.0f);

glPushMatrix();//齒輪 1

{

glTranslatef(0.0f,0.0f,0.0f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(255.0f,0.0f,0.0f);

Page 50: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

42

drawCir(10.0f,2.0f,25);

glPushMatrix();

{

glTranslatef(0.0f,0.0f,1.5f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(0.0f,255.0f,0.0f);

drawCir(5.0f,1.0f,25);

}

glPopMatrix();

glPushMatrix();

{

glTranslatef(0.0f,0.0f,-1.5f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(0.0f,255.0f,0.0f);

drawCir(5.0f,1.0f,25);

}

glPopMatrix();

}

glPopMatrix();

}

glPopMatrix();

}

glPopMatrix();

glPushMatrix();

{

glTranslatef(0.0f,10.0f,-18.25f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(77.0f,77.0f,77.0f);

drawCir(6.25f,1.5f,35.0f);

glPushMatrix();

{

glTranslatef(0.0f,0.0f,-1.25f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(77.0f,77.0f,77.0f);

drawCir(5.0f,1.0f,35.0f);

}

glPopMatrix();

}

glPopMatrix();

glPushMatrix();

{

glTranslatef(0.0f,10.0f,-22.0f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(0.0f,0.0f,255.0f);

drawCir(3.0f,4.0f,35.0f);

glPushMatrix();//齒輪 2

{

Page 51: 感謝 - auto.fcu.edu.t · 本論文之研究目的,主要是在建庂一雙手機器人探索雙手機器人的動幠行 為及架庂其機器人廇控系統。在雙手機器人的移動軌跡規劃中,我們採用直接

43

glTranslatef(0.0f,0.0f,0.0f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(255.0f,0.0f,0.0f);

drawCir(10.0f,2.0f,25);

glPushMatrix();

{

glTranslatef(0.0f,0.0f,1.5f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(0.0f,255.0f,0.0f);

drawCir(5.0f,1.0f,25);

}

glPopMatrix();

glPushMatrix();

{

glTranslatef(0.0f,0.0f,-1.5f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(0.0f,255.0f,0.0f);

drawCir(5.0f,1.0f,25);

}

glPopMatrix();

}

glPopMatrix();

}

glPopMatrix();

glPushMatrix();

{

glTranslatef(0.0f,0.0f,11.5f);

glRotatef(0.0f,0.0f,1.0f,0.0f);

glColor3ub(77.0f,77.0f,77.0f);

drawRetc(19.0f,45.0f,2.0f);

}

glPopMatrix();

}

glPopMatrix();

}

glPopMatrix();

根據以上程式碼,將可得到圖 3.10 的馬達圖形。