dissasembly area

Como usar MoveIT para desarrollar una aplicación de manipulación robótica

El proyecto HR-Recycler, financiado por la Comisión Europea, tiene como objetivo desarrollar un entorno híbrido de colaboración humano-robot para el reciclaje de residuos electrónicos. Humanos y robots trabajarán de forma colaborativa compartiendo diversas actividades de manipulación. Una de estas tareas tiene lugar en el área de desmontaje, donde los residuos electrónicos se desmontan y sus componentes se clasifican por tipo en cajas. 

Una plataforma sencilla para aplicaciones de manipulación robótica

Para agilizar la tarea de clasificación de componentes, Robotnik está desarrollando el robot manipulador móvil RB-KAIROS encargado de coger las cajas con componentes electrónicos de las mesas de trabajo y transportarlas hasta su destino final o hasta la próxima estación de procesamiento. MoveIt es una plataforma de desarrollo de aplicaciones de manipulación robótica de código abierto, que permite desarrollar aplicaciones complejas de forma sencilla usando ROS. 

Este post expone brevemente cómo Robotnik ha utilizado MoveIt para el desarrollo de una aplicación de manipulación que se puede integrar en el robot RB-KAIROS.

dissasembly area
Figure 1: Descripción visual de la tarea Pick and Place..

Características y ventajas de usar MoveIt

A medida que se iban probando las funcionalidades de MoveIt, se puso de manifiesto lo útil que era, en las etapas iniciales del proceso, desarrollar una aplicación de manipulación robótica. Ayudó a decidir el diseño del entorno de trabajo, a determinar si el robot era capaz de desempeñar las actividades de manipulación necesarias en ese entorno de trabajo y si no era así, a modificar el entorno para conseguir el mejor desempeño.

Diseño del entorno de trabajo en MoveIt

MoveIt permite crear y simular el entorno de trabajo del robot utilizando objetos de malla 3D diseñados en cualquier programa CAD, permitiendo además la interacción entre el robot y este entorno de trabajo. 

Con MoveIt se puede planificar el movimiento del robot a cualquier posición teniendo en cuenta la situación actual de los objetos presentes en el entorno, evitando así colisiones. Pero lo más interesante es que no sólo planifica la trayectoria evitando los obstáculos, si no que además  permite interactuar con los objetos del entorno, pudiendo coger cualquier objeto del entorno e incluirlo como si fuera parte del robot a la hora de planificar la trayectoria a la posición deseada. Cualquier objeto de colisión de MoveIt puede vincularse al eslabón (link) del robot que se desee, una vez vinculados se moverán conjuntamente.

Figure 2: Planificación de escena con objetos de colisión (verde) y objetos adjuntos (violeta).

Esta herramienta ayudó a resolver desde el primer momento ciertas dudas: si el manipulador móvil era capaz de coger cajas desde una mesa con una cierta altura, a qué distancia de la mesa deberíamos colocarnos para poder coger las cajas correctamente, si había el suficiente espacio para que el robot pudiera mover el brazo y así llevar a cabo las acciones de manipulación necesarias. También sirvió para diseñar las cajas que el robot debe manipular, de forma que tuvieran un tamaño y forma adecuados para encajar en el reducido espacio disponible en el entorno de trabajo y para permitir la correcta ejecución de las tareas de manipulación. 

Planificación de movimientos con MoveIt

MoveIt incluye varias herramientas que permiten adaptar el algoritmo de planificación de  movimientos para alcanzar la posición del robot deseada usando criterios personalizables y así obtener el mejor desempeño para tu aplicación. Esto es muy útil ya que permite restringir los movimientos que el robot puede realizar para moverse de una posición a otra, que en una aplicación como la desarrollada, con un espacio de trabajo reducido donde el robot debe manipular objetos en un entorno compartido con humanos, es muy importante.

Figure 3: Planificación de la meta deseada teniendo en cuenta las colisiones con la escena..

Un requerimiento de movimiento importante es mantener las cajas paralelas al suelo al transportarlas ya que estas están llenas de componentes electrónicos a reciclar. Planificar con restricciones de movimiento es fácil en Moveit.

MoveIt permite aplicar diferentes restricciones de movimiento, las que han resultado más útiles para nuestra aplicación son las restricciones de orientación y articulación. 

  • Las restricciones de orientación:  ayudan a fijar la orientación deseada de cualquier eslabón (link) del robot. Son muy útiles cuando se desea mantener el extremo final del brazo manipulador del robot (end-effector) paralelo al suelo. En este caso sirve para mantener el end_effector, que es donde se encuentra la herramienta de succión para coger las cajas,  paralela al suelo.
  • Las restricciones de articulación: son útiles para limitar la posición de cualquier articulación del robot a un rango determinado. Y también lo son cuando se desea controlar la posición relativa de las articulaciones del robot durante el movimiento, manteniendo siempre una forma determinada. En este caso, permitió definir la posición entre el codo y hombro del brazo robótico, de forma que los movimientos que se ejecutan son más naturales y, además, se evitan configuraciones que pueden ser potencialmente peligrosas.

 

Figure 4:  Planificación de movimiento con restricciones de articulación y orientación vs sin.

Otra configuración que se puede realizar con MoveIt es modificar el algoritmo de planificación y  usar durante la planificación una configuración de espacio cartesiano o de espacio articulaciones a la hora de representar el problema de planificación que se debe optimizar.  Se puede intercambiar entre los dos espacios según la trayectoria final que se desee obtener.

  • Planificación en el espacio cartesiano (movimientos cartesianos): se utiliza cuando se desea seguir una trayectoria muy precisa con el extremo final del brazo (end-effector) donde se encuentra la herramienta. En este caso, usamos esta configuración al movernos desde la posición de aproximación a la caja hasta la posición de coger la caja y al revés. Debido a que el robot manipulador móvil debe cargar las cajas en su espalda para transportarlas, el espacio que existe es reducido y, por tanto, las cajas deben ir muy próximas, intentando evitar su deslizamiento durante el transporte y encajándose  dentro de unas bandejas. Usando una trayectoria calculada en espacio cartesiano queda asegurado que las cajas se elevan de forma totalmente vertical, evitando así enganches entre cajas y parones innecesarios, además de lograr que las cajas se queden exactamente dentro de las bandejas.
  • Planificación en el espacio de articulaciones: se utiliza habitualmente ya que permite obtener trayectorias mucho más naturales y fluidas. En este caso, se utilizó para mover el brazo de forma fluida entre diferentes posiciones que no tienen requerimientos muy estrictos de posición.

 

Figure 5: Motion Planning en espacio Cartesian vs espacio Joint.

Lo que se presenta en este post es solo un pequeño resumen de cómo en Robotnik se ha  usado MoveIt para desarrollar una aplicación de manipulación con un brazo robótico preliminar. MoveIt ofrece muchas otras herramientas que permiten desarrollar una aplicación compleja, algunas de las cuales incluyen: la integración de sensores que permiten añadir visión artificial para reconocimiento de objetos en el entorno  que se pueden importar al entorno de MoveIt, o el uso de algoritmos de deep learning para generar poses de agarre de diferentes objetos usando la herramienta instalada en el brazo manipulador.

Estas áreas serán exploradas a medida que avance el proyecto y, del mismo modo, compartidas para dar a conocer las últimas funcionalidades de MoveIt para desarrollar una aplicación de manipulación con brazo robótico.

A continuación puede ver un corto vídeo con una demostración de la situación actual de la aplicación de manipulación desarrollada instalada en un RB-KAIROS de Robotnik.

https://www.youtube.com/watch?v=JgyDB57xjDw