Вы находитесь на странице: 1из 75

INSTITUTO POLITCNICO NACIONAL

CENTRO DE INNOVACIN Y DESARROLLO


TECNOLGICO EN CMPUTO

Brazo Robtico Controlado por una Computadora en un Ambiente


de Realidad Virtual

Tesis que presenta:


Eduardo Eloy Loza Pacheco

Para obtener el grado de Maestro en Ciencias en


Tecnologa de Cmputo

Directores:

M en C. Juan Carlos Herrera Lozada


M. en C. Israel Rivera Zrate

Mxico, D.F., julio 2008

II

Resumen
La realidad virtual se ha venido desarrollando a pasos agigantados gracias a los grandes
avances tecnolgicos que presenciamos da con da, adems de que es un punto muy
rentable para las compaas de entretenimiento como la de los videojuegos, pero la realidad
virtual adems es una herramienta de simulacin de mundos, as como de fenmenos a los
que el ojo humano no puede acceder. Una de sus reas de aplicacin es control a distancia
que cada vez se hace ms sofisticado. En Mxico este tema ha sido abordado por diversos
trabajos en universidades y por eso el equipamiento de herramientas de realidad virtual es
importante, y es ah donde este trabajo pretende colaborar con

el equipamiento del

laboratorio de realidad virtual de CIDETEC con el fin de que sirva para propsitos
didcticos.
Este trabajo presenta el modelado de un brazo robtico en Java 3D as como de su control
mediante un microcontrolador, de su control usando Java 2 y finalmente se muestra una
interfaz entre la computadora y el brazo mecnico.

III

Abstract
Virtual Reality has becoming more and more important thanks to the great advantages of
the technology what we can see everyday besides it is a very profitable for entertainment
companies like videogames, but virtual reality is also a tool for simulating worlds or
simulation of physics phenomena that human eyes can not see. One of the application
fields are the distance control and this field is more sophisticated everyday. In Mexico this
themes has been aborded by several works in Universities and for that it is important to
equip them with virtual reality tools. And this work pretends to collaborate with the
equipment of the Virtual Reality laboratory of CIDETEC with the objective of this work
can serve for educational purposes.

This work presents a modeler of a robotic arm in Java3D and its control using a
microcontroller, its control using Java2, finally shows an interface between the computer
and the robotic arm

IV

Agradecimientos
A mi madre, Lourdes Pacheco Reynoso, por el apoyo que me ha brindado durante
toda mi vida y en especial para este proyecto.
A mi hermana, Dulce Lourdes Loza Pacheco, por todo el apoyo brindado.
A mi amigo Rodrigo al que agradezco su amistad y su ayuda en la realizacin de
esta tesis.
Al M. en C. Juan Carlos Herrera Lozada, por brindarme su apoyo, por las ideas,
ayuda y conocimientos en este proceso.

Al M. en C. Israel Rivera Zrate, por el tiempo, el conocimiento y el apoyo


dedicados para la realizacin de esta tesis.

Al M. en C. Mauricio Olgun Carvajal, por las ideas, conocimiento y ayuda


brindada para la realizacin de esta tesis.

Al M. en C. Jess Antonio lvarez Cedillo, por la dedicacin y apoyo vertidos en


esta tesis.
Al M. en C. Juan Carlos Gonzlez Robles, por la dedicacin y apoyo vertidos en
esta tesis.

Gracias infinitas a la mejor institucin a la cual he tenido el privilegio de pertenecer.


Instituto Politcnico Nacional.

ndice
Resumen .......................................................................................................................... III
Abstract............................................................................................................................ IV
ndice ............................................................................................................................... VI
Lista de Figuras............................................................................................................. VIII
Lista de Tablas .................................................................................................................. X
Abreviaturas....................................................................................................................... 1
Glosario ............................................................................................................................. 2
Captulo 1 .......................................................................................................................... 3
Introduccin ................................................................................................................... 3
1.1 Importancia de la realidad virtual y del mando a distancia..................................... 3
1.2 Lenguajes de Programacin en el diseo de mundos virtuales............................... 4
1.3 Planteamiento del problema .................................................................................. 5
1.4 Objetivo................................................................................................................ 6
1.4.1 Objetivos Particulares .................................................................................... 6
1.6 Justificacin.......................................................................................................... 6
1.7 Descripcin del proyecto ...................................................................................... 6
1.8 Organizacin de la tesis ........................................................................................ 7
Captulo 2 .......................................................................................................................... 8
Marco Terico................................................................................................................ 8
2.1 Realidad Virtual................................................................................................... 8
2.2 JAVA 2 ................................................................................................................ 8
2.3 Java 3D................................................................................................................. 9
2.4 Brazo Robtico................................................................................................... 11
2.6 Servomotores...................................................................................................... 11
2.6.1 Estructura interna del Servomotor ................................................................ 12
2.6.1.1 Motor de corriente contina................................................................... 12
2.6.1.2 Circuito de control................................................................................. 12
2.6.1.3 Terminales ............................................................................................ 12
2.7 Puerto Serie ........................................................................................................ 13
2.7.2 Puerto serie tradicional................................................................................. 13
2.7.3 Puertos serie modernos ................................................................................ 14
2.7.4 Tipos de comunicaciones seriales................................................................. 14
2.7.4.1.1 Simplex .............................................................................................. 14
2.7.4.1.2 Duplex, half duplex o semi-duplex ..................................................... 14
2.7.4.1.3 Full Duplex ........................................................................................ 14
2.7.5 Norma RS-232 ............................................................................................. 14
2.8 Microcontroladores PIC.......................................................................................... 15
Captulo 3 ....................................................................................................................... 17
3.1 Implementacin del Brazo Robtico ....................................................................... 17
3.2 Capas de aplicacin del Trabajo.............................................................................. 18
3.3 Integracin de clases en el proyecto ........................................................................ 18
3.4 Diseo e Implementacin del Brazo Robtico Virtual (Aplicacin Grfica)............ 19
3.5 Creacin del Universo Virtual ................................................................................ 19
3.6 Rotacin en Java 3D ............................................................................................... 23
VI

3.7 Clase Figuras .......................................................................................................... 25


3.7.1 Mtodo DibujarFigurasCili()............................................................................ 25
3.7.2 Mtodo DibujarFigurasCajas()......................................................................... 26
3.7.3 El mtodo app(). .............................................................................................. 26
3.8 Dibujo del Brazo Robtico ..................................................................................... 27
3.9 La clase comportamiento ........................................................................................ 27
3.9.1 El constructor de la clase Comportamiento....................................................... 28
3.9.2 El mtodo initialize y ProcessStimulus............................................................. 29
3.10 Eventos del Teclado.............................................................................................. 29
Captulo 4 ........................................................................................................................ 31
4.1 Desarrollo de la interfaz de comunicaciones en JAVA ............................................ 31
4.2 Comunicacin con un dispositivo externo (Uso de la biblioteca javax.comm)........ 31
4.2.1 acceso al puerto serie ....................................................................................... 32
4.2.2 Fijar los parmetros de comunicacin .............................................................. 33
4.2.3 Mtodo escribe().............................................................................................. 34
4.3 Interfaz de control con el brazo robtico (cada uno de los servos)........................... 34
4.3.1 Primer microcontrolador .................................................................................. 34
4.3.2 Segundo microcontrolador ............................................................................... 35
4.4 Esquema del Circuito.............................................................................................. 36
Captulo 5 ........................................................................................................................ 38
5.1 Pruebas y Resultados .............................................................................................. 38
5.1.1 Primera comunicacin a travs del puerto serie ................................................ 38
5.1.2 Controlar un servomotor usando el puerto serie................................................ 42
5.1.3 Evolucin del brazo robtico ........................................................................... 45
5.2 Conclusiones .......................................................................................................... 47
5.3 Trabajos Futuros..................................................................................................... 48
ANEXO A ....................................................................................................................... 49
ANEXO B........................................................................................................................ 53
ANEXO C........................................................................................................................ 56
ANEXO D ....................................................................................................................... 59
ANEXO C........................................................................................................................ 60
ANEXO D ....................................................................................................................... 62
REFERENCIAS............................................................................................................... 63

VII

Lista de Figuras
Figura 1.1: Proyecto COSMOS [2]..................................................................................... 4
Figura 1.2 Diagrama a bloques ........................................................................................... 7
Figura 2.1 Simbologa de Java 3D .................................................................................... 10
Figura 2.2 Flechas de Java 3D ......................................................................................... 10
Figura 2.5 Brazo Robtico Lynx 6................................................................................... 11
Figura 2.3: Servo HI-TEC-322HD.................................................................................... 13
Figura 2.4 Pines del DB9.................................................................................................. 15
Figura 2.5 Arquitectura Interna del PIC16F628 ................................................................ 16
Figura 3.1 Interfaz RIOS 1 ............................................................................................... 17
Figura 3.2 Movimiento de las Extremidades con la Interfaz RIOS.................................... 17
Figura 3.3 Capas de Aplicacin del Brazo Robtico ......................................................... 18
Figura 3.4 Relacin de Clases........................................................................................... 19
Figura 3.5 Diagrama de la Escena del Brazo Robtico Virtual ...................................... 20
Figura 3.6 Rama de Contenido General ............................................................................ 21
Figura 3.7 Rama de Contenido Figuras que conforman al brazo robtico ...................... 22
Figura 3.8 Ejes X,Y,Z ...................................................................................................... 23
Figura 3.9 Rotacin en X de un cubo................................................................................ 24
Figura 3.10 Rotacin de un Cubo en Java 3D a) Imagen sin rotar b) Imagen Rotada 45 .. 24
Figura 3.11 Brazo Robtico Virtual.................................................................................. 27
Figura 4.1 Capas de Comunicacin .................................................................................. 31
Figura 4.2 Esquema del Circuito PICA izquierda PICB derecha ...................................... 37
Figura 5.1 Primera Comunicacin con le puerto serie ....................................................... 39
Figura 5.2 Diagrama de Flujo de primera comunicacin con le Puerto Serie..................... 39
Figura 5.3 Hyperterminal ................................................................................................. 41
Figura 5.5 Diagrama a bloques Manipulacin de ........................................................... 43
un servomotor desde el puerto serie ................................................................................ 43
Figura 5.6 A) Diagrama de flujo de la comunicacin con el puerto Serie enviando un
carcter. B) Microcontrolador PIC recibiendo un carcter x y escribiendo un pulso en el
puerto B de salida............................................................................................................. 43
Figura 5.7 Brazo Robtico Real........................................................................................ 45
Figura 5.8 Brazo Robtico hecho en VRML..................................................................... 45
Figura A.1 Caractersticas del Archivo ............................................................................. 49
A.2 Inicio del Proceso de instalacin ................................................................................ 49
A.3 Acuerdo de Licencia.................................................................................................. 50
A.4 Seleccin de Opciones adicionales............................................................................. 50
A.5 Proceso de instalacin del JDK.................................................................................. 51
A.6 Opcin para la instalacin del JRE............................................................................ 51
Figura A.7 Proceso de instalacin del JRE........................................................................ 52
Figura A.8 Finalizacin de la Instalacin de Java ............................................................. 52
Figura B.1 Ejecucin del Programa de Instalacin........................................................... 53
Figura B.2 Acuerdo de Licencia de Java 3D v1.5 ............................................................. 53
Figura B.3 Confirmacin de la Instalacin........................................................................ 54
Figura B.4 Instalacin de Java 3D .................................................................................... 54
Figura B.5 Finalizacin de la Instalacin. ......................................................................... 55
VIII

