Escolar Documentos
Profissional Documentos
Cultura Documentos
FACULTAD DE INGENIERA
T E S I S
Que para obtener el ttulo de
INGENIERO MECATRNICO
P R E S E N T A
SANTIAGO BLACKALLER LEDESMA
DIRECTOR DE TESIS:
DR. VCTOR JAVIER GONZLEZ VILLELA
Presidente:
Secretario:
Vocal:
Primer Suplente:
Segundo Suplente:
TUTOR DE TESIS:
DR. VCTOR JAVIER GONZLEZ VILLELA
FIRMA
DEDICATORIA
Al Dr. Vctor Javier Gonzlez Villela, al Mtro. Octavio Daz Hernndez y al Mtro.
Patricio Martnez Zamudio por su motivacin, ayuda y confianza en la
realizacin de esta Tesis.
RESUMEN ........................................................................................................................................... 7
1. INTRODUCCIN ........................................................................................................................ 8
2.6. Descripcin Especfica de los elementos que componen al Robot Mvil ............... 18
2.6.5.1. Comunicacin........................................................................................................ 28
3.3.1. Cmara....................................................................................................................... 36
4. Simulaciones ............................................................................................................................. 41
5. Pruebas y Resultados.............................................................................................................. 53
5.2. Pruebas con retroalimentacin de datos provenientes del sistema de visin (Lazo-
Cerrado) ......................................................................................................................................... 55
APNDICES ...................................................................................................................................... 72
REFERENCIAS ................................................................................................................................ 77
RESUMEN
Esta tesis presenta el diseo de un plataforma de visin por computadora basada en los
programas para computadora ReacTIVision y Simulink (MATLAB) cuyo objetivo es servir
de lazo de retroalimentacin de la posicin, la orientacin y la velocidad de desplazamiento
de un robot mvil de llantas independientemente actuadas en su traccin (las traseras) y
en su orientacin (las delanteras). La informacin obtenida por el sistema de visin es
introducida al controlador previamente diseado por V.J Gonzlez Villela y parcialmente
adaptado por el autor del presente documento. El controlador calcula, basado en las
entradas provistas por el sistema de visin, las posiciones de cada una de las llantas
delanteras y las velocidades de las llantas traseras, y las enva a travs de comunicacin
serial inalmbrica utilizando seales de radiofrecuencia Zigbee (X-Bee) al microcontrolador
montado sobre el robot mvil, ste comanda directamente las instrucciones de la posicin
a las llantas delanteras utilizando seales PWM, y enva a travs de comunicacin serial I2C
las instrucciones que permiten que la tarjeta actuadora de los motores de las llantas
traseras establezca la velocidad de cada una de ellas.
Para probar la validez de funcionamiento del sistema dos pruebas diferentes fueron
realizadas. La primera utilizando un lazo semi-cerrado y la segunda un lazo cerrado,
observndose evidentes mejoras utilizando el sistema de visin.
7
1. INTRODUCCIN
1.1. Generalidades
La robtica mvil es un rea de la robtica que se encarga de estudiar a aquellos
robots que no tienen ningn eslabn anclado a un medio fsico no mvil como
podra ser la tierra. Los hay acuticos, voladores y terrestres. Todos ellos, por la
manera en que estn configurados, y por la intrnseca relacin que guardan con las
disciplinas de la ingeniera mecnica, electrnica y el control, son considerados
productos inherentemente mecatrnicos [1].
De los robots mviles terrestres, los utilizan llantas para desplazarse, constan en su
mayora de un chasis en el que se encuentran montadas las llantas, ya sean
direccionables y/o de traccin, los sensores, los actuadores, los elementos que
proveen energa al sistema y los circuitos de control, que normalmente son
microcontroladores pre-programados que brindan autonoma al robot,
microcontroladores con comunicacin hacia una PC o bien una computadora
personal montada sobre el robot [1].
Resulta fundamental para la robtica mvil tener control sobre el robot, ya que este
desempea su labor en un ambiente humano, y debe ser capaz de tomar
decisiones. El robot puede ser controlado a distancia por un humano, como
teleoperacin [2], o contar con elementos que le permitan obtener informacin de
su ambiente y le faciliten la toma de decisiones, es decir lo provean de autonoma
[2], stos pueden ser: sensores infrarrojos, sensores pticos, sensores
ultrasnicos, sistemas de posicionamiento global (GPS) [3], u otros sensores que
permitan al robot obtener informacin sobre su posicin en alguna determinada
rea de trabajo.
Toda esta informacin proveniente de los sensores debe ser procesada utilizando
ciertos algoritmos o teoras, de tal manera que el robot sea capaz de controlar los
elementos que rigen su cinemtica, que normalmente es la orientacin y/o
velocidad de sus ruedas, para poder desarrollar tareas especficas.
8
El presente trabajo pretende comprobar fsicamente una de estas teoras,
desarrollada en 2006 por el Dr. V.J. Gonzalez-Villela [4], utilizando un robot mvil
de 4 llantas, las dos frontales independientemente actuadas en su orientacin y las
dos posteriores en su traccin; y un sistema de sensado externo al robot basado en
visin por computadora.
Otros sistemas han sido implementados, en 2008 S.S Mehta et.all [5] desarrollaron
un sistema para el desplazamiento de un robot mvil dentro de un invernadero
basado en visin, el sistema de visin se encontraba montado sobre el robot y le
permita conocer la orientacin y posicin del mismo utilizando tcnicas de
fotogrametra. El inconveniente de sta tcnica es la necesidad de marcas de
referencia, dentro del rea de trabajo, para que el sistema de visin pueda realizar
su funcin.
9
posicin dentro de cierta rea determinada y le facilite el seguimiento de
trayectorias.
Por otra parte, V.J. Gonzalez-Villela desarrolla una teora unificadora para el
anlisis cinemtico y dinmico de robots mviles [4] que permite coordinar las
llantas del robot tanto en su velocidad como en su orientacin basado en la teora
de la llanta virtual, para que el robot sea capaz de seguir trayectorias.
Este trabajo utiliza la teora de [4] aplicada a un robot mvil de llantas, que junto
con el desarrollo de un sistema de visin externo al robot, permitir que ste siga
trayectorias predefinidas sin necesitar de sensores internos y utilizando nicamente
la retroalimentacin por visin y el lazo de control diseado en 2006 por V.J.
Gonzalez-Villela, que fue adaptado por el autor de este documento para su
aplicacin con un robot mvil fsico que conviva con el sistema de visin.
10
1.4. Objetivos
Montar un sistema de experimentacin, basado en visin y Simulink,
que permita obtener la posicin, orientacin y velocidad del robot dentro
de un rea de trabajo.
1.5. Justificacin
Los resultados de este trabajo son de alto impacto en aplicaciones industriales
permitiendo el traslado de materiales u objetos dentro de algn complejo, as como
en la industria automotriz, permitiendo generar vehculos con direccin y traccin
independiente, pero no solo eso, adems capaces de seguir alguna trayectoria
previamente establecida, como podra ser el traslado de algn pasajero de un
punto a otro utilizando sistemas de navegacin como el GPS.
11
2. Robot Mvil de Llantas Tipo (1,1)
2.1. Generalidades
Un robot mvil se encuentra equipado con motores que son controlados por
una computadora o microcontrolador. Cuenta con un chasis rgido y llantas
no deformables en las que no hay deslizamiento con respecto al suelo, y que
se mueven en un plano horizontal. Cada rueda se mantiene vertical y gira
alrededor de un eje horizontal [4]. Con estas consideraciones y algunas
definiciones se describir el robot mvil que se va a utilizar a lo largo de
estas pruebas.
2.2. Definiciones
Para poder hacer una mejor descripcin del robot mvil, es necesario definir
claramente los siguientes conceptos:
13
Figura 0 Representacin Esquemtica del Robot Mvil [4]
15
parametrizacin de las velocidades y posiciones de las llantas en funcin
de la velocidad y posicin de la llanta virtual.
(d f d s ) sin( sv )
sr ( sv ) = tan 1 (1)
(b sin( sv ) (d f d v ) cos( sv ))
(d f d s ) sin( sv )
sl ( sv ) = tan 1 (2)
b sin( sv ) (d f d v ) cos( sv )
(d v d f ) cos( sv ) + b sin( sv )
& fr ( sv , & sv ) = & sv
(d v df ) (3)
(d v d f ) cos( sv ) b sin( sv )
& fr ( sv , & sv ) = & sv
( d v df ) (4)
16
2.5. Descripcin General del Robot Mvil
El robot mvil a utilizar durante el desarrollo de este trabajo, es uno
tipo(1,1) el cual cuenta con los siguientes elementos: Un chasis rgido de
aluminio conformado por dos placas unidas perpendicularmente. En la
parte posterior de una de ellas, la que hace las veces de plataforma, se
encuentran las dos llantas motorizadas centradas fijas, las cuales son
actuadas de forma independiente utilizando un motor de corriente directa
para cada una. El par generado por cada motor es transmitido a su
respectiva llanta a travs de un sistema de engranes helicoidales.
Tambin en la placa base se encuentra colocada la batera, la cual
provee de energa a todos los motores y a los circuitos de control. En la
parte anterior de la plataforma es donde se encuentra la unin con la otra
placa, esta segunda hace las veces de soporte de las llantas frontales,
las cuales son centradas direccionables, y de los servomotores que las
actan.
17
2.6. Descripcin Especfica de los elementos que componen al Robot
Mvil
A continuacin se describir, detalladamente, cada uno de los elementos
que conforman al robot mvil y que permiten que se comporte de la
manera deseada.
18
Figura 2. Motor de corriente directa modelo EMG30 [6]
2.6.3. Servomotores
Esta clase de motores son dispositivos actuadores con la
capacidad de ubicarse y mantenerse estables en alguna posicin
dentro de su margen de operacin. Se conforman por un motor de
corriente continua, una caja reductora y un circuito de control [8], y
su margen de funcionamiento normalmente es de menos de una
vuelta completa.
22
La seal PWM para controlar la posicin de los motores es
generada en el microcontrolador, es explicado a profundidad ms
adelante.
Microcontrolador ATmega328
SRAM 2[kB]
EEPROM 1[kB]
24
La lnea SDA es la de datos y la SCL es la seal de reloj. Cada
dispositivo conectado al bus tiene una direccin que lo
identifica, cada uno de ellos puede operar transmitiendo o
recibiendo datos. Cuando comienza la conexin se define el rol
de cada dispositivo, pueden ser Maestros o Esclavos. El
dispositivo maestro es aquel que inicia la conexin, adems es
el encargado de generar la seal de reloj. La figura 8 muestra
una representacin de la conexin I2C entre un
microcontrolador y varios dispositivos.
25
Figura 9. Esquema de la conexin entre el Arduino Duemilanove y la tarjeta MD-25. Adaptado de
[15]
26
Como se explicaba anteriormente, la seal de control de los
servomotores es una seal cuadrada PWM, la cual posee una
frecuencia fija, pero a la que se le modifica la duracin de los
pulsos. Cada posicin del eje del motor est relacionada con
una duracin del ciclo de trabajo, de tal manera que podemos
encontrar una relacin directa entre el ciclo de trabajo del motor
y la posicin del eje este, como se muestra en la figura 10.
Figura 10. Relacin existente entre el ciclo de trabajo de la seal PWM y la posicin del
servomotor [8]
27
2.6.5. Mdulos de Radiofrecuencia XBee para comunicacin serial
inalmbrica
2.6.5.1. Comunicacin
La comunicacin es un proceso imprescindible para cualquier
robot, por muy poca autonoma (entendiendo por autonoma a
la capacidad de no depender ms que de s mismo para
realizar alguna tarea) de la que ste goce. Segn la Real
Academia Espaola, comunicar es transmitir seales mediante
un cdigo comn al emisor y receptor. El robot puede ser
emisor y receptor indistintamente ya que puede enviar y recibir
informacin a/de otro receptor/emisor, respectivamente.
28
El coordinador:
El router:
El dispositivo final:
29
Puede entrar a niveles bajos de potencia para
conservarla y puede ser energizado por bateras.
30
conectado, a travs de una interfaz USB a la computadora, que
lo detecta y configura como un puerto serial. El otro mdulo, el
receptor, se encuentra acoplado al microcontrolador Arduino a
travs de un shield el cual est diseado ex profeso para
conectar el XBee con el Arduino, la figura 12 muestra el Xbee
montado sobre el shield.
Figura 12. XBee montado sobre el shield para el microcontrolador Arduino [19]
31
2.6.5.4. Configuracin de los mdulos XBee
Para que la comunicacin entre la computadora y el
microcontrolador funcione correctamente, es preciso configurar
cada uno de los mdulos. Existen algunas formas de hacerlo.
Una de ellas es programar cada uno de los XBee a travs de
una Hyperterminal y una interfase serial con un MAX3232 y una
serie de comandos llamados AT, pero este mtodo puede
resultar sumamente complicado. Al contar nosotros con una
interfase USB (figura 13.) podemos utilizar un software
distribuido gratuitamente por el fabricante llamado X-CTU para
realizar la programacin.
32
Para configurar al coordinador, dentro del programa X-CTU
(Figura 14.), seleccionamos la pestaa Modem Configuration,
en esta seleccionamos el tipo de modem que es el XB24-B y
en la casilla de Function Set seleccionamos ZNET 2.5
COORDINATOR AT una vez seleccionados estos parmetros
procedemos a dar click sobre el botn Write en la esquina
superior izquierda de la ventana y esperamos a que la
configuracin seleccionada sea grabada en el mdulo.
Figura 14. Interfaz del software X-CTU para configuracin de mdulos XBee
33
Para configurar el dispositivo final, los pasos son muy
parecidos a la configuracin del coordinador, nicamente que
en la casilla de Function Set se selecciona ZNET 2.5
ROUTER/END DEVICE AT
34
3. El sistema de visin.
3.1. Visin
De acuerdo a la Real Academia Espaola (RAE), la visin es la accin y
efecto de percibir por los ojos los objetos mediante la luz [21] [22].La
visin no es una capacidad exclusiva del ser humano, muchos seres
vivos en el planeta la han desarrollado, y el hombre en su afn por lograr
generar ojos artificiales, ide y fabric la cmara. Haciendo un smil, y
utilizando la definicin de la RAE, podramos afirmar que una cmara es
capaz de percibir objetos mediante la luz, tal como un par de ojos lo
haran. De esta manera, si enfocamos una cmara sobre un rea de
trabajo definida, donde el robot mvil se desplaza, sta nos brindara
informacin til sobre la postura del robot, que para fines de esta tesis
resulta fundamental. Para lograr esto es necesario contar con un
sistema de visin capaz de procesar y acondicionar la informacin
captada por la cmara para su posterior utilizacin, en otras palabras, el
sistema de visin cumple la funcin de sensor externo, capaz de
brindarnos informacin til e importante sobre el comportamiento del
robot dentro de su rea de trabajo.
3.3.1. Cmara
La cmara utilizada para esta trabajo es la Sony HandyCam
modelo DRC-HC28 (Figura 16.) conectada a la computadora a
travs de un cable Firewire. La cmara brinda una resolucin
NTSC de 720 x 480 pixeles. La prdida de la linealidad asociada a
la curvatura del lente de la cmara es despreciable por la cercana
de sta al rea de trabajo que enfoca.
36
Figura 16. Cmara Sony HandyCam modelo DRC-HC28 [23]
37
smbolos fiducial (Figura 17.) permiten distinguir una gran cantidad
de identidades nicas, como el ngulo de rotacin y la velocidad
de desplazamiento [16].
38
3.3.3. Integracin con Simulink de MATLAB
Simulink de MATLAB es un ambiente para simulacin y diseo
basado en modelos, para sistemas dinmicos y embebidos.
Provee un ambiente grfico interactivo y un conjunto de libreras
de bloques personalizables que permiten al usuario disear,
simular, implementar y probar una gran variedad de sistemas
variantes en el tiempo, incluyendo comunicaciones, control,
procesamiento de seales, video e imgenes [25].
40
4. Simulaciones
Como se ha mencionado con anticipacin, el presente proyecto parte de un
conjunto de ecuaciones que modelan a un robot mvil de llantas en funcin
de la llanta virtual. Este trabajo desarrollado en 2006 por Gonzlez-Villela,
fue acompaado por simulaciones desarrolladas en Simulink las cuales
demuestran, virtualmente, la validez de las ecuaciones y la teora que las
sustenta.
41
Figura 18. Definicin de parmetros de trayectoria y condiciones iniciales (en rojo).
42
Figura 19. Controlador (en rojo) para obtener las aceleraciones en X y en Y
Una vez que se han calculado los nuevos valores que describen al robot
mvil son regresados al controlador inicial, para calcular nuevamente el
error existente entre la nueva posicin deseada y la nueva posicin del
robot. Este proceso se repite iterativamente, dentro de un intervalo de
tiempo definido, para que el robot se desplace de un punto A a uno B a lo
largo de la trayectoria programada.
44
Figura 21. Bloque que representa la parte cinemtica del robot mvil de llantas
Figura 22. Bloque que representa la parte dinmica del robot mvil de llantas
45
PARMETROS DE LA TRAYECTORIA SENOIDAL
exr Error en X entre la posicin del punto de control del robot y la trayectoria
eyr Error en Y entre la posicin del punto de control del robot y la trayectoria
46
Figura 23. Desplazamiento del Robot Mvil sobre la trayectoria senoidal a los 8 [s] de
haber iniciado el movimiento.
Figura 24. Desplazamiento del Robot Mvil sobre la trayectoria senoidal a los 26 [s] de
haber iniciado el movimiento.
47
Figura 25. Desplazamiento del Robot Mvil sobre la trayectoria senoidal a los 35 [s] de
haber iniciado el movimiento.
0.4
0.3
0.2
0.1
y r [m], y d [m]
-0.1
-0.2
-0.3
48
Variables de postura del punto de referencia del robot mvil: x r , y r , , cv , cr y cl
xr
1.5
1 cv
cr
0.5 cl
-0.5
-1
5 10 15 20 25 30 35 40
Tiempo [s]
Figura 27. Variables de postura del punto de referencia del robot mvil
0.6
0.4
cv [rad], cr [rad], cl [rad]
0.2
-0.2 cv
cr
-0.4
cl
-0.6
-0.8
5 10 15 20 25 30 35 40
Tiempo [s]
49
Error de seguimiento del punto de referencia del robot: exr y eyr
0.02
-0.02 exr
eyr
exr [m] , eyr [m] -0.04
-0.06
-0.08
-0.1
-0.12
-0.14
-0.16
0 5 10 15 20 25 30 35 40
Tiempo [s]
Figura 29. Error de seguimiento del punto de referencia del robot mvil
50
decir a lo largo de su desplazamiento mientras sigue la trayectoria
nicamente va avanzando de la izquierda y hacia la derecha del rea de
trabajo. La siguiente curva que se muestra es la trayectoria que sigue el
robot a lo largo del eje Y, es claro el perfil de una senoidal con una
amplitud de 0.45 [m] y un periodo de 35 [s] aproximadamente, ambos
datos coinciden con la ecuacin (6). Posteriormente se muestra, de color
negro, la orientacin del robot mvil. Esta curva refleja cmo va rotando
el robot con respecto a un eje perpendicular al rea de trabajo y que lo
atraviesa en su centro (punto P), es claro el movimiento de vaivn, que
refleja perfectamente el comportamiento del robot. Las ltimas tres
curvas mostradas, estn ntimamente relacionadas entre s y muestran la
rotacin de la llanta virtual, de la llanta orientable derecha y de la llanta
orientable izquierda. Se observa como la orientacin de las llantas es
independiente, en ningn momento tienen el mismo valor y mientras el
robot gira hacia un lado las otras dos tambin lo hacen en el mismo
sentido lo que refleja que la coordinacin de las llantas es correcta. La
figura 28, muestra nuevamente estas 3 curvas de manera aislada para
que resulte ms sencillo visualizarlas.
51
nos indica que la trayectoria establecida es seguida con suma precisin
por el robot mvil.
52
5. Pruebas y Resultados.
Una vez explicado el procedimiento utilizado para las simulaciones, resulta
ms sencillo explicar el utilizado para llevar a cabo las pruebas fsicas. Fue
fundamental la arquitectura mencionada en el captulo III la cual se
recapitula brevemente a continuacin.
54
Figura 30. Arquitectura del sistema en Lazo Semi-Cerrado
Para realizar esta prueba fue necesario sincronizar todos los elementos
que participaban en el sistema. En primer lugar la simulacin deba, al
55
igual que en la prueba en lazo semi-cerrado, estar temporizada para que
coincidiera con el tiempo real. La segunda consideracin a tomar en
cuenta era el tiempo que le tomaba al sistema de visin capturar la
imagen, codificar la informacin obtenida de ella, transmitirla entre
Reactivision y Simulink y posteriormente decodificar la trama de datos
para obtener de ella la informacin til. Despus de varias pruebas para
lograr una correcta sincronizacin se lleg a la conclusin que el tiempo
de muestreo que deba usarse para que el sistema funcionara de la
mejor forma posible era de 0.9 segundos. Esto significa que cada 0.9
segundos el programa en Simulink reciba una nueva posicin y
orientacin del robot para realizar una iteracin ms en el control y
arrojar el valor de las variables que el robot necesitaba para comandar
las posiciones y velocidades de cada una de las llantas. Para la
realizacin de esta prueba fue necesario mantener fijos los resultados de
la iteracin anterior, para que 0.9 segundos despus fueran refrescados
y de nuevo mantenidos, realizando iterativamente este mismo proceso a
lo largo de la trayectoria.
56
Figura 31. Arquitectura del Sistema en Lazo Cerrado
5.3. Resultados
A continuacin se muestran los resultados obtenidos de cada una de las
pruebas. Es importante mencionar que todas pruebas, tanto en lazo
semi-cerrado como en lazo cerrado, se realizaron bajo las mismas
condiciones de iluminacin y calibracin del rea de trabajo y de la
cmara.
0.2
0.1
-0.1
Y[m]
-0.2
-0.3
-0.4
0.2
0.1
0
Y[m]
-0.1
-0.2
-0.3
-0.4
-0.5
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
X[m]
60
codificados por comunicacin serial y la aplicacin de las instrucciones
en el robot.
De esta prueba tambin fue posible obtener las variables de postura del
robot, los ngulos de las llantas frontales y la virtual, y el error de
seguimiento de la trayectoria tanto en el eje X como en el eje Y. Los
resultados se muestran en las Figuras 35, 36 y 37.
0.2
0.1
Y[m]
-0.1
-0.2
-0.3
-0.4
-1 -0.5 0 0.5 1 1.5
X[m]
1
x r [m] , y r [m], [rad]
0.5
-0.5
-1
0 5 10 15 20 25 30 35
Tiempo [s]
Figura 35. Variables de Postura del punto de Referencia del Robot Mvil
1.5
0.5
-0.5
-1
0 5 10 15 20 25 30 35
Tiempo [s]
0.05
exr [m] , eyr [m]
-0.05
-0.1
-0.15
-0.2
-0.25
-0.3
0 5 10 15 20 25 30 35
Tiempo[s]
Figura 37. Error de seguimiento del punto de referencia del Robot Mvil.
63
que para la primera prueba en lazo cerrado. El objetivo de replicar el
experimento era darle validez a la prueba realizada.
0.3
0.2
0.1
Y[m]
-0.1
-0.2
-0.3
-0.4
-0.5
-1 -0.5 0 0.5 1 1.5
X[m]
64
Lazo Cerrado: Variables de Postura del punto de Referencia del Robot Mvil: x r , y r ,
1.5
xr
yr
1
0.5
x r [m] , y r [m], [rad]
-0.5
-1
-1.5
0 5 10 15 20 25 30 35
Tiempo [s]
Figura 39. Variables de Postura del punto de Referencia del Robot Mvil
1.5 cr
cl
cv [rad], cr [rad], cl [rad]
0.5
-0.5
-1
-1.5
0 5 10 15 20 25 30 35
Tiempo [s]
0.1
0.05
exr [m] , eyr [m]
-0.05
-0.1
-0.15
-0.2
-0.25
0 5 10 15 20 25 30 35
Tiempo[s]
Figura 41. Error de seguimiento del punto de referencia del Robot Mvil.
Figura 42. Secuencia de imgenes obtenidas del video que muestran el desplazamiento del
robot mvil y en azul la trayectoria de referencia.
66
La Figura 39 muestra el comportamiento de las variables de postura del
robot, tanto sus desplazamientos como la orientacin del robot mvil y
se observa un comportamiento muy parecido a las grficas mostradas
en la Figura 35.
67
trayectoria previamente programada, y se comprob que usando una
llanta virtual direccionable fue posible coordinar el movimiento de las
restantes en su velocidad (traccin) y orientacin (direccin) sobre un
robot mvil propuesto.
68
6. Conclusiones y Trabajo a Futuro
El presente documento muestra el desarrollo de un sistema de visin para
sensar parmetros del robot mvil compatible con el software Simulinky
comprueba fsicamente, utilizando todo el sistema diseado, que usando una
llanta virtual direccionable es posible coordinar el movimiento de las
restantes en su velocidad y orientacin sobre un robot mvil.
70
como del sistema de visin, o en caso contrario, utilizar la recomendacin
previa y el mdulo de tiempo real.
Estas son en general las recomendaciones que sugerira para aquel que
decida incursionar nuevamente en la robtica mvil y la visin como sistema
de sensado externo.
Otro ejemplo sera el uso del concepto de la llanta virtual para controlar
vehculos automotores, cambiando la tradicional direccin de Ackermann por
sistemas que permitiesen controlar al vehculo utilizando seales elctricas
en lugar de mecanismos, y que actualmente son conocidos como drive-by-
wire.
71
APNDICES
#define BUFFERSIZE 20
void setup()
{
Serial.begin(115200); // Configuracion de la comunicacin serial a 115200 bps
pinMode(13, OUTPUT);
Wire.begin();
delay(200); // Tiempo de espera de 200 ms para que todos los dispositivos
respondan
Serial.print("MD25 version:");
int softVer = getSoft(); // Obtiene la version de Software de la tarjeta MD23
Serial.println(softVer, DEC);
myservo1.attach(9);
myservo2.attach(10);
encodeReset(); // Reset de los encoderes de los motores a cero
Serial.flush();
void loop()
{
digitalWrite(13,HIGH);
72
Wire.beginTransmission(i2cAddress); // Comanda la velocidad al motor de traccin x2
Wire.send(speed2);
Wire.send(x2);
Wire.endTransmission();
delay(10);
digitalWrite(13,LOW);
return(software);
}
void readline(void) {
char c;
bufferidx = 0; // se inicia al principio
while (1) {
c = Serial.read();
if (c == -1)
continue;
//Serial.print(c);
if (c == '\n')
{
Serial.print("*OK*");
break;
}
{
if ((bufferidx == BUFFERSIZE-1) || (c == '\r')) {
buffer[bufferidx] = 0;
return;
}
}
buffer[bufferidx++]= c;
}
}
while (str[0] != 0) {
if ((str[0] > '9') || (str[0] < '0'))
return d;
d *= 10;
d += str[0] - '0';
str++;
}
return d;}
73
APNDICE B CDIGO DEL BLOQUE DE VISIN EN SIMULINK
function [sys,x0,str,ts] = visioncode(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 2,
sys=mdlUpdate(t,x,u);
case 3,
sys=mdlOutputs(t,x,u,flag);
case 4,
sys=mdlGetTimeOfNextVarHit(t,x,u);
case 9,
sys=mdlTerminate(t,x,u);
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
% end sfuntmpl
%
%=========================================================================
====
% mdlInitializeSizes
% Return the sizes, initial conditions, and sample times for the S-
function.
%=========================================================================
====
%
function [sys,x0,str,ts,T_samp]=mdlInitializeSizes
%
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 4;
sizes.NumInputs = 0;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
74
x0 = [];
str = [];
ts = [0.9 0];
% end mdlInitializeSizes
%
%=========================================================================
====
% mdlDerivatives
% Return the derivatives for the continuous states.
%=========================================================================
====
%
function sys=mdlDerivatives(t,x,u)
sys = [];
% end mdlDerivatives
%
%=========================================================================
====
% mdlUpdate
% Handle discrete state updates, sample time hits, and major time step
% requirements.
%=========================================================================
====
%
function sys=mdlUpdate(t,x,u)
sys = [ ];
% end mdlUpdate
%
%=========================================================================
====
% mdlOutputs
% Return the block outputs.
%=========================================================================
====
%
global a1 x1 y1 s1;
import TUIO.*;
tc = TuioClient();
tc.connect();
75
for i = 1 : 4
c=tc.getTuioObjects().size();
if (c > 0)
a1 = tc.getTuioObjects().get(0).getAngle();
x1 = tc.getTuioObjects().get(0).getPosition().getX();
y1 = tc.getTuioObjects().get(0).getPosition().getY();
s1 = tc.getTuioObjects().get(0).getMotionSpeed();
end;
pause(0.1);
end;
tc.disconnect();
% end mdlOutputs
%
%=========================================================================
====
% mdlGetTimeOfNextVarHit
% Return the time of the next hit for this block. Note that the result is
% absolute time. Note that this function is only used when you specify a
% variable discrete-time sample time [-2 0] in the sample time array in
% mdlInitializeSizes.
%=========================================================================
====
%
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sys = [];
% sampleTime = 1; % Example, set the next hit to be one second later.
% sys = t + sampleTime;
% end mdlGetTimeOfNextVarHit
%=========================================================================
====
% mdlTerminate
% Perform any end of simulation tasks.
%=========================================================================
====
%
function sys=mdlTerminate(t,x,u)
sys = [];
% end mdlTerminate
76
REFERENCIAS
77
20. Robot-Gear. Xbee Explorer USB. [cited 2011 15 Junio]; Available from:
http://www.robotgear.com.au/Product.aspx/Details/401.
21. Real Academia de la Lengua Espaola. Visin. [cited 2011 17 Junio]; Available from:
http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&LEMA=visin.
22. Real Academia de la Lengua Espaola. Ver. [cited 2011 17 Junio]; Available from:
http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&LEMA=ver.
23. Microsoft. SonyDCRHC28 VideoCamera. [cited 2011 21 Junio]; Available from:
http://www.microsoft.com/Windows/compatibility/windows-7/en-
us/Details.aspx?type=Hardware&p=Sony%20Handycam%20DCR-
HC28%202.5LCD%2020x%20Camcorder&v=Sony&uid=DCRHC28&l=en-
US&pf=1&pi=9&c=Cameras%20%26%20Photo&sc=Camcorders&os=64-bit.
24. ReacTIVison. ReacTIVision. [cited 2011 21 Junio]; Available from:
http://reactivision.sourceforge.net/.
25. Mathworks. Simulink. [cited 2011 21 Junio]; Available from:
http://www.mathworks.com/products/simulink/.
78