ROS Robot Operating System NXT 2

ROS Robot Operating System NXT 2: rvizVamos allá con la segunda y última entrega de nuestra mini serie sobre ROS. Tras el tutorial de instalación, hoy vamos a centrarnos en dotar a nuestro robot de una de las herramientas que a buen seguro más os llamaron la atención del vídeo presentación: la posibilidad de mostrar nuestro robot en una representación 3D en el ordenador, respondiendo en tiempo real a lo que ocurre en el mundo físico.

ROS Robot Operating System NXT 2

La herramienta que se encargará de esto se llama rviz, podéis ver la presentación de este proyecto en el siguiente vídeo:

¿Sorprendidos con sus posibilidades? ¡Vamos a instalarlo!

1. Instalación de rviz

Para instalarlo, tendremos que asegurarnos de satisfacer todas las dependencias necesarias, para ello usaremos el siguiente comando:

rosdep install rviz

Ahora generamos el visualizador:

rosmake rviz

Finalmente, podremos ejecutarlo con el siguiente comando:

rosrun rviz rviz

NOTA: Para poder ejecutar rviz, tendremos que tener en otra terminal un servidor funcionando para poder comunicarnos con el NXT.
En estas pruebas, estamos usando el mismo que utilizamos al final del artículo anterior (ROS- Robot controlado desde el PC).

roslaunch nxt_robot_sensor_car robot.launch

Si no tenéis un servidor funcionando al ejecutar rviz, obtendréis el siguiente mensaje

ROS Robot Operating System NXT 2: rVIZ- error

2. Configuración de rviz

Cuando lo ejecutemos, tendremos una serie de terminales funcionando, algo como esto

ROS Robot Operating System NXT 2: Pantallazo-RVIZ

Nótese que en cada terminal se está ejecutando una herramienta distinta:

  • Terminal Superior Izquierda: Servidor

    roslaunch nxt_robot_sensor_car robot.launch
  • Terminal Superior Derecha: Programa de control por teclado

    roslaunch nxt_teleop teleop_keyboard.launch
  • Terminal Inferior Izquierda: Rviz

    rosrun rviz rviz
    Por otro lado, si es la primera ejecución, tendremos un entorno gráfico de representación como el siguiente

    ROS Robot Operating System NXT 2: Rviz_Ini

    Lo que os hará preguntaros dónde está ese robot en 3D que se parece tanto a nuestro tribot.

    Vamos por partes. La herramienta rviz nos ofrece un entorno 3D que puede trabajar con prácticamente cualquier plataforma de robótica, por lo que sus opciones de configuración son muchas, y muy amplias.

    Lo primero que haremos es poner ese cono verde tan chulo que nos muestra las mediciones del sensor ultrasónico

    ROS Robot Operating System NXT 2: Rviz-Add Ultrasonic

    que tendremos que configurar así

    ROS Robot Operating System NXT 2: Rviz-AddTopic

    Después pondremos una rejilla (grid) en pantalla para poder posicionar mejor nuestro robot en el espacio:

    ROS Robot Operating System NXT 2: Rviz-Add Grid

    Y ahora, lo que todos estábamos esperando… ¡el robot!

    rviz trabaja con archivos “.urdf” para la representación de los modelos, estos archivos contienen información sobre los elementos del robot, así como su orientación y su nomenclatura.

    Para este tutorial hemos usado el modelo de ejemplo que se incluye en el paquete ROS Base que instalamos en el artículo anterior, por lo que su representación 3D difiere del tribot con el que hacemos las pruebas.

    Si queremos, podemos diseñar nuestro modelo con LDraw o LEGO Digital Designer y exportarlo a rviz con una herramienta llamada nxt_lxf2urdf, de la que podéis encontrar más información en el enlace correspondiente, al final de este artículo.

    Vamos a cargar el modelo en el visualizador:

    ROS Robot Operating System NXT 2: Rviz-Add Robot

    ¡Listo!… Ya tenemos nuestro robot mostrando información en pantalla

    ROS Robot Operating System NXT 2: Pantallazo-grid_-500x380

    Si ponéis algún objeto delante y lo movéis comprobaréis cómo cambian las dimensiones del cono que representa el sensor ultrasónico. Podéis cambiar la vista con los botones del ratón, hasta encontrar una que os guste.

    ¿Habéis notado ya que falta algo?
    Lo del sensor está muy bien pero… ¿Cómo consigo que el robot se mueva en la pantalla tal y como lo hace en el mundo real?

    Esa es una muy buena pregunta, que tiene una respuesta muy sencilla:

    ROS Robot Operating System NXT 2: Rviz-Odometría_

    Como podéis ver, dentro de la configuración general, tenemos la posibilidad de decirle al visualizador qué define la vista de nuestro robot mediante las opciones Fixed Frame (marco fijo) y Target Frame (marco objetivo). Conseguir que nuestro robot responda tal y como lo hace en el mundo real es tan simple como seleccionar en ambos marcos la opción “odom_combined”.

    Esta opción permite al visualizador tomar la información referente a los movimientos y posicionamiento del robot (odometría) desde el programa servidor. Recordemos que nuestros motores llevan integrado un sensor de rotación que nos permite saber cuánto y hacia dónde se han movido, y por tanto, tendremos información de los cambios de posición que ha sufrido el robot.

    Ahora sí está listo, os ponemos un vídeo para que veáis los resultados de este tutorial.

    NOTA: rviz guarda la configuración al cerrar, por lo que no tendréis que volver a añadir todos los elementos cada que lo abráis.

    Información adicional:

One thought on “ROS Robot Operating System NXT 2

  1. Hola
    El tutorial de ROS & NTX es muy completo e interesante.
    Tengo una pregunta:
    por que no me aparece el cono verde del sensor ultrasónico?
    Tengo todos los parámetros iguales a los que se muestran en esta pagina, pero no me aparece el cono.
    Agradecería que me dieran ideas para solucionar este problema.
    Gracias por el tutorial.