C.1 Instalacin de NetBeans............................................................................................. 56


Figura C.2 A) Instalacin de mdulos de NetBeans, B) Acuerdo de Licencia................... 56
Figura C.3 Ruta de Instalacin de NetBeans y ruta donde se instalo el JDK...................... 57
Figura C.5 Confirmacin e Instalacin de Netbeans ......................................................... 58
Figura C.6 Confirmacin e Instalacin de Netbeans ......................................................... 58

IX

Lista de Tablas
Tabla 2.1 Tabla de Fabricantes ......................................................................................... 12
Tabla 3.1 Acciones del Teclado........................................................................................ 29

Abreviaturas
JDK Java development Kit
API Application Program Interface
JRE Java Runtime Environment
SDK Software Development Kit
VRML Virtual Reality Model Language
PIC Programmable Interrupt Controller

Glosario
Nombre

Definicin

Electromecnico

Dicho de un dispositivo o de un aparato mecnico:


Accionado o controlado por medio de corrientes
elctricas.[14]

Compilador

Un compilador es un programa que traduce un programa


escrito en un lenguaje de programacin a otro lenguaje de
programacin, generando un programa equivalente que la
mquina ser capaz de interpretar. Usualmente el segundo
lenguaje es cdigo mquina, pero tambin puede ser
simplemente texto. Este proceso de traduccin se conoce
como compilacin.[13].

Lenguaje de Programacin

Un lenguaje de programacin es un lenguaje que puede ser


utilizado para controlar el comportamiento de una mquina,
particularmente una computadora. Consiste en un conjunto
de smbolos y reglas sintcticas y semnticas que definen
su estructura y el significado de sus elementos y
expresiones.[13].
Realidad virtual es un sistema informtico que genera
entornos artificiales, con una representacin de las cosas a
travs de medios electrnicos o representaciones de la
realidad.
Es un dispositivo que copia el movimiento de una
extremidad natural.
Es un circuito integrado que incluye las tres unidades
funcionales de una computadoras, cpu, memoria y unidades
de entrada salida.
Conexin fsica y funcional, entre dos dispositivos o
sistemas independientes.
Manipulacin usando extremidades del cuerpo (contacto).
Se le dice realidad virtual aumentada cuando no solo se
interacta con los entornos virtuales visuales, si no cuando
se emplean mas sentidos que el de la vista.

Realidad Virtual

Brazo Robtico
Microcontrolador

Interfaz
Control hptico
Realidad Virtual aumentada

Captulo 1
Introduccin
Hoy en da el campo de la robtica es extenso y multidisciplinario puesto que necesita de
varias ramas de la ciencia y de la tecnologa como es el caso de la realidad virtual, cuyo
propsito es el de recrear un entorno existente en el mundo real o bien inexistente. Por otra
parte las aplicaciones de los Brazos robticos son muy diversas desde la manipulacin de
sustancias peligrosas, materiales explosivos o como parte de una lnea de ensamblaje hasta
fines acadmicos y de investigacin, entre otros. Finalmente la unin de estos elementos
provee una plataforma para un desarrollo mayor en cuanto a la robtica, sistemas digitales
y realidad virtual. Debido a que los entornos virtuales nos permiten un mejor diseo de los
movimientos de un sistema, brazo robtico, as como de su control remoto.

1.1 Importancia de la realidad virtual y del mando a distancia


Con el paso de los aos la realidad virtual se ha vuelto una herramienta cada vez ms
importante para el desarrollo de sistemas. Hoy en da el campo de la realidad virtual es una
herramienta muy valiosa en la simulacin de fenmenos fsicos, electromecnicos, etc.
Otra de sus aplicaciones se encuentra en el control a distancia, pus la realidad virtual tiene
como uno de sus propsitos es recrear un entorno existente en el mundo real o bien
inexistente y as tener una nocin ms clara del comportamiento de los objetos. En la
actualidad hay dos maneras de comunicarnos con entornos virtuales, la primera es controlar
un entorno virtual desde un elemento fsico. Tal es el proyecto que se lleva a cabo en la
Instituto de Tecnologa de Georgia el cual consiste en mover un ttere y de acuerdo al
movimiento que se le haya inducido habr un ttere virtual con caractersticas de
movimiento similares que reaccionar en tiempo real [1] sin embargo la parte medular de
este trabajo est enfocada al control hptico.
El otro lado de la moneda es cuando desde un entorno virtual es posible manipular
elementos que existen en nuestra realidad tal es el caso del proyecto COSMOS que busca
operar un brazo robtico que est a 40 kilmetros de la superficie terrestre con el fin de
realizar misiones espaciales que consistan en la manipulacin de objetos y reparacin de los
mismos. La realizacin de este control sugiere la resolucin de diversos problemas desde en
la reduccin de costos espaciales en entrenamiento de astronautas y reduce riesgos como
que los astronautas reciban radiacin solar cuando se encuentren en el espacio. En la figura
1.1 se observa boceto del brazo robtico COSMOS [2].
3

Figura 1.1: Proyecto COSMOS [2]

En este tpico podemos encontrar que tambin se pueden controlar dispositivos a distancia
orientado a la seguridad como se pretendi en el proyecto de Tecnologas de Realidad
Virtual Avanzadas aplicadas a la vigilancia y sistemas de seguridad, en donde se controlan
cmaras de vigilancia en una cabina de inmersin usando realidad virtual aumentada
[3].Finalmente hoy en da se desarrolla en la NASA un robot con caractersticas
humanoides, el cual se tiene contemplado enviar como apoyo en las misiones espaciales de
los transbordadores para realizar las tareas ms pesadas por ejemplo los que se realizan al
exterior de la nave en las que un astronauta no puede realizar por un periodo muy largo
pues le afecta la radiacin estelar y solar. Este robot ser controlado desde la tierra. [6].
Ahora bien, la importancia de poder teleoperar objetos se evidencia analizando las
aplicaciones que se pueden desarrollar, como sucede al aumentar la percepcin del
controlador para poder tomar decisiones ms acertadas como se indica en el trabajo
titulado Tecnologas de Visualizacin en 3D para robots teleguiados que se desarroll en
la Escuela Superior de Catania de Italia, cuya intencin es demostrar la conjuncin de dos
tecnologas la utilizacin de dispositivos de realidad virtual como cascos y la teleoperacin
de dispositivos a distancia por medio de ambientes virtuales [4]. Otro de los trabajos que se
han llevado a cabo es en la Universidad de Bio Bio Colombia, es la simulacin de un brazo
robtico para reducir costos de aprendizaje y su colaboracin con la docencia. Todo esto
gracias a su laboratorio de sistemas Automatizados de Produccin [11].

1.2 Lenguajes de Programacin en el diseo de mundos virtuales


Hoy en da casi cualquier lenguaje de programacin de nivel intermedio puede usarse para
creacin de mundos virtuales, claro la efectividad de cada uno de stos vara debido a que
muchos no estn enfocados al manejo de grficos, por otra parte, hay lenguajes que estn

enfocados a su manejo o bien a la programacin de mundos virtuales tal es el caso de


VRML y de Java.
Una muestra la da el desarrollo de mundos virtuales, que se lleva a cabo en la Universidad
Yuan-Ze, Ah se tiene como propsito el desarrollo de entornos cabe destcar que el fin de
este desarrollo son los metadatos y el tratamiento que se les puede hacer, como por
ejemplo, el realizar una consulta [5]. Incluso en nuestro pas para la programacin de
entornos virtuales se ha adoptado VRML por la facilidad que ofrece su licencia tal es el
caso de un trabajo que se llevo a cabo en el CINVESTV es una tesis con el nombre
Robtica Asistida por Tele operacin y Realidad Virtual en la cual se aborda la importancia
de desarrollar un entorno virtual que se pueden considerar la tele operacin del mismo
usando Java y VRML.[7]. Por otra parte tenemos la potencia del lenguaje de programacin
Java y el desarrollo de una nueva API llamada Java 3D la cual puede graficar escenarios
con una apariencia tridimensional, con el cual se pueden desarrollar varias aplicaciones
como juegos, o bien manipular entornos virtuales usando un dispositivo externos [11].Sin
embargo el usar un lenguaje como Java nos da muchas ventajas debido a la gran potencia
de este lenguaje de programacin [9], a diferencia de VRML el cual solo es un lenguaje de
graficacin.

1.3 Planteamiento del problema


En los trabajos mencionados anteriormente se abordan diferentes maneras en las que se
puede interactuar con un mundo virtual, la primera en la que este recibe estmulos de un
dispositivo externo. La segunda que se expondr en este trabajo en que el entorno virtual
controla un elemento fsico. Ahora bien este trabajo llevo a cabo la solucin de diferentes
problemas tanto fsicos como de software. Lo que podemos observar de los trabajos
anteriores es que el lenguaje de programacin que ha empleado es VRML combinado con
Java, sin embargo no se haba llevado una integracin total con Java. Ah es donde entra
Java 3D el cual siendo una API de Java es posible tener una homogeneidad entre los
mdulos. Se plantea la comunicacin con un elemento externo, como hemos visto en la
mayora de las aplicacin se usa un dispositivo externo como un robot o bien otros
sistemas. En est tesis se realiza primero una comunicacin con un microcontrolador a
travs del puerto serie de la PC, para controlar el servo. Finalmente podemos ver que el
microcontrolador se comunicara con cualquier tipo de sistema mientras reciba una entrada
lgica de la computadora tendr una salida lgica que pude ser utilizado por cualquier
dispositivo en este caso se uso un brazo robtico como ejemplo.

1.4 Objetivo
Modelar un brazo robotico y controlarlo mediante un microcontrolador que servir como interfaz
entre la computadora y el puerto serie.

Este trabajo presenta el modelado de un brazo robtico en Java 3D as como de su control


mediante un microcontrolador, de su control usando Java 2 y finalmente se muestra una
interfaz entre la computadora y el brazo mecnico o bien con otros objetos, o dispositivos.
Finalmente se desarroll lo siguiente:

1.4.1 Objetivos Particulares

Diseo del brazo robtico virtual. Utilizando Java 3D


Diseo de la animacin del Brazo Robtico
Disear la interfaz en Java que permita la comunicacin de la computadora con un
microcontrolador que controle el brazo robtico
Diseo del programa para el PIC y del esquema del circuito que se comunicara con
los servos

1.6 Justificacin
El entorno virtual que permitir el diseo el movimiento del brazo robtico antes de que
estos se realicen y en dado caso identificar problemas dentro de la planificacin de
movimiento. Adems del control de este mediante la computadora. De acuerdo a lo anterior
ser posible la manipulacin de objetos a distancia los cuales pueden ser peligrosos o bien
el proceso puede ser repetitivo como para que se realicen por una persona. Los resultados
de este trabajo de tesis, se utilizaran en el laboratorio de realidad virtual

