Otras representaciones para la orientación en 3D

MT3006 - Robótica 1

¿Por qué no es suficiente con los ángulos de Euler?

Ejemplo

\mathbf{R}_\mathrm{YZX}=\mathbf{R}_y(\phi)\mathbf{R}_z(\pi/2)\mathbf{R}_x(\psi)

Ejemplo

\mathbf{R}_\mathrm{YZX}=\mathbf{R}_y(\phi)\mathbf{R}_z(\pi/2)\mathbf{R}_x(\psi)
\mathbf{R}_y(\phi)\mathbf{R}_z(\pi/2)=\mathbf{R}_z(\pi/2)\mathbf{R}_x(\phi)
\mathbf{R}_\mathrm{YZX}=\mathbf{R}_z(\pi/2)\mathbf{R}_x(\phi)\mathbf{R}_x(\psi)

Ejemplo

\mathbf{R}_\mathrm{YZX}=\mathbf{R}_y(\phi)\mathbf{R}_z(\pi/2)\mathbf{R}_x(\psi)
\mathbf{R}_y(\phi)\mathbf{R}_z(\pi/2)=\mathbf{R}_z(\pi/2)\mathbf{R}_x(\phi)
\mathbf{R}_\mathrm{YZX}=\mathbf{R}_z(\pi/2)\mathbf{R}_x(\phi)\mathbf{R}_x(\psi)
\mathbf{R}_x(\phi+\psi)

se pierde un grado de libertad

Singularidades y el gimbal lock

Singularidades y el gimbal lock

se requiere la otra interpretación del teorema de rotación de Euler

Segunda interpretación

eje-ángulo

cuaterniones unitarios

Representación eje-ángulo

\hat{\boldsymbol{\omega}}
\theta

vector unitario del eje de rotación

magnitud de la rotación

% Robotics Toolbox
[theta, w_hat] = tr2angvec(T)
[theta, w_hat] = tr2angvec(R)
T = angvec2tr(theta, w_hat)
R = angvec2r(theta, w_hat)

Representación eje-ángulo

\hat{\boldsymbol{\omega}}
\theta

vector unitario del eje de rotación

magnitud de la rotación

% Robotics System Toolbox
w = rotm2axang(R)
R = axang2rotm(w)

Representación eje-ángulo

\hat{\boldsymbol{\omega}}
\theta

vector unitario del eje de rotación

magnitud de la rotación

\boldsymbol{\omega}=\theta\hat{\boldsymbol{\omega}}
\mathbf{R}=e^{\mathcal{S}(\boldsymbol{\omega})}=e^{\mathcal{S}\left(\hat{\boldsymbol{\omega}}\right)\theta}

Representación eje-ángulo

\hat{\boldsymbol{\omega}}
\theta

vector unitario del eje de rotación

magnitud de la rotación

\boldsymbol{\omega}=\theta\hat{\boldsymbol{\omega}}
{^A}\mathbf{R}_B=e^{\mathcal{S}({^A}\boldsymbol{\omega}_{AB})}=e^{\mathcal{S}\left({^A}\hat{\boldsymbol{\omega}}_{AB}\right)\theta}

Representación eje-ángulo

\hat{\boldsymbol{\omega}}
\theta

vector unitario del eje de rotación

magnitud de la rotación

\boldsymbol{\omega}=\theta\hat{\boldsymbol{\omega}}
{^A}\mathbf{R}_B=e^{\mathcal{S}({^A}\boldsymbol{\omega}_{AB})}=e^{\mathcal{S}\left({^A}\hat{\boldsymbol{\omega}}_{AB}\right)\theta}

¿Qué es todo esto?

{^A}\hat{\boldsymbol{\omega}}_{AB}

vector que representa al eje de rotación de \(\{B\}\) con respecto de \(\{A\}\), pero representado como un vector en el marco de referencia \(\{A\}\)

{^A}\hat{\boldsymbol{\omega}}_{AB}

vector que representa al eje de rotación de \(\{B\}\) con respecto de \(\{A\}\), pero representado como un vector en el marco de referencia \(\{A\}\)

{^A}\hat{\boldsymbol{\omega}}_{AB}=-{^A}\hat{\boldsymbol{\omega}}_{BA}
{^B}\hat{\boldsymbol{\omega}}_{AB}={^B}\mathbf{R}_A{^A}\hat{\boldsymbol{\omega}}_{AB}
{^A}\hat{\boldsymbol{\omega}}_{AB}

