0% encontró este documento útil (0 votos)
218 vistas156 páginas

Proyecto

Este documento describe un proyecto para simular virtualmente un robot articulado utilizando Java 3D. El proyecto incluye el modelado 3D del robot, la implementación de su movimiento a través de animaciones y comportamientos, el cálculo de su cinemática directa e inversa, el desarrollo de una interfaz gráfica para controlar la simulación, y la conexión del simulador virtual a un robot físico para permitir su monitorización y control remoto. El documento analiza las tecnologías utilizadas como Java, Java 3D y R
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
218 vistas156 páginas

Proyecto

Este documento describe un proyecto para simular virtualmente un robot articulado utilizando Java 3D. El proyecto incluye el modelado 3D del robot, la implementación de su movimiento a través de animaciones y comportamientos, el cálculo de su cinemática directa e inversa, el desarrollo de una interfaz gráfica para controlar la simulación, y la conexión del simulador virtual a un robot físico para permitir su monitorización y control remoto. El documento analiza las tecnologías utilizadas como Java, Java 3D y R
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Autores:

Benito Jos Cuesta Viera [email protected] Juan Lucio Cruz Mndez [email protected]

Tutor:
Leopoldo Acosta Snchez [email protected]

Simulacin Virtual de Robots Articulados

ndice
Prlogo ___________________________________________________________ 6 Organizacin del proyecto __________________________________________ 6 Agradecimientos __________________________________________________ 7 Captulo 1: Introduccin _____________________________________________ 8 Objetivos del proyecto_____________________________________________ 9 Evolucin del proyecto ____________________________________________ 9 Caractersticas generales __________________________________________ 10 VRML o Java (API 3D) __________________________________________ VRML ________________________________________________________ Historia de VRML_______________________________________________ Caractersticas Generales de VRML _________________________________ Visualizadores VRML____________________________________________ Java __________________________________________________________ Un poco de historia ______________________________________________ Aplicacin Java, Java Applet, JavaScript _____________________________ Caractersticas Generales de Java ___________________________________ APIs de Java ___________________________________________________ Arquitecturas Distribuidas _______________________________________ Diseo aplicaciones Distribuidas ___________________________________ Aplicaciones Distribuidas en Internet ________________________________ Applet en Internet _______________________________________________ Solucin Java___________________________________________________ 13 13 14 15 16 17 18 18 19 21 24 24 25 26 27

Monitorizacin del Puma Real ____________________________________ 29 Conclusiones____________________________________________________ 30 Capitulo 2: Java 3D ________________________________________________ 31 Caractersticas Bsicas del Lenguaje________________________________ Java y Java 3D__________________________________________________ Bases de la P.O.O. _______________________________________________ El API Java 3D _________________________________________________ Objetivos del API Java 3D ________________________________________ El Concepto de Escena ___________________________________________ Jerarqua de clases del API Java 3D _________________________________ Modelado Virtual del Robot _______________________________________ Construccin de un programa en Java 3D_____________________________ Alguna terminologa del Java 3D ___________________________________ Construccin de una escena simple__________________________________ Partes fundamentales del modelado del robot__________________________ Base del Robot__________________________________________________ Brazo #1 del Robot ______________________________________________ Brazo #2 del Robot ______________________________________________ 32 32 33 34 34 35 39 42 42 44 45 47 48 50 52 2

Simulacin Virtual de Robots Articulados Mueca del Robot _______________________________________________ 54 Movimiento Virtual del Robot _____________________________________ Animaciones y objetos Behavior____________________________________ La clase Alpha y las articulaciones de revolucin ______________________ Implementacin de las articulaciones de revolucin_____________________ Colisiones ______________________________________________________ Interacciones y Animaciones_______________________________________ Implementacin de una clase Behavior_______________________________ Condiciones de comienzo (Wakeup Conditions) _______________________ Configuracin de Behaviors para las colisiones ________________________ 56 56 57 60 62 62 63 64 65

Conclusiones____________________________________________________ 68 Captulo 3: Teora sobre la Cinemtica del Robot ________________________ 69 Caractersticas Geomtricas del Robot ______________________________ Introduccin y Caractersticas Tcnicas ______________________________ Geometra del Robot Mentor_______________________________________ Generalizacin y Modelo Matemtico _______________________________ Clculo Matemtico de la Cinemtica Directa ________________________ El problema de la Cinemtica Directa________________________________ Modelos de los Movimientos de las Cadenas Articuladas ________________ Matrices Homogneas Compuestas__________________________________ Procedimiento de Denavit-Hartenberg _______________________________ Clculo de la Direccin de Acercamiento y Cierre______________________ Clculo Matemtico de la Cinemtica Inversa ________________________ El problema de la Cinemtica Inversa________________________________ Clculo de la Cinemtica Inversa para las tres primeras articulaciones ______ Clculo de las dos ltimas articulaciones _____________________________ Clculo del resto de soluciones _____________________________________ Errores Cometidos en los Clculos Matemticos ______________________ Errores de Precisin______________________________________________ Errores de Redondeo y Clculos Recursivos __________________________ Errores de Conversin ____________________________________________ 70 70 73 75 77 77 79 81 82 85 88 88 89 93 95 98 98 98 99

Conclusiones___________________________________________________ 101 Captulo 4: Mdulo de Simulacin (GUI) ______________________________ 102 Conocimientos Generales ________________________________________ Funcionalidad _________________________________________________ Caractersticas Generales ________________________________________ Requerimientos y Recomendaciones________________________________ Clculo de la Cinemtica Directa__________________________________ Objetivo ______________________________________________________ Control de la C. Directa__________________________________________ Resultados Tericos ____________________________________________ 103 103 104 105 106 106 106 107

Simulacin Virtual de Robots Articulados Resultados Virtuales ____________________________________________ 108 Clculo de la Cinemtica Inversa__________________________________ Objetivo ______________________________________________________ Control C.Inversa ______________________________________________ Resultados Tericos ____________________________________________ Resultados Virtuales y Soluciones _________________________________ Obtencin de las Configuraciones Binarias __________________________ Control del Simulador Virtual ____________________________________ Vistas de la Escena _____________________________________________ Navegando por la Escena 3D _____________________________________ Control del Objeto Virtual________________________________________ Moviendo el Robot Virtual PUMA _________________________________ Luces ________________________________________________________ 109 109 109 110 110 111 112 112 113 114 114 115

Conclusiones___________________________________________________ 116 Captulo 5: Acceso Remoto y Monitorizacin ___________________________ 117 Funcionamiento del PUMA real___________________________________ 118 Conceptos Generales: Actuadores y Sensores del robot PUMA___________ 118 Proceso de calibracin___________________________________________ 120 Mdulo de Acceso Remoto (Fase I) ________________________________ Acceso Local al Puma ___________________________________________ Creacin de una clase para los mtodos nativos _______________________ Uso de Javah __________________________________________________ Implementacin de los Mtodos Nativos ____________________________ Mdulo de Acceso Remoto (Fase II) _______________________________ Acceso Remoto al Puma _________________________________________ Crear la Interfaz Remota _________________________________________ Implementacin de la Interfaz Remota ______________________________ Fragmentos Adaptadores y Esqueletos ______________________________ Ficheros del Host Cliente ________________________________________ Iniciar el Registro Remoto _______________________________________ Crear y registrar el Objeto Remoto _________________________________ Implementacin del applet cliente RMI _____________________________ 123 124 124 125 126 130 130 133 133 135 135 136 136 136

Mdulo de Monitorizacin _______________________________________ 139 Requerimientos en el Servidor ____________________________________ 139 Visualizacin en los Clientes _____________________________________ 140 Conclusiones___________________________________________________ 142 Captulo 6: Balance del Proyecto_____________________________________ 143 Conclusiones Finales ____________________________________________ 144 Sugerencias____________________________________________________ 145 Apndices _______________________________________________________ 148

Simulacin Virtual de Robots Articulados Apndice A: Configuracin del Java en los Clientes __________________ 149 Apndice B: Configuracin del WEBSITE + Simulador Virtual ________ 150 Apndice C: Configuracin del Servidor de Acceso Remoto ___________ 151 Apndice D: Configuralcin del Servidor de Monitorizacin ___________ 153 Bibliografa____________________________________________________ Web sites_______________________________________________________ Artculos _______________________________________________________ Libros Especficos de Java _________________________________________ Libros Generales _________________________________________________ 154 154 154 154 155

Nuestras Clases Java ____________________________________________ 156

Simulacin Virtual de Robots Articulados

Prlogo
Organizacin del proyecto Agradecimientos

LA robtica ha experimentado en los ltimos aos un gran auge y se encuentra


cada vez ms presente en los medios universitarios e industriales. Desde que en 1978 General Motor Studios creara el robot PUMA (Manipulador Universal Programable para Tareas de Ensamblaje) se ha evolucionado mucho y han aparecido nuevos modelos de robots ms modernos y complejos. Aquellos primeros robots como el PUMA, hoy en da se han consolidado como modelos estndar y aunque no pueden rivalizar con los robots actuales utilizados con fines comerciales, poseen ciertas caractersticas que los hacen muy interesantes desde el punto de vista didctico.

Imagen del Robot PUMA obtenida apartir del Mdulo de Simulacin Virtual El estudio de los modelos estndar (PUMA, SCARA y STANFORD) es la base ideal para la iniciacin y comprensin de los fundamentos de la robtica. Desgraciadamente, es difcil para un usuario acceder a estos robots debido a su precio y suelen estudiarse en la mayora de los casos slo de forma terica. Por esta razn, se ha decidido realizar un simulador del robot PUMA y para lograr que sea accesible al mayor nmero de personas se ha elegido Internet como medio de difusin. El proyecto adems de este mdulo de simulacin virtual del robot PUMA se ha completado con la creacin de una interfaz para acceder remotamente a un puma real y un modulo de monitorizacin en tiempo real que permite observar las evoluciones del robot.

Organizacin del proyecto

DURANTE el desarrollo de este proyecto que ha durado casi un ao hay que


destacar la labor de investigacin que se ha realizado, buscando siempre la mejor forma de abordar el proyecto con la ayuda de las nuevas tecnologas de la red. El proyecto esta dividido en cinco secciones que describen diferentes aspectos necesarios para comprender el funcionamiento global del sistema. El primer captulo hace una introduccin rigurosa del proyecto y analiza las 6

Simulacin Virtual de Robots Articulados diferentes opciones que hemos estudiado para su desarrollo. Simultneamente, comenta las diferentes soluciones elegidas para cada uno de los mdulos del sistema. El captulo segundo hace una introduccin sobre Java 3D y se comienza a modelar el puma virtual, recalcando las diferencias entre el modelo terico y virtual. El captulo tres hace un repaso sobre el modelo terico del robot PUMA, se estudia la cinemtica directa e inversa para el mismo y se comentan algunos aspectos relacionados con errores de redondeo en los clculos. El funcionamiento del Mdulo de simulacin se analiza en el captulo cuatro. En l se explica como sacar el mximo rendimiento a este mdulo. El captulo cinco describe como se realiza el acceso remoto y monitorizacin del puma real. Las cinco secciones anteriores se completan con un apndice en el que encontramos informacin sobre las herramientas utilizadas, como compilar el proyecto, nuestras clases, requerimientos del sistema, cdigo fuente, bibliografa, enlaces de inters, etc.

Agradecimientos

CUANDO se trabaja con nuevas tecnologas, a la dificultad que tienen las


cosas hay que aadir la incertidumbre, falta de informacin y desconocimiento que en general existe sobre estas tecnologas. Nosotros queremos agradecer la colaboracin desinteresada de varias personas que de una manera u otra han colaborado en el desarrollo de este proyecto. Nuestro agradecimiento a Leopoldo Acosta Snchez ([email protected]) tutor del proyecto, que ha contribuido con su asesoramiento terico, disposicin en todo momento, colaboracin facilitando material tcnico y participacin en la mejora del contenido del proyecto gracias a sus sugerencias y consejos. Al utilizar una herramienta novedosa como es el API Java 3D presentado al pblico en 1998, es difcil encontrar informacin que no sea la que proporciona Sun MicroSystem. Si la informacin que buscas no se encuentra en los libros, qu sera de nosotros si no existiesen los amigos de la red. Amigos como Ron Van Hoof ([email protected]) que de forma desinteresada te ayudan a seguir adelante. Nuestro agradecimiento a Jos Luis Roda ([email protected]) que ha mostrado siempre inters por este proyecto al tiempo que ha contribuido con su opinin y experiencia en los temas relacionados con arquitecturas distribuidas y en particular RMI. A todos ellos un saludo y gracias. Benito Cuesta Viera ([email protected]) Juan Lucio Cruz Mndez ([email protected])

Simulacin Virtual de Robots Articulados

Captulo 1: Introduccin

Simulacin Virtual de Robots Articulados

Objetivos del proyecto


Evolucin del proyecto Caractersticas generales

ANTES de adentrarnos en los detalles del proyecto y su funcionalidad, se


impone una breve presentacin de su historia y evolucin. Hablaremos de cuales han sido las decisiones ms importantes que han influido en el desarrollo de este proyecto.

Evolucin del proyecto

DESDE un primer momento se tena clara la idea de realizar una simulacin


virtual en tres dimensiones del robot PUMA. Otro aspecto que se tena claro era que la simulacin debera estar disponible en Internet. Para lograr la mxima difusin en la red el simulador debera ser capaz de ejecutarse en un navegador WEB. Esta peculiaridad, hace inviable el uso de libreras de programacin grfica como DIRECTX u OPENGL, empleadas en la actualidad por creadores de juegos en sus desarrollos grficos, se tena que trabajar a ms alto nivel. Haba que buscar tecnologas propias del WEB. La primera opcin factible apareci de la mano de VRML (Lenguaje de Modelado de Realidad Virtual). Durante mucho tiempo estuvimos investigando las posibilidades que ofreca VRML hasta que finalmente un usuario de la red nos habla de Java 3D. Las diferencias entre Java 3D y VRML son importantes, y finalmente hemos optado por Java 3D porque se adapta mejor a las caractersticas de nuestra aplicacin. En el siguiente apartado comparamos VRML y Java 3D subrayando las razones que nos han hecho decantarnos por Java 3D. Java 3D es en realidad una extensin del API de Java, por eso no basta con tener una mquina virtual Java en nuestro ordenador para utilizar Java 3D, sino que se hace necesario utilizar un PLUG-IN (vase Apndice A: Configuracin de los clientes) que facilite el soporte de Java 3D. El uso de Java 3D y Java para desarrollar el proyecto nos ha permitido crear un Applet Java que contiene todo el mdulo de simulacin virtual. El siguiente apartado habla de Java como lenguaje de programacin orientado a Internet. Otra decisin importante fue la eleccin de un enfoque adecuado para la realizacin del modulo de acceso remoto al PUMA real. Tras la experiencia positiva de haber utilizado un Applet Java para la implementacin del mdulo de simulacin, desebamos continuar trabajando con Java y su filosofa. Java proporciona muchas posibilidades a la hora de realizar aplicaciones distribuidas, en el apartado tres de este captulo se hace una breve descripcin de estas alternativas. Tambin se comentan algunas muy populares pero que no se adaptan a la filosofa de Java. Una vez realizado el simulador del PUMA y teniendo el mdulo de control remoto del PUMA Real, nos encontramos con un sistema muy completo en el que los usuarios pueden realizar simulaciones en el PUMA Virtual y controlar a travs de Internet sus evoluciones en el Puma Real. Para controlar el estado del PUMA Real se utiliza el mdulo de acceso remoto que permite manipular el PUMA mediante sus sensores y actuadores. El proyecto estaba acabado pero no completo, al poco tiempo de 9

Simulacin Virtual de Robots Articulados empezar a trabajar en el sistema el usuario senta el deseo de ver que estaba pasando realmente en el PUMA real. Por esta razn nace un tercer y ultimo mdulo en el proyecto encargado de realizar una labor de monitorizacin de robot. Este mdulo, que curiosamente tambin es una Applet Java, muestra una imagen del PUMA real aproximadamente cada segundo. En sucesivos captulos se abordar este mdulo con ms detalle y se propondrn otras posibles soluciones para conseguir un mdulo de monitorizacin ms eficiente, que permita transmitir imagen y sonido en tiempo real, etc.

Caractersticas generales

EL proyecto est estructurado en cuatro grandes bloques estrechamente relacionados y


que presentamos a continuacin. Mdulo de Simulacin.- Herramienta de simulacin del PUMA. Mdulo de Acceso Remoto.- Permite interaccionar con un robot PUMA real. Mdulo de Monitorizacin.- Realiza un seguimiento del PUMA real. Complementos.- El WEB SITE, documentacin del proyecto, videos, imgenes, etc. El mdulo de simulacin est formado por un Applet que se encuentra ubicado en el servidor WEB del Centro Superior de Informtica de la Universidad de la Laguna, aunque podra estar ubicado en cualquier servidor WEB. El mdulo de acceso remoto y monitorizacin lo forman otros dos Applet que requieren un trato especial. El mdulo de acceso remoto deber estar ubicado un servidor WEB y adems requiere el uso de un servidor RMI que utiliza un programa llamado rmiregistry que forma parte del Java Develoment Kit (vase captulo V) y permite el acceso a mtodos remotos en Java. Adems, este equipo servidor deber estar conectado a un robot PUMA a travs una PPI y un circuito. No entraremos en detalle de cmo funciona este circuito porque no forma parte de este proyecto, simplemente comentaremos que facilita la comunicacin entre la PPI y el robot PUMA. El mdulo de monitorizacin comparte el servidor WEB con el mdulo de acceso remoto y requiere un dispositivo para adquirir las imgenes del robot. Actualmente se est utilizando una cmara de vdeo conectada al servidor a travs de una tarjeta capturadora del tipo BT878. Los detalles descritos anteriormente son transparentes para los usuarios. Estos slo deben de preocuparse de tener una navegador WEB actualizado y correctamente instalado el Java Run-Time versin 1.2.2 o superior y el plug-in para Java 3D. El acceso al proyecto puede realizarse en http://www.csi.ull.es/~simvirt . En esta direccin, usted encontrar toda la documentacin del proyecto as como enlaces al mdulo de monitorizacin, acceso remoto, simulacin virtual, videos, imgenes, etc. El WEB SITE del proyecto hace uso de Applets Java, por esta razn es necesario que el usuario utilice un browser actualizado con soporte para Java, si adems usted quiere utilizar alguno de los mdulos antes mencionados deber utilizar Java Run-Time en su versin 1.2.2 o superior (vase apndice) . El mdulo de simulacin requiere adems, un plug-in para Java 3D. Todo este software esta disponible en la pgina WEB de Sun

10

Simulacin Virtual de Robots Articulados http://www.java.sun.com adems existen diferentes versiones segn el sistema operativo que utilice el usuario. Este proyecto esta relacionado con la simulacin aplicada al rea de la robtica. Hay que mencionar que no se trata de simple animacin donde lo que prima es lograr unos buenos efectos especiales que se vean lo mejor posible. En la simulacin se busca siempre otros objetivos. Por ejemplo, en un simulador de vuelo se busca que un piloto aprenda a pilotar aviones. Nosotros hemos realizado este proyecto con fines didcticos y est dirigido a tres tipos de usuario; el usuario ingenuo sin conocimientos de robtica, el usuario amateur con ciertos conocimientos y finalmente el usuario avanzado que tiene experiencia y domina estos temas. Cada uno de ellos puede encontrar algn aspecto del proyecto que le fascine y despierte su curiosidad e inters. El usuario ingenuo puede iniciarse en el mundo de la robtica teniendo una primera experiencia visual de lo que es un robot real. Esto lo consigue gracias a un el mdulo de monitorizacin implementado en Java que forma parte de este proyecto y que permite visualizar el estado del robot PUMA en tiempo real. Un usuario desde cualquier parte del mundo utilizando nicamente una conexin a Internet y un navegador WEB que soporte Java, puede observar el estado del PUMA ubicado en el Laboratorio de Computadoras y Control de la Universidad de La Laguna. Adems, utilizando el mdulo de simulacin virtual del robot podemos experimentar con un modelo virtual que caracteriza muy bien al modelo real sin necesidad de tener un robot en casa. El usuario puede controlar el robot virtual utilizando una interfaz muy amigable que le introduce poco a poco en el mundo de la robtica. El usuario sin darse cuenta empieza a plantearse problemas relacionados con la cinemtica directa, inversa y toda la teora que subyace detrs de la robtica, aunque no sea consciente de ello. Finalmente la informacin disponible en el WEB SITE puede ayudar a los usuarios a conocer ms a fondo este proyecto e iniciarse en el mundo de la robtica. Para aquellos usuarios que ya dispongan de ciertos conocimientos sobre robtica puede utilizar el mdulo de simulacin para estudiar la cinemtica directa e inversa de robot PUMA y comprobar sus conocimientos tericos. Si usted es un buen observador puede descubrir cosas que normalmente pasan inadvertidas porque parecen lo ms natural del mundo, pero recordar que aqu todo es virtual. Al experimentar con el rea de trabajo del robot se concluye que ha sido acotada para que los movimientos del PUMA virtual sean exactamente los que permite el PUMA real. Podemos descubrir las cuatro soluciones que existen para llegar a un punto utilizando el robot y ver como algunas soluciones no sern alcanzables debido a las limitaciones que ofrece el modelo real; limitaciones que tambin se recogen en el modelo virtual. Mediante una vista ms cercana podemos descubrir donde estn los sensores del robot y los actuadores y como deberan funcionar fsicamente. Cuando la estructura del robot se mueve podemos apreciar cierta inercia producida por las caractersticas fsicas de la estructura. Los usuarios escpticos estn de enhorabuena ya que tienen la posibilidad de mover un robot real, este robot real nos ha servido de modelo para crear nuestro robot virtual. El acceso se realiza a travs de Internet y utilizando un browser. Entre las opciones que permite este mdulo de acceso remoto se encuentra la de permitir que el usuario compruebe el estado actual del robot realizando una lectura de los sensores que el PUMA dispone en cada una de sus articulaciones. Tambin ofrece la posibilidad de mandar instrucciones al robot y que este reaccione en consecuencia. De esta forma, se entra en una dinmica en la que el usuario primero trabaja con el simulador y cuando tiene los resultados que buscaba, realiza una prueba con el robot real que debera

11

Simulacin Virtual de Robots Articulados confirmar los resultados obtenidos mediante simulacin. Finalmente, el usuario puede comprobar la reaccin del puma real utilizando el mdulo de monitorizacin. Un usuario experto, lo que debe buscar en este proyecto en bsicamente ideas que le ayuden en su trabajo. Se ha diseado un esquema de arquitectura distribuida que permite a un usuario acceder a un dispositivo hardware (el robot PUMA en este caso) a travs de Internet. Este esquema es vlido en general para cualquier hardware, el nico requisito es que sea capaz de programarse como mnimo en C o Ensamblador. La tecnologa RMI de Java permite el acceso a mtodos remotos, podra permitirnos hacer cosas como gestionar remotamente una cadena de montaje de formada coordinada y utilizando la red. Tambin Java 3D ofrece muchas posibilidades, podemos crear prototipos de robots y realizar simulaciones, trabajar sobre modelos de robots que cuestan mucho dinero y su adquisicin no es viable.

12

Simulacin Virtual de Robots Articulados

VRML o Java (API 3D)


VRML Historia de VRML Caractersticas Generales de VRML Visualizadores VRML Java Un poco de historia Aplicacin Java, Java Applet, JavaScript Caractersticas Generales de Java APIs de Java

EL objetivo de este apartado es realizar una comparativa entre VRML y Java


3D. Comenzaremos por conocer un poco mejor y de manera individual a cada uno de los protagonistas de esta historia. Simultneamente comentamos las ventajas y desventajas que supone trabajar con una u otra opcin.

VRML

ES el acrnimo de "Lenguaje de Modelado de Realidad Virtual". Tambin es


un formato de ficheros para describir objetos interactivos en tres dimensiones y mundos que se puedan visualizar a travs de Internet de forma similar a cmo se utiliza el lenguaje HTML para visualizar texto. El lenguaje VRML permite describir simulaciones interactivas en la que pueden participar varios usuarios simultneamente (cada uno en su propio mundo virtual). Todos los aspectos de los mundos virtuales, desde su visualizacin hasta la interaccin con los usuarios, se pueden especificar al utilizar VRML. VRML no es un lenguaje de programacin como Visual Basic, C o Java ni es un lenguaje de descripcin de pginas como HTML. Es un lenguaje de modelado que se utiliza para describir objetos y escenas en tres dimensiones. Es ms complejo que HTML, pero menos que un lenguaje de programacin si exceptuamos la nueva capacidad para crear guiones de comportamiento de VRML 2.0. VRML proporciona un mtodo eficiente para describir todo tipo de objetos y mundos tridimensionales. Adems, VRML hoy en da es un estndar que puede contener imgenes, sonidos, animaciones y efectos multimedia. Suele utilizarse con frecuencia por programas de animacin como LightWave o 3D-Studio para intercambiarse objetos entre s. Para escribir los ficheros VRML se puede utilizar cualquier editor de texto o aplicaciones comerciales como 3D-WebMaster que te permite modelar la escena de una forma ms fcil. Los ficheros VRML se pueden visualizar utilizando un browser VRML o bien utilizando un plug-in VRML para un browser HTML. En la siguiente imagen se observa uno de estos mundos virtuales embebido en un plug-in VRML el cual

13

Simulacin Virtual de Robots Articulados proporciona una interfaz a los usuarios para navegar e interaccionar con el mundo virtual.

Vista tpica de un Visualizador VRML

Un ejemplo en el que sera adecuado aplicar VRML podra ser para recrear el futuro C. S. Informtica de la Universidad de La Laguna, utilizando imgenes digitalizadas para reproducir sus materiales. De este modo, el centro puede convertirse en un fichero VRML y cualquier persona podra deambular por sus jardines y pasillos. Se podra tambin incluir informacin adicional en forma de sonido o texto sobre determinados aspectos del centro.

Historia de VRML

VRML se concibi en 1994 en la primera conferencia anual sobre la WWW en


Ginebra, Suiza. Tim Berners-Lee y Dave Raggett organizaron una reunin para discutir la posibilidad de adaptar las interfaces de realidad virtual a Internet. Varios asistentes a dicha reunin describieron proyectos para crear herramientas de visualizacin de grficos en tres dimensiones que operaran a travs de la Red. La mayora de los asistentes estuvo de acuerdo en la necesidad de que esas herramientas tuviesen un lenguaje comn para especificar la descripcin de las escenas tridimensionales y los hiperenlaces WWW, es decir, un equivalente HTML, pero orientado a la realidad virtual, y se acu el trmino VRML (Virtual Reality Modeling Language). Despus de

14

Simulacin Virtual de Robots Articulados una larga discusin y diversos estudios en la que se analiz todo tipo de opciones, se lleg a la conclusin de que VRML estara basado en el formato de ficheros ASCII Open Inventor de Silicon Graphics Inc. Este formato de ficheros soporta la descripcin completa de escenas tridimensionales con objetos poligonales renderizados, luces, materiales, propiedades ambientales y diversos efectos. Los diseadores decidieron que VRML no deba ser una extensin del lenguaje HTML, que est diseado para manipular texto, no grficos. Adems, VRML necesita una optimizacin de las redes an mayor que HTML. Se esperaba que una escena VRML tpica estara compuesta de muchos ms objetos en lnea y en ella intervendran mucho ms servidores que en un documento HTML. Para no estorbar el proceso de desarrollo de HTML con problemas referentes al VRML ni limitar el proceso de diseo de VRML por cuestiones de compatibilidad con HTML, algo perjudicial para ambos lenguajes, se decidi que VRML tendra xito o fracasara con independencia de HTML. La primera versin de este lenguaje fue creada por la compaa Silicon Graphics Inc, y estaba basada en el formato de ficheros Open Inventor. La versin 2.0 de VRML aade muchas capacidades interactivas y ha sido diseada por Silicon Graphics con contribuciones de las compaas Sony Research y Mitra.

Caractersticas Generales de VRML


Son inmersivos

Los usuarios entran en estos mundos a travs de la pantalla del ordenador y se desplazan por ellos como si se desplazaran por el mundo real. Cada persona puede seguir su propia ruta. Esta caracterstica es til y tambin est soportada por Java 3D. En nuestro proyecto no vamos a controlar el PUMA desde dentro de la escena 3D como si nosotros formramos parte del mundo, se trata ms bien de hacer que el protagonista sea el PUMA que estar inmerso en el universo virtual en una posicin concreta. Todas las caractersticas que permite VRML al usuario como navegar por el mundo virtual ha su voluntad y cambiar el punto de vista de la escena, se han incluido tambin en nuestro modelo en Java 3D. Son interactivos

