Home » Tutorial » Introducción a V-REP (Brazo Articulado)

Login with your Social Account

Introducción a V-REP (Brazo Articulado)

  •  
  •  
  •  
  •  
  •  
  •  

Tutorial de V-REP para montar un brazo robótico articulado partiendo desde cero.

V-REP (Virtual Robot Experimentation Platform) es un simulador de robótica con una extensa capacidad, funcionalidades y APIs (conjunto de funciones y métodos para ser utilizado por otros software).

El simulador de robótica V-REP dispone de una interfaz o entorno de desarrollo (IDE) en la que cada modelo u objeto está basado en una arquitectura de control distribuido (puede ser controlado por un script propio, un plugin, una aplicación cliente remota a través de su API, etc). Esto hace ideal a la plataforma de simulación en un entorno multi-robot. Los controladores de los robots pueden ser escritos en C/C++, Python, Java, Lua, Matlab o Urbi.

La siguiente lista son sólo una de las posibles aplicaciones de uso de V-REP:
Simulación de sistemas de fabricación automatizados.

  • Monitorización remota.
  • Control de hardware.
  • Prototipado rápido y verificación.
  • Monitorización de seguridad.
  • Enseñanza de robótica.
  • Presentación de producto.

V-REP puede ser utilizado como una aplicación individual (a través de su IDE) o puede ser incrustada en una aplicación cliente principal. Dispone de un intérprete de Lua (lenguaje de programación) que lo hace muy versátil con la capacidad de combinar funcionalidades de alto y bajo nivel para obtener resultados espectaculares con pocas líneas de código.

Eslabones del brazo robótico

Con objeto de introducir las diversas funcionalidades del software, utilizaremos un brazo robot, al que llamaremos Robot UC3M (Brazo Robótico de la Universidad Carlos III de Madrid, por Antonio Castro). Se trata de un brazo robot imprimible con impresoras 3D que muy bajo coste ligeramente adaptado con respecto al diseño original. Lo que obtendremos tras la realización de este tutorial nos permitirá tener un conocimiento del simulador cara a realizar el resto de tutoriales. El resultado esperado de este tutorial se muestra en la Figura:

Brazo_Robotico

Primero de todo, empezar una sesión nueva de V-REP. El simulador muestra una escena vacía por defecto. V-REP distingue dos tipos de geometrías, las puras y las no-puras. Las geometrías puras son primitivas tipo esferas, cilindros, prismas, etc. que permiten el cálculo rápido de colisiones con lo que son ideales para simular efectos que no necesariamente se tienen porque renderizar. Por contra, las geometrías no-puras suelen tener un coste computacional muy elevado de cálculo de colisiones, ya que están compuestas por facetas. Sin embargo, las tarjetas gráficas están preparadas para este propósito ya que disponen de hardware especializado que permite trabajar con geometrías muy diversas y renderizarlas, con lo que serán ideales para la visualización. Por lo tanto, normalmente las geometrías no-puras se utilizarán sólo para renderizado (lo que el usuario ve), mientras que las geometrías puras las utilizaremos para poder ejecutar rutinas propias del simulador (colisiones, dinámica, etc.) que el usuario no tiene porqué ver. V-REP dispone de un conjunto de dieciséis capas (estructuradas en dos filas de ocho capas cada una) en las que ubicar cada uno de los objetos que creamos. Por defecto las ocho primeras capas son visibles (la primera fila) y por conveniencia para hacer un objeto no visible lo pasaremos a su capa equivalente en la segunda fila (capas de la nueve a la dieciséis). Un objeto puede estar en varias capas simultáneamente. Las capas en las que un objeto es visible pueden modificarse dentro de las propiedades comunes del objeto, según se indica en la siguiente Figura y haciendo doble-click sobre el icono del objeto y pulsando al botón “Common”.

VREP_CommonProperties

Para generar geometrías no-puras podemos o bien importarlas o crearlas. En nuestro caso importaremos las geometrías a partir de los ficheros STL que se utilizan para imprimir el Robot UC3M en los ficheros:

Para ello accedemos a [File, Import, Mesh] y seleccionamos los ficheros (de uno en uno): “eslabon0.stl”, “eslabon1a.stl”, “eslabon1b.stl”, “eslabon2.stl”, “eslabon3.stl”, “eslabon4.stl”, “eslabon5.stl”, “servo1.stl”, “servo2.stl”, “servo3.stl”, “servo4.stl”, “servo5.stl”, “servo6.stl”, “servo7.stl”, “servo8.stl”, “pinza_base.stl”, “engranaje_izquierdo.stl”, “engranaje_derecho.stl”, “dedo_izquierdo.stl”, “dedo_derecho.stl”, “barra_izquierdo.stl” y “barra_izquierda.stl”. Las unidades de importación son metros y el vector Z apunta hacia arriba.

