MODELADO Y SIMULACIÓN DE BRAZOS ROBÓTICOS CON BLENDER Y PYTHON

XXXIII Jornadas de Autom´atica. Vigo, 5 al 7 de Septiembre de 2012 MODELADO Y SIMULACIÓN DE BRAZOS ROBÓTICOS CON BLENDER Y PYTHON Adolfo Sánchez Herm

16 downloads 116 Views 627KB Size

Story Transcript

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

MODELADO Y SIMULACIÓN DE BRAZOS ROBÓTICOS CON BLENDER Y PYTHON Adolfo Sánchez Hermosell Alumno de Ingeniería Técnica Industrial esp. Electrónica Industrial, Universidad de Extremadura. E-mail: [email protected] J. Álvaro Fernández Muñoz Dept. Ing. Eléctrica, Electrónica y Automática, Escuela de Ingenierías Industriales, Universidad de Extremadura, Av. Elvas s/n, 06006, Badajoz. E-mail: [email protected]

Resumen En este trabajo se presenta una nueva interfaz de aplicación 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 diseño 3D Blender. Se explican en detalle las características de la interfaz propuesta, incidiendo en las diferencias con otros proyectos similares, mostrando además las herramientas utilizadas para realizar la interfaz. Palabras Clave: modelado 3D, simulación, robótica, interfaz, Blender, Python.

1

INTRODUCCIÓN

Debido a los avances en la generación de gráficos por ordenador y a la aparición de nuevos programas que permiten crear y visualizar dichos gráficos de forma cada vez más sencilla, junto al abaratamiento del hardware necesario, en especial microprocesadores y GPUs, la simulación por ordenador es una disciplina en auge en el ámbito de la ingeniería, 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 parámetros de la simulación fácilmente, obteniendo así los datos requeridos de una forma mucho más rápida y eficiente que mediante la realización de pruebas reales. Por otra parte, la simulación 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 simulación de máquinas reales es un área de enorme importancia práctica en Robótica [2]. Invariablemente, los avances tecnológicos conllevan

la construcción de sistemas cada vez más complejos, organizados en capas o subsistemas interrelacionados entre sí. Es de esperar que, en el futuro, los sistemas robóticos actuales sean subsistemas de otros sistemas más 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 definición formal de simulación es la del proceso de diseñar un modelo de un sistema real y llevar a cabo experimentos con dicho modelo con el propósito de comprender el comportamiento del sistema o de evaluar diversas estrategias (dentro de los límites impuestos por un criterio o conjunto de criterios) para la operación del sistema [4]. Nacidos con esta motivación, existen en la actualidad varios proyectos en desarrollo que permiten modelar y simular todo tipo de robots, si bien la mayoría de ellos no permiten realizar ambos procedimientos (modelado y simulación) en el mismo software [5], y/o están definidos para robots de un fabricante concreto [6].

2

HERRAMIENTAS UTILIZADAS

Teniendo en cuenta las ventajas inherentes a la simulación 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 diseñado en el conocido software de diseño gráfico 3D de código abierto con licencia GNU Blender [7]. La interfaz objeto del presente trabajo ha sido diseñada y probada sobre Blender sobre el sistema operativo Linux, también 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 razón más importante es que Blender utiliza Python como lenguaje de programación 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 diseño realizado en Blender y la interfaz diseñada con Python. 2.3

Figura 1: Diseño en Blender del brazo robot articulado SCARA usado en las simulaciones.

PROGRAMA DE DISEÑO 3D

Para el modelado de los brazos robóticos se ha utilizado el programa de diseño 3D de código abierto Blender v.2.62. Dicha elección viene motivada, además 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 diseño presentes en otros programas de diseño 3D, posee 2 tipos de renderizador: Blender internal, presente desde las primeras versiones del programa, y Cycles, presente desde la versión 2.6, que permite obtener resultados mucho más realistas en el renderizado y con mayor facilidad que con el otro renderizador [7]. Además de las características anteriores, Blender también posee un motor de juegos (Blender Game Engine o BGE), que permite interactuar con los diseños realizados usando periféricos como el teclado o el ratón, así como a través de la programación de scripts que gobiernan el comportamiento de los objetos presentes en el entorno de simulación. Esta ultima característica será la que permita modificar la posición de cada uno de los eslabones del robot al introducir en la parte gráfica de la interfaz los parámetros pertinentes, como se verá en la Sección 3. 2.4

Figura 2: Diseño en Blender del robot articulado KUKA usado en las simulaciones. 2.1

MODELOS DE SIMULACIÓN

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 PROGRAMACIÓN

Para la realización de la interfaz se ha elegido el lenguaje de programación Python v.3.2. Esta elección 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 más productivo respecto a otros como Java [9].

SISTEMA OPERATIVO