1.7 Descripcin del proyecto


Este trabajo presenta el desarrollo de los siguientes bloques. Se recurri el desarrollo de la
interfaz grfica, sta a su vez enviar datos a un lector de datos, el cual le indicar que
extremidad del brazo se deber mover. El evaluador de datos recibe informacin del lector
de datos y este evaluara su ese movimiento es vlido en el entorno virtual, finalmente se
convertirn los datos y se envan a travs del puerto serie. Finalmente la interfaz recibir
datos del programa de comunicacin si son datos validos de movimiento mover una
extremidad del brazo (vase figura 1.2).

Figura 1.2 Diagrama a bloques

1.8 Organizacin de la tesis


Este trabajo est dividido en cinco captulos
En el primer captulo se habla de los trabajos que se han realizado referentes al tema hasta
el momento y las motivaciones que llevaron a desarrollar la tesis, as como una solucin
propuest al problema planteado, en el captulo dos se abordan temas necesarios para
entender de una manera global lo que es. Los captulos posteriores estn divididos de
manera que cada uno habla especficamente de una funcionalidad propia del prototipo.
En el captulo tres encontramos se mencionan caractersticas fsicas del brazo robtico, as
como de sus procedimientos de implementacin. Se habla del software nativo que usa el
brazo para realizar sus movimientos. Como primera parte se toca el tema del modelado del
brazo robtico en Java 3D, de igual manera de su entorno virtual as como de las cuestiones
graficas. Tambin se da una explicacin al desarrollo de la clase lector de datos la cual
tomara los datos de la clase grafica para poder enviarlos al evaluador de datos. Al final del
captulo se contempla abordar el tema de la programacin de la animacin.
El captulo versa sobre las clases internas necesarias para el control del brazo robtico
desde la computadora como son la clase comunicaciones y la interfaz de comunicacin PCmicrocontrolador-brazo robtico, hasta la clase evaluador de datos la cual decide si un
movimiento del brazo robtico es correcto o no. En este captulo se aborda la programacin
de Java 2 y de su relacin con las funcionalidades de Java 3D.
El ltimo captulo aborda las conclusiones a las que se llegaron con este trabajo, las pruebas
y resultados as como su aportacin para el desarrollo para trabajos futuros. Adems
contiene los trabajos de pruebas y resultados que se llevaron durante la realizacin del
presente.
7

Captulo 2
Marco Terico
El marco terico est dividido en dos secciones. En la primera se hablar de los
conocimientos bsicos de software necesarios para comprender los siguientes captulos con
definiciones tales como realidad virtual, Java, Java 3D. En la segunda parte de este captulo
se abordaran los conceptos de hardware, como el uso del brazo robtico, as como lo
referente a los motores que usa.

2.1 Realidad Virtual


Realidad virtual es un sistema informtico que genera entornos artificiales, con una
representacin de las cosas a travs de medios electrnicos o representaciones de la
realidad.
La realidad virtual puede ser de dos tipos: inmersiva y no inmersiva. Los mtodos
inmersivos de realidad virtual con frecuencia se ligan a un ambiente tridimensional creado
por una computadora o arreglos de computadoras, el cual se manipula a travs de cascos,
guantes u otros dispositivos que capturan la posicin y rotacin de diferentes partes del
cuerpo humano. La realidad virtual no inmersiva tambin utiliza la computadora y se vale
de medios como el que actualmente ofrece VRML1, Java 3D o bien algunos sitios de
Internet, en los cuales se interacta con diferentes personas en espacios y ambientes que en
realidad no existen y no necesitan dispositivos adicionales a la computadora.
La realidad virtual no inmersiva ofrece un nuevo mundo a travs de una ventana de
escritorio. Este enfoque tiene varias ventajas sobre el inmersito, como son el bajo costo,
facilidad de uso y rpida aceptacin de los usuarios. Los dispositivos inmersivos son de alto
costo y generalmente el usuario prefiere manipular el ambiente virtual por medio de
dispositivos familiares como son el teclado y el ratn que por medio de cascos pesados o
guantes.

2.2 JAVA 2
1

Virtual Reality Modeling Language Lenguaje de Modelado de realidad

Java es un lenguaje de programacin orientado a objetos desarrollado por Sun


Microsystems a principios de los aos 90. El lenguaje en s mismo toma mucha de su
sintaxis de C y C++, pero tiene un modelo de objetos ms simple y elimina herramientas de
bajo nivel, que suelen inducir a muchos errores, como la manipulacin directa de punteros
o memoria.

Java Platform, Enterprise Edition o Java EE (anteriormente conocido como Java 2


Platform, Enterprise Edition o J2EE hasta la versin 1.4), es una plataforma de
programacinparte de la Plataforma Javapara desarrollar y ejecutar software de
aplicaciones en lenguaje de programacin Java con arquitectura de n niveles distribuida,
basndose ampliamente en componentes de software modulares ejecutndose sobre un
servidor de aplicaciones.

La plataforma Java EE est definida por una especificacin. Similar a otras


especificaciones del Java Community Process, Java EE es tambin considerada
informalmente como un estndar debido a que los suministradores deben cumplir ciertos
requisitos de conformidad para declarar que sus productos son conformes a Java EE; no
obstante sin un estndar de ISO o ECMA.

2.3 Java 3D
Java 3D es una interfaz de comunicaciones que permite escribir programs para
representar e interactuar con grficos en tres dimensiones. Java 3 D es la normal extensin
de Java 2D. la API de Java 3D provee de refinados constructores para crear y manipular de
objetos y estructuras en 3D con pocas instrucciones se pueden crear visualizaciones,
animaciones y rederivaciones en 3D.

Java 3D es una sofisticada jerarqua de clases que permite tanto la creacin de grficos
como de sonidos en tres dimensiones, programados a un alto nivel para crear y manipular
datos geomtricos en 3D. Estos objetos existen un universo virtual que ms tarde son
renderizados (representados). La API se ha diseado con la flexibilidad suficiente para
crear universos virtuales de gran variedad de tamaos (del grado astronmico al atmico).
Los smbolos que presentamos a continuacin se estructuran de la siguiente manera. Los
dos primeros smbolos representan objetos de las clases especficas Universo Virtual
(Virtual Universe) y Local (Local). Las tres siguientes clases representan objetos de Grupo
(Group), Hoja (Leaf) y componentes de nodo (Node Component). Estos tres smbolos
suelen especificarse para indicar subclases de un objeto especfico. El ltimo smbolo se

usa para representar cualquier otra clase de objeto. La figura 2.1 expresa lo que sera la
simbologa de Java 3D.

Nodes y Node Comnponents (objetos)

Virtual Universe

Leaf

Locale

Node
Component

Group

Otros
Objetos

Figura 2.1 Simbologa de Java 3D

Adems de las clases de objetos tambin podremos usar dos tipos de flechas. La flecha
continua representara la relacin de dependencia padre hijo (parent-child) entre dos
objetos. La lnea punteada har referencia (referente) a otro tipo de objetos de otras rams
del rbol. Por lo que el nmero de flechas que puedan salir de un objeto no estn limitadas
a una. La forma en que se dibujan las flechas la podemos ver la figura 2.2. [10][11]
Flechas (relaciones entre objetos)

parent.child link

reference
Figura 2.2 Flechas de Java 3D

10

2.4 Brazo Robtico


Se utiliz un brazo robtico de la compaa Lyxmotion que tiene cinco grados de libertad y
el movimiento una pinza[17].

Figura 2.5 Brazo Robtico Lynx 6

El brazo robtico cuenta con movimientos de hombro, codo, movimiento de la mueca,


rotacin de la mueca y una pinza. Este brazo robtico es controlado mediante el puerto
serie usando el software RIOS implementado por a compaa Lynx. El brazo incluye cuatro
servomotores HI-TEC HS-475. La base usa un servo motor HS-422. Adems de los
servomotores HS-85 y el servo HS-81 el cual es para la pinza.

2.6 Servomotores
Un servomotor es un dispositivo similar a un motor de corriente continua, que tiene la
capacidad de ubicarse en cualquier posicin dentro de su rango de operacin, y mantenerse
estable en dicha posicin. Est conformado por un motor, una caja reductora y un circuito
de control.

11

2.6.1 Estructura interna del Servomotor

2.6.1.1 Motor de corriente contina


Es el elemento que le brinda movilidad al servo. Cuando se aplica un voltaje a sus dos
terminales, este motor gira en un sentido a su velocidad mxima. Si el voltaje aplicado sus
dos terminales es inverso, el sentido de giro tambin se invierte.
Engranajes reductores, se encargan de convertir gran parte de la velocidad de giro del
motor de corriente continua en torque.

2.6.1.2 Circuito de control


Este circuito es el encargado del control de la posicin del motor. Recibe los pulsos de
entrada y ubica al motor en su nueva posicin dependiendo de los pulsos recibidos.

2.6.1.3 Terminales
Los servomotores tienen 3 terminales:
Terminal positivo: Recibe la alimentacin del motor (4 a 8 voltios)
Terminal negativo: Referencia tierra del motor (0 voltios)
Entrada de seal: Recibe la seal de control del motor
Los colores del cable de cada terminal varan con cada fabricante: el cable del terminal
positivo siempre es rojo; el del terminal negativo puede ser marrn o negro; y el del
terminal de entrada de seal suele ser de color blanco, naranja o amarillo. A continuacin
en la tabla 2.1 podemos ver las diferencias entre colores de terminales de cada uno de los
servos de diferentes compaas.
Fabricante
HI-TEC
Futaba
JR
Airtronics
Fleet
Kraft

Positivo
Rojo
Rojo
Rojo
Rojo
Rojo
Rojo

Negativo
Negro
Negro
Negro
Marron
Negro
Negro

Entrada de seal
Amarillo
Blanco
Naranja
Naranja
Blanco
Naranja

Tabla 2.1 Tabla de Fabricantes

En este caso los servomotores del brazo mecnico implementado son HI-TEC.
Dependiendo del modelo del servo, la tensin de alimentacin puede estr comprendida
entre los 4 y 8 voltios. El control de un servo se reduce a indicar su posicin mediante una
12

seal cuadrada de voltaje. El ngulo de ubicacin del motor depende de la duracin del
nivel alto de la seal. Cada servo motor, dependiendo de la marca y modelo utilizado, tiene
sus propios mrgenes de operacin.
Para bloquear el servomotor en una posicin, es necesario enviarle continuamente una seal
con la posicin deseada. De est forma el servo conservar su posicin y se resistir a
fuerzas externas que intenten cambiarlo de posicin. Si los pulsos no se envan, el
servomotor queda liberado, y cualquier fuerza externa puede cambiarlo de posicin
fcilmente. En la figura 2.se aprecia la forma fsica de un servo de la marca HI-TEC.

Figura 2.3: Servo HI-TEC-322HD

2.7 Puerto Serie


Un puerto de serie es una interfaz de comunicaciones y perifricos en donde la informacin
es transmitida bit a bit enviando un solo bit a la vez, en contraste con el puerto paralelo que
enva varios bits simultneamente.

2.7.2 Puerto serie tradicional


