Clase 03

Localización Espacial¶

¿Por qué es importante conocer la localización espacial de un robot?¶

  • Para que el robot pueda manipular con precisión objetos y herramientas.

Representación de la Posición¶

No description has been provided for this image

Coordenadas homogenes¶

$$ M = \begin{bmatrix}x\\ y\\ z\\ k\end{bmatrix} = \begin{bmatrix}a\,k\\ b\,k\\ c\,k\\ k\end{bmatrix} = \begin{bmatrix}a\\ b\\ c\\ 1\end{bmatrix} $$

Matrices de Transformación Homogénea¶

Está formada por cuatro submatrices

  • una matriz de rotación ($R$)
  • un vector de translación ($P$)
  • una transformación de perspectiva ($F$)
  • un escalado global ($W$)

$$ T = \begin{bmatrix}R_{3x3}&& P_{3x1}\\ F_{1x3}&& W_{1x1}\end{bmatrix} $$

¿Qué podemos hacer con matriz de transformación homogénea?¶

  • Conocer la orientación y posición de un sistema respecto a otro de referencia.
  • Conocer la rotación y traslación de un vector respecto a un sistema de referencia fijo.

Traslación¶

  • La traslación es el movimiento de un sistema de coordenadas $O'ABC$ con respecto a otro $O'XYZ$.
  • La matriz homogénea de traslación se calcula con los vectores de traslación $(vx, vy, vz)$.
x,y,z = sp.symbols('x,y,z')
display(sp.Matrix(translation(x,y,z)))
$\displaystyle \left[\begin{matrix}1 & 0 & 0 & x\\0 & 1 & 0 & y\\0 & 0 & 1 & z\\0 & 0 & 0 & 1\end{matrix}\right]$

Rotación¶

  • La rotación es el movimiento angular de un sistema $O'ABC$ con respecto a otro $O'XYZ$.
  • Hay matrices de rotación con respecto a los ejes $OX$, $OY$ y $OZ$.

Rotación con respecto a X¶

$$ T_x(\alpha) = \begin{bmatrix} 1&0&0&0 \\ 0&\cos(\alpha)&-\sin(\alpha)&0 \\ 0&\sin(\alpha)&\cos(\alpha)&0 \\ 0&0&0&1 \end{bmatrix} $$

Rotación con respecto a Y¶

$$ T_y(\phi) = \begin{bmatrix} \cos(\phi)&0&\sin(\phi)&0 \\ 0&1&0&0 \\ -\sin(\phi)&0&\cos(\phi)&0 \\ 0&0&0&1 \end{bmatrix} $$

Rotación con respecto a Z¶

$$ T_z(\theta) = \begin{bmatrix} \cos(\theta)&-\sin(\theta)&0&0 \\ \sin(\theta)&\cos(\theta)&0&0 \\ 0&0&1&0 \\ 0&0&0&1 \end{bmatrix} $$

Rotación y Traslación Combinadas¶

  • El orden de aplicación de la rotación y traslación es importante.
R = rotation_z(np.deg2rad(45))
T = translation(10,0,0)

origin1 = R@T@origin
origin2 = T@R@origin

ax = plt.figure().add_subplot()
plot_origin2D(ax,origin)
plot_origin2D(ax,origin1)
plot_origin2D(ax,origin2)
ax.axis('equal');
No description has been provided for this image

Cuaternios¶

Los cuaternios son una extensión de los números reales, con cuatro coordenadas. Son útiles para representar la orientación, tienen una composición simple y son eficientes.

$$ Q= q_0 e + q_1\hat{i} + q_2\hat{j} + q_3\hat{k} $$

Se usan en la composición de solo rotaciones. También se puede definir por el vector de rotación y el angulo de rotación.

Propiedades de los Cuaternios¶

  • Conjugación: Invierte el signo de la parte vectorial.
  • Producto: Operación importante para las transformaciones.
  • Suma: Suma de las partes escalares y vectoriales.
  • Producto Escalar: Multiplicación por un escalar.
  • Norma: Se calcula con la parte real del producto del cuaternio por su conjugado.
  • Inverso: Se calcula con el conjugado del cuaternio dividido por su norma.

Representación y Composición de Rotaciones con Cuaternios¶

Representar un giro sobre un eje. La rotación de un vector $p$ se hace con la fórmula

$$ p' = Q \cdot (0,p) \cdot Q^{-1} $$

La composición de rotaciones se logra multiplicando cuaternios

Ejemplo de la rotación de un vector¶

Tomemos por ejemplo el punto/vector $p = 10\hat{i}$ y rotemoslo sobre el eje $(0,0,1)$, 45 grados. El resultado será:

Q = rotation_quaternion(np.deg2rad(45),[0,0,1])
Qinv = Q.inverse()
P = np.quaternion(0,10,0,0)
PL2G = Q*P*Qinv
display(PL2G)
quaternion(0, 7.07106781186548, 7.07106781186548, 0)

Comparación de Métodos de Localización¶

Característica Matrices de Transformación Homogénea Cuaternios
Representación Posición y orientación (traslación y rotación) Orientación relativa (rotación)
Componentes 12 (matriz de 4x4) 4
Composición Complicada (multiplicación de matrices) Eficiente (multiplicación de cuaternios)
Uso Principal Transformaciones en el espacio 3D, robótica, gráficos por computadora Rotaciones, interpolación de rotaciones (SLERP)

Relación entre Métodos¶

Es posible pasar de un método a otro mediante la representación auxiliar intermedia del eje y el ángulo de rotación.

  • Relación Directa: Expresa la matriz de transformación en función de un cuaternio.
  • Relación Inversa: Permite calcular un cuaternio a partir de una matriz de transformación.

Relación Directa (Matriz desde Cuaternio)¶

A partir de un cuaternio $q = w + xi + yj + zk$, la matriz de rotación $R$ correspondiente se calcula como:

$$ R = \begin{bmatrix} 1-2(y^2+z^2) & 2(xy-zw) & 2(xz+yw) \\ 2(xy+zw) & 1-2(x^2+z^2) & 2(yz-xw) \\ 2(xz-yw) & 2(yz+xw) & 1-2(x^2+y^2) \end{bmatrix} $$

Relación Inversa (Cuaternio desde Matriz)¶

Para obtener un cuaternio a partir de una matriz de rotación, se pueden usar fórmulas que evitan la ambigüedad, como el método de la traza de la matriz:

$$ \begin{align*} w &= \frac{1}{2}\sqrt{1+R_{11}+R_{22}+R_{33}} \\ x &= \frac{R_{32}-R_{23}}{4w} \\ y &= \frac{R_{13}-R_{31}}{4w} \\ z &= \frac{R_{21}-R_{12}}{4w} \end{align*} $$