Sie sind auf Seite 1von 7

XXXIII Jornadas de Autom atica.

Vigo, 5 al 7 de Septiembre de 2012

MODELADO Y SIMULACIN DE BRAZOS ROBTICOS CON BLENDER Y PYTHON


Adolfo Snchez Hermosell Alumno de Ingeniera Tcnica Industrial esp. Electrnica Industrial, Universidad de Extremadura. E-mail: adsanchezh@gmail.com J. lvaro Fernndez Muoz Dept. Ing. Elctrica, Electrnica y Automtica, Escuela de Ingenieras Industriales, Universidad de Extremadura, Av. Elvas s/n, 06006, Badajoz. E-mail: jalvarof@unex.es

Resumen
En este trabajo se presenta una nueva interfaz de aplicacin desarrollada en Python, que permite controlar en tiempo real cada una de las articulaciones que componen un brazo robot cualquiera construido mediante el programa de diseo 3D Blender. Se explican en detalle las caractersticas de la interfaz propuesta, incidiendo en las diferencias con otros proyectos similares, mostrando adems las herramientas utilizadas para realizar la interfaz. Palabras Clave: modelado 3D, simulacin, robtica, interfaz, Blender, Python.

la construccin de sistemas cada vez ms complejos, organizados en capas o subsistemas interrelacionados entre s. Es de esperar que, en el futuro, los sistemas robticos actuales sean subsistemas de otros sistemas ms grandes, costosos y complejos [3]. En este contexto, los simuladores proporcionan los medios adecuados para el estudio y modelado de estos sistemas, tanto reales como abstractos, ya que se encargan de replicar el comportamiento de tales sistemas mediante hardware y software [1]. Una definicin formal de simulacin es la del proceso de disear un modelo de un sistema real y llevar a cabo experimentos con dicho modelo con el propsito de comprender el comportamiento del sistema o de evaluar diversas estrategias (dentro de los lmites impuestos por un criterio o conjunto de criterios) para la operacin del sistema [4]. Nacidos con esta motivacin, existen en la actualidad varios proyectos en desarrollo que permiten modelar y simular todo tipo de robots, si bien la mayora de ellos no permiten realizar ambos procedimientos (modelado y simulacin) en el mismo software [5], y/o estn definidos para robots de un fabricante concreto [6].

INTRODUCCIN

Debido a los avances en la generacin de grficos por ordenador y a la aparicin de nuevos programas que permiten crear y visualizar dichos grficos de forma cada vez ms sencilla, junto al abaratamiento del hardware necesario, en especial microprocesadores y GPUs, la simulacin por ordenador es una disciplina en auge en el mbito de la ingeniera, gracias a las importantes ventajas que presenta. Entre estas, cabe destacar el ahorro de material, que abarata los costes de las pruebas realizadas, la capacidad de alterar la velocidad del proceso que se desea investigar, as como la de modificar los parmetros de la simulacin fcilmente, obteniendo as los datos requeridos de una forma mucho ms rpida y eficiente que mediante la realizacin de pruebas reales. Por otra parte, la simulacin por ordenador permite probar situaciones y entornos que pudieran suponer un riesgo para el personal encargado de realizar y supervisar las pruebas [1]. El modelado y simulacin de mquinas reales es un rea de enorme importancia prctica en Robtica [2]. Invariablemente, los avances tecnolgicos conllevan

HERRAMIENTAS UTILIZADAS

Teniendo en cuenta las ventajas inherentes a la simulacin descritas en el apartado anterior, se presenta en este trabajo una interfaz programada en lenguaje Python, que permite manejar por separado cada una de las articulaciones de las que se componga un brazo robot cualquiera diseado en el conocido software de diseo grfico 3D de cdigo abierto con licencia GNU Blender [7]. La interfaz objeto del presente trabajo ha sido diseada y probada sobre Blender sobre el sistema operativo Linux, tambin libre, Ubuntu 12.04 Precise Pangolin [8], considerando una serie de aspectos que se detallan en los siguientes apartados.

805

XXXIII Jornadas de Autom atica. Vigo, 5 al 7 de Septiembre de 2012