Los objetos del mundo pueden responder entre ellos y a eventos externos creados por los usuarios, mientras que stos manipulan los objetos de las escenas. En VRML, la inmensa mayora de los eventos estn producidos por la accin del ratn, cuando el usuario selecciona un objeto, lo arrastra, etc. El resto de eventos los produce el abatar (representacin conceptual del usuario en el mundo virtual) y se disparan cuando este se mueve por el mundo. Por ejemplo, VRML permite controlar colisiones que se produzcan cuando el abatar colisiona con un objeto, pero no controla que dos objetos colisionen entre s. Estas peculiaridades de VRML obligan a que la interaccin de los usuarios con el mundo virtual sea travs del abatar. En nuestra simulacin del robot PUMA se requiere un gran trasiego de datos que hay que facilitar al simulador por parte del usuario y viceversa. En este caso, una interfaz 2D se ajusta mejor de cara a facilitar el manejo del simulador al usuario. En Java 3D se pueden crear interfaces 2D gracias a que Java provee al programador de clases especficas para el desarrollo GUI 15

Simulacin Virtual de Robots Articulados (Interfaz Grfica de Usuario). En VRML, se podra hacer algo similar utilizando lo que se conoce como EAI (External Authory Interface), muy de moda ahora en la actualidad. Esta solucin dejara lo que no pueda hacer VRML a otro lenguaje o tecnologa. Es decir, implementar un EAI, pasa por crear un Applet Java que se comunique con un archivo VRML de forma que puedas modificar la escena en tiempo real. EAI proporciona los mecanismos necesarios para comunicar VRML con Java, JavaScript, etc. En nuestra opinin es preferible realizar el simulador en su totalidad en Java porque de esta forma se obtiene un producto ms compacto. Otra opcin vlida sera sustituir el Applet Java por JavaScript, pero cuando se habla de JavaScript hay que pensar primero que visualizador vas a utilizar y segundo si vas a trabajar sobre Netscape o Internet Explorer. De todos es sabido Netscape utiliza JavaScript y Microsoft se ha venido desmarcando de Netscape y ha creado su propia variante llamada Jscript. El usuario es el que controla la experiencia

Los distintos visualizadores permiten a los usuarios desplazarse a voluntad a travs de los mundos virtuales. El ordenador no proporciona rutas fijas sino que es el usuario el que va seleccionando cada una de ellas y decidiendo la ruta que quiere seguir. Los programadores de los mundos tambin pueden indicar cules son las rutas recomendadas para aprovechar la visita al mximo. EL uso de diferentes plug-in es el mayor problema que presenta VRML, existe gran variedad de plug-in VRML y cada uno de ellos tiene sus propias particularidades, ya no slo en el mbito de apariencia exterior sino en las caractersticas internas del propio lenguaje. En Java 3D se puede utilizar cualquiera de los navegadores WEB ms comunes (Netscape, Internet Explorer, HotJava), es Sun MicroSystem quien se encarga de proporcionar un nico plug-in que depender del Sistema Operativo y tarjeta de vdeo (si trabaja con libreras Open-GL o bien DirectX, etc) que utilice el usuario.

Visualizadores VRML

VEAMOS algunos de los visualizadores disponibles en el mercado, al hacerlo,


aparecen diferencias importantes que vienen a corroborar lo que ya comentbamos antes. La falta de un organismo regulador ha hecho que cada fabricante proponga una idea similar pero diferente, de lo que debe ser un buen visualizador VRML. Algunos han implementado todas las caractersticas del estndar VRML 2.0, otros en cambio han aportado nuevas caractersticas que no son del estndar VRML 2.0. Wirl Virtual Reality Browser.- Es un visualizador VRML creado por la compaa VREAM, y disponible en forma de plug-in para Netscape y Explorer. Disponible para Windows 95 y NT. Los usuarios pueden caminar o volar a travs de mundos tridimensionales gracias a una interfaz sencilla e intuitiva. Este visualizador ofrece una gran velocidad y posiblemente la mejor calidad de imagen que se puede conseguir dentro del estndar VRML. Estas son algunas de las principales caractersticas de Wirl:

Capacidad de deteccin de colisiones Caracterstica de gravedad, hace que los pies del usuario permanezcan pegados al suelo cuando se utiliza el modo "caminar", facilitando la navegacin. A los

16

Simulacin Virtual de Robots Articulados objetos se pueden aplicar caractersticas fsicas como elasticidad y peso.

La posibilidad de definir y seleccionar posiciones predefinidas dentro del mundo permite marcar posiciones para volver a ellas posteriormente. La simulacin de comportamientos permite la creacin e interaccin de animaciones en una escena, dando a los usuarios la posibilidad de controlar esos comportamientos. Soporte integrado de audio y vdeo.

Superscape Viscape.- Este visualizador VRML funciona exactamente con los navegadores de Netscape y Microsoft bajo plataformas Intel. Viscape no requiere ningn hardware especial como cascos de Realidad Virtual o dispositivos de navegacin especficos, aunque el programa incluye soporte para ellos. Viscape incorpora la tecnologa SuperVRML que permite generar mundos virtuales ms completos y realistas incluyendo la posibilidad de interaccin con los elementos inteligentes del mundo. El inconveniente es que esta tecnologa no sigue el estndar VRML. Funciona bajo Windows 3.1, Windows 95 y Windows NT. Viscape se puede utilizar como una extensin para Netscape y Explorer, o bien como una aplicacin independiente. Cosmo Player.- Este navegador de Silicon Graphics est disponible para plataformas Intel bajo Windows 95, NT y para el sistema operativo Irix. Cosmo Player permite experimentar todas las caractersticas de los mundos VRML 2.0, incluyendo guiones, sensores y sonido. Incluye una caracterstica que mantiene constante la velocidad de reproduccin cuando nos desplazamos por los mundos, sonido tridimensional que aumenta la sensacin de inmersin en los mundos, soporte de lenguaje Java en los nodos de guin, seguimiento del terreno y deteccin de colisiones, modelo de iluminacin mejorada y soporte para el formato de imagen PNG. Cosmo Player tiene tres modos de visualizacin, Walk, Fly y Examiner. El modo Walk y el modo Fly son similares, ya que ambos permiten recorrer la escena tridimensional. La diferencia entre ambos est en que mientras el modo Walk mantiene un nivel de visualizacin constante, con el modo Fly tenemos una total libertad de movimientos y podemos "volar" a travs de las escenas. Hay variedad para todos los gustos y cada cual es libre de elegir la opcin que desee, nosotros personalmente recomendamos Java 3D. Si usted an no est convencido puede leer el siguiente apartado. Por supuesto, VRML es una alternativa para desarrollar la parte de simulacin, la parte de acceso remoto no es viable realizarla utilizando VRML.

Java

SI usted est buscando un lenguaje multiplataforma o si est considerando la


posibilidad de desarrollar aplicaciones dentro del entorno de Internet, no hay lugar a dudas, Java es su lenguaje. Despus de haber estudiado y visto las caractersticas de Java slo le hemos encontrado un inconveniente, lo rpido que evoluciona y la dificultad que supone estar actualizado.

17

Simulacin Virtual de Robots Articulados Java es un lenguaje de propsito general orientado a objetos como bien dicen sus creadores, palabras que resumen muy bien la esencia del lenguaje. Desde sus orgenes fue concebido para abordar cualquier tipo de tarea: desde dar vida a una pgina WEB hasta crear un programa de gestin pasando por juegos o aplicaciones como pueda ser un procesador de texto. Netscape ha escrito en Java su servidor WEB, Sun su browser de Internet HotJava, adems ya estn empezando aparecer aplicaciones cliente/servidor para redes como este proyecto, el programa WordPerfect ha sido reescrito en Java y en cuanto a juegos creemos que en los prximos aos asistiremos al boom de los juegos de realidad virtual a travs de la red.

DUKE mascota de Java La ventaja que tiene Java frente a lenguajes tpicos como Visual Basic o C++ es que desde un principio fue concebido para que su integracin con Internet fuese completa, esta caracterstica se aprecia al trabajar con Java porque no se tiene la sensacin de estar utilizando aadidos cuando lo aplicamos a tales fines. Todo esto es posible gracias a que Java fue adems concebido para que el propio lenguaje pudiese ser ampliado segn fuesen apareciendo nuevas necesidades.

Un poco de historia

EL proyecto de la empresa estadounidense Sun MicroSystem que dio lugar a lo


que hoy es Java tenia como finalidad encontrar un modo rpido y potente de programar chips para electrodomsticos y mquinas industriales. Era necesario que el cdigo fuese portable y que se pudiese transportar por las redes de forma fiable, caractersticas que se considerarn necesarias a la hora de desarrollar aplicaciones para Internet. Tras varios aos de incertidumbre y cuando el proyecto estaba casi abandonado apareci la WWW y con ella el auge de Internet. Sun decidi retomar de nuevo el proyecto y dotarlo de los recursos necesarios para que se pudiese convertirse en lo que hoy es Java. Java toma del C su sintaxis, lo que permite a los conocedores de C y C++ adaptarse fcilmente al nuevo lenguaje; de la POO recoge casi todos sus principios tericos, lo que le proporciona potencia y sencillez; de los intrpretes su versatilidad y de las mquinas virtuales que ejecutan p-code su velocidad y su portabilidad.

Aplicacin Java, Java Applet, JavaScript


apartados anteriores se han estado utilizando los trminos Applet, JavaScript y Aplicacin Java, en este apartado vamos a puntualizar que es cada cosa y cuales son sus diferencias. Aplicacin Java

EN

18

Simulacin Virtual de Robots Articulados Java es un lenguaje de programacin de propsito general. El cdigo fuente de este lenguaje no se compila directamente a cdigo nativo sino a p-code y necesita de una mquina virtual para que el cdigo compilado pueda ejecutarse. Para ejecutar una aplicacin Java, se invoca la aplicacin que fabrica la JVM (Java Virtual Machine) pasndole como parmetro el mdulo Java compilado. Para el usuario no hay diferencias aparentes entre una aplicacin desarrollada con otro lenguaje y la misma aplicacin realizada con Java. La aplicacin Java adopta la apariencia que utilizan las aplicaciones que corren en una determinada plataforma. Java Applet Desde el punto de vista del programador, no hay diferencias entre realizar una aplicacin Java o un Applet, es ms, si se disea apropiadamente el mismo cdigo fuente puede correr como aplicacin en solitario o como Applet. En nuestro caso, el simulador de PUMA es una Applet que hereda esa funcionalidad porque est utilizando la clase Japplet que posee Java, bastara con cambiar esa clase por Jframe y poco ms para obtener una aplicacin Java en vez un Applet. Para un usuario la diferencia es notoria, ya que un Applet se ejecuta desde una pgina WEB y una aplicacin se ejecuta en solitario desde la JVM. Para poder ejecutar un Applet, el browser tiene que tener una mquina virtual para ejecutar cdigo Java compilado (p-code). El usuario empieza escribiendo una pgina HTML en la que se incluye un comando especial que es interpretado por el navegador WEB y que le indica que debe ejecutar un Applet Java. JavaScript En principio, no tiene nada que ver con Java, es un conjunto de instrucciones simples que permiten dotar las pginas WEB de mucha mayor funcionalidad. La idea de los creadores de JavaScript es bien simple: si un navegador WEB tiene la capacidad de manejar funciones, controles (ComboBox, ListBox, etc) utilizando Applet, por qu no crear una serie de comandos simples pero potentes para poder meterlos dentro del cdigo HTML de las pginas WEB que nos faciliten caractersticas similares?. De esta forma se consigue que aplicaciones sencillas dispongan de un mecanismo fcil para realizar una interfaz de usuario sin tener que recurrir a utilizar cdigo Java. Actualmente JavaScript casi slo se utiliza para crear formularios y realizar tareas de validacin de campos en estos formularios. Estos comandos son interpretados por el navegador al descargar la pgina, de la misma forma que interpreta el resto de comandos HTML de la pgina WEB.

Caractersticas Generales de Java

CADA lenguaje de programacin dispone de sus propias peculiaridades, que se


adaptarn en mayor o menor medida al tipo de aplicacin que el usuario pretende desarrollar. En cualquier caso, siempre es interesante que el usuario conozca las caractersticas principales del lenguaje que quiere utilizar y que sepa reconocer sus ventajas y limitaciones. Simple

19

Simulacin Virtual de Robots Articulados Java ofrece la funcionalidad de un lenguaje potente, pero sin las caractersticas menos usadas y confusas de estos. Java se diseo para que fuese parecido C y C++ (los lenguajes ms extendidos en la actualidad) y as facilitar un rpido aprendizaje. La gran desventaja de C++ esta en que no es un lenguaje seguro debido principalmente al uso de los punteros. En Java se han eliminado los punteros junto con otras caractersticas de C++, para mantener reducidas las especificaciones del lenguaje y se han aadido caractersticas como el Garbage Collector (recolector de memoria dinmica). Gracias a este recolector el programador no tienen que preocuparse de liberar memoria ya que automticamente se ejecuta una tarea con baja prioridad que elimina la memoria asignada aquellos objetos que han dejado de ser referenciados, consiguiendo as liberar bloques de memoria grandes y limitar la fragmentacin de memoria. Orientado a Objetos

Con objeto de mantener la simplicidad del lenguaje se reduce parte de las caractersticas de POO (Programacin Orientada a Objetos) pero tambin se introducen algunas mejoras. Soporta las tres caractersticas propias del paradigma de la orientacin o objetos: encapsulacin, herencia y polimorfismo. En Java se trabaja con objetos y con interfaces a esos objetos. Java obliga a utilizar POO. Distribuido

Java posee extensas capacidades de interconexin sobre TCP/IP. Existen clases que te permiten acceder e interactuar con protocolos de red. Para que los programas puedan ser distribuidos y ejecutarse en varias maquinas interactuando tambin prev mecanismos como RMI, Servlets, etc. Al final de este captulo vamos a analizar en detalle la arquitectura distribuida en Java. Robusto

Java obliga a la declaracin explcita de mtodos, reduciendo as las posibilidades de error. Maneja la memoria acupndose de realizar las tareas de liberacin, evitando la corrupcin en memoria, etc. Para asegurar el funcionamiento de la aplicacin, realiza una verificacin de los ByteCodes (resultado de compilar un programa Java). Adems realiza una comprobacin de tipos para detectar errores, etc. Podemos concluir que Java busca problemas tanto en tiempo de compilacin como de ejecucin. Arquitectura Neutral

Java compila su cdigo en un fichero objeto con independencia de la arquitectura de la mquina en que se ejecutar. Cualquier mquina que tenga el sistema de ejecucin (Java Runtime) puede ejecutar ese cdigo objeto, independientemente de la mquina para la cual ha sido generado. En la actualidad existen RunTime (mquina virtual Java) para Solaris 2.x, Windows 9x, Windows NT, SunOs 4.1.x, Linux, HP-UX, Irix, Aix, MacOs, Apple y se sigue trabajando en el desarrollo de RunTime para otras plataformas. Seguro

Caractersticas como los punteros se han eliminado para evitar el acceso ilegal a memoria. El cdigo Java pasa por muchas comprobaciones antes de ejecutarse en una

20

Simulacin Virtual de Robots Articulados mquina. Al cdigo se le pasa un verificador de ByteCodes que comprueba el formato de los fragmentos de cdigo con objeto de detectar fragmentos de cdigo ilegal que violan los derechos de acceso sobre objetos o intentan cambiar las clases de un objeto. En Java existe tambin un cargador de clases que ayuda a Java a mantener su seguridad ya que separa el espacio de nombres del sistema de ficheros local de los recursos procedentes de la red. Primero se buscan las clases en el sistema local antes de recurrir a las clases procedentes del exterior que se almacenan en un espacio de nombres privado, asociado con el origen. Este mecanismo evita ataques del tipo Caballo de Troya, es decir imposibilita que una clase exterior suplante a una predefinida de Java. Por ltimo comentar que Java imposibilita abrir ficheros en una mquina local y normalmente las operaciones se realizan sobre los ficheros de la mquina remota de donde parti el Applet. Portable

En Java se construyen las interfaces de usuario a travs de un sistema abstracto de ventanas de forma que estas puedan ser implantadas en entornos Unix, Pc o Mac. Es decir las ventanas Java pueden adoptar la apariencia del entorno donde se ejecuta la aplicacin. Interpretado

El interprete Java puede ejecutar directamente el cdigo objeto formado por ByteCodes. Linkar un programa normalmente consume menos tiempo que compilar un programa. Sin embargo, Java es ms lento que otros lenguajes de programacin compilados ya que debe ser interpretado y no ejecutado como sucede en cualquier programa tradicional. En la actualidad se estn desarrollando compiladores para Java aunque eso implicara una perdida arquitectura neutral. Multitarea

La ventaja de ser multitarea consiste en un mejor rendimiento interactivo y mejor comportamiento en tiempo real. Aunque el comportamiento en tiempo real est limitado a las capacidades del sistema operativo subyacente (Unix, Windows, etc). Respecto a la facilidad de uso, al ser la multitarea una caracterstica propia del lenguaje Java, es ms fcil de utilizar y ms robusta que su homloga en C o C++. Dinmico

Java no intenta conectar todos los mdulos que componen la aplicacin hasta el mismo instante de ejecucin, esto permite que libreras nuevas o actualizadas no paralicen la ejecucin de las aplicaciones siempre que mantengan la compatibilidad con el API anterior.

APIs de Java
Java Enterprise.- Especificaciones para desarrollos en entornos corporativos.

21

Simulacin Virtual de Robots Articulados JDBC Java.- Java Database Connectivity, permite a aplicaciones o applets acceder a bases de datos de forma homognea va consultas SQL. Java RMI.- Remote Method Invocation, invocacin remota de mtodos para aplicaciones distribuidas. En el siguiente apartados se profundizar sobre los distintos enfoques que tenemos actualmente para abordar las aplicaciones distribuidas. Java IDL.- Puente de compatibilidad con el modelo estndar de objetos CORBA. JNDI.- Java Naming and Directory Interface, proporciona servicios de directorio y localizacin de recursos en un entorno corporativo. JavaBeans.- Especificacin de componentes basados en Java. JAF.- JavaBeans Activation Framework, entorno para determinar el tipo de datos, encapsular el acceso a ellos, descubrir las acciones que se les pueden aplicar e instanciar el componente JavaBean adecuado. Java Security API.- API para componentes que necesitan encriptacin, certificacin, firmas digitales y autenticacin. JFC.- Java Fundation Classes, jerarqua de clases para el desarrollo de aplicaciones grficas e interfaces de usuario. Swing Set.- Conjunto de pequeos componentes grficos para aplicaciones: botones, pestaas, etc. Java 2D.- Extensin del AWT para el tratamiento de informacin grfica bidimensional Java Servlet API.- Especificacin que permite crear Applets que se ejecutan en el servidor, permite conseguir resultados mejores que utilizando CGI. Java Server API.- API para el intercambio de informacin entre un servidor WEB y aplicaciones que se ejecutan en su entorno. Java Commerce API.- API para transacciones comerciales en Internet Java Media API.- Conjunto de especificaciones para el acceso y utilizacin de informacin interactiva. JMF.- Java Media Framework, conjunto de especificaciones para la arquitectura, protocolos e interfaces de programacin para reproductores multimedia, captura y videoconferencia. Java Collaboration.- Especificacin para la comunicacin interactiva bidireccional. Java Telephony.- Especificacin para aplicaciones de telefona. Java Speech.- Especificacin para el reconocimiento y sntesis de voz. Java Animation.- Especificacin para la manipulacin y movimiento de objetos bidimensionales Java 3D.- Especificacin para la manipulacin de objetos tridimensionales. Esta extensin del API de Java es la que hemos utilizado para modelar el Robot Puma, en

22

Simulacin Virtual de Robots Articulados sucesivos captulos abordaremos con ms detalle el API Java 3D descubriendo su filosofa y funcionamiento. Java Management API.- Especificacin para la gestin remota de redes. JavaMail API.- Especificacin para proporcionar un conjunto de clases abstractas que modelice un sistema de correo. Personal Java.- Espeficaciones para aparatos electrnicos de consumo conectables a redes, incluyendo televisores, telfonos inteligentes, videoconsolas, etc. Java Smart Card Embedded Java.- Especificaciones para dispositivos electrnicos industriales con software embebido ejecutndose sobre sistemas operativos en tiempo real, incluyendo dispositivos de instrumentacin, electrnica de control de procesos, etc. Despus de esta breve exposicin de todas las ventajas y posibilidades que ofrece Java y VRML, el lector comprender ms fcilmente porque la mayora de los programadores de VRML se estn pasando a Java 3D. Sin embargo VRML no va a desaparecer porque en la red sigue habiendo usuarios que lo prefieren por su simplicidad y porque las caractersticas de sus aplicaciones no necesitan grandes prestaciones. Adems hoy en da se utiliza VRML tambin como estndar para que programas de diseo grfico como 3D-Studio o LightWave puedan intercambiar objetos tridimensionales entre s.

23

Simulacin Virtual de Robots Articulados

Arquitecturas Distribuidas
Diseo aplicaciones Distribuidas Aplicaciones Distribuidas en Internet Applet en Internet Solucin Java

se plante el problema de acceder remotamente al puma se estudiaron varias de soluciones posibles. La restriccin ms fuerte era que el acceso al PUMA debera de poderse realizar a travs de Internet utilizando un navegador WEB. Aparece entonces la figura del cliente con su navegador WEB y el equipo servidor que debera permitir el acceso al PUMA real, en definitiva una arquitectura tpica distribuida. A pesar de las muchas posibilidades existentes para realizar esta parte del proyecto se decidi optar siempre en igualdad de condiciones por una solucin Java antes que por cualquier otra. Este apartado, trata de presentar sin entrar en detalle la panormica de posibilidades de programacin distribuida en la actualidad. Veremos los distintos enfoques que se pueden dar al diseo de aplicaciones distribuidas comparndolos con el modelo de objetos distribuidos de Java. Al finalizar este apartado se tendrn los conocimientos suficientes para comprender porque hemos elegido RMI para realizar nuestro proyecto y se dispondr de la informacin necesaria para conocer el funcionamiento de RMI. Ms adelante en el captulo V explicaremos cmo usar RMI para desarrollar aplicaciones distribuidas.

CUANDO

Diseo aplicaciones Distribuidas


aplicacin distribuida, es una aplicacin cuyo procedimiento se distribuye en mltiples computadoras de una red. Las aplicaciones distribuidas son capaces de servir a la vez a mltiples usuarios y, dependiendo de su diseo, hacer un uso ms adecuado de los recursos de procesamiento. Las aplicaciones distribuidas se implementan tpicamente como sistemas cliente/servidor organizados en conformidad con la interfaz de usuario, el procesamiento de informacin y las capas de tratamiento de la informacin. En nuestro mdulo de acceso remoto concretamente tenemos una interfaz con el cliente que ser un Applet Java y nos va a permitir interaccionar con el PUMA real. La parte de procesamiento de la informacin la hemos eliminado del mdulo de acceso remoto y es en el mdulo de simulacin donde se procesa la informacin necesaria para controlar el PUMA remotamente. Luego la informacin que se introduce en el mdulo de acceso remoto ya ha sido procesada. Finalmente, la parte de tratamiento de la informacin suele ser el 80% de los casos alguna operacin relacionada con bases de datos. Nuestro mdulo de acceso remoto lo que hace es interaccionar a bajo nivel mediante una PPI con el robot PUMA real. En el captulo V se comenta la implementacin del mdulo de acceso remoto y explicamos con mayor claridad los detalles, por ahora nos conformamos con una idea intuitiva de lo debera hacer este mdulo.

UNA

24

Simulacin Virtual de Robots Articulados

Organizacin tpica de los Sistemas Distribuidos

Aplicaciones Distribuidas en Internet

EL auge de Internet y el WEB en los ltimos aos ha supuesto la congestin de


la red. Hoy en da, casi todas las computadoras son accesibles directamente entre s a travs de la red y todo gracias a TCP/IP. Esta conectividad mundial ha hecho crecer el nmero de aplicaciones distribuidas que se ejecutan con estructura cliente/servidor en Internet. El esquema bsico de aplicacin distribuida en Internet est compuesto normalmente, de un programa cliente se ejecuta en mltiples computadoras host. El cliente utiliza el protocolo TCP para conectarse con un servidor que escucha en un puerto conocido. El cliente realiza una o ms solicitudes al servidor. Este servidor procesa las solicitudes del cliente, posiblemente utilizando programas de pasarela o servidores de fondo, y reenva la respuesta al cliente. Nuestro mdulo de acceso remoto hace uso de un protocolo especial de Java llamado rmi que permite al cliente utilizar mtodos remotos en el servidor. Este protocolo trabaja por defecto con el puerto 1099. En el caso de que exista un Firewall que filtre los paquetes dirigidos al puerto 1099, los clientes no podran acceder a los mtodos remotos del servidor que permiten manipular el PUMA real, debido a que sus peticiones seran rechazadas por el Firewall.

25

Simulacin Virtual de Robots Articulados

Esquema Tpico de una Aplicacin Distribuida en Internet

Applet en Internet

ESTAMOS acostumbrados a ver en Internet los Applets haciendo tareas


sencillas como banners publicitarios, miniaplicaciones, etc. Los Applets en realidad permiten realizar tareas ms complejas como implementar aplicaciones cliente/servidor. Los Applets de Java ofrecen la posibilidad de ejecutar la capa de la interfaz del cliente y parte de la capa de procesamiento de la informacin de aplicaciones comerciales en el contexto de un navegador WEB. La aproximacin Cliente/servidor de Internet que mostramos seguidamente, utiliza Applets de Java para programar las interfaces del sistema de informacin del programa cliente. Esta aproximacin es muy popular porque desarrolla aplicaciones distribuidas que se pueden utilizar en Internet. Permite que navegadores, servidores WEB y otros servidores de fondo distribuyan aplicaciones comerciales.

26

Simulacin Virtual de Robots Articulados

Los Applets Java en Internet

Solucin Java

EXISTEN diferentes enfoques para el desarrollo de aplicaciones distribuidas.


Sin embargo existen varias razones para elegir RMI en lugar de alguno de estos enfoques: Sockets TCP - Java los admite y podemos construir aplicaciones tradicionales cliente/servidor utilizando los sockets en Java. Aunque Java admita sockets TCP, JavaSoft decidi que se necesitaba un enfoque ms denso para el desarrollo de las aplicaciones distribuidas, como el que proporciona CORBA, con el fin de desarrollar aplicaciones distribuidas avanzadas por medio de Java. As naci la API Remote Method Invocation (RMI). DCE (Entorno de Computacin Distribuida).- Constituye un enfoque orientado a procedimientos basado en las RPC (Llamadas de Procedimientos Remotos) para el desarrollo de aplicaciones distribuidas. Las RPC vienen a reemplazar a los sockets TCP como mecanismo bsico para la comunicacin cliente/servidor, se implementan como capa que se construye encima de la capa de transporte TCP/IP y gestiona de forma transparente las cuestiones relativas al manejo de la conexin y de los protocolos. Las RPC no se acoplan bien con las aplicaciones distribuidas orientadas a objetos. El enfoque de la invocacin remota de mtodos que admite CORBA se adapta mucho 27

Simulacin Virtual de Robots Articulados mejor al modelo de objetos de Java. DCOM (Modelo de Objeto Componente Distribuido).- Utiliza las llamadas a procedimientos remotos para permitir que los objetos que se estn ejecutando en un sistema invoquen a los mtodos de los objetos que se ejecutan en otros sistemas. Ofrece posibilidades de programacin orientadas a objetos a travs de objetos, interfaces y mtodos del COM. Adems, el DCOM proporciona servicios de seguridad amplios. No obstante, esta posibilidad constituye ms bien un puente a las tecnologas de herencia que una extensin distribuida del modelo de objetos Java. Microsoft ha incluido el uso de DCOM en sus herramientas de desarrollo Java, rompiendo la compatibilidad con el Java de JavaSoft. Esta tecnologa no funciona tan bien fuera Microsoft. CORBA (Arquitectura de Intermediacin de Solicitud de Objetos Comunes).Proporciona un enfoque excelente a la construccin de aplicaciones distribuidas orientadas a objetos. Java admite desarrollos con CORBA, sin embargo, CORBA est diseada para admitir un modelo de objetos independiente del lenguaje. La RMI de Java posee todas las ventajas de CORBA, pero est especialmente adaptada al modelo de objetos Java. Esto hace que la RMI de Java sea mucho ms eficaz y fcil de usar que CORBA en lo que respecta a aplicaciones de Java puro. En principio nos planteamos utilizar RMI de forma combinada con cdigo nativo para resolver el problema del acceso remoto, pero sin perder de vista CORBA. RMI (Remote Method Invocation).- El modelo de objeto distribuido que utiliza Java llamado RMI, permite que los objetos que se ejecutan en una JVM (Mquina Virtual Java) invoquen a los mtodos de objetos que se ejecutan en otras JVM diferentes. Estas JVM pueden ejecutarse como procesos separados en la misma computadora o en otras computadoras distintas conectadas a travs de una red TCP/IP. Como Internet es en ltimo trmino una red TCP/IP, lo anterior se puede traducir en que una mquina cliente en cualquier rincn del mundo es capaz de invocar mtodos de un objeto que se encuentre corriendo sobre un servidor en cualquier otro rincn del mundo.

