--- title: 【軟體】順向運動學求法 tags: TTennis Pickup Robot disqus: hackmd --- <h1 style="text-align: center; color: orange;"> 🛠️ 【軟體】High-DoF Robots 🛠️ </h1> <h2 style="text-align: center; color: skyblue;">順向運動學求法 </h2> 機器人運動學可分為兩種: * **順向運動學(forward kinematics)** 已知各關節角度或伸縮長度,推算末端的座標的過程。 * **逆向運動學(backward kinematics)** 已知機器人的末端目標點,回推各關節應該如何旋轉或伸縮。 本章介系統性求正向運動學的方法 -- Denavit-Hartenberg Conevntion。 </br> <h3><font color = "magenza"> 4-1. 術語定義 </font></h3> 以下名詞都會用英文表示,避免歧義。 ![](https://i.imgur.com/BgRfpty.png =48%x) ![](https://i.imgur.com/HueafYN.png =48%x) * <font color="yellow"> Joint </font>:**有自由度的點**。分為有 revolute 和 prismatic 兩種。 * revolute:自由度是旋轉。實際機構就是各種馬達。 * prismatic:自由度是伸縮。實際機構有線性滑軌、滑塊等。 * <font color="yellow"> link</font>:**連接兩點的物件**。本身不具有自由度。 * <font color="yellow"> frame</font>:**坐標系**。通常我們的 frame 會以各個 joint 為參考點。 * <font color="yellow"> end effector</font>:**機器人末端接點**。左圖中是 gripper,右圖中是 frame4 的原點。 </br> <h3><font color = "magenza"> 4-2. Denavit-Hartenberg Convention </font></h3> 這個方法分為三大步驟: 1. 標示 joint frame 2. 建立 parameters table 3. 代公式 homogeneous transformation matrix (HTM) </br> ### <font color = "pink">4-3-1. 畫圖 Joint & Link</font> 首先要將機器人簡化成如下的座標軸關聯圖。 ![](https://i.imgur.com/Znyd2tl.png =80%x) 有時為標示清楚 revolute joint 的軸向會加上平面,但這看個人習慣。 ![](https://i.imgur.com/orJTsEl.png =80%x) </br> ### <font color = "pink">4-3-2. 標示 Frame</font> 以下是 Convention : * 所有 frame 都是<font color = "yellow">右手座標系</font>。 * <font color = "yellow">Z 軸必須是轉動軸或伸縮軸</font>,end effector 時則自定義。 * <font color = "yellow">X 軸必須垂直於當前的 Z 軸與上一個 frame 的 Z 軸</font>。 * 起頭的 frame 0 的 X 軸,只要注意不要和 frame 1 的 Z 軸同向。 * 最後的 frame n 的 X 軸,只要注意不要和 frame n-1 的 Z 軸。 * 當 X、Z 軸確定時,根據右手法則 Y 軸必有唯一解。 * 兩相鄰 frame M 和 M-1 的原點不能在 M-1 的 Y 軸上有偏移。 如果可以透過 M-1 的旋轉使得該 Y 軸向的原點偏移為零則允許。 </br> 以下是建立順序: 1. 根據 joint 軸向標出所有 frame 的 Z 軸,起頭和最後的 frame 的 Z 軸自定義。 2. 標出所有 frame 的 X 軸,注意 X 不可和相鄰的 frame 之 Z 軸同向。 3. 以右手法則標出所有 Y 軸。 4. 檢查相鄰坐標系沒有 Y 軸向上的偏移,有的話回第二步重建 frame。 </br> ### <font color = "pink">4-3-3. parameters table and HTM</font> | $\theta$ | $\alpha$ | $d$ | $l$ | |:------------:|:------------:|:--------------------:|:--------------------------:| | Z 軸旋轉角度 | X 軸旋轉角度 | frame 中心 的 Z 軸偏移 | frame 中心的 X 軸偏移 | 這邊所有轉幾度、移了多少都是以前一個坐標系為參考。即 $X_m^{m-1}$。 ![image](https://hackmd.io/_uploads/ByjJXKdoA.png =30%x) 記錄完後就能計算 DH Transformation。 ![image](https://hackmd.io/_uploads/ryA2fKdo0.png =60%x) 最後就能得出 end effector 的三維姿態。 其中旋轉矩陣 $R^0_n$ 是 end effector 的方向、$d^0_n$ 是 end effector 的位置。 ![image](https://hackmd.io/_uploads/ByT-QYuoC.png =60%x ) </br> </br> </br> </br> </br>