Pero la razn ms importante es que Blender utiliza Python como lenguaje de programacin interno a la hora de realizar scripts para animaciones y juegos, por lo que el hecho de realizar la interfaz con Python facilita en gran medida el trabajo a la hora de intercambiar datos entre el diseo realizado en Blender y la interfaz diseada con Python. 2.3 PROGRAMA DE DISEO 3D

Figura 1: Diseo en Blender del brazo robot articulado SCARA usado en las simulaciones.

Para el modelado de los brazos robticos se ha utilizado el programa de diseo 3D de cdigo abierto Blender v.2.62. Dicha eleccin viene motivada, adems de por el hecho de ser el software libre de mayor xito en su rea, por la simplicidad que ofrece a la hora de modelar objetos, as como por su potencia, ya que aparte de las herramientas de diseo presentes en otros programas de diseo 3D, posee 2 tipos de renderizador: Blender internal, presente desde las primeras versiones del programa, y Cycles, presente desde la versin 2.6, que permite obtener resultados mucho ms realistas en el renderizado y con mayor facilidad que con el otro renderizador [7]. Adems de las caractersticas anteriores, Blender tambin posee un motor de juegos (Blender Game Engine o BGE), que permite interactuar con los diseos realizados usando perifricos como el teclado o el ratn, as como a travs de la programacin de scripts que gobiernan el comportamiento de los objetos presentes en el entorno de simulacin. Esta ultima caracterstica ser la que permita modificar la posicin de cada uno de los eslabones del robot al introducir en la parte grfica de la interfaz los parmetros pertinentes, como se ver en la Seccin 3. 2.4 SISTEMA OPERATIVO

Figura 2: Diseo en Blender del robot articulado KUKA usado en las simulaciones. 2.1 MODELOS DE SIMULACIN

Las simulaciones realizadas a lo largo del presente trabajo hacen uso de dos robots articulados: el robot tipo SCARA (Selective Compliant Articulated Robot Arm) mostrado en la Fig. 1, y el robot articulado KUKA, representado en la Fig. 2 [2]. 2.2 LENGUAJE DE PROGRAMACIN

El sistema operativo utilizado a la hora de programar la interfaz y en las pruebas realizadas es Ubuntu 12.04 Precise Pangolin. Esta versin presenta la ventaja de tener preinstaladas las versiones 2.7 y 3.2 de Python, siendo necesaria esta ltima para poder trabajar con la interfaz diseada, mientras que Blender se puede instalar fcilmente desde el Centro de Software de Ubuntu [8].

DISEO DE LA INTERFAZ

A continuacin se describen los distintos elementos de los que se compone la interfaz diseada. 3.1 ARCHIVO DE DISEO DEL ROBOT

Para la realizacin de la interfaz se ha elegido el lenguaje de programacin Python v.3.2. Esta eleccin se justifica, en primer lugar, por la facilidad que presenta el lenguaje a la hora de programar, lo que hace de Python un lenguaje entre 5 y 10 veces ms productivo respecto a otros como Java [9].

Se trata de un archivo que contiene el diseo 3D modelado en Blender del brazo robot que se quiere simular. Los nicos aspectos que se deben tener en cuenta a la hora de modelar un brazo robot para ser

806

XXXIII Jornadas de Autom atica. Vigo, 5 al 7 de Septiembre de 2012


simulado con la interfaz propuesta en este artculo son los que se comentan a continuacin: Cada uno de los eslabones que forma parte del brazo robot debe modelarse como un objeto independiente del resto, ya que cada objeto debe tener un nombre determinado que le permita ser identificado como un eslabn independiente del brazo robot a simular. Los objetos deben ligarse entre s mediante un mtodo jerrquico denominado parenting o emparentado, en el que un objeto (padre) se enlaza con uno o ms objetos (hijos). De esta forma, los objetos hijos se vern afectados por los cambios producidos en el objeto padre, aunque los cambios que se realicen a cualquiera de los objetos hijo no repercutir en el objeto padre. Esta tcnica se utiliza para que, al mover un eslabn del brazo robot, el resto de eslabones se muevan en concordancia. De no enlazarse los objetos que representan los eslabones del robot de esta forma, sera necesario mover uno a uno todos los eslabones. En la Fig. 3 se muestra un ejemplo de giro a derechas de un eslabn del modelo simulado en Blender del robot SCARA de la Fig. 1, con y sin el emparentado de objetos activado. Los objetos que actan como eslabones del robot a simular han de seguir una nomenclatura especial para poder identificarlos como parte del robot a la hora de construir la interfaz grfica. Esta nomenclatura consiste en introducir un carcter '_' antes del nombre de cada uno de los objetos que forman el robot, permitiendo as diferenciarlos de otros objetos que no forman parte del mismo, como pueden ser otros objetos del entorno (p. e. obstculos). Finalmente, a la hora de disear un robot para poder simularlo correctamente en Blender, hay que tener en cuenta que los centros de los objetos que forman cada uno de los eslabones de tipo rotativo deben situarse en el eje de giro de dichos eslabones, ya que dicho centro ser el eje de giro del objeto. 3.2 SCRIPT DE ADQUISICIN DE DATOS (b) Figura 3: Emparentado entre objetos en Blender: (a) emparentado activado, y (b) desactivado. 3.3 INTERFAZ GRFICA