vector que representa al eje de rotación de \(\{B\}\) con respecto de \(\{A\}\), pero representado como un vector en el marco de referencia \(\{A\}\)

{^A}\hat{\boldsymbol{\omega}}_{AB}=-{^A}\hat{\boldsymbol{\omega}}_{BA}
{^B}\hat{\boldsymbol{\omega}}_{AB}={^B}\mathbf{R}_A{^A}\hat{\boldsymbol{\omega}}_{AB}

???

\{A\}
x_A
y_A
z_A
\{B\}
x_B
y_B
z_B
\{A\}
x_A
y_A
z_A
\{B\}
x_B
y_B
z_B

fijo

\hat{\boldsymbol{\omega}}_{AB}
\{A\}
x_A
y_A
z_A
\{B\}
x_B
y_B
z_B

fijo

\hat{\boldsymbol{\omega}}_{AB}
{^B}\hat{\boldsymbol{\omega}}_{AB}
\{A\}
x_A
y_A
z_A
\{B\}
x_B
y_B
z_B

fijo

\hat{\boldsymbol{\omega}}_{AB}
{^A}\hat{\boldsymbol{\omega}}_{AB}
\{A\}
x_A
y_A
z_A
\{B\}
x_B
y_B
z_B

fijo

\hat{\boldsymbol{\omega}}_{BA}

\(\mathbf{w}, \mathbf{x} \in \mathbb{R}^3\), entonces \(\mathcal{S}\) representa al operador anti-simétrico (skew) tal que

\mathbf{w} \times \mathbf{x} \equiv \mathcal{S}(\mathbf{w})\mathbf{x}= \underbrace{\begin{bmatrix} 0 & -w_z & w_y \\ w_z & 0 & -w_x \\ -w_y & w_x & 0 \end{bmatrix}}_{\in so(3)} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix}
% Robotics Toolbox
S = skew(w)
w = vex(S) % operador inverso
\mathcal{S}^\top(\mathbf{w})=-\mathcal{S}(\mathbf{w})

el objeto \(e^\mathbf{A}\) representa a la exponencial de una matriz

e^\mathbf{A}=\displaystyle\sum_{k=0}^{\infty}\dfrac{\mathbf{A}^k}{k!}=\mathbf{I}+\mathbf{A}+\dfrac{\mathbf{A}^2}{2!}+\dfrac{\mathbf{A}^3}{3!}+\cdots
eA = expm(A)

el cual es considerablemente complicado de calcular analíticamente*

*excepto para matrices de rotación, en donde puede emplearse la fórmula de Rodrigues

\mathbf{R}=e^{\mathcal{S}\left(\hat{\boldsymbol{\omega}}\right)\theta}= \mathbf{I}+\left(\sin\theta\right) \mathcal{S}\left(\hat{\boldsymbol{\omega}}\right)+ \left(1-\cos\theta\right) \mathcal{S}^2\left(\hat{\boldsymbol{\omega}}\right)

bajo esta definición de la exponencial de una matriz, puede encontrarse el logaritmo de una matriz de rotación como

\mathcal{S}\left(\hat{\boldsymbol{\omega}}\right)=\dfrac{1}{2\sin\theta}\left(\mathbf{R}-\mathbf{R}^\top\right)
\theta=\arccos\left(\dfrac{1}{2}\mathrm{tr}(\mathbf{R})-1\right)

bajo esta definición de la exponencial de una matriz, puede encontrarse el logaritmo de una matriz de rotación como

\mathcal{S}\left(\hat{\boldsymbol{\omega}}\right)=\dfrac{1}{2\sin\theta}\left(\mathbf{R}-\mathbf{R}^\top\right)
\theta=\arccos\left(\dfrac{1}{2}\mathrm{tr}(\mathbf{R})-1\right)

seguimos teniendo inconvenientes

Cuaterniones unitarios

% Robotics Toolbox
Q = UnitQuaternion(T)
Q = UnitQuaternion(R)
T = Q.T
R = Q.R

% Robotics System Toolbox
Q = rotm2quat(R)
R = quat2rotm(Q)
\mathcal{Q}=\{\eta,\boldsymbol{\epsilon}\}=\begin{bmatrix} \eta \\ \boldsymbol{\epsilon} \end{bmatrix}= \begin{bmatrix} \cos(\theta/2) \\ \hat{\boldsymbol{\omega}}\sin(\theta/2) \end{bmatrix} \quad \begin{matrix} \eta\in\mathbb{R} \\ \boldsymbol{\epsilon}\in\mathbb{R}^3 \end{matrix}
\eta^2+\boldsymbol{\epsilon}^\top\boldsymbol{\epsilon}=1

