Beruflich Dokumente
Kultur Dokumente
Directores:
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.
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
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
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
Compilador
Lenguaje de Programacin
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.
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.4 Objetivo
Modelar un brazo robotico y controlarlo mediante un microcontrolador que servir como interfaz
entre la computadora y el puerto serie.
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
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.2 JAVA 2
1
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.
Virtual Universe
Leaf
Locale
Node
Component
Group
Otros
Objetos
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.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.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
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.
13
14
TX
RX
RS
CTS
|
DSR
Computadora
DCD
Figura 2.4 Norma RS232
DTR
RI
GND
Figura 2.4 Pines del DB9
Arquitectura Harvard - Es aquella que divide los datos y las instrucciones en localidades de datos,
dividiendo los buses de direccionamiento.
15
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).
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.
17
Aplicacin Grafica
(Creacin de la Escena)
Comunicacin Serie
18
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
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
22
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
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);
rotacion.mul(rotacion2);
24
25
objTranslate.addChild(objRotado);
objRotado.addChild(new Box(medida1,medida2,medida3,
Primitive.GENERATE_TEXTURE_COORDS |
Primitive.ENABLE_GEOMETRY_PICKING,
app(red,green,blue)));
return objTranslate;
}
26
ColoringAttributes.ALLOW_COLOR_WRITE);
app.setColoringAttributes(coloAtt);
Material objMaterial = new Material( );
objMaterial.setDiffuseColor( a, b, c );
app.setMaterial( objMaterial );
return app;
}
27
28
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.
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.
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 ) {}
33
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
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
36
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.
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
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.
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
}
}
}
}
}
40
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
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.
42
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
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
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
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
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)
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
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
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.
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 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
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
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.
Finalmente dos desplegara un cuadro de dialogo indicndonos que se estn instalando todos
los componentes necesarios para instalar el JRE (Figura A.7).
51
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).
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.
53
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.
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
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
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.
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
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
57
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
59
A8EXO C
Arquitectura interna de la familia 16FC628.
60
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