martÍnez - simulación de entornos con robots manipuladores móviles

Upload: hugo-javier

Post on 08-Mar-2016

226 views

Category:

Documents


1 download

DESCRIPTION

simulacion vrep

TRANSCRIPT

  • Escola Tcnica Superior dEnginyeria InformticaUniversitat Politcnica de Valncia

    Simulacin en entornos con robotsmanipuladores mviles

    Trabajo Fin de Grado

    Grado en Ingeniera Informtica

    Autor: Carlos Martnez Navarro

    Director: Enrique Jorge Bernabeu Soler

    Curso acadmico: 2014-2015

  • Resumen

    El objetivo del presente proyecto era realizar una plataforma que per-mitiera simular el comportamiento de un robot manipulador mvil en unentorno con objetos que deber manipular y esquivar, utilizando el softwareVREP (http://www.coppeliarobotics.com) en su versin gratuita PROEDU V3.2.1. Para ello, se ha creado el manipulador mvil a partir de dosmodelos del programa y se ha implementado un controlador para el robotmvil y otro para el manipulador.

    Este proyecto puede utilizarse para la prueba de distintos mdulos queofrece VREP, as como para modificar y aadir otros modelos de robots yentornos diferentes donde realizar distintas pruebas.

    Palabras clave: robtica, manipulador mvil, VREP, simulacin

  • ndice general

    1. Introduccin 6

    1.1. Contenido de la memoria . . . . . . . . . . . . . . . . . . . . . 7

    1.2. Motivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2. Desarrollo del proyecto 9

    2.1. Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    2.2. Herramientas utilizadas . . . . . . . . . . . . . . . . . . . . . . 10

    2.2.1. V-REP(Virtual Robot Experimentation Platform) . . . 11

    2.2.1.1. Interfaz de usuario: vista principal . . . . . . 12

    2.2.1.2. Objetos de la escena(Scene objects) . . . . . . 14

    2.2.1.3. Jerarqua de escenas(Scene hierarchy) . . . . 15

    2.2.1.4. Escritura de cdigo: scripts embebidos . . . . 16

    2.3. Diseo del entorno de simulacin virtual . . . . . . . . . . . . 17

    2.3.1. Gua de configuracin de objetos del manipulador mvil 17

    2.3.2. Gua de configuracin de objetos de escenario . . . . . 24

    2.3.3. Ampliacin del diseo principal . . . . . . . . . . . . . 26

    2.4. Implementacin de control delmanipulador mvil . . . . . . . . . . . . . . . . . . . . . . . . 28

    2.4.1. Programacin de la base mvil . . . . . . . . . . . . . . 28

    2

  • ndice general ndice general

    2.4.1.1. Planteamiento inicial . . . . . . . . . . . . . . 28

    2.4.1.2. Clculo de trayectorias: Path Planning module 30

    2.4.1.3. Scripts asociados . . . . . . . . . . . . . . . . 34

    2.4.2. Programacin del manipulador . . . . . . . . . . . . . 38

    2.4.2.1. Planteamiento inicial . . . . . . . . . . . . . . 38

    2.4.2.2. Scripts asociados . . . . . . . . . . . . . . . . 39

    3. Conclusiones 43

    4. Mejoras y trabajos futuros 44

    Apndices 46

    A. Cdigo de los scripts 47

    A.1. Cdigo del script asociado al robotmvil principal . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    A.2. Cdigo del script asociado al manipulador principal . . . . . . 52

    A.2.1. Cdigo del script asociado a la pinza del manipuladorprincipal . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    A.3. Cdigo del script asociado al robot mvil duplicado . . . . . . 56

    A.4. Cdigo del script asociado al manipulador duplicado . . . . . 60

    A.4.1. Cdigo del script asociado a la pinza del manipuladorduplicado . . . . . . . . . . . . . . . . . . . . . . . . . 62

    3

  • ndice de figuras

    2.1. Manipuladores mviles en diferentes reas de trabajo . . . . . 10

    2.2. Software de simulacin robtica VREP . . . . . . . . . . . . . 11

    2.3. Elementos de la interfaz de usuario . . . . . . . . . . . . . . . 13

    2.4. Diferentes tipos de objetos y su representacin . . . . . . . . . 14

    2.5. Scene Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    2.6. Scene Hierarchy: unin manipulador y robot mvil . . . . . . . 18

    2.7. Vista en VREP del cuadro Scene object propierties . . . . . . 19

    2.8. Vista en VREP del cuadro Scene object propierties:joint . . . 21

    2.9. Vista en VREP del cuadro Joint Dynamic Propierties . . . . . 22

    2.10. Vista en VREP con configuracin de objetos realizada . . . . . 24

    2.11. Vista en VREP del cuadro Object/item position/orientation . 25

    2.12. Vista en VREP con configuracin de objetos realizada . . . . . 26

    2.13. Vista en VREP con configuracin y ampliacin de objetos rea-lizada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    2.14. Modelo cinemtico configuracin diferencial de robot mvil . . 29

    2.15. Vistas en VREP de Scene object propierties . . . . . . . . . . 32

    2.16. Vista en VREP de la escena con todos los Paths Planningconfigurados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    4

  • ndice de figuras ndice de figuras

    2.17. Semejanza de un brazo manipulador con la anatoma humana 38

    2.18. Vista en VREP durante la simulacin despus de toda la con-figuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    A.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    A.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    A.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    A.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    A.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    A.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    A.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    A.8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    A.9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    A.10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    A.11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    A.12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

    A.13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    A.14. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    A.15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    5

  • Captulo 1

    Introduccin

    El objetivo del presente proyecto era realizar una plataforma que permi-tiera simular el comportamiento de un robot manipulador mvil. Este robotser duplicado y se crear un entorno con objetos que los dos robots debernmanipular de acuerdo a su programacin.

    Por un lado como robot mvil, es decir, como base de nuestro manipuladormvil, se ha elegido el robot Pioneer P3-DX de MobileRobots, del que yaexista un modelo disponible en el software utilizado para la simulacin. Esterobot presenta una configuracin diferencial de movimiento, contiene ochosensores de ultrasonido en la parte delantera y soporta una carga til de 17kg. Por otro lado, como robot manipulador se ha seleccionado el robot Micode Kinova, tambin disponible su modelo en el software utilizado. Se tratade un manipulador ligero de 6 grados de libertad con una rotacin ilimitadaen cada eje, tiene un alcance de 70 centmetros y un peso de 5 kg. Tambincabe resaltar que su pinza es configurable pudiendo controlar cada uno desus dedos.

    El entorno en el que se ha desarrollado la simulacin ha sido creado me-diante el simulador V-REP.

    6

  • Captulo 1. Introduccin 1.1. Contenido de la memoria

    1.1. Contenido de la memoria

    A lo largo de este documento se describir la realizacin de este proyecto.Para ello, se ha dividido la memoria en cuatro captulos. El primero contienedos apartados que tratan de hacer una introduccin y la motivacin que seha tenido para la realizacin del proyecto. El segundo captulo comprendela parte ms extensa del proyecto, el desarrollo del mismo. sta se divideen cuatro apartados y stos a su vez en subapartados. El primero trata deintroducirnos en el contexto y el mbito del proyecto. Despus se especifi-can las herramientas que se han utilizado, que en su casi totalidad ha sidoel software VREP. A continuacin se explica como se ha diseado y confi-gurado todo el entorno de simulacin, tanto los objetos del robot como losdel escenario. Para finalizar el ltimo apartado de este captulo detalla todala implementacin de los controladores del robot mvil y del manipulador.El tercer captulo tiene que ver con las conclusiones del trabajo, donde seplasma lo que primordialmente nos ha evocado nuestro estudio. El ltimocaptulo corresponde con unas posible mejoras y trabajos que en un futuropodran realizarse sobre este proyecto.

    Para concluir se muestran al final los cdigos implementados en el simula-dor y la resea bibliogrfica que ha servido de apoyo.

    7

  • 1.2. Motivacin Captulo 1. Introduccin

    1.2. Motivacin

    El objeto de estudio elegido para la realizacin de este TFG responde amotivaciones personales, relacionadas estas con mis estudios acadmicos. Alo largo de toda mi formacin como ingeniero informtico en la universidad ysobretodo durante los dos ltimos cursos, en los que escog la especializacinde Ingeniera de Computadores, he ido interesndome cada vez ms en larobtica, automtica e informtica industrial. Gracias en parte a asignaturasque he cursado como Control por Computador o Mecatrnica, me he dadocuenta de la importancia que tiene el campo de la robtica o el campo dela automatizacin industrial actualmente en nuestras vidas. En la actualidadexisten muchas reas de investigacin en el campo de la robtica. Concreta-mente el rea que estudia los robots manipuladores mviles me pareci muyinteresante, simplemente por el hecho de pensar que un manipulador mvilte permite sumar las ventajas de los dos robots que lo conforman: la pla-taforma mvil y el brazo robtico. El robot mvil permite extender el reade trabajo al manipulador, llegando a lugares y manipulando objetos que nopodra hacer por si solo.

    Tras haberme documentado, no encontr demasiados proyectos similaresque trataran la simulacin con robots manipuladores mviles. Esto tambinhizo que despertara mi curiosidad sobre este tipo de robots. Este proyectopodra servir como plataforma para la prueba de movimientos de robotsmanipuladores mviles y de su interaccin con el entorno, esto es, planificandocaminos, esquivando y manipulando distintas clases de objetos, etc, parafacilitar la investigacin y el desarrollo de los mismos.

    8

  • Captulo 2

    Desarrollo del proyecto

    2.1. Contexto

    Este proyecto se sita dentro de la ingeniera automtica, ms concreta-mente en la robtica. Existen dos grandes grupos en los que se divide larobtica: robots manipuladores y robots mviles. Los primeros estn im-plantados en la industria de forma muy importante, y aunque se investigasobre ellos en reas muy concretas, son los robots mviles los ms recientes ycon la investigacin mucho ms activa. Cuando se combinan estos dos tiposde robots, se construyen los robots manipuladores mviles. Este sistema demanipulacin mvil ofrece una doble ventaja, la movilidad que presenta laplataforma o robot mvil y las mltiples funcionalidades que proporciona elmanipulador. Sin embargo, el funcionamiento de este sistema es complejodebido a los muchos grados de libertad y al medio ambiente no estructuradoque realiza.

    La manipulacin mvil es un tema de inters en entornos de desarrollo e in-vestigacin. Los manipuladores mviles pueden ser autnomos o teleoperadosy se utilizan en muchas reas diferentes, como por ejemplo en:

    Misiones espaciales de exploracin

    Operaciones militares

    9

  • 2.2. Herramientas utilizadas Captulo 2. Desarrollo del proyecto

    Atencin domiciliaria y de salud

    (a) Robot Rover: misin exploracina Marte

    (b) Robot Varan: utilizado para des-activar bombas

    (c) Manipulador mvil G-ball deRobotnik

    (d) Manipulador mvil Youbot deKuka

    Figura 2.1: Manipuladores mviles en diferentes reas de trabajo

    A pesar de la necesidad de automatizacin inteligente y flexible en el m-bito industrial, la aplicacin e integracin de los manipuladores mviles hasido limitada. Una razn de esto es la forma tradicional en que actan lasindustrias, sin asumir riesgos por la aplicacin de nuevas tecnologas.

    2.2. Herramientas utilizadas

    La principal herramienta utilizada para la realizacin de este proyecto hasido el software Coppelia Robotics V-REP(Virtual Robot ExperimentationPlatform), en su versin de licencia de estudiante gratuita V-REP Pro Edu,

    10

  • Captulo 2. Desarrollo del proyecto 2.2. Herramientas utilizadas

    que se puede descargar de la pgina oficial (http://www.coppeliarobotics.com/downloads.html).

    Se han utilizado dos equipos porttiles distintos. Un equipo para la redac-cin del proyecto con un sistema operativo Linux; y otro equipo ms completopara trabajar con el simulador, con un procesador Intel i7 y 8 GB de memo-ria RAM con el sistema operativo Windows 8.1. El equipo principal era elprimero, pero V-REP necesitaba ms hardware y por lo tanto no funcionabalo suficientemente bien.

    2.2.1. V-REP(Virtual Robot Experimentation Platform)

    V-REP es el software ideal para lo que se pretende, que es realizar unasimulacin de un entorno con robots manipuladores mviles en tiempo real.Contiene gran cantidad de opciones a la hora de establecer propiedades f-sicas del robot, as como para su control (extensa capacidad de APIs) yvisualizacin de informacin.

    Figura 2.2: Software de simulacin robtica VREP

    Este software lleva un entorno de desarrollo integrado que esta basado enuna arquitectura de control distribuida. Esto presenta una gran ventaja yaque cada objeto o modelo se puede controlar individualmente de seis ma-neras de programacin distintas: scripts embebidos, plugins, API remota de

    11

  • 2.2. Herramientas utilizadas Captulo 2. Desarrollo del proyecto

    cliente, complementos (add-ons), nodo ROS y cliente/servidor personaliza-do. Adems cualquiera de estas formas que se elijan, es compatible con loslenguajes de programacin ms extedidos actualmente, como por ejemploC/C++, Python, Java, Matlab, etc.

    Tambin cuenta con otra ventaja muy importante, que es la gran cantidadde informacin que aporta el propio programa y su pgina web oficial, me-diante ejemplos, tutoriales y archivos con cdigo de control de los cuales unose puede apoyar para configurar lo que necesite.

    Aparte de lo mencionado anteriormente VREP presenta otras caracters-ticas importantes a destacar en el proyecto como:

    Software multiplataforma y portable para windows, Linux y MAC OS.

    Tres motores fsicos diferentes para mayor velocidad en los clculosdinmicos, como tambin permite simulaciones fsicas e interaccionescon objetos del mundo real.

    Mecanismos importantes para la simulacin como la cinemtica direc-ta/inversa, la deteccin de colisiones, el clculo de una distancia mni-ma, path/motion planning, etc.

    Integracin, creacin y edicin de modelos y objetos.

    Simulacin con sensores de proximidad y de visin.

    Personalizacin de la interfaz de usuario.

    2.2.1.1. Interfaz de usuario: vista principal

    Al iniciar VREP, se abre por defecto una escena. Las escenas son el elemen-to principal del programa. stas estn formadas por subelementos llamadosmodelos.

    Se puede navegar por el entorno mediante el ratn. Para poder rotar laescena se utiliza la barra de herramientas, que contiene adems todas lasfuncionalidades de la simulacin: propiedades fsicas, manipulacin de los

    12

  • Captulo 2. Desarrollo del proyecto 2.2. Herramientas utilizadas

    objetos, visualizacin con las diferentes cmaras, etc. A la hora de alejar yacercar la imagen tambin se puede utilizar la rueda del ratn.

    Figura 2.3: Elementos de la interfaz de usuario

    Un elemento de la interfaz muy destacable es el buscador de modelos quevienen por defecto en VREP. ste se encuentra en una ventana en la parteizquierda y estn ordenados por carpetas muchos de los modelos de robotsmviles, manipuladores, componentes, equipamiento, decoracin, etc, de fa-bricantes importantes de robtica. Estos modelos se pueden modificar, comotambin se puede disear un modelo propio.

    Para conocer con detalle cada elemento de la interfaz de usuario, VREPdispone de un manual de usuario, que tambin contiene las formas de pro-gramar, el clculo de mdulos, el funcionamiento de la simulacin, tutoriales,etc.

    13

  • 2.2. Herramientas utilizadas Captulo 2. Desarrollo del proyecto

    2.2.1.2. Objetos de la escena(Scene objects)

    Los principales elementos que se usan en VREP para crear una escenade simulacin son los objetos. Estos son visibles en la jerarqua de escenasmediante un smbolo que distingue cada tipo; y en la escena de la vistaprincipal se representan en tres dimensiones.

    Hay varios tipos de objetos y cada uno tiene sus opciones de configuracin.Alguna vez interesa asignar a los objetos unas propiedades especiales que lespermiten interactuar con otros objetos mediante el clculo de mdulos (de-teccin de colisiones, mnima distancia entre dos objetos, cinemtica inversa,path/motion planning, etc)

    Figura 2.4: Diferentes tipos de objetos y su representacin

    Cada objeto tiene una posicin y orientacin respecto a la escena. Estasse pueden cambiar como se desee en la barra de herramientas, en la seccinllamada object position/orientation manipulation. Otra propiedad importan-te de los objetos es que se pueden ensamblar a otros objetos, estableciendoas relaciones tales como el objeto A es hijo del objeto B. Por lo tanto,

    14

  • Captulo 2. Desarrollo del proyecto 2.2. Herramientas utilizadas

    si por ejemplo movemos el objeto B, el objeto A le sigue. Alternativamente,tambin se pueden desensamblar los objetos.

    Las dos ltimas caractersticas pertenecientes a los objetos han sido devital importancia dominarlas para la realizacin del proyecto.

    2.2.1.3. Jerarqua de escenas(Scene hierarchy)

    La jerarqua de escenas aparece por defecto a lado del buscador de modelosmencionado en el apartado anterior. sta contiene todas las escenas abiertaspor VREP. Si se hace doble click en una escena, en esta ventana se desplegantodos los objetos que componen la escena. Tambin se puede desplegar cadaelemento individual de los objetos, quedando al final una ventana en formade rbol ordenado todo jerrquicamente.

    Figura 2.5: Scene Hierarchy

    En esta jerarqua de escenas aparecen tambin todas las relaciones padre-hijo de los objetos de la escena. Otro detalle que podemos observar son los

    15

  • 2.2. Herramientas utilizadas Captulo 2. Desarrollo del proyecto

    scripts de control asociados al objeto que lo necesite. Estos sern explicadosms adelante, pero hay que destacar que se diferencian por su color y que sepueden editar haciendo doble click sobre ellos.

    La jerarqua de escenas ha sido un elemento muy importante a la hora dedesarrollar el proyecto, ya que facilita mucho la estructuracin y la manipu-lacin de los objetos de nuestra escena.

    2.2.1.4. Escritura de cdigo: scripts embebidos

    Como ya se haba mencionado anteriormente, VREP soporta seis formasdiferentes de programar nuestro cdigo de control. En este proyecto se haescogido la opcin de los scripts embebidos por su sencillez y flexibilidad. Estaflexibilidad aparece gracias al interprete de script que tiene VREP integrado.El lenguaje de scripting que presenta VREP es LUA. ste es un lenguaje deextensin y dado que esta basado en C, fue una gran ventaja a la hora derealizar el proyecto.

    Cuando se dice que un script est embebido, lo est en una escena, porejemplo un script que es parte de una escena ser cargado y guardado con elresto de la escena.

    VREP contiene varios tipos de script, pero en este proyecto se van a utilizarlos dos ms usuales:main script y child script. Los primeros controlan el buclede simulacin principal y los otros se encargan de controlar los modelos orobots.

    En la implementacin que veremos ms adelante, editaremos los childscripts asociados a los objetos que tengamos que controlar. Utilizaremos dostipos de child scripts: los non-thread child scripts y los thread child scripts.

    Para poder abrir el editor de scripts haremos doble click en el icono descript que aparece en la jerarqua de escenas junto a algn objeto.

    A lo largo del proyecto, se ha programado el control del robot manipuladormvil mediante este editor y el lenguaje LUA, apoyndose en la extensa APIque presenta VREP con ms de 300 funciones.

    16

  • Captulo 2. Desarrollo... 2.3. Diseo del entorno de simulacin virtual

    2.3. Diseo del entorno de simulacin virtual

    2.3.1. Gua de configuracin de objetos del manipula-dor mvil

    Para empezar a construir el entorno de la simulacin se debe disear losmodelos de robot mvil y manipulador, o bien elegir algunos de los modelosde diferentes fabricantes que tiene por defecto VREP. En este caso, como elprincipal objetivo del proyecto no es realizar un diseo 3D de los robots, sehan seleccionado dos modelos adecuados de VREP. Los modelos utilizadosya se han detallado anteriormente en la introduccin del proyecto(1).

    La siguiente parte del proceso sera la creacin en s del robot manipula-dor mvil. Para ello se debe unir el manipulador al robot mvil que se haelegido. Para poder hacer esto correctamente el robot mvil debe contenerun sensor de fuerza (force sensor) que le permita al manipulador moverse sinningn problema. En este caso no es necesario aadirlo, ya que el modelo lolleva por defecto. Para terminar este proceso hay que seleccionar el sensordel robot mvil y con la tecla control pulsada, seleccionar el objeto base delmanipulador que en este caso se llama Mico y apretar en la opcin assem-ble/disassemble situada en la barra de herramientas superior. Un objeto basese distingue en el cuadro Scene hierarchy con un smbolo redondo plateado.Una vez hecho esto, el manipulador pasa a ser hijo del robot mvil.

    17

  • Captulo 2. Desarrollo...

    Figura 2.6: Scene Hierarchy: unin manipulador y robot mvil

    Una vez se han unido los componentes del manipulador mvil, se procederaa orientar y colocar los objetos de manera que formen el robot tal y comodebera ser, por comodidad y por facilidad en los pasos siguientes, usandolos botones Object/item shift y Object/item rotate situados en la barra deherramientas superior.

    A continuacin se definira si los objetos que se van a configurar son es-tticos (Static) o no. Los objetos estticos son aquellos que no pueden serdirectamente actuados, si no que su posicin y orientacin dependen direc-tamente de otros objetos. Los objetos que no sean estticos, sern dinmicosy son los objetos que el motor de simulacin dinmica de VREP tratar.

    18

  • Captulo 2. Desarrollo...

    Tanto el manipulador como el robot mvil se definirn como no estticos. Enconsecuencia para cada uno se definirn sus masas (de manera aproximada).La masa del manipulador se deja como viene por defecto, pero la del robotmvil se debe incrementar hasta cuatro veces su masa original. Esto se hacepara que en la simulacin el robot mvil sea lo suficientemente robusto parasoportar el peso del manipulador, es decir, que en cualquier movimiento elrobot mvil no vuelque o cambie a una posicin errnea.

    Para cambiar la masa del robot mvil (tambin cualquier configuracindinmica de simulacin del objeto), se clica en la lista de la izquierda, Scenehierarchy, y sobre el icono del objeto base del robot mvil(Pioneer_p3dx)se hace doble click para abrir el men Scene object properties. Una vez enese men en el subapartado Show dynamic propierties dialog estn todas laspropiedades dinmicas para el objeto, como la masa y si ser esttico o no.

    Figura 2.7: Vista en VREP del cuadro Scene object propierties

    Llegados a este punto, el robot mvil queda configurado completamen-te. Ahora queda configurar el brazo robtico o manipulador y aadirle unelemento fundamental: la pinza o mano robtica (gripper).

    19

  • Captulo 2. Desarrollo...

    Para completar el manipulador mvil se le debe aadir una pinza que lepermita manipular los objetos que se han fijado para la simulacin. En elmen Model browser que se ha utilizado anteriormente para elegir el robotmvil y el manipulador, se encuentra la carpeta components que contienela subcarpeta grippers. En ella podremos desplegar una lista de pinzas dediferentes tipos (succin, tres dedos, dos dedos). Una de estas es la pinzaque corresponde a nuestro manipulador siendo del mismo fabricante (Micohand). Se trata de una pinza configurable que se compone de dos dedos quepueden ser controlados individualmente. Del mismo modo que se ha unidoel manipulador a la base mvil lo haremos con la pinza al manipulador. Laltima articulacin del manipulador lleva incorporado el sensor de fuerzanecesario para ensamblar el componente. Una vez se haya ensamblado lapinza al manipulador, se crear la misma situacin de parentesco que en elmanipulador y el robot mvil.

    Para terminar slo quedara configurar el manipulador. En este proyectoal no haber diseado el propio manipulador, la configuracin que viene pordefecto es prcticamente la adecuada para el posterior control del mismo. Sinembargo, se explicaran algunas modificaciones y detalles importantes paraentender el control del manipulador.

    Lo primero, aunque es algo opcional, posicionariamos las articulacionescomo queramos que comiencen en nuestra simulacin. Para ello se clica enel icono de cada articulacin entrando en el men Scene object propierties.Una vez ah, en el apartado Position se cambia la posicin de la articulacina los grados que se desee.

    Otra caracterstica importante en las articulaciones es su rango de posicio-namiento. En el manipulador utilizado ya viene configurado y solo la segunday tercera articulacin presentan un rango limitado del eje. Para acceder a es-tas propiedades, simplemente realizamos el mismo procedimiento que hemosutilizado antes, accediendo al men Scene object propierties. Una vez all, siPosition is cyclic est marcado, quiere decir que tendr una rotacin ilimi-tada del eje y ser el propio programa el que gestione su movimiento.

    20

  • Captulo 2. Desarrollo...

    Figura 2.8: Vista en VREP del cuadro Scene object propierties:joint

    Tambin tenemos que elegir el tipo de control que queremos para el mo-vimiento de cada articulacin. Para ello se entra al mismo men que lasanteriores veces, clicando esta vez en Show dynamic parameters. Por defec-to el manipulador esta diseado con las articulaciones en modo Par/Fuerza(torque/force mode). En este modo las articulaciones son simuladas por losmdulos dinmicos del propio simulador y soporta distintos mtodos de con-trol. Principalmente la articulacin puede operar de dos modos:

    Control de velocidad: si en el men que hemos indicado se encuentramarcado Motor enabled y la casilla Control loop enabled desmarcada,entonces la articulacin tratar de llegar a la velocidad objetivo (Targetvelocity) deseada dado el mximo par/fuerza (Max.torque/force) que escapaz de ofrecer. Cuando ese valor mximo es muy alto, la velocidadde destino se alcanza instantneamente.

    21

  • Captulo 2. Desarrollo...

    Control de posicin: si estan marcados Motor enabled, Control loopenabled y adems tenemos habilitado Position control(PID), los par-metros del PID tratarn de dirigir la articulacin a la posicin deseada.

    Para este proyecto se va a utilizar el control de posicin con una simplemodificacin con respecto a como estaba configurado el manipulador pordefecto. Esta consiste en reducir la Upper velocity limit, que permite limitarla velocidad de regulacin a un valor mximo. Esto se hace para que enla simulacin, cada movimiento de las articulaciones se realice con mayoramortiguacin y precisin, ya que la velocidad del motor es menor.

    Figura 2.9: Vista en VREP del cuadro Joint Dynamic Propierties

    Ahora solamente faltara configurar la pinza de nuestro manipulador, perose ha decidido que las propiedades que lleva por defecto son las necesariaspara una correcta manipulacin.

    22

  • Captulo 2. Desarrollo...

    Lo nico que falta para que el manipulador mvil est correctamente con-figurado, sera marcar en Object special propierties del men Scene ObjectPropierties / Common las casillas Collidable, Renderable, Detectable y Mea-surable. Es un paso importante, ya que si no se marcaran el objeto no seradetectado por los dems objetos del entorno, aparte de no poder correr enla simulacin desapareciendo del espacio de trabajo al no considerarse unobjeto fsico. Tampoco podramos usar los modulos de clculo de distanciamnima, deteccin de colisiones,etc, que nos ofrece VREP.

    El paso ms importante para el correcto funcionamiento de la simulacin,viene dado por las relaciones de parentesco que se establezcan entre los dis-tintos objetos que componen el robot. Si no se hace correctamente este paso,se provocaran anomalas en el funcionamiento de la simulaccin puesto queno se movera como si fuera un solo ente.

    Las relaciones de parentesco pues, implican una relacin de dependenciade unos componentes a otros. Aunque en este proyecto, al utilizar un mani-pulador y un robot mvil ya diseados, estas relaciones ya estaban implcitas.Pero a la hora de unir el manipulador y la base mvil si que hay que fijarseque la relacin de padres e hijos sea la correcta.

    Para explicarlo de otra manera, la relacin de parentesco influye en ladependencia e independencia de los movimientos de unas articulaciones conrespecto a otras. Por ejemplo, que la pinza del manipulador se mueva noafecta nada al resto de articulaciones. Sin embargo, si la primera articulacin(base del manipulador) rota, el brazo entero rotar al estar ste unido a labase.

    23

  • Captulo 2. Desarrollo...

    Figura 2.10: Vista en VREP con configuracin de objetos realizada

    2.3.2. Gua de configuracin de objetos de escenario

    Para terminar de configurar el entorno de simulacin virtual con el manipu-lador mvil que se ha creado anteriormente, necesitamos disear un escenariode simulacin con diferentes objetos que proporciona VREP, los cuales nospermitirn que el robot interactue y muestre su funcionalidad.

    La primera parte sera orientar y colocar el manipulador mvil como quera-mos en el escenario. En nuestro caso el robot se situar centrado en el suelo(ResizableFloor) del escenario, mientras que estar orientado exactamentecon los siguientes ngulos: = 0o, = 0o, = 180o.

    Para poder modificar la orientacin y la posicin en plano de cualquierobjeto, debemos seleccionarlo y apretar a los botones Object/item shift parala posicin, u Object/item rotate para la orientacin. Estos se encuentran enla barra de herramientas superior y se puede cambiar el valor exacto de cadaeje de coordenadas, o bien arrastrando con el botn izquierdo del ratn elobjeto.

    24

  • Captulo 2. Desarrollo...

    Figura 2.11: Vista en VREP del cuadro Object/item position/orientation

    El siguiente paso sera crear los objetos para nuestra escena de simulacin.Se ha utilizado lo que en VREP se denomina Primitive shape, ms concre-tamente dos cubos (Cuboid) para simular las mesas o superfcies donde sesituarn los objetos que nuestro robot debe manipular. Para crear este tipo deformas primitivas, simplemente clicamos con el botn derecho en la escena yelegimos del desplegable Add >Primitive Shape >Cuboid. Despus podemosescalar y posicionar el objeto como ya hemos explicado anteriormente.

    Para finalizar hay que elegir algn tipo de objeto para la manipulacin denuestro robot. VREP ofrece mltiples posibilidades, incluso se puede disearo importar. Aqu se ha elegido un objeto sencillo pero que a la vez requierecierta precisin a la hora de manipularlo: un vaso. De nuevo se ha seleccio-nado uno de los modelos que ofrece VREP. Vamos al men Model browser ydentro de la carpeta household encontramos nuestro objeto Cup. Colocare-

    25

  • Captulo 2. Desarrollo...

    mos dos vasos encima de la mesa ms centrada en determinadas posicionesestablecidas para su posterior manipulacin.

    Otro detalle muy importante a tener en cuenta en los objetos que se acabande crear, es marcar todas las opciones especiales (Collidable, Renderable, etc)que habamos marcado anteriormente en nuestro robot, para que en cualquierclculo de control el programa los considere como objetos.

    Figura 2.12: Vista en VREP con configuracin de objetos realizada

    2.3.3. Ampliacin del diseo principal

    Hasta ahora hemos creado un entorno de simulacin virtual con un ro-bot manipulador mvil, el cual hemos configurado para su posterior control.Tambin se han configurado los objetos restantes para simular la escena.

    Profundizando ms, nuestro robot desempear una simple tarea, que con-sistir en llegar al objeto destino (vaso), agarrarlo y transportarlo a unaposicin objetivo.

    Dada la simplicidad de esta simulacin, se ha pensado realizar una especiede ampliacin de la idea principal. Esta consiste en duplicar el robot que

    26

  • Captulo 2. Desarrollo...

    ya hemos creado y configurado, diseando as un entorno de simulacin unpoco ms complejo, donde los dos robots realicen sus correspondientes tareassimultneamente.

    La simulacin que se ha hecho en el proyecto con los dos robots se podraanalizar como un espacio (primera mitad de la escena) en el que solo el robotsituado ah se encargara de la manipulacin de objetos. La otra mitad laocupara el segundo manipulador que tambin sera el nico que se encargarade recorrerla. Si por ejemplo se quiere pasar el vaso de una mitad a otra, stedebera ser manipulado por los dos robots que interactuaran entre ellos. Estoes un posible anlisis, pero tambin se puede ver como una simple escena querepresenta el concepto bsico de la manipulacin mvil.

    Duplicar el robot en VREP es muy sencillo, nicamente se selecciona el ob-jeto base y padre del manipulador mvil en Scene Hierarchy y utilizamos laconocida combinacin de teclas de copiar/pegar Contol+C y Control+V.Con esto VREP crea automticamente una copia del robot, pero aadiendo-le al nombre del propio y al de todos los objetos que lo componen un sufijoque lo distinga del original. Por ejemplo, duplicamos el objeto Cuboid1 y elnombre de la copia que origina VREP es Cuboid1#0. Por lo tanto, cuan-do tengamos que acceder a un objeto a la hora de programarlo, podremosdistinguir la copia del original.

    Por ltimo, debemos tener en cuenta cual es el momento ms convenientepara realizar la copia del robot. En este caso, una vez hayamos configuradonuestro robot por completo podremos duplicarlo. Despus ya pasaremos aprogramar el control de cada uno.

    27

  • 2.4. Implementacin de control delmanipulador mvil Captulo 2. Desarrollo...

    Figura 2.13: Vista en VREP con configuracin y ampliacin de objetos rea-lizada

    2.4. Implementacin de control delmanipulador mvil

    Una vez configurado el manipulador mvil y toda la escena necesaria parala simulacin con todo detalle dentro de VREP, faltara la programacin denuestro robot para otorgarle acciones de control que simulen su movimien-to real. Primero se programar el robot mvil, con su recorrido hacia lasposiciones donde el manipulador consecutivamente podr manipular el ob-jeto. En este ltimo tambin habr que controlar cada movimiento de susarticulaciones.

    28

  • Captulo 2. Desarrollo...

    2.4.1. Programacin de la base mvil

    2.4.1.1. Planteamiento inicial

    El primer paso que se da en el control del robot mvil que se ha utilizadocomo base del manipulador mvil, es conocer detalladamente la configuracindel mismo, esto es, analizar como estn distribuidos los principales elementosque lo componen: ruedas, motores, sensores. En relacin a las ruedas, laconfiguracin que tiene nuestro robot es la diferencial.

    La configuracin diferencial se presenta como la ms sencilla de todas lasutilizadas tpicamente en robtica mvil. Consta de dos ruedas diametralmen-te opuestas en un eje perpendicular a la direccin del robot. Cada una de ellasir dotada de un motor, de forma que los giros se realizan dndoles diferentesvelocidades. En VREP los motores de las dos ruedas se visualizan en SceneHierarchy unidos al objeto base del robot como Pioneer_p3dx_leftMotor yPioneer_p3dx_rightMotor.

    Con dos ruedas es imposible mantener al robot horizontalmente, ya quese producen cabeceos al cambiar de direccin. Para resolver este proble-ma se aaden lo que se conoce como ruedas locas. Estas ruedas no lle-van asociadas ningn motor, giran libremente segn la velocidad del robot.sta tambin se ve representada en nuestra escena de VREP como Pio-neer_p3dx_caster_link_visible.

    29

  • Captulo 2. Desarrollo...

    Figura 2.14: Modelo cinemtico configuracin diferencial de robot mvil

    El modelo cinemtico servir como apoyo para la implementacin del scriptde control para otorgar a nuestro robot mvil la orientacin, posicin y ve-locidades adecuadas.

    Por otro lado nuestro robot debera ser capaz de esquivar objetos si esnecesario y por supuesto de generar una trayectoria hacia una posicin ob-jetivo en la escena. El modelo escogido incorpora en su diseo en la partefrontal sensores de ultrasonidos que nos solucionarian nuestros problemas.Sin embargo VREP proporciona un mdulo que permite calcular o planifi-car trayectorias a partir de un camino preestablecido (path) llamado PathPlanning. Por la facilidad que nos da para el objetivo del proyecto, ste es elmtodo elegido.

    2.4.1.2. Clculo de trayectorias: Path Planning module

    Como ya se ha comentado anteriormente VREP ofrece potentes funcio-nalidades de clculo o como lo llaman calculation modules. Estos mdulosno encapsulan directamente a un objeto de escena, si no que trabajan conobjetos de clculo definidos por el usuario. stos son diferentes que los deescena, pero se relacionan indirectamente operando en ellos. Un detalle im-

    30

  • Captulo 2. Desarrollo...

    portante que se tendr en cuenta sobre los objetos de clculo es que al realizaruna operacin de copiar/pegar en un objeto de escena, tambin se duplica elobjeto de clculo que iba asociado.

    El mdulo que se emplear es el de planificacin de trayectorias o PathPlanning. Permite realizar clculos de planificacin de caminos para objetosde dos a seis dimensiones. Pero la funcin que interesa de este mdulo y seva hacer uso de ella es la planificacin para robots no-holonmicos. Decimosque un robot es holonmico si es capaz de modificar su direccin instant-neamente (masa nula) y sin necesidad de rotar previamente.

    Para trabajar con Path Planning se toman varios valores o parmetros deentrada (objetos):

    Una entidad robot: representa el dispositivo que debe evitar los ob-tculos, siendo nuestro manipulador mvil.

    Start dummy: objeto especial que representa la configuracin inicialdel robot. Para crearlo clicamos con el botn derecho en la escena yseleccionamos Add >dummy. Tenemos que asegurarnos que la posiciny orientacin coinciden con el centro del robot. Dentro de Scene objectpropierties/Dummy se marcar la casilla Follow parent path orienta-tion(only indirect parent). Con esto el dummy no est directamenterelacionado con el camino, y sigue nicamente la orientacion de lospuntos del camino.

    Goal dummy: representa la configuracin deseada del robot. Los al-goritmos de planificacin se encargan de mover el Start dummy haciaeste objetivo evitando colisiones y obtculos. Lo situamos con una posi-cin y orientacin ptimas para que el manipulador pueda realizar susmovimientos sin problemas. Se dejar sin marcar la casilla comentadaen Start dummy, ya que este objeto no tendr que seguir al camino.

    Una entidad obstculo: representan los obtculos que hay que evitar.

    Camino o Path: acta como un contenedor para una trayectoria cal-culada por el Path Planning. Para crear este objeto de clculo seguire-mos el mismo procedimiento que en los dummies: Add >Path >Segment

    31

  • Captulo 2. Desarrollo...

    Type. Las propiedades que vienen por defecto al crearlo son las necesa-rias, aadiendo las tres casillas de Scene object propierties/ path/ Mainpropierties, que nos ayudarn con la visualizacin del path en la escena.

    En cuanto a las relaciones de parentesco de estos objetos en Scene hie-rarchy, los paths y end dummies se sitan al mismo nivel que la entidadrobot, descendiendo de la propia escena. Sin embargo, los start dummiespasarn a ser padres de los dos robots.

    Como hay cuatro trayectorias, dos por cada robot, el start dummy delprimer camino ser hijo del start dummy del segundo camino que tiene querealizar ese robot. Tambin ser hijo el tercero del cuarto, que pertenecerna las trayectorias del robot duplicado.

    Con los objetos de entrada creados, slo faltara construir los propios PathPlanning. Para crear un Path Planning tenemos que clicar en la opcin calcu-lation module propierties que encontramos en VREP en la barra de la parteizquierda. Una vez en el men, seleccionamos la pestaa de Path Planningy aadimos los objetos de entrada creados anteriormente. Primero pulsare-mos Add new object donde aparecer un submen, en el cual indicaremosnon-holonomic y el start dummy correspondiente. Se nos crear un Path-PlanningTask que podremos modificar su nombre como queramos.

    A continuacin procederemos a rellenar cada campo con su objeto corres-pondiente. Por ejemplo en Associated objects indicaremos la configuracinobjetivo (end dummy) y el path. En el subapartado Illegal configuration checkconfiguramos nuestro robot para que no se le permita colisionar con ningnobjeto en toda la escena.

    Un ltimo paso importante, es el de ajustar el rea en la que el mdulo PathPlanning es capaz de clcular la trayectoria. Para ello abrimos el submenAdjust search parameters y modificamos el rango de bsqueda variando lascoordenadas hasta que encontremos la deseada. La casilla Visualize the searcharea es de gran ayuda a la hora de concretar el rea. Las dos ltimas casillasson opcionales, pero tambin se ha ido jugando con ellas para facilitar laconfiguracin.

    32

  • Captulo 2. Desarrollo...

    (a) Dummy

    (b) Path

    Figura 2.15: Vistas en VREP de Scene object propierties33

  • Captulo 2. Desarrollo...

    Una vez completado todo esto, clicaramos en Compute path y si no hahabido ningn problema se genera la trayectoria deseada. Si ha habido algnerror, si tenemos marcada la casilla If no path was found, use a partial path,representar una parte del path.

    Figura 2.16: Vista en VREP de la escena con todos los Paths Planning con-figurados

    2.4.1.3. Scripts asociados

    Una vez configurados todos los objetos y el mdulo necesario para la pro-gramacin del robot mvil, falta asociar al objeto base el cdigo para elfuncionamiento del robot. Para conseguirlo hay que usar los scripts de losque disponemos en VREP.

    El botn para consultar los scripts aparece en la barra de herramientasizquierda del programa, con un icono similar a una hoja de papel. Una vezse accede al men se puede consultar la informacin de los scripts existentesy se pueden crear nuevos.

    Como ya hemos comentado brevemente en el apartado 2.2.1.4, existen dostipos de scripts los Main Scripts y los Child Scripts, dentro de estos ltimos

    34

  • Captulo 2. Desarrollo...

    se diferencian en Child Scripts (threaded) y Child Scripts (non-threaded). ElMain Script se recomienda no utilizarlo (ni modificar el ya existente pordefecto) porque define los valores por defecto de la simulacin y el arranquede los Child Script.

    Para el caso que nos ocupa, usaremos un Child Script (threaded). El moti-vo es que no se producirn bloqueos al llamar a ciertas funciones (sobretodopara el Path Planning), adems de permitir enviar seales para estableceruna buena comunicacin tanto de la base mvil con el manipulador como delrobot principal al duplicado. El modelo de robot mvil que cogimos de VREPya lleva un script implementado por defecto, pero es un simple ejemplo denavegacin en el que se esquivan obstculos utilizando el algoritmo de Brai-tenberg. Para este proyecto se ha modificado por completo implementandoun cdigo propio.

    Las funciones fundamentales utilizadas en el script son:

    simGetObjectHandle(nombre_objeto): Devuelve el handle co-rrespondiente a un determinado objeto.

    simGetPathPlanningHandle(nombre_PathPlanning): devuel-ve el handle de un objeto Path Planning.

    simSearchPath(handle_PathPlanning,mximo_tiempo_bsqueda): se encarga de buscar un path com-pleto en un tiempo mximo preestablecido. Si devuelve un 2 significaque ha encontrado el path, si es un 1 ha encontrado parte de l y sidevuelve un 0 no lo ha encontrado.

    simGetObjectPosition(handle_objeto, -1): devuelve la po-sicin de un determinado objeto. El segundo parmetro indica que seala posicin absoluta.

    simGetPositionOnPath(handle_Path, distancia_relativa):Devuelve una posicin absoluta interpolada de un punto a lo largo delpath. El segundo argumento acepta valores entre 0 y 1. Si es 0 significaque est comenzando el path y si es 1 que ha finalizado.

    35

  • Captulo 2. Desarrollo...

    simSetObjectPosition(handle_objeto, -1, posicin): Fi-ja la posicin del tercer parmetro (coordenadas x,y,z) a un objeto.

    simSetJointTargetVelocity(handle_objeto,velocidad_objetivo): fija la velocidad objetivo en una articulacin(motor). Este comando se usa porque las dos articulaciones de nuestrorobot mvil son de tipo par/fuerza, adems de estar activado el motory el control por velocidad y no por posicin.

    Aparte de estas funciones, se han utilizado otras dos que han permitidola comunicacin entre el manipulador, la base mvil y el segundo robot du-plicado para tener as una buena sincronizacin en la simulacin. Son lassiguientes:

    simWaitForSignal(nombre_seal): bloquea y espera a una se-al con el nombre que se le indica en el parmetro. Cuando la recibedevuelve un valor entero.

    simSetIntegerSignal(nombre_seal, valor_seal): se po-dra decir que es la funcin anloga a la anterior. sta crea una sealcon un valor entero (segundo parmetro) y su nombre (primer parme-tro).

    Primero de todo, se obtendra el handle de todos los objetos con los quevamos a trabajar: los dos motores, el Path Planning, el robot, el path y el startdummy. Tambin se definen dos variables importantes para el Path Planning,una establecer la posicin a lo largo del path en referencia al robot, la otraservir para calcular la distancia que hay desde el robot al punto del path.A continuacin se crea un bucle que ser el encargado de que nuestro robotsiga el path calculado hasta que las velocidades lineales y angulares de stesean 0, es decir, hasta que lo detengamos porque hemos llegado a la posicinobjetivo.

    Dentro del bucle es donde se realizar el movimiento del robot siguiendoel path calculado. Primero se obtienen las posiciones absolutas del robot y

    36

  • Captulo 2. Desarrollo...

    de un punto dentro del path. Se determina tambin la posicin de comienzoutilizando el handle del start dummy. Seguidamente se utilizan tres funcionesdistintas que nos ofrece VREP para poder trabajar con matrices. Se obtienela matriz transformada de posicin absoluta del robot, que se multiplica porel vector de posicin en el path obtenido anteriormente, creando as unaposicin relativa de nuestro robot en el path.

    Una vez hecho esto, ayudndose de la librera matemtica (math) de LUA,por una parte se calcula la distancia entre el robot y el punto en el path; ypor otra parte el ngulo de rotacin (phi) de nuestro robot mvil.

    La ltima parte consiste en aplicar la cinemtica inversa de la configura-cin diferencial del robot (2.4.1.1). Para ello se define una velocidad linealconstante y una velocidad angular constante por el ngulo de rotacin. Si elpunto que recorre el path (pos_on_path) es menor que 1 significa que aun nohemos alcanzado el final y por lo tanto las velocidades del robot tienen queseguir segn se han definido. En cambio, si este punto es igual a 1 se ha finali-zado el path, debemos detener el robot dndoles un valor 0 a las velocidades.Tambin enviaremos una seal con un valor entero y un nombre especficoque ser recibida por el manipulador, advirtindole que tiene que empezar sutarea. A continuacin se calculan las velocidades angulares definitivas de lasdos ruedas. Para ello se necesitan dos datos importantes extrados del mende propiedades de VREP, que son la distancia de separacin de las ruedas (d)y el radio de la rueda (r_w). Una vez calculadas las velocidades, se aplican acada uno de los motores del robot con la funcin simSetJointTargetVelocity.

    Lo nico que faltara sera incrementar los puntos de posicin en el path,que acta como un contador del bucle principal.

    Despus de todos estos pasos, ya estara el robot mvil definido al completopara ser simulado bajo cualquier condicin. Ahora slo habra que esperaruna seal del manipulador, la que dara paso a la siguiente trayectoria delrobot mvil. sta seguir el mismo procedimiento que la primera pero consu correspondiente Path Planning y sus respectivos objetos.

    Para el robot duplicado tambin se debern crear sus dos Path Planning

    37

  • Captulo 2. Desarrollo...

    correspondientes y configurar todos los objetos de la misma forma que se hahecho a lo largo de esta seccin.

    2.4.2. Programacin del manipulador

    2.4.2.1. Planteamiento inicial

    Para realizar una buena simulacin de manipulacin mvil, podemos plan-tearnos que nuestro manipulador debera manipular los objetos creados (va-sos) con una precisin muy similar a como lo hara un humano, ya que existeuna gran semejanza entre un brazo manipulador con uno de anatoma hu-mana.

    Figura 2.17: Semejanza de un brazo manipulador con la anatoma humana

    El primer paso para poder controlar un manipulador o robot industrial esconfigurar todos sus elementos estructurales, es decir, sus eslabones, articu-laciones y actuador final. Este paso ya se ha realizado anteriormente en laseccin 2.3.1.

    El modelo de manipulador que se ha elegido de VREP (Mico)consta de

    38

  • Captulo 2. Desarrollo...

    seis articulaciones, incluyendo la base del manipulador (Mico_joint1 ) y elelemento terminal (Mico_joint6 ) al que se le une la pinza (MicoHand). Sicada articulacin provee al robot de un grado de libertad se puede confirmarque este manipulador tiene seis grados de libertad.

    Lo que nos interesa y vamos a implementar para que nuestro manipuladorpueda simularse sin ningn problema compenetrandose totalmente con subase mvil, es lo que se conoce como controlador. Como su propio nombreindica es el que regula cada uno de los movimientos del manipulador, lasacciones, clculo y procesado de informacin.

    Existen varios grados de control que son funcin del tipo de parmetrosque se regulan:

    de posicin: el controlador interviene nicamente en el control de laposicin del elemento terminal.

    cinemtico: en este caso el control se realiza sobre la posicin y lavelocidad.

    dinmico: adems de regular la velocidad y la posicin, controla laspropiedades dinmicas del manipulador y de los elementos asociados al.

    adaptativo: engloba todas las regulaciones anteriores y, adems, se ocu-pa de controlar la variacin de las caractersticas del manipulador alvariar la posicin.

    VREP nos ofrece la posibilidad de implementar todos estos tipos de con-trol para nuestro manipulador, por ejemplo con los mdulos de clculo decinemtica directa/inversa o mediante Motion Planning. Pero en este caso seha decantado por un control de posicin ms sencillo, en el cual tendremosque otorgar a cada articulacin el ngulo correcto para llevar al elementoterminal a la posicin deseada.

    39

  • Captulo 2. Desarrollo...

    2.4.2.2. Scripts asociados

    Para realizar la implementacin del controlador de nuestro manipulador,se seguir el mismo procedimiento que con el robot mvil.

    Por defecto, como suceda con la base mvil, tambin vienen implementa-dos scripts del modelo Mico. En general se han podido conservar muy pococdigo, por lo tanto tambin se implementar un cdigo propio de nuevo. Enel caso del manipulador haremos uso de los dos tipos de scripts de VREP,el Child Script (threaded) asociado al objeto con la relacin de parentescoms alta (Mico) y el Child Script (non-threaded) para la mano robtica opinza (MicoHand). Este ltimo es del que ms cdigo ya implementado porel fabricante aprovecharemos.

    Para el manipulador tambin necesitamos conocer ciertas funciones impres-cindibles para la implementacin, aunque el cdigo en s es ms simple que elrobot mvil. Algunos comandos como simGetObjectHandle o simWaitForSig-nal, ya se han explicado anteriormente (2.4.1.3). Pero aparecen dos funcionesnuevas muy importantes a la hora de mover el manipulador:

    simSetJointTargetPosition(nombre_handle,posicin_objetivo): establece una posicin objetivo determina-da (segundo parmetro) sobre una articulacin que opera en modopar/fuerza y el control de posicin activado. Esta funcin permitircambiar de posicin las articulaciones para dejar a la pinza en unaposicin en la que pueda agarrar el objeto.

    simWait(tiempo_mnimo): es una operacin bloqueante, ya queel hilo que se esta procesando en ese momento en la simulacin haceuna espera del tiempo indicado. Se utiliza para esperar a que una ovarias articulaciones terminen de realizar su movimiento y a partir deah comenzar la siguiente accin.

    El primer paso para la implementacin es comprobar el rango de las arti-culaciones, realizar pruebas de error para diferentes movimientos cada unade las articulaciones y de varias articulaciones simultneamente.

    40

  • Captulo 2. Desarrollo...

    Primero se obtienen y se almacenan los handles de las seis articulacionesen la variable jh. Tambin se inicializa iniJ que contiene una posible configu-racin inicial de la posicin de cada articulacin. La posicin intrnseca que lepasamos como parmetro a la funcin simSetJointTargetPosition se expresaen radianes por defecto. Para esto hay que utilizar la biblioteca matemticapara el nmero pi.

    Una vez hemos acabado la inicializacin de las variables necesarias, espe-raremos la seal producida por el robot mvil al llegar al final de su tra-yectoria (simWaitForSignal(turnoMM)). A partir de aqu comenzarn losmovimientos del manipulador:

    Primer movimiento: consiste en llevar al brazo a un punto ptimo parapoder manipular el vaso. Para ello se guardan todas las posiciones de lasarticulaciones en una variable (desiredJ ), luego mediante un bucle forse recorre esa variable fijando cada posicin a su respectiva articulacin.

    Segundo movimiento: la finalidad es colocar el elemento terminal en elobjetivo para que al cerrar la mano el vaso no resbale o caiga. Paracerrar la pinza, primero se espera unos segundos para que todas lasarticulaciones alcancen su posicin, despus se crea una seal enteraque ser recibida en el script asociado a la mano. Luego esperamos 1,25segundos, que es el tiempo aproximado que tarda la pinza en abrirse ocerrarse.

    Tercer movimiento: despus de haber cogido el primer vaso y haber en-viado una seal al robot mvil para que inicie la prxima trayectoria,esperamos una nueva seal de la base para que el manipulador puedavolver a trabajar. Una vez recibida, se coloca el brazo con el mismoprocedimiento que el primer movimiento a poca altura sobre la super-fcie (Cubo) que se dejar el vaso. Este movimiento es un poco mslento que los anteriores, por eso aumentaremos el retardo.

    Cuarto movimiento: es el movimiento definitivo en el que se incluyentres movimientos. El primero posiciona dos articulaciones para centrarel brazo, el segundo mueve la segunda articulacin hacia abajo para

    41

  • Captulo 2. Desarrollo...

    amortiguar el movimiento que deja el vaso en la superfcie. Por ltimo seabre la mano creando la misma seal que en el cierre pero con un valorentero distinto. De manera opcional se lleva el brazo a la configuracininicial.

    En el ltimo movimiento antes de abrir la mano, hace falta crear unaseal que la reciba el segundo manipulador mvil. Una vez la haya recibido,realizar una serie de movimientos muy similares a los del primer robot,manipulando el mismo vaso.

    Lo nico que faltara es el control de la pinza (gripper) o mano robtica.El script asociado a este objeto es del tipo Child Script (non-threaded). stosse dividen en varias zonas de cdigo, una de inicializacin(sim_childscriptcall_initialization) y otra de actuacin donde reside la parteprincipal de control(sim_childscriptcall_actuation).

    En la primera se inicializan los handles de los dos motores de la pinza yuna variable (cv) con la velocidad constante con la que stos funcionaran.

    En la segunda zona, se guarda en una variable (close) el valor entero (0 1) de la seal creada en el otro script antes de abrir y cerrar la pinza.Posteriormente se comprueba con una condicin que si el valor es mayorque 0 se cerrar la pinza, sino se abrir. Para controlar los motores de lapinza utilizaremos la misma funcin que para los motores del robot mvil(simSetJointTargetVelocity).

    42

  • Captulo 2. Desarrollo...

    Figura 2.18: Vista en VREP durante la simulacin despus de toda la confi-guracin

    43

  • Captulo 3

    Conclusiones

    Al comienzo de esta memoria se establecieron unos objetivos que se hanconseguido cumplir. En primer lugar, se ha conseguido realizar un entornode simulacin virtual donde se muestra un ejemplo bsico de manipulacinmvil, permitiendo la posibilidad de inclusin de ms mdulos y caractersti-cas que nos ofrece el programa VREP con diferentes diseos y modelos. Estosignifica que no solo se ha llegado a una solucin donde los dos manipulado-res mviles son funcionales, sino que adems se pueden incluir ms tcnicasde control o incluso modificaciones de los anteriores de una forma sencilla.Puesto que la manipulacin mvil actualmente es un rea de investigacin enla robtica, este proyecto favorece el diseo y la ceacin, ya que otra personapuede empezar a trabajar desde el punto en que el autor ha terminado esteproyecto, valorando el intercambio de ideas y la comparticin de las mismas.

    Personalmente, el proyecto me ha ayudado a familiarizarme con este tipode simuladores y aprender conceptos de robtica hasta ahora desconocidos.Esto conlleva una motivacin extra para futuros estudios de esta rama deinformtica industrial y automatizacin.

    Finalmente, se ha implementado una solucin bsica para el control delbrazo, pero con una buena funcionalidad en una simulacin.

    44

  • Captulo 4

    Mejoras y trabajos futuros

    A lo largo de la realizacin de este proyecto, han surgido diferentes in-convenientes que se podran solventar llevando a cabo ciertas mejoras delmodelo propuesto en esta memoria. Estas exceden por muchos motivos losobjetivos principales que se establecieron al iniciar este proyecto, por lo quelas englobo en el marco de trabajos futuros. Podemos destacar las siguientes:

    Diseo propio del manipulador mvil:El manipulador mvil utilizado en este proyecto es una composicinentre dos modelos ya diseados por sus respectivos fabricantes queofrece VREP. Podra haberse diseado un modelo para el robot mvily uno para el manipulador, ya que VREP tambin presenta esta opcinde diseo.

    Mejor controlador para el manipulador:El controlador que regula los movimientos de nuestro manipulador se haimplementado con un tipo de control simple de posicin. Existen otrasalternativas de control mejoradas como la cinemtica directa/inversa,o tambin un mdulo que ofrece VREP llamado Motion Planning.

    Impresin y montaje del manipulador:El reciente boom de las impresoras 3D tambin est muy involucradoen el campo de la robtica. Sabiendo esto podemos disear nuestro

    45

  • Captulo 4. Mejoras y trabajos futuros

    manipulador, imprimirlo en 3D y realizar su correspondiente monta-je. Despus nos ayudaramos de una placa Arduino para el control deservos.

    46

  • Apndices

    47

  • 48

  • A. Cdigo...

    Apndice A

    Cdigo de los scripts

    A.1. Cdigo del script asociado al robotmvil principal

    Figura A.1:

    49

  • A.1. Cdigo del script asociado al robotmvil principal A. Cdigo...

    Figura A.2:

    50

  • A. Cdigo...A.1. Cdigo del script asociado al robot

    mvil principal

    Figura A.3:

    51

  • A.1. Cdigo del script asociado al robotmvil principal A. Cdigo...

    Figura A.4:

    52

  • A. Cdigo... A.2. Cdigo del script asociado al manipulador principal

    A.2. Cdigo del script asociado al manipula-dor principal

    Figura A.5:

    53

  • A.2. Cdigo del script asociado al manipulador principal A. Cdigo...

    Figura A.6:

    54

  • A. Cdigo... A.2. Cdigo del script asociado al manipulador principal

    Figura A.7:

    55

  • A.2. Cdigo del script asociado al manipulador principal A. Cdigo...

    A.2.1. Cdigo del script asociado a la pinza del mani-pulador principal

    Figura A.8:

    56

  • A. Cdigo... A.3. Cdigo del script asociado al robot mvil duplicado

    A.3. Cdigo del script asociado al robot m-vil duplicado

    Figura A.9:

    57

  • A.3. Cdigo del script asociado al robot mvil duplicado A. Cdigo...

    Figura A.10:

    58

  • A. Cdigo... A.3. Cdigo del script asociado al robot mvil duplicado

    Figura A.11:

    59

  • A.3. Cdigo del script asociado al robot mvil duplicado A. Cdigo...

    Figura A.12:

    60

  • A. Cdigo... A.4. Cdigo del script asociado al manipulador duplicado

    A.4. Cdigo del script asociado al manipula-dor duplicado

    Figura A.13:

    61

  • A.4. Cdigo del script asociado al manipulador duplicado A. Cdigo...

    Figura A.14:

    62

  • A. Cdigo... A.4. Cdigo del script asociado al manipulador duplicado

    A.4.1. Cdigo del script asociado a la pinza del mani-pulador duplicado

    Figura A.15:

    63

  • Bibliografa

    [1] Tutorial Coppelia Robotics: tutorial de la empresa desarrolladora deVREP donde se puede consultar cualquier informacin relativa a su pro-grama.http://www.coppeliarobotics.com/helpFiles/

    [2] MobileRobots: pgina oficial del modelo de robot mvil utilizado.http://www.mobilerobots.com/ResearchRobots/PioneerP3DX.aspx

    [3] Foro Coppelia Robotics: foro oficial de VREP para consultar cualquiertipo de duda relacionada con el programa.http://www.forum.coppeliarobotics.com/

    [4] Robots Industriales: pequeo documento introductorio a la manipu-lacin industrial.http://platea.pntic.mec.es/vgonzale/cyr_0708/archivos/_15/Tema_5.4.htm

    [5] Valera, A., Tema 4: control de robots mviles. Mecatrnica

    64

    IntroduccinContenido de la memoriaMotivacin

    Desarrollo del proyectoContextoHerramientas utilizadasV-REP(Virtual Robot Experimentation Platform)Interfaz de usuario: vista principalObjetos de la escena(Scene objects)Jerarqua de escenas(Scene hierarchy)Escritura de cdigo: scripts embebidos

    Diseo del entorno de simulacin virtualGua de configuracin de objetos del manipulador mvilGua de configuracin de objetos de escenarioAmpliacin del diseo principal

    Implementacin de control del manipulador mvilProgramacin de la base mvilPlanteamiento inicialClculo de trayectorias: Path Planning moduleScripts asociados

    Programacin del manipuladorPlanteamiento inicialScripts asociados

    ConclusionesMejoras y trabajos futurosApndicesCdigo de los scriptsCdigo del script asociado al robot mvil principalCdigo del script asociado al manipulador principalCdigo del script asociado a la pinza del manipulador principal

    Cdigo del script asociado al robot mvil duplicadoCdigo del script asociado al manipulador duplicadoCdigo del script asociado a la pinza del manipulador duplicado