El sistema operativo utilizado a la hora de programar la interfaz y en las pruebas realizadas es Ubuntu 12.04 Precise Pangolin. Esta versión 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 diseñada, mientras que Blender se puede instalar fácilmente desde el Centro de Software de Ubuntu [8].

3

DISEÑO DE LA INTERFAZ

A continuación se describen los distintos elementos de los que se compone la interfaz diseñada. 3.1

ARCHIVO DE DISEÑO DEL ROBOT

Se trata de un archivo que contiene el diseño 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 artículo son los que se comentan a continuación: 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 eslabón independiente del brazo robot a simular. Los objetos deben ligarse entre sí mediante un método jerárquico denominado parenting o emparentado, en el que un objeto (padre) se enlaza con uno o más objetos (hijos). De esta forma, los objetos hijos se verán 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 técnica se utiliza para que, al mover un eslabón 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, sería necesario mover uno a uno todos los eslabones. En la Fig. 3 se muestra un ejemplo de giro a derechas de un eslabón del modelo simulado en Blender del robot SCARA de la Fig. 1, con y sin el emparentado de objetos activado.

(a)

Los objetos que actúan 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 gráfica. Esta nomenclatura consiste en introducir un carácter '_' 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. obstáculos). Finalmente, a la hora de diseñar 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 ADQUISICIÓN DE DATOS

Este script, programado en Python, tiene como propósito 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 diseño de Blender y la parte gráfica de la interfaz. El script se ejecuta automáticamente una vez se inicia Blender, para disponer de forma rápida de los datos necesarios para iniciar la parte gráfica de la interfaz.

(b) Figura 3: Emparentado entre objetos en Blender: (a) emparentado activado, y (b) desactivado. 3.3

INTERFAZ GRÁFICA

Es la parte más importante de la interfaz, ya que se encarga de generar los controladores que permiten manejar cada eslabón del brazo robot de forma independiente, así como de habilitar la edición de los parámetros que regulan el comportamiento de los eslabones del robot, definiendo unas características que se describirán más adelante. Esta parte de la interfaz ha sido diseñada mediante Tkinter, una adaptación de la biblioteca gráfica Tcl/Tk [10] para Python que, al venir incluida en sus bibliotecas, permite programar interfaces gráficas Python para plataformas Linux, Windows y Mac.

807

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

Figura 4: Configuración de la interfaz para el robot SCARA. 3.3.1 Ventana Principal Dado que no todos los brazos robot presentan necesariamente el mismo número de eslabones, la ventana principal de la interfaz gráfica es diferente para cada tipo de robot que se pretenda simular, mostrando por pantalla un número de controladores proporcional al número de eslabones móviles 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 gráfica es el que se encarga, en primer lugar, de iniciar Blender, para que el script de adquisición de datos anterior recoja la información necesaria de la escena diseñada y cargue posteriormente dichos datos en memoria, para así poder construir la interfaz gráfica. Una vez cargados los datos necesarios, se genera la ventana de la interfaz gráfica, dotada, como se ha dicho, de un número de controladores determinado por el número de eslabones del robot simulado. Por cada eslabón, se crean dos controladores deslizantes: uno para el control de la posición y otro para el de la velocidad del eslabón. 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 posición y velocidad que se desee, siempre que estas se encuentren en el rango de posiciones permitidas para cada articulación.

Figura 5: Configuración 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, añadiendo los valores modificados de posición y velocidad, con cada modificación de los controles. Además, en la esquina inferior derecha de la interfaz se crea un botón que, al pulsarlo, abre la ventana de edición de parámetros, que se describirá más adelante. Tras abrir la ventana, el botón se deshabilita, impidiendo así que se abran múltiples instancias de la ventana. Finalmente, debajo de los controladores de posición y velocidad de los eslabones y a la izquierda del botón de edición de parámetros, se incluye un botón de activación que permite dos tipos de control de la posición, que se describen a continuación:

808

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

Figura 7: Ventana de edición de parámetros. Dado que todos los eslabones requieren de los mismos tipos de parámetros para funcionar correctamente, la apariencia de la ventana de edición de parámetros será la misma para cualquier eslabón seleccionado mediante las pestañas de la parte superior de la ventana.

Figura 6: Ejemplo de interfaz usando el posicionamiento instantáneo. •



Desplazamiento en Tiempo Real. Cuando el botón de activación 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 gráfica. Este tipo de control puede verse en la Fig. 4 y la Fig. 5. Posicionamiento Instantáneo. Este tipo de control ocurre cuando el botón de activación está desactivado, posicionando instantáneamente los eslabones del robot en el momento en que se modifica la posición (rotación o desplazamiento) de cualquiera de sus eslabones. Este modo se usa para comprobar al momento el posicionamiento de los eslabones del robot, descartando la visualización de la animación del cambio de posición. En la Fig. 6 se muestra el aspecto de una interfaz con este modo de visualización.

