Notas de estudio de ROS (5): conversión de coordenadas TF (transformación) y análisis de principios

Directorio

6 TF

6.1 Especificación de formato de árbol TF / TF

6.2 comandos de herramientas relacionadas con TF

6.3 Principio TF

6.3.1 Sistema de coordenadas ROS

6.3.2 Clasificación del sistema de coordenadas.

6.3.3 configuración Robot TF


6 TF

TF es un concepto básico e importante en ROS. TF (TransForm) es la transformación de coordenadas.

Tf es esencialmente una estructura de datos similar a un árbol, por lo que generalmente lo llamamos "árbol tf", tf también puede considerarse como un tema: / tf, el mensaje almacenado en el tema es el formato de estructura de datos del árbol tf. Se mantiene la relación de conversión de coordenadas de todo el robot e incluso el mapa.

6.1 Especificación de formato de árbol TF / TF

La especificación de formato de TransformStamped.msg es la siguiente:

std_mags/Header header
    uint32 seq
    time stamp
    string frame_id
string child_frame_id
geometry_msgs/Transform transform
    geometry_msgs/Vector3 translation
        float64 x
        float64 y
        float64 z
    geometry_msgs/Quaternion rotation
        float64 x
        float64 y
        flaot64 z
        float64 w

Primero, el encabezado define el número de serie, la hora y el nombre del cuadro. Luego también escribí child_frame. La transformación entre estos dos marcos está definida por geometry_msgs / Transform. El vector tridimensional Vector3 representa la traducción, y el cuaternión quaternion representa la rotación.

Al final, muchos TransformStamped.msg enviados a tf, formando un árbol TF.

 

El árbol TF está formado por costuras TF entre muchos cuadros. Entonces, ¿de qué tipo es el árbol TF? Como sigue:

  • tf / tfMessage.msg
  • tf2_msgs / TFMessage.msg

Hay dos tipos de datos para TF, la razón principal es la iteración de la versión. Desde ROS Hydro, la primera generación de tf ha sido "obsoleta" en favor de tf2.

Cómo verificar qué versión de TF usa, solo use el comando rostopic info / tf.

Las especificaciones de formato estándar de tf / tfMessage.msg o tf2_msgs / TFMessage son las siguientes:

geometry_msgs/TransformStamped[] transforms
    std_mags/Header header
        uint32 seq
        time stamp
        string frame_id
    string child_frame_id
    geometry_msgs/Transform transform
        geometry_msgs/Vector3 translation
            float64 x
            float64 y
            float64 z
        geometry_msgs/Quaternion rotation
            float64 x
            float64 y
            flaot64 z
            float64 w

Una matriz TransformStamped es un árbol TF.

6.2 comandos de herramientas relacionadas con TF

  • Cree un gráfico pdf basado en el árbol tf actual:

        $ rosrun tf view_frames

       Esta herramienta se suscribe primero a / tf durante 5 segundos, dibuja un árbol tf basado en la información tf recibida durante este tiempo y luego crea un mapa pdf.

  • Ver el árbol tf actual:

       $ rosrun rqt_tf_tree rqt_tf_tree

       Este comando también consulta el árbol tf, pero la diferencia con el primer comando es que el comando consulta dinámicamente el árbol tf actual. Cualquier cambio actual se puede ver de inmediato, como cuándo desconectarse y cuándo atrapar Estos se muestran a través del complemento rqt.

  • Ver la relación de transformación entre dos cuadros:

      $ rosrun tf tf_echo [marco_referencia] [marco_objetivo]

6.3 Principio TF

6.3.1 Sistema de coordenadas ROS

  • El sistema de coordenadas de ROS se define con la mano derecha:

Por lo tanto, para el robot ROS, si se usa como el centro original del sistema de coordenadas, entonces:

  • eje x: frente

  • eje y: izquierda

  • eje z: arriba

 

  • En una rotación alrededor del eje, también se usa la definición de la derecha:

 