norma unitaria

% Robotics Toolbox
Q = UnitQuaternion(T)
Q = UnitQuaternion(R)
T = Q.T
R = Q.R

% Robotics System Toolbox
Q = rotm2quat(R)
R = quat2rotm(Q)
\mathcal{Q}=\{\eta,\boldsymbol{\epsilon}\}=\begin{bmatrix} \eta \\ \boldsymbol{\epsilon} \end{bmatrix}= \begin{bmatrix} \cos(\theta/2) \\ \hat{\boldsymbol{\omega}}\sin(\theta/2) \end{bmatrix} \quad \begin{matrix} \eta\in\mathbb{R} \\ \boldsymbol{\epsilon}\in\mathbb{R}^3 \end{matrix}
\eta^2+\boldsymbol{\epsilon}^\top\boldsymbol{\epsilon}=1

norma unitaria

fáciles de normalizar

\mathbf{R}=\left(\eta^2-\boldsymbol{\epsilon}^\top \boldsymbol{\epsilon}\right) \mathbf{I} +2\eta \mathcal{S}\left(\boldsymbol{\epsilon}\right)+2\boldsymbol{\epsilon} \boldsymbol{\epsilon}^\top
\mathbf{R}=\begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix}
\eta=\dfrac{1}{2}\sqrt{1+\mathrm{tr}(\mathbf{R})}
\boldsymbol{\epsilon}=\dfrac{1}{4\eta} \begin{bmatrix} r_{32}-r_{23} \\ r_{13}-r_{31} \\ r_{21}-r_{12} \end{bmatrix}
\mathbf{R}=\left(\eta^2-\boldsymbol{\epsilon}^\top \boldsymbol{\epsilon}\right) \mathbf{I} +2\eta \mathcal{S}\left(\boldsymbol{\epsilon}\right)+2\boldsymbol{\epsilon} \boldsymbol{\epsilon}^\top
\mathbf{R}=\begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix}
\eta=\dfrac{1}{2}\sqrt{1+\mathrm{tr}(\mathbf{R})}
\boldsymbol{\epsilon}=\dfrac{1}{4\eta} \begin{bmatrix} r_{32}-r_{23} \\ r_{13}-r_{31} \\ r_{21}-r_{12} \end{bmatrix}

a pesar de esto, los cuaterniones unitarios sí pueden operarse (eficientemente) sin tener que transformase a matrices de rotación

si se tiene que \( \mathcal{Q}_1 \sim \mathbf{R}_1, \ \mathcal{Q}_2 \sim \mathbf{R}_2\)  y  \( \mathcal{Q}_3 \sim \mathbf{R}_3=\mathbf{R}_1\mathbf{R}_2\) entonces

\{\eta, \boldsymbol{\epsilon}\} \sim \mathbf{R} \sim \{-\eta, -\boldsymbol{\epsilon}\}
\mathcal{Q}_3=\mathcal{Q}_1 * \mathcal{Q}_2= \{\eta_1, \boldsymbol{\epsilon}_1\} * \{\eta_2, \boldsymbol{\epsilon}_2\} \newline \mathcal{Q}_3=\{ \eta_1\eta_2-\boldsymbol{\epsilon}_1^\top\boldsymbol{\epsilon}_2, \eta_1\boldsymbol{\epsilon}_2+\eta_2\boldsymbol{\epsilon}_1+\boldsymbol{\epsilon}_1 \times \boldsymbol{\epsilon}_2\}

si se tiene que \( \mathcal{Q}_1 \sim \mathbf{R}_1, \ \mathcal{Q}_2 \sim \mathbf{R}_2\)  y  \( \mathcal{Q}_3 \sim \mathbf{R}_3=\mathbf{R}_1\mathbf{R}_2\) entonces

\{\eta, \boldsymbol{\epsilon}\} \sim \mathbf{R} \sim \{-\eta, -\boldsymbol{\epsilon}\}
\mathcal{Q}_3=\mathcal{Q}_1 * \mathcal{Q}_2= \{\eta_1, \boldsymbol{\epsilon}_1\} * \{\eta_2, \boldsymbol{\epsilon}_2\} \newline \mathcal{Q}_3=\{ \eta_1\eta_2-\boldsymbol{\epsilon}_1^\top\boldsymbol{\epsilon}_2, \eta_1\boldsymbol{\epsilon}_2+\eta_2\boldsymbol{\epsilon}_1+\boldsymbol{\epsilon}_1 \times \boldsymbol{\epsilon}_2\}