Esquema Bsico RMI El objeto que realiza la invocacin del mtodo se denomina objeto cliente. El objeto cuyos mtodos se estn invocando se denomina objeto servidor. El objeto cliente tambin recibe el nombre de objeto local y se dice que se ejecuta de forma local. El objeto servidor tambin se denomina objeto remoto y se dice que se ejecuta de forma remota. En el captulo V, volveremos con ms detalle sobre el mdulo de acceso remoto y sobre RMI. Describiremos el modelo de objetos distribuidos de Java y explicaremos por qu constituye una extensin natural del modelo de objetos Java que se emplea dentro de una Java Virtual Machine.

28

Simulacin Virtual de Robots Articulados

Monitorizacin del Puma Real

UNA vez desarrollado el mdulo de acceso remoto al PUMA surgi la idea de


visualizar el PUMA real para comprobar si los accesos se realizaban correctamente. Antes de implementar una solucin, se hizo un estudio preliminar de las posibles alternativas y enfoques disponibles para realizar esta tarea y no precipitarnos en la decisin. Lo primero que se hizo fue analizar el material disponible para realizar este mdulo. Se contaba con una cmara de vdeo domstica con una salida RSA de vdeo y tambin con una tarjeta capturadora de vdeo basada en el chip BT878. Con estos elementos montados sobre un equipo y con el software adecuado deberamos de ser capaces de obtener un flujo de imgenes del PUMA real que podran visualizar los clientes en sus respectivos navegadores WEB. Sabamos de la existencia de soluciones comerciales como Real Producer y Real Player, un software que permite transmitir audio y vdeo en tiempo real a un cliente, sin duda la mejor solucin pero nos priva del encanto de implementar nuestra propia solucin. Las experiencias realizadas con este software hay que decir que fueron en general positivas, destacar quiz que los requisitos que exige el servidor Real Producer que requiere al menos un Pentium III 450 con 128 Megas de RAM. Otra posibilidad que haba era afrontar el problema desde cero es decir, estudiar el chip BT878 para ver como se capturan imgenes, buscar la forma de subir esas imgenes al servidor WEB y finalmente implementar un Applet que muestre las imgenes que se encuentran en el servidor con cierta frecuencia. En nuestra tarea de recopilacin de datos y hablado con compaeros de la facultad que estaban realizando proyectos basados en el chip BT878, nos hablaron de la existencia de libreras en C++ que realizaban estas tareas, pero siguiendo sus consejos y teniendo en cuenta que nuestro proyecto no trata sobre las posibilidades que ofrece el chip BT878, se opt por utilizar un programa llamado WebCam32 que trabaja sobre dicho chip. Este programa es capaz de capturar imgenes de la tarjeta y almacenarlas a disco. Nuestro trabajo en este mdulo se centro en buscar la manera de que esas imgenes lleguen a los usuarios a travs de sus navegadores. Para no desvelar el misterio slo diremos que la solucin viene dada en forma de Applet y que trabaja con los Threads de Java y la clase MediaTracker. En el Captulo V se estudiar ms a fondo el Mdulo de Monitorizacin del PUMA real.

29

Simulacin Virtual de Robots Articulados

Conclusiones

EN este primer captulo puede parecer un poco precipitado incluir un apartado


de conclusiones. Destacar la revolucin que ha producido el fenmeno Internet y como poco a poco todas las aplicaciones estn reorientndose hacia la red. En estas condiciones las posibilidades que ofrece Java son realmente buenas. El resultado de este proyecto no hubiese sido igual de bueno sin Java. El uso de Java nos ha permitido obtener un producto ms compacto y uniforme. Sin Java, nos hubiramos visto obligados a utilizar tecnologas muy variadas y dudo que se hubieran conseguido resultados igual de buenos. Por ejemplo, la arquitectura neutral que disfruta el cliente se habra visto comprometida seriamente si se hubiera optado por VRML para realizar el simulador virtual debido a la divergencia que existe en los navegadores VRML. A continuacin, proponemos a los usuarios algunos aspectos para mejorar el proyecto y enriquecer su contenido. Una opcin podra ser ampliar el mdulo de simulacin para jugar con una mayor gama de robots virtuales, empezando por los modelos Scara y Stanford. Siguiendo en esta lnea, podra incluirse una parte dirigida a controlar el modelo virtual utilizando alguno de los lenguajes orientados a robots que existen. Es muy sencillo implementar una programacin por guiado, utilizando el teclado para grabar los movimientos que el usuario desea que el robot repita luego, creando as primitivas de guiado. Actualmente, el modulo de acceso remoto presenta un inconveniente o virtud, depende como se mire. Cuando varios usuarios acceden al PUMA real de forma simultanea se interfieren entre s. Hemos estudiado el problema en detalle y hemos encontrado una buena solucin. Haciendo uso de la tecnologa de Java Servlets se podra controlar el acceso de los usuarios al PUMA. Esta solucin que pasa por la construccin de un mdulo de validacin permite controlar el acceso a los usuarios, permite llevar control de estadsticas sobre el uso del puma (lecturas sobre los sensores, configuraciones enviadas a las articulaciones, etc), incluso podemos controlar ms de un recurso simultneamente no slo el PUMA. Podemos implementar una poltica de acceso bastante buena, en principio un usuario tiene un tiempo asignado por el administrador del sistema para hacer uso del PUMA, pero si una vez finalizado ese tiempo nadie solicita el PUMA, el usuario puede seguir utilizndolo. Tambin es factible crear una jerarqua de usuarios con diferentes prioridades de acceso y tiempos. Por si esto fuera poco, una vez el Servlet realiza la validacin de un usuario y le asigna el recurso, la comunicacin se mantiene slo entre el browser del cliente y el servidor RMI, el mdulo de validacin ahora libre puede continuar realizando otras tareas. Otro aspecto interesante sera recompilar en el mdulo de acceso remoto la parte dependiente de la plataforma que esta implementada con Visual C++ sobre Windows 98 para hacerla portable a Linux (No se preocupe si no entiende esta parte, la entender en el capitulo V cuando hablemos del mdulo de acceso remoto).

30

Simulacin Virtual de Robots Articulados

Capitulo 2: Java 3D

31

Simulacin Virtual de Robots Articulados

Caractersticas Bsicas del Lenguaje


Java y Java 3D Bases de la P.O.O. El API Java 3D Objetivos del API Java 3D El Concepto de Escena Jerarqua de clases del API Java3D

Java y Java 3D

JAVASOFT, una compaa de Sun Microsystems, lleva aos desarrollando un


lenguaje de programacin de altas prestaciones. Los desarrolladores aseguran que es uno de los lenguajes ms robustos, fcil de usar, y verstil que hay hoy en da. Incluye la facilidad de programacin como tiene el C y C++, permite crear potentes aplicaciones, permite desarrollos en entornos multimedia y deja de lado algunos aspectos del C y C++ como la herencia mltiple, sobrecarga de operadores y punteros. Por supuesto estamos hablando de Java. La gran ventaja de Java es que es un lenguaje de programacin orientado a objetos y de arquitectura neutral. La ventaja de la POO (Programacin Orientada a Objetos) es la capacidad de reusar cdigo. No se deben crear aplicaciones diferentes para usar la aplicacin en diferentes plataformas. Con Java podemos desarrollar una aplicacin que automticamente se puede usar en diversas plataformas, como Windows, Unix o sistemas Macintosh. Las grandes empresas pueden ahorrarse muchos millones de euros en un nico proyecto usando plataformas Java. Sin embargo, es cierto que el aprendizaje de este lenguaje requiere un esfuerzo por parte del programador, aunque el esfuerzo se reduce considerablemente si se conocen otros lenguajes de programacin orientado a objetos. Cualquier programador que se precie a tenido problemas con punteros y asignaciones de memoria. Java no tiene punteros y realiza un manejo de memoria automtico y transparente, ya que posee una rutina recolectora de memoria no usada que se ejecuta en background. En entornos distribuidos, como la World Wide Web, es esencial tener sistemas de seguridad estricta. Java se desarroll pensando en ser el entorno de programacin ms seguro que se conozca. Java no intenta reparar los agujeros de seguridad del sistema, sino que los elimina, por lo que es el lenguaje perfecto para la programacin en el Web. Los punteros son el problema de seguridad ms grande de lenguajes como C/C++; como en Java no hay punteros, tenemos un problema menos. Adems cuando un programa Java es compilado y ejecutado, es chequeado con un verificador de cdigo dinmico para asegurar que los programas no han sido hackeados. Adicionalmente, el JRE (Java Runtime Environment) provee de reglas estrictas para la ejecucin de programas en hosts remotos. 32

Simulacin Virtual de Robots Articulados Estos programas no pueden acceder a la red local, no pueden acceder a ficheros en el sistema local y tampoco pueden ejecutar programas en dicho sistema.

Bases de la P.O.O.
es un lenguaje de programacin que tiene caractersticas bastante interesantes para el desarrollo de aplicaciones Web y la industria del software. La mayora de los lenguajes de programacin actuales son compilados o interpretados. Java es de los dos tipos, lo que le proporciona una enorme versatilidad. Para comprender el funcionamiento de Java, y por extensin de Java 3D, hay que recordar las bases de los diferentes tipos de lenguajes. Los lenguajes interpretados son muy fciles de aprender y usar. Por ejemplo, BASIC es un lenguaje de programacin interpretado, donde se suceden una serie de instrucciones de alto nivel, y una vez acabado el programa est listo para su ejecucin. El intrprete se encarga de transformar el conjunto de lneas de cdigo en un conjunto de instrucciones en cdigo mquina. Al contrario, los lenguajes compilados son generalmente ms difciles de aprender y usar. El programa se crea usando instrucciones de alto nivel, luego se compila creando un ejecutable y luego se ejecuta el programa de manera que el ordenador lo interpreta de forma directa. Como las lneas de cdigo no tienen que ser traducidas en tiempo de ejecucin, los programas compilados son mucho ms rpidos que los interpretados. Como habamos adelantado Java es un lenguaje mixto, esto es, se crea el programa usando un lenguaje estructurado de alto nivel y luego se compila el cdigo fuente a un nivel intermedio llamado bytecode. Entonces se ejecuta el cdigo bytecode, el cual es interpretado por el JRE (Java Runtime Environment). El bytecode es muy diferente al cdigo mquina. El cdigo mquina es una serie de 0's y 1's, mientras que el bytecode es un conjunto de instrucciones parecidas al ensamblador. El porqu del uso de este doble paso es porque el cdigo mquina se crea compilando un programa fuente sobre una determinada plataforma, por lo que el programa slo puede usarse en el mismo tipo de mquinas para la cual se haya compilado. Sin embargo, el bytecode puede ejecutarse en cualquier plataforma capaz de usar el JRE. Esta capacidad es la que hace que Java sea independiente de la arquitectura. El secreto est en que el cdigo fuente en Java es compilado para una mquina que no existe. Esta mquina es llamada Mquina Virtual Java y slo existe en la memoria del ordenador. El que el compilador de Java cree un bytecode para una mquina inexistente es slo la mitad del proceso que hace a la arquitectura Java neutral. Adems el intrprete de Java debe de servir como intermediario entre la Mquina Virtual y la mquina real. La ilustracin muestra como Java trabaja normalmente sobre un ordenador. La Mquina Virtual se sita entre el Sistema Operativo y la capa de objetos Java. Sobre esta capa de objetos se encuentran las aplicaciones de usuario escritas en Java.

JAVA

33

Simulacin Virtual de Robots Articulados

El API Java 3D

EL API Java 3D es una interfaz para escribir programas que sirven para visualizar
e interactuar con grficos en tres dimensiones. Java 3D es una extensin estndar del Java 2 JDK (Java Development Kit). El API provee de una coleccin de constructores en alto nivel para la creacin y manipulacin de objetos geomtricos en 3D y estructuras para renderizar dichos objetos. Posee adems funciones para la creacin de animaciones, visualizaciones y aplicaciones interactivas con grficos en 3D. No es ms que una jerarqua de clases Java que sirven como interfaz para grficos tridimensionales complejos y sistemas de renderizado tanto de sonidos como de grficos. El programador trabaja con constructores de alto nivel para la creacin y manipulacin de objetos en 3D. Los objetos geomtricos residen en un "universo virtual" que luego se renderiza. El API est diseado con la flexibilidad para crear universos virtuales bastante precisos con una amplia variedad de tamaos. Cogiendo como ventaja los threads de Java, la renderizacin de Java 3D puede realizarse en paralelo. Por tanto, el renderizador se optimiza de forma automtica para realizar su trabajo. Un programa en Java 3D crea instancias de objetos Java 3D y los aloja dentro de una estructura de datos llamada "escena" de la que hablaremos posteriormente. Como preludio diremos que una escena es un conjunto de objetos 3D agrupados en una estructura de rbol que especifica completamente el contenido de un universo virtual y cmo es renderizado. Las aplicaciones en Java 3D pueden ser hechas para ser ejecutadas como aplicaciones simples, como applets en exploradores de Internet (los cuales deben actualizarse para que soporten Java 3D) o ambos.

Objetivos del API Java 3D

TODOS los programas en Java 3D son al menos parcialmente ensamblados desde


objetos de la jerarqua de Java 3D. Esta coleccin de objetos describe un universo virtual que debe ser renderizado. El API define alrededor de 100 clases presentadas en el paquete "javax.media.j3d". Estas clases son llamadas normalmente clases ncleo.

34

Simulacin Virtual de Robots Articulados Hay cientos de campos y mtodos en las clases de Java 3D. Un universo virtual simple que incluya alguna animacin puede ser construido con pocas clases. Sin embargo, escenas ms complicadas requieren una mayor cantidad de clases y un conocimiento exhaustivo de cada una de ellas. Adems de las clases ncleo, los programas en Java 3D suelen utilizar el paquete "com.sun.j3d.utils", normalmente llamado paquete de utilidades. El uso de estas clases reduce significativamente el nmero de lneas de cdigo en los programas. Adems de los paquetes nombrados, todos los programas en Java 3D utilizan clases del paquete "java.awt" y "javax.vecmath". Las clases AWT (Abstract Window Toolkit) crean una ventana para mostrar el resultado de la renderizacin, mientras que las clases del paquete vecmath definen vectores matemticos para puntos, matrices y otros objetos matemticos. En definitiva, los objetivos principales del API Java 3D son:

Permitir desarrollar aplicaciones Java para diseo y control de universos virtuales en tres dimensiones utilizando clases en alto nivel. Obtencin de un alto rendimiento en la generacin de escenas y en la renderizacin de las mismas mediante threads. Utilizacin de las aplicaciones independientes de la plataforma, ya que el programa est hecho en Java y corre sobre una mquina virtual que es independiente de la plataforma en la que se ejecute. Obtencin de muy altas prestaciones con un conjunto mnimo de clases.

El Concepto de Escena

UN universo virtual en Java 3D se crea partiendo de una escena. Una escena se


crea usando instancias de clases de Java 3D. La escena se ensambla a partir de objetos para definir la geometra, sonidos, luces, localizaciones, orientaciones y apariencias de objetos visuales y sonoros. Para comprender de una manera ms completa el funcionamiento de Java 3D en cuanto a la creacin de escenas hay que recordar algunas definiciones y estructuras. Por ejemplo, un grafo es una estructura de datos compuesta de nodos y arcos. Un nodo es un elemento de datos y un arco es una relacin entre elementos de datos. Los nodos en la escena son las instancias de las clases Java 3D. Los arcos representan los dos tipos de relaciones entre las instancias de Java 3D. La relacin ms comn es la relacin padre-hijo. Un nodo grupo, clase de Java 3D, puede tener cualquier nmero de hijos, pero slo un padre. Un nodo hoja puede tener un padre y no tiene hijos. La otra relacin es la referencia. Una referencia asocia un objeto NodeComponent con un nodo de la escena. Un objeto NodeComponent define los atributos de geometra y apariencia usados para renderizar los objetos visuales. Las escenas se construyen de la misma forma que un grafo dirigido acclico 35

Simulacin Virtual de Robots Articulados (GDA). Los grafos dirigidos son grafos cuyos arcos poseen una direccin. Los GDA, por tanto, son grafos dirigidos que no tienen ciclos; es decir, comenzando desde cualquier nodo del grafo, no se puede encontrar un camino que regrese a dicho nodo siguiendo las direcciones de los arcos. Para nuestros propsitos, las referencias no formarn parte de la escena. Por tanto, slo existe un camino desde la raz del GDA, es decir, de la escena, hasta cada una de las hojas. El camino desde la raz de la escena hasta un nodo hoja determinado se denomina Scene Graph Path Camino de Escena. Segn la definicin habra un nico camino de escena para cada nodo hoja de la escena. Para hacernos una idea conceptual de lo que es una escena podemos fijarnos en el siguiente dibujo.

Cada "camino de escena" en una escena de Java 3D especifica de manera completa el estado de esa hoja. La informacin de estado incluye la localizacin, orientacin y tamao de los objetos visuales. Por lo tanto, los atributos de cada objeto visual dependen slo de su camino de escena. El renderizador de Java 3D se aprovecha de esta caracterstica y renderiza las hojas en el orden que considere ms eficiente. Normalmente el programador no tiene control sobre el orden de renderizacin de los objetos. La representacin grfica de una escena puede servir de diseo para los programas en Java 3D. Las escenas se dibujan usando smbolos standard como se muestran en la siguiente figura.

36

Simulacin Virtual de Robots Articulados

Cada uno de los smbolos de la izquierda representa a un objeto individual de la escena. Los dos primeros representan objetos de clases especficas: Universo Virtual y Locale. Los siguientes tres smbolos representan los objetos Grupo, Hoja y NodeComponent respectivamente, y se utilizan para indicar las subclases de los objetos especficos. La flecha normal representa una relacin padre-hijo entre dos objetos. La flecha punteada es una referencia a otro objeto. A continuacin se presenta el diagrama de una escena simple.

37

Simulacin Virtual de Robots Articulados

Es posible crear una escena ilegal. Un ejemplo de una escena ilegal se muestra en la Figura 2-1. Es ilegal porque viola las propiedades del GDA. El problema yace en dos objetos TransformGroup que tienen el mismo Shape3D como nodo hijo. Hay que recordar que un nodo hoja slo puede tener un padre. En otras palabras, solo puede haber un camino desde el objeto Locale al nodo hoja.

Figura 2-1 Puede parecer que la Figura2-1 define tres objetos visuales. Los objetos TransformGroup permiten localizar la imagen del objeto visual en diferentes posiciones. Un programa Java 3D que define una escena ilegal puede ser compilado, pero no

38

Simulacin Virtual de Robots Articulados renderizado. Cuando un programa de este tipo se ejecuta, el sistema devuelve una excepcin. El programa permanecer ejecutndose pero necesitar ser parado. Como consecuencia ninguna imagen ser renderizada. Una posible arreglo a la escena de la Figura 1 se observa en la Figura 2-2.

Figura 2-2

Jerarqua de clases del API Java 3D

EN la Figura 2-3 aparece una visin de los tres primeros niveles de la jerarqua de
clases del API Java 3D. Las clases Universo Virtual, Locale, Grupo y Hoja aparecen en estos primeros niveles. A parte de los objetos Universo Virtual y Locale, el resto de la escena est compuesta por los denominados objetos de escena. Todos los objetos de escena tienen dos subclases: Nodo y NodeComponent. Las subclases de la clase Nodo proveen de ms objetos a la escena. Un objeto Nodo es en realidad un nodo Grupo u Hoja. A continuacin pasamos a especificar con un poco ms de detalle estas clases de suma importancia.

Clase Nodo

La clase nodo es una superclase abstracta de las clases Grupo y Hoja. Define algunos mtodos comunes para estas subclases que forman parte de cualquier escena.

Clase Grupo

La clase Grupo es la superclase usada para especificar la localizacin y orientacin de objetos visuales en el universo virtual. Dos de las subclases de Grupo son BranchGroup y TransformGroup. En la representacin grfica de la escena, los grupos son representados con crculos y anotados con "BG" o "TG" en el caso de ser BranchGroups o TransformGroups respectivamente. La Figura 2-2 muestra un ejemplo.

Clase Hoja La clase hoja es la superclase usada para especificar la figura (shape), sonido y

39

Simulacin Virtual de Robots Articulados conducta (behavior) de los objetos visuales en el universo virtual. Algunas de las subclases de la clase Hoja son Shape3D, Light, Behavior and Sound. Estos objetos no pueden tener hijos, pero pueden referenciar a clases NodeComponent.

Clase NodeComponent

La clase NodeComponent es la superclase usada para especificar las propiedades de geometra, apariencia, textura y material de un nodo Shape3D. Los NodeComponent no son parte de la escena, pero son referenciados por ella. Un mismo NodeComponent puede ser referenciado por ms de un objeto Shape3D.

40

Simulacin Virtual de Robots Articulados

Figura 2-3

41

Simulacin Virtual de Robots Articulados

Modelado Virtual del Robot


Construccin de un programa en Java 3D Alguna terminologa del Java 3D Construccin de una escena simple Partes fundamentales del modelado del robot Base del Robot Brazo #1 del Robot Brazo #2 del Robot Mueca del Robot

Construccin de un programa en Java 3D

LAS subclases de la clase "Objeto de Escena" construyen conjuntos de bloques que


son ensamblados en las escenas. El desarrollo de programas en Java 3D consiste fundamentalmente en siete pasos bien diferenciados. Estos pasos pueden ser usados para ensamblar muchos programas en Java 3D. Estos pasos son los siguientes: 1. Crear un objeto Canvas3D 2. Crear un objeto Universo Virtual 3. Crear un objeto Locale, aadindolo al objeto Universo Virtual 4. Construir un View Branch Graph: a. Crear un objeto View b. Crear un objeto ViewPlatform c. Crear un objeto PhysicalBody d. Crear un objeto PhysicalEnvironment e. Aadir los objetos ViewPlatform, PhysicalBody, PhysicalEnvironment y Canvas3D al objeto View 5. Construir el contenido de la escena (branch graphs) 6. Compilar los branch graphs 7. Insertar subgrafos en el Locale Este mtodo ignora algunos detalles pero ilustra el concepto fundamental de todos los programas en Java 3D: la construccin de cada branch graph de la escena se lleva la mayor parte de la programacin.

42

Simulacin Virtual de Robots Articulados Se puede construir una escena de una manera bastante ms sencilla y que conlleve menos programacin. Los programas que son escritos usando este mtodo bsico tienen View Branch Graphs con idntica estructura. La regularidad de la estructura de los View Branch Graphs se encuentra en la clase SimpleUniverse. Las instancias de SimpleUniverse ejecutan los pasos 2, 3 y 4 del mtodo bsico. El uso de la clase SimpleUniverse reduce significativamente el tiempo y esfuerzo necesitado para crear el View Branch Graph. Por lo tanto, el programador no tiene ms que concentrarse en el contenido de la escena. El SimpleUniverse es un buen punto de partida para programar en Java 3D porque permite ignorar los View Branch Graph. Sin embargo, su uso no permite tener varias vistas del universo virtual. La Figura 2-4 muestra el uso del objeto SimpleUniverse.

Clase SimpleUniverse

El constructor del objeto SimpleUniverse construye una escena incluyendo objetos Universo Virtual, Locale y un View Branch Graph completo. El View Branch Graph creado usa instancias de ViewingPlatform y Viewer en lugar de usar las clases ncleo.

Figura 2-4 El uso de SimpleUniverse hace que el mtodo bsico sea ms sencillo. El mtodo de generacin de un programa en Java 3D ahora queda como sigue: 1. Crear un objeto Canvas3D 2. Crear un objeto SimpleUniverse con referencias al objeto Canvas3D ms cercano. a. Configurar el objeto SimpleUniverse 3. Construir el contenido de la escena (content branch graph) 4. Compilar el contenido de la escena 5. Insertar el contenido de la escena en el objeto Locale del SimpleUniverse

43

Simulacin Virtual de Robots Articulados El objeto SimpleUniverse crea un View Branch Graph completo para un universo virtual. El View Branch Graph incluye un Image Plate. Un image plate es el rectngulo conceptual en el que la escena es proyectada para formar la imagen renderizada. El objeto Canvas3D, el cual provee una imagen en una ventana del monitor del ordenador, puede servir como image plate La Figura 2-5 muestra la relacin entre el image plate, el ojo del observador y el universo virtual. La posicin del observador est detrs del image plate. Los objetos visuales enfrente del image plate son renderizados sobre el image plate. La renderizacin puede verse como la proyeccin de los objetos visuales sobre el mismo.

Figura 2-5 Por defecto, el image plate est centrado en el origen del SimpleUniverse y su orientacin hacia el lado negativo del eje Z. Desde esta posicin, el eje X es una lnea horizontal que atraviesa el image plate con valores positivos hacia la derecha. El eje Y es una lnea vertical que atraviesa el centro del image plate con valores positivos hacia arriba. Por lo tanto, el punto (0, 0, 0) es el centro del image plate.

Alguna terminologa del Java 3D

ANTES de comenzar a detallar el modelado del robot virtual debemos conocer


algunos conceptos acerca del Java 3D. Algunos de estos trminos son vivo y compilado. Insertar un Branch Graph en un Locale hace que este vivo, y en consecuencia, cada uno de los objetos en ese Branch Graph estn vivos. Los objetos que estn vivos estn sujetos a renderizacin. Por tanto, los parmetros de objetos vivos no pueden ser modificados a menos que la correspondiente capacidad haya sido especficamente habilitada antes de que el objeto estuviese vivo. Las capacidades vienen a ser como una serie de permisos que hacen que se puedan cambiar algunas de las propiedades de los objetos. Adems los Branch Groups pueden ser compilados. Compilando un Branch Group lo

44

Simulacin Virtual de Robots Articulados convertimos a una forma ms eficiente para ser renderizado. Se recomienda que se realice una compilacin como ltimo paso antes de que el Branch Group se convierta en vivo. Los conceptos de compilado y vivo son implementados en la clase de Objetos de Escena. Ntese que el comienzo de la renderizacin no forma parte de los pasos bsicos en la creacin de un programa en Java 3D que se discuti en el apartado anterior. El renderizador de Java 3D se ejecuta en un bucle infinito cuando un Branch Graph que contiene una instancia de View llega a estar vivo en un universo virtual. Una vez ejecutado, el renderizador de Java 3D conceptualmente ejecuta las siguientes operaciones: While (true) { Procesa la entrada If (Peticin de salida) break Ejecuta Behaviors Estudia la escena y renderiza los objetos visuales }

Construccin de una escena simple