El puerto serie RS-232 (tambin conocido como COM) por excelencia es el que utiliza
cableado simple desde 3 hilos hasta 25 y que conecta computadoras o microcontroladores a
todo tipo de perifricos, desde terminales a impresoras y mdems pasando por ratones.
La interfaz entre el RS-232 y el microprocesador generalmente se realiza mediante el
integrado 82C50.
El RS-232 original tena un conector tipo D de 25 pines, sin embargo la mayora de dichos
pines no se utilizaban, por lo que IBM incorpor desde su PS/2 un conector ms pequeo
de solamente 9 pines que es el que actualmente se utiliza.

13

2.7.3 Puertos serie modernos


Uno de los defectos de los puertos serie iniciales era su lentitud en comparacin con los
puertos paralelos -hablamos de 19.2 kbits por segundo- sin embargo, con el paso del
tiempo, estn apareciendo multitud de puertos serie de alta velocidad que los hacen muy
interesantes ya que utilizan las ventajas del menor cableado y solucionan el problema de la
velocidad con un mayor apantallamiento, siendo ms barato usando la tcnica del par
trenzado. Por ello, el puerto RS-232 e incluso multitud de puertos paralelos estn siendo
reemplazados por nuevos puertos serie como el USB, el Firewire o el Serial ATA.

2.7.4 Tipos de comunicaciones seriales


2.7.4.1.1 Simplex
En este caso el transmisor y el receptor estn perfectamente definidos y la
comunicacin es unidireccional. Este tipo de comunicaciones se emplean
usualmente en redes de radiodifusin, donde los receptores no necesitan enviar
ningn tipo de dato al transmisor.

2.7.4.1.2 Duplex, half duplex o semi-duplex


En este caso ambos extremos del sistema de comunicacin cumplen funciones de
transmisor y receptor y los datos se desplazan en ambos sentidos pero no
simultneamente. Este tipo de comunicacin se utiliza habitualmente en la
interaccin entre terminales y una computadora central.

2.7.4.1.3 Full Duplex


El sistema es similar al duplex, pero los datos se desplazan en ambos sentidos
simultneamente. Para ello ambos transmisores poseen diferentes frecuencias de
transmisin o dos caminos de comunicacin separados, mientras que la
comunicacin semi-duplex necesita normalmente uno solo.

2.7.5 8orma RS-232


La Norma RS-232 fue definida para conectar un computadora a un mdem. Adems de
transmitirse los datos de una forma serie asncrona son necesarias una serie de seales
adicionales, que se definen en la norma. Las tensiones empleadas estn comprendidas entre
+15/-15 voltios. En la figura 2.4 podemos visualizar los pines del DB-9.

14

TX
RX
RS
CTS
|
DSR
Computadora
DCD
Figura 2.4 Norma RS232
DTR
RI
GND
Figura 2.4 Pines del DB9

2.8 Microcontroladores PIC


La arquitectura de los PIC [18] est basada en la arquitectura Harvard1, con memorias de
programa y datos de programa separados. Como en la mayora de los microcontroladores la
memoria de programa es mucho mayor que la memoria de datos. La memoria de programa
est organizada en palabras de 12, 14 16 bits, mientras que la memoria de datos est
compuest por registros de 8 bits. El acceso a los diversos dispositivos de entrada y salida
se realiza a travs de algunos registros de la memoria de datos, denominados registros de
funciones especiales (SFR: Special Function Register). Muchos microcontroladores PIC
cuentan con una cierta cantidad de memoria EEPROM para el almacenamiento no voltil
de datos.
Desde el punto de vista del programador, el modelo general de los microcontroladores PIC
consta de un registro de trabajo (registro W) y los registros de la memoria de datos. Para las
operaciones aritmticas y lgicas, uno de los operndos debe est en el registro W y el
resultado se obtiene en W o en cualquier registro de la memoria de datos. Las transferencias
de datos se realizan entre algn registro de la memoria de datos y el registro W, aunque en
los PIC de la gama alta se permiten transferencias directas entre registros de la memoria de
datos, sin necesidad de pasar por el registro W. Se dispone de instrucciones para acceder a
cualquier bit de cualquier registro de la memoria de datos.
Todos los microcontroladores PC aplican la tcnica del segmentado (pipeline) en ejecucin
de las instrucciones, en dos etapas, de modo que las instrucciones se ejecutan en un nico
ciclo de
instruccin, equivalente a cuatro ciclos del oscilador principal del
microcontrolador, excepto las instrucciones de transferencia de control que toman dos
ciclos d e instruccin.
1

Arquitectura Harvard - Es aquella que divide los datos y las instrucciones en localidades de datos,
dividiendo los buses de direccionamiento.

15

Otra caracterstica comn de los microcontroladores PIC es la forma en que est


implementada la pila. La pila no forma parte de la memoria de datos sino que ocupa un
espacio independiente y tiene adems una profundidad limitada, segn el modelo de PIC.
En estos microcontroladores no hay un puntero de pila (registro SP: stack pointer), tan
comn en la mayora de los microprocesadores y en muchos microcontroladores.
Muchos microcontroladores PIC pueden ser programados en el propio circuito de
aplicacin (ICSP: IN-Circuit Serial Programming), utilizando un pequeo nmero de lneas
[12].En la figura podemos ver la arquitectura interna del PIC16F628

Figura 2.5 Arquitectura Interna del PIC16F628

16

Captulo 3
3.1 Implementacin del Brazo Robtico
El software nativo del brazo robtico viene con un software llamado RIOS el cual
permite su control (vase figura 3.1).

Figura 3.1 Interfaz RIOS 1

La siguiente interfaz (vase figura 3.2) nos permite tener un control de todos los
servomotores y darles un giro seleccionndolos. Habilitando el motor en este caso, se
puede observar que todos los servos estn habilitados, y el movimiento se realiza
deslizando las barras hacia arriba o hacia abajo.

Figura 3.2 Movimiento de las Extremidades con la Interfaz RIOS

17

3.2 Capas de aplicacin del Trabajo


Este trabajo est formado por cuatro capas, una donde se encuentra la aplicacin grfica,
otra que controla los eventos del teclado que tendr la comunicacin bidireccional con la
aplicacin grafica, una ms que se encarga de la comunicacin con el puerto serie y
finalmente una capa fsica que recibe la informacin del puerto serie y manda informacin
al brazo robtico tal como lo muestra la figura 3.3.

Aplicacin Grafica
(Creacin de la Escena)

Eventos del Teclado

Comunicacin Serie

Interfaz del Microtontrolador

Figura 3.3 Capas de Aplicacin del Brazo Robtico

3.3 Integracin de clases en el proyecto


El trabajo est integrado
funcionalidad, la primera de
principal que se encuentra
principal.java. Est clase se

por 3 clases las cuales estn divididas de acuerdo a su


ellas es la creacin de la escena, el nombre de est clase es
en el archivo principal.class y su cdigo en el archivo
ayuda de dos clases secundarios, una para la creacin de la

18

figuras llamado figuras.class, y su cdigo modificable se encuentra en figuras.java.


Finalmente se tiene la clase comportamiento que se encarga de recibir los estmulos por
parte del usuario para darle un movimiento. La integracin de estos modulo los podemos
visualizar en la figura 3.4.

Figura 3.4 Relacin de Clases

3.4 Diseo e Implementacin del Brazo Robtico Virtual


(Aplicacin Grfica)
El brazo robtico est conformado por la unin de varios objetos bsicos como cilindros y
cajas estndo organizados de tal manera que le dan forma a un brazo robtico virtual. Sin
embargo para esto es necesario desplazar cada figura y rotarla de tal manera que queden en
la posicin deseada.
Despus es necesario colorear la figura y agregarle una apariencia. Finalmente a todo el
brazo robtico ser necesario agregar una luz direccional para crear en el usuario la
apariencia de que el objeto est siendo iluminado de frente. Finalmente se realiza la
animacin del brazo robtico virtual. Est animacin se efectuar cuando el usuario realiza
una interaccin con est tendr que moverse de acuerdo al lugar que el usuario especifico.
Todas ests funcionalidades se han dividido en pequeos mdulos que realicen esa tarea los
cuales son el dibujo del brazo robtico virtual, la programacin del movimiento de acuerdo
a la interaccin con el usuario .Estos mdulos se dividen en ms subtareas bsicas que
permiten realizar la programacin de una manera ms sencilla.

3.5 Creacin del Universo Virtual


Por principio es necesario realizar el diseo de la escena de nuestro entorno virtual en la
siguiente figura 3.5 se muestra el diagrama de la escena del brazo robtico. Podemos
observar que el diseo del diagrama del la escena no es muy complejo puesto que contiene
los elementos esenciales de cualquiera. El primer elemento se ve de arriba hacia abajo es

19

un rectngulo con sus esquinas redondeadas adems est relleno con lneas transversales y
que est representa nuestro universo virtual de la escena.
A su vez este universo contiene un universo ms pequeo que es de mbito local el cual es
representado por el rombo, ms adelante se observa que de este rombo se desprenden dos
ramas, una rama que nos va a representar grficamente a nuestros objetos (se encarga del
tamao de la ventana, tipo de soporte grafico dado el sistema operativo etc.) que
conocemos como rama de representacin o que llamamos universo simple.
La otra rama se le llama rama de contenido y contiene los objetos. Como son objetos de
transformacin, objetos behavior lo cual rige el comportamiento de nuestra figura durante
su ejecucin y finalmente hasta abajo un hijo de nuestros objetos de transformacin est
nuestro brazo robtico que en como ver ms adelante es una suma de varios elementos
bsicos como cajas y cilindros. Se ver que cada figura bsica contiene una apariencia y
una geometra (vase figura 3.5).

TG

Universo
Simple

TG

Brazo
Robtico
Figura 3.5 Diagrama de la Escena del Brazo Robtico Virtual

20

El rectngulo del brazo robtico est conformado por varias figuras primitivas, con una
rotacin especfica su rama de representacin se muestra en la figura 3.6 la cual seria la
rama de contenido de nuestro brazo robtico para cada figura primitiva.

BG

Objeto Raz
(objRoot)

TG

Objeto (objSpin)
Transformacin

TG
Objeto Traslacin
TG

Shape 3D

S
Geometra

Apariencia

Caja o Cilindro
Box o Cylinder

Figura 3.6 Rama de Contenido General

La rama de contenido del brazo robtico est constituida por la suma de varias figuras
primitivas que son cajas y cilindros, ahora bien en la figura anterior se visualizan varios
objetos que constituyen la rama de contenido el primero es un objeto raz que necesitamos
para interconectar nuestra rama de contenido con el universo virtual, despus podemos
observar un Objeto de Transformacin sobre el cual vamos a ligar los otros objetos que
tenemos abajo, sobre este objeto va a tener incidencia la clase comportamiento que es la
que nos va a dar un comportamiento de cada objeto en general. Ms adelante tenemos un
objetos de Traslacin que va a mover a la figura del origen a otro punto en el plano x, y y z

21

