工業(yè)機(jī)器人坐標(biāo)變換計(jì)算與編程是工業(yè)機(jī)器人控制的關(guān)鍵技術(shù),本書通過5種典型結(jié)構(gòu)的工業(yè)機(jī)器人介紹坐標(biāo)正變換和逆變換計(jì)算方法和程序示例。所選機(jī)器人包括6自由度和7自由度的關(guān)節(jié)式工業(yè)機(jī)器人,以及6自由度并聯(lián)工業(yè)機(jī)器人。每個(gè)程序示例都提供了詳細(xì)的坐標(biāo)變換公式推導(dǎo)過程和完整的源程序,內(nèi)容涉及機(jī)構(gòu)學(xué)、解析幾何、線性代數(shù)、數(shù)值計(jì)算和計(jì)算機(jī)編程等多方面內(nèi)容。程序示例使用Java語言編寫,可以在安卓操作系統(tǒng)平板計(jì)算機(jī)或手機(jī)上運(yùn)行。本書介紹的坐標(biāo)變換計(jì)算方法和程序示例也可以應(yīng)用于實(shí)際的工業(yè)機(jī)器人控制系統(tǒng)。
本書可作為機(jī)器人工程、智能制造工程、工業(yè)自動化專業(yè)“機(jī)器人控制技術(shù)”及相近課程的本科和研究生教材,也可作為工業(yè)機(jī)器人控制系統(tǒng)開發(fā)人員的參考書。
工業(yè)機(jī)器人坐標(biāo)變換計(jì)算與編程是工業(yè)機(jī)器人控制的關(guān)鍵技術(shù),本書通過5種典型結(jié)構(gòu)的工業(yè)機(jī)器人介紹坐標(biāo)正變換和逆變換計(jì)算方法和程序示例。所選機(jī)器人包括6自由度和7自由度的關(guān)節(jié)式工業(yè)機(jī)器人,以及6自由度并聯(lián)工業(yè)機(jī)器人。每個(gè)程序示例都提供了詳細(xì)的坐標(biāo)變換公式推導(dǎo)過程和完整的源程序,內(nèi)容涉及機(jī)構(gòu)學(xué)、解析幾何、線性代數(shù)、數(shù)值計(jì)算和計(jì)算機(jī)編程等多方面內(nèi)容。
工業(yè)機(jī)器人的運(yùn)動由控制系統(tǒng)控制產(chǎn)生,控制系統(tǒng)的計(jì)算機(jī)控制程序?qū)崿F(xiàn)機(jī)器人操作工具的位置和姿態(tài)的運(yùn)動控制。應(yīng)用最廣泛的關(guān)節(jié)式工業(yè)機(jī)器人或并聯(lián)機(jī)器人通常具有6個(gè)或7個(gè)自由度,它的運(yùn)動控制需要完成復(fù)雜的坐標(biāo)逆變換計(jì)算,由機(jī)器人工具在直角坐標(biāo)系的位置和姿態(tài)計(jì)算關(guān)節(jié)轉(zhuǎn)角。它涉及機(jī)構(gòu)學(xué)、解析幾何、線性代數(shù)、數(shù)值計(jì)算和計(jì)算機(jī)編程等多方面內(nèi)容,是機(jī)器人控制的核心關(guān)鍵技術(shù)。
作者于2016年開始在北京航空航天大學(xué)的數(shù)控和伺服技術(shù)實(shí)驗(yàn)室網(wǎng)站上(www.nc-servo.com)發(fā)布自己開發(fā)的系列虛擬工業(yè)機(jī)器人控制程序(PAD ROBOT),這些控制程序可在安卓操作系統(tǒng)手機(jī)和平板計(jì)算機(jī)上運(yùn)行。目前已發(fā)布15種關(guān)節(jié)式機(jī)器人、3種雙臂機(jī)器人和3種并聯(lián)機(jī)器人的控制程序,以便于進(jìn)行工業(yè)機(jī)器人教學(xué)和編程練習(xí)。其中一種7自由度機(jī)器人坐標(biāo)變換方法和程序被國內(nèi)著名工業(yè)機(jī)器人控制器生產(chǎn)廠商采用,應(yīng)用于實(shí)際的工業(yè)機(jī)器人產(chǎn)品之上。本書選取了其中5種結(jié)構(gòu)工業(yè)機(jī)器人的坐標(biāo)逆變換程序作為編程示例,向讀者介紹工業(yè)機(jī)器人控制技術(shù)中的坐標(biāo)逆變換計(jì)算方法和編程技術(shù)。所選機(jī)器人包括6自由度和7自由度的關(guān)節(jié)式工業(yè)機(jī)器人,以及6自由度并聯(lián)工業(yè)機(jī)器人,通過程序示例,讀者可以更容易理解和掌握各種復(fù)雜的坐標(biāo)逆變換計(jì)算方法和編程方法。
本書向讀者介紹了3種關(guān)節(jié)式工業(yè)機(jī)器人坐標(biāo)逆變換計(jì)算方法:
1)幾何法:該方法利用機(jī)器人結(jié)構(gòu)的幾何關(guān)系,通過分解位置和姿態(tài)變量,完成關(guān)節(jié)式工業(yè)機(jī)器人的坐標(biāo)逆變換計(jì)算。
2)牛頓拉普森迭代法 :該方法是一種數(shù)值計(jì)算方法,本書采用牛頓拉普森迭代法完成6自由度或7自由度關(guān)節(jié)式機(jī)器人坐標(biāo)逆變換計(jì)算方法,包括工業(yè)機(jī)器人坐標(biāo)逆變換非線性方程組和雅可比矩陣的構(gòu)建方法。
3)復(fù)合迭代法:該方法是作者研究獨(dú)創(chuàng)的一種數(shù)值計(jì)算方法。利用機(jī)器人結(jié)構(gòu)的幾何關(guān)系,分解機(jī)器人的位置和姿態(tài)變量,通過代數(shù)迭代和3元牛頓拉普森方程的復(fù)合迭代組合,可以完成所有復(fù)雜結(jié)構(gòu)工業(yè)機(jī)器人的坐標(biāo)逆變換計(jì)算。這種計(jì)算方法比直接牛頓拉普森迭代法更加簡便。
此外,本書還結(jié)合兩種方法完成了一種6自由度六桿并聯(lián)機(jī)器人的坐標(biāo)變換方法和編程:首先用牛頓拉普森迭代法完成坐標(biāo)正變換計(jì)算,然后用幾何法完成坐標(biāo)逆變換計(jì)算。
本書的主要內(nèi)容如下:
1)第1章為概述,介紹了本書的內(nèi)容概要和特點(diǎn)。
2)第2章介紹工業(yè)機(jī)器人控制系統(tǒng)軟硬件結(jié)構(gòu)和控制系統(tǒng)的控制原理。
3)第3章介紹使用幾何法完成一種典型6自由度關(guān)節(jié)式機(jī)器人坐標(biāo)變換的計(jì)算方法和程序示例1。
4)第4章介紹使用幾何法完成一種6自由度手腕關(guān)節(jié)偏移結(jié)構(gòu)機(jī)器人坐標(biāo)變換的計(jì)算方法和程序示例2。
5)第5章在第4章的基礎(chǔ)上,改變關(guān)節(jié)J4和J5的旋轉(zhuǎn)軸初始布置方向,介紹使用幾何法完成一種6自由度手腕關(guān)節(jié)偏移結(jié)構(gòu)機(jī)器人坐標(biāo)變換的計(jì)算方法和程序示例3。
6)第6章介紹使用牛頓拉普森迭代法完成一種7自由度關(guān)節(jié)式機(jī)器人坐標(biāo)變換的計(jì)算方法和程序示例4。
7)第7章介紹一種六桿并聯(lián)機(jī)器人坐標(biāo)逆變換計(jì)算方法和牛頓拉普森數(shù)值迭代坐標(biāo)正變換計(jì)算方法,以及程序示例5。
8)第8章介紹一種6自由度關(guān)節(jié)式機(jī)器人的復(fù)合迭代坐標(biāo)逆變換方法和程序示例6。
9)附錄列出了全部程序示例的完整源程序,便于讀者學(xué)習(xí)和進(jìn)行編程應(yīng)用。結(jié)合本書的理論講解,讀者可以利用本書提供的編程示例,編寫自己的坐標(biāo)變換計(jì)算程序并進(jìn)行驗(yàn)證。本書程序示例是使用Java語言編寫的,使用了與C語言相同的指令集,可以直接轉(zhuǎn)換成C語言程序。
書中難免有疏漏和不足之處,敬請各位讀者批評指正。
作者前言
高等院校教師
第1章概述/1
11工業(yè)機(jī)器人控制與坐標(biāo)變換計(jì)算方法/1
12本書內(nèi)容與特點(diǎn)/2
13編程環(huán)境和程序示例/2
第2章關(guān)節(jié)式工業(yè)機(jī)器人結(jié)構(gòu)和控制
系統(tǒng)/3216自由度關(guān)節(jié)式工業(yè)機(jī)器人結(jié)構(gòu)和
控制系統(tǒng)/3
22工業(yè)機(jī)器人控制系統(tǒng)基本原理及控制
過程/3
221工業(yè)機(jī)器人控制系統(tǒng)基本原理/3
222工業(yè)機(jī)器人控制具體過程/5
第3章基于幾何法的坐標(biāo)逆變換計(jì)算
方法和程序示例1/731坐標(biāo)正變換計(jì)算方法/7
32坐標(biāo)正變換程序示例1/12
321創(chuàng)建安卓應(yīng)用程序/12
322創(chuàng)建程序參數(shù)/13
323創(chuàng)建_coord_trans_k類/14
324示例程序axis_to_space()/15
325示例程序axis_to_space_op()/18
326測試計(jì)算程序示例/20
33坐標(biāo)逆變換計(jì)算方法/23
34坐標(biāo)逆變換程序示例1/26
341示例程序tool_uvw()/26
342示例程序 space_to_axis()/28
343示例程序uvwx_to_a5()/29
344示例程序space_tool_to_axis()/30
345測試計(jì)算程序示例/31
第4章基于幾何法的坐標(biāo)逆變換計(jì)算
方法和程序示例2/3441坐標(biāo)正變換矩陣/34
42坐標(biāo)正變換程序示例2/36
421坐標(biāo)正變換程序/36
422測試計(jì)算程序示例/37
43坐標(biāo)逆變換計(jì)算方法/39
44坐標(biāo)逆變換程序示例2/43
441示例程序 tool_uvw()/43
442示例程序space_to_p3p()/45
443示例程序get_a012()/47
444示例程序get_a34p()/48
445示例程序space_to_axis()/49
446示例程序uvw_to_a5()/49
447示例程序space_tool_to_axis
(float[]pos)/50
448測試計(jì)算程序示例/51
第5章基于幾何法的坐標(biāo)逆變換計(jì)算
方法和程序示例3/5451坐標(biāo)正變換矩陣/54
52坐標(biāo)正變換程序示例3/56
521坐標(biāo)正變換程序/56
522測試計(jì)算程序示例/57
53坐標(biāo)逆變換計(jì)算方法/59
531計(jì)算關(guān)節(jié)位置P3/59
532計(jì)算關(guān)節(jié)轉(zhuǎn)角α1和α2/61
533計(jì)算關(guān)節(jié)轉(zhuǎn)角α3和α4/62
534計(jì)算關(guān)節(jié)轉(zhuǎn)角α5/62
54坐標(biāo)逆變換程序示例3/63
541示例程序tool_uvw()/63
542示例程序space_to_p3()/64
543示例程序get_a012()/65
544示例程序get_a34()/65
545示例程序space_to_axis()/66
546示例程序uvwx_to_a5()/66
547示例程序space_tool_to_axis()/67
548測試計(jì)算程序示例/68
第6章數(shù)字迭代坐標(biāo)逆變換計(jì)算方法和
程序示例4/7161坐標(biāo)正變換矩陣/71
62坐標(biāo)正變換程序示例4/74
621坐標(biāo)正變換程序/74
622測試計(jì)算程序示例/74
63坐標(biāo)逆變換計(jì)算方法/76
631牛頓拉普森迭代法/76
632建立非線性方程組/77
633計(jì)算雅可比矩陣和逆矩陣/78
634迭代計(jì)算求解sinα0,sinα1,sinα3,
sinα4,sinα5/84
635求解關(guān)節(jié)轉(zhuǎn)角α6/85
636多重解的選擇/85
64坐標(biāo)逆變換程序示例4/86
641示例程序tool_uvw()/86
642示例程序space_to_axis_sub()/87
643示例程序set_t012345()/90
644示例程序newton_func3()/91
645示例程序set_df_ds()/92
646示例程序set_df3_ds()/93
647示例程序set_jacob()/95
648示例程序uvwx_to_a6/95
649示例程序space_to_axis()/96
6410示例程序space_tool_to_axis()/97
6411測試計(jì)算程序示例/98
第7章六桿并聯(lián)工業(yè)機(jī)器人坐標(biāo)變換
計(jì)算方法和程序示例5/10271六桿并聯(lián)機(jī)器人結(jié)構(gòu)參數(shù) /103
72坐標(biāo)逆變換計(jì)算方法/103
721計(jì)算下平臺球鉸的位置/103
722計(jì)算關(guān)節(jié)轉(zhuǎn)角/104
73坐標(biāo)逆變換程序示例5/106
731機(jī)器人結(jié)構(gòu)參數(shù)/106
732示例程序set_trans101112()/107
733示例程序pos_pt_to_6p4()/108
734示例程序p4xy_to_a1()/109
735示例程序pos_p4_to_a1()/110
736示例程序pos_pt_to_6a1()/112
737測試計(jì)算程序示例/113
74坐標(biāo)正變換計(jì)算方法/115
741構(gòu)建非線性方程組/115
742建立雅可比矩陣/116
743迭代計(jì)算/117
744計(jì)算工具位置和姿態(tài)/117
75坐標(biāo)正變換程序示例6/118
751示例程序axis_6a1_to_p5()/118
752示例程序axis_6a1_to_pt()/123
753測試計(jì)算程序示例/123
第8章復(fù)合迭代坐標(biāo)逆變換計(jì)算方法和
程序示例6/12581坐標(biāo)正變換矩陣和坐標(biāo)正變換程序
示例6/125
82坐標(biāo)逆變換計(jì)算方法/126
821計(jì)算工具方向矢量/126
822復(fù)合迭代計(jì)算初始參數(shù)/126
823復(fù)合迭代計(jì)算/127
824用牛頓拉普森迭代法求解關(guān)節(jié)
轉(zhuǎn)角α0,α1,α3/128
83坐標(biāo)逆變換程序示例6/130
831示例程序tool_uvw()/131
832示例程序set_t012345()/131
833示例程序set_df_ds()/132
834示例程序space_a45_to_a013()/134
835示例程序space_to_axis()/136
836示例程序uvwx_to_a6()/138
837示例程序space_tool_to_axis()/138
84測試計(jì)算程序示例/138
附錄/142
附錄A主程序MainActivity/142
附錄B程序參數(shù)源程序/174
B1常數(shù)CONST/174
B2參數(shù)ROB_PAR/174
B3靜態(tài)變量ROB_MOVE/176
附錄C程序示例1的_coord_trans_k類源