3.3.2 Ventana de Edición de Parámetros Esta ventana es la que permite editar los parámetros que definen cada eslabón del robot simulado, introduciendo los valores necesarios en los cuadros de texto y cajas de selección que pueden verse en la Fig. 7. En la parte superior se encuentran las pestañas con los nombres de los eslabones del robot, los cuales permiten agrupar las cajas de entrada de texto de una forma más compacta y cómoda de editar.

A continuación 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 selección superior se elige el tipo de articulación (prismática o rotativa) que definirá el tipo de movimiento del eslabón. En la interfaz únicamente se tienen en cuenta estos dos tipos de articulación, ya que los demás tipos pueden obtenerse como combinación de estos [2].



En la segunda caja de selección, se permite seleccionar el eje (X, Y ó Z) en el sistema coordenado local al eslabón sobre el que éste se desplaza o rota.



En los dos primeros cuadros de texto, se introducen las posiciones mínima y máxima del eslabón respectivamente, siendo un valor en metros para las articulaciones prismáticas y en grados angulares para las rotativas.



Los dos últimos cuadros de texto permiten introducir las velocidades mínima y máxima del eslabón, que deberán ser positivas. Para las articulaciones prismáticas, la velocidad vendrá dada en m/s para las rotativas en grados/s.

El botón situado en la parte inferior de esta ventana permite, al presionarlo, guardar los parámetros introducidos en el archivo de datos. Tras esta operación, la ventana se cierra, se actualizan los controles correspondientes de la ventana principal y se rehabilita el botón de acceso a los parámetros, para permitir su modificación siempre que se desee.

809

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

SCRIPT DE ANIMACIÓN EN BLENDER

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 gráfica, 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 según los parámetros de posición y velocidad introducidos en la interfaz gráfica, como la variación de las posiciones de los eslabones a lo largo del tiempo en la transición de una posición a otra, en el caso de que el botón de activación “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 actualización 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 actualización 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.

datos de modelos o tipos de robots determinados, normalmente de una marca concreta. La interfaz presentada en este artículo, por el contrario, se ha diseñado con el objetivo de ser totalmente genérica y flexible, además de orientar su desarrollo para su uso con herramientas de código abierto y licencia libre GNU multiplataforma. Si bien no cuenta quizás con el número de opciones y parámetros 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 vía de desarrollo iniciada aquí, y que en versiones futuras puede aumentar su funcionalidad y complejidad, haciendo uso de técnicas de interfaz software como las aquí estudiadas. Agradecimientos El presente trabajo ha sido financiado por la Universidad de Extremadura y la Consejería de Sanidad y Dependencia de la Junta de Extremadura, dentro de la Acción VII del Plan de Iniciación a la Investigación, Desarrollo Tecnológico e Innovación 2011, con el proyecto titulado: Implementación de un Sistema Inteligente de Visión Artificial para el Apoyo en Seguridad Activa de Sistemas de Control Numérico Computerizado en Maquinarias de Corte. Referencias

Además, como las velocidades introducidas a través de la interfaz gráfica descrita en el apartado anterior vienen dadas en m/s y en grados/s, resulta necesario que en el script se produzca una conversión de las unidades de velocidad a la hora de actualizar las posiciones de los eslabones en cada frame. Esta conversión puede expresarse mediante la relación:

[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 línea [Consulta: 15/06/2012]: http://web.cs.mun.ca/~donald/msc/thesis.html

v fps

[2] Craig, J. J. (2004): Introduction to Robotics Mechanics and Control, 3rd ed., Prentice-Hall, Englewood Cliffs, New Jersey, Estados Unidos. ISBN: 978-0201543612.

D=

,

(1)

donde D es el desplazamiento del eslabón en cada fotograma, expresado en m/fotograma para las articulaciones prismáticas y en grados/fotograma para las rotativas, v es la velocidad del eslabón introducida a través de la interfaz gráfica y fps es la tasa de fotogramas por segundo de la simulación.

4

CONCLUSIONES

Las interfaces que permiten el control y simulación de brazos robot desarrolladas hasta la fecha, pese a formar parte de proyectos que permiten manipular muchos aspectos y parámetros de los robots simulados, carecen en general de la libertad de poder desarrollar robots propios, limitándose a una base de

[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

810

XXXIII Jornadas de Autom´atica. Vigo, 5 al 7 de Septiembre de 2012 [6] COSIMIR software. Mitsubishi Europe, B.V. Ratingen, Alemania.

Electric

[7] Blender software. Sitio http://www.blender.org/

oficial:

web

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

[9] Ferg, S. (2009): “Python & Java: A Side-bySide Comparison”, Python Conquers The Universe Blog. En línea [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/

811

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.