(a)

Este script, programado en Python, tiene como propsito comprobar qu objetos forman parte del robot, con ayuda de la nomenclatura establecida en el apartado anterior. Asimismo, el script se encargar de guardar en un fichero de datos los nombres de los eslabones que componen el robot. Este fichero har de nexo entre el diseo de Blender y la parte grfica de la interfaz. El script se ejecuta automticamente una vez se inicia Blender, para disponer de forma rpida de los datos necesarios para iniciar la parte grfica de la interfaz.

Es la parte ms importante de la interfaz, ya que se encarga de generar los controladores que permiten manejar cada eslabn del brazo robot de forma independiente, as como de habilitar la edicin de los parmetros que regulan el comportamiento de los eslabones del robot, definiendo unas caractersticas que se describirn ms adelante. Esta parte de la interfaz ha sido diseada mediante Tkinter, una adaptacin de la biblioteca grfica Tcl/Tk [10] para Python que, al venir incluida en sus bibliotecas, permite programar interfaces grficas Python para plataformas Linux, Windows y Mac.

807

XXXIII Jornadas de Autom atica. Vigo, 5 al 7 de Septiembre de 2012

Figura 4: Configuracin de la interfaz para el robot SCARA. 3.3.1 Ventana Principal Dado que no todos los brazos robot presentan necesariamente el mismo nmero de eslabones, la ventana principal de la interfaz grfica es diferente para cada tipo de robot que se pretenda simular, mostrando por pantalla un nmero de controladores proporcional al nmero de eslabones mviles del robot a simular, como puede apreciarse en la Fig. 4 (robot SCARA) y la Fig. 5 (robot KUKA). Este mismo script que crea la interfaz grfica es el que se encarga, en primer lugar, de iniciar Blender, para que el script de adquisicin de datos anterior recoja la informacin necesaria de la escena diseada y cargue posteriormente dichos datos en memoria, para as poder construir la interfaz grfica. Una vez cargados los datos necesarios, se genera la ventana de la interfaz grfica, dotada, como se ha dicho, de un nmero de controladores determinado por el nmero de eslabones del robot simulado. Por cada eslabn, se crean dos controladores deslizantes: uno para el control de la posicin y otro para el de la velocidad del eslabn. Aparte de los controladores mencionados, se genera al lado de cada uno de ellos una caja de entrada de texto, donde se puede introducir por teclado la cifra exacta de posicin y velocidad que se desee, siempre que estas se encuentren en el rango de posiciones permitidas para cada articulacin.

Figura 5: Configuracin de la interfaz para el robot KUKA. Asimismo, se crean las funciones que se encargan de leer los controles deslizantes y las cajas de texto, guardando posteriormente los valores modificados en el mismo archivo en el que se cargaron los datos para crear el script, aadiendo los valores modificados de posicin y velocidad, con cada modificacin de los controles. Adems, en la esquina inferior derecha de la interfaz se crea un botn que, al pulsarlo, abre la ventana de edicin de parmetros, que se describir ms adelante. Tras abrir la ventana, el botn se deshabilita, impidiendo as que se abran mltiples instancias de la ventana. Finalmente, debajo de los controladores de posicin y velocidad de los eslabones y a la izquierda del botn de edicin de parmetros, se incluye un botn de activacin que permite dos tipos de control de la posicin, que se describen a continuacin:

