Crea un Paquete MoveIt Para Tu Robot – ROS Spanish Tutorial

12/02/2024

This tutorial is created by Rosbotics Ambassador 017 Jose

Rosbotics Ambassador Program https://www.theconstruct.ai/rosbotics-ambassador/)

Lo que vamos a aprender

  1. Como iniciar y usar el asistente de configuración de MoveIt
  2. Como configurar un paquete de configuración MoveIt para un robot
  3. Como ejecutar el launch de ejemplo de MoveIt en RViz

Lista de recursos usados en esta publicación

  1. Usa este rosject: https://app.theconstructsim.com/l/5f3d5b06/
  2. The Construct: https://app.theconstructsim.com/
  3. Cursos ROS: ROS Manipulation in 5 Days: https://app.theconstructsim.com/courses/66

Resumen

ROS (Robot Operating System) se está convirtiendo en el “framework” estándar para programar robots. En este tutorial crearemos paso a paso el paquete de configuración de MoveIt usando Moveit Setup Assistant para tu robot. Ten encuesta que se usará ROS Noetic para este tutorial.

PASO 1: Abriendo el rosject

Para seguir este tutorial, necesitamos tener instalado ROS en nuestro sistema, y lo ideal sería tener un catkin_ws (Espacio de Trabajo ROS). Para facilitarte la vida, ya hemos preparado un rosject para eso: https://app.theconstructsim.com/l/5f3d5b06/.

Simplemente copiando el rosject (haciendo clic en el enlace de arriba), tendrás una configuración ya preparada para ti.

Después de haber copiado el rosject a tu propia área de trabajo, deberías ver el botón RUN. Haz clic en ese botón para lanzar el rosject (abajo tienes un ejemplo de rosject).

RUN rosject

Tras pulsar el botón RUN, deberías tener cargado el rosject. Ahora, pasemos a la siguiente sección para ponernos manos a la obra.

PASO 2: Iniciando MoveIt Setup Assistant

Para crear un paquete MoveIt para nuestro robot usando el asistente de configuración de MoveIt necesitamos solamente el paquete de descripción de este (que contenga los archivos urdf/xacro y los meshes de ser necesario).

El robot que se usará es el EDO (una paquete de descripción con una versión simplificada).

EDO

Para iniciar el asistente ejecutamos el siguiente comando en una terminal:

roslaunch moveit_setup_assistant setup_assistant.launch

Con ello se iniciar el asistente y deberíamos ver esta interfaz:

Inicio asistente

PASO 3: Configurar el paquete con la ayuda del asistente

El asistente de MoveIt tiene múltiples pestañas de configuración. Recorreremos cada una de ellas en orden configurando lo necesario.

Inicio (Start)

En esta parte cargamos la descripción de nuestro robot mediante el archivo urdf/xacro principal.

Para seleccionamos la opción Create New Moveit Configuration Package, luego buscamos el xacro de nuestro robot dándole a Browse y luego le damos a Load Files para cargar nuestro robot.

Seleccionar URDF

Esperamos, y si todo esta correcto con nuestro archivo Xacro/URDF se mostrará nuestro robot en la parte derecha.

URDF Cargado

Autocolisiones (Self-collisions)

En esta parte le decimos a MoveIt que pares de juntas no necesita revisar por colisiones ya que siempre están en colisión, reduciendo así la carga computacional a este proceso.

Aquí solo pulsamos el botón Generate Collision Matrix y la matriz ya se genera automáticamente.

Autocolisiones

Juntas virtuales (Virtual Joints)

En esta parte creamos una junta virtual entre la base del robot y un sistema coordenado de referencia. Sirve para posicionar el robot en world o una plataforma móvil.

Esta configuración ya se puede hacer desde nuestro archivo xacro (como en este ejemplo), por lo que no se definirá ninguna junta virtual.

Juntas virtuales

Grupos de planificación (Planning groups)

En esta parte se crea los grupos de planificación ya que MoveIt trabaja con grupos para la planificación de movimiento. Típicamente se configura un grupo para las juntas del brazo robótico y otro para el efector final.

Aquí le damos a Add Group, y configuramos las opciones que nos aparecen.

  • Group Name: Nombre del grupo a elección. Le colocaremos arm.
  • Kinematic Solver: El plugin encargado de resolver la cinemática del robot. Usaremos KDLKinematicsPlugin.
  • Group Default Planner: El algoritmo encargado de realizar la planificación de movimiento. Usaremos RRT.

Las demás opciones las dejamos con sus valores por defecto y ahora seleccionaremos las juntas que pertenecerán a este grupo, para ello le damos a Add Joints.

Grupos de planificación

Seleccionamos las juntas que deseamos que pertenezcan al grupo, y le damos a Save.

