¿Cómo se representa la orientación en el espacio con ángulos de Euler?
Si utiliza un brazo robótico de seis ejes, como el Meca500 de Mecademic que se usa en este tutorial como ejemplo, lo más probable es que esté interesado en posicionar su herramienta (efector final) en diversas orientaciones. En otras palabras, necesita poder programar su robot para mover su efector final tanto a una posición deseada COMO a una orientación deseada (es decir, a una pose deseada). Por supuesto, siempre puede mover manualmente el efector final de su robot o guiarlo a mano hasta aproximadamente la pose deseada, pero este llamado método de programación en línea es tedioso y muy impreciso. Es mucho más eficiente calcular y definir la pose deseada fuera de línea. Además, para definir el sistema de referencia de la herramienta asociado a su efector final (como se muestra en la imagen), necesitaría calcular la pose de ese sistema de referencia de la herramienta con respecto al sistema de referencia de la brida.
En el espacio 3D, se necesita un mínimo de seis parámetros para definir una pose. Por ejemplo, la posición del efector final del robot, o más precisamente del TCP (punto central de la herramienta), se define típicamente como las coordenadas x, y e z del origen del sistema de referencia de la herramienta con respecto al sistema de referencia mundial. Pero, ¿cómo se define entonces la orientación en el espacio?
La representación de la orientación en el espacio es un tema complejo. El teorema de rotación de Euler establece que, en el espacio (3D), cualquier desplazamiento de un cuerpo rígido de tal manera que un punto del cuerpo rígido permanece fijo es equivalente a una sola rotación alrededor de un eje que pasa por el punto fijo. Por lo tanto, dicha rotación puede describirse mediante tres parámetros independientes: dos para describir el eje y uno para el ángulo de rotación. Sin embargo, la orientación en el espacio puede representarse de varias otras formas, cada una con sus propias ventajas y desventajas. Algunas de estas representaciones utilizan más del mínimo necesario de tres parámetros.
La forma más común de transformar coordenadas de posición de un sistema de referencia cartesiano (3D), F, a otro, F', es la matriz de rotación. Esta matriz de 3×3 puede utilizarse por tanto para representar la orientación del sistema de referencia F' con respecto al sistema de referencia F. Sin embargo, esta representación, aunque a menudo necesaria como descubriremos más adelante, no es una forma compacta e intuitiva de definir la orientación.
Otra forma mucho más compacta de definir la orientación es el cuaternión. Esta forma de representación consiste en un vector normalizado de cuatro escalares. El cuaternión se utiliza generalmente en controladores de robots, ya que no solo es más compacto que la matriz de rotación, sino también menos susceptible a errores de aproximación. Además, durante una interpolación entre dos orientaciones diferentes, los elementos del cuaternión cambian continuamente, evitando las discontinuidades inherentes a las parametrizaciones tridimensionales como los ángulos de Euler. No obstante, el cuaternión rara vez se utiliza como medio de comunicación entre un usuario y el controlador del robot porque es poco intuitivo.
Definición detallada de los ángulos de Euler
Con mucho, la forma más común de comunicar una orientación en el espacio a un usuario, o de permitir que un usuario defina una orientación, en un software CAD o en un controlador de robot, es el uso de ángulos de Euler. Dado que el término ángulos de Euler a menudo se usa incorrectamente, hemos preparado este tutorial interactivo.
Los ángulos de Euler son un conjunto (o mejor dicho, una secuencia) de tres ángulos, que pueden denotarse, por ejemplo, por α, β y γ. (A menudo, los ángulos de Euler se denotan por roll, pitch y yaw.) Los ángulos de Euler se definen de la siguiente manera: Considere dos sistemas de referencia cartesianos derechos 3D, de los cuales uno se llamará arbitrariamente el sistema fijo y el otro se denominará sistema móvil. Los dos sistemas de referencia coinciden inicialmente. Para definir la orientación de un tercer sistema (los tres sistemas comparten el mismo origen), el sistema móvil se lleva, en el orden que se muestra a continuación, a coincidir con el tercer sistema rotando el sistema móvil
- alrededor del eje x, y o z del sistema fijo o del x', y' o z' del sistema móvil, en α grados,
- luego alrededor del eje x, y o z del sistema fijo o del x', y' o z' del sistema móvil, en β grados,
- y finalmente alrededor del eje x, y o z del sistema fijo o del x', y' o z' del sistema móvil, en γ grados.
El orden en que se realizan las tres rotaciones es importante. Así, tenemos un total de 216 (63) secuencias posibles: x→y→z, y→y→z, z→y→z, x'→y→z, y'→y→z, z'→y→z, y así sucesivamente. Sin embargo, una secuencia de tres rotaciones en la que dos rotaciones consecutivas son alrededor del mismo eje (p. ej., y→y→z) no puede describir una orientación general. Además, antes de la primera rotación, x coincide con x', y coincide con y' y z coincide con z'. En consecuencia, de todas estas 216 combinaciones, solo existen doce secuencias ordenadas únicas y significativas de rotaciones, o doce convenciones de ángulos de Euler: XYX, XYZ, XZX, XZY, YXY, YXZ, YZX, YZY, ZXY, ZXZ, ZYX, ZYZ.
Dicho esto, cada una de las doce combinaciones es equivalente a otras tres secuencias. En otras palabras, cada convención de ángulos de Euler puede describirse de cuatro maneras diferentes. Por ejemplo, la convención ZYX es equivalente a las secuencias z→y→x, x'→y'→z', y→z'→x y y→x→z'. Afortunadamente, nadie describe los ángulos de Euler con secuencias en las que algunas rotaciones son alrededor de ejes del sistema móvil y otras alrededor de ejes fijos (p. ej., secuencias como y→z'→x y y→x→z').
Por lo tanto, aunque hay doce convenciones diferentes de ángulos de Euler, cada una se describe típicamente de dos maneras diferentes: ya sea como una secuencia de rotaciones alrededor de los ejes del sistema fijo o como una secuencia de rotaciones alrededor de los ejes del sistema móvil. Por tanto, puede ser conveniente hablar de convenciones fijas y móviles, aunque sean equivalentes. Por ejemplo, la convención de ángulos de Euler XYZ fija se describe por la secuencia x→y→z, mientras que la convención de ángulos de Euler ZYX móvil se describe por la secuencia z'→y'→x', pero ambas son equivalentes, como veremos más adelante.
En robótica, FANUC y KUKA usan la convención de ángulos de Euler XYZ fija, mientras que ABB usa la convención de ángulos de Euler ZYX móvil. Además, Kawasaki, Omron Adept Technologies y Stäubli usan la convención de ángulos de Euler ZYZ móvil. Finalmente, los ángulos de Euler utilizados en CATIA y SolidWorks se describen mediante la convención de ángulos de Euler ZYZ móvil.
En Mecademic, usamos la convención de ángulos de Euler XYZ móvil, y por lo tanto describimos los ángulos de Euler como la secuencia x'→y'→z'. ¿Por qué ser diferentes? La razón es que solíamos ofrecer un gripper mecánico para manipular piezas axisimétricas (ver video), que era accionado por el motor del eje 6. Un robot de seis ejes equipado con tal gripper solo puede controlar dos grados de libertad rotacionales, o más específicamente la dirección del eje del joint 6, es decir, la dirección del eje de simetría de la pieza. En la convención de ángulos de Euler elegida, los ángulos α y β definen esta dirección, mientras que el ángulo γ se ignora porque corresponde a una rotación parásita que es incontrolable.
Nuestra applet a continuación le ayudará a entender los ángulos de Euler. Puede seleccionar una de las doce convenciones posibles de ángulos de Euler haciendo clic en las casillas x, y, z de la primera, segunda y tercera rotación. (La secuencia de ángulos de Euler predeterminada es la utilizada por Mecademic). Para cambiar entre rotaciones alrededor de los ejes del sistema fijo o móvil, debe hacer doble clic en cualquiera de estas nueve casillas. Los ejes del sistema fijo se dibujan en gris, mientras que los del sistema móvil están en negro. Los ejes x y x' se dibujan en rojo, y y y' en verde, y z y z' en azul. Deslizando el ratón a lo largo de cualquiera de las tres flechas horizontales azules cambia el ángulo de Euler correspondiente. Alternativamente, puede establecer directamente el valor del ángulo de Euler (en grados) en el cuadro de texto correspondiente debajo de la flecha. Finalmente, puede arrastrar el ratón sobre el sistema de referencia para cambiar el punto de vista.
| R = Rx(0°) Ry(0°) Rz(0°) = |
|
| 1.000 |
0.000 |
0.000 |
| 0.000 |
1.000 |
0.000 |
| 0.000 |
0.000 |
1.000 |
|
|
|
Cálculo de ángulos de Euler mediante matrices de rotación
Con la applet anterior, verá la orientación del sistema móvil con respecto al sistema fijo, para un conjunto dado de ángulos de Euler, en la subfigura de la extrema derecha. Desafortunadamente, sin embargo, en la práctica, la situación suele ser la opuesta. Frecuentemente tiene dos sistemas de referencia y desea encontrar los ángulos de Euler que describen la orientación de un sistema con respecto al otro.
Para orientaciones en las que al menos dos ejes son paralelos, podría intentar adivinar los ángulos de Euler por ensayo y error. Por ejemplo, vuelva a mirar la imagen al principio de este tutorial e intente encontrar los ángulos de Euler utilizados por Mecademic que definen la orientación del sistema de referencia de la herramienta asociado al gripper, con respecto al sistema de referencia de la brida. La respuesta es α = −90°, β = 0°, γ = −90°. No es tan fácil de obtener, ¿verdad? Para ser más eficiente, por tanto, debe aprender sobre matrices de rotación después de todo.
Como ya mencionamos, cualquier orientación en el espacio puede representarse con una matriz de rotación de 3×3. Por ejemplo, una rotación de α alrededor del eje x, una rotación de β alrededor del eje y y una rotación de γ alrededor del eje z, corresponden respectivamente a las siguientes tres matrices de rotación básicas:
| Rx(α) = |
|
| 1 |
0 |
0 |
| 0 |
cos(α) |
−sen(α) |
| 0 |
sen(α) |
cos(α) |
|
|
, |
|
| Ry(β) = |
|
| cos(β) |
0 |
sen(β) |
| 0 |
1 |
0 |
| −sen(β) |
0 |
cos(β) |
|
|
, |
|
| Rz(γ) = |
|
| cos(γ) |
−sen(γ) |
0 |
| sen(γ) |
cos(γ) |
0 |
| 0 |
0 |
1 |
|
|
. |
|
Nos referiremos a las matrices anteriores como matrices de rotación básicas. Para obtener el producto de matrices de rotación básicas que corresponde a una secuencia de rotaciones, comience escribiendo la matriz de rotación básica correspondiente a la primera rotación. Por ejemplo, si la primera rotación es alrededor del eje x (o x'), entonces escriba Rx(ψ), donde ψ es el ángulo de rotación. Para cada rotación subsiguiente, post-multiplique (multiplique a la derecha) el resultado actual con la siguiente matriz de rotación, si la rotación es alrededor de un eje del sistema de referencia móvil, o pre-multiplique (multiplique a la izquierda) el resultado actual con la siguiente matriz de rotación, si la rotación es alrededor de un eje del sistema de referencia fijo. Use nuestra applet para ver el producto resultante de matrices de rotación básicas. Por ejemplo, la secuencia de rotación x'→y'→z' corresponde al producto R = Rx(α)Ry(β)Rz(γ). Así, la matriz de rotación que corresponde a los ángulos de Euler utilizados por Mecademic es:
| R(α, β, γ) = |
|
| cos(β)cos(γ) |
−cos(β)sen(γ) |
sen(β) |
| cos(α)sen(γ) + sen(α)sen(β)cos(γ) |
cos(α)cos(γ) − sen(α)sen(β)sen(γ) |
−sen(α)cos(β) |
| sen(α)sen(γ) − cos(α)sen(β)cos(γ) |
sen(α)cos(γ) + cos(α)sen(β)sen(γ) |
cos(α)cos(β) |
|
|
. |
|
Por lo tanto, para una orientación dada, necesitará hacer dos cosas: Primero, necesita encontrar la matriz de rotación que corresponde a su orientación. Segundo, necesita extraer los ángulos de Euler usando un par de ecuaciones simples. Primero le mostraremos dos formas de encontrar su matriz de rotación.
Considere el ejemplo que se muestra en la figura a continuación donde necesitamos encontrar la matriz de rotación que representa la orientación del sistema F' con respecto al sistema F. (Recuerde que siempre representamos el eje x en rojo, el eje y en verde y el eje z en azul.)
Aquí, es fácil ver que si alineamos un tercer sistema de referencia con F, que actuará como sistema móvil, luego rotamos este sistema alrededor de su eje z' a θ grados, y luego lo rotamos alrededor de su eje y' a φ grados, obtendremos la orientación de F. Así, la matriz de rotación que buscamos es:
| Rdeseada = Rz(θ)Ry(φ) = |
|
| cos(θ)cos(φ) |
−sen(θ) |
cos(θ)sen(φ) |
| sen(θ)cos(φ) |
cos(θ) |
sen(θ)sen(φ) |
| −sen(φ) |
0 |
cos(φ) |
|
|
. |
|
Alternativamente, podemos obtener la matriz de rotación anterior directamente. Sus primera, segunda y tercera columnas representan las coordenadas de los vectores unitarios a lo largo de los ejes x, y y z, respectivamente, del sistema F', con respecto al sistema F.
Ahora que tiene la matriz de rotación que representa su orientación deseada, simplemente necesita resolver el sistema de nueve ecuaciones trigonométricas escalares Rdeseada = R(α, β, γ), para α, β y γ. Afortunadamente, este problema tiene una solución genérica y simplemente le daremos las ecuaciones a utilizar.
Sea la orientación deseada de un sistema F' con respecto a un sistema F representada por la siguiente matriz de rotación:
| Rdeseada = |
|
| r1,1 |
r1,2 |
r1,3 |
| r2,1 |
r2,2 |
r2,3 |
| r3,1 |
r3,2 |
r3,3 |
|
|
. |
|
Los ángulos de Euler (en grados), de acuerdo con la convención XYZ móvil utilizada por Mecademic, se obtienen entonces según los siguientes dos casos:
Caso 1: r1,3 ≠ ±1 (es decir, el eje z' del sistema F' no es paralelo al eje x del sistema F).
β = asin(r1,3), γ = atan2(−r1,2, r1,1), α = atan2(−r2,3, r3,3).
Caso 2: r1,3 = ±1 (es decir, el eje z' del sistema F' es paralelo al eje x del sistema F).
β = r1,390°, γ = atan2(r2,1, r2,2), α = 0.
En el Caso 1 general, en realidad tenemos dos conjuntos de soluciones donde todos los ángulos están en el rango semiabierto (−180°, 180°]. Sin embargo, es inútil calcular ambos conjuntos de soluciones, por lo que solo se presenta el primero, en el que −90° < β < 90°. También tenga en cuenta que usamos la función atan2(y, x) en nuestra solución. Cuidado: en algunos lenguajes de programación, en algunas calculadoras científicas y en la mayoría de las hojas de cálculo, los argumentos de esta función están invertidos.
Finalmente, observe que el Caso 2 corresponde a una llamada singularidad de representación. Esta singularidad está presente en cualquier representación de tres parámetros de la orientación en el espacio 3D (no solo en la elección de ángulos de Euler de Mecademic). Es similar al problema de representar puntos en una esfera con solo dos parámetros. Por ejemplo, la longitud no está definida en la Tierra en los polos Sur y Norte. En otras palabras, esta singularidad no tiene nada que ver con las singularidades de los mecanismos (p. ej., el llamado gimbal lock), que corresponden a problemas físicos reales (p. ej., la pérdida de un grado de libertad).
Ejercicio
Considere la siguiente situación real que nos ocurrió. Queríamos acoplar una válvula dispensadora FISNAR al efector final de nuestro brazo robótico Meca500. Naturalmente, el ingeniero que diseñó y mecanizó el adaptador no se preocupaba por los ángulos de Euler y solo se centraba en la mecanizabilidad y la accesibilidad. En su diseño, esencialmente había dos rotaciones de 45°. En primer lugar, utilizó dos agujeros roscados diametralmente opuestos en la brida del robot para acoplar el adaptador, lo que causó la primera rotación de 45°. En segundo lugar, el ángulo entre el plano de interfaz de la brida y el eje del dispensador era de 45°.
La figura anterior muestra la instalación real (izquierda) y el sistema de referencia de la herramienta (derecha) que necesitaba definirse. Tenga en cuenta que al usar herramientas axisimétricas, es una práctica común alinear el eje z de la herramienta con el eje de la herramienta. Esto es particularmente útil con la convención de ángulos de Euler XYZ móvil, ya que la rotación redundante alrededor de la herramienta axisimétrica corresponde al tercer ángulo de Euler, γ. Así, los dos primeros ángulos de Euler definen el eje de la herramienta, mientras que el tercero puede usarse para elegir la configuración óptima del robot (es decir, lejos de singularidades).
Volviendo a nuestro ejemplo, mostraremos ahora que es imposible encontrar los ángulos de Euler según la convención XYZ móvil por ensayo y error. De hecho, para esta elección del sistema de referencia de la herramienta, podemos representar la orientación final como una secuencia de las dos rotaciones siguientes: R = Rz(45°)Ry(45°). A partir de aquí, podemos extraer los ángulos de Euler según la convención XYZ móvil usando las ecuaciones descritas anteriormente y obtenemos: α = −35,264°, β = 30,000°, γ = 54,735°. ¿Está convencido ahora de que necesita dominar los ángulos de Euler para situaciones como esta?
Singularidades de representación y errores de orientación
En el caso de la convención de ángulos de Euler XYZ móvil, si el eje z' del sistema F' es paralelo al eje x del sistema F, hay infinitos pares de α y γ que definirán la misma orientación. Obviamente, solo necesita uno para definir su orientación deseada, por lo que hemos establecido arbitrariamente α igual a cero. Más específicamente, si β = 90°, entonces cualquier combinación de α y γ, tal que α + γ = φ, donde φ es cualquier valor, corresponderá a la misma orientación, y será emitida por el controlador de Mecademic como {0,90°,φ}. De manera similar, si β = −90°, entonces cualquier combinación de α y γ, tal que α − γ = φ, donde φ es cualquier valor, corresponderá a la misma orientación, y será emitida por el controlador de Mecademic como {0,−90°,−φ}. Sin embargo, observe que si intenta representar la orientación de un sistema F' con respecto a un sistema F y el eje z' del sistema F' es casi paralelo al eje x del sistema F (es decir, β está muy cerca de ±90°), los ángulos de Euler serán muy sensibles a errores numéricos. En tal caso, debe ingresar la mayor cantidad posible de dígitos después del punto decimal al definir la orientación usando ángulos de Euler.
Considere la siguiente situación que ha causado preocupación a varios usuarios de nuestro Meca500. Usted establece la orientación del sistema de referencia de la herramienta con respecto al sistema de referencia mundial en {0°, 90°, 0°}, que es una singularidad de representación. Luego mantiene esta orientación y mueve el efector final en el espacio a varias posiciones. En algunas posiciones, debido al ruido numérico, el controlador no detecta la condición r1,3 = ±1 (Caso 2, como se mencionó anteriormente) y calcula los ángulos de Euler como si la orientación no correspondiera a una singularidad de representación. Así, el controlador devuelve algo como {41,345°, 90,001°, −41,345°}, que parece totalmente erróneo y muy lejos de {0°, 90°, 0°}. Pues no lo es.
A diferencia de los errores de posición, que se miden como √(Δx2 + Δy2 + Δz2), los errores de orientación no están directamente relacionados con las variaciones en los ángulos de Euler, especialmente cerca de singularidades de representación. Para comprender mejor esta llamada naturaleza no euclidiana de los ángulos de Euler, considere las coordenadas esféricas utilizadas para representar una ubicación en la Tierra. En el Polo Norte, la latitud es 90° (Norte), pero ¿cuál es la longitud? La longitud no está definida en el Polo Norte, o puede ser cualquier valor. Ahora imagine que nos movemos solo 1 mm desde el Polo Norte en dirección a Greenwich. En este caso, la latitud será 89,99999999°, pero la longitud ahora tendrá el valor de 0°. Imagine una vez más que regresa al Polo Norte y se mueve 1 mm en dirección a Tokio. La nueva longitud será aproximadamente 140°. Entre sus dos ubicaciones, el error en longitud es 140° ¡Sin embargo, el error angular real será aproximadamente 0,00000002°!
La situación descrita anteriormente es similar en todas las demás convenciones de ángulos de Euler. Dependiendo de la convención de ángulos de Euler, la singularidad de representación correspondiente ocurre cuando un eje específico del sistema F' es paralelo a otro eje específico del sistema F. En tal singularidad de representación, la primera y tercera rotación se vuelven dependientes.
En conclusión, a menos que domine los ángulos de Euler (o use software sofisticado de programación fuera de línea), y más específicamente la convención utilizada para programar su robot, difícilmente podrá programar algo más que operaciones simples de pick and place. Porque la robótica no es simple, hacemos todo lo posible para ayudarle a comprender los conceptos básicos.