808

XXXIII Jornadas de Autom atica. Vigo, 5 al 7 de Septiembre de 2012

Figura 7: Ventana de edicin de parmetros. Dado que todos los eslabones requieren de los mismos tipos de parmetros para funcionar correctamente, la apariencia de la ventana de edicin de parmetros ser la misma para cualquier eslabn seleccionado mediante las pestaas de la parte superior de la ventana. A continuacin se describe cada uno de los controles necesarios para posibilitar un movimiento correcto del robot, sobre el ejemplo mostrado en la Fig. 7: En la caja de seleccin superior se elige el tipo de articulacin (prismtica o rotativa) que definir el tipo de movimiento del eslabn. En la interfaz nicamente se tienen en cuenta estos dos tipos de articulacin, ya que los dems tipos pueden obtenerse como combinacin de estos [2]. En la segunda caja de seleccin, se permite seleccionar el eje (X, Y Z) en el sistema coordenado local al eslabn sobre el que ste se desplaza o rota. En los dos primeros cuadros de texto, se introducen las posiciones mnima y mxima del eslabn respectivamente, siendo un valor en metros para las articulaciones prismticas y en grados angulares para las rotativas. Los dos ltimos cuadros de texto permiten introducir las velocidades mnima y mxima del eslabn, que debern ser positivas. Para las articulaciones prismticas, la velocidad vendr dada en m/s para las rotativas en grados/s.

Figura 6: Ejemplo de interfaz usando el posicionamiento instantneo. Desplazamiento en Tiempo Real. Cuando el botn de activacin se encuentra activo, se utiliza el tipo de control que permite el desplazamiento en tiempo real de los eslabones del robot, teniendo en cuenta tanto las posiciones como las velocidades introducidas en la interfaz grfica. Este tipo de control puede verse en la Fig. 4 y la Fig. 5. Posicionamiento Instantneo. Este tipo de control ocurre cuando el botn de activacin est desactivado, posicionando instantneamente los eslabones del robot en el momento en que se modifica la posicin (rotacin o desplazamiento) de cualquiera de sus eslabones. Este modo se usa para comprobar al momento el posicionamiento de los eslabones del robot, descartando la visualizacin de la animacin del cambio de posicin. En la Fig. 6 se muestra el aspecto de una interfaz con este modo de visualizacin.

3.3.2 Ventana de Edicin de Parmetros Esta ventana es la que permite editar los parmetros que definen cada eslabn del robot simulado, introduciendo los valores necesarios en los cuadros de texto y cajas de seleccin que pueden verse en la Fig. 7. En la parte superior se encuentran las pestaas con los nombres de los eslabones del robot, los cuales permiten agrupar las cajas de entrada de texto de una forma ms compacta y cmoda de editar.

El botn situado en la parte inferior de esta ventana permite, al presionarlo, guardar los parmetros introducidos en el archivo de datos. Tras esta operacin, la ventana se cierra, se actualizan los controles correspondientes de la ventana principal y se rehabilita el botn de acceso a los parmetros, para permitir su modificacin siempre que se desee.

809

XXXIII Jornadas de Autom atica. Vigo, 5 al 7 de Septiembre de 2012