(ms adelante explicaremos como Java 3D interpreta las coordenadas x ,y , z en el universo


local que es nuestro monitor.).
Como hijo se tiene el objeto de rotacin que es el que vamos a rotar sobre las coordenadas
x, y y z. Y como rama final se tiene a nuestra figura 3.7 que depende de la clase
SHAPE3D cuya clase nos proporciona figuras primitivas que nosotros podemos utilizar.
Est debe de tener una geometra y una apariencia para que pueda ser vista por el usuario.
Se usan finalmente ocho cajas y siete cilindros para darle forma al brazo robtico.

Figura 3.7 Rama de Contenido Figuras que conforman al brazo robtico

22

3.6 Rotacin en Java 3D


Para abordar este tema hay que entender bien primero cmo se efecta la rotacin en Java
3D. Los ejes que usamos son los ejes convencionales de tres dimensin el eje x , el eje y y
el eje z que se usa para darle profundidad a una imagen de dos dimensiones. La percepcin
del usuario ser que los objetos se movern de izquierda a derecha, usando el eje x, los
objetos se desplazaran de arriba hacia abajo con el eje y y finalmente tendr la percepcin
de que estos se acercan o alejan con el eje z .En la figura 3.8 podemos ver los ejes
cartesianos usado por Java 3D

z
Figura 3.8 Ejes X,Y,Z

Ahora bien las rotaciones se harn respecto al eje que se desee rotar ya sea el eje X, y o Z y
sobre ese eje se rotara como se muestra en la siguiente imagen. Adems es necesario crear
un objeto de rotacin de tipo Transform3d par eso es necesario declara el objeto de rotacin
Transform3D rotacion=new Transform3D();
Trs haber creado el objeto de rotacin podremos usar el mtodo de rotacin rotX, rotY o
bien rotZ
Transform3D rotacion=new Transform3D();
rotacion.rotX(Math.PI/4);
El objeto rotar en radianes, para rotarlo 45 este tendr que rotar PI/4 y as para todas las
rotaciones. Un ejemplo lo podemos ver en la figura 3.9. y en la figura 3.10 podemos ver
como seria la rotacin en Java 3D.

23

El objeto girara respecto al eje X

z
Figura 3.9 Rotacin en X de un cubo

Figura 3.10 Rotacin de un Cubo en Java 3D a) Imagen sin rotar b) Imagen Rotada 45

Finalmente es posible combinar cada rotacin usando el mtodo mul como se observa a
continuacin, y guardar el resultado de esa multiplicacin en el objeto Tranform3D que se
desee.

rotacion.rotX(Math.PI/4);
rotacion2.rotY(Math.PI/3.0d);

//giramos el objeo alrededor del eje y

rotacion.mul(rotacion2);

24

3.7 Clase Figuras


Para realizar el modelado del brazo robtico como se haba comentado antes fue necesario
la realizacin de una clase que dibujar modularmente cada una de sus partes del. Se
aprovecharon las figuras primitivas como son caja (Box) y cilindro (Cylinder). Para esto
fue necesaria la programacin de una clase llamada figuras la cual consta de dos mtodos,
una para dibujar el cilindro y otra para dibujar la caja, adems de un mtodo adicional el
cual es Appearance el cual le va a dar una apariencia a cada una de las figuras que se usen.

3.7.1 Mtodo DibujarFigurasCili()


Este es un mtodo pblico que devuelve un objeto TransforGroup que ms tarde se
agregara a la hoja de nodos de la escena. Los parmetros que recibe este mtodo son, el
radio y el alto del cilindro, as como su traslacin en x, en y y en z, tambin recibir los
parmetros de rotacin en x, y y en z, finalmente recibir el objeto que la figura tendr. Ms
adelante crearemos un objeto para realizar la traslacin del objeto geomtrico, este objeto
ser de tipo Transform3D se necesitaran otros objetos auxiliares para la rotacin de nuestra
figura geomtrica.
public TransformGroup DibujarFigurasCili(float radio,float alto,
float traslacion_x,float traslacion_y,float traslacion_z,
double rotacion_x,double rotacion_y,double rotacion_z,
float red,float green, float blue){
Transform3D translateCilindro1=new Transform3D();
Transform3D RotTmp2=new Transform3D();
Transform3D RotTmp2_1=new Transform3D();
Transform3D RotTmpZ=new Transform3D();
translateCilindro1.set(new Vector3f(traslacion_x,traslacion_y,
traslacion_z));
RotTmp2.rotX(rotacion_x);
RotTmp2_1.rotY(rotacion_y);
RotTmpZ.rotZ(rotacion_z);
RotTmp2.mul(RotTmp2_1);
RotTmp2.mul(RotTmpZ)
TransformGroup objTranslate= new TransformGroup(translateCilindro1);
TransformGroup objRotado=new TransformGroup(RotTmp2);
objTranslate.addChild(objRotado);
objRotado.addChild(new Cylinder(radio,alto,app(red,green,blue)));
return objTranslate;
}

25

3.7.2 Mtodo DibujarFigurasCajas()


El mtodo DibujarFigurasCajas, es un mtodo anlogo al de dibujar cilindros, su diferencia
radica en el paso de parmetros de sus dimensiones fsicas. Ya que recibir 3 medidas que
corresponden al alto, ancho y largo. Este mtodo devolver al igual que su mtodo hermano
un objeto TransformGroup
public TransformGroup DibujarFigurasCaja(float medida1,float medida2,
float medida3,
float traslacion_x,float traslacion_y,float traslacion_z,
double rotacion_x,double rotacion_y,double rotacion_z,
float red,float green, float blue ){

Transform3D translateCilindro1=new Transform3D();


Transform3D RotTmp2=new Transform3D();
Transform3D RotTmp2_1=new Transform3D();
Transform3D RotTmpZ=new Transform3D();
translateCilindro1.set(new Vector3f(traslacion_x,traslacion_y,
traslacion_z));
RotTmp2.rotX(rotacion_x);
RotTmp2_1.rotY(rotacion_y);
RotTmpZ.rotZ(rotacion_z);
RotTmp2.mul(RotTmp2_1);
RotTmp2.mul(RotTmpZ);
TransformGroup objTranslate= new TransformGroup(translateCilindro1);
TransformGroup objRotado=new TransformGroup(RotTmp2);

objTranslate.addChild(objRotado);
objRotado.addChild(new Box(medida1,medida2,medida3,
Primitive.GENERATE_TEXTURE_COORDS |
Primitive.ENABLE_GEOMETRY_PICKING,
app(red,green,blue)));
return objTranslate;
}

3.7.3 El mtodo app().


EL mtodo app() devolver un objeto Appearance y recibir como parmetro tres flotantes,
estos indicaran el color de la figura. Como en los casos anteriores necesitamos la creacin
de un objeto de apariencia, as como crear un objeto ColoringAttributes llamado coloAtt y
como parmetros para su constructor sern sus caractersticas de transformacin
public Appearance app(float a,float b, float c){
Appearance app= new Appearance();
ColoringAttributes coloAtt=
new ColoringAttributes(a,b,c,

26

ColoringAttributes.ALLOW_COLOR_WRITE);
app.setColoringAttributes(coloAtt);
Material objMaterial = new Material( );
objMaterial.setDiffuseColor( a, b, c );
app.setMaterial( objMaterial );
return app;
}

3.8 Dibujo del Brazo Robtico


Finalmente dibujaremos el brazo robtico llamando en orden a cada uno de los mtodos
que dibujan cada una de nuestras figuras, para que quede finalmente de la forma que queda
en la figura 3.11

Figura 3.11 Brazo Robtico Virtual

3.9 La clase comportamiento


Se necesito la clase comportamiento para crear una interaccin del usuario con el entorno
virtual y para esto necesitamos crear un objeto behavior. Todo Objeto behavoir deber
contener un constructor en este caso el constructor recibe el mismo nombre de la clase, el
cual recibe el nombre de comportamiento, adems deber contener dos mtodos bsicos
para el manejo de los eventos que el usuario introduzca, los cuales son initialize; el cual
inicializar los paramentos, as como un mtodo de respuest llamado processStimulus este
estimulo lo provocara el usuario.

27

3.9.1 El constructor de la clase Comportamiento


El objeto Comportamiento ser creado desde la clase onceavo, en la cual estblecemos los
parmetros de la escena. Este recibiera todas las hojas de todos los elementos del brazo
robtico, esto con la finalidad para que se puedan mover de manera independiente.
Podemos observar en el siguiente segmento de cdigo que el objeto recibir 13 hojas de la
escena.
public Comportamiento(TransformGroup modificarTG,
TransformGroup modificar1TG,
TransformGroup modificar2TG,
TransformGroup modificar3TG,
TransformGroup modificar4TG,
TransformGroup modificar5TG,
TransformGroup modificar6TG,
TransformGroup modificar7TG,
TransformGroup modificar8TG,
TransformGroup modificar9TG,
TransformGroup modificar10TG,
TransformGroup modificar11TG,
TransformGroup modificar12TG,
TransformGroup modificar13TG)

El constructor de la clase Comportamiento lo nico que realiza es la asignacin de las


Variables transformGroup y la creacin de un evento para leer la entrada estndar del
teclado. Estos estmulos son controlados por el mtodo WakeupOn.
this.modificarTG=modificarTG;
this.modificar1TG=modificar1TG;
this.modificar2TG=modificar2TG;
this.modificar3TG=modificar3TG;
this.modificar4TG=modificar4TG;
this.modificar5TG=modificar5TG;
this.modificar6TG=modificar6TG;
this.modificar7TG=modificar7TG;
this.modificar8TG=modificar8TG;
this.modificar9TG=modificar9TG;
this.modificar10TG=modificar10TG;
this.modificar11TG=modificar11TG;
this.modificar12TG=modificar12TG;
this.modificar13TG=modificar13TG;
AWTEventCondition = new WakeupOnAWTEvent(KeyEvent.KEY_PRESSED);

28

3.9.2 El mtodo initialize y ProcessStimulus


El mtodo initialize se active sol una vez cuando el usuario pulsa una tecla. Las veces
sucesivas que el usuario pulse una tecla llamar al mtodo ProcessStimulus el cual mandar
una seal al brazo robtico de acuerdo a la tecla qu se pulso que motor debe mover.
public void initialize()
{
this.wakeupOn(AWTEventCondition);
}

3.10 Eventos del Teclado


El mtodo ProcessStimulus es el que se estr llamando cada que el usuario pulse una tecla
y cada tecla activa un movimiento del brazo robtico como se muestra en la tabla 3.1.
Tecla
q
w
e
r
t
y
u
i
o
p
a
s

Accin
Movimiento de la Base a la Derecha
Movimiento de la Base a la Izquierda
Movimiento del Hombro hacia adelante
Movimiento del Hombro hacia atrs
Movimiento codo hacia abajo
Movimiento codo hacia arriba
Movimiento Mueca hacia abajo
Movimiento Mueca hacia arriba
Rotacin Mueca en el sentido del reloj
Rotacin Mueca en el sentido negativo del reloj
Cerrar Pinzas
Abrir Pinzas
Tabla 3.1 Acciones del Teclado