Sostenga el eje de coordenadas con su mano derecha, la dirección del pulgar es hacia la dirección positiva del eje de coordenadas, y la dirección de los cuatro dedos alrededor define la dirección de rotación positiva a lo largo de este eje de coordenadas.

Según la definición de la mano derecha, la rotación positiva alrededor del eje z es rotación en sentido antihorario

  1. Gire alrededor del eje Z, llamado ángulo de rumbo, usando guiñada;
  2. Gire alrededor del eje X, llamado ángulo de balanceo, use roll para indicar;
  3. Gire alrededor del eje Y, llamado ángulo de inclinación, use la inclinación para expresar;

Ejemplos:

    El plano bidimensional que usualmente usamos para describir el movimiento del automóvil se refiere al plano XY, es decir, el plano compuesto por el eje X y el eje Y. En este plano, el ángulo utilizado para describir el giro del automóvil es la rotación alrededor del eje Z, que a menudo es Dicho ángulo de rumbo. El eje Z está orientado hacia arriba, por lo que, de acuerdo con la regla de la derecha, puede saber que el automóvil gira positivo a la izquierda y negativo a la derecha.

  • Definición del sistema de coordenadas

       En la misma posición en el espacio, los valores de coordenadas son diferentes bajo diferentes sistemas de coordenadas.

 

En la figura anterior, hay dos sistemas de coordenadas, el sistema de coordenadas A y el sistema de coordenadas B, donde el eje de coordenadas naranja representa el eje X (hacia adelante) y el eje de coordenadas azul representa el eje Y (hacia la izquierda). Para el sistema de coordenadas A, las coordenadas de los puntos rosados ​​son ** (3, -3), para el sistema de coordenadas B, las coordenadas de los puntos rosados ​​son (5, 1) **

  • Unidad de medida:

ROS utiliza sistema métrico:

          > Velocidad lineal: m / s

         > Velocidad angular: rad / s

La velocidad lineal = 0.5m / s es una velocidad bastante rápida para un robot de interior. Velocidad angular = 1.0rad / s significa 6 segundos de rotación.

Referirse a:

https://www.cnblogs.com/hiram-zhang/p/10392877.html

https://blog.csdn.net/shixiaolu63/article/details/78496457

https://blog.csdn.net/autolabor/article/details/85120806

 

6.3.2 Clasificación del sistema de coordenadas.

Generalmente hay múltiples sistemas de coordenadas de referencia tridimensionales en un sistema de robot, y la relación relativa entre estos sistemas de coordenadas cambiará con el tiempo. Aquí hay un ejemplo de un escenario real de aplicación de robot para ilustrar esta relación y los cambios.

  1. Sistema mundial de coordenadas mundiales: generalmente el mapa del sistema de coordenadas del mapa ráster construido por slam láser.
  2. Sistema de coordenadas del chasis del robot: generalmente el sistema de coordenadas del chasis del robot base_footprint o base_link.
  3. El sistema de coordenadas de cada componente en el robot: como el sistema de coordenadas de los sensores lidar, imu y otros sensores base_laser_link, imu_link.

Algunas de las relaciones entre estos sistemas de coordenadas son estáticas y otras dinámicas. Cuando el chasis del robot se mueve, la relación relativa entre el chasis del robot y el mapa mundial-> base_footprint es dinámica;

La relación relativa entre sensores como lidar e imu instalados en el chasis del robot y el chasis del robot base_footprint-> base_laser_link, base_footprint-> imu_link es estática.

 

6.3.3 configuración Robot TF

http://wiki.ros.org/navigation/Tutorials/RobotSetup/TF

https://www.ros.org/reps/rep-0105.html

 

31 artículos originales publicados · Me gusta 3 · Visitas 2028

Supongo que te gusta

Origin blog.csdn.net/lclfans1983/article/details/105399161
Recomendado
Clasificación