Main Content

Transformaciones de coordenadas en robótica

En las aplicaciones de robótica, pueden usarse muchos sistemas de coordenadas diferentes para definir dónde están ubicados los robots, los sensores y otros objetos. En general, la ubicación de un objeto en el espacio 3D se puede especificar mediante valores de posición y orientación. Existen varias representaciones posibles para estos valores, y algunas de ellas son específicas para ciertas aplicaciones. Traslación y rotación son términos alternativos para posición y orientación. Robotics System Toolbox™ admite las representaciones que se usan comúnmente en robótica y permite la conversión entre ellas. Puede transformar los sistemas de coordenadas entre sí cuando aplica estas representaciones a puntos 3D. A continuación se detallan estas representaciones admitidas junto con explicaciones de su uso y el equivalente numérico en MATLAB®. Existe una abreviatura para el nombre de cada representación. Se utiliza en la nomenclatura de los argumentos y las funciones de conversión que se admiten en esta toolbox.

Al final de esta sección se incluye información sobre las funciones de conversión que ofrecemos para convertir de una representación a otra.

Robotics System Toolbox asume que las posiciones y las orientaciones están definidas en un sistema de coordenadas cartesianas a la derecha.

Ángulo del eje

Abreviatura: axang

Rotación en el espacio 3D descrita por una rotación escalar en torno a un eje fijo definido por un vector.

Representación numérica: Vector unitario de 1 por 3 y ángulo escalar combinado como un vector de 1 por 4

Por ejemplo, una rotación de pi/2 radianes en torno al eje y sería:

axang = [0 1 0 pi/2]

Ángulos de Euler

Abreviatura: eul

Los ángulos de Euler son tres ángulos que describen la orientación de un cuerpo rígido. Cada ángulo es una rotación escalar en torno a un determinado eje del marco de coordenadas. Robotics System Toolbox admite dos órdenes de rotación. El orden del eje 'ZYZ' se usa con frecuencia en aplicaciones de robótica. También se admite el orden del eje 'ZYX', denominado también “Roll Pitch Yaw (rpy)”. Es importante conocer el orden de eje que se usa para aplicar la rotación a los puntos y al convertir a otras representaciones.

Representación numérica: Vector de 1 por 3 de ángulos escalares

Por ejemplo, una rotación en torno al eje y de pi se expresaría como:

eul = [0 pi 0]

Nota: El orden del eje no se almacena en la transformación, por lo que debe conocer el orden de rotación que se debe aplicar.

Matriz de transformación homogénea

Abreviatura: tform

Una matriz de transformación homogénea combina una traslación y una rotación en una matriz.

Representación numérica: matriz de 4 por 4

Por ejemplo, una rotación de ángulo α en torno al eje y y una traslación de 4 unidades a lo largo del eje y se expresaría como:

tform =
 cos α  0      sin α  0 
 0      1      0      4
-sin α  0      cos α  0
 0      0      0      1

Debe premultiplicar la matriz de transformación con sus coordenadas homogéneas, que se representan como una matriz de vectores fila (matriz de puntos de n por 4). Utilice la transposición (') para girar los puntos para la multiplicación de la matriz. Por ejemplo:

points = rand(100,4);
tformPoints = (tform*points')';

Cuaternión

Abreviatura: quat

Un cuaternión es un vector de cuatro elementos con una rotación escalar y un vector de 3 elementos. Los cuaterniones son útiles porque evitan los problemas de singularidad inherentes en otras representaciones. El primer elemento, w, es un escalar para normalizar el vector en el que los otros tres valores, [x y z], definen el eje de rotación.

Representación numérica: Vector de 1 por 4

Por ejemplo, una rotación de pi/2 en torno al eje y se expresaría como:

quat = [0.7071 0 0.7071 0]

Matriz de rotación

Abreviatura: rotm

Una matriz de rotación describe una rotación en el espacio 3D. Es una matriz cuadrada ortonormal con un determinante de 1.

Representación numérica: Matriz de 3 por 3

Por ejemplo, una rotación de α grados en torno al eje x sería:

rotm =

     1     0         0
     0     cos α     -sin α
     0     sin α     cos α

Debe premultiplicar la matriz de rotación con sus coordenadas, que se representan como una matriz de vectores fila (matriz de puntos de n por 3). Utilice la transposición (') para girar los puntos para la multiplicación de la matriz. Por ejemplo:

points = rand(100,3);
rotPoints = (rotm*points')';

Vector de traslación

Abreviatura: trvec

Un vector de traslación se representa en el espacio euclidiano 3D como coordenadas cartesianas. Solo implica la traslación de coordenadas aplicada de la misma forma a todos los puntos. No implica rotación.

Representación numérica: Vector de 1 por 3

Por ejemplo, una rotación de 3 puntos a lo largo del eje x y de 2,5 unidades a lo largo del eje z se expresaría como:

trvec = [3 0 2.5]

Funciones de conversión y transformaciones

Robotics System Toolbox proporciona funciones de conversión para las representaciones de transformación mencionadas anteriormente. Una función dedicada no admite todas las conversiones. A continuación se muestra una tabla con las conversiones admitidas (en azul). También se muestran las abreviaturas de las representaciones de rotación y traslación.

Los nombres de todas las funciones de conversión siguen un formato estándar. Siguen la forma alpha2beta, donde alpha es la abreviatura de lo que está convirtiendo y beta es a lo que está convirtiendo expresado como abreviatura. Por ejemplo, convertir ángulos de Euler a cuaternión sería eul2quat.

Todas las funciones esperan entradas válidas. Si especifica entradas que no son válidas, las salidas serán indefinidas.

Existen otras funciones de conversión para convertir entre radianes y grados, coordenadas cartesianas y homogéneas, así como para calcular diferencias de ángulo reajustado. Para obtener una lista completa de las conversiones, consulte Transformaciones y trayectorias de coordenadas.

Temas relacionados