Juntas de grupo

Debido a que el robot del ejemplo no cuenta con un efector final solo creamos un grupo para el brazo robótico.

Poses del robot (Robot Poses)

En esta parte configuramos posiciones del robot según nuestras necesidades. Para ello asignamos un set de valores de juntas para la pose deseada y le asignamos un nombre.

Le damos a Add Pose, seleccionamos el grupo de planificación (solo tenemos a arm en este caso), le ponemos un nombre (home que siempre es conveniente definirlo) y le damos los valores correspondientes a las juntas moviendo los Sliders o colocando directamente los valores. Le damos a Save para guardar esta pose.

Poses del robot

Añadimos otra pose al robot a la que llamaremos Inicio, al que le puedes dar los valores válidos que desees. En la parte derecha puedes ver la pose que robot adopta. Esta pestaña es importante para ver si las juntas de tu robot están correctamente definidas en la descripción.

Efectores final (End Effectors)

En esta parte se añaden los efectores finales definiendo el nombre, el grupo de planificación y el sistema coordenado padre.

Ya que en este ejemplo no contamos con un efector final no lo definiremos.

Efector final

Juntas Pasivas (Passive Joints)

En esta parte se definen las juntas que no tiene un actuador. Ya que nuestro robot no tiene ese tipo de juntas no definiremos nada en esta pestaña.

Juntas pasivas

Controladores (Controllers)

En esta parte se definen los controladores, los cuales deben ser los adecuados para nuestro robot.

Le damos a Add Controller, le ponemos un nombre a elección, seleccionamos el tipo de controlador y seleccionamos el grupo de planificación al que se aplicará este controlador.

Controladores

Luego solo seleccionamos el grupos de planificación correspondiente y guardamos. Con ello ya tendríamos el controlador configurado.

Grupo del controlador

Simulación (Simulation)

En esta parte se puede autogenerar los cambios necesarios en el URDF para que los controladores y MoveIt sea compatible con la simulación en Gazebo. Los cambios se muestran en verde luego de darle click a Generate URDF.

URDF autogenerado

Básicamente se añaden inercias, transmisiones y el plugin gazebo_ros_control, sin embargo, todo ello ya esta definido en el xacro de nuestro robot así que no necesitaremos copiar y pegar este URDF generado.

Percepción 3D (3D Perception)

En esta parte se configura el sensor 3D con el cual trabaja nuestro robot. Podemos seleccionar entre 2 tipos de plugins para sensor 3D: PointCloud y Depth Map. Y luego configurar algunos parámetros y el tópico que se usará.

Ya que en este ejemplo el robot no cuenta con un sensor, no lo configuraremos.

Sensor

Información del autor (Author Information)

En esta parte se inserta el nombre y el correo del creador del paquete.

Información del autor

Archivos de configuración (Configuration Files)

En esta parte se genera el paquete de configuración de MoveIt con todo lo que hemos definido previamente.

Para ello, primero le damos a Browse para seleccionar la carpeta en la que queremos guardar nuestro paquete, debemos elegir un nombre (es común usar la estructura nombreRobot_moveit_config), luego le damos a Generate Package, le damos Ok en la ventana de advertencia que nos aparece (Nos alerta que no definimos juntas virtuales ni efector final) y esperamos a que se genere nuestro paquete.

Generar paquete

Una vez generado nuestro paquete le damos a Exit Setup Assistant. Con ello ya tenemos nuestro paquete MoveIt listo para usarse.

Paquete generado

Los archivos del paquete los puedes encontrar en la ruta que especificaste anteriormente, esta compuesto de archivos de configuración y launch.

Archivos generados

Ejecutar la demo en RViz

Listo! ya tenemos nuestro paquete MoveIt generado, para probarlo ejecutaremos el launch demo.launch con el siguiente comando:

roslaunch edo_moveit_config demo.launch

Con ello se iniciará RViz junto con todo lo necesario para realizar la planificación de movimiento a través de la interfaz que se carga en RViz. En la pestaña Planning de dicha interfaz podemos seleccionar un grupo de planificación, una pose inicial, una pose deseada y darle a planear y ejecutar.

Demo en RViz

Observarás como el robot se mueve por la ruta planificada. Y así de sencillo!, partiendo de un paquete de descripción de nuestro robot podemos realizar planificación de movimiento gracias al asistente de MoveIt.

Video Tutorial

Topics: Manipulator | moveit! | ROS
Masterclass 2023 batch2 blog banner

Check Out These Related Posts

129. ros2ai

129. ros2ai

I would like to dedicate this episode to all the ROS Developers who believe that ChatGPT or...

read more

0 Comments

Submit a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pin It on Pinterest

Share This