# 機器人學 ###### tags: `Robotics` ## 移動 向量表達空間關係的兩個方式 * A position in space(i.e. position vector) 以此表達body frame的原點 ![](https://i.imgur.com/SG6yv1j.png) * A vector(i.e. displacement, frame basis) 以此表達body frame上的principal axes的方向 ![](https://i.imgur.com/N0cXh2m.png) ## 轉動 > 描述{B}香對於{A}的姿態 ### Rotation Matrix 以B relative to A,即為R的三個column為由{A}看frame{B}的basis: $\hat{X}_B$, $\hat{Y}_B$, $\hat{Z}_B$ $$^A_BR= \begin{bmatrix} \hat{X}_B \cdot \hat{X}_A & \hat{Y}_B \cdot \hat{X}_A & \hat{Z}_B \cdot \hat{X}_A \\ \hat{X}_B \cdot \hat{Y}_A & \hat{Y}_B \cdot \hat{Y}_A & \hat{Z}_B \cdot \hat{Y}_A \\\hat{X}_B \cdot \hat{Z}_A & \hat{Y}_B \cdot \hat{Z}_A & \hat{Z}_B \cdot \hat{Z}_A \end{bmatrix}\quad$$ 上式的運算又稱作"direct cosines" **範例** ![](https://i.imgur.com/dr6cWNf.png) 目標為找出 $$^A_BR=\begin{bmatrix}^A\hat{X}_B&^A\hat{Y}_B&^A\hat{Z}_B\end{bmatrix}$$ $$ ^A\hat{X}_B=\begin{bmatrix} \hat{X}_B \cdot \hat{X}_A \\ \hat{X}_B \cdot \hat{Y}_A \\\hat{X}_B \cdot \hat{Z}_A \end{bmatrix}=\begin{bmatrix}0.866\\0.5\\0\end{bmatrix} 其他兩個以此類推 $$ 最後可以求出 $$^A_BR=\begin{bmatrix}0.866 & -0.5&0\\ 0.5&0.866&0\\0&0&1\end{bmatrix}$$ ### Rotaion Matrix特性 因為內積的可交換性質,前述的$^A_BR$相當於$^B_AR^T$ $$ ^A_BR=\begin{bmatrix}^A\hat{X}_B&^A\hat{Y}_B&^A\hat{Z}_B\end{bmatrix} =\begin{bmatrix}^B\hat{X}_A^T\\^B\hat{Y}_A^T\\^B\hat{Z}_A^T\end{bmatrix}=^B_AR^T $$ 將$^A_BR^T$與$^A_BR$相乘 $$^A_BR^T\ ^A_BR$$$$=^A_BR^{-1}\ ^A_BR=I_3$$ 此為orthogonal matrix * always invertible * columns: orthogonal basis * Length =1 * mutually perpendicular * Rotation matrix( R )有9個數字,但是前述條件產生6個constraints因此仍然是只有3個DOF。 * determinent =1 ### Rotaion matrix用於轉換向量之座標 original coordinate $$^BP=^BP_X\ \hat{X}_B+^BP_Y\ \hat{Y}_B+^BP_Z\ \hat{Z}_B$$ new cooridinate $$^BP=^AP_X\ \hat{X}_A+^AP_Y\ \hat{Y}_A+^AP_Z\ \hat{Z}_A$$ ![](https://i.imgur.com/7q5JG9N.png) 有以下關係 $$ ^AP=\begin{matrix}\\\\\\\end{matrix}^A{\begin{bmatrix}P_X\\P_Y\\P_Z\end{bmatrix}}= \begin{bmatrix}\hat{X}_B \cdot \hat{X}_A & \hat{Y}_B \cdot \hat{X}_A & \hat{Z}_B \cdot \hat{X}_A \\ \hat{X}_B \cdot \hat{Y}_A & \hat{Y}_B \cdot \hat{Y}_A & \hat{Z}_B \cdot \hat{Y}_A \\\hat{X}_B \cdot \hat{Z}_A & \hat{Y}_B \cdot \hat{Z}_A & \hat{Z}_B \cdot \hat{Z}_A\end{bmatrix} \begin{matrix}\\\\\\\end{matrix}^B{\begin{bmatrix}P_X\\P_Y\\P_Z\end{bmatrix}}=^A_BR\ ^BP $$ **範例** ![](https://i.imgur.com/M6xdF3n.png) ### 描述物體轉動狀態 以針對三個pricial axes旋轉matrix為基礎 針對$\hat{Z}_A$旋轉$\theta$ $$R_{\hat{Z}_A}(\theta)=\begin{bmatrix}\cos\theta & -\sin\theta & 0\\ \sin\theta & \cos\theta & 0\\ 0 & 0 &1\end{bmatrix}$$ 針對$\hat{X}_A$旋轉$\theta$ $$R_{\hat{X}_A}(\theta)=\begin{bmatrix} 1 & 0 &0\\ 0 &\cos\theta & -\sin\theta\\ 0 & \sin\theta & \cos\theta\end{bmatrix}$$ 針對$\hat{Y}_A$旋轉$\theta$ $$R_{\hat{Y}_A}(\theta)=\begin{bmatrix} \cos\theta & 0 & \sin\theta\\ 0 & 1 &0\\ -\sin\theta & 0 &\cos\theta\end{bmatrix}$$ **範例** ![](https://i.imgur.com/gqBRaNJ.png) ### Rotation Matrix與轉角 Rotatin matrix並非commutable,即不可任意調換轉動運算子的順序。 如何將一般的rotation matrix所表達的姿態拆解到3次旋轉角度以對應到3個DOF? 兩個拆解方法 1. 對方向「固定不動」的旋轉軸旋轉:Fixed angles 2. 對「轉動的frame當下所在」的旋轉軸方向旋轉:Euler angles #### Fixed Angles **轉軸由X到Y到Z的例子** ![](https://i.imgur.com/mKHSrLv.png) $$^A_BR_{XYZ}(\gamma, \beta, \alpha)=R_Z(\alpha)R_Y(\beta)R_X(\gamma)$$因為轉動運算子操作的順序,先轉的放在「後面」。 **由R推算angle** 使用[$\text{atan2}$](https://zh.wikipedia.org/wiki/Atan2),在幾何意義上,$\text{atan2}(y,x)$等價於$\text{atan}(\frac{y}{x})$,但$\text{atan2}$的最大優勢是可以正確處理$x=0$而$y\neq0$的情況,而不必進行會引發除以零異常的$\frac{y}{x}$操作。 $$^A_BR_{XYZ}(\gamma, \beta, \alpha)= \begin{bmatrix} \cos\alpha\cos\beta & \cos\alpha\sin\beta\sin\gamma-\sin\alpha\cos\gamma & \cos\alpha\sin\beta\cos\gamma+\sin\alpha\sin\gamma\\ \sin\alpha\cos\beta & \sin\alpha\sin\beta\sin\gamma+\cos\alpha\cos\gamma & \sin\alpha\sin\beta\cos\gamma-\cos\alpha\sin\gamma\\ -\sin\beta & \cos\beta\sin\gamma &\cos\beta\cos\gamma\end{bmatrix}=\begin{bmatrix}r_{11} & r_{12} & r_{13}\\ r_{21} & r_{22} & r_{23}\\ r_{31} & r_{32} &r_{33}\end{bmatrix} $$ 解上式得到 if $\beta\neq90^{\circ}$ $$\beta=\text{atan2}(-r_{31}, \sqrt{r_{11}^2+r_{21}^2})\\ \alpha=\text{atan2}(r_{21}/c\beta, r_{11}/c\beta)\\ \gamma=\text{atan2}(r_{32}/c\beta, r_{33}/c\beta)$$ if $\beta=90^{\circ}$ $$\alpha=0^{\circ}\\\gamma=\text{atan2}(r_{12},r_{22})$$ if $\beta=-90^{\circ}$ $$\alpha=0^{\circ}\\\gamma=-\text{atan2}(r_{12},r_{22})$$ **範例** ![](https://i.imgur.com/Heh9O7N.png) #### Euler Angles **Z-Y-X Euler Angles** ![](https://i.imgur.com/WGRAgb4.png) $$^A_BR_{Z'Y'X'}=_{B'}^AR\ _{B''}^{B'}R\ _{B}^{B''}R=R_{Z'}(\alpha)R_{Y'}(\beta)R_{X'}(\gamma)$$ > 先轉的放在「前面」:以mapping來想對某一個向量,從最後一個frame,「逐漸移動或轉動」來回到第一個frame $$ =\begin{bmatrix}\cos\theta & -\sin\theta & 0\\ \sin\theta & \cos\theta & 0\\ 0 & 0 &1\end{bmatrix}\begin{bmatrix} \cos\theta & 0 & \sin\theta\\ 0 & 1 &0\\ -\sin\theta & 0 &\cos\theta\end{bmatrix} \begin{bmatrix} 1 & 0 &0\\ 0 &\cos\theta & -\sin\theta\\ 0 & \sin\theta & \cos\theta\end{bmatrix} \\=R_Z(\alpha)R_{Y}(\beta)R_{X}(\gamma)=^A_BR_{XYZ}(\gamma, \beta, \alpha) $$ 最後得到相同的$R$。 **Z-Y-Z Euler Angles** ![](https://i.imgur.com/P2YEt32.png) $$^A_BR_{Z'Y'Z'}=R_{Z'}(\alpha)R_{Y'}(\beta)R_{Z'}(\gamma)\\ =\begin{bmatrix}c\alpha c\beta c\gamma - s\alpha s\gamma & -c\alpha c\beta s\gamma - s\alpha c\gamma & c\alpha s\beta\\s\alpha c\beta c\gamma + c\alpha s\gamma & -s\alpha c\beta s\gamma + c\alpha c\gamma & s\alpha s\beta \\ -s\beta c\gamma & s\beta s\gamma & c\beta\end{bmatrix}$$ **由R推算angle** $$^A_BR_{XYZ}(\gamma, \beta, \alpha)= \begin{bmatrix}c\alpha c\beta c\gamma - s\alpha s\gamma & -c\alpha c\beta s\gamma - s\alpha c\gamma & c\alpha s\beta\\s\alpha c\beta c\gamma + c\alpha s\gamma & -s\alpha c\beta s\gamma + c\alpha c\gamma & s\alpha s\beta \\ -s\beta c\gamma & s\beta s\gamma & c\beta\end{bmatrix}=\begin{bmatrix}r_{11} & r_{12} & r_{13}\\ r_{21} & r_{22} & r_{23}\\ r_{31} & r_{32} &r_{33}\end{bmatrix} $$ 解上式得到 if $\beta\neq0^{\circ}$ $$\beta=\text{atan2}( \sqrt{r_{31}^2+r_{32}^2},r_{33})\\ \alpha=\text{atan2}(r_{23}/s\beta, r_{13}/s\beta)\\ \gamma=\text{atan2}(r_{32}/s\beta, -r_{31}/s\beta)$$ if $\beta=0^{\circ}$ $$\alpha=0^{\circ}\\\gamma=\text{atan2}(-r_{12},r_{11})$$ if $\beta=180^{\circ}$ $$\alpha=0^{\circ}\\\gamma=\text{atan2}(r_{12},-r_{11})$$ **範例** ![](https://i.imgur.com/lTjs1Ov.png) **小結** Euler/Fixed angles * 對任意的$R$我們有12種Euler angles和12種fixed angles的拆解方法($3\times 2\times 2$) * 存在Duality(共有12種對principal axes連三次轉動的拆解方法) 其他表達法 [Quaternion 表達法](https://en.wikipedia.org/wiki/Quaternion) Angle-axis 表達法