UN programa en Java 3D tpico comienza definiendo una nueva clase para extender
la clase Applet. Ya habamos dicho que los programas Java 3D pueden ser escritos como aplicaciones, pero usando la clase Applet se consigue en camino fcil para generar aplicaciones en ventanas. La clase principal de un programa en Java 3D define un mtodo para construir el contenido de la escena. Todos los pasos del mtodo de construccin simple de programas en Java 3D son implementados en el siguiente ejemplo.
public class HelloJava3Da extends Applet { public HelloJava3Da() { setLayout(new BorderLayout()); Canvas3D canvas3D = new Canvas3D(null); add("Center", canvas3D); BranchGroup scene = createSceneGraph(); // SimpleUniverse is a Convenience Utility class SimpleUniverse simpleU = new SimpleUniverse(canvas3D); // This will move the ViewPlatform back a bit so the // objects in the scene can be viewed. simpleU.getViewingPlatform().setNominalViewingTransform(); simpleU.addBranchGraph(scene); } // end of HelloJava3Da (constructor) public BranchGroup createSceneGraph() { // Create the root of the branch graph BranchGroup objRoot = new BranchGroup();

45

Simulacin Virtual de Robots Articulados


objRoot.addChild(new ColorCube(0.4)); return objRoot; } // end of CreateSceneGraph method of HelloJava3Da // The following allows this to be run as an application // as well as an applet public static void main(String[] args) { Frame frame = new MainFrame(new HelloJava3Da(), 256, 256); } // end of main (method of HelloJava3Da) } // end of class HelloJava3D

Primero creamos un objeto Canvas 3D, luego creamos un objeto SimpleUniverse. A continuacin configuramos el objeto SimpleUniverse moviendo el ViewPlatform un poco hacia atrs para poder ver los objetos de la escena. El contenido de la escena se crea invocando al mtodo createSceneGraph y posteriormente es compilado. Finalmente se inserta el contenido de la escena en el Locale del Simple Universe. La clase HelloJava3Da se deriva de un Applet pero el programa es ejecutable como una aplicacin debido al uso de la clase MainFrame. La clase Applet se usa como base para hacer ms fcil la escritura de un programa Java 3D que arranca en una ventana. Mainframe provee una ventana (frame) AWT para un applet permitiendo al applet ejecutarse como una aplicacin. El tamao de la ventana de la aplicacin resultante se especifica en la construccin de la clase MainFrame. La escena resultante de este ejemplo es la mostrada en la Figura 2_6.

Figura 2-6

Finalmente vamos a dar unas pequeas definiciones de las clases utilizadas en este 46

Simulacin Virtual de Robots Articulados ejemplo y que se utilizan tambin en el diseo del Puma Virtual.

Clase BranchGroup

Los objetos de este tipo se usan para formar escenas. Las instancias de BranchGroup son la raz de los subgrafos. Este tipo de objetos slo pueden ser hijos de objetos Locale. Sin embargo, pueden tener muchos hijos que pueden ser otros Grupos u Hojas.

Clase Canvas 3D

Esta clase se deriva de la clase Canvas de AWT. Un objeto Canvas3D puede ser referenciado en el View Branch Graph de la escena.

Clase Transform3D

Representan transformaciones geomtricas en tres dimensiones tales como traslaciones y rotaciones. Estos objetos normalmente se usan para la creacin de objetos TransformGroup. Primero se construye el objeto Transform3D, posiblemente como combinacin de otros objetos del mismo tipo, y luego se construye el objeto TransformGroup usando el objeto Transform3D. Un objeto Transform3D puede representar traslaciones, rotaciones, escalas o combinaciones de estos. Cuando se especifica una rotacin, el ngulo se expresa en radianes.

Clase TransformGroup

Se trata de una subclase de la clase Group. Se usan para la creacin de escenas y tienen una coleccin de hijos que son objetos Nodo. Llevan a cabo transformaciones geomtricas, tpicamente creadas con objetos Transform3D, los cuales no son objetos de la escena.

Partes fundamentales del modelado del robot

PARA llegar a lograr una escena en Java 3D que represente de manera fiel el robot en
cuestin se tuvo que dividir el mismo en piezas de manera que tanto el modelado como el movimiento del mismo se pudiera hacer de manera ms fcil y cmoda. Atendiendo simplemente a las articulaciones que posee el robot podran distinguirse tres partes principales, mas la mueca como elemento mvil complementario. Estas tres partes bien diferenciadas son la base del robot, el primer brazo y el segundo brazo. Para lograr la mxima similitud entre el robot real (comentado en otra seccin) y el modelado virtual del mismo se tuvo que proceder a medir el robot real y usar nociones fundamentales de geometra para realizar un modelado correcto. Con motivos de proporcionar al modelo una mayor portabilidad, cada una de las piezas anteriormente mencionadas se construy como una clase Java 3D. De esta manera un brazo del robot puede usarse para formar parte de un robot diferente. Hay que tener en cuenta la relacin existente entre los ejes cartesianos del mundo virtual. Como las distintas partes que constituyen el robot se han construido de forma independiente, para conectarlas hay que desplazarlas respecto a las dems, rotndolas si se considera necesario. Estas rotaciones hacen que los ejes de coordenadas del origen de cada 47

Simulacin Virtual de Robots Articulados pieza roten con ellas, por lo que no tienen porque coincidir los ejes cartesianos matemticos colocados al comienzo de cada articulacin con los ejes virtuales de cada pieza. Para hacer referencia a un determinado punto en el espacio tridimensional proporcionado por la escena en Java 3D se utilizarn posiciones relativas a los ejes cartesianos de la base del robot. An a este nivel, los ejes cartesianos matemticos de la primera articulacin no coinciden con los ejes situados en la base del puma del mundo virtual. La diferencia es que estn intercambiados los ejes Y y Z y el nuevo eje Y tiene sentido opuesto.

A continuacin se pasar a comentar con detalle la estructura de cada una de las clases creadas sin entrar en demasiado detalle en los objetos que permiten el movimiento de los brazos, ya que sern comentados en secciones posteriores.

Base del Robot

UNA vez que hemos visto como se construye una escena en Java 3D y para que
sirven las principales clases que se suministran vamos a ver como se realiza el modelado del robot, comenzando con la primera de las piezas: la base. La Figura 2-7 muestra la base del robot real.

Figura 2-7 La figura de la base es la que se engancha a la raz de la escena que representa el Universo Virtual en Java 3D. Tambin proporciona un enganche para que el primer brazo del

48

Simulacin Virtual de Robots Articulados robot virtual pueda aadirse a ella de manera que cuando la primera articulacin gire se mueva toda la estructura del robot. La escena en Java 3D que representa la base del Puma es la siguiente:

Escena asociada a la base del robot La clase Java 3D que define la base del robot virtual se extiende de la clase TransformGroup y se representa con el nombre this. Este objeto es el que sirve de enganche al siguiente objeto que forma parte del brazo robot, en este caso el primer brazo. El shape2 es el objeto geomtrico bsico de Java 3D que representa un cilindro, y va a servir como primer link del robot. La primera articulacin viene reflejada en el objeto RotatorInterpolator (RI) ya que es el que permite que este link gire respecto al eje que se desee. Este objeto as como el resto de objetos necesarios para producir el movimiento del robot virtual vienen explicados con ms detalle en posteriores secciones. Los objetos TransformGroup llamados objTransCil y objRotateCil sirven para desplazar y rotar el cilindro anterior, de manera que quede en la posicin correcta respecto a la caja que sirve como base del puma. Esta caja viene determinada por el objeto shape1. Este objeto no es un objeto bsico de Java 3D, sino que se construye determinando los puntos extremos de un ortoedro y utilizando funciones de construccin de figuras. El objeto objBase sirve para unir la caja de la base con el cilindro de la primera articulacin. Por ltimo el objeto TransformGroup llamado objTransBase desplaza hacia arriba el conjunto de la base para situarla al nivel del suelo. Este se debe a que cuando se crean todos los objetos, el centro de los mismos es el centro geomtrico. Es decir, el centro del ortoedro de la base del puma est en el centro mismo del objeto tal y como se muestra en la siguiente figura.

49

Simulacin Virtual de Robots Articulados

Brazo #1 del Robot

EL siguiente elemento de conexin a la base es el primer brazo. Al igual que la base,


este elemento posee una articulacin de revolucin, alojada en el primero de los dos ejes que posee. El primer eje se engancha con la base del robot y el segundo al segundo brazo.

Primer Brazo del Robot La escena asociada con el primer brazo del robot virtual es la siguiente:

50

Simulacin Virtual de Robots Articulados

Escena del primer brazo del robot Los objetos shape Cilindro y CajaBrazo1 representan el primer cilindro y la figura geomtrica que sirve como caja del primer brazo respectivamente. A estos objetos se les asocian sendas apariencias mediante relaciones de referencia (mostradas con trazo discontinuo). El TransformGroup objCil hace que el cilindro se posicione correctamente respecto al centro de la caja del primer brazo. A su vez, el TransformGroup objBrazo1 sirve para unir el cilindro con la caja, aadiendo un tercer objeto ColorCube que es invisible y cuya nica misin es el de permitir leer las coordenadas virtuales del primer Brazo para comprobacin de los clculos de la cinemtica directa. El objeto objRotaBrazo1 rota el brazo completo para acomodarlo a la nueva localizacin (enganchado al cilindro de la base). Es de este objeto de donde cuelga el objeto RotatorInterpolator que permite el giro del primer brazo. Finalmente, el TransformGroup llamado desp define el desplazamiento del primer brazo respecto a la base y se engancha con la clase que define a sta. La figura virtual obtenida es la siguiente.

51

Simulacin Virtual de Robots Articulados Brazo virtual enganchado a la base del puma

Brazo #2 del Robot

EL brazo nmero 2 es la continuacin directa del primer brazo y contiene la tercera de


las articulaciones del modelo terico del brazo robot. Geomtricamente es bastante parecido al primer brazo pero termina en una semicircunferencia, por lo que su modelado se hace algo ms complejo. Mecnicamente y a efectos de construccin de la escena supone muy pocos cambios respecto al primero de los brazos. La siguiente figura muestra la posicin del segundo brazo en el robot puma real.

Segundo Brazo del Robot Puma Como habamos dicho, la escena asociada con la clase creada para el segundo brazo es muy similar a la primera. Esta escena se observa en la siguiente figura.

52

Simulacin Virtual de Robots Articulados

Escena del Segundo Brazo del Puma Al igual que en el primer brazo se observan dos objetos shapes principales; el shape1 identifica la figura de la caja metlica del segundo brazo, mientras que el shape2 identifica el cilindro de giro asociado con la tercera articulacin terica. El objeto TransformGroup llamado objCil desplaza el cilindro a la posicin correcta en relacin a la estructura metlica. El objeto objBrazo2 sirve para unir el objeto Interpolador que realiza el movimiento, la propia clase del segundo brazo y el objeto ColorCube que es invisible y, al igual que el todas las articulaciones, sirve para obtener la posicin geomtrica del punto asociado con la tercera articulacin. Por ltimo los objetos TransformGroup llamados desp2 y objRotaBrazo2 desplazan y rotan respectivamente al segundo brazo para colocarlo en la posicin correcta respecto del primero. La figura virtual obtenida se muestra en la siguiente figura.

Figura Virtual del Segundo Brazo 53

Simulacin Virtual de Robots Articulados

Mueca del Robot

DEBIDO al complejo movimiento de la mueca del brazo robot, sta ha sido la figura
ms difcil de modelar, lo que se traduce en una mayor cantidad de cdigo. A las dos articulaciones de revolucin, una para elevar la mueca y otra para rotarla se le unen los ejes que hacen que la pinza de la mueca se abra y cierre.

Mueca del Robot La escena asociada a la mueca es algo ms compleja que las escenas de los objetos anteriores, debido a que se trata de una pieza compuesta por otras figuras que giran, las pinzas. La escena resultante se muestra en la siguiente figura.

Para simplificar un poco la escena no se han incluido los objetos que proporcionan la apariencia a las figuras mediante relaciones de referencia. Simplemente decir que hay una relacin de referencia desde cada objeto shape, excepto los objetos ColorCube y shapeExtremo, a un objeto de tipo Appearance. El objeto shape llamado caja identifica la figura del ortoedro que sirve como base a la

54

Simulacin Virtual de Robots Articulados mueca. A una distancia igual a la longitud de las pinzas se coloca, utilizando el objeto TransformGroup llamado objExtremo, un objeto invisible llamado shapeExtremo, que es dnde se va a colgar el objeto virtual que se encuentra en el universo cuando la mueca del robot lo recoja. El cilindro asociado a la mueca que permite su elevacin y rotacin se crea mediante el objeto shape llamado shape2, y se coloca mediante un TransformGroup en la posicin adecuada respecto a la base de la mueca previamente comentada. Los dos subrboles de la derecha identifican las dos pinzas de la mueca. Se utilizan dos objetos TransformGroup para desplazar y rotar la pinza respecto a la base de la mueca, y un tercero permite unir las figura de la pinza con el objeto CollisionDetector (CD). Este objeto es el que permite que se disparen los eventos necesarios cuando la pinza entra en contacto con algn objeto. El objeto RotateInterpolator (RI) permite que la pinza se abra o cierre. Como las dos pinzas de la mueca son idnticas, los subrboles tambin lo son. Lo nico que vara es el desplazamiento y rotacin de cada una de las pinzas respecto a la base de la mueca. Todos estos elementos cuelgan de la clase principal (this), la cual debe ser desplazada para colocar la mueca en la posicin adecuada respecto al segundo brazo. Esto se consigue utilizando el TransformGroup llamado despMuneca. Los TransformGroup intermedios llamados objRotaMuneca1 y objRotaMuneca2 se usan para colocar los objetos RotateInterpolator que permiten el giro y elevacin de la mueca. Finalmente, el objeto invisible ColorCube permite leer la posicin virtual de la base de la mueca como comprobacin de los clculos de la cinemtica directa.

55

Simulacin Virtual de Robots Articulados

Movimiento Virtual del Robot


Animaciones y objetos Behavior La clase Alpha y las articulaciones de revolucin Implementacin de las articulaciones de revolucin

Animaciones y objetos Behavior

EN Java 3D, un Behavior es una clase que permite especificar animaciones


con objetos visuales. El Behavior puede cambiar virtualmente un atributo de un objeto visual. Existen tipos predefinidos de estos objetos, de manera que el programador se puede crear Behaviors personalizados. Una vez se ha definido un Behavior para un objeto visual, Java 3D se encarga de cambiar la posicin, orientacin, color u otros atributos de dicho objeto. La diferencia entre una animacin y una interaccin es que una animacin se activa como respuesta al paso del tiempo y las interacciones se activan como respuesta a la actividad del usuario. Cada objeto visual en el universo virtual puede tener su propio behavior predefinido. De hecho, un mismo objeto visual puede tener muchos behaviors. Para especificar un behavior para un objeto visual, el programador crea los objetos que especifican el behavior, aade el objeto visual a la escena y realiza las relaciones de referencia adecuadas entre los objetos de la escena y los behaviors. En un universo virtual con muchos behaviors, la potencia de cmputo necesaria para que las animaciones vayan suaves es bastante grande. Si se utiliza un nico procesador, ser ste el que se encargue tanto del renderizado de los objetos como de las animaciones, por lo que su rendimiento puede verse enormemente degradado. Existen procesadores grficos especializados que pueden utilizarse en los procesos de renderizado, de manera que los behaviors puedan coexistir sin que el rendimiento del sistema se vea afectado. Java 3D ofrece al programador una forma sencilla de solventar este problema sin necesidad de tener varios procesadores. Esto lo consigue asignando una regin del espacio a cada behavior, denominada regin de scheduling. Un behavior no est activo a menos que el ViewPlatform intersecte con la regin de scheduling de los objetos Behavior. En otras palabras, si los objetos en ese momento no son visibles, la animacin no se produce. Las regiones de scheduling hacen que el Java 3D sea ms eficiente cuando hay muchos behaviors en un mismo universo virtual. Un interpolador es uno de los muchos tipos de behaviors predefinidos en el ncleo de Java 3D. El objeto interpolador se basa en una funcin de tiempo, y manipula los parmetros de los objetos de una escena. Por ejemplo, el objeto RotationInterpolator, manipula la rotacin especificada por un TransformGroup para llevar a cabo la rotacin de los objetos visuales que son hijos del dicho TransformGroup. El uso de este tipo de objetos se ver con ms detalle en el siguiente

56

Simulacin Virtual de Robots Articulados apartado de esta seccin. Un elemento importante en las animaciones y que no se ha comentado son las Capacidades. En secciones anteriores habamos dicho que cuando una escena se compila, se convierte en una representacin ms eficiente para su renderizacin. Aparte de esto, tiene el efecto de fijar el valor de los parmetros y posiciones de los objetos de la escena. A menos que se especifique de manera explcita, los atributos de los objetos de una escena no pueden ser cambiados en tiempo de ejecucin. Hay momentos en los que se necesita cambiar las propiedades de determinados objetos. Por ejemplo, cambiando los valores de un TransformGroup se pueden crear animaciones. Para que esto ocurra se debe habilitar la capacidad de cambio de las propiedades del TransformGroup. La lista de parmetros que pueden ser accedidos se llama capacidades del objeto. Cada objeto de la escena tiene un conjunto de bits de capacidades que indican que clase de parmetros pueden cambiarse cuando ese objeto est vivo. Existen funciones para habilitar, deshabilitar y obtener el valor de una determinada capacidad de un objeto. En definitiva, para especificar una animacin se deben realizar los siguientes pasos: 1. Crear un objeto TransformGroup y darle la capacidad de permitir el cambio de sus propiedades. 2. Crear un objeto Alpha (se comentar en el siguiente apartado) 3. Crear el behavior adecuado, por ejemplo, un RotationInterpolator. 4. Especificar la regin de scheduling. 5. Colocar el behavior como hijo del TransformGroup.

La clase Alpha y las articulaciones de revolucin

COMO ya habamos comentado, la accin de un objeto Behavior puede ser


cambiar la localizacin, orientacin, tamao, color o transparencia de un objeto visual. Para ello existen unos objetos predefinidos llamados Interpoladores que permiten crear un behavior de una manera mucho ms sencilla. Por ejemplo, el objeto llamado PositionInterpolator permite cambiar la posicin de un objeto visual, el RotationInterpolator su orientacin, el ScaleInterpolator su tamao, el ColorInterpolator su color y el TransparencyInterpolator la transparencia. Como es posible imaginar, el interpolador usado para simular el comportamiento de las articulaciones de revolucin en el robot Puma es el RotationInterpolator. Esta clase se usa para especificar la rotacin de un objeto visual o de un grupo de objetos visuales. El RotationInterpolator cambia un objeto TransformGroup para especificar la rotacin como respuesta al valor de un objeto tipo Alpha, objeto que pasaremos a explicar a continuacin. La rotacin se produce cuando

57

Simulacin Virtual de Robots Articulados cambia el valor del objeto Alpha. Es posible especificar el eje de rotacin, el ngulo de comienzo y el ngulo final. La velocidad de giro vendr determinada por las especificaciones temporales asociadas al objeto Alpha. Los objetos Alpha se utilizan para especificar acciones a lo largo del tiempo. La configuracin de estos objetos puede ser tan compleja como uno desee, pero para especificar movimientos simples slo hay que cambiar algunos parmetros. La clase Alpha produce valores entre cero y uno, ambos inclusive. Los valores que se producen son dependientes del tiempo y de los propios parmetros de este objeto. Los Interpoladores son behaviors configurados que usan un objeto Alpha para proveer de animaciones a los objetos visuales. Se garantiza que en un instante determinado el objeto Alpha devuelve un nico valor. Si dibujamos los valores del objeto Alpha respecto al tiempo se observar una grfica identificativa en forma de onda de dicho objeto Alpha. La forma de onda tiene cuatro fases: incremento, alpha en uno, decremento y alpha en cero. El conjunto de las cuatro fases es un ciclo de la onda alpha. Estas cuatro fases se corresponden con cuatro parmetros del objeto Alpha. La duracin de las cuatro fases se especifica por un valor entero que significa el nmero de milisegundos de dicha fase. La siguiente figura identifica las cuatro fases del objeto Alpha:

Todos los tiempos de los objetos Alpha son relativos al tiempo de inicio de dicho objeto. El tiempo de inicio de cualquier objeto Alpha es recogido de la hora del sistema. En consecuencia, los objetos Alpha creados en diferentes momentos tendrn el mismo tiempo de inicio. Como resultado, todos los objetos interpoladores, aun encontrndose basados en diferentes objetos Alpha, estn sincronizados. Los objetos alpha pueden tener la forma de onda comenzando desde cualquier instante de tiempo, es decir, puede ser retardado. Esto se consigue mediante dos parmetros: el triggerTime y el PhaseDelayDuration. El parmetro TriggerTime especifica un tiempo despus del tiempo de inicio para comenzar la operacin del objeto Alpha. El PhaseDelayDuration especifica el tiempo despus del TriggerTime y

58

Simulacin Virtual de Robots Articulados antes de que comience el primer ciclo. La forma de onda del objeto puede repetirse tantas veces como uno quiera o incluso repetirse de manera indefinida. Esto viene especificado por el parmetro LoopCount. Si este parmetro es -1 indica que el ciclo se repite indefinidamente. Un objeto Alpha no tiene porque pasar siempre por las cuatro fases. La siguiente figura muestra diferentes formas de onda usando una, dos, tres o las cuatro fases de los objetos Alpha.

Adems de la duracin de las cuatro fases, el programador puede especificar una duracin de rampa para las fases de incremento y decremento. Mientras dure la duracin de la rampa, el valor alpha cambia gradualmente. En el caso de interpoladores que causan desplazamiento, se producir una aceleracin o deceleracin del objeto visual, de manera que el efecto sea mucho ms real. El valor de la duracin de rampa se usa en las porciones de comienzo y final de las fases y est limitado a la mitad de la duracin de la fase. La siguiente figura muestra la forma de onda de un objeto Alpha con duraciones de rampa tanto de incremento como de decremento (IncreasingAlphaRampDuration y DecreasingAlphaRampDuration). Los valores alpha cambian linealmente entre los dos periodos rampa.

A modo de resumen, la clase Alpha tiene los siguientes parmetros:


LoopCount: Nmero de repeticiones Mode: Indica qu parmetros Alpha estarn activos, si los de incremento (INCREASING_ENABLE) , los de decremento (DECREASING_ENABLE) o ambos. TriggerTime: tiempo de inactividad inicial

59

Simulacin Virtual de Robots Articulados


PhaseDelayDuration: tiempo a transcurrir antes del primer ciclo IncreasingAlphaDuration: duracin de la fase de incremento lineal IncreasingAlphaRampDuration: duracin de la rampa de incremento AlphaAtOneDuration: tiempo de permanencia en 1 DecreasingAlphaDuration: duracin de la fase de decremento lineal DecreasingAlphaRampDuration: duracin de la rampa de decremento AlphaAtZeroDuration: tiempo de permanencia en 0

Implementacin de las articulaciones de revolucin

EN las secciones anteriores hemos visto qu son y cmo funcionan los


behaviors, los interporladores y el uso de la clase Alpha. En esta seccin simplemente diremos cmo se ha creado el movimiento de los diferentes brazos del robot virtual. Como es de imaginar simplemente se trata de configurar un objeto RotationInterpolator y colgarlo del lugar adecuado dentro de la estructura en rbol del robot. Se necesitar un objeto interpolador para la base (1 articulacin), otro para el primer brazo (2 articulacin), otro para el segundo brazo (3 articulacin), dos ms para la mueca (4 y 5 articulacin) y dos ms para las pinzas. La configuracin de cada interpolador vara nicamente en el eje de rotacin, los ngulos inicial y final, y la configuracin de los objetos Alpha. No se pretende explicar todos y cada uno de los pasos con todo detalle, pero si dar una idea general de las cosas que hay que hacer para poder mover un brazo de manera que la simulacin sea lo ms realista posible. Supongamos que queremos mover un brazo a un determinado ngulo, es decir, hacer que un brazo gire hasta una posicin determinada. Los pasos involucrados en la programacin son: 1. Parar el interpolador asociado por si el brazo se est moviendo en ese momento. 2. Determinar el valor del ngulo actual del brazo. Esto se hace mediante una simple regla de tres entre los ngulos mnimo y mximo del interpolador y el valor actual del objeto Alpha, es decir, si sabemos que el ngulo inicial del interpolador se corresponde al valor alpha 0, y el ngulo final al valor alpha 1, podemos calcular el ngulo actual consultando el valor actual del objeto Alpha. 3. Mediante otra regla de tres calculamos la duracin del movimiento ya que durar ms tiempo un giro de 180 grados que uno de 90 grados. Estas medidas se han tomado siguiendo en patrn de comportamiento temporal del robot real. 4. Crear el objeto Alpha de manera que slo haya un ciclo, nicamente haya incremento del valor alpha, la duracin de la fase de incremento lineal sea la calculada en el apartado anterior y la duracin de la rampa de incremento sea 60

Simulacin Virtual de Robots Articulados fija (para simular una aceleracin en el movimiento). El resto de parmetros son nulos. 5. Asociar el tiempo de inicio del objeto Alpha creado al momento actual, ya que por defecto, el momento de inicio es el de comienzo de la escena. Si no se hace este paso, la principal consecuencia es que todos los interpoladores estaran sincronizados, por lo que todos los movimientos duraran lo mismo, es decir, todas las articulaciones se moveran a la par. Es ms, una vez se haya realizado el primer movimiento, no se podra realizar ningn otro, ya que las formas de onda no son contnuas, por lo que se produciran saltos en los movimientos. 6. Establecer como ngulo mnimo del interpolador, el ngulo actual de la articulacin; y como ngulo final, el ngulo de destino al que se pretende llegar. 7. Asociar al interpolador, el objeto Alpha creado. 8. Habilitar de nuevo el Interpolador. Estos pasos que se han indicado se deben hacer cada vez que se quiere mover una determinada articulacin, independientemente de la articulacin que se quiera mover. La nica diferencia est en el movimiento de la mueca y las pinzas. En estos casos la forma de onda se ha programado totalmente lineal, es decir, no se producen aceleraciones en los movimientos. El motivo de esto es que la mueca y las pinzas pesan poco y la inercia no hace demasiado efecto en estos componentes del robot real. Si este documento se est viendo sobre un explorador de Internet que soporte GIFs animados, a continuacin se presenta una animacin de ejemplo que contiene cuatro frames del giro de la primera articulacin en un ngulo de 90 grados.

61

Simulacin Virtual de Robots Articulados

Colisiones
Interacciones y Animaciones Implementacin de una clase Behavior Condiciones de comienzo (Wakeup Conditions) Configuracin de Behaviors para las colisiones

Interacciones y Animaciones

EN esta seccin trataremos de explicar como se producen las colisiones entre


los diferentes objetos visuales que componen un mundo virtual en Java 3D y cmo pueden controlarse. Lo primero que debemos tener en cuenta es la diferencia entre interaccin y animacin. Una interaccin se produce cuando la imagen cambia en respuesta a una accin del usuario. Una animacin, por el contrario, se produce cuando la imagen cambia sin accin directa del usuario, sino provocada normalmente por el paso del tiempo. Por ejemplo, si un usuario navega por un mundo virtual, el ViewPlatform se mueve en respuesta a las pulsaciones del teclado. Este movimiento es una interaccin porque es resultado directo de la accin del usuario. Debido al movimiento del ViewPlatform pueden cambiar otros objetos (por ejemplo los LOD Behaviors). Estos cambios no son provocados directamente por el usuario y por lo tanto son animaciones. Sealar que los LOD (Level Of Detail) son Behaviors que permiten cambiar el nivel de detalle de los objetos visuales cuando el ViewPlatform se encuentra a una determinada distancia de ellos. Esto permite que el renderizado sea ms rpido, ya que no se pierde tanto tiempo en el renderizado de los objetos que se encuentran a mucha distancia. Tanto las animaciones como las interacciones estn especificadas con objetos Behavior. Como ya hemos visto en secciones anteriores, el objeto de la clase Behavior es cambiar el aspecto de la escena o de los objetos en la escena en respuesta a algunos estmulos. Un estmulo puede ser presionar una tecla, un movimiento del ratn, la colisin de objetos, el paso del tiempo, otros eventos o combinaciones de todos ellos. Los cambios producidos pueden ser aadir objetos a la escena, quitarlos, cambiar los atributos de los objetos o combinaciones de estos. Las posibilidades estn nicamente limitadas por las capacidades de los objetos de la escena. Los objetos Behavios tienen multitud de aplicaciones ya que sirven de enlace entre estmulos y acciones; y hay infinidad de combinaciones entre estos. Ya hemos visto el uso de los behaviors para animaciones. Adems se pueden usar para interacciones, colisiones, navegar por el mundo virtual y otras aplicaciones ms especficas. En el siguiente apartado vemos como configurar un objeto Behavior cualquiera y luego veremos el caso concreto de las colisiones.

62

Simulacin Virtual de Robots Articulados

Implementacin de una clase Behavior

EN la seccin de animaciones hemos visto lo que es un behavior y como se


utiliza en el caso concreto de realizar la rotacin de los brazos del robot virtual. Veremos ahora como realizar cualquier behavior. Una clase behavior personalizada implementa los mtodos de inicializacin y processStimulus de la clase abstracta Behavior. Por supuesto, tiene un constructor y puede tener todos los mtodos que el programador necesite. El constructor puede usarse para establecer la referencia hacia el objeto del cambio. Esta referencia se realiza cuando la escena comienza a ser construida. El mtodo de inicializacin se invoca cuando la escena que contiene la clase behavior llega a estar viva. Dicho mtodo es el responsable de colocar el evento trigger y las condiciones iniciales de las variables de estado del behavior. El trigger se especifica como un objeto, o combinacin de objetos, WakeupCondition. El mtodo processStimulus se invoca cuando ocurre el evento trigger especificado por el behavior. Dicho mtodo es el responsable de la accin que sirve como respuesta al evento. Como se pueden codificar muchos eventos en un nico objeto WakeupCondition, el mtodo processStimulus incluye la decodificacin del evento. Por tanto, este mtodo es el que responde a los estmulos cambiando a los objetos y, cuando es la ocasin, reiniciando el trigger. En resumen, el mecanismo general de construccin de cualquier Behavior es: 1. Escribir al menos un constructor. Guardar una referencia al objeto de cambio. 2. Crear un public void initialize() Especificar el criterio de comienzo (trigger) 3. Crear un public void processStimulus() Decodificar la condicin del trigger Actuar de acuerdo a la condicin del trigger Resetear o reiniciar el trigger Siempre que lo que se desea realizar lo permitan las clases behavior creadas, por ejemplo, los interpoladores; es mejor utilizar stas, ya que su codificacin se encuentra optimizada. ste no es el caso de las colisiones. No existe ninguna clase derivada de la clase Behavior que contemple las colisiones entre objetos. Esto se comprende, ya que tanto los efectos, como los motivos de una colisin pueden ser muy variados y depende mucho de la aplicacin particular. Antes de adentrarnos en la implementacin de nuestro caso concreto echemos un vistazo a los diferentes objetos que permiten especificar las condiciones del trigger con el fin de entender un poco mejor el funcionamiento de la clase Behavior. El mtodo wakeupOn se usa en los mtodos initialize y processStimulus para 63

Simulacin Virtual de Robots Articulados especificar el trigger del behavior. A ste mtodo se le pasa como parmetro un objeto WakeupCondition. Como cualquier otro objeto, los behavior tienen un rea de scheduling. Esta rea identifica el rea de accin del behavior. Un objeto behavior esta activo nicamente cuando su rea de scheduling intersecta el volumen de activacin de un objeto View. Como es posible tener mltiples vistas en un mismo universo virtual, un mismo behavior puede activarse por ms de un View. El mtodo getView devuelve una referencia al objeto View que est actualmente asociado con el behavior. En nuestro caso solo tenemos un objeto View (vista) por lo que ste mtodo no nos preocupa. Tambin existe el mtodo setEnable, que permite activar o desactivar el behavior en un instante determinado. Las funciones ms comunes de la clase abstracta Behavior son: -View getView() -Void processStimulus(java.util.Enumeration criterios) -Void setEnable(boolean estado) -Void setSchedulingBounds(Bounds region) -Void wakeupOn(WakeupCondition criterios)

Condiciones de comienzo (Wakeup Conditions)

LOS behaviors activos son ejecutados por la aparicin de uno o ms estmulos


de comienzo que se especificaron en su creacin. Los estmulos de comienzo se especifican usando subclases de la clase WakeupCondition. Esta clase es la base de todas las condiciones de comienzo. Hay cinco subclases que se extienden de la clase WakeupCondition. Una es la llamada WakeupCriterion, y las otras cuatro permiten la composicin de condiciones de comienzo compuestas. La siguiente figura muestra la jerarqua de clases que se comenta.

64

Simulacin Virtual de Robots Articulados

Jerarqua de clases para las condiciones de comienzo de los behavior Como puede verse en la figura existen subclases de la clase WakeupCriterion que identifican diferentes motivos por el que el behavior debe activarse y, por tanto, ejecutarse el procedimiento processStimulus. Algunas de ellas son:

WakeupOnActivation, especifica el comienzo del behavior cuando el volumen de activacin del ViewPatform intersecta con la regin de scheduling del objeto. WakeupOnAWTEvent, especifica el comienzo del behavior cuando ocurre un evento AWT. Esta clase tiene dos constructores y un mtodo. Los constructores permiten la especificacin de eventos AWT usando constantes de la clase AWT. El mtodo devuelve el vector de eventos AWT consecutivos que causaron el trigger. WakeupOnElapsedTime, especifica el comienzo del behavior cuando pasan un cierto nmero de milisegundos.

Hay muchas ms clases, pero no tienen mayor inters para los objetivos que nosotros perseguimos. Las clases que se han usado para detectar las colisiones estn comentadas en el siguiente apartado.

Configuracin de Behaviors para las colisiones

JAVA 3D puede detectar colisiones de objetos en el mundo virtual. Hay tres


clases que se extienden de la clase WakeupCriterion que son tiles para el procesado de colisiones: , y WakeupOnCollisionEntry WakeupOnCollisionMovement WakeupOnCollisionExit. Un criterio WakeupOnCollisionEntry se da cuando un objeto colisiona de entrada. Cuando dos objetos que han colisionado de desplazan uno respecto del otro sin dejar de estar en contacto, se da el criterio WakeupOnMovementEntry. Por ltimo, el criterio WakeupOnCollisionExit se da cuando los objetos dejan de estar en colisin.

65

Simulacin Virtual de Robots Articulados Java 3D puede solo manipular una colisin a la vez. Cuando se detecta una colisin con un objeto, el resto de colisiones con otros objetos no son detectados hasta que no haya acabado la primera colisin. Por tanto, es posible que no se detecten colisiones pequeas o que se produzcan en cortos espacios de tiempo. Tanto la clase wakeupCollisionEntry como la wakeupCollisionExit tienen varios constructores. Nos interesa especialmente el siguiente: WakeupCollisionEntry(SceneGraphPath armingPath, int speedHint) El argumento armingPath especifica el objeto al que se le va a asociar el behavior, es decir, el objeto que se va a usar como detector de colisiones. Cuando algn otro objeto choque con ste se activar el bahavior. El argumento speedHint admite dos valores: USE_BOUNDS o USE_GEOMETRY. El primero hace que el behavior se active por colisin de las reas de scheduling de los objetos. El segundo hace que el behavior se active cuando se intersectan los objetos geomtricamente. Esta ltima opcin hace que las colisiones sean mucho ms perfectas, pero que el tiempo de procesador usado para detectar las colisiones sea mucho mayor, ya que hay que comprobar si figuras relativamente complejas estn colisionando con otras. Usando regiones de scheduling, cualquier objeto se ve envuelto como por una "burbuja" y son stas las que colisionan, por lo que el tiempo de procesador empleado en la deteccin de colisiones es mucho menor. En el proyecto se ha optado por usar las colisiones geomtricas, ya que el contacto de los objetos con la pinza requiere gran precisin. El procedimiento initialize() creado para la clase que detecta las colisiones en el robot virtual define estos criterios tal y como se muestra en el siguiente fragmento de cdigo. public void initialize() { wEnter = new WakeupOnCollisionEntry(shape, WakeupOnCollisionEntry.USE_GEOMETRY); wExit = new WakeupOnCollisionExit(shape, WakeupOnCollisionEntry.USE_GEOMETRY); wakeupOn(wEnter); } La ltima lnea especifica que el trigger que despertar el behavior ser el de comienzo de colisin. El procedimiento processStimulus tiene que chequear si se ejecuta debido a un comienzo o a un fin de colisin. Para ello usa una variable booleana que la va cambiando de valor. public void processStimulus(Enumeration criteria) { inCollision = ! inCollision; if (inCollision) { // COGEMOS EL OBJETO wakeupOn(wExit); }

66

Simulacin Virtual de Robots Articulados else { // SOLTAMOS EL OBJETO wakeupOn(wEnter); } } El cdigo mostrado arriba muestra a "grosso modo" como funciona el mtodo processStimulus. Por supuesto, no es tan simple como parece a simple vista, pues recordemos que se coloca un behavior (detector de colisin) en cada pinza, por lo que se tiene que chequear el estado de la otra pinza para saber si debemos soltar o no el objeto. Simplemente mostrar que cada vez que se ejecuta este mtodo hay que reiniciar el trigger para que el behavior pueda activarse de nuevo. Cuando se coge un objeto, el behavior se activar cuando se salga de la colisin (se suelte) y cuando se suelta un objeto, el behavior se activar cuando se produzca una colisin nueva. Simplemente resta aadir una instancia de la nueva clase creada, que se extiende del Behavior, a los TransformGroup de donde cuelgan las pinzas, tal y como se muestra en el esquema de la escena mostrado en la seccin que habla de la mueca del robot.

67

Simulacin Virtual de Robots Articulados

Conclusiones

EN esta seccin hemos visto las nociones bsicas de programacin en Java 3D


y el uso de las principales clases que nos proporciona para la realizacin de la simulacin del robot virtual. No se han tratado muchos temas que, sin embargo, se han implementado. Por ejemplo: las luces. Existen muchos tipos de luz, focos, sombras y dems efectos, pero son pura labor de investigacin que no tiene mayor relevancia. Tambin es posible utilizar texturas para los diferentes objetos visuales, pero esta alternativa requiere una gran potencia de clculo, por lo que no se ha implementado. Tampoco se ha hablado en profundidad de la navegacin por el mundo virtual con ayuda de los cursores. Como aproximacin nicamente hemos dicho que se trata de objetos Behaviors que se activan con pulsaciones de teclado. Todos stos y otras caractersticas de Java 3D que no son relevantes para el objetivo del proyecto, pero que son muy interesantes a la hora de mejorar la apariencia visual de los mundos virtuales pueden encontrarse explicados en el API de Java 3D o en el Tutorial, que puede encontrarse en las pginas de Sun. Como coletilla de sta seccin decir que no conviene abusar de los objetos behavior, ya que consumen mucho tiempo de procesador, sobre todo cuando se intentan detectar las colisiones. Hay que tener en cuenta que cuando se cuelga un detector de colisin a un objeto, el sistema chequea cada instante si hay algn otro objeto que est colisionando con l geomtricamente. Como esto relentiza mucho el sistema se ha deshabilitado la propiedad de "ser colisionable" a todos los objetos excepto al objeto esfrico de color que sirve para que pueda ser cogido por el robot virtual. De esta forma si cualquier otro objeto colisiona con la pinza del robot no se activar el behavior correspondiente. Hay que tener en cuenta que todos las caractersticas vistas en esta seccin se refieren a la simulacin grfica del robot, es decir, al trabajo necesario para mostrar el Canvas 3D en el que se encuentra el robot. El programa Java incluye mucho ms cdigo para implementacin de la Cinemtica Directa e Inversa, programacin de la interfaz de usuario y definicin de mdulos de acceso remoto. Todas estas partes se vern en secciones posteriores. Sin embargo, antes de esto nos vemos obligados a explicar con detalles los fundamentos matemticos que nos llevan a los resultados tericos y, por supuesto, a la comprobacin de dichos resultados con la simulacin virtual. Ser preciso, por tanto, dar las especificaciones tcnicas del robot real y explicar la teora que yace debajo de todo el entorno de simulacin.

68

Simulacin Virtual de Robots Articulados

Captulo 3: Teora sobre la Cinemtica del Robot

69

Simulacin Virtual de Robots Articulados

Caractersticas Geomtricas del Robot


Introduccin y Caractersticas Tcnicas Geometra del Robot Mentor Generalizacin y Modelo Matemtico

Introduccin y Caractersticas Tcnicas

A nadie se le escapa que los procedimientos y mquinas automticas que


llevan a cabo tareas cotidianas o de produccin son cada vez ms comunes. Estas mquinas se han ido desarrollando a lo largo de la historia, sin embargo, hay un pequeo grupo de ellas que han seguido una evolucin muy rpida. Estamos hablando de los robots. Los robots son mecanismos que tratan de emular la movilidad del cuerpo humano. Como el brazo es la parte del cuerpo que permite realizar un mayor nmero de tareas, es ste el ejemplo de modelizado de la mayora de los robots. El trabajo con robots comprende labores de programacin, organizacin de la produccin y mantenimiento. Las dos primeras exigen un conocimiento profundo de los mecanismos y misiones que se desempean en el proceso productivo. La tercera se fundamente en el estudio de las diversas tecnologas que incorpora el mecanismo. En esta seccin se pretende mostrar el procedimiento matemticamente riguroso necesario para llevar a cabo los clculos necesarios en la aplicacin. Fundamentalmente estos clculos se centran en el clculo de la Cinemtica Directa e Inversa del Robot Puma que se mostrar a continuacin. Como estos mtodos son dependientes de la geometra y caractersticas del robot en cuestin, es necesario mostrar las caractersticas generales del mismo, as como la geometra de cada una de las piezas que lo conforman. El robot que se ha explicado en la seccin anterior y que se ha simulado mediante Java 3D es un robot Puma, es decir, un brazo robot con tres articulaciones de revolucin. Se le incorpora una mueca con dos articulaciones ms que permiten la elevacin y rotacin de la misma. Centrmonos en el caso particular en el que nos encontramos. Se nos ha presentado un brazo robot de la empresa Alecop. Concretamente se trata del modelo Mentor. Se trata de un robot antropomrfico ideado para su uso en el mundo educativo. Dispone de 5 grados de libertad, definidos por ejes con movimiento angular, mas una pinza.

70

Simulacin Virtual de Robots Articulados

Robot Mentor de Alecop Los ejes y la pinza son accionados electrnicamente por seis motores de corriente contnua y servocontrolados en posicin, mediante la utilizacin de captadores potenciomtricos en cada unidad de movimiento. La transmisin del movimiento desde el motor al eje se realiza a travs de engranajes planos para los cinco ejes principales, y engranajes cnicos para la pinza. En el armario de control no se ha incorporado la unidad de procesamiento de comandos, lo que hace que el robot pueda ser gobernado por cualquier sistema capaz de generar cdigos compatibles con su interface de comunicacin. Adems de los reguladores para los motores de accionamiento incorpora los siguientes dispositivos:

Convertidores A/D y D/A de 8 bits que sirven como interface entre el control y el sistema de gobierno del robot. Circuito de parada de emergencia en caso de bloqueo en cualquiera de los ejes. Interface de entradas y salidas que permiten al robot trabajar en configuracin de "clula de trabajo". Esta interface dispone de cinco salidas digitales, dos entradas digitales y cuatro entradas analgicas. Fuente de alimentacin interna con conexin a tensin de red 220V / 50-60 Hz.

71

Simulacin Virtual de Robots Articulados

Interface del Robot Mentor Las caractersticas tcnicas del robot se muestran en la siguiente tabla.

El siguiente dibujo intenta mostrar las capacidades de movilidad del robot:

72

Simulacin Virtual de Robots Articulados

Movilidad del Robot Puma

Geometra del Robot Mentor

EL trabajo que en este proyecto se ha desarrollado es fundamentalmente de


simulacin. La simulacin no involucra calidad visual, sino una representacin fiable de lo que ocurre en la realidad. En este sentido, el aspecto del robot virtual que se ha construido carece de importancia. Dara lo mismo haber construido un robot puma con tres ejes representados por esferas y que los links fuesen ortoedros. Sin embargo, se le quera dar un acabado profesional al robot, de manera que el usuario pudiese asociar directamente la imagen del robot real con el simulado en realidad virtual. Por tanto, fue preciso fijarse en la geometra del robot para realizar una representacin virtual que se ajustase milimtricamente. En este apartado se pretende mostrar el conjunto de medidas de las diferentes partes del robot que se han usado para el diseo del robot virtual. A continuacin se presentan el alzado y el perfil del robot con las longitudes correspondientes a cada pieza.

73

Simulacin Virtual de Robots Articulados

Alzado del Robot Mentor

74

Simulacin Virtual de Robots Articulados

Perfil del Robot Mentor En base a estas mediciones se cre la figura virtual del robot Mentor dentro del mundo en Java 3D. A la escena resultante se le aplic un factor divisor de escala para reducir las dimensiones de todo el conjunto a efectos de obtener una mayor rapidez en el renderizado. Por ltimo decir que pequeos errores de medida pueden llevar consigo discrepancias entre los resultados matemticos tericos y las posiciones resultantes en el mundo virtual. Por este motivo se tuvo que probar fehacientemente el modelo virtual una vez construido.

Generalizacin y Modelo Matemtico

EN el siguiente apartado se tratar el problema de la Cinemtica Directa de


una manera totalmente general, es decir, independientemente de la estructura mecnica que se tenga. Sin embargo, la cinemtica inversa es mucho ms dependiente. ste, junto 75

Simulacin Virtual de Robots Articulados con la necesidad de simular un robot idntico al proporcionado en las prcticas, ha sido el principal motivo de centrarnos en el robot Mentor y no simular otro tipo de estructuras. En la presente seccin se ha detallado el robot Puma para su posterior modelizado y para obtener los datos necesarios para llevar a cabo los clculos matemticos oportunos. Sin una buena medicin de la estructura, la simulacin resultante no coincidira con el modelo terico inicial ni con los resultados matemticos. Sin embargo, nos hace falta un modelo matemtico que nos permita realizar los posteriores clculos. ste modelo utiliza una serie de ejes de coordenadas cartesianos situados estratgicamente en la base, articulaciones y punto extremo de la estructura, de manera que los clculos de la cinemtica directa e inversa puedan llevarse a cabo sin ningn problema. El siguiente esquema es el modelo matemtico utilizado en el resto de esta seccin.

Modelo matemtico del PUMA En la siguiente seccin explicaremos con detalle la eleccin de los ejes de coordenadas y el resto de parmetros. Simplemente se ha querido presentar este esquema para que est presente desde el principio de los desarrollos.

76

Simulacin Virtual de Robots Articulados

Clculo Matemtico de la Cinemtica Directa


El problema de la Cinemtica Directa Modelos de los Movimientos de las Cadenas Articuladas Matrices Homogneas Compuestas Procedimiento de Denavit-Hartenberg Clculo de la Direccin de Acercamiento y Cierre

El problema de la Cinemtica Directa

EL problema que se plantea es el poder describir una estructura de cualquier


tipo basndose en una serie de variables generalizadas. Las variables generalizadas son el conjunto de giros o traslaciones que definen los movimientos de una determinada cadena articulada. Para definir una estructura slo habra que definir en el espacio los puntos relevantes de la misma, es decir, para modelar una cadena articulada no nos hace falta saber la posicin de cada uno de los puntos que la forman, as como la geometra de cada uno de sus componentes. Nos bastara con la posicin de las articulaciones de la misma. Estas posiciones vienen dadas respecto a un origen. De ah que se necesiten definir una serie de ejes de coordenadas cartesianos. Se debe tener en cuenta que la nica forma que tiene la estructura de moverse es mediante los movimientos, sean giros o desplazamientos, de cada una de sus articulaciones. El sistema que se tiene para conocer la posicin de la estructura son los valores de las variables generalizadas. Dado los puntos relevantes (articulaciones) y las variables generalizadas se debe poder determinar las nuevas posiciones de los puntos relevantes. ste es el problema de la cinemtica directa. Para empezar tenemos que definir transformaciones entre diferentes ejes de coordenadas cartesianos. Supongamos un punto en dos dimensiones y dos ejes de coordenadas cartesianos.

77

Simulacin Virtual de Robots Articulados

El problema consiste en calcular la posicin del punto P respecto a un eje de coordenadas sabiendo la posicin del mismo punto respecto al otro. Se definirn para ello transformaciones entre sistemas. Llamaremos Too' a la matriz que permite conocer las coordenadas del punto P respecto al sistema OXY en funcin del sistema O'X'Y'. A su vez, llamaremos To'o a la matriz que permite hacer lo contrario. Es decir, Po = Too' * Po' Po' = To'o * Po Donde Po son las coordenadas del punto P respecto al sistema OXY, y Po' son las coordenadas del punto P respecto al otro sistema. En nuestro caso, nosotros trabajaremos en el espacio, pues la cadena articulada es un robot en tres dimensiones. La clave del problema radica en que es posible modelar cualquier tipo de movimiento espacial mediante una matriz 4x4. Supongamos el mismo ejemplo anterior, pero en el que lo sistemas son tridimensionales, es decir, los ejes de coordenadas cartesianos tienen tres componentes ortogonales entre s (X, Y y Z). Se puede definir una matriz 4x4 tal que:

Definamos la matriz de cambio como:

donde:
o

(X1)0 = vector unitario del sistema 1 sobre el eje X expresado en funcin del sistema 0 (Y1)0 = vector unitario del sistema 1 sobre el eje Y expresado en funcin del sistema 0

78

Simulacin Virtual de Robots Articulados (Z1)0 = vector unitario del sistema 1 sobre el eje Z expresado en funcin del sistema 0 (O1)0 = origen del sistema 1 expresado en funcin del sistema 0

Esta matriz de cambio es muy importante en todos los clculos que se van a presentar a continuacin. Permite localizar un sistema de referencia respecto a otro, y nos va a permitir conocer el punto final de la estructura mecnica sabiendo los valores de los ngulos de las articulaciones. Antes de continuar se tendrn en cuenta las siguientes consideraciones:

Todos los sistemas de referencia utilizados son Dextrgiros, es decir, si realizamos un movimiento del eje X al eje Y por el camino ms corto, el eje Z tiene la direccin del pulgar de la mano derecha. Por convenio, cuando un ngulo es positivo si se mide en sentido contrario a las agujas del reloj. De lo contrario, es negativo. Lo mismo ocurre con las distancias. Son positivas las que se midan segn la direccin de los ejes de los sistemas de referencia.

Estas consideraciones no limitan el problema planteado. Simplemente facilitan su solucin.

Modelos de los Movimientos de las Cadenas Articuladas

SE definir una cadena articulada mediante una sistemtica en base a matrices


4x4, tal y como se describi en el apartado anterior. Necesitamos un sistema de referencia fijo (Xo, Yo, Zo). Suponiendo una cadena articulada con n articulaciones, necesitaremos n+1 sistemas de referencia. Cada sistema (Xi, Yi, Zi) corresponde a la articulacin i+1 y est fijo al elemento i. Es decir, el sistema (Xo, Yo, Zo) debe estar fijo y colocado en la primera articulacin, el sistema (X1, Y1, Z1) estar colocado estar colocado en la segunda articulacin, y as sucesivamente.

79

Simulacin Virtual de Robots Articulados Ejemplo de cadena articulada de dos grados de libertad Cada sistema estar fijo al elemento justo anterior. Esto permite que cada movimiento venga determinado por la relacin de las matrices de transformacin entre sistemas. Para definir el sistema bastara con definir las coordenadas de los puntos mviles, es decir, las coordenadas de O1 y O2. Como interesa conocer estas coordenadas desde el sistema de referencia fijo necesitamos conocer las coordenadas de transformacin:

donde:

La estructura tendr tantos grados de libertad como articulaciones. En el caso del ejemplo de la cadena articulada bidimensional de dos grados de libertad, las variables generalizadas sern 1 y 2. La matriz T10 tiene como parmetro variable a parmetro variable a 2.
1

y la matriz T21 tiene como

Si definimos las matrices de cambio entre sistemas para este ejemplo, nos quedan de la siguiente manera:

donde:

80

Simulacin Virtual de Robots Articulados li = Longitud del i-esimo segmento o componente.

Matrices Homogneas Compuestas

SEGN lo visto en el apartado anterior, pueden construirse las denominadas


matrices homogneas para especificar rotaciones, desplazamientos y escalados en un espacio tridimensional. Los vectores utilizados en estas matrices se llaman vectores homogneos, y se caracterizan por tener un cuarto componente w. El valor de cada componente del vector se divide por este factor para obtener las coordenadas reales del vector. De esta manera, la submatriz 3x3 superior izquierda representa la rotacin; la submatriz superior derecha 3x1 representa el vector de posicin del origen del sistema de coordenadas rotado con respecto al sistema de referencia; la submatriz superior izquierda 1x3 representa la transformacin de perspectiva; y el cuarto elemento diagonal es el factor de escala global. Las matrices de rotacin y traslacin homogneas se pueden multiplicar juntas para obtener una matriz de transformacin homognea compuesta (a la que llamaremos matriz T). Sin embargo, como la multiplicacin de matrices no es conmutativa, se debe prestar atencin al orden en el cual se multiplican estas matrices. Las reglas que siguen son tiles para determinar una matriz de transformacin homognea compuesta: 1. Inicialmente, ambos sistemas de coordenadas son coincidentes, ya que la matriz de transformacin homognea es una matriz identidad 4x4. 2. Si el sistema de coordenadas rotante OUVW est rotando/trasladndose respecto de los ejes principales del sistema OXYZ, entonces premultiplicar la matriz de transformacin homognea previa (resultante) por una matriz de rotacin/traslacin bsica apropiada. 3. Si el sistema de coordenadas rotantes OUVW est rotando/trasladndose respecto de su propio eje principal, entonces postmultiplicar la matriz de transformacin homognea (resultante) por una matriz de rotacin/traslacin bsica apropiada. Supongamos que se quiere encontrar una matriz de transformacin homognea T que represente una rotacin de un ngulo respecto del eje OX, seguida por una traslacin de a unidades a lo largo del eje OX, seguida por una traslacin de d unidades a lo largo del eje OZ, seguida por una rotacin de un ngulo respecto del eje OZ. Para ello debemos multiplicar en el orden adecuado las matrices de transformacin homogneas bsicas de las rotaciones y los desplazamientos, tal y como se muestra a continuacin.

81

Simulacin Virtual de Robots Articulados

La matriz T nos queda:

Las matrices de transformacin homogneas tienen el efecto combinado de rotacin, traslacin, perspectiva y escalado global cuando operan sobre vectores de posicin expresados en coordenadas homogneas. Si estos dos sistemas de coordenadas se asignan a cada elemento del brazo del robot, por ejemplo, el elemento i-1 y el elemento i, respectivamente, entonces el sistema de coordenadas del elemento i-1 es el sistema de coordenadas de referencia y el sistema de coordenadas del elemento i es el sistema de coordenadas mvil cuando se activa la articulacin i. Utilizando la matriz T, podemos especificar un punto pi en reposo en el elemento i y expresado en el sistema de coordenadas del elemento i, en trminos del sistema de coordenadas del elemento i-1 como

Procedimiento de Denavit-Hartenberg
que el problema de la cinemtica directa est resuelto, pues solamente debemos construirnos las correspondientes matrices de cambio y saber los valores de las variables generalizadas de la cadena articulada para saber la posicin de cualquier articulacin. Sin embargo, el problema se complica al realizar este esquema en tres dimensiones. Para describir la relacin traslacional y rotacional entre elementos adyacentes, Denavit y Hartenberg propusieron un mtodo matricial de establecer de forma sistemtica un sistema de coordenadas (sistema ligado al cuerpo) para cada elemento

PARECE

82

Simulacin Virtual de Robots Articulados de una cadena articulada. La representacin de Denavit-Hartenberg resulta en una matriz de transformacin homognea 4x4 que representa cada uno de los sistemas de coordenadas de los elementos de la articulacin con respecto al sistema de coordenadas del elemento previo. As mediante transformaciones secuenciales, el efector final se puede transformar y expresar en las "coordenadas de base" que constituyen el sistema inercial del sistema dinmico. Se puede establecer para cada elemento, en sus ejes de articulacin, un sistema de coordenadas cartesiano ortonormal (Xi, Yi, Zi), donde i=1,2,...,n (n = Nmero de grados de libertad), ms el sistema de coordenadas de la base. Como una articulacin giratoria tiene solamente un grado de libertad, cada sistema de coordenadas (Xi, Yi, Zi) del brazo de un robot corresponde a la articulacin i+1 y est fija en el elemento i. Cuando el actuador de la articulacin activa la articulacin i, el elemento i se mover respecto al elemento i-1. Como el sistema de coordenadas i-simo est fijo en el elemento i, se mueve junto con ste. Asi pues, el sistema de coordenadas n-simo se mueve con la mueca del robot. Las coordenadas de la base se definen como el sistema de coordenadas nmero 0 (X0, Y0, Z0), que tambin es el sistema de coordenadas inercial del brazo. As para un brazo como el PUMA de seis ejes, tenemos siete sistemas de coordenadas, que representamos con (X0, Y0, Z0), ..., (X6, Y6, Z6). Cada sistema de coordenadas se determina y establece sobre la base de tres reglas: 1. El eje Zi-1 yace a lo largo del eje de la articulacin. 2. El eje Xi es normal al eje Zi-1 y apunta hacia afuera de l. 3. El eje Yi completa el sistema de coordenadas dextrgiro segn se requiera. Mediante estas reglas, uno es libre de escoger la localizacin del sistema de coordenadas 0 en cualquier parte de la base soporte, mientras que el eje Z0 est a lo largo del eje de movimiento de la primera articulacin. El ltimo sistema de coordenadas se puede colocar el cualquier parte de la mueca, mientras que el eje Xn sea normal al eje Zn-1. La representacin Denavit-Hartenberg de un elemento rgido depende de cuatro parmetros geomtricos asociados con cada elemento. Estos cuatro parmetros describen completamente cualquier articulacin prismtica o de revolucin.

83

Simulacin Virtual de Robots Articulados

Refirindose a la figura anterior, estos cuatro parmetros se definen como sigue:


i: Es el ngulo de la articulacin del eje Xi-1 al eje Xi respecto del eje Zi-1 (utilizando la regla de la mano derecha) di: Es la distancia desde el origen del sistema de coordenadas (i-1)-simo hasta la interseccin del eje Zi-1 con el eje Xi a lo largo del eje Zi-1. ai: Es la distancia de separacin desde la interseccin del eje Zi-1 con el eje Xi hasta el origen del sistema i-simo a lo largo del eje Xi (o la distancia ms corta entre los ejes Zi-1 y Zi). i: Es el ngulo de separacin del eje Zi-1 al eje Zi respecto del eje Xi (utilizando la regla de la mano derecha).

Para una articulacin giratoria, di, ai y i son los parmetros de articulacin y permanecen constantes para un robot, mientras que i es la variable que cambia cuando el elemento i se mueve (o gira) con respecto al elemento i-1. Para una articulacin prismtica, i, ai y i son los parmetros de articulacin y permanecen constantes para un robot, mientras que di es la variable de la articulacin. Con todas estas reglas podemos definirnos todos los sistemas de referencia, tal y como se muestran en la siguiente figura:

84

Simulacin Virtual de Robots Articulados

Los parmetros de Denavit-Hartenberg asociados son:

donde Li es la longitud del i-simo elemento de la cadena articulada. Teniendo definidas estas matrices, tenemos tambin resuelto el problema de la cinemtica directa, pues basta hacer el siguiente clculo para obtener las coordenadas del extremo de la mueca en funcin del sistema de coordenadas de la base.

Clculo de la Direccin de Acercamiento y Cierre

NORMALMENTE, adems de querer conocer la posicin del punto final de


una cadena articulada en relacin con el sistema de coordenadas de la base y en 85

Simulacin Virtual de Robots Articulados funcin de las variables generalizadas de la misma, se necesita conocer la direccin de acercamiento y cierre de dicha cadena. La direccin de acercamiento es un vector unitario que indica la direccin y sentido en la que se encuentra la mueca del brazo robot, es decir, indica hacia adonde apunta la mueca. Es importante conocerla por su posterior aplicacin para la cinemtica inversa. Puede ser que nos interese llegar a un determinado punto, de manera que la mueca se encuentre girada hacia una determinada direccin, la direccin de acercamiento. La direccin de cierre, por el contrario, indica la direccin en la que se cierra la pinza de la mueca. Esta direccin es independiente del punto final de la estructura, pues simplemente representa el giro de la mueca respecto a su propio eje. La siguiente figura representa la direccin de acercamiento por el vector a y la direccin de cierre por el vector s.

La direccin de acercamiento puede obtenerse de manera trivial y por simple geometra con la siguiente operacin.

donde:

Lo que hacemos es calcular la posicin del extremo de la mueca en funcin del sistema de referencia de la base, luego hacemos lo mismo para la base de la mueca, y por ultimo restamos los dos resultados anteriores. Geomtricamente nos da un vector

86

Simulacin Virtual de Robots Articulados que coincide con la direccin de acercamiento. La direccin de cierre se calcula de manera anloga. Simplemente, en lugar del punto final de la estructura (que se escoge utilizando el vector unitario en el eje Zn), se utiliza el vector unitario en el eje X (perpendicular a la direccin de acercamiento).

87

Simulacin Virtual de Robots Articulados

Clculo Matemtico de la Cinemtica Inversa


El problema de la Cinemtica Inversa Clculo de la Cinemtica Inversa para las tres primeras articulaciones Clculo de las dos ltimas articulaciones Clculo del resto de soluciones

El problema de la Cinemtica Inversa

EN esta seccin se plantea el segundo problema de la cinemtica del robot: la


cinemtica inversa. Con el fin de controlar la posicin y orientacin del efector final de un robot para alcanzar su objeto, es ms importante la solucin cinemtica inversa. En otras palabras, dada la posicin y orientacin del efector final de un brazo robot de seis ejes y sus parmetros de articulacin y elementos, nos gustara encontrar los ngulos de articulacin correspondientes q = (q1, q2, q3, q4, q5) del robot de manera que se pueda posicionar como se desee el efector final. En general el problema cinemtico inverso se puede resolver por diversos mtodos, tales como la transformacin inversa (Paul y col. [1981]), el lgebra de tornillo (Kohli y Soni [1975]), matrices duales (Denavit [1956]), cuaterniones duales (Yang y Freudenstein [1964]), iterativo (Uicker y col [1964]), y mtodos geomtricos (Lee y Ziegler [1984]). En esta seccin se presenta un mtodo geomtrico para la solucin del problema cinemtico inverso de manipuladores de seis elementos con articulaciones giratorias. Para un robot tipo Puma de seis ejes, existen cuatro posibles soluciones para las tres primeras articulaciones y para cada una de las cuatro soluciones hay dos soluciones posibles para las tres ltimas.

88

Simulacin Virtual de Robots Articulados

Clculo de la Cinemtica Inversa para las tres primeras articulaciones

LO primero que debemos calcular es el punto de la base del efector. ste se


calcula mediante la siguiente frmula:

donde: Pc = Punto que identifica la base de la mueca. V = Punto final de la cadena articulada Lm = Longitud del efector (mueca) a = direccin de acercamiento. El clculo de este punto es necesario para limitar inicialmente el clculo a las tres primeras articulaciones. Una vez obtengamos el valor de las tres primeras variables generalizadas, obtendremos el valor de las dos ltimas. Fijmonos en el siguiente diagrama:

Teniendo en cuenta que el radio del cilindro interior d2 lo suponemos cero, solo debemos fijarnos en el punto (px, py) y en el ngulo que forma con el sistema de coordenadas X0Y0. Se ha proyectado la imagen sobre el plano X0Y0 para realizar mejor el clculo. Como el segmento OA mide cero, el ngulo coincide con 1. Es evidente que:

89

Simulacin Virtual de Robots Articulados donde P es la longitud del segmento OB. Si despejamos P en la segunda ecuacin y sustituimos en la primera, obtenemos que:

Por tanto:

Pasemos a calcular el valor de la tercera variable generalizada. Para ello nos centraremos en la segunda y tercera articulacin. Si olvidamos la primera articulacin, el esquema resultante viene a ser algo como el siguiente:

Si llamamos N a la distancia entre el origen del sistema de coordenadas O1X1Y1 obtenemos, por ser la hipotenusa del tringulo rectngulo formado que:

Si aplicamos el teorema del tringulo:

90

Simulacin Virtual de Robots Articulados

Nos queda:

Sustituyendo el valor de N y despejando, finalmente nos queda:

Consideremos ahora el clculo del valor de la segunda articulacin.

Est claro que Q2 = - . Por tanto calcularemos cada argumento por separado y luego haremos la diferencia. Siguiendo el mismo razonamiento que para el clculo de Q1, sabemos que:

91

Simulacin Virtual de Robots Articulados

Por tanto:

Para calcular , sabemos que:

; A su vez:

; Por tanto:

Finalmente, si unimos los dos resultados obtenemos que:

92

Simulacin Virtual de Robots Articulados Por tanto, ya tenemos calculados los valores de las tres primeras variables generalizadas. Estos valores son independientes de las dos ltimas articulaciones, pues se han calculado a partir del punto base de la mueca. A continuacin se pasar a calcular el valor de las dos ltimas articulaciones basndonos en la direccin de acercamiento y cierre que queremos que tenga la mueca.

Clculo de las dos ltimas articulaciones


calculado previamente el valor de las tres primeras articulaciones, se puede calcular el valor de las dos ltimas de una manera relativamente sencilla. Simplemente debemos saber interpretar una matriz homognea compuesta, tal y como se explic en apartados anteriores. Sabemos que la matriz de cambio de sistemas de coordenadas global T, me permite expresar las coordenadas de un punto del ltimo sistema al sistema que sirve como base en el puma. Adems sabemos como se construye dicha matriz.

HABIENDO

Es decir, debemos conocer las coordenadas del punto en cuestin en funcin de los ejes de coordenadas de la base. Consideremos de nuevo el modelo planteado para el Puma.

Hemos de darnos cuenta de las siguientes caractersticas:


El origen de coordenadas del ltimo sistema coincide con el punto final de la estructura. El vector unitario que representa al eje Z del ltimo sistema en funcin del 93

Simulacin Virtual de Robots Articulados primer sistema coincide con la direccin de acercamiento, tal y como se defini en secciones anteriores.

El vector unitario que representa al eje X del ltimo sistema en funcin del primer sistema coincide con la direccin de cierre. Si se define el vector normal n como:

La matriz global T se puede definir como:

donde el vector s es la direccin de cierre deseada, a es la direccin de acercamiento, n es el vector normal a la direccin de acercamiento y cierre, y v es el punto final de la estructura. Adems sabemos que:

Los tres primeros factores podemos calcularlos pues hemos calculado los valores de 1, 2 y 3. Si llamamos R a la multiplicacin de estas tres matrices, nos queda que:

Adems, como podemos calcular los parmetros de Denavit-Hartenberg para las matrices de cambio de los dos ltimos sistemas de coordenadas, sabemos que:

94

Simulacin Virtual de Robots Articulados

; Si desglosamos la multiplicacin de las dos matrices de cambio parcial, nos queda que:

Si realizamos la multiplicacin de las matrices del lado derecho de la igualdad y recordamos la propiedad de que dos matrices son iguales si, y slo si, todos sus elementos son iguales, obtenemos que:

Calculando los respectivos arcosenos, obtenemos las soluciones deseadas.

Clculo del resto de soluciones


las secciones anteriores hemos planteado un sistema de solucin geomtrica de la cinemtica inversa relativamente sencillo, pero hemos supuesto que el Puma era un robot ideal, modelizndolo como una cadena articulada lineal donde un elemento se une con el siguiente en un nico punto.

EN

95

Simulacin Virtual de Robots Articulados

En realidad esto no es as, pues existen separaciones horizontales entre los distintos elementos que componen la cadena articulada. Por ejemplo, entre el cilindro vertical que gira como respuesta al cambio de la primera articulacin, y el primer brazo existe una distancia de separacin. Esta puede observarse en la siguiente figura como el parmetro d2. Dicha distancia se ha considerado cero en los clculos de la seccin anterior. Esta suposicin limita las soluciones de la cinemtica inversa a dos. Una de las soluciones se calcula aplicando las frmulas anteriores y la siguiente solucin puede calcularse cambiando de signo 3. O sea, se calcula 3, se cambia de signo y luego se recalcula 2. Esta segunda solucin viene a representar el modo de acercarnos al punto final: por arriba o por abajo.

Sin embargo existen otras dos soluciones. Para obtenerlas debemos sumar 180 al valor calculado para la primera articulacin para que el brazo se ponga al contrario. En el caso de que el valor calculado inicialmente para la primera articulacin sea positivo, se le restarn 180 a efectos de que el resultado final sea factible para el Puma real. Debemos adems de cambiar el valor de la segunda articulacin a efectos de colocar el brazo de manera que se llegue al mismo punto final. El nuevo valor de la segunda articulacin ser 180 menos el antiguo valor. Por ltimo debe cambiarse el signo de la tercera articulacin para que el punto final coincida con el de las dos primeras soluciones. Estos pasos se ven claramente al observar las figuras asociadas con las otras dos soluciones.

96

Simulacin Virtual de Robots Articulados

Por supuesto, se puede dar un razonamiento matemtico para el clculo las cuatro soluciones, pero resulta mucho ms complejo que observar estas soluciones geomtricamente. Bien es cierto que asociada a cada una de estas cuatro soluciones hay dos soluciones para las dos ltimas articulaciones, pero por motivos de sencillez solamente se ha implementado el clculo de una de ellas. Esto es razonable, pues nos basta una determinada configuracin de la mueca para llegar al punto final, por lo que la otra es redundante. El nico motivo que lleve a su clculo es el que las solucin aportada matemticamente no sea factible en el puma real por limitaciones fsicas en el giro de la mueca, pero este problema se descarta.

97

Simulacin Virtual de Robots Articulados

Errores Cometidos en los Clculos Matemticos


Errores de Precisin Errores de Redondeo y Clculos Recursivos Errores de Conversin

Errores de Precisin
medida que se van desarrollando los clculos matemticos se van produciendo y acumulando una serie de errores que pueden llevar a una mal interpretacin de los resultados obtenidos e incluso clculos completos errneos. El primero de los errores detectados es el error de precisin. Este error se debe a la utilizacin de variables de programacin para realizar los clculos y es un error inevitable. Al utilizar el ordenador como mquina de clculo, los valores intermedios se almacenan en variables que en la mayora de los casos son de tipo flotante. Este tipo de datos tiene un determinado tamao en memoria y una determinada precisin. El rango de valores que abarca un tipo flotante est entre 1.4E-45 y 3.4028235E38, y tiene un tamao en memoria de 32 bits. Los errores de precisin son muy poco perceptibles, y no influyen demasiado en los clculos, por lo que no se les presta mayor importancia. Lo que s cabe sealar es el importante error de precisin producido por cambios de tipo sin control, es decir, convertir un nmero decimal a entero (implcita o explcitamente) para realizar alguna operacin con l. Este tipo de acciones deben controlarse pues pueden llevar a errores muy graves. En toda la aplicacin se ha prestado especial atencin a este detalle pues en Java los cambios de tipo son implcitos, es decir, antes de realizar la operacin en cuestin se convierten los nmeros a los tipos adecuados.

Errores de Redondeo y Clculos Recursivos

LOS errores de redondeo se producen nicamente cuando se muestran los


resultados finales al usuario, es decir, cuando una vez calculados todos los resultados, se colocan en las tablas de la aplicacin. Se cuida que no se produzca ningn redondeo durante las operaciones intermedias. El redondeo utilizado es a tres decimales, por lo que el nmero 0.0001 se tomar como un 0, y el nmero 7.2346243 se tomar como 7.235. Este error tiene una tremenda importancia si lo que se pretende hacer son operaciones de Cinemtica Directa e Inversa de forma sucesiva. Por ejemplo, supongamos que realizamos los clculos asociados a la cinemtica directa para un conjunto de valores de las variables generalizadas. Esto nos devuelve un conjunto de valores asociados al punto final de la cadena articulada, la direccin de acercamiento y

98

Simulacin Virtual de Robots Articulados direccin de cierre; pero estos valores finales estn redondeados. Si utilizamos estos valores para el clculo de la cinemtica inversa, estamos usando los valores redondeados y por lo tanto cometiendo un error durante el clculo de la cinemtica inversa, por lo que los resultados finales no coincidirn de exactamente con los iniciales antes de aplicar la cinemtica directa, debido tanto a los errores de precisin como de redondeo. Un esquema indicativo de la acumulacin de errores debido al clculo recursivo de cinemtica directa e inversa, es el siguiente:

El procedimiento de Eleccin de Solucin permite elegir la solucin correcta entre el conjunto de soluciones que proporciona la cinemtica inversa, basndose nicamente en los valores de los ngulos de las articulaciones del robot. Este procedimiento no se ha implementado, sino que en su lugar se muestran las diferentes soluciones finales y el usuario elegir la que ms le convenga.

Errores de Conversin

LOS errores de conversin existen debido al cambio de unidades de medida.


Las unidades de medida de ngulos son radianes en todos los clculos matemticos, sin embargo, para el usuario final es mucho ms cmodo poder escoger y ver los ngulos en grados. Por este motivo, los resultados referentes a grados de articulaciones, como son los resultados de la cinemtica inversa, se deben de convertir a grados antes de plasmarlos en la tabla final. Debido a la acumulacin de errores de precisin, la conversin de radianes a grados puede dar como resultado un valor que difiere en unos pocos grados del valor esperado. Por ejemplo, una diferencia de 0.1 radianes entre un ngulo y otro equivale a 99

Simulacin Virtual de Robots Articulados 5.729 de diferencia. Esto no significa que los errores de precisin lleguen a ser de 0.1 radianes, pero si pueden ser lo suficientemente grandes como para variar el resultado final en uno o dos grados del resultado esperado. Esto se refleja en uno o dos grados de diferencia en los valores de los ngulos de las articulaciones del robot, pero estas variaciones tan pequeas no limitan la exactitud de los clculos. Los errores de conversin no son errores como tales ya que se deben a los errores de precisin, y pueden verse aumentados por los errores de redondeo si utilizamos los resultados de la cinemtica inversa (redondeados y convertidos a grados) para realizar clculos de la cinemtica directa.

100

Simulacin Virtual de Robots Articulados

Conclusiones

COMO apartado final de esta seccin haremos notar la importancia de los


errores cometidos tanto en los clculos como en las conversiones. Se han intentado minimizar en la medida de lo posible, pero no se ha podido evitar el que los clculos recursivos por parte del usuario arrastren consigo unos errores de precisin cada vez mayores. Incluso hay un cuarto tipo de error. Se trata de la diferencia entre los resultados matemticos y virtuales. Cuando se seleccionan los valores de las articulaciones mediante las barras mviles que presenta la interfaz (comentada en una seccin posterior) y se decide mover el robot a esa posicin, se muestra el valor del punto final de la estructura. Estos valores deben coincidir con el resultado de la cinemtica directa cuando se decide aplicarla, pero no lo hacen por los errores ya comentados y por la falta de precisin a la hora del modelado del robot virtual. Por este motivo se ha decidido incluir las especificaciones geomtricas del robot. El estudio completo acerca de la Cinemtica Directa e Inversa se encuentra en el libro "Robotica. Control, Deteccin, Visin e Inteligencia" de la editorial McGraw Hill. En este libro se detalla el clculo de la cinemtica inversa de todas las soluciones para un robot Puma de seis grados de libertad con rigurosidad matemtica. En las secciones restantes se tratar de explicar el funcionamiento de la interfaz programada y del mdulo de acceso remoto para finalizar el contenido de este documento.

101

Simulacin Virtual de Robots Articulados

Captulo 4: Mdulo de Simulacin (GUI)

102

Simulacin Virtual de Robots Articulados

Conocimientos Generales
Funcionalidad Caractersticas Generales Requerimientos y Recomendaciones

Funcionalidad

ESTE mdulo representa el corazn del proyecto, su producto estrella es una


replica virtual de un robot puma real. El usuario puede manipular este robot segn sus deseos utilizando una interfaz muy amigable que comentaremos ms adelante. Para que el simulador del robot est lo ms completo posible se ha aadido un objeto esfrico de color verde a la escena 3D de forma que el robot pueda cogerlo, desplazarlo y soltarlo. Para controlar el robot virtual el simulador utiliza un modelo matemtico idntico al que se utilizara para modelar un robot real. De esta manera conseguimos que el robot virtual se comporte tal y como lo hara el modelo real. El simulador adems permite calcular la cinemtica directa y la cinemtica inversa del robot. Podemos tambin obtener las configuraciones binarias que habra que enviar a cada una de las articulaciones del robot real para que este se comportara como el virtual. En definitiva, se ha caracterizado muy bien al PUMA virtual y adems podemos conocer en cualquier momento detalles sobre el robot como las coordenadas de los ejes de su estructura, los ngulos de sus articulaciones, la direccin de acercamiento de la pinza, la direccin de cierre, etc. El sistema no slo extrae informacin del modelo matemtico sino que tambin es capaz extraer informacin del propio modelo virtual. Esta informacin complementaria se consigue gracias a unos objetos esfricos invisibles de radio cero que nos permiten obtener las coordenadas virtuales de los ejes de la estructura y se utilizan para respaldar a los resultados matemticos. Todos estos conceptos le resultarn familiares porque el modelo matemtico en general se estudi en el captulo II. Sin embargo, conviene tenerlo presente cuando se aborden los sucesivos apartados de este captulo.

103

Simulacin Virtual de Robots Articulados

Modelo Matemtico del PUMA

Caractersticas Generales

NO vamos a entrar en detalle sobre como se ha realizado la programacin de


este mdulo de simulacin utilizando Java. Simplemente nos centraremos en ver como esta organizado de cara al usuario. El mdulo de simulacin virtual esta compuesto por un Applet Java y existe un enlace en la pgina WEB del proyecto que lo hace accesible a los usuarios. El Applet tiene un men superior que permite seleccionar el punto de vista sobre el robot. El interior del Applet est compuesto por dos pestaas, en la primera est lo que sera el simulador y en la segunda nos presenta una interfaz que permite la posibilidad de mover la esfera verde que antes comentbamos. La pestaa del simulador esta dividida en cuatro ventanas. La primera situada arriba a la izquierda, contiene un objeto de tipo Canvas 3D y en su interior el PUMA virtual. La segunda situada arriba a la derecha contiene dos pestaas, utilizando esas pestaas podemos realizar la entrada de datos para la cinemtica directa y tambin para la cinemtica inversa. La tercera ventana nos permite ver el estado del puma virtual, las coordenadas de la estructura, los ngulos de las articulaciones, configuraciones binarias, etc. Finalmente, la ultima ventana situada abajo a la derecha muestra una serie de botones que permiten realizar la simulacin y controlar el puma. Esta ltima ventana presenta tambin un TextArea donde podemos ver informacin muy variada que nos informa de lo que est haciendo el simulador, de las coordenadas virtuales de la estructura y permite conocer informacin adicional sobre las soluciones de la cinemtica inversa.

104

Simulacin Virtual de Robots Articulados

Vista del Mdulo de Simulacin Virtual (Luces apagadas)

Requerimientos y Recomendaciones

ESTE apartado surge como resultado de nuestra experiencia con Java 3D


despus de haber desarrollado este proyecto. En primer lugar nos gustara decir que a pesar de que el simulador de Java 3D y todos los mdulos del proyecto funcionan correctamente sobre los navegadores tpicos como Internet Explorer o Netscape, es preferible utilizar el programa appletviewer que nos proporciona Sun con el Java Develoment Kit para cargar directamente los Applets del proyecto. Las ventajas que se consiguen son; que podemos escalar los Applets y adems parece que el simulador va ms rpido y estable. En el apndice configuracin de los clientes se comenta como configurar correctamente un ordenador para poder seguir la totalidad del proyecto utilizando su navegador WEB sin problemas. Otro aspecto importante es, qu plug-in para Java 3D utilizar?. Nosotros hemos realizado en todas nuestras pruebas equipos con Windows 98, JDK1.2.2 y un plug-in Java 3D sobre libreras Open-GL. En general, esta configuracin va bien con un Pentium II 266 con 64 Megas de RAM o bien un AMD-K6 300 con 64 Megas. Para aquellos usuarios que utilicen DirectX existe tambin un plug-in pero en el momento de redactar este documento se encuentra todava en fase beta, a nosotros nos dio problemas con las luces.

105

Simulacin Virtual de Robots Articulados

Clculo de la Cinemtica Directa


Objetivo Control de la C. Directa Resultados Toricos Resultados Virtuales

Objetivo

UNA de las prestaciones que nos ofrece el mdulo de simulacin es que


permite calcular la cinemtica directa del PUMA. En el captulo III se estudi el modelo matemtico en detalle viendo en que consista la cinemtica directa del robot, etc. En este apartado no vamos a repetir el desarrollo terico, simplemente comentar algunos detalles para situarnos en el problema de la cinemtica directa. El robot puma tiene seis articulaciones de revolucin que permiten controlar en todo momento el estado de su estructura. Asignado diferentes ngulos a esas articulaciones se consigue que el robot realice movimientos. La cinemtica directa del PUMA permite conocer la posicin de la estructura del robot a partir de los ngulos que tienen sus articulaciones. Adems de las coordenadas de la estructura tambin es interesante conocer cual es la direccin con que la pinza del robot se acerca al punto destino y cual es la direccin con que se cierra la pinza. Esta informacin se requiere sobre todo para realizar movimientos precisos y delicados.

Control de la C. Directa

PARA que el usuario pueda variar los ngulos de las articulaciones de robot se
utiliza la interfaz de la figura.

Entrada de datos para la Cinemtica Directa

106

Simulacin Virtual de Robots Articulados La interfaz esta formada por una serie de barras de desplazamiento en horizontal que el usuario puede deslizar hasta elegir el nuevo valor. Cada barra de desplazamiento se corresponde con una articulacin. Por ejemplo la barra etiquetada como Q6 se corresponde con el grado de apertura de la pinza del robot. La unidad de medida que utilizamos para medir los ngulos en las articulaciones son grados. Si usted est interesado en conocer con que posicin de la articulacin se corresponde un nmero determinado de grados, puede ver la figura correspondiente al modelo matemtico. Para calcular la cinemtica directa slo hace falta que pulse el botn Calcular de la barra de botones. Este botn es sensible al contexto y tambin servir para calcular la cinemtica inversa como ya veremos en la siguiente seccin.

Barra de Botones del Simulador Quiz se pregunte por qu estn acotadas las barras de desplazamiento y slo permiten seleccionar un rango limitado de ngulos para cada articulacin, adems esos rangos no son iguales. La respuesta es sencilla, son restricciones que tiene el modelo real y que ha heredado nuestro robot virtual.

Resultados Tericos

COMO resultado de aplicar la cinemtica directa obtenemos la posicin de


cada uno de los puntos de la estructura del robot respecto al origen de coordenadas situado en el punto Oo. Adems se calcula tambin la direccin de cierre y de acercamiento de la pinza. El punto O5 respecto al origen de coordenadas se representa por (O5)o y se trata de un punto especial porque se corresponde con la posicin en medio de la pinza. En la figura correspondiente al modelo matemtico este punto se encuentra marcado por un circulo verde y el resto de puntos de la estructura por crculos rojos. La siguiente figura muestra la pestaa de Coordenadas del panel Virtual PUMA Status donde se encuentra la informacin que resulta de aplicar la cinemtica directa. El grado de precisin de estos resultados es de tres decimales.

Coordenadas de las estructura del robot PUMA

107

Simulacin Virtual de Robots Articulados

Resultados Virtuales

LA ventana de Resultados aparentemente slo informa de las operaciones que se van


realizando en el simulador como puede verse a continuacin.

Ventana de Resultados del Simulador Si estamos trabajando con la cinemtica directa y pulsamos el botn Accin el robot empieza a moverse hasta que cada una de sus articulaciones adquiere la nueva configuracin. A simple vista se puede comprobar como el comportamiento del robot virtual se corresponde con el modelo matemtico. Finalmente, en la ventana de resultados se imprimen los valores de los puntos de la estructura pero ahora no han sido calculados matemticamente sino que son el resultado de realizar mediciones directamente sobre el modelo de robot virtual.

108

Simulacin Virtual de Robots Articulados

Clculo de la Cinemtica Inversa


Objetivo Control C Inversa Resultados Tericos Resultados Virtuales y Soluciones Obtencin de las Configuraciones Binarias

Objetivo

LA cinemtica inversa permite obtener los ngulos que deberan tener las articulaciones del
robot para alcanzar con el efector final un objeto ubicado en una posicin determinada y con una direccin de acercamiento y cierre concreta. Despus de calcular la cinemtica directa el simulador de manera automtica introduce como datos de entrada para la cinemtica inversa la direccin de acercamiento, la de cierre y la posicin destino, aunque el usuario los puede cambiar si lo desea.

Control C.Inversa

LA siguiente figura muestra la pestaa que permite la entrada de datos para la cinemtica
inversa. Para acceder a la pestaa basta con pulsar sobre la pestaa etiquetada como C. Inversa. Cuando el usuario introduce los datos estos pasan por un proceso de validacin para ver si son correctos antes de introducirlos definitivamente en la tabla.

Interface de Usuario para la Cinemtica Inversa Hay que mencionar, que no se puede mover el puma estando en la pestaa de cinemtica inversa, es necesario volver a pulsar sobre la pestaa etiquetada como C. Directa para que se active la opcin que permite mover el puma. El puma siempre se mover siguiendo las directrices de la pestaa de introduccin de datos de la cinemtica directa. Una vez introducido los datos de partida de la cinemtica inversa slo hace falta pulsar el botn Calcular para que se inicie el proceso que 109

Simulacin Virtual de Robots Articulados calcula los ngulos de cada una de las articulaciones del PUMA.

Resultados Tericos

LOS resultados de aplicar la cinemtica inversa se pueden observar dentro del panel Virtual
PUMA Status en la pestaa etiquetada como Articulacin. Los resultados muestran el ngulo (en grados) que habra que introducir en cada articulacin para que el robot alcanzara el objetivo.

Una solucin para la Cinemtica Inversa del PUMA En el captulo III, vimos que puede haber ms de una solucin para alcanzar el punto final con una determinada direccin de acercamiento y cierre. Es decir, los resultados pueden no coincidir con la solucin que el usuario este pensando en ese momento, lo que si tiene que coincidir es que la direccin de cierre, de acercamiento y el punto final sean los que ha introducido el usuario. El siguiente apartado profundiza en el tema de las soluciones. El usuario puede observar en la columna ms a la derecha de la figura, la que est etiquetada como Byte, un valor entre 0 y 255 estos valores son los que utiliza el mdulo de acceso remoto.

Resultados Virtuales y Soluciones

LA ventana de resultados se utiliza para mostrar las operaciones que vamos realizando, pero
tambin para obtener informacin extra sobre las soluciones de la cinemtica inversa del PUMA. El tema de las soluciones del PUMA es un tema complicado. Slo hay que pensar que yo puedo conseguir la misma direccin de cierre moviendo la mueca (articulacin Q5) en un sentido y tambin en sentido contrario. Dicho esto, slo hay que generalizar para todas las articulaciones del PUMA y plantearse los problemas que pueden aparecer.

110

Simulacin Virtual de Robots Articulados

Soluciones para la Cinemtica Inversa del PUMA (sin considerar el Efector Final) La cinemtica inversa te devuelve una solucin pero realmente hay ms de una. El resto de soluciones las buscamos utilizando un algoritmo que hemos desarrollado. En nuestro algoritmo hemos despreciado las articulaciones Q4, Q5 y Q6, es decir las articulaciones del efector. Trabajando slo con la estructura podemos obtener 4 soluciones posibles. De esas 4 soluciones posibles habr soluciones que no sean alcanzables. Una solucin se dice que no es alcanzable si alguno de los ngulos que pertenecen en esa solucin no es posible alcanzarlo con la articulacin fsica correspondiente del robot. En definitiva, cuando usted utilice el simulador deber observar la ventana de resultados para ver las cuatro soluciones posibles y elegir de entre todas alguna que sea alcanzable. El simulador por defecto carga la primera de las soluciones alcanzables en la pestaa Articulacin que muestra el resultado de la cinemtica inversa.

Obtencin de las Configuraciones Binarias

LAS configuraciones binarias que se observan en la columna ms a la derecha de la pestaa


Articulacin del panel Virtual PUMA Status, son el resultado de un proceso matemtico que permite obtener la configuracin binaria que habra que mandarle a un determinado actuador del puma real para que se moviera un nmero de grados especfico (vase Articulacin). Este proceso que relaciona los grados de una articulacin concreta con su configuracin binaria equivalente se explica con todo lujo de detalles en el captulo V que trata sobre el mdulo de acceso remoto al PUMA real y que es el que utiliza estas configuraciones binarias.

111

Simulacin Virtual de Robots Articulados

Control del Simulador Virtual


Vistas de la Escena Navegando por la Escena 3D Control del Objeto Virtual Moviendo el Robot Virtual PUMA Luces

Vistas de la Escena

EL simulador esta preparado para permitir que el usuario pueda cambiar el punto de vista
del robot utilizando una opcin del men Vistas. Actualmente hay definidas cuatro vistas que son:

Men Vistas del Simulador 1. Vista Principal.- La cmara est situada en el punto (X,Y,Z) = (0, -50, 0) y orientada hacia el origen de coordenadas (0, 0, 0). 2. Vista Trasera.- El punto de vista est en (0, 50, 0) orientado hacia el origen de coordenadas. 3. Vista Frontal.- La cmara est ubicada en el punto (50, 0, 0) orientada hacia (0, 0, 0). 4. Vista Posterior.- En el punto (-50, 0, 0) mirando hacia el origen de coordenadas. La siguiente figura muestra la relacin de ejes en el simulador virtual para que el usuario pueda orientarse ms fcilmente.

112

Simulacin Virtual de Robots Articulados

Orientacin del PUMA

Navegando por la Escena 3D

ADEMS de las posibilidades de cambiar el punto de vista para observar mejor como se
desarrolla la accin en la escena, se ha implementado la posibilidad de que el usuario pueda navegar por la escena 3D. Esta caracterstica permite al usuario posicionar el punto del vista del observador donde quiera y con la orientacin que desee. Para conseguir estas vistas lo nico que debe hacer el usuario es situar primero el foco de la aplicacin en el Canvas 3D que contiene el simulador y luego utilizar una serie de teclas predefinidas para realizar los movimientos por el mundo virtual hasta la posicin que desee. De esta forma tan sencilla se pueden conseguir desde vistas areas hasta perspectivas desde el objeto o un zoom de la mueca. Por experiencia sabemos que es muy fcil perder la orientacin dentro de la escena virtual, sobre todo si se pierde de vista al robot PUMA, en estos casos recomendamos que utilice el men Vistas para recuperar la orientacin.

113

Simulacin Virtual de Robots Articulados

Combinaciones de teclas para navegar por el mundo

Control del Objeto Virtual

EL objeto virtual est representado por una esfera de color verde situada inicialmente dentro
de la escena 3D en la posicin (20, 20, 20). El robot puma esta preparado para poder coger el objeto si est dentro de su rea de trabajo, para ello dispone de unos detectores de colisin que le permiten detectar la esfera (vase captulo II). Las acciones que puede realizar el robot sobre el objeto son: cogerlo, moverlo y soltarlo. Hay que pensar que cuanto ms perfecto sea el modelo, ms recargada estar la escena y consecuentemente ms lento ir el simulador. Nosotros pensamos que se ha conseguido un buen equilibrio en la relacin calidad y velocidad. Para conocer la posicin actual del objeto, el usuario puede pulsar en la pestaa catalogada como Opciones. Dentro encontrar una interfaz que le permite adems de conocer la posicin actual del objeto en la escena, cambiar esa posicin del objeto en el mundo por una nueva. Se deja como responsabilidad del usuario donde pone el objeto dentro de la escena.

Intefaz para controlar el Objeto Virtual

Moviendo el Robot Virtual PUMA

114

Simulacin Virtual de Robots Articulados

YA se ha comentado como se puede mover el robot PUMA en apartados anteriores. Para


mover el robot debemos hacerlo desde la interfaz de la cinemtica directa que se encuentra en la pestaa etiquetada como C. Directa. Utilizando las barras de desplazamiento fijamos el nmero de grados que deseamos enviar a cada una de las articulaciones de robot. Finalmente, pulsando sobre el botn Accin se consigue que el robot obedezca las especificaciones del usuario.

Entrada de datos para la Cinemtica Directa

Luces

SI usted tiene un ordenador algo anticuado y el simulador le va muy lento, quiz debera
deshabilitar las luces. Con esto conseguir un poco ms de velocidad pero perder realismo. Inicialmente el simulador del PUMA tena texturas que se haban puesto con idea de simular los tornillos, cables y remaches que tena el modelo real. Finalmente, a la vista de los resultados en lo que respecta a velocidad se eliminaron las texturas. El uso de texturas requera un trato especial de los objetos y las colisiones que relentizaba mucho los movimientos del puma virtual. Para activar o desactivar las luces pulse el botn Luces.

Barra de Botones del Simulador

115

Simulacin Virtual de Robots Articulados

Conclusiones

LA interfaz del mdulo de simulacin ha sido construida de forma escalable,


esta caracterstica le permite ajustarse con cualquier modo de resolucin de la pantalla. Esta cualidad se pierde si se ejecuta el simulador con otro programa que no sea el Appletviewer. El usuario puede modificar el fichero Html que carga el Applet del simulador para cambiar la resolucin de inicial de este Applet y conseguir ajustar mejor el simulador a su resolucin de pantalla (no modifique el fichero en nuestro servidor WEB). Se ha optado por crear un grupo de pestaas en el simulador con idea disponer de hueco para poner ms simuladores de robots virtuales, aunque por ahora solo se tiene el robot PUMA en la primera ventana y la interfaz para controlar el objeto virtual en la segunda. A la vista de la gran cantidad de datos que se utilizan para controlar el robot hemos optado por utilizar tablas para la introduccin y visualizacin de datos. Este sistema nos ha permitido mejorar la presentacin del Applet y maximizar el rea til de trabajo en el simulador. En este mdulo se aprecia la potencia de la clase Swing que nos ha permitido desarrollar la interfaz grfica de usuario. Adems, podemos ejecutar nuestro simulador en cualquier plataforma para la que exista una versin del Java Run-Time de Sun y el plug-in para Java 3D. Independientemente de la plataforma en que estemos ejecutando este simulador, la aplicacin se adaptara al estilo de ventanas tpico de la plataforma utilizada.

116

Simulacin Virtual de Robots Articulados

Captulo 5: Acceso Remoto y Monitorizacin

117

Simulacin Virtual de Robots Articulados

Funcionamiento del PUMA real


Conceptos Generales: Actuadores y Sensores del robot PUMA Proceso de calibracin

ESTE captulo como el propio nombre indica, trata sobre el mdulo que facilita
que un usuario desde cualquier lugar del mundo pueda acceder remotamente a un puma real que actualmente se encuentra ubicado en el Laboratorio de Computadoras y Control de la Universidad de La Laguna. Antes de explicar como se realiza el acceso remoto desde Internet al robot, vamos comentar como funciona el robot puma.

Conceptos Generales: Actuadores y Sensores del robot PUMA

EN el captulo tres se realiz una descripcin detallada de la dinmica del robot


PUMA. Comentamos que la estructura del robot PUMA tena 6 grados de libertad, que se correspondan con cada una de las articulaciones del robot. El puma requiere tres actuadores para gobernar la estructura y tres para controlar el efector final (la pinza). Internamente estos actuadores son los que van a permitir que la estructura realice movimientos. Desde el punto de vista conceptual el usuario est interesado en mover la estructura del puma fijando los ngulos para cada una de las articulaciones del robot. Para realizar esta tarea se necesitar en cada una de las articulaciones algn tipo dispositivo que a partir de un ngulo de referencia que establece el usuario, y sabiendo el ngulo actual en que se encuentra la articulacin, consiga que la articulacin se posicione en el nuevo ngulo. En realidad la cosa es un poco diferente, los actuadores estn formados por motores de corriente continua y son capaces de recibir como magnitud de entrada un voltaje y producir un giro a la salida. No se puede trabajar directamente con el ngulo sino habr que procesar primero esa informacin para convertir ese ngulo en el voltaje correspondiente.

Lazo cerrado, controla la posicin del eje del motor El puma real est preparado para que sus actuadores reciban configuraciones binarias y las transformen en sus respectivos giros. Para gobernar el actuador se utiliza un Conversor Digital/Analgico, de forma que el usuario enva una configuracin binaria al Conversor D/A y obtiene el voltaje de referencia que necesita el motor para posicionar su eje de giro en un determinado ngulo. Nuestro mdulo de acceso remoto trabaja directamente con configuraciones binarias y es capaz de enviar a cada una de las

118

Simulacin Virtual de Robots Articulados articulaciones del PUMA una configuracin binaria utilizando un dispositivo conocido como PPI.

Esquema de funcionamiento de los actuadores del PUMA La siguiente figura muestra seis esferas rojas en la estructura del puma, cada una de ellas se corresponde con la ubicacin de un actuador y tambin un sensor. Puede que en el PUMA real las ubicaciones de los sensores y actuadores no sean como en la figura, esto se debe a que es frecuente jugar con la posicin de los motores dentro del robot para atenuar problemas de inercia en la estructura.

Ubicacin terica de los Sensores y Actuadores en el robot PUMA Adems de los actuadores, el robot puma dispone de una serie de sensores internos que nos van a permitir leer el estado de las articulaciones. De esta forma el usuario puede conocer las configuraciones binarias que tienen en cada momento cualquiera de las articulaciones del robot. Los sensores internos del Puma leen un ngulo de giro de una determinada articulacin y obtienen un voltaje de salida correspondiente. Posteriormente un Conversor A/D transforma el nivel de voltaje en su configuracin binaria correspondiente. No vamos a entrar en detalle de cmo son los motores y los sensores en la realidad. Si el usuario esta interesado en el tema puede recurrir a la bibliografa.

119

Simulacin Virtual de Robots Articulados

Esquema de funcionamiento de los sensores del PUMA

Proceso de calibracin

NO existe una correspondencia en trminos absolutos entre las configuraciones


binarias y los ngulos en las articulaciones. Esta correspondencia va a depender del criterio de eleccin de los ejes de las articulaciones y exige que se realice un proceso de calibracin en el puma real para obtener esta correspondencia. Lo primero que se hace para obtener las expresiones que relacionan el ngulo en cada articulacin con su correspondiente configuracin binaria es calibrar el PUMA. Esto se hace enviando a cada una de las articulaciones del PUMA real configuraciones binarias, siempre buscando obtener posiciones de la estructura del PUMA en la que se conozcan los ngulos de la estructura. Despus de haberse realizado el proceso de calibracin se obtienen los siguientes resultados.

Observaciones realizadas en el PUMA real. La expresin que relaciona el ngulo con su correspondiente configuracin binaria tiene la misma expresin para las tres primeras articulaciones, lo nico que cambia es el valor de los coeficientes ak y bk en la expresin. Los coeficientes de esta expresin para las tres primeras articulaciones Q1, Q2 y Q3 puede obtenerse conociendo dos configuraciones binarias y sus ngulos correspondientes. A partir de estos datos podemos plantear un sistema de dos ecuaciones y dos incgnitas. Resolviendo el sistema obtenemos los coeficientes necesarios para completar nuestra expresin. Estas expresiones estn implementadas en el mdulo de simulacin del puma virtual de forma que podemos calcular las configuraciones binarias correspondientes a cualquier posicin de la estructura del puma. Estas configuraciones binarias se pueden representar perfectamente en un byte por ser valores acotados entre 0 y 255.

120

Simulacin Virtual de Robots Articulados

Relacin de correspondencia para Q1, Q2 y Q3. Las articulaciones Q4 y Q5 del puma no son independientes entre s, por esta razn las expresiones para obtener Q4 y Q5 difieren de las de Q1, Q2 y Q3. Se requiere mayor cantidad de observaciones para poder obtener las expresiones.

Observaciones realizadas en el Puma real para Q4 y Q5. El proceso para obtener las expresiones de correspondencia es muy similar al anterior

121

Simulacin Virtual de Robots Articulados

Relacin de correspondencia para Q4 y Q5. El mdulo de acceso remoto trabaja directamente con configuraciones binarias y es en el mdulo de simulacin donde se realiza la conversin de grados a configuraciones binarias.

122

Simulacin Virtual de Robots Articulados

Mdulo de Acceso Remoto (Fase I)


Acceso Local al Puma Creacin de una clase para los mtodos nativos Uso de Javah Implementacin de los Mtodos Nativos

mdulo de acceso remoto permite leer de los sensores del PUMA las configuraciones binarias correspondientes a los ngulos que poseen sus articulaciones, y adems, mandar nuevas configuraciones a los actuadores del PUMA. El mdulo de acceso remoto est compuesto por un Applet Java que se descargan los clientes del servidor WEB y utiliza una serie de funciones remotas que se ejecutan en el servidor RMI facilitando el control del PUMA. Estas funciones remotas son capaces de manipular el PUMA por medio de una PPI. En nuestro montaje la mquina que hace de Servidor WEB es la misma que hace de Servidor RMI y tiene una PIO-12 (Parallel Digital Interface Board) conectada para facilitar la comunicacin con el PUMA. Comentar, que tambin existe un circuito decodificador que no pertenece a este proyecto pero es el encargado de realizar la interface entre la PPI y el robot Puma. La siguiente figura muestra el esquema general del montaje.

EL

123

Simulacin Virtual de Robots Articulados Esquema fsico del montaje

Acceso Local al Puma

A partir de ahora nos centraremos en ver como accede el propio servidor remoto
localmente a la PPI para gobernar el PUMA y dejaremos para ms adelante el estudio de como acceden los clientes al servidor. El equipo servidor utiliza una PPI para comunicarse con el robot, es decir, si somos capaces de programar la PPI desde el servidor tendremos resuelto el acceso local al Puma. Slo hay un inconveniente, Java no tiene punteros y para poder trabajar con la PPI se necesita acceder a ciertas direcciones de memoria (concretamente la 300). La solucin que ofrece Java para este tipo de situaciones es utilizar C/C++ embebido en Java. Al usar C con Java se consigue resolver el problema del acceso a puertos en memoria, pero estamos introduciendo dependencia de la plataforma en la que estamos trabajando. Esto se debe a que parte de la aplicacin estar implementada en C y deber ser compilada para esa plataforma concreta. Por comodidad, ha elegido Windows 98 como plataforma para nuestro servidor. La plataforma Java 2, incorpora la interfaz de programacin Java Native Interface (JNI), para permitir que se puedan escribir programas en otros lenguajes diferentes a Java y mantener la portabilidad entre todas las plataformas. Adems, JNI permite que el cdigo Java que se ejecute en una Mquina Virtual Java pueda mezclarse con aplicaciones y libreras escritas en otros lenguajes, como C, C++ y ensamblador. Adems, la interfaz de programacin Invocation API permite que se puedan llamar a cdigo de la Mquina Virtual Java desde aplicaciones nativas. El objetivo de utilizar JNI para escribir mtodos nativos es el de permitir que los programadores puedan manejar aquellas situaciones en las que una aplicacin no puede ser escrita enteramente en Java, como la que nos ocupa. La programacin a travs del entorno que proporciona JNI para implementar mtodos nativos involucra varias operaciones, y proporciona a estos mtodos nativos una gran flexibilidad, de forma que un mtodo nativo puede utilizar los objetos Java del mismo modo que el propio Java los usa y viceversa. Para acceder a un mtodo nativo desde un programa de Java, debemos crear una clase para el mtodo nativo e invocar a este ltimo por medio de la sintaxis normal de invocacin de mtodos de Java. Los mtodos nativos se crean siguiendo los siguientes pasos: 1. Primero creamos una clase Java para los mtodos nativos e incluimos el cdigo para cargar la biblioteca compartida del mtodo nativo. 2. Utilizamos el programa javah incluido en el JDK para crear un archivo de encabezado de lenguaje C para los mtodos nativos. 3. Implementamos los mtodos nativos como funciones de C. 4. Compilamos y vinculamos el cdigo C para crear una biblioteca compartida.

Creacin de una clase para los mtodos nativos

SE ha creado la clase Java Native, esta clase incluye el cdigo para cargar la biblioteca
124

Simulacin Virtual de Robots Articulados compartida que contendr la implementacin de dos funciones nativas que nos permitirn interaccionar con el PUMA. En este captulo, hemos decidido mostrar un poco de cdigo fuente, pero slo el necesario para que el lector pueda seguir mejor la explicacin de esta seccin. Este es el cdigo que carga la biblioteca PPIAccess.dll que implementa el acceso local al PUMA.

Interfaz Native: Carga de la librera PPIAccess.dll La interfaz Native contiene tambin las declaraciones de las funciones escribir y leer, utilizadas para comunicarnos localmente con el PUMA a travs de la PIO-12 (Parallel Digital Interface Board). El funcionamiento de las dos funciones es muy similar, lo que hacen es enviar o leer una configuracin binaria de una determinada articulacin del robot PUMA. La implementacin de las funciones se encuentra en la librera PPIAccess.dll. Para conseguir la implementacin de estas dos funciones hay que conocer a fondo como trabajar con la PPI. La PPI es un recurso al que se puede acceder utilizando la direccin de memoria 300. Enviando una serie de configuraciones especiales a esa direccin de memoria podemos programar la PPI para realizar lecturas o escrituras en sus puertos I/O. La PPI se encuentra conectada al robot PUMA mediante un circuito que no forma parte de este proyecto y en el que no entraremos en detalle. De esta forma es posible mover el robot PUMA y leer la posicin de sus articulaciones utilizando la PPI. A continuacin se muestran las declaraciones de funciones nativas que contiene la clase Native, la implementacin de las funciones la veremos ms adelante. El lector no debe abrumarse por los comentarios de las funciones, han sido puestos a propsito para el generador de documentos Javadoc. En el apndice de este proyecto podr ver la documentacin sobre el proyecto generada por el programa Javadoc.

Interfaz Native: Funciones leer y escribir

Uso de Javah

UTILIZANDO la clase Native y el programa Javah se crear un fichero llamado


examples_interfazRMI_Native.h que contendr los encabezados en lenguaje C para cada una de 125

Simulacin Virtual de Robots Articulados las funciones nativas descritas. Para obtener ms informacin sobre Javah puede invocar al compilador con la opcin help. La nica opcin que vamos a necesitar es jni, la cual crea un archivo de encabezado de estilo JNI. Javah -jni Native Este fichero hace un include de un fichero llamado jni.h que define los tipos que se usan en examples_interfazRMI_Native.h. Examinando dicho fichero encontramos los prototipos en C que nos ha creado javah.

Native.h: Prototipos de los Mtodos Nativos (leer y escribir) Estos mtodos son los que vamos a tener que implementar en la DLL en C. Los parmetros JNIEnv * y jobject se pasan a todos los mtodos nativos y, por lo general, se pueden ignorar. El parmetro JNIEnv * es un sealador al entorno en el que se invoca el mtodo. El parmetro jobject es una referencia el objeto o clase en los que se define el mtodo (En este caso Native). Los parmetros jint son los que vamos a pasar a las funciones y especifican parmetros de tipo int. JNIEXPORT y JNICALL rodean a los valores de retorno de los mtodos que son ambos de tipo jint. JNIEXPORT y JNICALL se usan para definir la secuencia de llamada a la funcin y se definen en el archivo jni_md.h, que se encuentra ubicado en el directorio \jdk1.2.2\include\win32. El fichero jni.h est en el directorio \jdk1.2.2\include.

Implementacin de los Mtodos Nativos

PARA implementar estos mtodos debemos crear un archivo de lenguaje C que


contenga la implementacin de la funcin Java_examples_interfazRMI_Native_escribir y tambin la funcin Java_examples_interfazRMI_Native_leer. Adems, deberemos incluir los ficheros examples_interfazRMI_Native.h y jni.h. Veamos el cdigo en C ms importante de la libreria que implementa las funciones nativas.

126

Simulacin Virtual de Robots Articulados

PPIAccess.dll: Constantes e Includes Para crear la librera hemos utilizado Microsoft Visual C++ 5.0 y el proceso no tiene ninguna dificultad, simplemente el detalle de incluir los directorios jdk1.2.2\include y jdk1.2.2\include\win32 en el PATH del compilador. Si utiliza un compilador diferente para construir la DLL tendr que comprobar su documentacin para ver como construir la misma. Una vez creada la librera utilizando la opcin del men habilitada a tal efecto, tenemos que ponerla en un lugar accesible por el sistema para que nuestros programas puedan localizarla. Para utilizar la DLL en nuestros programas java, slo hace falta crear un objeto de tipo Native que utilice los mtodos nativos.

127

Simulacin Virtual de Robots Articulados

PPIAccess.dll: Funciones que manipulan la PPI en C La PIO-12 es un dispositivo que permite comunicarnos con perifricos u otros dispositivos a travs de sus puertos I/O. La PPI utiliza cuatro direcciones I/O que son las siguientes:

Direccionamiento PPI La direccin Base se selecciona mediante jumpers en la placa, en nuestro caso hemos seleccionado la 300. Los valores de W igual a 224 y R igual a 16, vienen dados por exigencias de ese circuito externo que hemos mencionado que existe entre el Puma y la PPI. La funcin escribir recibe como parmetros, primero el actuador a donde se desea enviar la configuracin y segundo la configuracin binaria. Para enviar la configuracin binaria al puma primero inicializamos la PPI, esto se realiza enviando la configuracin 128 a la direccin de control. La configuracin 128 indica que se quiere utilizar la PPI en modo 0, modo bsico de entrada/salida en el que todos los puertos son de entrada/salida. Seguidamente se pone en Pa la configuracin del eje sobre el que deseamos escribir y el Pb la configuracin que se desea enviar. Los datos

128

Simulacin Virtual de Robots Articulados primero pasan por el circuito que su vez se encarga de mandrselos al Puma. Para realizar la lectura el procedimiento es similar, inicializamos la PPI, configuramos el puerto Pb de lectura y leemos la configuracin del eje solicitado. Si se observa el cdigo vemos que se hacen ms cosas, estas operaciones son necesarias para que configurar el circuito externo, no entraremos en detalle porque esta parte no pertenece al proyecto. La funcin myDelay viene a funcionar exactamente igual que la delay del C, nos hemos visto forzados a implementarla al ver que el Visual C++ no tenamos la funcin delay. Una observacin importante es que los prototipos Java de la DLL trabajan con parmetros enteros y las funciones locales trabajan con bytes. Esto se debe a que en C al utilizar el tipo unsigned char tenemos un byte sin signo (0...255) y en Java el tipo byte es con signo (-127...128). Por esta razn, se decidi trabajar con enteros cuando se utiliza cdigo Java y realizar en la DLL TypeCast de enteros a bytes y viceversa (Lgicamente se controla que los TypeCast sean posibles).

PPIAccess.dll: Implementacin Funciones Nativas en C

129

Simulacin Virtual de Robots Articulados

Mdulo de Acceso Remoto (Fase II)


Acceso Remoto al Puma Crear la Interfaz Remota Implementar la Interfaz Remota Fragmentos Adaptadores y Esqueletos Ficheros del Host Cliente Iniciar el Registro Remoto Crear y registrar el Objeto Remoto Implementacin del Applet Cliente

LAS aplicaciones distribuidas son aquellas que se ejecutan por sistemas host
mltiples. Los objetos que se estn ejecutando en un host invocan a los mtodos de los objetos de otros hosts para ayudarles a realizar su procesamiento. Estos mtodos se ejecutan en hosts remotos, de ah el nombre invocacin remota de mtodos. Los objetos invocados remotamente realizan clculos y pueden devolver valores que sean utilizados por los objetos locales. En el apartado anterior se estudio la clase Native y como sus mtodos que nos permiten controlar localmente al robot Puma. Para poder controlar remotamente al puma slo necesitamos buscar alguna manera de hacer que esos mtodos nativos puedan ser utilizados de forma remota. Para hacer esto habr que implementar un objeto remoto capaz de manipular el puma utilizando esos mtodos nativos y devuelver los resultados a un objeto local utilizado en el mdulo de acceso remoto. El API RMI proporciona un conjunto de paquetes intuitivos y fciles de usar que hacen del desarrollo de las aplicaciones distribuidas una extensin natural de la programacin del hosts nicos. Adems RMI es mucho ms fcil de usar que otras estructuras de programacin de aplicaciones distribuidas actuales, entre las que se incluye la Arquitectura de Intermediacin de Solicitud de Objetos Comunes (CORBA) y el Modelo de Objeto Componente Distribuido (DCOM).

Acceso Remoto al Puma

EL enfoque RMI de Java utiliza una estructura cliente/servidor. Un objeto local


que invoca un mtodo del objeto remoto recibe el nombre de objeto cliente. Un objeto remoto cuyos mtodos se invocan por un objeto local recibe el nombre de objeto servidor. En el modelo de objeto distribuido de Java usa una interfaz remota que implementa el objeto remoto y las clases pertenecientes al fragmento adaptador y al esqueleto, de forma muy parecida a como lo hace CORBA. El uso de interfaces remotas permite que los objetos servidor puedan diferenciar entre sus interfaces locales y remotas. Adems los objetos servidor pueden presentar diferentes modos de acceso remoto. Por ltimo, se puede compilar los objetos cliente por medio de la interfaz remota, eliminando la necesidad de que los archivos de clases del servidor estn

130

Simulacin Virtual de Robots Articulados presentes localmente durante el proceso de compilacin. La interfaz cliente invoca a los mtodos del objeto fragmento adaptador local. El fragmento adaptador local comunica estas invocaciones de mtodos al esqueleto remoto mientras que este ltimo invoca a los mtodos del objeto servidor. El objeto servidor devuelve un valor al objeto esqueleto. El objeto esqueleto devuelve el valor al objeto fragmento adaptador, mientras que este ltimo devuelve el valor al cliente. Las clases de fragmento adaptador actan como proxies locales de objetos remotos. Las clases de esqueleto actan como proxies remotos. Ambas clases implementan la interfaz remota del objeto servidor. El compilador rmic es una herramienta estndar del JDK, se utiliza para generar las clases del fragmento adaptador y esqueleto con ayuda del objeto servidor. El objeto cliente y el fragmento adaptador se comunican por medio de las invocaciones normales de mtodos de Java, al igual que lo hacen el esqueleto y el objeto servidor. El fragmento adaptador y el esqueleto se comunican a travs de una capa de referencia remota.

Modelo tres capas de la RMI de Java

131

Simulacin Virtual de Robots Articulados Esta capa de referencia remota admite la comunicacin entre el fragmento adaptador y el esqueleto. Tambin puede ser utilizada para activar los objetos servidor cuando se invoquen remotamente. Un proceso separado, al que se llama Demonio de Sistema de Activacin de la RMI de Java, da soporte a la activacin de objetos remotos. Este proceso se ejecuta por medio del programa rmid del JDK en el sistema remoto. En esta vista ampliada del modelo, el objeto cliente invoca a los mtodos del fragmento adaptador local del objeto servidor. El fragmento adaptador local utiliza la capa de referencia remota para comunicarse con el esqueleto del servidor. La capa de referencia remota utiliza la capa de transporte RMI para establecer una conexin entre los espacios de direcciones locales y remotos y para obtener una referencia del objeto esqueleto. La capa de transporte configura y administra las conexiones que se dan entre los espacios destinados a direcciones de los hosts remoto y local, controla los objetos a los que se puede acceder remotamente y determina cundo las conexiones estn en comps de espera y se vuelven inoperativas. La capa de transporte utiliza por defecto TCP para comunicarse entre los hosts local y remoto. No obstante, se pueden usar tambin otros protocolos de capa de transporte, como SSL y UDP.

Registro de Objetos Remotos Para poder acceder remotamente a un objeto servidor; ste debe registrarse a s mismo con el registro remoto. Esto lo hace asociando su instancia de objeto a un nombre. El registro remoto es un proceso que se ejecuta en el host del servidor y se crea ejecutando el programa rmiregistry, otra herramienta del JDK. El registro remoto mantiene una base de datos de objetos servidor y los nombres en virtud de los cuales se puede hacer referencia a esos objetos. Cuando un cliente crea una instancia de la interfaz de un objeto servidor (es decir; su fragmento adaptador local), la capa de transporte del host local se comunica con la capa de transporte del host remoto para determinar si el objeto al que se ha hecho referencia existe y para ver el tipo de interfaz que implementa el objeto al que se ha hecho referencia. La capa de transporte del lado del servidor utiliza el registro remoto para acceder a esta informacin. Ahora que conocemos un poco como funciona RMI, vamos a describir el proceso realizado para implementar la invocacin remota de los mtodos que manipulan el puma. Este proceso pasa por:

132

Simulacin Virtual de Robots Articulados 1. Crear una interfaz remota para poder referenciar los objetos remotos. La interfaz debe ser public y ampliar la interfaz Remote. 2. Crear una clase que implemente la interfaz remota. 3. Crear las clases del fragmento adaptador y esqueleto. 4. Ficheros del Host Cliente 5. Iniciar el registro remoto 6. Crear y registrar el objeto remoto

7. Implementacin del cliente RMI

Crear la Interfaz Remota

EL cdigo de esta interfaz es muy sencillo, lo nico que tiene de especial es la


inclusin de los paquetes java.rmi.Remote y java.rmi.RemoteException, adems de ampliar la interfaz Remote.

InterfazRMI: Interfaz Remota Los mtodos escribirPPI y leerPPI funcionan exactamente igual que los mtodos nativos que ya comentamos. El fichero anterior slo contiene las interfaces de las funciones remotas.

Implementacin de la Interfaz Remota

LAS funciones que se invocan remotamente se ejecutan en el servidor y


devuelven los resultados al cliente. La implementacin de las funciones remotas contiene una llamada a las funciones nativas de la DLL que son las encargadas de acceder localmente al puma como se vio en el apartado anterior. La clase con la implementacin debe poseer un constructor que cree e inicialice el objeto remoto adems de la implementacin los mtodos declarados en la interfaz remota. La clase se extiende de la interfaz UnicastRemoteObject. El mtodo main () deber usar el mtodo setSecurityManager () de la clase System para establecer un objeto que vaya a ser utilizado como administrador de seguridad del objeto remoto. Este mtodo crea la instancia de la clase InterfazRMI e invoca al mtodo rebind () de la clase Naming para 133

Simulacin Virtual de Robots Articulados registrar el nuevo objeto en el registro remoto.

InterfazRMIImpl: Implementacin de la Interfaz Remota El esquema del funcionamiento del programa.

134

Simulacin Virtual de Robots Articulados

Esquema de conceptual del acceso remoto al PUMA

Fragmentos Adaptadores y Esqueletos

UNA vez se ha creado la clase que implementa la interfaz remota utilizamos el


compilador rmic para crear sus clases pertenecientes a fragmentos adaptadores y a esqueletos. Despus de ejecutar el compilador se obtiene los ficheros InterfazRMI_Stub.class y InterfazRMI_Skel.class.

Ficheros del Host Cliente

ESTE apartado esta puesto a conciencia. Cuando se usa applets y un servidor


135

Simulacin Virtual de Robots Articulados Web podemos distribuir automticamente los archivos que necesita el cliente y no es necesario copiar ningn fichero en l. Sin embargo, tambin se puede utilizar mtodos remotos sin applets o servidores Web, en estos casos el cliente necesita tener localmente la clase del servidor y el fichero Stub.

Iniciar el Registro Remoto

PARA iniciar el servidor de registro se teclea:


start rmiregistry Este programa escucha en el puerto predeterminado 1099 aquellas solicitudes entrantes que quieran acceder a los objetos previstos de nombres. Estos objetos deben registrarse a s mismos con la ayuda del programa de registro remoto, para que estn a disposicin de los solicitantes. El efecto visible en windows 9x de ejecutar el servidor de registro es que se crea una nueva ventana DOS y ejecuta el programa de registro remoto como tarea de fondo.

Crear y registrar el Objeto Remoto

UNA vez tenemos terminado el servidor remoto, slo hay que ejecutar el
programa InterfazRMIImpl con el fin de crear un objeto que se registre a s mismo con la ayuda del registro remoto. Ahora slo falta que el cliente acceda al servidor Web y se descargue el applet que ser el que acceda a los mtodos remotos desde la mquina del cliente.

Implementacin del applet cliente RMI

LA siguiente figura muestra la apariencia del applet que permite realizar el


acceso remoto. Esta formado por una tabla en la que podemos observar tres columnas. La primera columna hace referencia a la articulacines disponibles. La segunda columna hace referencia a los ltimos valores que se han leido del robot puma para cada articulacin. Existe un botn que se llama Leer y cuando un usuario lo presiona internamente el applet llama al mtodo remoto leerPPI y actualiza los valores de la tabla para cada articulacin. La tercera y ltima columna sirve para que el usuario introduzca las configuraciones binarias que desea enviar a cada una de las articulaciones del robot puma. Esta columna es la nica que se puede editar por el usuario y slo acepta valores entre 0 y 255. Para finalizar existe un botn llamado Enviar que se encarga de enviar las configuraciones binarias a cada articulacin utilizando el mtodo remoto escribirPPI.

136

Simulacin Virtual de Robots Articulados

Interfaz de Usuario del Mdulo de Acceso Remoto al PUMA No vamos a comentar como se construye la interfaz del applet pero si vamos a comentar la parte de cdigo ms importante del applet que es cuando se invocan los mtodos remotos. Lo primero que hace el applet es conectarse con el servidor, el mtodo getHost nos permite obtener el nmero IP del servidor web de donde nos bajamos el applet. Cuando se ejecutaba el servidor rmi, este se registraba con el nombre InterfazServer. Este nombre nos sirve para que nuestro applet de acceso remoto encuentre al objeto servidor. Despus de ejecutarse este cdigo tendremos un objeto llamado obj capaz de acceder a los mtodos remotos.

Inicializacin del acceso remoto en el Cliente El acceso a cada articulacin se realiza llamando al mtodo escribirPPI con lo parmetros adecuados. EL siguiente ejemplo muestra como enviar una configuracin binaria a la articulacin Q1 del robot puma.

Acceso al actuador situado en Q1 Para leer de las articulaciones el proceso es similar, utilizamos el mtodo remoto adecuado exactamente igual que se hubiera hecho con un mtodo local.

137

Simulacin Virtual de Robots Articulados

Lectura en el sensor correspondiente a Q1

138

Simulacin Virtual de Robots Articulados

Mdulo de Monitorizacin
Requerimientos en el Servidor Visualizacin en los Clientes

Requerimientos en el Servidor

PARA realizar la monitorizacin del puma real se ha utilizado en la parte del


servidor un programa shareware que se llama WebCam32. Este programa permite capturar imgenes utilizando una cmara de video conectada a una tarjeta capturadora BT878. La tarjeta BT878 se ha instalado en la misma mquina que contienen la PPI y hace de servidor WEB y RMI para el mdulo de acceso remoto. Esta cofiguracin permite que las imgenes que captura el programa WebCam32 se almacenen en un directorio pblico del servidor Web. Una vez realizada esta tarea ya slo resta implementar un applet capaz de recoger esas imgenes que estn en el disco duro del servidor y mostrarlas en el browser del cliente.

139

Simulacin Virtual de Robots Articulados

Esquema del Montaje

Visualizacin en los Clientes

PARA realizar la tarea de visualizacin hemos implementado un applet Java.


Este applet utiliza Threads para intentar aliviar la carga del browser del cliente y poder controlar la frecuencia con que se actualizan las imgenes del applet. El applet tiene varios mtodos, el mtodo init () que es el que inicializa el thread que carga la imagen, la ubicacin de la imagen, etc. Despus, se llama al mtodo start () del applet el cual a su vez llama al mtodo run () del thread. La frecuencia de refresco del applet es de casi de 1 segundo. Durante 1 segundo el thread est durmiendo, durante ese tiempo se supone que el programa WebCam32 esta grabando a disco la nueva imagen del PUMA. Transcurrido ese tiempo el thread se despierta, actualiza el objeto imagen e inicializa un objeto MediaTracker con la nueva imagen. El objeto MediaTracker tiene un mtodo que permite detener la ejecucin hasta que se completa la carga de una imagen especfica. Una vez se ha concluido la carga de la imagen, se llama al mtodo del applet repaint () que actualiza la imagen del applet y provoca una nueva llamada al mtodo start () del applet, lo que produce que se vuelva a ejecutar el mtodo run () del thread y vuelta a empezar. El mtodo destroy () del applet es llamado cuando por cualquier circunstancia va a concluir definitivamente la ejecucin del Applet. El mtodo stop () del Applet es llamado por el browser cada vez que el usuario abandona el documento html al que hace referencia el Applet. El mtodo start () del applet lo invoca el browser cuando se carga el applet o cada vez que el browser vuelve a presentar el documento html. El mtodo run () es el corazn del thread el que tiene el cdigo de la tarea. El mtodo suspend () del objeto thread permite que cese la ejecucin de una tarea y el mtodo resume () permite que un mtodo suspendido reanude su ejecucin.

140

Simulacin Virtual de Robots Articulados

Threads en Java

141

Simulacin Virtual de Robots Articulados

Conclusiones

ESTE captulo V ha venido a constatar la potencia de Java para implementar


aplicaciones distribuidas. En general, el mtodo descrito para realizar el acceso remoto sobre el robot PUMA puede servir con ligeras modificaciones para realizar el acceso sobre cualquier dispositivo hardware que sea posible controlar mediante una PPI o con algn dispositivo de caractersticas similares. Este mdulo de acceso remoto entrara dentro de lo que en realidad virtual se conoce como TELEPRESENCIA. RMI nos ha permitido crear la comunicacin remota entre el browser del cliente y el servidor remoto. La clase JNI, nos ha permitido acceder al robot PUMA desde Java utilizando cdigo nativo en C. Esta clase hace posible que existan en Java cosas tan sorprendentes como JTAPI (Java Telephony API). Una extensin del API de Java que permite gobernar una comunicacin telefnica, hacer llamadas, etc. Lo que sucede realmente es que existen unos mtodos nativos en Java que permiten acceder al hardware a travs de una Implementacin en C. Finalmente comentar que CORBA fue elegido como segunda opcin viable para abordar el mdulo de acceso remoto, gracias a que permite la construccin de aplicaciones distribuidas con independencia del lenguaje, es decir, podemos compartir objetos remotos implementados en diferentes lenguajes. El lector no debe pensar que CORBA es una solucin mejor que RMI. En primer lugar la independencia del lenguaje se paga con mayores tiempos de respuesta a la hora de acceder a los mtodos remotos. En segundo lugar ocurre un fenmeno que recuerda al problema de los visualizadores VRML. Por ejemplo, OmniORB es un ORB gratuito de Oracle-Olivetti Research de Cambridge, Inglaterra. OmniORB es una arquitectura bsica de CORBA 2.0, con un rendimiento de 2 a 15 veces superior al resto de sus competidores comerciales. Implementa el servicio estndar de nombres CORBA, aunque actualmente no soporta algunos servicios estndar de CORBA, como puede ser el servicio de eventos, el servicio trader o el servicio life cycle (incorpora un servicio life cycle pero no es estndar). En fin, habr que confiar en que los fabricantes no empiecen a saltarse las normas y especificaciones del estndar CORBA. NOTA: ORB es el componente ms importante de CORBA, el ORB (Object Request Broker) es la capa de comunicacin que se sita entre un objeto CORBA y el usuario del objeto CORBA. A travs del ORB, las aplicaciones cliente pueden acceder a sus propiedades, pasarle parmetros, invocar mtodos y devolverle resultados de un objeto remoto.

142

Simulacin Virtual de Robots Articulados

Captulo 6: Balance del Proyecto

143

Simulacin Virtual de Robots Articulados

Conclusiones Finales

DESPUS de haber desarrollado el simulador virtual del robot PUMA, se


podra haber desarrollado otros modelos de robot como el SCARA o STANDFORD. La dificultad de implementar estos robots en Java 3D no viene dada por la falta de recursos del API Java 3D, sino mas bien por el grado conocimientos que posea el usuario sobre tcnicas de programacin grfica en 3D. Una vez el usuario se encuentre familiarizado con Java 3D, no es complicado modelar un robot. Hay que tener en cuenta que cuanto ms preciso sea el modelo virtual, se requiere ms tiempo para implementar dicho modelo. A veces no merece la pena el esfuerzo porque el robot pierde realismo debido a que el renderizado de la escena es demasiado lento. Hay que mencionar que para el desarrollo del simulador no basta con implementar el modelo virtual, sino que ste se complementa con un modelo matemtico para conseguir que su comportamiento sea lo ms real posible. Si se quisiera implementar un nuevo tipo de robot, probablemente el modelo virtual no presente grandes dificultades si se est familiarizado con Java 3D, el problema podra aparecer a la hora de desarrollar el modelo matemtico que puede ser realmente complejo. Java 3D no te va ayudar a crear el modelo matemtico pero te puede servir para visualizar el modelo matemtico y comprender mejor su funcionamiento. La ventaja de utilizar Java 3D en el area de simulacin es que te permite ofrecer al cliente una imagen ms o menos real del funcionamiento de tu sistema. De esta forma se puede vender mejor el producto y ofrecer una idea ms precisa al cliente. En realidad, mediante las herramientas utilizadas es posible modelar cualquier tipo de cadena articulada. El nico problema que se puede presentar es a la hora de calcular la cinemtica inversa para dicha estructura. Esto se debe a que los clculos necesarios no son generales, sino que dependen en una gran medida de las caractersticas de la propia estructura. La cinemtica directa no ofrece tantos problemas. Tal y como se presenta el mercado, creemos que se tiende a la programacin multiplataforma y distribuida. En este campo hay que destacar la funcionalidades que presenta Java, que permite abordar este tipo de aplicaciones de forma "sencilla" como si se tratase de aplicaciones no distribuidas. Al final de cada captulo se ha ido comentando una serie de conclusiones particulares con las que se ha pretendido recalcar las posibilidades existentes en cada uno de los temas.

144

Simulacin Virtual de Robots Articulados

Sugerencias

UN tema que nos ha preocupado desde un principio es el acceso de forma


simultanea de varios usuario al puma real. En la actualidad no se ha implementado ningn tipo de poltica al respecto. Las pruebas realizadas con el mdulo de acceso remoto nos han permitido comprobar que en el caso del acceso remoto de varios usuarios simultneamente al robot, siempre se atiende a las peticiones de los diferentes usuarios segn el orden de llegada. El efecto final es que el robot empieza por atender las peticiones de un usuario y puede empezar a atender a otro sin completar las instrucciones del primero. Para abordar el problema anterior se pueden elegir diferentes opciones, desde limitar el acceso a un solo usuario, que sera la solucin ms sencilla de todas, a implementar un mdulo de validacin de usuarios. Nosotros hemos plateado una posible solucin a este problema aunque no se ha implementado en el proyecto. Las caractersticas que debera tener este mdulo de simulacin deberan ser como mnimo las siguientes:

Controlar que en cada instante de tiempo slo pueda estar accediendo al robot real un solo usuario. Capacidad de controlar mltiples recursos no solo el robot PUMA. Los usuarios deberan poderse clasificar segn una jerarqua (alumno, profesor, invitado, etc.) en funcin de la cual asignar un tiempo mnimo de acceso a cada recurso. La poltica de acceso debera ser: "Cada usuario tiene asignado el PUMA un tiempo mnimo que establece el administrador, pero en caso de que ningn otro usuario solicite el mismo recurso debera poder seguir disfrutando del mismo" Sera til llevar una serie de estadsticas personalizadas para cada usuario sobre nmero de lecturas realizadas en los sensores del robot, nmero de sesiones, etc. El mdulo de simulacin debera slo ocuparse de la validacin de los usuarios y una vez se ha realizado la validacin del usuario la comunicacin debera realizarse directamente entre el cliente y el servidor del recurso correspondiente, de esta forma se consigue que el mdulo de validacin quede libre para seguir realizando otras tareas como ofrecer informacin a los usuarios o validar nuevos usuarios.

El siguiente diagrama presenta un esquema cmo se podra implementar este mdulo de validacin de usuarios.

145

Simulacin Virtual de Robots Articulados

Esquema del Mdulo de Validacin Aquellos usuarios que deseen conocer informacin acerca de su actividad en el sistema pueden recurrir al servlet de autenticacin el cual puede informarles sobre estos temas gracias a que va almacenando este tipo de informacin en una base de datos. El administrador del sistema tambin puede dirigirse al servlet para configurar las cuentas de acceso de los usuarios. Cuando un usuario intenta acceder al robot PUMA el servlet de autenticacin deber realizar los siguiente pasos: 1. Comprobar si el usuario que solicita el recurso tiene permisos y comprobar el tiempo que ha consumido el usuario anterior utilizando el recurso. 2. Si el tiempo asignado para el usuario anterior ha expirado, se debe invocar al servidor RMI del PUMA para que asigne el recurso al nuevo usuario y obtener las estadsticas de acceso del usuario anterior. Despus deber actualizar los datos del usuario anterior en la base de datos y comunicar al nuevo cliente que ya puede acceder al puma. El mdulo servidor RMI se encargar de comunicar al viejo cliente que su tiempo de acceso ha expirado. 3. Finalmente en caso de que el usuario no este registrado o el usuario anterior no haya consumido su tiempo mnimo de acceso, el servlet comunica al usuario el respectivo mensaje de error. En el captulo V, se comentaba la existencia de una librera en C que permita la interaccin a bajo nivel con el robot PUMA. Esta librera se desarroll para trabajar con Windows 9x que es un sistema operativo de pago, lo ideal hubiese sido implementarla el C para Linux. Linux hoy en da, va ganando adeptos gracias a que es un sistema operativo "gratuito". Nosotros no la hemos desarrollado porque nos dimos cuenta

146

Simulacin Virtual de Robots Articulados cuando el mdulo de acceso remoto estaba acabado y funcionando. Tambin nos hubiese gustado comprobar el funcionamiento del simulador sobre otras plataformas diferentes de la de Windows 9x, para ver como se comporta Java 3D sobre otros sistemas operativos como Solaris o Linux.

147

Simulacin Virtual de Robots Articulados

Apndices

148

Simulacin Virtual de Robots Articulados

Apndice A: Configuracin del Java en los Clientes

CUALQUIER usuario que tenga la posibilidad de acceder a Internet, puede


acceder a la pgina principal del proyecto, disponible en: http://www.csi.ull.es/~simvirt/index.html. Sin embargo para que pueda acceder sin problemas a todo el contenido del proyecto necesitar que su equipo tenga instalado un navegador actualizado: Netscape, Hotjava o Internet Explorer que soporte Java. Si adems quiere utilizar alguno de los mdulos desarrollados en este proyecto deber tambin tener instalado el paquete JRE (Java 2 Runtime Enviroment), que normalmente suele venir incluido en el JDK(Java Develoment Kit). El mdulo de simulacin virtual requiere el uso de un plug-in para Java3D. Existen varias versiones de estos programas y la eleccin de ellos depender de la plataforma sobre la que estamos trabajando (Windows, Solaris, etc). Para ms informacin sobre como conseguir estos programas vase: http://java.sun.com/jdk http://java.sun.com/products/plugin Si una vez instalado el software anterior no consigue que le funcione el simulador compruebe que ha configurado correctamente el Java Plugin Control Panel para que utilice el Java Runtime Enviroment, ubicado normalmente en el directorio c:\java1.2.2\. Normalmente todos los mdulos son accesible directamente desde el WEBSITE del proyecto y todos ellos se ejecutan perfectamente dentro de un navegador bien configurado. Nosotros sin embargo, recomendamos que el usuario ejecute los applet directamente desde el appletviewer, de esta manera el usuario consigue mayor fiabilidad, velocidad y puede reescalar los applet a voluntad. Para hacer esto teclee: appletviewer http://www.csi.ull.es/~simvirt/simulador/run.html NOTA: Si usted no ha instalado el JDK sino el JRE no dispondr de la herramienta appletviewer. Utilice entonces la interface del WEBSITE para acceder el mdulo de simulacin.

149

Simulacin Virtual de Robots Articulados

Apndice B: Configuracin del WEBSITE + Simulador Virtual

EL WebSite que contiene el simulador virtual y toda la documentacin del


proyecto se encuentra ubicado actualmente en el servidor web del Centro Superior de Informtica de la Universidad de La Laguna. El arbol de directorios del Web que presentamos a continuacin debe situarse a partir de un directorio del servidor web de manera que sea accesible a todos los usuarios.

El WebSite contiene la memoria completa del proyecto con sus respectivas imgenes. El mdulo de acceso remoto se encuentra situado en el directorio llamado AccesoRemoto. En l podemos encontrar los fuentes del mdulo y tambin informacin sobre las clases que utiliza. Esta informacin ha sido generada utilizando la herramienta Javadoc que se incluye en el JDK (Java Development Kit). El mdulo de monitorizacin se encuentra en el directorio Monitoriz, y al igual que el mdulo anterior, presenta informacin acerca de sus clases y los fuentes de las mismas. El mdulo de simulacin situado en el directorio simulador contiene adems de la informacin sobre el mdulo, el applet completo del simulador y los ficheros fuentes asociados. Por ltimo, la presentacin realizada en PowerPoint para la entrega del proyecto se ha exportado en formato HTML y se encuentra disponible en el directorio present.

150

Simulacin Virtual de Robots Articulados

Apndice C: Configuracin del Servidor de Acceso Remoto

EL mdulo de acceso remoto se encuentra ubicado en el servidor WEB/RMI


que pertenece al laboratorio de Computadoras y Control de la Universidad de La Laguna. La estructura de directorios que se presenta a continuacin deber ser colocada a partir de la raiz del servidor Web.

Los pasos para compilar e inicializar la parte del servidor del mdulo de acceso remoto son las siguientes: 1) Comprobar la existencia de los siguientes ficheros:

InterfaztRMI.java InterfazRMIImpl AccesoRemoto

// Contiene la interface de los metodos Remotos // Implementacion de los metodos remotos // Applet cliente que utiliza los metodos remotos

NOTA: java.policy // Fichero que establece el nivel de seguridad. Asegrese de que ajusta los niveles de seguridad de la mquina virtual Java para poder acceder y escuchar el puerto 1099. 2) Compilar InterfazRMI.java javac -d c:\inetpub\wwwroot\myclasses InterfazRMI.java 3) Compilar InterfazRMIImpl.java javac -d c:\inetpub\wwwroot\myclasses InterfazRMIImpl.java 4) Llamo a rmic rmic -d c:\inetpub\wwwroot\myclasses examples.interfazRMI.InterfazRMIImp Esto hace que se creen los ficheros: InterfazRMIImpl_Skel.class InterfazRMIImpl_Stub.class 5) Inicializo el rmiregistry start rmiregistry 6) Compilo el InterfazRMIApplet javac -d c:\inetpub\wwwroot\myclasses InterfazRMIApplet.java 7) Inicializo el servidor pasando como parametro el fichero de seguridad, java -Djava.rmi.server.codebase=http://<IP_SERVER>/myclasses/ 151

Simulacin Virtual de Robots Articulados Djava.security.policy=<RAIZ_WEBSERVER>\myclasses\policy examples.interfazRMI.InterfazRMIImpl Deber aparecer en la pantalla InterfazRMI Server Ready 8) Ahora el usuario puede acceder al applet de acceso remoto ubicado en este servidor. Utilice el enlace adecuado.

152

Simulacin Virtual de Robots Articulados

Apndice D: Configuralcin del Servidor de Monitorizacin

ESTE mdulo se encuentra ubicado en el servidor WEB/RMI del Laboratorio


de Computadoras y Control de la Universidad de La Laguna. Concretamente en el directorio WebCam32 situado en el directorio raiz del servidor. En este directorio encontramos el fichero JavaCam.class que se trata de un applet que implementa el mdulo de monitorizacin del PUMA. Concretamente, muestra en el applet cargado el fichero imagen WebCam32.jpg situado en el mismo directorio. Dicho fichero imagen es reemplazado cada segundo por un nuevo fichero imagen a travs del programa WebCam32 de uso shareware.

153

Simulacin Virtual de Robots Articulados

Bibliografa
Web sites

http://java.sun.com http://java.sun.com/products/java-media/3D http://vrm.sgi.com/moving-worlds/spec/changeLog.html http://www.omg.org http://www.omg.org/news/begin.htm http://www.javauniverse.com http://www.javaworld.com http://www.eidos.es http://www.ria.cl/ria/javatutor http://www.geocities.com/SiliconValey/Lakes/5276/man1.html

Artculos

Tutorial de Java y Java 3D de Sun Microsystems API de Java y Java 3D de Sun Siggraph 96/98 Apuntes de la asignatura Robotica I del quinto curso de Ingeniera Superior en Informtica de la Universidad de La Laguna, impartida por D. Leopoldo Acosta Snchez. Revista Programacin Actual Revista Linux Journal

Libros Especficos de Java


Robtica, control, deteccin, visin e inteligencia. Autor K. S. Fu, R. C. Gonzlez, C. S. G. Lee. Editorial Mc-Graw Hill,1988 Robots, Mquinas a imagen y semejanza del hombre. Autor Isaac Asimov, Karen A. Frenkel. Editorial Plaza&Janes, 1987 Java 1.2, Al descubierto, la solucin ms completa. Autor Jamie Jaworski, Editorial Prentice Hall, 1999. Java 2, Manual de Usuario y Tutorial. Autor Agustn Froufe, Editorial RA-MA, 1999. Java Programming with Corba. Autor Andreas Vogel, Keith Duddy. Editorial

154

Simulacin Virtual de Robots Articulados John Wiley & Sons, 1966.


Como programar en Java. Biblioteca tcnica de programacin. Editorial Prensa Tcnica, 1997. VRML, biblioteca del programador. Autor Jamsa Schmauder Yee. Editorial McGraw Hill, 1998. VRML 2.0, el lenguaje 3D de Internet. Autor: Javier Guerrero. Editorial Abeto, 1998 (traduccin casi literal del Siggraph 96).

Libros Generales
- Data Structures and C Programs. Autor Christopher J. Van Wyk, Addison-Wesley, 1988. - Writing Efficient Programs. Autor Jon Bentley, Prentice Hall, 1982, especially p. 110 and p. 145-151. - More Programming Pearls. Autor Jon Bentley. Association for Computing Machinery, February 1988. - Programming Pearls. Autor Jon Bentley, Addison-Wesley 1989. Part II addresses generic performance enhancements. - Code Complete: A Practical Handbook of Software Construction. Autor Steve McConnell, Microsoft Press 1993, Chapter 9. - Object-Oriented System Development. Autor Champeaux, Lea, and Faure, Chapter 25. - The Art of Programming. Autor Donald Knuth, Volume 1 Fundamental Algorithms 3rd Edition, 1997; Volume 2, Seminumerical Algorithms 3 rd Edition; Volume 3 Sorting and Searching 2 nd Edition, Addison-Wesley. The definitive encyclopedia of algorithms. - Algorithms in C: Fundamentals, Data Structures, Sorting, Searching. Autor Robert Sedgewick, 3 rd Edition, Addison-Wesley 1997. The author is an apprentice of Knuths. This is one of seven editions devoted to several languages and contains timely, somewhat simpler treatments of algorithms.

155

Simulacin Virtual de Robots Articulados

Nuestras Clases Java


Clases del Mdulo de Simulacin ..\simulador\doc\index.html Clases del Mdulo de Acceso Remoto ..\AccesoRemoto\doc\index.html Clases del Mdulo de Monitorizacin ..\Monitoriz\doc\index.html

156

También podría gustarte