PhantomX Pincher

phantomx_pincher es un paquete de software para el entorno ROS, el cual permite simular un robot manipulador PhantomX Pincher en el entorno de simulación Gazebo. En este post se muestra el desarrollo de este proyecto, las herramientas usadas, y los resultados obtenidos.

El robot

El PhantonX Pincher es un robot manipulador de 4 grados de libertad. Es un brazo robótico de bajo costo con servomotores Dynamixel, utilizado en el ámbito académico para el estudio de robots manipuladores.

Los archivos 3D utilizados para este proyecto se encuentran alojados en la página GrabCAD: en la siguiente figura se observa una imagen del robot físico, junto a una vista renderizada de este robot.

PhantomX Pincher

Para ir a la página del modelo 3D, haz click aquí

Modelo URDF

A partir de los archivos CAD, se determinan cuales subconjuntos corresponden a articulaciones independientes del robot, tras lo cual, se generan archivos 3D tipo DAE. Para este robot se definieron cuatro conjuntos:

Cada conjunto es transformado a un archivo 3D independiente, junto a una versión simplificada utilizada como cuerpo sólido para las colisiones. Utilizando estos archivos 3D, se monta un modelo URDF, en el que se indican las relaciones entre los distintos conjuntos, las propiedades inerciales de cada conjunto y los tipos de junta.

El modelo URDF es utilizado por los programas RViz y Gazebo, tanto para la visualización como para la simulación de físicas.

RViz: visualización de las articulaciones

RViz es un software de visualización de topics, utilizado en ROS como una interfáz gráfica de proposito general para los distintos robots. Para este proyecto, RViz se usa como visualizador del modelo URDF del brazo robótico. En la siguiente figura se observa el modelo visual del robot (izquierda), junto al modelo de colisones del robot (derecha). Nótese como el modelo de colisiones tiene geometrías más sencillas, a diferencia del modelo visual, el cual es más detallado y realista.

Robot en RViz

RViz permite manipular el modelo del robot, moviendo las articulaciones que fueron definidas para este, por medio de una sencilla ventana con sliders. En la figura inferior se observa dicha interfáz y al robot PhantomX Pincher en una pose personalizada.

Robot en RViz

Gazebo: simulación con físicas realistas

Gazebo es una plataforma de simulación de robots en entornos realistas que funciona tambien con la plataforma ROS. Gazebo utiliza las propiedades físicas y las uniones definidas en el modelo URDF junto a las propiedades físicas del entorno para simular el comportamiento del robot real. En la siguiente figura se observa el modelo del robot en Gazebo con los centros de masa de cada uno de los conjuntos. La pose mostrada corresponde al home del robot: Gazebo simula los actuadores Dynamixel y los controladores de cada motor y aplica los torques necesarios para mantener extendido el brazo.

Robot en Gazebo, con centros de masa

El modelo de colisiones es utilizado por Gazebo para determinar en que puntos chocan los cuerpos sólidos con otros objetos. Esto permite al robot interactuar con piezas ubicadas en sus cercanías, lograndose simular tareas de pick and place o golpes en el suelo (por supuesto, no queremos eso).

Con Gazebo se crea un escenario con zonas de carga y descarga dibujadas en el suelo. Se agregan piezas pequeñas y ligeras que pueden ser agarradas por el gripper del robot. En la siguiente figura se observa parte del montaje.

Escenario en Gazebo

GUI con MATLAB

Se usa MATLAB para la elaboración de una GUI (Interfaz Gráfica de Usuario) que permita operar al robot, usando posiciones predefinidas, zonas de carga, zonas de descarga y las piezas pequeñas creadas para Gazebo. MATLAB incluye un plugin para enlazarse a ROS, por lo que la cinemática inversa puede resolverse en MATLAB y publicar mensajes de control hacia el robot.

La GUI permite visualizar la pose del robot, los valores articulares, selección de modo automático o manual y muestra la imagen de una cámara virtual añadida en escenario montado en Gazebo. La siguiente figura muestra el aspecto de la GUI.

MATLAB GUI

Experimento de teleoperación con ROS, AWS y Gazebo

El último objetivo del proyecto es realizar una tarea de teleoperación con el robot simulado en Gazebo, enviando comandos desde un PC remoto. Se monta una red VPN aprovechando los servicios gratuitos AWS (Amazon Web Services). Con la red, se enlazan dos computadores, uno ejecutando la simulación y el otro ejecutando la GUI de MATLAB. Aunque hay latencias debido a que los paquetes deben pasar primero por el nodo servidor de la VPN, la teleoperación y monitorización son posibles con estas soluciones. Para ver una demostración, consultar la sección Videos demostrativos.

Videos demostrativos

En el siguiente video se muestra un ejercicio sencillo con el PhantomX Pincher simulado en Gazebo. Se hacen tareas de pick and place enviando comandos al robot con un sencilla interfaz de usuario.

En el siguiente video se observa un proyecto de control remoto de un robot PhantomX Pincher en Gazebo y MATLAB. La simulación corre en un computador remoto, mientras la interfaz de control y visualización corren en un computador local. La conexión entre computadores se hace por medio de una VPN, usando para ello los servicios AWS.

Enlaces adicionales

Código fuente en Github