El siguiente fragmento de cdigo nos indica la accin que se obtiene de pulsar en el teclado
la tecla q minscula, el cual activara a una funcin llamada MoverbrazoRelojPos( )
adems de que escribir en el puerto serie el valor uno el cual lo recibir el
microcontrolador.
public void processStimulus( java.util.Enumeration enumeration )
{
AWTEvent [] evt =((WakeupOnAWTEvent)AWTEventCondition).getAWTEvent();

29

if (AWTEventCondition.hasTriggered()){
for(int i=0;i<evt.length;i++){
if(((KeyEvent)evt[i]).getKeyChar()=='q'){
moverY=MovebrazoRelojPos( );
System.out.println("Movimiento Base Negativo");
escribe('1');

}
}
this.wakeupOn(AWTEventCondition);
}

30

Captulo 4
4.1 Desarrollo de la interfaz de comunicaciones en JAVA
Una de las interfazs ms usada entre la computadora dispositivos externos con la
computadora es el puerto serie y esto nos permite conectarnos con el mundo exterior. Para
esto usamos un API de comunicaciones de JAVA, constituido por el paquete javax.comm,
que proporciona JavaSoft por lo que este conjunto de clases no forma parte del JDK (Java
Development Kit). Con est API es posible realizar comunicaciones con el puerto serie, un
MODEM o bien manipular el puerto paralelo. La semntica que utiliza est API es similar a
la semntica que se utiliza con las clases de entrada y salida que ya se conocen en JAVA y
que forman parte del JDK bsico del conjunto de bibliotecas de JAVA. El API de
javax.comm nos permite enviar y recibir informacin al puerto serie. Sin embargo en la
aplicacin solo se usa una comunicacin unidireccional. Para esto es necesario
proporcionar un conjunto de parmetros como son: velocidad de transmisin, bus de datos,
paridad, bits de parada y si usa un control de flujo. Se describir las capas de
comunicaciones en la figura 4.1.

Figura 4.1 Capas de Comunicacin

4.2 Comunicacin con un dispositivo externo (Uso de la


biblioteca javax.comm)
El trabajo que se realiza en la capa de comunicaciones son los siguientes: Abrir el
dispositivo y acondicionar la lnea a la velocidad, paridad, etc. que se requiera. Escribir o

31

leer algunos datos siguiendo el protocolo especificado. En este caso se le enviarn los
caracteres 1, 2,3,4,5,6,7,8,A,B,C. Finalmente se cerrara el puerto.

4.2.1 acceso al puerto serie


Lo primero que se tendr que hacer es declarar la variable necesaria para la inicializacin
del puerto serie como se muestra a continuacin:
Se declarar una variable de tipo Enumeration para insertas todos los posibles puertos que
encontremos como por ejemplo el COM1,COM2, etc.
static Enumeration listaPuertos;

Se declarara una variable CommPortIdentifier que nos servir para darle un identificador al
puerto que deseemos utilizar.
static CommPortIdentifier idPuerto;

Declararemos una variable tipo SerialPort para nuestro puerto serie que manejaremos
durante toda la ejecucin del programa.
static SerialPort puertoSerie;

Necesitamos una variable de tipo OutputStream para escribir en el puerto Serie en el pin de
transmisin.
Static OutputStream salida;

Empezamos buscando todos los puertos que existen en la computadora con el mtodo
getPortIdentifiers de la clase CommPortIdentifier y estos valores se los vamos a asignar a la
matriz que declaramos con anterioridad declarada listaPuertos , como es posible que
encontremos ms de un elementos necesitamos almacenar todos ellos en listaPuertos.
Despus necesitamos identificar que tipo de puerto usaremos, puerto paralelo o serie nos
valemos del mtodo get.PortType() para identificarlo. Finalmente el puerto que
emplearemos ser el COM1, por lo que lo buscaremos en nuestro arreglo.
listaPuertos = CommPortIdentifier.getPortIdentifiers();
while( listaPuertos.hasMoreElements() ) {
idPuerto = (CommPortIdentifier)listaPuertos.nextElement();
if( idPuerto.getPortType() == CommPortIdentifier.PORT_SERIAL ) {
if( idPuerto.getName().equals("COM1") ) {

32

Para abrir el puerto Serie necesitaremos del mtodo open el cual recibir dos parmetros el
nombre que le daremos a est conexin as como el tiempo que tendr que esperar por los
datos en este caso 2000 milisegundos.
try {
puertoSerie = ( SerialPort )idPuerto.open("AplEscritura",2000);
} catch( PortInUseException e ) {}

Ahora necesitaremos un canal de salida para poder escribir en el puerto Serie y esto lo
obtenemos con el mtodo getOutputStream que no recibe parmetros y que devolver el
valor a nuestra variable salida que es de tipo OutputStream.
try {
salida = puertoSerie.getOutputStream();
} catch( IOException e ) {}

4.2.2 Fijar los parmetros de comunicacin


Para fijar los parmetro de comunicacin usaremos el mtodo setSerialPortParams().El cual
recibir como parmetros la velocidad de transmisin que sera de 9600 bauds .El segundo
parmetro ser el numero de bits que enviaremos, el cual ser de ocho. El tercero se refiere
a los bits de parada que ser un bit de parada. Y finalmente el ultimo argumento que
recibir ser los bits de paridad, en este caso no fue necesario el uso de bits de paridad.
Adems necesitamos estblecer que no necesitamos estblecer control de flujo, el cual no
necesitamos usamos el mtodo setFlowControlMode().
try {
puertoSerie.setSerialPortParams( 9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_8O8E );
puertoSerie.setFlowControlMode(SerialPort.FLOWCO8TROL_8O8E);
} catch( UnsupportedCommOperationException e ) {}
}

33

4.2.3 Mtodo escribe()


Para escribir en el puerto serie fue necesario la escritura del mtodo escribe() dentro de la
clase comportamiento. ste recibir un carcter y lo enviar por el puerto serie hacia el
microcontrolador
public void escribe(char a){
try {
salida.flush();
salida.write(a);
System.out.println(a);
} catch (IOException ex) {
Logger.getLogger(comportamiento.class.getName()).log(Level.SEVERE, null, ex);
} }

4.3 Interfaz de control con el brazo robtico (cada uno de


los servos)
Para el control del servo fue necesario de dos microcontroladores uno que reciben un flujo
de informacin de la computadora a travs del puerto serie y adems que controlara el
movimiento de tres servos: el movimiento de la mueca, el movimiento de la mueca
cuando rota y finalmente la pinza que abre y que cierra. El segundo microcontrolador
refresca con un ancho de pulso 50Hhz adems de que actualizara sus valores que enva
desde la computadora .Este PIC controla la base, el hombro y el codo.

4.3.1 Primer microcontrolador


El primer microcontrolador recibe la informacin del puerto Serie y la distribuye la
informacin de la base, el hombro, el codo y el codo en este caso al segundo
microcontrolador, de la mueca, de la rotacin de la mueca de la accin abrir y cerrar
pinzas. Todo esto usando un switch-case y sacara las salidas en sus puertos A y B. El
primer microcontrolador slo controla los movimientos de la mueca, la rotacin de la
mueca y de abrir y cerrar pinzas los otros tres movimientos se los delega al segundo.

34

Include "modedefs.bas"
i var byte
tiempo var byte
aux var byte
aux2 var byte
aux3 var byte
aux4 var byte
aux5 var byte
aux6 var byte

uno:

PORTA.6=1
PAUSE 25
PORTA.6=0
return
dos: PORTA.7=1
PAUSE 25
PORTA.7=0
RETURN
tres: PORTA.0=1
PAUSE 25
PORTA.0=0
RETURN
cuatro: PORTA.1=1
PAUSE 25
PORTA.1=0
RETURN
cinco: PORTB.6=1
PAUSE 25
PORTB.6=0
RETURN
seis: PORTB.7=1
PAUSE 25
PORTB.7=0
RETURN
siete: IF aux4<250 THEN aux4=aux4+10
pulsout PORTB.3, aux4
RETURN
ocho: IF aux4>50 THEN aux4=aux4-10
pulsout PORTB.3, aux4
RETURN
nueve: IF aux5<250 THEN aux5=aux5+10
pulsout PORTB.4, aux5
RETURN
diez: IF aux5>50 THEN aux5=aux5-10
pulsout PORTB.4, aux5
RETURN
once: IF aux6<250 THEN aux6=aux6+10
pulsout PORTB.5, aux6
RETURN
doce: IF aux6>50 THEN aux6=aux6-10
pulsout PORTB.5, aux6
RETURN
END

dato var byte


CMCON = 7
'Deshabilitacin de comparadores
TRISA = $04 'Puerto A2 Como Entrada
TRISB = $00 'Todo el puerto B como salida
aux=150
aux2=150
aux3=150
aux4=150
aux5=150
aux6=150
push: serin PORTA.2, N9600, tiempo
CALL deco
pause 18
goto push
deco: select case tiempo
Case "1": CALL uno '120 x 10 uS,
considerando Osc de 4MHz
Case "2": CALL dos'1 y 2 base
Case "3": CALL tres
Case "4": CALL cuatro'3 y 4 hombro
Case "5": CALL cinco'cinco
Case "6": CALL seis'5 y 6 codo
Case "7": CALL siete
Case "8": CALL ocho '7 y 8 mueca
Case "9": CALL nueve
Case "A": CALL diez
'9 y A rotacion mueca
Case "B": CALL once
Case "C": CALL doce ' B y C pinza
end select
RETURN

4.3.2 Segundo microcontrolador


El segundo microcontrolador tiene el control de la Base, el hombro y el codo, esto por que
ests extremidades necesitan forzosamente que estn activas y recibiendo informacin todo
el tiempo por lo que la finalidad del segundo PIC es estr refrescando la informacin a
estos tres servos todos el tiempo hasta que reciba una orden del PICA de mover una

35

extremidad que el PICB control. Cabe mencionar que fue necesario esto debido el peso que
soportan ests extremidades impide que se sostengan
@ DEVICE MCLR_OFF, INTRC_OSC, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_OFF, PROTECT_OFF
Include "modedefs.bas"
tiempo var byte
Base var byte
Hombro VAR BYTE
Codo VAR BYTE
CMCON = 7
'Deshabilitacin de comparadores
TRISA = $FF
TRISB = $00
Base=150
Hombro=150
Codo=150
push: IF PORTA.0=1 THEN Hombro=Hombro+5'hombro
IF PORTA.1=1 THEN Hombro=Hombro-5'hombro
IF PORTA.2=1 THEN Codo=Codo+5'codo
IF PORTA.3=1 THEN Codo=Codo-5'codo
IF PORTA.6=1 THEN Base=Base+5'Base
IF PORTA.7=1 THEN Base=Base-5'Base
PULSOUT PORTB.0,Base
PULSOUT PORTB.1,Hombro
PULSOUT PORTB.2,Codo
PAUSE 18
goto push
END

4.4 Esquema del Circuito


Finalmente tenemos el esquema de interconexin de los circuitos PICA y PICB de
izquierda a derecha respectivamente.

36

Figura 4.2 Esquema del Circuito PICA izquierda PICB derecha

37

Captulo 5
5.1 Pruebas y Resultados
Durante el desarrollo del trabajo fue necesario realizar diversas pruebas, a cada una de las
capas del sistema.

5.1.1 Primera comunicacin a travs del puerto serie


Objetivo
Enviar una cadena de informacin por el puerto serie usando la biblioteca comm API 2.0 y
recibir la informacin a travs del puerto serie de otra computadora y visualizarlo con el
programa Hyperterminal.
Materiales Hardware
1 Computadoras
1 Cable serial Hembra-Hembra cruzado
Materiales Software
Netbeans 6.0
JDK 1.6
JRE 1.6
Comm API 2.0
Porgrama Hyperterminal de Windows1
Procedimiento
Lo que se realiz fue interconectar con el cable cruzado una computadora con la otra y
mostraremos la interconexin de las computadoras con el siguiente diagrama a bloques de
la figura 5.1.

El programa Hyperterminal ya no es incluido en Windows Vista por lo que si requieren realizar prueba en
Windows vista es necesario descargar un programa Hyperterminal gratuito.

38

Figura 5.1 Primera Comunicacin con le puerto serie

Ahora a continuacin se describe el siguiente diagrama de flujo (Vase Figura 5.2) que nos
da una idea bsica de lo que realiza el programa de comunicacin. La ejecucin del
programa se abre el puerto y enva una cadena y cierra el puerto.

Figura 5.2 Diagrama de Flujo de primera comunicacin con le Puerto Serie

En est prueba lo que se hizo fue escribir el cdigo bsico para abrir el puerto serie,
estblecer los parmetro de comunicacin tales como velocidad de transmisin el cual ser
de 9600 baudios, nmero de bits de datos que ser de ocho, el tipo de paridad que se usara
el cual usaremos la constante SerialPort.PARITY_NONE, los bits de parada que usaremos
que ser de un bit y finalmente el control de flujo el cual seleccionamos ninguno.
Finalmente teniendo el cdigo como se muestra en el siguiente cdigo.

39

public class PuertoSerial {


static Enumeration listaPuertos;
static CommPortIdentifier idPuerto;
static String mensaje = "Hola Mundo\n";
static SerialPort puertoSerie;
static OutputStream salida;
public static void main( String[] args ) {
listaPuertos = CommPortIdentifier.getPortIdentifiers();
while( listaPuertos.hasMoreElements() ) {
idPuerto = (CommPortIdentifier)listaPuertos.nextElement();
if( idPuerto.getPortType() == CommPortIdentifier.PORT_SERIAL ) {
if( idPuerto.getName().equals("COM1") ) {
try {
puertoSerie = ( SerialPort )idPuerto.open("AplEscritura",2000);
} catch( PortInUseException e ) {}
try {
salida = puertoSerie.getOutputStream();
} catch( IOException e ) {}
try {
puertoSerie.setSerialPortParams( 9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE );
} catch( UnsupportedCommOperationException e ) {}
try {
salida.write( mensaje.getBytes() );
System.out.println(mensaje);
salida.close();
} catch( IOException e ) {}

}
}
}
}
}

Finalmente se ejecuta el programa Hyperterminal en Windows, Cuando est abierto


crearemos una nueva conexin y la nombraremos como deseemos en este caso llamamos
ddd. Seleccionaremos el botn Resturar Predeterminados, y deberemos verificar que
tenga los mismos valores que maneja nuestro programa en java (vase la figura 5.3).

40

Figura 5.3 Hyperterminal

Observaciones
Se observo que la cadena de caracteres que se envi fue recibida de manera integra por la
hyperterminal.
Resultados
Al ejecutar el programa el programa envi la cadena Hola Mundo la cual fue recibida por
la hyperterminal.

Conclusiones
Se envi una cadena de datos e este caso el mensaje que fue enviado fue Hola Mundo el
cual para poder enviar este mensaje fue necesario estblecer los parmetros de
comunicacin como son, velocidad de transmisin, control de flujo, paridad, bits de datos,
bits de para y finalmente control de flujo. Se recibi la informacin usando e programa
Hyperterminal de Windows. Pero paras poder recibir esos datos fue necesario estblecer los
mismos parmetros antes mencionados. Tambin se descubri que la aplicacin
hyperterminal ya no viene dentro del paquete de aplicacin del sistema de Windows vista
por loo que se tuvo que descargar el paquete Hyperterminal Prvate Edicin

41

5.1.2 Controlar un servomotor usando el puerto serie


Objetivo
Enviar un carcter por el puerto serie, mismo que lo recibir un microcontrolador y
finalmente mover el servo moto si este es un dato valido. De lo contrario no realizara
ninguna accin.
Materiales Hardware
1 Computadora
1 Cable serie macho hembra
1 Copler1 Serie
1 PIC 16FC628
1 Servomotor HS-322
1 Terminal Molex2
Cable den numero 22 (telefnico ).
Materiales Software
Netbeans 6.0
JDK 1.6
JRE 1.6
Comm API 2.0
Porgramador universal de PICs3
Compilador PIC Basic PRO
MicroCodeStudio

Procedimiento
Lo que se desea hacer es mandar un carcter a travs del puerto serie y este que sea recibido
por el microcontrolador PIC para que sea procesado y de ser valido el carcter este mover
en alguna direccin el servomotor .En la figura 5.5 vemos el diagrama a bloque de la
aplicacin.

Un copler serie es una acoplador Serie-Serie tipo Hembra-Hembra.


Una Terminal molex es un puerto de tres terminales
3
Una Terminal molex es un puerto de tres terminales
2

42

Figura 5.5 Diagrama a bloques Manipulacin de


un servomotor desde el puerto serie

Ahora escribiremos el diagrama de flujo desprograma que se comunica con el puerto serie
(Vase Figura 5.6.A)y el diagrama de flujo del programa del microcontrolador (Vase
Figura 5.6.B.

Inicio

Lectura del Puerto


Serie

NO
Carcter
valido?
SI

Escribir en el bit 0
del puerto B

Figura 5.6 A) Diagrama de flujo de la comunicacin con el puerto Serie enviando un carcter. B)
Microcontrolador PIC recibiendo un carcter x y escribiendo un pulso en el puerto B de salida

43

A continuacin escribiremos u fragmento de cdigo el cual lee una entra del puerto serie y
la procesa, moviendo un servomotor.
tiempo var byte
aux var byte
CMCON = 7
'Deshabilitacin de comparadores
TRISA = $04 'Puerti A2 Como Entrada
TRISB = $00 'Todo el puerto B como salida
aux=150

push: serin PORTA.2, N9600, tiempo


IF tiempo=x THEN mover
PAUSE 18
GOTO push
mover: IF aux4<250 THEN aux=aux+10
pulsout PORTB.0, aux
RETURN
END

Observaciones
Se pudo observar que al llegar al pulso mximo el servomotor se detuvo
Resultados
Al ejecutar el programa este enviaba un carcter al PIC el cual al recibir en este caso el
carcter x minscula rotaba el servomotor a la derecha.

Conclusiones
Se envi un carcter por el puerto serie y este fue recibido por el microcontrolador, el cual
al recibir el carcter x minscula mova el servo a la derecha a la siguiente posicin,

44

5.1.3 Evolucin del brazo robtico


Durante el trabajo se creo una similitud entre el brazo robtico real y el brazo robtico
virtual. En la figura 5.7 vemos una ilustracin del brazo real.

Figura 5.7 Brazo Robtico Real

Lo primero que se hizo fue un modelado en VRML para tener una idea bsica de que
partes conformaran el brazo robtico y cmo se interconectara con figuras bsicas en este
caso con cajas y cilindros. En la figura 5.8 vemos una imagen hecha en VRML

Figura 5.8 Brazo Robtico hecho en VRML

Finalmente se tiene el modelado del brazo robtico en Java 3D sin embargo este brazo
robtico no tenia las caractersticas de apariencia o de incidencia de la luz de frente,
solamente era un brazo robtico con colores slidos.

45

La versin final del prototipo fue la creacin del mtodo de apariencia as como de la
creacin de una luz que incidiera de frente al brazo robtico (vase figura 5.3)

Figura 5.9 Brazo Robtico en Java 3D con luz direccional

46

5.2 Conclusiones
Este trabajo presento un modelado de un brazo robtico en un ambiente virtual usando Java
3D, as como el control de un brazo real externo usando el puerto serie mediante el lenguaje
de programacin Java. Se realizo una interfaz entre el microcontrolador entre la
computadora y el brazo robtico.

Se modelo el brazo robtico virtual utilizando Java 3D y Java, a travs del armado
de figuras primitivas como son caja y cilindro.

Se realizo la animacin del brazo robtico el cual responde estmulos del teclado de
la PC

Se realizo la interfaz en Java que permite la comunicacin de la computadora


mediante el puerto serie con un microcontrolador.

Se diseo la interfaz que permite la comunicacin de la computadora con el servo


esto usando dos microcontroladores PIC16F628

Para la elaboracin del control del brazo robtico a travs de un brazo virtual fue necesaria
la integracin de cuatro mdulos. Las dos primeras capas son referentes al control del
mundo virtual, la segunda capa que es la de animacin tiene aadida una subcapa que se
comunica con el puerto serie el cual pasa la informacin al microcontrolador PIC16F628.
Las otras dos capas tienen que ver con la interfaz de puerto serie con el brazo robtico. Para
se uso la API javax.comm adems se necesito de PIC para mediar la comunicacin entre la
computadora y los servos del brazo robtico.
Se pudo apreciar la diferencia entre la API de Java 3D versin 1.4.* y la versin 1.5 la cual
no es compatible con el NetBeans versin 6. As como de la maquina virtual 1.6 y el JDK
1.6. Se comprendi la importancia de no actualizar la maquina virtual cuando se est
desarrollando una aplicacin pues debido a que tericamente las versiones posteriores JRE
son ms estbles y compatibles con archivos *.class compilados con una versin anterior
de JDK y probados sobre una versin anterior de JRE pueden provocar excepciones no
contempladas. Se encontr que la API comm 2.0 (javax.comm ) es la ultima API liberada
para el control de puerto serie , paralelo hecha para el sistema operativo Windows.

47

5.3 Trabajos Futuros


Dentro de las aplicaciones de este trabajo se pretende obtener una interfaz confiable con la
cual se puedan conectar cualquier dispositivo para ser controlado mediante una
computadora. El entorno virtual que permitir el diseo el movimiento del brazo robtico
antes de que estos se realicen y en dado caso identificar problemas dentro de la
planificacin de movimiento. Adems del control de este mediante la computadora. De
acuerdo a lo anterior ser posible la manipulacin de objetos a distancia los cuales pueden
ser peligrosos o bien el proceso puede ser repetitivo como para que se realicen por una
persona.
Como aplicaciones a futuro el sistema podr integrar con una serie de brazos robticos
quizs para formar un autmata o una lnea de ensamble como pudiera ser para la soldadura
de una tabla fenolica o bien de dibujar pistas con el brazo. Por otra parte la inmersin del
ambiente virtual pondra enriquecerse con la integracin de un guante que manipule el
ambiente virtual, proyecto que actualmente existe en el CIDETEC. Y finalmente como un
aporte al laboratorio de realidad virtual. Por otra parte la inmersin del ambiente virtual
pondra enriquecerse con la integracin de un guante que manipule el ambiente virtual,
proyecto que actualmente existe en el CIDETEC.

48

A8EXO A
Instalacin del JDK 1.6
Para Windows la aplicacin necesaria que se uso fue jdk-6u2-windows-i586-p.exe. Este
archivo ejecutable contiene la maquina virtual 1.6 necesarias para ejecutar archivos *.class
de java .Tambin trae el compilador de java as como diversas bibliotecas necesarias para
programar en Java. A continuacin describiremos los pasos necesario para las instalacin
del Kit de desarrollo de programadores (JDK).Este entorno se instalo sobre Windows XP y
sobre Windows Vista. El proceso de instalacin que se describir a continuacin ser para
Windows Vista.
El primer paso de instalacin de JDK es descargarlo del sitio de java.sun.com donde
buscaremos la versin JDK 1.6 para Windows, descargaremos el JDK sin la documentacin
debido a que este es un archivo muy pesado. El archivo que descarguemos ser un archivo
llamado jdk-6u2-windows-i586-p.exe. Lo que no indica que es el JDK versin seis, para
Windows y para procesadores tipo Pentium. Daremos doble clic en el archivo ejecutable
como se muestra en la figura A.1.

Figura A.1 Caractersticas del Archivo

Al doble clic sobre la pantalla el archivo ejecutable nos desplegara una pantalla como la de
la figura A.2. Lo que nos indicara que programa est descomprimiendo los archivos
necesarios para la instalacin.

A.2 Inicio del Proceso de instalacin

A continuacin el programa nos pedir que leamos los acuerdos de la licencia para usar el
software en caso de estr de acuerdo (Figura A.3) daremos clic en aceptar.

49

A.3 Acuerdo de Licencia

Despus tendremos la opcin de escoger las herramientas que el programador necesitara


dejaremos las opciones predeterminadas como aparece en la figura A.4 y seleccionaremos
el botn Next para continuar con la instalacin.

A.4 Seleccin de Opciones adicionales

Finalmente el programa instalara todos los componentes del JDK, est operacin tardara
algunos minutos y depender de la velocidad del procesador o el tamao de la memoria
RAM y del numero de aplicaciones que se estn ejecutando junto con nuestro programa de
instalacin (Figura A5).

50

A.5 Proceso de instalacin del JDK

Cuando haya completado el proceso de instalacin del JDK, ahora la aplicacin nos pedir
instalar el ambiente de ejecucin de Java (Java Runtime Environment JRE) como los
podemos ver en la figura A.6. Una vez ms dejaremos las opciones predeterminadas y
seleccionremos la opcin siguiente.

A.6 Opcin para la instalacin del JRE

Finalmente dos desplegara un cuadro de dialogo indicndonos que se estn instalando todos
los componentes necesarios para instalar el JRE (Figura A.7).

51

Figura A.7 Proceso de instalacin del JRE

Cuando termine de instalar todos los elementos necesarios nos desplegara un cuadro de
dialogo indicndonos que la instalacin se concreto satisfactoriamente y seleccionaremos el
botn de finalizar Finsh (Figura A.8).

Figura A.8 Finalizacin de la Instalacin de Java

52

A8EXO B
Instalacin de Java 3D
Ahora necesitaremos instalar la API de Java 3D, en su versin 1.5 o bien superior pues
solamente est versin es compatible con el entorno de desarrollo NetBeans y con el JDK
1.6 y la maquina virtual 1.6.descararemos Java 3D de la pagina java.sun.com y buscaremos
versin 1.5 para Windows y para procesadores tipo Pentium. El archivo que
descargaremos ser como el de la figura B.1.El nombre del archivo indicara en nombre del
programa que ser Java 3D, luego la versin, seguido del sistema operativo para el cual
fue compilado y finalmente el tipo de procesador en el que se ejecuta la aplicacin.
Ejecutaremos la aplicacin y es probable que en el Windows vista nos pida autorizacin
para ejecutar el programa.

Figura B.1 Ejecucin del Programa de Instalacin

El programa de instalacin nos desplegara el acuerdo de licencia. Seleccionaremos aceptar


Accept para continuar la instalacin (Figura B.2).

Figura B.2 Acuerdo de Licencia de Java 3D v1.5

Despus visualizaremos un cuadro de dialogo de confirmacin donde nos indicara la ruta


donde se instalaran las clases y las bibliotecas dinmicas de Java 3D (Figura B.3).Entonces
revisaremos los datos y seleccionremos el botn de Instalar Install.

53

Figura B.3 Confirmacin de la Instalacin

El programa instalara todos los mdulos necesarios, este proceso no durara mucho pero
depende de la capacidad de procesamiento del CPU as como de la memoria RAM libre de
la computadora. La figura B.4 nos ilustra este proceso.

Figura B.4 Instalacin de Java 3D

Cuando haya finalizado de instalar e integrar todos los mdulos necesarios se desplegara un
cuadro de dialogo que nos indica que la instalacin se llevo a cabo de manera exitosa
(Figura B.5).

54

Figura B.5 Finalizacin de la Instalacin.

55

A8EXO C
Instalacin de 8etBeans
El entorno de desarrollo fue NetBeans, para su instalacin es necesario descargar el archivo
compilado para Windows, Ejecutaremos el archivo y tendremos la siguiente pantalla que se
muestra en la figura C.1

C.1 Instalacin de NetBeans

EL recuadro de la figura C.2.A nos indica que mdulos sern instalados en la computadora,
es importante que si es la primera vez que se instala este entorno de desarrollo se dejen la
opciones predeterminadas de instalacin. En la figura C.2.B nos muestra el cuadro de
dialog del acuerdo de licencia, seleccionamos el radioboton y damos clic en el botn de
siguiente Next.

Figura C.2 A) Instalacin de mdulos de NetBeans, B) Acuerdo de Licencia