3.4 SCRIPT DE ANIMACIN EN BLENDER datos de modelos o tipos de robots determinados, normalmente de una marca concreta. La interfaz presentada en este artculo, por el contrario, se ha diseado con el objetivo de ser totalmente genrica y flexible, adems de orientar su desarrollo para su uso con herramientas de cdigo abierto y licencia libre GNU multiplataforma. Si bien no cuenta quizs con el nmero de opciones y parmetros a modificar de los robots simulados con otros software propietarios como [5] o [6], la interfaz desarrollada, sin embargo, ha demostrado la viabilidad de continuar la va de desarrollo iniciada aqu, y que en versiones futuras puede aumentar su funcionalidad y complejidad, haciendo uso de tcnicas de interfaz software como las aqu estudiadas. Agradecimientos El presente trabajo ha sido financiado por la Universidad de Extremadura y la Consejera de Sanidad y Dependencia de la Junta de Extremadura, dentro de la Accin VII del Plan de Iniciacin a la Investigacin, Desarrollo Tecnolgico e Innovacin 2011, con el proyecto titulado: Implementacin de un Sistema Inteligente de Visin Artificial para el Apoyo en Seguridad Activa de Sistemas de Control Numrico Computerizado en Maquinarias de Corte. Referencias [1] Craig, D. C. (1996): Extensible Hierarchical Object-Oriented Logic Simulation with an Adaptable Graphical User Interface. M. Sc. thesis. Computer. Science Dept., Memorial Univ. of Newfoundland, Saint John, Canad. Disponible en lnea [Consulta: 15/06/2012]: http://web.cs.mun.ca/~donald/msc/thesis.html [2] Craig, J. J. (2004): Introduction to Robotics Mechanics and Control, 3rd ed., Prentice-Hall, Englewood Cliffs, New Jersey, Estados Unidos. ISBN: 978-0201543612. [3] Cubero, S. (ed) (2007): Industrial Robotics: Theory, Modelling and Control. Pro Literatur Verlag, Mammendorf, Alemania. ISBN: 386611-285-8. DOI: 10.5772/44. [4] Shannon, R. E. (1975): System Simulation: The Art and Science, Prentice-Hall, Englewood Cliffs, New Jersey, Estados Unidos. ISBN: 9780138818395. [5] RoboLogix software. Logic Design Inc. Toronto, Canad. Sitio web oficial: http://www.robologix.com

Este script, que se ejecuta en Blender tras iniciarse el motor de juegos, se encarga en primer lugar de cargar en memoria el archivo con los datos guardados de la interfaz grfica, con las posiciones y velocidades modificadas. Una vez se han cargado los datos, el script actualiza las posiciones de los eslabones del robot y permite ver tanto las posiciones en las que se coloca el robot segn los parmetros de posicin y velocidad introducidos en la interfaz grfica, como la variacin de las posiciones de los eslabones a lo largo del tiempo en la transicin de una posicin a otra, en el caso de que el botn de activacin Usar velocidad de la ventana principal se encuentre activado. Este script aprovecha la capacidad del motor de juegos de Blender de ejecutar un script una vez por cada frame, para que la actualizacin de las posiciones de los eslabones del robot se produzca en cada fotograma y el desplazamiento de los eslabones se perciba visualmente de manera fluida. Dado que la actualizacin de las posiciones del robot a simular se produce una vez por cada frame, el motor de juegos de Blender se configurar para tener una tasa de fotogramas por segundo determinada, tal que sea suficiente para poder ver un desplazamiento fluido de los eslabones del robot. Adems, como las velocidades introducidas a travs de la interfaz grfica descrita en el apartado anterior vienen dadas en m/s y en grados/s, resulta necesario que en el script se produzca una conversin de las unidades de velocidad a la hora de actualizar las posiciones de los eslabones en cada frame. Esta conversin puede expresarse mediante la relacin:
D= v fps

(1)

donde D es el desplazamiento del eslabn en cada fotograma, expresado en m/fotograma para las articulaciones prismticas y en grados/fotograma para las rotativas, v es la velocidad del eslabn introducida a travs de la interfaz grfica y fps es la tasa de fotogramas por segundo de la simulacin.

CONCLUSIONES

Las interfaces que permiten el control y simulacin de brazos robot desarrolladas hasta la fecha, pese a formar parte de proyectos que permiten manipular muchos aspectos y parmetros de los robots simulados, carecen en general de la libertad de poder desarrollar robots propios, limitndose a una base de

810

XXXIII Jornadas de Autom atica. Vigo, 5 al 7 de Septiembre de 2012


[6] COSIMIR software. Mitsubishi Europe, B.V. Ratingen, Alemania. [7] Blender software. Sitio http://www.blender.org/ web Electric oficial: [9] Ferg, S. (2009): Python & Java: A Side-bySide Comparison, Python Conquers The Universe Blog. En lnea [Consulta 15/06/2012]: http://pythonconquerstheuniverse.wordpress.co m/2009/10/03/python-java-a-side-by-sidecomparison/ [10] Tcl/Tk Software. Tcl Developer Xchange. Sitio web oficial: http://www.tcl.tk/

[8] Ubuntu software. Canonical Group Ltd. Londres, Reino Unido. Sitio web oficial: http://www.ubuntu.com/

811

Das könnte Ihnen auch gefallen