A cada pieza importada, le cambiaremos el nombre para poder identificarla adecuadamente. Para ello, en la ventana que pone “Scene hierarchy”, veremos un objeto con nombre “STL_Imported”, que si hacemos doble-clic sobre el nombre nos permitirá cambiarlo. Para posicionar/orientar el objeto en el entorno de simulación debemos primero seleccionarlo y luego pulsar los iconos “object/item shift” o “object/item rotate” object_item_shift_rotate, que se encuentra en el menú de iconos de la barra superior.

Importar las piezas anteriormente mencionadas con la posición y orientación que se indican en la Tabla 1. En principio, las piezas están correctamente posicionadas, mientras que la orientación depende de la propia geometría de la pieza. Por conveniencia, tras importar cada una de las piezas, accederemos al menú [Edit, Reorient bounding box, with reference of world], de esta forma la orientación de las piezas será en la configuración que denotaremos como HOME, siempre cero. Nos aseguraremos que la opción Static está activada, según se especifica en la Tabla 1. Para ello, accedemos dentro de las propiedades dinámicas del objeto tras pulsar el botón Show dynamic properties dialog dentro del cuadro de diálogo Scene Object Properties. Los objetos estáticos no pueden ser directamente actuados a través de articulaciones controladas por par/fuerza, si no que su posición y orientación dependerá de la posición y orientación de otros objetos. No tienen dinámica, es decir, ni masa ni inercia y por lo general los usaremos para objetos de geometría no-puras, si bien pueden haber otros casos, en los que queramos que una geometría pura no tenga propiedades dinámicas. Si una articulación tuviera que mover un objeto dinámico, entonces deberá estar o en modo par/fuerza o tener la casilla de modo híbrido activada, con lo que por el momento no son necesarios). Aseguraros que la posición y la orientación coincide con las indicadas en la Tabla 1.

Tabla1b

Tabla 1. Posiciones, orientaciones y propiedades dinámicas de las piezas del robot UC3M.

Articulaciones del brazo robótico

Las articulaciones pueden ser del tipo revolución, prismáticas o esféricas. En nuestro caso, todas las articulaciones del robot son del tipo revolución. Para crear una articulación accedemos al [Menu Add, Joint, Revolute]. Renombraremos las articulaciones recién creadas e introduciremos el nombre “articulacionX” siendo “X” el número de la articulación. Por conveniencia las articulaciones las nombraremos a partir del número 1.

Las articulaciones de la 1 a la 6 corresponden a las articulaciones centradas en los ejes de los servos de la parte del brazo, mientras que las articulaciones de la 7 a la 10 son la del servo 8 y los orificios del dedo izquierdo de la pinza y las articulaciones de la 11 a la 14 son la de los orificios del dedo derecho (incluida la del engranaje derecho). Las articulaciones 10 y 14 son las de los orificios de la pinza_base con las barras. Véase la siguiente Figura para mayor aclaración al respecto del nombre asignado a cada una de las articulaciones de la pinza.

VREP_ArticulacionesPinza1

Por defecto, las articulaciones están en el modo joint is in force/torque mode, sin embargo, por el momento utilizaremos el modo joint is in passive mode para las articulaciones de la 1 a la 7, dado que los objetos que moverán, es decir, los eslabones, son todos estáticos.

La articulación 11, del engranaje derecho, es una articulación dependiente de la articulación 7, con lo que seleccionaremos el modo joint is in dependent mode y luego pulsaremos al botón “Adjust dependency equation” e introduciremos la ecuación tal y como se muestra en la siguiente Figura. Este modo nos permitirá simular el mecanismo de engranaje de forma que el ángulo de una articulación será replicado por la otra.

VREP_JointDependencyEquation1

Las articulaciones de la 8 a la 14 (a excepción de la 11) las fijaremos en el modo joint is inverse kinematics mode que nos permitirá dejar que sea el propio programa de V-REP el que calcule la orientación que deben de tener estas articulaciones con objeto de resolver el mecanismo de la pinza.

En las propiedades de cada objeto articulación, cuadro de diálogo Scene Object Properties podemos también modificar el aspecto que tiene a partir de los parámetros Joint Length y Joint diameter, estableced dichos valores según se especifica en la Tabla 2. Por defecto las articulaciones aparecen en la capa dos (en el apartado de las propiedades comunes), si bien por conveniencia, las pasaremos a la capa diez (justo la de abajo).

La Tabla 2 muestra las propiedades que debe de tener cada articulación mientras que la Tabla 3 muestra su posición y orientación (fijaos especialmente en verificar que la posición y la orientación están como corresponde). Las propiedades de las articulaciones las localizaremos en el cuadro de diálogo Scene Object Properties, siendo las articulaciones de la 1 a la 8 y la articulación 12 no cíclicas (la casilla Position is cyclic debe estar desactivada) con los rangos que se especifican en la Tabla 2. A las articulaciones de la 8 a la 14 (a excepción de la 12), al no estar motorizadas ni limitadas por ningún mecanismo, las dejamos con la opción cíclica activada.

Tabla2b

Tabla 2. Propiedades de las articulaciones.

Tabla3b

Tabla 3. Posiciones y orientaciones de las articulaciones.