Luego el programa de instalacin del Entorno de desarrollo aso como la ruta del JDK que
previamente instalamos en la computadora, verificamos que los datos se encuentres en
orden y damos clic en siguiente (Vase Figura C.3).

56

Figura C.3 Ruta de Instalacin de NetBeans y ruta donde se instalo el JDK

Las preguntas siguientes que nos realizar el programa son la ruta de instalacin de un
contenedor Web llamado NetBeans as como de la ruta de instalacin del compilador Java,
finalmente la contrasea del administrador que adminstara el contenedor Web y los puertos
en el que encontraremos el servidor en la figura C.4 observamos las opciones que se
eligieron

Figura C.4 Instalacin del Contenerlo Web


Finalmente se recibir un cuadro de confirmacin de la instalacin al que le daremos
siguiente y finalmente se instalaran todos los elementos del entorno de desarrollo. El
proceso de instalacin puede durar varios minutos pues es una instalacin de un programa
de alrededor 470MB (Vase Figura C.5).

57

Figura C.5 Confirmacin e Instalacin de Netbeans

Finalmente el programa de instalacin nos indicar que la instalacin de llevo a cabo de


manera satisfactoria (Vase Figura C.6)

Figura C.6 Confirmacin e Instalacin de Netbeans

58

A8EXO D
Instalacin del comm api 2.0