si se tiene que \( \mathcal{Q}_1 \sim \mathbf{R}_1, \ \mathcal{Q}_2 \sim \mathbf{R}_2\)  y  \( \mathcal{Q}_3 \sim \mathbf{R}_3=\mathbf{R}_1\mathbf{R}_2\) entonces

\mathcal{Q}_1^{-1}=\{\eta_1, -\boldsymbol{\epsilon}_1\} \sim \mathbf{R}_1^{-1}=\mathbf{R}_1^\top
\{\eta, \boldsymbol{\epsilon}\} \sim \mathbf{R} \sim \{-\eta, -\boldsymbol{\epsilon}\}
\mathcal{Q}_3=\mathcal{Q}_1 * \mathcal{Q}_2= \{\eta_1, \boldsymbol{\epsilon}_1\} * \{\eta_2, \boldsymbol{\epsilon}_2\} \newline \mathcal{Q}_3=\{ \eta_1\eta_2-\boldsymbol{\epsilon}_1^\top\boldsymbol{\epsilon}_2, \eta_1\boldsymbol{\epsilon}_2+\eta_2\boldsymbol{\epsilon}_1+\boldsymbol{\epsilon}_1 \times \boldsymbol{\epsilon}_2\}

si se tiene que \( \mathcal{Q}_1 \sim \mathbf{R}_1, \ \mathcal{Q}_2 \sim \mathbf{R}_2\)  y  \( \mathcal{Q}_3 \sim \mathbf{R}_3=\mathbf{R}_1\mathbf{R}_2\) entonces

\mathcal{Q}_1^{-1}=\{\eta_1, -\boldsymbol{\epsilon}_1\} \sim \mathbf{R}_1^{-1}=\mathbf{R}_1^\top
\mathbf{w}=\mathbf{R}_1\mathbf{v}\equiv \{0, \mathbf{w}\}= \mathcal{Q}_1*\{0,\mathbf{v}\}*\mathcal{Q}_1^{-1}
\{\eta, \boldsymbol{\epsilon}\} \sim \mathbf{R} \sim \{-\eta, -\boldsymbol{\epsilon}\}
\mathcal{Q}_3=\mathcal{Q}_1 * \mathcal{Q}_2= \{\eta_1, \boldsymbol{\epsilon}_1\} * \{\eta_2, \boldsymbol{\epsilon}_2\} \newline \mathcal{Q}_3=\{ \eta_1\eta_2-\boldsymbol{\epsilon}_1^\top\boldsymbol{\epsilon}_2, \eta_1\boldsymbol{\epsilon}_2+\eta_2\boldsymbol{\epsilon}_1+\boldsymbol{\epsilon}_1 \times \boldsymbol{\epsilon}_2\}

si se tiene que \( \mathcal{Q}_1 \sim \mathbf{R}_1, \ \mathcal{Q}_2 \sim \mathbf{R}_2\)  y  \( \mathcal{Q}_3 \sim \mathbf{R}_3=\mathbf{R}_1\mathbf{R}_2\) entonces

\mathcal{Q}_1^{-1}=\{\eta_1, -\boldsymbol{\epsilon}_1\} \sim \mathbf{R}_1^{-1}=\mathbf{R}_1^\top
\mathbf{w}=\mathbf{R}_1\mathbf{v}\equiv \{0, \mathbf{w}\}= \mathcal{Q}_1*\{0,\mathbf{v}\}*\mathcal{Q}_1^{-1}
\{\eta, \boldsymbol{\epsilon}\} \sim \mathbf{R} \sim \{-\eta, -\boldsymbol{\epsilon}\}

¿Limitantes?

los cuaterniones pierden toda interpretación intuitiva

En resumen

Representación Composición Memoria Numérico Intuición

 
9

 
4 N/A

 
3 N/A

 
4
\mathbf{R}\in SO(3)
\hat{\boldsymbol{\omega}}, \theta
\phi, \theta, \psi
\mathcal{Q}=\{\eta, \boldsymbol{\epsilon}\}

MT3005 - Lecture 3 (2025)

By Miguel Enrique Zea Arenales

MT3005 - Lecture 3 (2025)

  • 131