Además de las articulaciones, nos hará falta crear objetos del tipo dummy. Son objetos cuyo fin no es otro que el de poder posicionar o relacionar determinados objetos entre sí. Típicamente los utilizaremos para calcular la cinemática inversa del robot. Crearemos cuatro objetos del tipo dummy y los posicionaremos en los dos orificios comunes entre el objeto “pinza_base” y los objetos de las barras (dos objetos dummies a cada lado) accediendo a [Menu Add, Dummy]. Renombraremos los objetos de forma que se llamen “dummyIzqPinza”, “dummyIzqBarra” para los dummies del orificio de la derecha y “dummyDerPinza”, “dummyDerBarra” para los dummies del orificio de la derecha. Es importante que los dummies de un mismo dedo (izquierdo o derecho) tengan la misma posición y orientación. Posicionaremos los dummies de la izquierda en la misma posición que la articulación 10 y los dummies de la derecha en la misma posición que la articulación 14.

V-REP permite copiar propiedades de un objeto desde otro objeto. Podéis, por ejemplo, seleccionar “dummyIzqPinza” y, manteniendo el botón SHIFT pulsado, seleccionar el objeto “articulación” (desde el cual queremos copiar las propiedades). Después, para copiar la propiedad de la posición, accedemos al cuadro de diálogo “Object/Item position/orientation” pinchando sobre el icono rotación object_item_shift_rotate y pulsar al botón “Apply to selection”, tal y como se muestra en la siguiente Figura.

copy_properties

Relaciones de parentesco

Ahora es el momento de establecer la relación adecuada entre los eslabones, las articulaciones y el resto de objetos de la simulación. El objeto base será el eslabón 0, al cual activaremos la opción Object is model base en las propiedades comunes del cuadro de diálogo Scene Object Properties. Observaréis que aparece un punto justo a la izquierda del icono en los objetos que son modelos base tras activarlo. Esto permitirá tratar a todo el robot como un único objeto (para facilitar la copia entre diferentes escenas). La siguiente Figura muestra las relaciones de parentesco entre los diferentes objetos. Para hacer un objeto hijo de otro objeto (padre), simplemente debemos seleccionar el objeto hijo sobre su icono, arrastrarlo hasta el objeto padre y soltar. Para deshacer la relación de parentesco, repetid la operación, pero soltando el objeto  sobre la escena principal.

VREP_JerarquiaBrazoRobotNoPuras1

En esta figura se detalla el contenido de pinza_base:

VREP_JerarquiaBrazoRobotNoPuras2

Se observa que por lo general, para el caso de cadenas cinemáticas abiertas, haremos que un eslabón dependa de la articulación con su mismo número. Es eslabón 0 no se mueve y por tanto (por el momento) no depende de ningún otro objeto.

Para las cadenas cinemáticas cerradas como el caso de la pinza, debemos hacer hijos a los dummies “dummyIzqPinza” y “dummyDerPinza” de su objeto base, en este caso “pinza_base”. Los dummies de la barra (el otro extremo de la cadena cinemática) deben ser hijos de la última de las articulaciones.

Mecanismo de la pinza

Ahora pretendemos configurar los mecanismos de cadena cerrada para los elementos de la pinza, de forma que sea VREP quien calcule los valores de las articulaciones de los orificios (articulaciones de la 8 a la 14, exceptuando a la articulación 11). El objetivo es establecer una restricción geométrica entre los objetos dummies que hemos creado anteriormente, de forma que sea cual sea el valor de la articulación 7 (asociada al servo 8), VREP debe de calcular los ángulos correspondientes para que los dummies siempre permanezcan coincidentes.

En las propiedades de cada uno de los dummies de cada orificio seleccionamos en el menú despleglable “Linked dummy” al dummy correspondiente del mismo orificio y en el menú desplegable “Link type” seleccionamos “GCS, overlap constraint”. Observaréis que en la ventana “Scene Hierarchy” aparecen los dummies relacionados con una flecha de color (verde para el caso de la relación “GCS, overlap constraint”).

V-REP permite establecer determinadas relaciones para el cálculo de la cinemática inversa. De momento, utilizaremos la herramienta GCS (Geometric Constraint Solver) que permite fijar los valores de las articulaciones para el caso de mecanismos de cadena cerrada, como es el caso del mecanismo de la pinza. Si seleccionamos el objeto “pinza_base” y accedemos a [Menu Tools, Calculation modules] aparecerá el cuadro de diálogo “Calculation Modules”. De entre todas las opciones, nos centraremos, por el momento en el cálculo realizado por el “Geometric constraint solver” (véase Figura siguiente), pulsando al botón correspondiente. Si pulsamos al botón “Insert new object”, habremos establecido la relación geométrica entre los objetos.

VREP_CGS

Ahora ya estamos en disposición de simular el robot. Si pulsamos al botón “Start/Resume simulation” justo en la barra de iconos de la parte superior, comenzará la simulación. De momento no hace nada impresionante, pero al menos, ya habéis conseguido ensamblar vuestro primer robot en V-REP.

Imagen de previsualización de YouTube

 

A %d blogueros les gusta esto: