看著機械手臂快速、精準的完成動作,內心著實澎湃,你呢?
常見的並聯式機械手臂有3個驅動軸(旋轉或移動),經由魚眼軸承連桿連接到未端效應器,帶動未端效應器移動到指定位置。這樣的設計有3個移動自由度(沒有旋轉自由度),能夠在3D空間裡自由移動,像是Delta型的3D打印機就是採用這樣的方式。
因為我自己有買了一台像上圖這樣的3D打印機,對其結構及運作方式有大致上的了解,加上我覺得這種直線移動的驅動機構,其移動速度較慢(只是感覺,不知道對不對),所以較不感興趣,而且一些機械手臂的大廠都是採用"蜘蛛式"的帶動方式,所以就使用後者來實現這次的計劃。下圖是成品圖,接下來就以它的架構來推導。
在推算機械手臂動作時,有所謂的順向運動學及逆向運動學。順向運動學是已知每一軸的旋轉或位移的量,來計算未端的位置及形態;逆向運動學則相反,是已知未端的位置,來計算毎一軸該旋轉或位移的量。
在推導串聯式的手臂時,順向運動學相對簡單於逆向運動學;而在並聯式手臂時,則是逆向運動學較簡單。這裡希望能夠以高中的程度,來分析這個模型的逆向運動學。
我將三個驅動軸分別定義為上方的第一軸,左下方的第二軸及右下方的第三軸。因為第一軸在Y軸上,沒有角度傾斜的問題,比較容易分析,所以接下來就以這一軸來推導。
為了接下來的推導,我把一些重要的節點給予代號,如下:
O:原點。
D:目標位置。
A~C:各自代表一個活動關節,其中只有A具有驅動能力。
首先,從C點向上畫一條直線,並垂直於線段 OA ,將這兩線段的交點定義為 A',形成一個三角形AA'C,如下圖。
由圖中可知,AA' 的長度等於 OA 減去 OA' ,而 A'C 的長度等於 D(目標)的Z軸高度,得知這兩個線段的長度後,即可由畢氏定理求得 AC 。
再來要求出 BC 線段投射在yz平面上的長度。為了方便說明,我先將D點移動到座標(50,50,234)。其於xy平面上如下圖所示:
C'點是C點投射在yz平面上的一點,而 BC 投射在yz平面上的長度即為 BC' 。(當C點位在y軸上,也就是說 x = 0 時,BC' 的長度等於魚眼軸承連桿的桿長,即 BC' = BC 。)
從yz平面來看,C和C'會重疊在一起。如下圖:
這樣講似乎有點難以理解,我將它的3D示意圖做成一個動畫。畫面中可以看到點 B、C 及 C' ,這三點連成一個傾斜的三角形。
△BCC'中,已知 BC (魚眼軸承連桿的長度) 及 CC' (C點的 x 軸偏移量),同樣運用畢氏定理可得 BC' 。
最後是我們實際上想知道,唯一可驅動控制的 ∠OAB。
從上圖中可知 ∠OAB = ∠OAC' + ∠C'AB 。
因為上面已經得知兩個三角形的所有邊長,這時侯就要運用第二個定理 — "餘弦定理" 來求出 ∠OAC' 及 ∠C'AB。
(arccos 在 Execl 及 C 語言中,指令都是 acos )
將這兩個角度相加,就是 ∠OAB 啦!需要注意的是,這裡的角度單位是弧度(rad)哦!
以上,我們便完成了一個軸的推算,至於其它兩軸就留至下一篇囉!