La biblioteca comm api 2.0 contiene mtodos, clases y objetos capaces de manejar el puerto
paralelo por lo que es necesaria su instalacin en java o bien en la maquina virtual.Y los
pasos de instalacin son los siguientes:
Descomprimir el archivo javacomm20-win32.zip
Copiar el archivo win32com.dl al directorio <JDK>\jre\bin
Copiar el archivo comm.jar al directorio <JDK>\jre\lib
Copiar el archivo javax.comm.propierties al directorio <JDK>\jre\lib
Copiar el archivo win32com.dl al directorio <JDK>\bin
Copiar el archivo comm.jar al directorio <JDK>\lib
Copiar el archivo javax.comm.propierties al directorio <JDK>\lib

Si es que solamente se pretende instalar la aplicacin

Copiar el archivo win32com.dl al directorio <JRE>\bin


Copiar el archivo comm.jar al directorio <JRE>\lib
Copiar el archivo javax.comm.propierties al directorio <JRE>\lib

59

A8EXO C
Arquitectura interna de la familia 16FC628.

60

Terminales del PIC16F628

61

A8EXO D
Hoja de especificaciones de los SERVOS HI-TEC
Estos servos se refrescan cada 21 milisegundos.
Su centro se sita a 150 milisegundos.
Su extremo superior se sita 210 milisegundos.
Su extremo inferior se sita a 90 milisegundos.
Recibe un voltaje de entre 4.5 a 6 volts.

62

REFERE8CIAS
[1] Ali Mazalek , Michael Nitsche Tangible Interfaces for Real-Time 3D Virtual
Environments ,Experimental Games Lab, Georgia Institute Technology ,2004
[2]Jean-Francois Lapointe, Cosmos: VR-Based Proof-of Concept Interface for Advanced
Space Robot Control Canada ,2004
[2] Jean-Franois Lapointe ,COSMOS: A VR-Based Proof-of-Concept Interface for
Advanced Space Robot Control,Canada,2004
[3] Renaud Ott, Mario Gutierrez Advanced Virtual Reality Technologies for
Surveillance and Security Applications, Virtual Lab Florida ,ITESM Toluca
[4] Renaud Ott, Mario Gutierrez Advanced Virtual Reality Technologies for
Surveillance and Security Applications, Virtual Lab Florida ,ITESM Toluca, Escuela
Superior de Catania Italia,2004
[5] Tien-Lung Sun,Simplified Animation Circuit for Metadata-based Behavior Model
Query and Retrieval , Universidad de Yaun-Ze China
[6]S. M. Goza, R. O. Ambrose,Telepresence Control of the NASA/DARPA Robonaut
on a Mobility Platform,NASA Estdos Unidos,2004
[7]Tien-Lung Sun,Simplified Animation Circuit for Metadata-based Behavior
Model Query and Retrieval,Universidad Yuan-Ze Taiwn ,2003
[8] Java I/0 2nd Edition 2006 Elliotte Rusty Harold Editorial OReilly
[9] Java 2 Curso de Programacion Fco. Javier Ceballos
[10] Andrew Davidson, Java 6 3D Game Developement ,2005,Appress
[11] Joan J. Pratdepadua , Programacin en 3D con Java 3D ,2003, Alfa Omega
[12] Fernando E Valdez Prez ,Microcontroladores fundamentos y Aplicaciones con PIC
[13] Tony Zhang Aprenda C en 24 Horas , 2001,Prentice Hall
[14] Diccionario de la Real Academia de la Lengua,2005
[13] Tetsuo Sawaragi and Yukio Horiguchi, Ecological Interface Enabling HumanEmbodied cognition Mobiles robot teleoperation.

63

[14] Philip Lamb, Dean Owen, Human performance in Sapace Telerobotic Manipulation
[15] Revista Digital Universitaria Implementacin de Robot SCORBOT ERVRPLUS, para docencia en realidad virtual.- Juan Carlos Parra Mrquez y Karina [12]
Pilar Cid Cifuentes-Acadmicos de la Universidad del Bo-Bo
[16] Java 2 Interfaces graficas y Aplicaciones para Internet
[17] Manual del brazo robtico lynxmotion
[18] Manual del PIC16F62X (microchip.com)
[19] Manual de especificaciones de los Servos HI-TEC

64

Вам также может понравиться