Documentos de Académico
Documentos de Profesional
Documentos de Cultura
de Puebla
Facultad de Ciencias de la Electrnica
Licenciado en Electrnica
Asesor externo:
M.C. W. Fermin Guerrero Snchez
Asesor interno:
M.C. Jaime Cid Monjaraz
Puebla, Pue.
Junio de 2003
c 2003
ii
Dedicatorias
Dedico este trabajo a mis padres Jos Miguel Snchez Reyes y Rosa Ma.
Josefina Bautista Gonzlez, por el amor, la comprensin y el apoyo incondicional
que siempre me han brindado, pero ante todo por los valores e ideales que me han
inculcado. Los admiro mucho porque siempre ponen todo su empeo para salir
adelante y son un gran ejemplo de responsabilidad y dedicacin.
A mis hermanos Alejandro, Laura y Lalo, por ser mis compaeros y amigos
en el transcurso de nuestras vidas, con su apoyo y sus consejos me ayudaron
a superar los momentos difciles de mi carrera, quienes me han contagiado esa
alegra y energa que los caracteriza (realmente les deseo lo mejor en todo lo que se
propongan).
Dedico tambin este trabajo a mis abuelitos Facundo (Q.E.P.D.), Gabina, Juan
y Chelita por su gran amor y cario que siempre me han brindado.
iii
Agradecimientos
Agradezo a Dios por permitirme terminar mis estudios, gozando con la
presencia de mi familia.
Agradezco la atencin, dedicacin y participacin de mis asesores, M.C.
Jaime Cid Monjaraz y M.C. W. Fermin Guerrero Snchez. Un agradecimiento
especial al Dr. Vladimir Alexandrov por su valiosa asesora en el transcurso de
este trabajo.
Agradezco a mis amigos integrantes del proyecto Robocatepetl (Jos Fermi
Guerrero Castellanos, Gabriel Morales Ramrez y Jos Pedro Snchez Santana)
quienes conjuntamente construimos el robot mvil y compartimos experiencias
muy agradables durante el desarrollo del proyecto.
Agradezco a mis tos quienes me han apoyado a lo largo de mi vida .
Agradezco a todos mis amigos por todas esas horas de convivencia que son
invaluables y por todas las horas de discusin sin las cuales habra sido imposible
el conocimiento.
Agradezco con todo respeto y admiracin a mis maestros quienes
contribuyeron a mi formacin.
Agradezco a la Fundacin Telmex por el apoyo econmico durante mis
estudios universitarios.
iv
Contenido
Resumen visual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Captulo 1
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Robots mviles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Robots autnomos y telerrobtica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3 Panorama general de la robtica mvil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.1 Aplicacin de la robtica mvil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Morfologa de los robots mviles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4.1 Ackerman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4.2 Triciclo clsico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4.3 Direccionamiento diferencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.5 Arquitectura de robots mviles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.6 Organizacin de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Captulo 2
2.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1.1 Representacin matemtica de robots mviles . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2 Modelos cinemticos de robots mviles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2.1 Hiptesis bsicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Contents
vi
Captulo 3
3.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.2 Requerimientos generales de la arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.2.1 Diseo funcional de la arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.2.2 Gestin de ejecucin e implantacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.3 Arquitectura general del robot mvil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Contents
Captulo 4
vii
4.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.2 Mecnica del robot mvil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.2.1 Componentes mecnicos del robot mvil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.2.1.1 Chasis del robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.2.1.2 Motor con sistema de engranaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.2.1.3 Ruedas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.2.1.4 Motor elevador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.2.1.5 Ventilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.3 Electrnica del robot mvil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.3.1 Conversin Analgico-Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.3.1.1 Seales Analgicas y Seales Digitales . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.3.1.2 Muestreo de seales analgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.3.1.3 Cuantificacin de seal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.3.1.4 Convertidor Analgico-Digital del microcontrolador . . . . . . . . . . . . 93
4.3.2 Modulacin de ancho de pulso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.3.2.1 Control de Velocidad de un Motor DC . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.3.3 Componentes electrnicos del robot mvil . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.3.3.1 Microcontrolador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.3.3.2 Puente H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.3.3.3 Bateras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.3.4 Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.3.4.1 Sensor de proximidad de luz infrarroja . . . . . . . . . . . . . . . . . . . . . . . . 103
4.3.4.2 Sensor pyroelctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Contents
viii
Captulo 5
Captulo 6
Contents
Captulo 7
ix
Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Apndice A- Dibujo en tres dimensiones del robot mvil. . . . . . . . . . . . . . 160
Apndice B- Dimensiones del robot mvil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Apndice C- Tabla de conversin de voltaje de sensores IR a
distancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Apndice D- Cdigo del programa principal en lenguaje
ensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Resumen visual
Resumen
En los ltimos aos se han logrado grandes avances con los robots mviles
autnomos, desde aspiradoras automticas hasta vehculos de transporte autnomos, la
potencial utilidad de los robots que tienen la habilidad de la navegacin autnoma hace
que la investigacin en esta rea sea un interesente campo. El presente trabajo presenta la
investigacin realizada en el diseo y construccin de un robot mvil autnomo de bajo
costo, se presenta el diseo del programa encargado de la navegacin autnoma y de la
aplicacin que desempea este robot mvil, que consiste en encontrar y apagar el inicio
de un incendio (representado por una vela). El robot mvil es probado bajo techo en una
maqueta de 2.4 por 2.4 metros. Las caractersticas de construccin del robot mvil como
de la maqueta y las condiciones para llevar a cabo la aplicacin se tomarn de las bases
del concurso Fire-Fighting Home Robot que organiza el Trinity College en la ciudad de
Hartford, Connecticut, USA.
Captulo 1
Introduccin
1.1
Antecedentes
Hoy en da, existen diversas investigaciones que se han realizado en el rea de robots
moviles. Estos trabajos se han realizado tanto en el extranjero [6] [7] [8] [12] [14] [20] [19]
[22] [23], as como Universidades y Centros de Investigacin Nacionales [11] [25] [28] [29]
[30]. En particular alumnos del Dr. Alexandrov han realizado trabajos relacionados a los
robots mviles en esta Universidad [1] [27], como en el pasado Coloquio de tesis realizado
el 2 de Junio del presente, donde el M. en C. Jos Eligio Moiss Gutirrez A. (Profesor
de la Facultad de Ciencias de la Electrnica) present la Tesis Estrategias de las pruebas
maximin para la calidad de la estabilizacin robusta donde realiz Pruebas de exactitud
de estabilizacin de robots mviles en el Captulo 4 [16].
1.2
Robots mviles
Desde el punto de vista de la autonoma, los robots mviles tienen como precedentes
los dispositivos electromecnicos, tales como los denominados micro-mouse, creados
desde los aos treinta para desarrollar funciones inteligentes tales como descubrir caminos
en laberintos. Cabe destacar la tortuga de Walter, presentada en 1948, que poda reaccionar
ante la presencia de obstculos, subir pendientes y, cuando la alimentacin comenzaba a
ser insuficiente, dirigirse hacia una posicin de recarga.
Estos trabajos de investigacin no guardan una relacin directa con los vehculos
autnomos que comenzaron a aplicarse desde los aos sesenta en la industria, siendo
guiados por cables bajo el suelo o mediante sensores pticos para seguir lneas trazadas
en la planta. Estas aplicaciones, hoy da comunes en muchos procesos de fabricacin, se
caracterizan por un entorno fuertemente estructurado para facilitar la automatizacin.
En los aos setenta se vuelve a trabajar en el desarrollo de robots mviles dotados
de una mayor autonoma. La mayor parte de las experiencias se desarrollan empleando
plataformas que soportan sistemas de visin. Sin embargo el desarrollo tecnolgico todava
no era el suficiente para lograr la navegacin autnoma en forma eficiente. En los aos
ochenta el incremento espectacular de la capacidad computacional y el desarrollo de nuevos
sensores, mecanismos y sistemas de control, permite aumentar la autonoma. En esta
dcada cabe mencionar los desarrollos de robots mviles, tanto para interiores como para
navegacin exterior, realizados en la Carnegie Mellon University (Pittsburgh, EE.UU.).
Se trata de que el robot tenga la suficiente inteligencia como para reaccionar y tomar
decisiones basndose en observaciones de su entorno, sin suponer que este entorno es
perfectamente conocido.
cinemticas del vehculo. Por ejemplo, en vehculos con ruedas y traccin convencional,
interesa definir trayectorias de curvatura continua que puedan ejecutarse con el menor error
posible.
Adems de las caractersticas geomtricas y cinemticas, puede ser necesario tener
en cuenta modelos dinmicos de comportamiento del vehculo contemplando la interaccin
vehculo-terreno. Por otra parte, puede plantearse tambin el problema de la planificacin
de la velocidad teniendo en cuenta las caractersticas del terreno y del camino que se
pretende seguir.
Una vez realizada la planificacin de la trayectoria, es necesario planificar
movimientos concretos y controlar dichos movimientos para mantener al vehculo en la
trayectoria planificada. De esta forma, se plantea el problema del seguimiento de caminos,
que para vehculos con ruedas se concreta en determinar el ngulo de direccin teniendo
en cuenta la posicin y orientacin actual del vehculo con respecto a la trayectoria que
debe seguir. Asimismo, es necesario resolver el problema del control y regulacin de la
velocidad del vehculo.
Convienen mencionar tambin los mtodos que permiten la integracin de la
planificacin con el control del vehculo. Entre stos cabe mencionar el de los campos
potenciales [7] [14] [28]. La idea consiste en determinar la resultante de fuerzas que atraen
el robot hacia el objetivo y que lo repelen de los obstculos.
En cualquier caso, el problema del control automtico preciso de un vehculo con
ruedas puede resultar ms complejo que el de los manipuladores debido a la presencia de
restricciones no holnomas. Los bucles de control se plantean tanto en el espacio de las
En particular, suelen
emplearse marcas especiales cuya deteccin permite estimar con precisin la posicin del
robot. En entornos no estructurados, con ausencia de marcas especiales, la estimacin de
la posicin mediante el sistema de percepcin es notablemente ms compleja.
El sistema de percepcin de un robot mvil o vehculo autnomo tiene un triple
objetivo: permitir una navegacin segura, detectando y localizando obstculos y situaciones
peligrosas en general, modelar el entorno construyendo un mapa o representacin de
dicho entorno (fundamentalmente geomtrico), y estimar la posicin del vehculo de forma
precisa. Asimismo, el sistema de percepcin de estos robots puede aplicarse no slo para
navegar sino tambin para aplicaciones tales como el control de un manipulador situado en
el robot.
Para el diseo de estos sistemas de percepcin deben tenerse en cuenta diferentes
criterios, algunos de los cuales son conflictivos entre s. De esta forma, es necesario
considerar la velocidad del robot, la precisin, el alcance, la posibilidad de interpretacin
errnea de datos y la propia estructura de la representacin del entorno.
En muchas aplicaciones se requiere tener en cuenta diversas condiciones de
navegacin con requerimientos de percepcin diferentes.
necesario estimar de forma muy precisa, aunque relativamente lenta, la posicin del robot
y, a la vez, detectar obstculos lo suficientemente rpido, aunque no se necesite una gran
precisin en su localizacin.
Existen tambin arquitecturas en las que el sistema de percepcin se encuentra
integrado en el controlador de forma que, en entornos estructurados, es posible estimar
de forma muy rpida la posicin para navegar a alta velocidad. Asimismo, se han aplicado
redes neuronales para generar el ngulo de direccin a partir del sistema de percepcin.
Conviene mencionar tambin el inters del empleo de tcnicas de procesamiento en
paralelo para el tratamiento de imgenes en el guiado autnomo de vehculos. Con respecto
a los sensores especficos, adems de las caractersticas de precisin, rango, e inmunidad
a la variacin de condiciones del entorno, es necesario tener en cuenta su robustez ante
vibraciones y otros efectos originados por el vehculo y el entorno, su tamao, consumo,
seguridad de funcionamiento y desgaste.
Las cmaras de vdeo tienen la ventaja de su amplia difusin y precio, su carcter
pasivo (no se emite energa sobre el entorno) y que no es necesario, en principio, el
empleo de dispositivos mecnicos para la captacin de la imagen. Las desventajas son
los requerimientos computacionales, la sensibilidad a las condiciones de iluminacin, y los
problemas de calibracin y fiabilidad.
La percepcin activa mediante lser es un mtodo alternativo que ha cobrado una
importante significacin en robots mviles. Se utilizan dispositivos mecnicos y pticos
de barrido en el espacio obtenindose imgenes de distancia y reflectancia a las superficies
intersectadas por el haz.
Los sensores de ultrasonido son econmicos y simples para la navegacin. Se basan
en la determinacin del denominado tiempo de vuelo de un pulso de sonido (entre 30
kHz y 1 MHz). Sin embargo, la influencia de las condiciones ambientales puede ser
significativa, debiendo corregirse mediante una calibracin adecuada. Por otra parte, la
relacin seal/ruido es normalmente muy inferior a la de los otros sensores, lo que puede
10
1.2.1
11
invariantes, con una limitada percepcin del entorno. Son precisos, de alta repetibilidad
y relativamente rpidos; incrementan la productividad ahorrando al hombre trabajos
repetitivos y, eventualmente, muy penosos o incluso peligrosos.
Los robots autnomos o inteligentes son los ms evolucionados desde el punto de
vista del procesamiento de informacin. Son mquinas capaces de percibir, modelar
el entorno, planificar y actuar para alcanzar objetivos sin la intervencin, o con una
intervencin muy pequea, de supervisores humanos. Pueden trabajar en entornos poco
estructurados y dinmicos, realizando acciones en respuesta a contingencias variadas en
dicho entorno.
Durante las ltimas dcadas se han realizado importantes esfuerzos en la aplicacin
de tcnicas de Inteligencia Artificial. Se han empleado mtodos simblicos de tratamiento
de la informacin basados en modelos geomtricos del entorno.
Las dificultades
surgen por la elevada capacidad de procesamiento requerida para tratar en tiempo real
problemas suficientemente significativos para muchas aplicaciones y, sobre todo, por
12
13
criterios de decisin basados en modelos del entorno suficientemente precisos sin tener
demasiado en cuenta la posibilidad de generalizar el comportamiento. En este punto
conviene poner de manifiesto el inters de las arquitecturas con capacidad de aprendizaje
que combinan la planificacin estratgica, basada en tcnicas de bsqueda, con la
planificacin puramente reactiva.
1.3
1.3.1
14
El uso de robots mviles est justificado en aplicaciones en las que se realizan tareas
molestas o peligrosas para el ser humano. Entre ellas el transporte de material peligroso,
excavaciones mineras, localizacin de minas en campos de guerra o inspeccin de plantas
nucleares son ejemplos donde un robot mvil puede desarrollar su labor y evitar exponer la
vida del ser humano. Otro grupo de aplicaciones donde este tipo de robots desempea
una actuacin importante es el de labores de vigilancia o inspeccin. Asimismo en
aplicaciones de teleoperacin, donde existe un retraso sensible en las comunicaciones,
resulta interesante el uso de vehculos con cierto grado de autonoma, como en la
exploracin espacial.
Una aplicacin especfica para un robot mvil, es el control de incendios. Combatir
el fuego ha sido una preocupacin de la humanidad, y hoy en da podemos hacer uso de
los robots para llevar a cabo la aplicacin de controlar y extinguir el fuego. La etapa en la
cual se puede controlar un incendio es al inicio del mismo. Si al inicio de un incendio se
activa un robot mvil que tiene la tarea programada de buscar donde se produjo el fuego
mediante una tcnica de navegacin autnoma, el robot encontrar el inicio del incendio
para finalmente extinguirlo, evitando as que el incendio continue en una etapa en la cual
no se pueda controlar. Esta aplicacin es sumamente importante ya que por el hecho de
no controlar los incendios en una etapa inicial, estos han generado grandes prdidas, tanto
econmicas como humanas en el transcurso de la humanidad. En particular la Direccin
de Bomberos del Estado de Puebla prest sus servicios para controlar 1854 incendios tanto
en casas, fbricas y gasolineras durante el ao 2002.
15
1.4
Los robots mviles que son considerados en esta seccin son los que se desplazan
con ruedas.
16
1.4.1
Ackerman
De hecho, los
Las
prolongaciones de los ejes de las dos ruedas delanteras intersectan en un punto sobre la
17
prolongacin del eje de las ruedas traseras. El lugar de los puntos trazados sobre el suelo
por los centros de los neumticos son circunferencias concntricas con centro el eje de
rotacin P1 en la figura (1.1). Si no se tienen en cuenta las fuerzas centrfugas, los vectores
de velocidad instantnea son tangentes a estas curvas.
0
Y
P1
1.4.2
Triciclo clsico
Este sistema de locomocin se ilustra en la figura (1.2). La rueda delantera sirve tanto para
la traccin como para el direccionamiento. El eje trasero, con dos ruedas laterales, es pasivo
y sus ruedas se mueven libremente. La maniobrabilidad es mayor que en la configuracin
anterior pero puede presentar problemas de estabilidad en terrenos difciles. El centro de
gravedad tiende a desplazarse cuando el vehculo se desplaza por una pendiente, causando
la prdida de traccin.
1.4.3
Direccionamiento diferencial
El direccionamiento del robot viene dado por la diferencia de velocidades de las ruedas
laterales [13]. La traccin se consigue tambin con estas mismas ruedas. Adicionalmente
18
Y
X
existen una o ms ruedas para soporte. En la figura (1.3) se ilustra el sistema de locomocin
diferencial, esta configuracin es la ms frecuente en robots para interiores.
Figura 1.3.- Locomocin con direccionamiento diferencial en dos ruedas laterales. El sistema emplea cuatro
ruedas de castor no actuadas para soporte de la plataforma.
Contar con dos ruedas laterales, las cuales proporcionan el sistema de direccionamiento y la traccin del robot mvil.
Contar con una o ms ruedas de soporte.
Tener 3 grados de libertad.
19
Es holonmico, el cual puede ser tratado como un punto sin masa que se puede
mover en cualquier direccin.
Esta configuracin permite al robot girar en su sitio con respecto al eje vertical para
maniobrar en reas congestionadas. Las velocidades de las ruedas son monitoreadas por
encoders pticos sujetos al eje de estructura.
El desplazamiento del robot D a lo largo de una trayectoria est dado por la ecuacin:
D=
Di + Dd
2
(1.1)
donde:
D = desplazamiento del robot
Di = desplazamiento de la rueda izquierda
Dd = desplazamiento de la rueda derecha
Similarmente, la velocidad del robot V est dado por la ecuacin:
V =
Vi + Vd
2
(1.2)
donde:
V = Velocidad del robot
Vi = Velocidad de la rueda izquierda
Vd = Velocidad de la rueda derecha
Refirindose a la figura (1.4), el arco Di representa una porcin de la circunferencia
de un crculo de radio d + b:
Ci = 2(d + b)
donde:
(1.3)
20
Di
Dd
d
Figura 1.4.- Arcos Di y Dd son trazados por las ruedas izquierda y derecha respectivamente
2Di
implica: Ci =
=
Ci
2
(1.4)
Di
d+b
(1.5)
(1.6)
donde:
Cd = circunferencia del crculo trazado por la rueda derecha
Y la relacin
Dd
2Dd
implica: Cd =
=
Cd
2
(1.7)
21
Dd
(1.8)
Di
Di Dd
=
Dr
d
d+
(1.9)
Note que esta expresin para el cambio de orientacin en el vehculo es una funcin
del desplazamiento de las ruedas de direccin izquierda y derecha y es completamente
independiente de la trayectoria tomada. Sin embargo, la variable d en el denominador,
representa una fuente de error significativa, debido a la incertidumbre asociada con el punto
efectivo de contacto de las ruedas como se ilustra en la figura (1.5).
d
W
Figura 1.5.- La incertidumbre en el punto efectivo de contacto entre la llanta y el suelo introduce una
ambigedad 2W en la separacin de las ruedas d.
22
Rn
Re
Figura 1.6.- Debido a la conformidad de la llanta, el radio efectivo Re es menor al radio nominal Rn.
(1.10)
donde:
= rotacin de la rueda (radianes)
Rei = radio efectivo de la rueda izquierda.
Expresando en trminos de conteo de encoders, esto implica:
Di =
2Ni
Rei
Ct
(1.11)
donde:
Ni = nmero de pulsos del encoder izquierdo
Ct = pulsos del encoder por cada revolucin de la rueda
Similarmente, para la rueda derecha:
Dd =
2Nd
Rer
Ct
(1.12)
23
donde:
Nd = nmero de pulsos del encoder derecho
Ct = pulsos del encoder por cada revolucin de la rueda
Red = radio efectivo de la rueda derecha.
El controlador de direccionamiento intentar hacer que el robot viaje en una lnea
recta asumiendo que Ni y Nd son iguales. Ntese, sin embargo, que el radio efectivo de la
rueda es una funcin de la elasticidad de la llanta y el peso del robot y debe ser determinado
empricamente. En realidad, Rei puede no ser igual a Red .
movimiento
Dm
R
O
O
h
Dh
R-h
R
C
C
h
Escaln
w
h
24
= 2
Dm Dh
d
(1.13)
donde
Dm = medida de la distancia viajada
Dh = distancia horizontal real viajada
d = distancia de separacin entre las ruedas.
Un efecto similar es observado cuando se cruza una hendidura en la superficie del
suelo, con una cada vertical h0 determinada por la relacin del dimetro de la rueda con
el ancho de la hendidura. Abolladuras y hendiduras en el suelo pueden causar errores no
sistemticos que adversamente afecten el desempeo del robot.
Otra fuente de error comn son los inevitables resbalones entre la llanta y la superficie
del suelo debido a la concentracin de grasa o aceite, derramamiento de lquidos, una
excesiva aceleracin o desaceleracin o inclusive un impacto del vehculo.
1.5
25
En este trabajo los sensores estn conectados a una unidad central de proceso, y en
base a la informacin que estos sensores proporcionan, el comportamiento del robot mvil
cambia para controlar a los actuadores, como se muestra en la figura (1.9). El modo de
funcionamiento de los sensores, actuadores y el procesamiento de la informacin de la
unidad central de proceso se describir en los siguientes captulos.
Motores
Encoders
Unidad Central de Proceso
Elevador vent.
Optosensores
Actuadores
Sensores
Sensor IR de
distancia
26
Ventilador
Pyroelctrico
Figura 1.9.- Figura conexin entre sensores, unidad central de proceso y actuadores.
1.6
Organizacin de la tesis
El
cuarto captulo describe todo lo relacionado con el hardware (mecnica y electrnica) del
robot mvil, mientras que el quinto captulo presenta el software (programa) del robot
mvil. Finalmente el sexto captulo presenta las pruebas computacionales y los resultados
experimentales que se realizaron y en el sptimo captulo se presentan las conclusiones
y las mejoras que se pueden realizar al presente trabajo. En el Apndice A se muestra
un modelado en tres dimensiones en AutoCAD del robot mvil y en el Apndice B se
muestran las dimensiones del mismo modelado. En el Apndice C se encuentra la tabla de
conversin entre el voltaje de los sensores IR y la distancia que miden. Finalmente en el
Apndice D se muestra el cdigo del programa principal en lenguaje ensamblador.
Captulo 2
Modelacin Matemtica de Robots Mviles
2.1
Introduccin
27
2.1 Introduccin
28
2.1 Introduccin
2.1.1
29
Objeto en Movimiento
Sistema
Motor
Sistema
Sensorial
Sistema de Control
= F (Y, u, t)
z = (Y ) + (t)
<s , t [t0 , t1 )
u W = u() KC, |u(t)|
2.1 Introduccin
30
2.1 Introduccin
31
32
2.2
2.2.1
Para el desarrollo de los modelos cinemticos de robots mviles se adoptan las siguientes
hiptesis simplificadoras: [26]
33
El robot se comporta como un slido rgido, de forma que si existen partes mviles
(ruedas de direccin), stas se situarn en la posicin adecuada mediante el sistema
de control.
2.2.2
Restricciones cinemticas
Sea p = [p1 ...pr ]T un vector de las variables necesarias para determinar completamente la
posicin y orientacin de todas las partes de un sistema fsico. Cuando se utilizan estas
variables para describir un movimiento, es necesario tener en cuenta que las variables
pueden no ser independientes. As, por ejemplo, en el movimiento del pndulo simple
con una varilla que se ilustra en la figura (2.2), existe un nico grado de libertad el ngulo
y las coordenadas (x, y) de la masa del extremo de la varilla deben cumplir la restriccin
(2.1)
x2 + y 2 l2 = 0
siendo l la longitud de la varilla del pndulo
l
y
l
x
34
(2.2)
(2.3)
Las no holnomas dependen de las velocidades. Para que una restriccin sea no
holnoma se exige adems que no sea integrable; es decir, que no se deduzca por derivacin
total con respecto al tiempo de una holnoma.
En los modelos cinemticos de numerosos robots mviles existen relaciones no
holnomas entre las coordenadas en el espacio de los actuadores y las coordenadas en
el espacio cartesiano.
Considrese el movimiento de la rueda de radio r en una dimensin tal como el
(en lugar de i, j, k) el vector
que se ilustra en la figura (2.3). Se representa mediante X
35
(2.4)
que depende de las velocidades, pero puede deducirse por derivacin de la restriccin
holnoma
x c = constante
(2.5)
36
x0 sin + y 0 cos = 0 c
(2.6)
x0 cos + y 0 sin = 0
(2.7)
X
c
Y
Estas dos restricciones no son integrables (no se pueden obtener como las derivadas
de dos condiciones holnomas), por lo tanto, no se pueden obtener relaciones funcionales
entre las variables (x, y, , ) a partir de las ecuaciones (2.6) y (2.7). Dados unos valores
(x0 , y0 , 0 , 0 ), haciendo rodar la rueda sin deslizar y girndola alrededor del eje vertical, es
posible llegar a cualquier otra configuracin ((xf , yf , f , f ), lo cual implica que no existe
una relacin funcional entre estos valores. Sin embargo, las direcciones de movimiento
deben satisfacer las ecuaciones anteriores, y por tanto, el camino no puede ser cualquiera.
37
En la prctica, existen diferentes tipos de rueda cuya consideracin tiene una notable
influencia en el modelo cinemtico del vehculo. As, cabe distinguir entre cuatro tipos
de ruedas. Las ruedas fijas slo pueden rotar sobre su eje (ngulo en la figura (2.4)).
Las ruedas de direccionamiento se caracterizan por la rotacin alrededor del eje vertical
(ngulo en la figura (2.4)). Las ruedas de soporte tambin son orientables respecto al
vehculo, pero el eje vertical de rotacin no pasa por el centro de la rueda. Finalmente,
las denominadas ruedas suecas permiten variar la direccin de la velocidad del punto de
contacto con relacin al plano de la rueda (el vector velocidad puede tener un ngulo con
respecto a la tangente).
Considrese un sistema de referencia {G} y un sistema {L} con centro en el punto de
guiado del vehculo y eje YL en la direccin del eje longitudinal del vehculo (figura (2.5)).
YL
YG
XL
{L}
{G}
y
XG
38
YL
XL
v=
s
t
(2.8)
(2.9)
s = R
(2.10)
1
=
R
s
(2.11)
2.3
39
(x) = (R R cos())
(y) = R sin()
(2.12)
(2.13)
(2.14)
(2.15)
(2.16)
sin() =
(2.17)
(2.18)
y = R cos()
(2.19)
x = s sin()
(2.20)
y = s cos()
(2.21)
40
x0 = v sin
(2.22)
y 0 = v cos
(2.23)
0 =
(2.24)
Rd
Rt
Figura 2.7.- Modelo de la bicicleta. Rd rueda delantera, Rt rueda trasera.
2.3.1
41
Modelo jacobiano
p0 = J(p)q 0
(2.25)
p = f (p) +
m
X
g(p)i qi0
(2.26)
i=1
sin
0
0
cos
p =
v + 0
0
1
(2.27)
x0
sin 0
y 0 = cos 0 v
0
0
1
(2.28)
42
x cos + y 0 sin = 0
que constituye la restriccin no holnoma del movimiento (2.7), segn la cual el vehculo
debe moverse en cada instante segn la direccin de su eje longitudinal de simetra
x0
tan = 0
y
(2.30)
(2.31)
sin cos 0
0
0
1
de la primera se deduce
v = x0 sin + y 0 cos
que coincide con la ecuacin (2.6).
x0
y0
0
(2.32)
(2.33)
43
Por otro lado es necesario comprender las diferentes morfologas de los robots
mviles, las cuales se presentan a continuacin.
2.3.2
vi
(x, y)
a) Sncrona
(x, y)
vd
b) Diferencial
(x, y)
(x, y)
b
R
c) Triciclo clsico
1/
d) Configuracin Ackerman
44
vd + vi
(d + i )c
=
2
2
(d i )c
vd vi
=
=
b
b
v =
siendo b la va del vehculo (distancia que separa las dos ruedas centrales).
(2.34)
(2.35)
Por
v (b/2)
c
v + (b/2)
=
c
i =
(2.36)
(2.37)
45
x0
(c sin )/2
(c sin )/2
y 0 = (c cos )/2 i + (c cos )/2 d
0
c/b
c/b
i
= (c cos )/2 (c cos )/2)
d
c/b
c/b
(2.38)
(2.39)
v = vt cos = ct cos
(2.40)
0 =
(2.41)
0 =
ct
vt
sin = sin
l
l
(2.42)
46
0
sin cos
x
y 0 cos cos
vt +
0 =
(sin )/l
0
sin cos
0
0
cos cos
=
0
(sin )/l
1
0
v
0
t
0
1
(2.43)
Obsrvese tamben que, conocidas las velocidades deseadas lineal v y angular , las
variables de control y t pueden obtenerse mediante:
l
l
= arctan
= arctan
R
v
vt
=
t =
c
v 2 + 2 l2
c
(2.44)
(2.45)
(2.46)
0 = v
siendo la curvatura, que puede obtenerse en funcin del ngulo de direccionamiento
mediante = (tan )/l.
47
2.3.3
48
v
sin
d
x
x0
0
R
y = y0 + t v cos d
0R
t
0
d
0
(2.47)
(
+
)
d
x0
x
d
i
2
R0
y = y0 + t c cos ( d + i ) d
2
0 R
t c
0
( d + i ) d
(2.48)
0 b
(2.49)
v = c t cos
Rt
v
sin
d
x
x0
0
R
y = y0 + t v cos d
R0t vt sin
0
d
(2.50)
2.4
49
50
Las caractersticas del robot mvil son importantes. As, las tcnicas para controlar
pequeos robots omnidireccionales son diferentes de las utilizadas para controlar vehculos
automviles convencionales adaptados para su funcionamiento autnomo.
En la figura (2.9) se muestra un esquema de control de vehculos autnomos en el que
se identifican dos bucles. El de la izquierda es el del control de la direccin del vehculo.
Se trata de generar las consignas a los actuadores que hacen que el vehculo tome en cada
instante la direccin apropiada. El bucle de la derecha es el de control de velocidad. En
este caso, se trata de generar la consigna a los actuadores que realizan la propulsin del
vehculo.
x, y, ,
Generacin consigna
direccin
Generacin consigna
velocidad
Servo de direccin
Servo de velocidad
Dinmica lateral
x, y, , , v
Dinmica longitudinal
Figura 2.9.- Control de velocidad y desplazamiento lateral. La posicin del vehculo viene dada por x,y; es
la orientacin, la curvatura y v la velocidad
51
2.5
52
Camino
(x, y)
(xob, yob)
X
Figura 2.10.- Seguimiento de caminos explcitos.
El camino que se pretende seguir puede especificarse de diversas formas entre las que
cabe mencionar:
1) Especificacin previa en coordenadas absolutas a partir de planos o mapas, o bien
con el propio vehculo dotado de un sistema de GPS diferencial recorriendo un camino que
se graba en memoria para su posterior reproduccin.
2) Especificacin interactiva desde una terminal empleando tcnicas de telerrobtica
o instrucciones especficas.
3) En una arquitectura de control inteligente empleando mtodos de planificacin de
caminos. Esta es la tcnica que se utiliza en numerosos sistemas de navegacin autnoma
tales como los del NavLab, RAM y Romeo.
4) Mediante el sistema de percepcin, tal como sucede en el seguimiento de lneas
obtenidas mediante un sistema de visin sobre el vehculo, o bien en el seguimiento de
53
54
2.6
2.6.1
Considrese un sistema de referencia local asociado al movimiento del vehculo, tal como
se muestra en la figura (2.11). Se supone que, en el intervalo de control, la curvatura es
constante, describiendo el vehculo un arco de circunferencia.
Del anlisis de la figura (2.11) se deducen las relaciones:
r = x + d
r2 = d2 + (y)2
(2.51)
(2.52)
55
y
punto
objetivo
x
x
(2.53)
(x)2 + (y)2
2x
(2.54)
2(x)
1
=
r
L2
(2.55)
donde el signo viene dado por el sentido de giro necesario para alcanzar el punto objetivo
en la figura (2.11), L es la distancia a la que se encuentra el punto objetivo y x es el
desplazamiento lateral.
La expresin anterior constituye la ley de control de persecucin pura (pure
pursuit). Obsrvese cmo es una ley de control proporcional al error lateral (x) con
respecto al punto objetivo. La constante de proporcionalidad (ganancia) vara con la inversa
del cuadrado de L.
56
(2.56)
Un mtodo prctico para aplicar la ley de control consiste en obtener, en cada periodo
de control, el punto (xobm , yobm ) del camino objetivo que est ms prximo al vehculo
(x, y) y elegir el punto objetivo (xob , yob ) a una distancia fija s sobre el camino tomada
en el sentido de avance a partir de (xobm , yobm ), tal como se ilustra en la figura (2.12). A
continuacin se calculan:
L=
p
(xob x)2 + (yob y)2
(2.57)
57
(xob, yob)
r
s
(x, y)
(xobm, yobm)
x
Figura 2.12.- Aplicacin del mtodo de persecucin pura con distancia fija sobre camino.
2.7
58
2.7.1
Controlabilidad y estabilizacin
z 0 = B(z)u
(2.58)
59
z = = [x y ]T
(2.59)
60
(2.60)
(2.61)
0 =
puede escribirse en la forma z 0 = B(z)u, siendo z = [x y ]T , u = [v ]T las variables de
control correspondientes a las velocidades, y
sin 0
B = cos 0
0
1
(2.62)
Ntese que en esta configuracin no existen ruedas direccionables y que, por tanto,
0 0
v
v
z 0 = B(0)
= 1 0
0 1
(2.63)
61
0 0
C = B(0) = 1 0
(2.64)
0 1
es slo 2.
(2.65)
siendo A una matriz de Hurwitz, tal que el sistema en bucle cerrado viene dado por
d
(z z ) = A(z z )
dt
(2.66)
62
(2.67)
(2.68)
x01 =
x02 = x0 sin x cos + y 0 cos y sin
(2.69)
(2.70)
x03 = x2
Si ahora se hace,
u1 =
(2.71)
u2 = v x3
el modelo puede escribirse en la forma
x01 = u1
x02 = u2
(2.72)
63
x03 = x2 u1
Este modelo pertenece a la clase que se denomina en cadena, caracterizada por
ecuaciones de estado de la forma
x01 = u1
x02 = u2
(2.73)
x03 = x2 u1
...
x0n = xn1 u1
Estos sistemas son de particular inters para el modelado y control de robots mviles
con restricciones no holnomas.
Ntese que, aunque el sistema es no lineal, si u1 es una funcin del tiempo y no una
variable de control, puede escribirse:
siendo
x02
x03
x01 = 0
0
0 0
0
0
x2
u1 (t) 0 0
x3
0
0
0
xn
xn
0
0 0 u1 (t) 0
x01
= x1
1
0
+ u2
0
(2.74)
(2.75)
u1 ()d
Por tanto, en este caso, se tiene un sistema de una sola entrada, lineal y de coeficientes
variables en el tiempo. Es decir, si se escribe un sistema no lineal con dos entradas
en la forma de cadena, es posible linealizarlo con respecto a una de sus entradas. En
64
2.7.2
Seguimiento de trayectorias
2.7.2.1
65
Trayectorias de referencia
Considrese que la trayectoria que se pretende seguir viene dada por el modelo de
referencia:
x0ref = vref sin ref
0
yref
= vref cos ref
(2.76)
0ref = ref
Su supone que vref y ref = 0ref y sus derivadas estn acotadas.
Se supondr tambin que:
lim vref (t) 6= 0;
(2.77)
lo que significa que se pretende seguir una trayectoria, ya que en el caso en que fueran
nulas, el problema consistira en alcanzar una postura de referencia fija.
El problema de seguimiento consiste en encontrar una ley de control:
v
u=
= (, ref , vref , ref )
(2.78)
tal que:
lim [(t) ref (t)] = 0
(2.79)
Este problema de seguimiento involucra una ecuacin dinmica del error ref .
Considrese el siguiente cambio de coordenadas:
xref x
e1
sin cos 0
e2 = cos sin 0 yref y
ref
e3
0
0
0
(2.80)
0
y 0 ) cos
e01 = (xref x) cos (x0ref x0 ) sin (yref y) sin + (yref
66
0
e02 = (xref x) sin (x0ref x0 ) cos (yref y) cos (yref
y 0 ) sin
(2.81)
e03 = ref
0
, y 0 de (2.76) y (2.61) se obtiene
Sustituyendo las expresiones de x0ref , x0 , yref
e01 = [(x xref ) cos + (y yref ) sin ] v(sin2 + cos2 ) + vref (sin ref sin + cos ref cos )
e02 = [(xref x) sin + (yref y) cos ] + vref (sin ref cos cos r sin )
(2.82)
e03 = ref
Sustituyendo (2.80) en (2.82) y haciendo:
u1 = v + vref cos e3
(2.83)
u2 = ref
se llega a
0 0
0
1 0
u1
0
0 0 e + sin e3 vref + 0 0
e =
u2
0 1
0 0 0
0
(2.84)
0
0
ref (t)
1 0
u1
0
0
vref (t) e + 0 0
ref (t)
(2.85)
e =
u2
0
0
0
0 1
Si vref y ref son constantes, se tiene un sistema lineal e invariante en el tiempo cuya
1 0
0
0 2ref vref ref
C = [B AB A2 B] = 0 0 ref vref
0
0
0 1
0
0
0
0
(2.86)
Si vref y ref son diferentes de cero, el sistema es controlable. Ntese que si vref y
ref = 0 (sistema de referencia en reposo), se pierde la controlabilidad.
2.7.2.2
67
k1
ref
0
0
vref e
e0 = Ae = ref
0
k2 sgn(vref ) k3
(2.87)
(2.88)
(2.89)
(2.90)
(2.91)
b2 2ref
=
|vref |
k3 = 2b
(2.92)
68
Ntese que la ganancia k2 aumenta cuando |vref | se hace pequea. Este problema
puede evitarse mediante un procedimiento de variacin de polos deseados con la velocidad,
al cual se denomina de escalado de velocidad. De esta forma si, por ejemplo, se hace:
2
b = ( 2ref + vref
)1/2
(2.93)
k2 = |vref |
(2.94)
2
)1/2
k2 = 2(2ref + vref
2.7.3
2.7.3.1
69
Seguimiento de caminos
Planteamiento del problema
v cos ( - c )
v
P
70
en M y el del vehculo:
v cos
s0
=
Rc
Rc
(2.95)
1 v cos
c (s) 1(s)
(2.96)
(2.97)
= c , se obtiene:
Finalmente, derivando en
0 = dc
dt
(2.98)
(2.99)
s0 = v cos
0 = v sin
1
1 c (s)
0 = v cos
(2.100)
1
1 c (s)
71
suficientemente suave:
v(t)]
= k[s, , ,
(2.101)
lim (t)
= 0
(2.102)
Obsrvese que, en este caso, se trata de anular los errores de seguimiento de dos
Por otra parte, ahora se
variables (distancia al camino y diferencia de orientacin ).
considera una nica variable de control . En efecto, en el seguimiento de caminos se
considera exclusivamente la separacin del robot del camino. Sin embargo, la posicin del
robot a lo largo del camino (caracterizada por el valor de la distancia con signo sobre el
camino s) depende de la velocidad v, la cual no se utiliza como variable de control.
Para resolver este problema se considera la variable auxiliar:
u = v cos()
c (s)
1 c (s)
(2.103)
s0 = v cos
0 = v sin
1
1 c (s)
(2.104)
0 = u
2.7.3.2
72
este caso, para controlar lateralmente el vehculo slo se necesita considerar la segunda y
es suficientemente pequeo puede escribirse:
tercera ecuacin de (2.104). Si
0 = v
0 = u
(2.105)
u = k1 v k2 |v|
(2.106)
(2.107)
(2.108)
|v| d
(2.109)
00 + k2 0 + k1 = 0
(2.110)
(2.111)
73
Captulo 3
Arquitecturas para control de robots
3.1
Introduccin
1.
Programabilidad
Con la programabilidad se hace alusin a la especificacin de tareas como acciones
que es necesario ejecutar, formulando objetivos que son necesarios cumplir y la
posibilidad de planificar acciones de acuerdo con el estado actual del robot y de su
entorno.
2.
Eficiencia
Se refiere tanto a la eficiencia en la realizacin de una tarea (tiempo de ejecucin
precisin) como a los recursos empleados (hardware y software necesarios). En
principio, la eficiencia se consigue disponiendo de modelos apropiados del robot y de
su entorno. Tambin se debe definir, de la forma ms precisa posible, los lmites sobre
74
75
los tiempos de ejecucin y recursos empleados para realizar las funciones de control
necesarios para la ejecucin de las operaciones especificadas.
3.
Capacidad de evolucin
Es un requerimiento de especial inters en arquitecturas concebidas para proyectos
innovadores, o de demostracin (como el presente trabajo), en los cuales pueden
producirse revisiones significativas e incorporacin de nuevas tecnologas, equipos y
componentes.
4.
Grado de autonoma
El grado de autonoma es otra especificacin bsica en el diseo de la arquitectura,
el cual indica la independencia de operacin sin la intervencin de un supervisor. En
general, todas las propuestas de arquitecturas de control inteligente consideran un
elevado grado de autonoma.
5.
Adaptabilidad
Est relacionada con la flexibilidad, entendida como capacidad de funcionamiento
en entornos diversos, poco conocidos, con capacidad de responder ante cualquier
eventualidad.
3.2
76
estructura lgica que cumpla con requerimientos de diseo, estudiando las interrelaciones
entre las distintas funciones que es necesario realizar, definiendo niveles de jerarquizacin
y estableciendo un compromiso entre planes para cumplir objetivos y reacciones ante
situaciones no previstas en los planes. En el segundo, se trata esencialmente de asignar
unos recursos software y hardware a las funciones especificadas en la arquitectura
funcional. Esta segunda fase es imprescindible en cualquier proyecto de robtica que debe
concluir con una realizacin prctica [26].
Diferentes arquitecturas para la navegacin de robots autnomos han sido propuestas
en los ltimos aos, stas incluyen arquitecturas jerrquicas que dividen las funciones
del robot en capas de alto nivel (modelamiento y planeacin) y capas de bajo nivel
(percepcin y ejecucin). Arquitecturas basadas en comportamientos [8], que logran
funciones complejas combinando otras ms simples producidas por comportamientos
bsicos, y arquitecturas hbridas, que combinan organizacin en capas con descomposicin
basadas en comportamientos en la ejecucin de cada capa.
3.2.1
El enfoque tpico consiste en partir de las tareas que es necesario realizar y descomponerlas
en funciones, definiendo las interacciones entre ellas. Los problemas tpicos que hay que
abordar en el diseo de arquitecturas de control son:
1.
77
Compromiso planes/reacciones
Este compromiso es hoy da tpico en el diseo de arquitecturas de sistemas de control
de robots. Se trata de establecer un compromiso entre la ejecucin de planes mediante
estrategias de bsqueda, de la forma ms aproximada posible a la ptima, para alcanzar
unos objetivos previamente definidos, y la capacidad de reaccin a contingencias no
previstas a partir de informacin sensorial. En principio, para entornos bsicamente
conocidos y estticos, es posible disponer de modelos suficientemente precisos, por lo
que el sistema de control podra tener una arquitectura orientada fundamentalmente a
la ejecucin de planes, manteniendo una cierta capacidad de reaccin ante imprevistos.
3.
4.
78
Otras caractersticas
En la definicin funcional de la arquitectura es necesario involucrar tambin la
definicin de prioridades (mayores a las funciones relacionadas con la seguridad),
la asignacin de tareas, tpicamente continua en algunas funciones, tales como la
evitacin de obstculos, y bajo demanda en otras, tales como el reconocimiento de
un determinado objeto. Asimismo, puede distinguirse entre funciones sncronas y
asncronas.
3.2.2
Se trata esencialmente de definir las relaciones entre las funciones del sistema y los recursos
software y hardware disponibles. El tema puede abordarse desde la perspectiva tpica
de las arquitecturas para control en tiempo real. De esta forma, el primer compromiso que
hay que adoptar es el grado de distribucin de los recursos. En un sistema centralizado
existen una serie de mdulos dedicados a percepcin, planificacin de tareas/misiones,
planificacin de trayectorias y control de movimientos, los cuales se comunican todos
con un mdulo central en el que se mantiene toda la informacin relevante del robot y su
entorno (geometra, conocimiento simblico, posicin y trayectoria del robot, etc.). Este
mdulo se encarga de comunicar y sincronizar los restantes mdulos.
3.3
79
La arquitectura general del robot mvil est compuesta de dos niveles: un nivel de
decisin, y un nivel funcional. Este ltimo est compuesto de mdulos que implementan
las funciones para lograr el procesamiento de la informacin de los sensores y realizar el
control de los dispositivos. En el nivel de decisiones es asncrono, mientras que en el nivel
funcional todas las funciones se realizan de una manera sncrona. En la figura (3.1) se
presenta la arquitectura de control propuesta para el robot mvil.
Nivel de
decisiones
Nivel
funcional
Navegacin Autnoma
Aplicacin especfica
Procesamiento bsico
Control de dispositivos
Tratamiento de seales
Sensores
Actuadores
Captulo 4
Hardware del robot mvil
4.1
Introduccin
80
4.1 Introduccin
81
Durante los ltimos aos, algunas compaas comenzaron a prestar sus servicios a los
aficionados, algunos investigadores han fundado compaas que construyen robots, como el
caso del Dr. Mark W. Spong, fundador y presidente de la empresa Mechatronics Systems1
quien fue investigador del Departamento de Control Automtico del CINVESTAV.
Anteriormente estos investigadores haban estado a la vanguardia en el desarrollo de los
robots y ahora estn compartiendo a la comunidad investigadora todo lo relacionado al
tema. Para tener acceso a los avances que se han logrado existe hoy en da la posibilidad de
comprar un robot pero desafortunadamente son muy caros. En la figura (4.1) se muestran
algunos robots, estos son ms sofisticados y caros de izquierda a derecha.
Figura 4.1.- Robots disponibles comercialmente, organizados de izquierda a derecha de acuerdo su aumento
tanto en precio como en capacidad, el Rug Warrior, ActiveMedia Pioneer-DXe, iRobot Magellen, iRobot B21
82
este cuesta alrededor de $3,495 dlares US. El Pioneer-Dxe tambin acepta accesorios y
viene con software muy diverso. El kit menos caro disponible es el rug warrior. Este cuesta
alrededor de $600 dlares US. e incluye un procesador Motorola HC11 y su principal
detector de objetos es un sencillo sensor detector/emisor Sharp con un rango de 15 cm.
[20].
El objetivo del diseo del hardware (mecnico y electrnico) del robot mvil que
se presenta en este trabajo consiste en superar las capacidades del rug-warrior y tener
capacidades cercanas como sea posible a los robots de investigacin de rango medio
como el ActiveMedia Pioneer-Dxe. Aunque este robot cuesta algunos miles de dlares,
el presupuesto del robot mvil es inferior al costo del rug-warrior, que se toma como
referencia con respecto a su precio.
4.2
La construccin de la mecnica del robot mvil desde sus componentes bsicos es una
tarea difcil. Una de las ms difciles fue el diseo del sistema propulsin. El sistema
de propulsin para robots que trabajan en el interior de un recinto casi siempre consiste
en motores elctricos. Disear un sistema de manejo elctrico requiere conocimientos en
la seleccin de los motores correctos para el tamao y peso del robot. El motor puede
tener incorporado una caja o sistema de engranaje, ste proporciona algunas ventajas pero
usualmente reducen el trabajo directo para el motor. Por consiguiente para un robot de
tamao mediano el sistema de engranaje tiene que ser construido, el cual requiere habilidad
para su construccin. Las dimensiones para el diseo y construccin del robot mvil fueron
83
basadas en los requisitos para participar en el concurso Fire-Fighting Home Robot que
organiza el Trinity College en la ciudad de Hartford, Connecticut, USA.[31]
4.2.1
Rueda
Izquierda
Rueda
Derecha
Rueda
de soporte
(o rueda loca)
Figura 4.2.- Diagrama del chasis del robot mvil del tipo robot diferencial
84
El diseo del chasis del robot mvil est basado en un robot diferencial el cual consiste
en tener dos ruedas laterales las cuales proporcionan el sistema de direccionamiento y la
traccin del robot mvil, adems de tener una o ms ruedas de soporte como se muestra
en la figura (4.2). La propulsin de las ruedas se lleva mediante dos motores elctricos.
Basndose en este modelo el chasis del robot mvil tiene una forma circular, y las ruedas
as como todos los componentes estn dentro del crculo. Esta forma circular evita que
las esquinas de una forma cuadrada o rectangular interfirieran con los movimientos que el
robot desempear como se muestra en la figura (4.3), los cuales consisten en girar el robot
en su propio eje o de girar apoyndose en una de las ruedas
Esquina interfiriendo
en el movimiento
Giro hacia
la derecha
Figura 4.3.- Ventajas de la forma circular del chasis del robot mvil
85
que el robot pueda alojar todos los componentes electrnicos en una tableta experimental
o protoboard, bateras y sistema de propulsin.
La estructura y los principales componentes se pueden observar en la figura (4.4).
A continuacin se describe con mayor detalle cmo est conformado el chasis del robot
movil. La plataforma inferior es un crculo de aluminio de 20 cm. de dimetro en la cual
se encuentran las bateras, el sistema de propulsin (motores y sistema de engranaje), dos
llantas laterales de traccin, una rueda trasera (rueda loca) de 1 cm. de dimetro que sirve
para mantener en posicin de equilibro al robot. Adems cuenta con un encoder por llanta,
una pequea estructura que sujeta y asegura el funcionamiento los sensores reflectores y un
pequeo protoboard donde se encuentra el sistema de regulacin de voltaje. Por su parte,
la plataforma superior es un circulo de aluminio de 20 cm. que soporta en su parte de
abajo una estructura que permite tener un arreglo de los sensores infrarrojos, en la parte de
arriba se encuentra el protoboard principal el sensor pyroelctrico. En la parte superior del
robot se encuentra una estructura que soporta el sistema mecnico encargado de elevar el
ventilador que funciona como sistema de ingeniera de extincin de fuegos.
4.2.1.2
El sistema mecnico no fue mandado a construir, sino que en base a la idea de cmo debera
ser el robot mvil, se buscaron los componentes mecnicos y se adaptaron a la estructura
que ya estaba diseada. El sistema de traccin del robot mvil es una adaptacin del
sistema de expulsin de videocassetes modelo VXKS0778, cuenta con un motor elctrico
DC modelo MXN-13FB12M y sistema de engranaje basados en un sinfn y engranes como
Ventilador
Motor y sistema
de engranaje
2 Encoders opticos
86
Sensor pyroelectrico
ELTEC
3 Sensores de proximidad
SHARP GP2D12
2 Sensores reflectores
HOA1405-2
Figura 4.4.- Estructura del robot mvil con los principales componentes
Ruedas
Las ruedas con las que se desplaza el robot son unas ruedas de aeromodelismo de la marca
DU-BRO de 8.75 cm. de dimetro teniendo una separacin de 16.5 cm. entre ellas, a stas
se les anex una liga en la superficie como se muestra en la figura (4.7), con la finalidad
87
de aumentar la friccin y evitar que el robot se patinara. Con estas ruedas se logra un
desplazamiento tangencial de 27.5 cm. en una vuelta completa.
4.2.1.4
Motor elevador
Ventilador
Hoy en da existen muchos sistemas de ingeniera para la extincin de fuego, sin embargo
uno de los ms sencillos y fciles de implementar para que el robot mvil realice su tarea
es el uso de un ventilador. Ya que slo se est desarrollando un prototipo para apagar una
simulacin de un incendio, consideramos que es suficiente utilizar un ventilador de plstico
montado en un motor de DC como se muestra en la figura (4.9). Las especificaciones
88
Figura 4.6.- Grfica del torque del motor Mabuchi modelo RF370CA
del motor no pudieron ser determinadas, pero se realizaron pruebas para una fuente de
alimentacin de 5V con lo cual generaba suficiente aire para apagar la vela.
4.3
89
4.3.1
Conversin Analgico-Digital
Una magnitud analgica es aquella que tiene valores continuos dentro de un determinado
rango, a diferencia del conjunto de valores discretos de las seales digitales. Para ilustrar
la diferencia entre la representacin analgica y digital de una magnitud, tomemos el caso
de una tensin que vara en el rango de 0 V a +15 V. La representacin analgica de esta
90
magnitud toma todos los valores entre 0 y +15 V, que son un nmero infinito. En el caso de
representar digitalmente la tensin empleando un cdigo binario de 4 bits, solo se pueden
definir dieciseis valores. Para representar ms valores entre 0 y +15 deben utilizarse ms
bits en el cdigo digital. De manera que una magnitud analgica se puede representar con
un cierto grado de precisin utilizando un cdigo digital, que representa valores discretos
especficos dentro del rango.
4.3.1.2
91
figura (4.10) se conoce como circuito de muestreo y retencin (S/H). Como se indica, el
circuito S/H consta de un interruptor analgico que puede ser puesto en prctica por una
compuerta de transmisin MOSFET, un condensador de almacenamiento y un amplificador
regulador (que no se muestra).
Entre los intervalos de muestreo, es decir, durante los intervalos de retencin, el nivel
de voltaje del condensador representa las muestras de seal que buscamos. Cada uno de
estos niveles de voltaje es entonces alimentado a la entrada de un convertidor A/D, que
proporciona un nmero binario de N bits proporcional al valor de la muestra de la seal.
El hecho de que podamos hacer nuestro procesamiento en un nmero limitado de
muestras de una seal analgica, mientras se pierden detalles de seal analgica entre
muestras, est basado en el teorema de muestreo, el cual indica que la frecuencia mnima
de muestreo debe ser el doble de la frecuencia de la seal a muestrear.
4.3.1.3
Cuantificacin de seal
Considere una seal analgica cuyos valores van de 0 a +10 V. Supongamos que se desea
convertir esta seal a forma digital y que la salida requerida es una seal de 4 bits. Sabemos
que un nmero binario de 4 bits puede representar 16 valores diferentes, 0 a 15; se
92
deduce que la resolucin de nuestra conversin ser 10V/15=2/3 V. Por lo tanto, una seal
analgica de 0V estar representada por 0000, 2/3 V por 0001, 6 V por 1001 y 10 V por
1111. Todos los nmeros de muestra anteriores fueron mltiplos del incremento bsico
(2/3 V). Surge ahora una pregunta con respecto a la conversin de nmeros que estn
entre estos niveles incrementales sucesivos. Por ejemplo, considere el caso de un nivel
analgico de 6.2 V, est entre 18/3 y 20/3, pero como est ms cercano a 18/3 lo tratamos
como si fuera 6 V y lo codificamos como 1001. Este proceso se denomina cuantificacin.
Obviamente, hay errores que reciben el nombre de errores de cuantificacin. Si se usan ms
bits para representar (o simplemente codificar) una seal analgica se reducen los errores
de cuantificacin pero se requieren circuitos ms complejos.
4.3.1.4
93
4.3.2
La modulacin de ancho de pulso comunmente conocido como PWM por sus siglas en
ingles3 es una tcnica utilizada para controlar dispositivos, o para proveer un voltaje
variable de corriente continua. Algunas aplicaciones en las que se utiliza PWM son
controles de motores, de iluminacin y de temperatura.
3
94
tOff
La figura (4.12) muestra otra seal PWM, con un ciclo de trabajo del 10%. Variando
el ciclo de trabajo el voltaje promedio de la salida puede ser controlado. Por ejemplo, una
seal PWM que tiene 10V de amplitud y un 50% de ciclo de trabajo, provee 5V de salida
promedio. Cuando se incrementa o decrementa el ciclo de trabajo de una seal MAP, la
salida promedio se incrementa o decrementa respectivamente.
4.3.2.1
tOn
95
tOff
muy sencillo, solo necesitamos una fuente de poder con un voltaje variable de DC. Si
tenemos un motor de 12VDC y lo energizamos ste comenzar a acelerar, como sabemos
y podemos apreciar el motor no responde inmediatamente, ste demora un pequeo
tiempo en alcanzar su mxima velocidad. Si en algn momento durante la aceleracin
desconectamos el switch (lo apagamos) entonces el motor bajar su velocidad. Si
conmutramos la alimentacin al motor lo suficientemente rpido lograramos que ste
trabajara a una velocidad dentro del rango de cero a mxima velocidad.
Esto es exactamente lo que hace un controlador PWM, conmuta la alimentacin del
motor a alta velocidad entregando una serie de pulsos. El control de la velocidad del motor
se obtiene variando (modulando) el ancho de los pulsos. Utilizamos este principio para
controlar la velocidad de los motores del robot mvil.
4.3.3
Los componentes electrnicos del robot mvil estn diseados para proporcionar una
seal acondicionada al procesador central del robot mvil. Este cuenta con los siguientes
96
componentes electrnicos4 de los cuales algunos se pueden apreciar en la figura (7.1) del
Apndice A.
Microcontrolador (1)
Puente H (2)
74LS08 (1)
74LS04 (1)
Reguladores de voltaje (5)
Bateras (2)
Sensores infrarrojos (3)
Sensor pyroelctrico (1)
Sensores de posicin o encoders (2)
Sensores reflectores (2)
4.3.3.1
Microcontrolador
97
PIC16F877
+5
7404
33pF
+5
4MHz
33pF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
MCLR
RA0
RA1
RA2
RA3
RA4/TOCKI
RA5
RE0
RE1
RE2
Vdd
Vss
OSC1
OSC2
RC0
RC1
RC2
RC3
RD0
RD1
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RBO/INT
Vdd
Vss
RD7
RD6
RD5
RD4
RC7
RC6
RC5
RC4
RD3
RD2
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
L293B
+5
7408
L293B
ELECTRNICA
GP2D12 Derecho
Optosensor Derecho
GP2D12 Enfrente
Optosensor Izquierdo
GP2D12 Izquierdo
SENSORES
Motor
Der.
Elevador
Motor
Izq.
Pyroelctrico
Encoder Derecho
Encoder Izquierdo
Ventilador
Micro -Switch
ACTUADORES
Figura 4.13.- Diagrama de conexin de los principales componentes del robot mvil
98
99
Puente H
Para poder suministrar la corriente necesaria para el movimiento de los motores se requiere
de una interfase entre los componentes electrnicos y los motores, sto se realiza con ayuda
del puente-H L293B. Este tiene la finalidad de dar la polarizacin requerida a los motores
de tal forma que stos puedan girar en ambas direcciones.
En este caso el robot mvil dispone de tres puente-H, cada uno es un circuito
integrado con matrcula L293B el cual es un driver de 4 canales capaz de proporcionar
una corriente de salida de hasta 1A por canal. Cada canal es controlado por seales de
entrada compatibles TTL y cada pareja de canales dispone de una seal de habilitacin
que desconecta las salidas de los mismos. Dispone de una entrada para la alimentacin de
las cargas que se estn controlando, de forma que dicha alimentacin es independiente de
la lgica de control. Con el L293B se puede operar dos motores por integrado. El robot
mvil cuenta con dos puente-H conectados en paralelo para dividir la carga de corriente que
100
controla los motores con los cuales se desplaza el robot y el otro controla los dos motores
(ventilador y motor elevador) en el sistema del ventilador como se muestra en la figura
(4.15).
L293
+5
Ventilador Adel.
Ventilador Atras
Elevador Adel.
Elevador Atras
Vss
16
15
14
13
12
11
7
8
+5
+5
Ventilador
10
Vs
+5
M
Elevador
Figura 4.15.- Diagrama de la conexin del puente-H encargado de los motores del ventilador
Bateras
El robot cuenta con dos fuentes de alimentacin o bateras recargables de 12 volts a 1.2
amperes conectadas en serie. Una de ellas proporciona la energa para los componentes
electrnicos mediante un regulador de voltaje 7805, la otra batera proporciona la
L293
74LS08
PWM1
Adelante Izq.
Atrs Izq.
PWM2
Adelante Der.
Atrs Der.
101
Vcc
14
13
12
11
10
GND
+5
14
13
12
11
+5
10
16
15
Vs
M
Motor Izq.
+18
Vss
Motor Der.
+18
Figura 4.16.- Diagrama del circuito para las seales PWM necesarias para el puente-H para los motores del
robot.
alimentacin de los motores a travs del puente-H. La razn de utilizar dos bateras es
por los efectos del ruido, y por el hecho de que cuando los motores arrancan, stos
consumen demasiada corriente lo cual origina que el voltaje de las dos bateras descienda
por debajo del nivel requerido por los componentes electrnicos ocasionando que el sistema
se reinicialice.
Cada batera dura aproximadamente 20 minutos cuando es utilizada tiempo completo
y requiere un tiempo de carga de 5 horas. Sin embargo fuentes de alimentacin externas
pueden reemplazar a las bateras cuando el robot es probado en una posicin esttica.
Las bateras estn localizadas en la parte inferior del robot mvil y aprovechando su
peso estn colocadas para dar mayor estabilidad al robot cuando ste hace movimiento de
giros como se muestre en la figura (4.17).
102
4.3.4
Sensores
Los sensores son transductores que convierten algn fenmeno fsico en seales elctricas,
que posteriormente pueden ser interpretadas por los microprocesadores implementados en
los robots. Esto puede hacerse usando un convertidor analgico-digital (A/D), cargando un
valor desde un puerto entrada-salida (I/O) o usando una interrupcin externa. Normalmente
se usa una interfaz electrnica entre el sensor y el microprocesador para acondicionar o
amplificar la seal del sensor.
Un factor determinante para seleccin del sistema sensorial que utiliza el robot mvil,
es el costo de los sensores. Si se contara con un gran presupuesto para la adquisicin de
los mismos, se podran adquirir sensores con un rango ms amplio y una mejor precisin.
Algunos sensores de deteccin de objetos con estas caractersticas podran ser un laser
rangefinder pero su costo es sumamente elevado, alrededor de decenas de miles de pesos.
Otro sensor con propiedades ms avanzadas y capacidad de detectar fuentes de calor o
incendios es un sistema estero de visin computarizada, el cual requiere dos cmaras,
103
Este tipo de sensores utiliza un pequeo haz de luz infrarroja para determinar la distancia
a la cual se encuentra el objeto basndose en el principio de triangulacin. Los mejores
sensores de este tipo disponibles son los de la compaa SHARP de la familia GP2Dxx. El
dispositivo que se utiliz es el GP2D12 el cual produce una salida de voltaje analgico no
lineal dependiendo de la distancia en la cual se encuentre el objeto como se muestra en la
figura (4.18). Ya que la salida del sensor es no montona a 10 cm., esto requiere que el
sensor se ubique de tal forma que nunca puedan darse medidas menores a los 10 cm. Esto se
logr colocando el sensor dentro de una circunferencia de menor dimetro al dimetro del
chasis del robot. El rango est limitado alrededor de 80 cm., el voltaje de salida comienza
a ser inexacto cuando la distancia sobrepasa este lmite. Este es debido al ruido elctrico
presente en el sistema. Otro problema es que el sensor est calibrado para objetos de
color blanco. Los objetos que son de un material oscuro, o tienen propiedades reflejantes
diferentes pueden causar voltajes de salida errneos. A pesar de estas limitaciones, este
sensor es an el ms econmico y es el sensor principal utilizado para la navegacin en el
robot mvil .
104
Figura 4.18.- Grfica del voltaje salida contra distancia del Sensor Sharp GP2D12
Sensor de enfrente
Sensor de la izquierda
Sensor de la derecha
Figura 4.19.- Sensores Sharp GP2D12
105
para no introducir ruido en las medidas debido a que la tensin caiga por debajo de su
umbral de funcionamiento y utilizando un condensador entre la alimentacin y tierra para
reducir el ruido en la alimentacin debida a la corriente requerida por el led emisor.
4.3.4.2
Sensor pyroelctrico
El diseo de este tipo de sensores est basado en la deteccin de fuentes de calor. La salida
de un sensor pyroelctrico cambia cuando ocurren pequeos cambios en la temperatura
del sensor. El elemento activo en tal sensor es un material cristalino que genera una
pequea carga elctrica cuando es expuesto al calor en forma de radiacin infrarroja. Estos
elementos son capaces de detectar radiacin en un rango de 8 a 10 m, rango de energa
infrarroja emitida por los humanos. El sensor que se utiliz fue el sensor pyroelctrico de
la compaa Eltec modelo 442-3 como se muestra en la figura (4.20) el cual incorpora dos
cristales de tantalato de litio.
106
salida que se mantiene estable a aproximadamente 2.5 volts con una fuente de alimentacin
de 5 V. Si una persona o fuente de calor camina frente al sensor de izquierda a derecha, la
seal se incrementa alrededor de 1 volt por arriba de los 2.5 V para luego caer por debajo
de este valor y finalmente volver a su estado estable como se muestra en la figura (4.21).
Figura 4.21.- Seal tpica de un sensor pyroeltrico conforme cruza una fuente de calor
107
Sensores de posicin
Un sensor de Sistema de
Posicionamiento Global (GPS por sus siglas en ingls Global Position System) puede
reportar de una manera exacta la localizacin del robot mvil, pero ste es muy caro. Una
solucin econmica que es comn en la mayora de los robots mviles es un encoder de
desplazamiento. Este usualmente contiene un disco que tiene segmentos blancos y negros
alternados y es situado en ambas ruedas. Un par detector-emisor infrarrojo (IR) es colocado
cerca del disco y ste cambia su salida cuando ocurre una transicin de un segmento blanco
a uno negro en el disco. Esta transicin es acondicionada mediante un 74LS04 para tener
los niveles TTL adecuados para que pueda ser detectado por el microcontrolador, el cual
contabiliza estas transiciones en distancia. El nico problema con el sensor encoder de
108
desplazamiento es que ste reporta cualquier movimiento en las ruedas, esto incluye los
movimientos cuando las ruedas se deslizan. Esto puede conducir a que el encoder reporte
una distancia incorrecta. Ya que el encoder reporta el desplazamiento de las ruedas, cuando
el robot tiene que hacer movimiento de giros, stos pueden ser controlados con el npumero
de pulsos que cada rueda debe dar.
El robot mvil cuenta con un encoder ptico SHARP IA05 por cada llanta, el cual se
muestra en la figura (4.23), localizados en la parte inferior de toda la estructura , ya que las
especificaciones de este modelo no se consiguieron, se tomaron las de un modelo similar
el GP1A05E.
En la figura (4.24) se muestra el diagrama del circuito que acondiciona las seales
de los encoders para tomar los niveles TTL adecuados para ser detectados por el
microprocesador.
4.3.4.4
En la navegacin autnoma se emplean ciertas marcas para indicar al robot mvil que
est en alguna posicin. El entorno en el cual trabaja el robot mvil cuenta con una lnea
109
330 +/- 5%
330 +/- 5%
+5
GND
Disco A
74LS04
1
GP1A05E
14
13
12
11
10
Disco B
Vcc
GND
TIMER0
TIMER1
GP1A05E
Figura 4.24.- Diagrama del circuito acondicionador de las seales de los encoders.
blanca en el suelo negro para indicar la entrada a un cuarto (o puerta). Esta marca es
detectada mediante un sensor reflector de luz infrarroja. El sensor est compuesto por un
diodo emisor infrarrojo y un fototransistor dentro de un mismo encapsulado, el detector
responde a la radiacin del diodo emisor solo cuando un objeto reflejante pasa por su zona
de respuesta.
El robot mvil cuenta con dos sensores reflectores para detectar la lnea cuando los
dos sensores estn encima de la lnea. Estos sensores estn ubicados en la parte inferior
frontal de todo el robot mvil como se muestra en la figura (4.25) a una altura de 8 mm.
en la cual se detecta la lnea blanca en el suelo. La distancia que existe entre estos dos
sensores de 2 cm., asegura que la lnea sea detectada sin importar la velocidad a la cual se
encuentra el robot.
110
Captulo 5
Software del robot mvil
5.1
Introduccin
5.1.1
Navegacin Autnoma
La navegacin autnoma es una de las reas de mayor desarrollo con respecto a los robots
mviles desde los primeros prototipos de robots mviles desarrollados a mediados de
los sesentas [5]. Por navegacin autnoma se entiende la habilidad de un robot para
moverse satisfactoriamente y sin intervencin humana. La navegacin autnoma requiere
un gran nmero de capacidades, incluyendo la capacidad de ejecutar acciones para alcanzar
111
5.1 Introduccin
112
5.1 Introduccin
113
patrn del entorno y finalmente una trayectoria es planeada hacia la pared ms cercana
encontrada. El principal inconveniente de este mtodo es que los patrones del entorno son
difciles de obtener y mantener en tiempo real, limitando as la aplicacin a ambientes no
estructurados y dinmicos. Por el contrario, el mtodo basado en comportamiento, no hace
suposiciones y usa la informacin sensorial en un nivel bajo de extraccin de parmetros.
El seguimiento de pared es generado como un enlace continuo entre sensar y actuar [8].
Existen dos posibilidades para seguir una pared con el mtodo basado en comportamiento,
modo de la derecha, donde el robot sigue una pared que est a su derecha, y el modo de
la izquierda, donde el robot sigue una pared a su izquierda. En cualquiera de los modos
basados en el modelo de comportamiento el robot debe conducir siguiendo el contorno de
la pared a una distancia fija pre-definida [6].
5.1.2
El diseo del robot mvil basado en un robot diferencial, tiene la capacidad de girar sobre
su propio eje, la cual es conocida como la caracterstica de giro de radio cero. Al hacer
girar una rueda hacia adelante y otra hacia atrs (como se muestra en la figura (5.1)) con la
misma velocidad, se lleva a cabo la funcin de giro de radio cero [19].
5.1.3
Para el desarrollo del programa, fue necesario definir las condiciones bajo las cuales
estar trabajando el robot. Estas condiciones estn basadas en las bases para participar
en el concurso Fire-Fighting Home Robot que organiza el Trinity College en la ciudad
114
Rueda Der.
Rueda Izq.
5.1 Introduccin
115
semicrculo blanco de 30 cm. de radio pintado en el suelo, este crculo se representa con la
letra V en la figura (5.2).
La vela no ser ubicada en algn pasillo, pero podr ser ubicada dentro de algn
cuarto en cualquiera de las esquinas inclusive en la esquina de la entrada de la habitacin,
sin embargo, el robot podr avanzar por lo menos 33 cm. en una habitacin antes de
encontrarse con la vela. El semicrculo que rodea la vela no tocar la lnea de entrada de la
habitacin.
V
2.40 m
30 cm
46 cm
2.40 m
Para tener una idea ms clara referente al aspecto de la maqueta se presenta una
fotografa en la figura (5.3), donde se pueden apreciar las principales caractersticas
descritas anteriormente, adems de que se puede observar una vela apagada dentro del
cuarto que se encuentra en la parte superior de la fotografa.
116
5.2
Programa principal
117
Inicio
Inicializacin y configuracin
Navegacin Autnoma
Buscar vela
Existe vela
dentro del cuarto?
SI
NO
SI
Acercarse a la vela y
apagarla
Entrada al cuarto?
Fin
NO
interpretar las marcas que indican la entrada a un cuarto para buscar la fuente de calor y en
caso de existir, dirigirse hacia ella y apagarla. El programa principal incluye la rutina para
configurar e inicializar las variables y puertos a utilizar, adems de incluir una subrutina de
retardo para asegurar que todos los sensores estn polarizados correctamente.
La ejecucin del programa principal cumple con la arquitectura de control presentada
en la seccin (3.2). El nivel de decisiones de la arquitectura de control del robot mvil, se
lleva a cabo en el programa principal cuando toma la decisin de llevar a cabo la navegacin
autnoma o realizar la aplicacin especfica (en este caso buscar la vela dentro del cuarto y
si es que se encuentra acercarse a ella y apagarla). En el nivel funcional estn situadas las
subrutinas que procesan la informacin proveniente de los sensores y subrutinas de control
del comportamiento del robot.
5.2.1
118
Los valores de configuracin para los registros encargados de la conversin A/D son:
ADCON0 00000000
ADCON1 00000000
Los valores de configuracin para los registros con los que se lleva a cabo la
modulacin de ancho de pulso (PWM) con un periodo de 40KHz son:
T2CON
0x04
PR2
0x18
OPTION_REG 11101000
T1CON
0X03
5.3
119
5.3.1
Antes de llamar a esta subrutina se deber seleccionar el sensor que dar las lecturas para
medir la distancia. Las lecturas que proporcionan los sensores de proximidad IR contienen
120
Tiempo us
Algoritmo de navegacin
autnoma
145
195
145
485
un pico de ruido ocasionado por el led emisor como se mencion en la seccin (1) del
captulo (4), por lo tanto se hace un promedio de tres lecturas del convertidor A/D cada
37us, con este tiempo de muestreo se asegura que aunque una lectura haya sido en el pico
del ruido el promedio de las otras dos lecturas dar un valor cercano al correcto. Una
vez obtenido el promedio de las lecturas del sensor este valor se almacena en memoria y se
convierte a su equivalente en centmetros en base a la tabla que se encuentra almacenada en
la memoria del programa al final del cdigo. Esta tabla fue definida durante caracterizacin
de los sensores infrarrojos en base al voltaje analgico que proporcionaban los sensores con
respecto a la distancia a la cual se encontraba un objeto, esta tabla coincidio con las grficas
que proporciona el fabricante. Las distancias mayores a 71 cm. no fueron consideradas
y con la finalidad de incrementar el tiempo de conversin entre el valor promedio y la
distancia, la tabla fue reducida a 126 valores. Esta tabla se encuentra en el Apndice C. Si
el valor promedio de las lecturas de los sensores es mayor a 2.8V originado por algn error,
121
la subrutina detectar este error y regresar al programa principal sin hacer la conversin,
para evitar que el contador del programa se desborde, buscando un valor que no existe en la
tabla. El tiempo que dura esta subrutina es de 135 us. El diagrama de flujo de la subrutina
medir distancia se presenta en la figura (5.6). Esta conversin es conveniente durante el
desarrollo del programa facilitando la programacin, ya que en lugar de hacer referencia a
valores de voltaje haremos referencia a unos valores de distancia.
Tiempo us
Conversin A/D
37
Conversin A/D
(Primera lectura +
segunda lectura) / 2
74
Conversin A/D
(Primer promedio +
tercera lectura) / 2
Regreso al programa
principal sin realizar la
medicin
NO
111
Valor dentro de la
tabla?
SI
Tabla
Voltaje-Distancia
Regresar
135
5.3.2
122
5 cms.
135
45
Rueda Der.
Rueda Izq.
90
10 cms.
La tcnica de seguimiento de pared est basada en el traslado del robot a una distancia
predefinida de la pared. El mtodo seleccionado es el de seguimiento de la pared izquierda,
ya que el sensor de la izquierda no est perpendicularmente a la pared, necesitamos hacer
un anlisis para determinar el valor de la distancia de la pared hasta el sensor para que el
robot permanezca a una distancia perpendicular deseada de la pared.
123
Supongamos que el eje de las ruedas del robot mvil se encuentra perpendicular a la
pared de la izquierda como se muestra en la figura (5.8). Sea l la distancia deseada, r el
radio del tamao del robot mvil, rs el radio de la circunferencia de la ubicacin de los
sensores, d la lectura de distancia del sensor de la izquierda, A el punto de interseccin de
la distancia deseada a la pared, B el punto de interseccin entre el haz de luz del sensor de
proximidad IR, C el centro del robot mvil.y el ngulo ACB.
B
d
rs
r
Rueda Der.
Rueda Izq.
Pared
cos() =
c.a.
l+r
=
h
d + rs
(5.1)
Despejando d
d=
(l + r)
rs
cos()
(5.2)
124
La distancia deseada es de 10 cm., el radio del tamao del robot es de 10 cm., el radio
de la circunferencia de la ubicacin de los sensores es de 5 cm. y = 45 , sustituyendo en
(5.2).
d =
10 + 10
5
cos()
d = 23.2842
Esta es la distancia predefinida a la cual el robot se trasladar perpendicularmente
con respecto a la pared. Esto se lleva a cabo mediante un sistema de control de lazo cerrado
bsico el cual es ilustrado en la figura (5.9).
Valor de referencia
VR
+-
Controlador
Proceso
Valor actual
VA
Sensor
125
+-
Control de
direccin
Robot mvil
Distancia actual
DA
Sensor de
distancia
126
Velocidad Deseada
Distancia
Deseada
+-
Error
distancia
++
-+
Controlador
Kp0
Limitador
PWM0
Seal PWM0
Rueda Izquierda
Controlador
Kp1
Limitador
PWM1
Seal PWM1
Rueda Derecha
Distancia
actual
Velocidad Deseada
Sensor de proximidad IR
izquierdo
la pared. Para evitar que el algoritmo haga que el robot oscile o se detenga algn motor
debido a un error grande, se implement un limitador para que la duracin del pulso de las
seales PWM no fuera menor al 48%.
5.3.3
127
Rueda Der.
Rueda Izq.
Rueda Der.
Rueda Izq.
Figura 5.12.- Comportamiento del algoritmo seguimiento de pared ante una pared enfrente
robot mvil. Sea f la distancia a la cual el robot debe girar hacia la derecha como se
muestra en la figura (5.13). El tringulo ABC es semejante al triangulo BCD por lo tanto
f = l + r rs. Sustituyendo los valores ya conocidos tenemos que
f = 10 + 10 5 = 15
(5.3)
Cuando la distancia de enfrente sea de 15 cm. el robot gira 90 hacia la derecha sobre
su propio eje (teora del giro de radio cero), dicho movimiento se lleva a cabo haciendo
girar la rueda derecha hacia atrs mientras la rueda izquierda se mueve hacia adelante al
mismo tiempo. Por otro lado la distancia que deber recorrer cada rueda, es medida con
los encoders del robot mvil utilizando los contadores internos del microcontrolador. El
desplazamiento tangencial que deben hacer las ruedas es calculado de la siguiente manera.
Sea s la longitud del arco, r el radio del crculo (en este caso el radio del tamao del
robot mvil) y el ngulo central del arco (en este caso 90 ) como se muestra en la figura
(5.14).
128
Pared
D
rs
r
Rueda Der.
Rueda Izq.
Pared
De la frmula
s=
r
180
(5.4)
(5.5)
Ya que una vuelta completa de la rueda de 27.48 cm. es contabilizada por 30 pulsos
en el encoder, para tener un desplazamiento de 12.95 cm. el contador TMR0 y TMR1L
debern contar 14 pulsos para que el robot realice una vuelta de 90 en su propio eje. El
diagrama de flujo de esta subrutina se presenta en la figura (5.15), en esta ocasin no se
presenta la duracin de cada proceso ya que el tiempo de duracin, depende de la velocidad
en que las ruedas generan los 14 pulsos.
129
s
r
5.3.4
Debido a la ubicacin del sensor izquierdo del robot a 135 con respecto al eje de las
ruedas, se debe tomar precaucin de cmo se comportar el robot cuando est realizando
la subrutina de seguimiento de pared y sbitamente se encuentre al final de una pared a la
cual deber rodear para continuar con la navegacin autnoma. Una vez ms el algoritmo
de seguimiento de pared intentar corregir el error, pero debido al limitador del ancho de
pulso el robot no ser capaz de realizar la navegacin autnoma cuando se encuentre en esta
situacin. La solucin que se propone se presenta de manera grfica en la figura.(5.16).
Una vez que el sensor izquierdo tenga una medida mayor a 40 cm. en la posicin
A, (la determinacin de este valor se ver ms adelante) el robot seguir una trayectoria
programada sin utilizar el algoritmo de seguimiento de pared. El robot mvil se deber
mover paralelamente a la pared a la cual estaba recorriendo avanzando 27.4 cm. (el TMR0
y el TMR1L deben contar 30 pulsos proveniente de los encoders respectivos) hasta la
posicin B donde la parte trasera del robot est aproximadamente alineada al final de esta
pared. Despus el robot realizar un giro hacia la izquierda sobre su propio eje de 62 (la
rueda derecha avanzar 8.92 cm. hacia adelante y la rueda izquierda 8.92 cm. hacia atrs,
130
Regreso
NO
TMR0 = 17?
NO
SI
TMR1L = 17?
NO
SI
lo que implica que tanto el contador TMR0 como el contador TMR1L cuenten 9 pulsos
provenientes de los encoders) despues avanzar hasta la posicin C desplazndose 20 cm.
(el contador TMR0 contar 22 pulsos). Aqu realizar un giro, pero en esta ocasin no ser
sobre su propio eje, se tomar como pivote la rueda izquierda. El giro se detendr cuando la
lectura del sensor izquierdo sea de 28 cm. como se observa en la posicin D, para reanudar
el algoritmo de seguimiento de pared.
La distancia del sensor izquierdo en la posicin A de la figura (5.16) fue determinada
en base a una suposicin de la distancia a la cual podra estar el robot al inicio del recorrido.
La distancia del pasillo donde el robot inicia el recorrido es 46 cm. como se indica en las
bases del concurso del Trinity College y se muestra en la figura (5.17). Suponemos que el
131
C
Ru
eda
er.
Ru
eda
Iz
Ru
ed
aD
De
r.
Ru
eda
De
r.
Ru
eda
Izq
.
q.
Rueda Der.
zq.
Rueda Izq.
Ru
ed
aI
robot est situado a 4 cm. de la pared derecha y el dimetro del robot es de 20 cm., por lo
tanto debemos calcular la distancia mnima de la lectura del sensor izquierdo d para que el
robot inicie el recorrido, en base a la distancia deseada l.
En esta ocasin la distancia deseada es de 22 cm., el radio del tamao del robot es de
10 cm., el radio de la circunferencia de la ubicacin de los sensores es de 5 cm. y = 45 ,
sustituyendo en (5.2)
d =
22 + 10
5
cos()
d = 40.2548
132
22 cms.
20 cms.
4 cms.
Rueda Izq.
Rueda Der.
4 cms.
46 cms.
5.4
La maqueta en la cual navegar el robot mvil cuenta con sealizacin para indicar
la entrada a un cuarto mediante una lnea blanca en el suelo como se describi en la
seccin (5.1.3). Esta lnea podr ser detectada por el par de optosensores en cualquier
momento mientras el robot se encuentra realizando la navegacin autnoma generando
una interrupcin, y se indicar con una bandera de acceso si el robot est entrando
133
Regreso
NO
SI
Avanzar paralelamente a la
pared 30 cms.
Girar sobre el propio eje
62 hacia la izquierda
Avanzar 20 cms.
SI
Regreso
5.4.1
Una interrupcin es generada por una seal externa que indica al microcontrolador
posponer cualquier tarea que est realizando y responder al evento inmediatamente. El
cdigo que responde a un evento se llama subrutina de servicio de interrupcin. Esta
134
subrutina es similar a las subrutinas sin embargo sta solo se ejecuta cuando ocurre un
evento. Para atender una interrupcin, el microcontrolador debe guardar el estado de sus
registros, posteriormente debe localizar la subrutina de servicio de interrupcin y transferir
el control a sta. Al terminar la ejecucin de la subrutina de servicio, el microcontrolador
debe recuperar el estado de sus registros que tena antes de ser interrumpido.
Cuando el optosensor izquierdo detecta un cambio de color en el suelo (de negro a
blanco) genera una seal que activa el pinRBO/INT del microcontrolador generando una
interrupcin. La subrutina de servicio de interrupcin es la encargada de determinar si se
est detectando una lnea (la cual indica la entrada a algn cuarto) o la seal del optosensor
fue originada por algn error (una basura en el suelo), en caso de detectar una lnea, si esta
linea indica la salida o entrada del cuarto.
Al comienzo de la subrutina de servicio de interrupcin se almacenan los valores
de los registros W, STATUS y PCLATH en sus respectivas variables temporales. Despus
se verifica si la seal del optosensor derecho est activada, en caso de estar desactivada
la subrutina ejecuta una rutina de retardo de 150 ms. esperando que esta seal se active.
Si al trmino de esta rutina de retardo la seal del optosensor derecho no fue activada,
la subrutina regresar al programa principal regresando los valores de los registros W,
STATUS y PCLATH de las variables temporales. Este caso se origina cuando el optosensor
izquierdo genera una seal de error posiblemente ocasionado por una basura en el suelo.
Si la seal del optosensor izquierdo y derecho estn activadas significa que existe
una lnea en el suelo. Ahora la subrutina tiene que determinar si el robot est entrando
o saliendo del cuarto. Como el inicio del recorrido del robot mvil inicia fuera de un
135
cuarto la bandera de acceso est desactivada (con el valor 0), cuando la primera lnea sea
detectada esta bandera se activar (con el valor 1) indicando que el robot est dentro de un
cuarto. Al momento de detectar la segunda lnea la bandera cambiar de valor a 0 indicando
que el robot est fuera del cuarto. Los valores estarn cambiando cada vez que una lnea
sea detectada. Finalmente la subrutina de servicio de interrupcin regresar al programa
principal regresando los valores de los registros W, STATUS, y PCLATH. El diagrama de
flujo de la subrutina de servicio se presenta en la figura (5.19).
subrutina de servicio de
interrupcin
Almacenar registros W,
STATUS y PCLATH variables
temporales
Seal optosensor
derecho activada?
NO
Rutina de retardo de
150ms
NO
Seal optosensor
derecho activada?
SI
SI
Cambiar valor
bandera de acceso
5.4.2
Si la bandera de acceso est activada, indicando que el robot mvil est en la lnea que
indica la entrada a un cuarto (como se muestra en la posicin A de la figura (5.20)), el
136
programa principal ejecutar la subrutina para buscar la vela dentro de ese cuarto como se
muestra en el diagrama de flujo del programa principal en la figura (5.4).
El sensor responsable de la deteccin de la vela o de alguna fuente de calor es el
sensor pyroelctrico, esta fuente de calor deber estar en movimiento para que sea detectada
mientras el sensor est fijo, como se describi en la seccin (2) del captulo (4). Ya que la
vela se encuentra en una posicin esttica, el robot tendr que realizar un movimiento de
bsqueda dentro del cuarto. Antes de hacer este movimiento de bsqueda, el robot mvil
deber avanzar 13.7 cm. de la lnea de entrada para entrar al cuarto (posicin B de la figura
(5.20)). El movimiento de bsqueda es un giro de 103 desde la entrada del cuarto hacia
la derecha sobre la rueda derecha, (desde la posicin B hasta la posicin C de la figura
(5.20)) por lo tanto la rueda izquierda se desplazar 30 cm. para llevar a cabo este giro.
El contador TMR0 deber contar 33 pulsos del encoder para que la rueda izquierda realice
este desplazamiento. Despus el robot mvil deber hacer un giro de regreso a la posicin
inicial (desde la posicin C hasta la posicin B de la figura (5.20)), una vez ms la rueda
se desplazar 30 cm., pero en esta ocasin hacia el otro sentido y por lo tanto el contador
TMR0 deber contar otros 33 pulsos del encoder. Si en el transcurso del primer giro el
valor de la seal de sensor pyroelctrico es menor a 2.1V se activa una variable temporal
que indica que se encontr una vela. Para verificar que realmente haya una vela o fuente
de calor dentro del cuarto y que la deteccin del sensor no haya sido errnea, durante el
segundo giro (de derecha a izquierda) el valor de la seal del sensor pyroelctrico deber
ser mayor a 2.9V para activar una segunda variable temporal que confirma la existencia de
una vela dentro del cuarto.
137
Rued
a Izq
Rueda Der.
Rueda
Der.
Rueda Der.
Rueda Izq.
Rueda Izq.
5.4.3
Si durante los giros para la bsqueda de vela el sensor pyroelctrico no detect ninguna vela
o fuente de calor, las variables temporales permanecern desactivadas y el robot continuar
con el algoritmo de navegacin autnoma. En cambio si estas variables estn activadas
significa que existe una vela dentro de ese cuarto, por lo cual el robot deber apagar la vela.
El robot mvil podra utilizar cualquier mtodo para apagar la vela, ya que el objetivo del
presente trabajo es el avance de la robtica mvil y no necesariamente el de las tcnicas de
extincin de incendios, no se usar ningun mtodo sofisticado, para apagar la vela. El robot
138
NO
SI
Se encontr vela
en el primer giro
Sensor pyroelctrico
< 2.1 V?
SI
Sensor pyroelctrico
> 2.9 V?
NO
NO
Rueda izquierda ha
avanzado 30 cms?
Rueda izquierda ha
avanzado 30 cms?
SI
Se encontr vela
en el segundo giro
Regreso
mvil apagar la vela soplndole aire con el ventilador que tiene integrado (a pesar de que
ste no es un mtodo muy prctico para apagar un fuego en la vida real), por lo tanto el
robot se deber acercar a la vela.
Para acercarse a la vela el robot mvil debe continuar con el algoritmo de navegacin
autnoma hasta que los optosensores detecten el semicrculo blanco que indica la ubicacin
de la vela. Cuando este semicrculo sea detectado el robot mvil se habr detenido a una
distancia aprox. de 30 cm. de la vela (como se muestra en la figura (5.22)) ya que la vela
est al centro de una semicircunferencia de 30 cm. de radio como se indic en la seccin
(5.1.3).
En esta posicin el robot se debe detener para evitar tirar la vela, despus el ventilador
del robot comenzar a girar y el motor encargado de levantar el ventilador ser activado.
El ventilador encendido ser levantado 110 (como se indica en la figura (5.22)). El
139
110
30 cms.
Figura 5.22.- Diagrama de la posicin del robot para apagar la vela.
movimiento de levantar el ventilador encendido hasta la posicin en que las aspas del
ventilador apuntan hacia la flama de la vela, propicia una corriente de aire que intenta
apagar la vela. Ya que este movimiento no garantiza la extincin de la flama de la
vela, el robot permanecer en esa posicin 2 segundos, despus el robot mvil realizar
dos pequeos giros sobre su propio eje hacia la izquierda con el ventilador levantado y
encendido, la duracin de cada giro ser de 100 ms. y permanecer sin mover las ruedas 2
segundos entre cada giro. Para confirmar que la flama de la vela se apague por completo el
robot mvil volver a hacer 4 giros sobre su propio eje hacia la derecha con el ventilador
levantado y encendido, la duracin de cada giro ser de 100 ms. y permanecer sin mover
las ruedas 2 segundos entre cada giro. Una vez concluida esta secuencia de giros, el
ventilador se apagar y regresar a su posicin inicial. En esta posicin el robot mvil
habr terminado su aplicacin y el programa principal se detendr.
El diagrama de flujo de la subrutina apagar vela se presenta en la figura (5.23).
140
Variables de bsqueda
de vela activadas?
Contador de giros = 1
SI
Contador de giros = 1
SI
Continuar con
navegacin autnoma
NO
Optosensores detectan
semicrculo de la vela?
NO
Esperar 100ms.
Esperar 100ms.
Permanecer 2 segundos
en posicin actual
Permanecer 2 segundos
en posicin actual
Contador giros = 2?
Contador giros = 4?
NO
NO
Contador de giros =
Contador de giros + 1
Contador de giros =
Contador de giros + 1
Encender ventilador
Levantar ventilador
Permanecer 2 segundos
en posicin actual
SI
Regresar
Captulo 6
Pruebas computacionales y resultados
experimentales
6.1
141
142
Figura 6.1.- Diagrama de Simulink para el clculo de posicin y orientacin de robots mviles con guiado
diferencial
sin cos
cos cos
J =
(sin )/l
0
0
0
0
1
(6.1)
143
vt
"
l2 sin cos
(l cos )2 +sin2
l2 cos cos
(l cos )2 +sin2
l sin
(l cos )2 +sin2
0
1
x0
y0
0
0
(6.2)
lo cual a resulta ser cero. Asimismo, vt tambin permanece constante e igual a 1.8028m/s,
siendo l = 1.5m. que es la distancia entre el eje de la rueda delantera y el eje de las traseras.
En la figura (6.6) se presentan los resultados de la simulacin con el diagrama de la figura
(6.5).
144
descrita en el captulo (2). Los scripts se ejecutan de forma remota en la mquina servidora
a travs del servidor de aplicaciones Matlab Web Server, siendo devueltos los resultados a
la mquina cliente para ser visualizados en el navegador.
Las medidas reales del robot mvil, se escalaron con un factor de 10 para apreciar
mejor el modelo tridimensional siendo el radio de las ruedas = 0.4375 m. y la separacin
entre la ruedas = 1.65 m. Asimismo la trayectoria queda definida por los puntos (0,0) (4,0)
(4,3.45) y (0,3.45).
En la figura (6.7) se muestra la pantalla con los parmetros introducidos.
Los resultados obtenidos en el servidor de Matlab se muestran en las figuras (6.8) y
(6.9).
http://193.147.161.51
145
6.2
Pruebas experimentales
6.2.1
146
Figura 6.5.- Diagrama en Simulink del modelo inverso del triciclo convencional.
147
Figura 6.6.- Resultado de la simulacin del modelo inverso del triciclo en el seguimiento de un arco de
circunferencia.
148
Figura 6.7.- Pantalla para introducir los datos para la simulacin tridimensional.
6.2.2
La bsqueda de la vela comienza cuando el robot mvil detecta la lnea que indica la
entrada a algn cuarto, por lo tanto se coloc el robot a la entrada de los distintos cuartos
para que comenzara con la bsqueda de la vela. Al inicio del giro para buscar la vela, la
orientacin del robot mvil deber ser paralela a la pared. Ya que en algunas ocasiones los
optosensores detectaban la lnea blanca mientras el robot mvil realizaba un giro, en ese
149
150
Figura 6.9.- Evolucin de la trayectoria real del robot (rojo) frente a la deseada (azul)
Una vez que el robot mvil encontraba una vela dentro de algn cuarto, el robot
continuaba con la navegacin autnoma dentro del cuarto dirigindose hacia la vela.
Cuando los optosensores detectaban el semicrculo blanco que indicaba la ubicacin de
la vela, el robot mvil se detena en esa posicin y activaba el ventilador y despues lo
levantaba para generar la corriente de aire que apagara la vela. En algunas ocasiones la vela
no fue apagada durante este primer intento, sin embargo, gracias a los giros preprogramados
que el robot haca en el mismo lugar con el ventilador encendido, la vela se apagaba por
completo. Una fotografa tomada en el momento que la vela se apaga se presenta en la
fotografa (6.15).
Robot mvil
separndose del objeto
151
Agua en el suelo
Robot mvil
Luz infrarroja
152
Vela encendida
Robot mvil
buscando vela
Vela apagada
153
Captulo 7
Conclusiones y recomendaciones
7.1
Conclusiones
El robot mvil diseado para realizar una navegacin autnoma mediante la tcnica de
seguimiento de pared izquierda y realizar la aplicacin de encontrar el inicio de un
incendio y apagarlo, se ha construido exitosamente. El robot mvil es capaz de realizar
un seguimiento a una velocidad de 0.36 m/s de la pared izquierda permaneciendo a una
distancia constante de 9.3 cm.
Uno de los objetivos fue la construccin del robot a un bajo costo. Los principales
componentes incluyen un microcontrolador, tres Puente-H, 5 reguladores de voltaje, dos
bateras, tres sensores infrarrojos, un sensor pyroelctrico, dos encoders, dos optosensores,
un chasis, dos motores con sistema de engranaje, dos ruedas, un motor elevador y un
ventilador, cumpliendo as con este objetivo.
El programa principal del microcontrolador fue desarrollado para llevar a cabo la
navegacin autnoma y realizar la aplicacin especfica. Este incluye un algoritmo para el
control de los actuadores y la interpretacin de la seal de los sensores. La programacin
se realiz en lenguaje ensamblador. Ya que el lenguaje ensamblador es un lenguaje de
bajo nivel, el cual provee un mejor entendimiento de la operacin a nivel mquina, cuando
existe un problema, la localizacin del problema puede ser rastreada mucho ms fcil que
en programas desarrollados en lenguaje de alto nivel.
154
7.2 Recomendaciones
155
El modelo matemtico del robot mvil de tipo diferencial fue validado con las
simulaciones en donde se observ que este modelo describe el comportamiento del robot
mvil construido.
7.2
Recomendaciones
7.2 Recomendaciones
156
Bibliografa
[1] Alexandrov V. V., Guerra L., Sobolevskaya I., Trifonova A., Vargas H., Control
Algorithms in Mechatronics, Mathematical Modeling of complex Information
Processing Systems, Moscow University Press, 2001.
[2] Ando Y., Tsubouch T. and Yuta S. A reactive wall following algorithm and its behavior
of an autonomous mobile robot with sonar ring Journal of Robotics and Mechatronics,
8(1):79-89, 1996.
[3] Angulo Usategui J.M., Romero Yesa S. Microcontroladores PIC Diseo prctico de
aplicaciones. Segunda Parte: PIC 16F87X, Madrid Espaa Mc Graw Hill, 2000.
[4] Angulo Usategui J.M., Angulo Martnez I.. Microcontroladores PIC Diseo prctico
de aplicaciones, Madrid Espaa Mc Graw Hill, 1997
[5] Asian, J. And Gmez-Allende, D., Landmark Recognition for Autonomous Navigation
Using Odometric Information and a Network of Perceptrons.
[6] Bicho E. Detecting, representing and following walls based on low-level distance
sensors, In Proceedings of the Second International ICSC Symposium on Neural
Computation (NC2000), Berlin, Germany, 2000
[7] Borenstein, J. and Koren Y., Real-Time Obstacle Avoidance for Fast Mobile Robots,
Proceeding of the IEEE International Conference on Robotics and Automation, pp.
572-577, 1990
[8] Brooks R. Asynchronous distributed control system for a mobile robot. SPIE, Mobile
robots 727:77-84, 1986
[9] Campion G., G Bastin y B. DAndra-Novel, 1996. Structural properties and
classification of kinematic and dynamic models of wheeled mobile robots. IEEE Trans,
on Robotics and Automation. Vol. 12, nm 1, pp 47-62.
[10] Canudas de Wit, B. Siciliano y G. Bastin, 1997 Theory of Robot Control. Springer
[11] Chavarra M. A. Percepcin monocular para el control de robots mviles. Memorias
del X Congreso Latinoamericano de Control Automtico, Guadalajara, Mxico,
Diciembre 2002
157
Bibliografa
158
[12] Choset H., Burdick J., Sensor Based Motion Planning: The Hierarchical Generalized
Voronoi Graph, Workshop on Algorithmic Foundations of Robotics, 1996.
[13] Everett H.R. Sensors for mobile robots: theory and application Wellesley, Mass, 1995,
pp 49-54
[14] Endo Y. Design and implementation of a high speed mobile robot for testing a neural
network crash avoidance system. Master Science Thesis. Department of Mechanical
and Aerospace Engineering, Case Western Reserve University
[15] Giralt, G., Mobile Robots NATO ASI Series, Vol. F11, Robotics and Artificial
Intelligence. Springer-Verlag, 1984 pp 365-393.
[16] Gutirrez Arias J. E. Estrategias de las pruebas maximin para la calidad de
la estabilizacin robusta. Tesis doctoral. Facultad de Ciencias Fsico Matemticas,
Benemrita Universidad Autnoma de Puebla. 2003
[17] Isidori A. Nonlinear control system Third Edition. Springer 1995 pp 147-161
[18] Jones J. L., Flynn A. M., Mobile robots: inspiration to implementation Wellesley, MA,
A.K. Peters, 1993.
[19] Kola K. Motion Design in for Bearcat I. Thesis. Center for Robotics research,
University of Cincinnati, 1998
[20] Kraut J., An Autonomous Navigational Mobile Robot, Bachelor of Science Thesis.
Department of Electrical and Computer Engineering. University of Manitoba, Canada,
2002
[21] Latombe J. C. Robot motion planning Kluwer Academic, 1991
[22] Menzner R., Steinhage A., Erlhagen W Generating Interactive Robot Behavior:
A Mathematical Approach Proceedings of the Sixth International Conference on
Simulation of Adaptive Behavior 2000
[23] Miglino O., Hautop Lund H, Nolfi S., Evolving Mobile Robots in Simulated and Real
Environments. In Artificial Life 2:4, 417-434, 1995.
[24] Murray R.M., 1993. Applications and extensions of goursat normal form to control of
nonlinear systems. Proc. 32nd IEEE Conference on Decision and Control, San Antonio,
Texas.
Bibliografa
159
[25] Nasisi O.H. Mobile robots navigation based on perspective lines. Memorias del X
Congreso Latinoamericano de Control Automtico, Guadalajara, Mxico, Diciembre
2002
[26] Ollero A., Robtica Manipuladores y robots mviles. Barcelona Espaa, Alfaomega
marcombo, 2001 pp 8-13, 146-158, 258-263, 271-278
[27] Vargas H., Algoritmos de estabilizacin supoptimos con sistema de navegacin
autnoma para el control de robots mviles autnomos Tesis doctoral. Facultad de
Ciencias Fsico Matemticas, Benemrita Universidad Autnoma de Puebla. 2002
[28] Vidal-Calleja T.A. Artificial potential fields for trailer-like systems Memorias del X
Congreso Latinoamericano de Control Automtico, Guadalajara, Mxico, Diciembre
2002
[29] Fernndez. D, Vera D. Diseo, control y construccin de un robot mvil,
http://verona.fi-p.unam.mx/GpoControl/proyec/movil1.html (13/Junio/2003)
[30] Lpez Trinidad M. A., Telecontrol para el robot Nomad 200
http://www.mor.itesm.mx/~lsi/redii/telecontrol/control_distancia.html (15/Junio/2003)
[31] http://www.trincoll.edu/events/robot/rules03.htm (10/Junio/2003)
Apndice A
Dibujo en tres dimensiones del robot mvil.
En la figura (7.1) se muestra un modelado del robot movil a la misma escala en tres
dimensiones en AutoCAD realizado por un alumno del Colegio de Ingeniera Industrial de
la Facultad de Ingeniera1 . En la figura (7.2) se muestra el modelo en tres dimensiones por
atrs, enfrente, del lado derecho, del lado izquierdo, por arriba y por abajo
Sensor pyroelectrico
ELTEC
Ventilador
2 Bateras
3 Sensores de proximidad
SHARP GP2D12
Motor y sistema
de engranaje
2 Sensores reflectores
HOA1405-2
2 Ruedas
2 Encoders opticos
160
161
Apndice B
Dimensiones del robot mvil
162
163
164
Apndice C
Tabla de conversin de voltaje de sensores IR
a distancia
Voltaje
Distancia
0.35
71
0.37
70
0.39
69
0.41
66
0.43
63
0.45
61
0.47
59
0.49
57
0.51
55
0.53
53
0.55
51
0.57
49
0.59
47
0.61
46
0.63
44
0.64
43
0.66
42
0.68
40
0.70
39
0.72
35
0.74
33
0.76
33
0.78
32
0.80
31
0.82
31
0.84
30
0.86
30
0.88
29
0.90
29
0.92
28
0.94
28
0.96
27
Voltaje
Distancia
0.98
27
1.00
26
1.02
26
1.04
25
1.05
25
1.07
24
1.09
24
1.11
24
1.13
23
1.15
23
1.17
22
1.19
22
1.21
21
1.23
21
1.25
21
1.27
20
1.29
20
1.31
20
1.33
20
1.35
19
1.37
19
1.39
18
1.41
18
1.43
17
1.45
17
1.46
17
1.48
16
1.50
16
1.52
16
1.54
16
1.56
16
1.58
15
Voltaje = V
Distancia = cms.
165
Voltaje
Distancia
1.60
15
1.62
15
1.64
15
1.66
15
1.68
14
1.70
14
1.72
14
1.74
14
1.76
14
1.78
13
1.80
13
1.82
13
1.84
13
1.86
13
1.88
13
1.89
13
1.91
12
1.93
12
1.95
12
1.97
12
1.99
12
2.01
12
2.03
11
2.05
11
2.07
11
2.09
11
2.11
11
2.13
11
2.15
11
2.17
11
2.19
11
2.21
11
Voltaje
Distancia
2.23
11
2.25
10
2.27
10
2.29
10
2.30
10
2.32
10
2.34
10
2.36
10
2.38
10
2.40
10
2.42
9
2.44
9
2.46
9
2.48
9
2.50
9
2.52
9
2.54
8
2.56
8
2.58
8
2.60
8
2.62
8
2.64
7
2.66
7
2.68
7
2.70
7
2.71
7
2.73
7
2.75
7
2.77
7
2.79
7
2.81
7
Apndice D
Cdigo del programa principal en lenguaje
ensamblador
;Cdigo en lenguaje ensamblador para robot mvil
;
;
----------------;
Reset - | 1
40 | B7 - Micro-switch
;
Sensor Izq
- A0 | 2
39 | B6 - Push-Boton BIP
;
Sensor Enfrente
- A1 | 3
38 | B5 - Elevador adelante
;
Sensor Der
- A2 | 4
37 | B4 - Elevador atras
;
- A3 | 5
36 | B3 - Ventilador adelante
;
Encoder Motor Izq - A4 | 6
35 | B2 - Ventilador atras
;
Pyro
- A5 | 7
34 | B1 - Led "Indicar Dentro/Afuera"
;
- E0 | 8
33 | B0 - Optosensor Izq
;
- E1 | 9
32 | Vcc --------------------------;
- E2 | 10 PIC16F877 31 | Tierra -----------------------;
--------------Vcc | 11
30 | D7 - Optosensor Der
;
-------------- Tierra | 12
29 | D6 ;
X(4Mhz)
33 p - OSC1 | 13
28 | D5 ;
-------- 33 p - OSC2 | 14
27 | D4 ;
Encoder Motor Der - C0 | 15
26 | C7 - Led "Numero de cuarto B0" (Verde)
;
CCCP2 Motor Der
- C1 | 16
25 | C6 - Led "Numero de cuarto B1" (Verde)
;
CCCP1 Motor Izq
- C2 | 17
24 | C5 - Led "Vela de va"
(Rojo)
;
Detector Tono
- C3 | 18
23 | C4 - Led "Vela de viene"
(Amarillo)
;
Adelante Motor Izq- D0| 19
22 | D3 - Adelante Motor Der
;
Atras
Motor Izq -D1| 20
21 | D2 - Atras
Motor Der
;
----------------LIST
P=16F877
include<P16f877.inc>
;********Definicin de constantes para los Canales de C A/D
CH0
CH1
CH2
CH3
CH4
CH5
CH6
CH7
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
B'00000001'
B'00001001'
B'00010001'
B'00011001'
B'00100001'
B'00101001'
B'00110001'
B'00111001'
;
;
;
;
;
;
;
;
Canal
Canal
Canal
Canal
Canal
Canal
Canal
Canal
0
1
2
3
4
5
6
7
;*********Definicin de constantes********************************
KSPDI
EQU
D'20'
;80% del duty cycle ANTES 20
Dis_des
EQU
D'23'
;Distancia deseada en Cm. de la pared IZ
Dis_IZ_lim
EQU
D'40'
;Distancia limite para "checar izquierda"
Dis_Enf_lim
EQU
D'20'
;Distancia limite para "checar enfrente"
Dis_Der_lim
EQU
D'30'
;Distancia limite para "checar derecha"
Velocidad_Vuelta EQU
Dis_pared_fija EQU
Dis_pared_librar EQU
D'25'
.22
.8
;**************Bits de banderas***********************************
Accseso_C
EQU
0
Apagando_vela EQU
1
;**************Declaracin de varialbes **************************
W_TEMP
EQU
20h
;Variables temporales
PCLATH_TEMP
EQU
21h
STATUS_TEMP
EQU
22h
giro_TEMP
EQU
23h
led_TEMP
EQU
24h
Lim_TEMP
EQU
25h
166
SPD0
SPD1
;CYC_CNT
EQU
EQU
EQU
26h
27h
28h
conta1
conta2
conta3
conta1_int
conta2_int
conta3_int
;CCPAUX
;AUX
CONTA0
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
29h
2Ah
2Bh
2Ch
2Dh
2Eh
2Fh
30h
31h
DisAc_IZ
Error_dis
DisAc_Enf
DisAc_Der
DisAc_TEMP
EQU
EQU
EQU
EQU
EQU
32h
33h
34h
35h
36h
Banderas
EQU
37h
Espera_sensor2
Num_cuarto
Temp_pyro
TMR1L_PYRO
Temp_vela
apaga_TEMP
EQU
EQU
EQU
EQU
EQU
EQU
38h
39h
3Ah
3Bh
3Ch
3Dh
org
goto
org
goto
org
0
Iniciales
4
rs_piso
5
led_reset
;*********PROGRAMA PRINCIPAL*******************************************
Inicio
movlw B'00000101'
;Dos motores hacia enfrente
movwf PORTD
call
Checar_enfrente
;Verificar si hay pared enfrente
call
Control_IZ
;Algoritmo de seguimiento de pared izq
call
Checar_izquierd
;Verificar que no hay pared izquierda
btfsc
call
Banderas,Accseso_C
buscar_vela
goto
Inicio
167
bsf
PORTC,6
return
;*************Subrutina de serivicio de interrucin *************************
rs_piso
movwf W_TEMP
;Salvando los valores de STATUS y Wpara su
regreso
swapf STATUS,W
clrf
STATUS
movwf STATUS_TEMP
movf
PCLATH,W
movwf PCLATH_TEMP
clrf
PCLATH
D100ms_int
re2_100int
re1_100int
re0_100int
donde_estoy
salir
entrada
bcf
btfsc
goto
INTCON,INTF
PORTD,7
donde_estoy
movlw
movwf
movlw
movwf
movlw
movwf
btfsc
goto
decfsz
goto
decfsz
goto
decfsz
goto
btfss
goto
.24
conta1_int
.255
conta2_int
0x04
conta3_int
PORTD,7
donde_estoy
conta3_int,F
re0_100int
conta2_int,F
re1_100int
conta1_int,F
re2_100int
PORTD,7
salir
btfss
goto
bcf
bcf
incf
PORTB,1
entrada
Banderas,Accseso_C
PORTB,1
Num_cuarto,F
call
movf
movwf
swapf
movwf
swapf
swapf
retfie
Led_cuarto
PCLATH_TEMP,W
PCLATH
STATUS_TEMP,W
STATUS
W_TEMP,F
W_TEMP,F
bsf
bsf
goto
Banderas,Accseso_C
PORTB,1
salir
;**************Rutina
noventa_IZQ
movlw
movwf
movwf
menor_izq
menor_izq2
movlw
movwf
clrf
clrf
movlw
subwf
btfss
goto
movlw
movwf
movlw
subwf
btfss
168
goto
movlw
movwf
call
movlw
movwf
return
menor_izq2
b'00000000'
PORTD
delay_100ms
b'00000101'
PORTD
;*******************************************
buscar_vela
bcf
PORTC,5
;Borra el led de indicacion va
bcf
PORTC,4
;Borra el led de indicacion viene
bcf
INTCON,GIE
;Deshabilita interrupciones
movlw .16
;Velocidad antes de comenzar la busqued
movwf CCPR1L
addlw .2
movwf CCPR2L
movlw b'00000101'
;Avanza para meterse en el cuarto
movwf PORTD
;Dos motores hacia adelante
movf
TMR1L,W
movwf TMR1L_PYRO
clrf
TMR1L
;Limpiar contador
metete
movlw .15
;Avanza 14 cm.
subwf TMR1L,W
btfss STATUS,C
goto
metete
;Empieza modificacin al algoritmo original
empieza_scaneo movlw b'00000100'
;llanta derec enfrente
movwf PORTD
movlw CH0
;Sensor iz en Ch 0
call
MEDIR
movwf DisAc_IZ
movlw .10
;Distancia del sensor iz para cambiar
orientacin
sublw Dis_des
movwf giro_TEMP
movf
DisAc_IZ,W
subwf
giro_TEMP,F
;Obtiene el error
btfss STATUS,C
goto
empieza_scaneo
;Espera la distancia del sensor iz
;Termina modificacin al algoritmo original
comienza_va
esp_ida
movlw
movwf
clrf
movlw
movwf
call
movf
movwf
movlw
subwf
btfss
bsf
movlw
b'00000001'
PORTD
TMR0
CH4
ADCON0
GetAD
ADRESH,W
Temp_vela
D'108'
Temp_vela,W
STATUS,C
PORTC,5
D'49'
;llanta iz enfrente
subwf
btfss
goto
TMR0,W
STATUS,C
esp_ida
movlw
movwf
call
b'00000000'
PORTD
delay_medio_seg
movlw
movwf
clrf
b'00000010'
PORTD
TMR0
;llanta iz atras
movlw
movwf
call
movf
CH4
ADCON0
GetAD
ADRESH,W
;Sensor pyroelectro en Ch 4
;Sensor pyroelectrico en Ch 4
;
;Comienza conversion A/D
;Obtiene el valor A/D
;Voltaje de comparacion
2.1V = 108
original)
esp_regreso
169
movwf
movlw
subwf
btfsc
bsf
movlw
subwf
btfss
goto
Temp_vela
D'150'
Temp_vela,W
STATUS,C
PORTC,4
D'49'
TMR0,W
STATUS,C
esp_regreso
;Voltaje de comparacion
2.9V =150
PORTB,0
esperando_vela
delay_100ms
PORTD,7
esperando_vela
apagando_vela
movlw
movwf
movlw
movwf
call
movlw
movwf
call
call
call
call
decfsz
goto
movlw
movwf
reapagando_vela
movwf
call
movlw
movwf
call
call
call
call
decfsz
goto
bcf
bcf
.2
apaga_TEMP
b'00000110'
PORTD
delay_100ms
b'00000000'
PORTD
delay_medio_seg
delay_medio_seg
delay_medio_seg
delay_medio_seg
apaga_TEMP,F
apagando_vela
.4
apaga_TEMP
movlw b'00001001'
PORTD
delay_100ms
b'00000000'
PORTD
delay_medio_seg
delay_medio_seg
delay_medio_seg
delay_medio_seg
apaga_TEMP,F
reapagando_vela
PORTB,5
PORTB,3
;Espera optosensores
170
bsf
call
bcf
PORTB,4
delay_medio_seg
PORTB,4
fin
goto
fin
saliendo_gyro
bcf
Banderas,Accseso_C
bsf
INTCON,GIE
return
;habilita interrupciones
;*******************************************
Checar_enfrente
movlw CH1
call
MEDIR
movwf DisAc_Enf
movlw
subwf
btfsc
Dis_Enf_lim
DisAc_Enf,W
STATUS,C
indicado
call
noventa_DER
return
;*******************************************
Checar_izquierd
movlw CH0
;Sensor IR izquierdo en Ch 0
call
MEDIR
movwf DisAc_IZ
movlw
subwf
btfsc
call
return
Dis_IZ_lim
DisAc_IZ,W
STATUS,C
no_hay_pared
Dis_IZ_lim
DisAc_Der,W
STATUS,C
no_hay_paredDER
enfrente
movlw b'00000101'
PORTD
TMR0
TMR1L
menor_EnfDER
Dis_pared_fija
Dis_pared_librar
TMR0,W
STATUS,C
menor_EnfDER
PORTD,0
Dis_pared_fija
Dis_pared_librar
TMR1L,W
STATUS,C
menor_Enf2DER
menor_Enf2DER
movlw
addlw
subwf
btfsc
goto
bcf
movlw
addlw
subwf
btfss
goto
eje
b'00001001'
PORTD
TMR1L
;Llanta Izquierda
;Detiene motores
171
menorDER
menor2DER
clrf
movlw
subwf
btfss
goto
movlw
subwf
btfss
goto
TMR0
D'7'
TMR1L,W
STATUS,C
menorDER
D'7'
TMR0,W
STATUS,C
menor2DER
;Desplazamiento hacia
movlw
movwf
call
enfrente
b'00000000'
PORTD
delay_250ms
movlw
movwf
clrf
avanza_poquDER movlw
addlw
subwf
btfss
goto
b'00000101'
PORTD
TMR0
Dis_pared_fija
Dis_pared_librar
TMR0,W
STATUS,C
avanza_poquDER
clrf
esperar_giroDE movlw
call
movwf
CCPR2L
CH2
MEDIR
DisAc_Der
movlw
addlw
movwf
movf
subwf
btfss
goto
return
Dis_des
.5
giro_TEMP
DisAc_Der,W
giro_TEMP,F
STATUS,C
esperar_giroDE
;Parar en Ruedas
;Llanta Izquierda
;Sensor IR derecho en Ch 0
;Obtiene el error
;***************CONTROL_IZ****************************
Control_IZ
movlw CH0
;Sensor Iz en Ch 0
call
MEDIR
movwf DisAc_IZ
movlw
movwf
movwf
KSPDI
SPD0
SPD1
movlw
movwf
Dis_des
Error_dis
movf
subwf
DisAc_IZ,W
Error_dis,F
movf
subwf
addwf
Error_dis,W
SPD1,F
SPD0,F
movf
call
movwf
movf
call
movwf
SPD0,W
Lim_inf_PWM
SPD0
SPD1,W
Lim_inf_PWM
SPD1
call
update
return
;Vel. Izq
;Vel. Der
;Obtiene el error
;Error_dis = Dis_des - DisAc_IZ
;SPD1 = SPD1-Error_dis
;SPD0 = SPD0+Error_dis
;Limite inferior de PWM0
172
movwf
DisAc_Der
movlw
movwf
movwf
KSPDI
SPD0
SPD1
movlw
movwf
Dis_des
Error_dis
movf
subwf
DisAc_IZ,W
Error_dis,F
movf
subwf
Error_dis,W
SPD0,F
addwf
SPD1,F
;SPD1 = SPD1+Error_dis
movf
call
movwf
movf
call
movwf
SPD0,W
Lim_inf_PWM
SPD0
SPD1,W
Lim_inf_PWM
SPD1
;Vel. Izq
;Vel. Der
;Obtiene el error
;Error_dis = Dis_des - DisAc_IZ
IZQ)
call
update
return
;***************************************************
no_hay_pared
movlw .20
;Velocidad para la vuelta
movwf CCPR2L
movwf CCPR1L
;Desplazamiento hacia
desplaza_enf
movlw
movwf
clrf
clrf
enfrente
b'00000101'
PORTD
TMR0
TMR1L
menor_Enf
Dis_pared_fija
Dis_pared_librar
TMR0,W
STATUS,C
menor_Enf
PORTD,0
Dis_pared_fija
Dis_pared_librar
TMR1L,W
STATUS,C
menor_Enf2
menor_Enf2
movlw
addlw
subwf
btfsc
goto
bcf
movlw
addlw
subwf
btfss
goto
menor
menor2
clrf
clrf
movlw
subwf
btfsc
goto
movlw
subwf
btfss
goto
;Desplazamiento hacia
movlw
movwf
call
TMR1L
TMR0
D'7'
TMR1L,W
STATUS,C
menor
D'7'
TMR0,W
STATUS,C
menor2
enfrente
b'00000000'
PORTD
delay_250ms
;Llanta Izquierda
;Detiene motores
;Parar Ruedas
173
movlw
movwf
clrf
avanza_poquito movlw
addlw
subwf
btfss
goto
b'00000101'
PORTD
TMR0
Dis_pared_fija
Dis_pared_librar
TMR0,W
STATUS,C
avanza_poquito
;Llanta Izquierda
Dis_des
.5
giro_TEMP
giro_TEMP,F
STATUS,C
esperar_giro
;Obtiene el error
;***********************************************
noventa_DER
movlw Velocidad_Vuelta
movwf CCPR2L
movwf CCPR1L
menor_d
menor_d2
movlw
movwf
clrf
clrf
movlw
subwf
btfss
goto
movlw
movwf
movlw
subwf
btfss
goto
movlw
movwf
call
movlw
movwf
return
b'00001001'
PORTD
TMR0
TMR1L
D'14'
TMR0,W
STATUS,C
menor_d
b'00001000'
PORTD
D'13'
TMR1L,W
STATUS,C
menor_d2
b'00000000'
PORTD
delay_100ms
b'00000101'
PORTD
GetAD
ADRESH,W
DisAc_TEMP,F
DisAc_TEMP,w
movlw D'140'
posiciones de la tabla
subwf DisAc_TEMP,W
btfsc STATUS,C
goto
no_tabla
movlw
subwf
D'18'
DisAc_TEMP,F
;Tercera muestra
;1er promedio + Tercera /2
;Verificar si el dato del promedio >= que
;Minimizar los
;datos en la tabla
174
no_tabla
btfss
clrf
movf
call
bcf
bcf
movwf
return
STATUS,C
DisAc_TEMP
DisAc_TEMP,W
Tabla2
PCLATH,0
PCLATH,1
DisAc_TEMP
movwf
clrf
clrf
goto
PORTB
CCPR1L
CCPR2L
Inicio
;***********GetAD************************************
;Esta rutina obtiene un valor analogico y lo convierte
GetAD
bsf
call
bsf
ADCON0,0
espera20u
ADCON0,2
espera
btfsc ADCON0,2
goto
espera
return
espera20u
ret1
movlw 0x05
decfsz CONTA0,1
goto
ret1
return
;********************************************************
INI_PUERTOS
bsf
STATUS,RP0
;Banco 1
movlw b'10010000'
movwf INTCON
;configura las interrupciones globales y
perifericas
movlw B'111111'
;Puerto A 1 = entrada, 0 = salida
movwf PORTA
movlw B'10000001'
;Puerto B 1 = entrada, 0 = salida
movwf PORTB
movlw B'00001001'
;Puerto C 1 = entrada, 0 = salida
movwf PORTC
movlw B'10000000'
;Puerto D 1 = entrada, 0 = salida
movwf PORTD
movlw B'111'
;Puerto E 1 = entrada, 0 = salida
movwf PORTE
bcf
STATUS,RP0
;Banco 0
return
INI_AD
bsf
movlw
movwf
bcf
movlw
movwf
clrf
return
STATUS,RP0
B'00000000'
ADCON0
STATUS,RP0
B'00000000'
ADCON0
ADRESH
;Banco 1
;Seleccionar ch0-ch7
;como entradas analgicos
;Banco 0
;seleccionar Fosc/2,ch0..
;Aun esta apagado el A/D.
;Limpia registro ADRESH
movwf
bsf
movlw
movwf
movlw
movwf
bcf
movlw
iorwf
T2CON
STATUS,RP0
0x18
T2CON
b'11101000'
TMR0
STATUS,RP0
B'00111100'
CCP1CON,F
INI_PWM
175
iorwf CCP2CON,F
movlw 0x03
movwf T1CON
return
;*******************************************
led_reset
bsf
PORTC,7
;LED DE RESET
movlw .1
movwf led_TEMP
polariz
call
delay_medio_seg
decfsz led_TEMP,F
goto
polariz
bsf
bsf
bsf
bsf
PORTC,7
PORTC,6
PORTC,5
PORTC,4
;LED
;LED
;LED
;LED
DE
DE
DE
DE
bip
btfss
goto
PORTC,3
bip
;Esperando el push-buton
comienza
bcf
bcf
bcf
bcf
PORTC,7
PORTC,6
PORTC,5
PORTC,4
;LED
;LED
;LED
;LED
DE
DE
DE
DE
RESET
RESET
RESET
RESET
RESET
RESET
RESET
RESET
return
;*******************************************
update
bcf
PIR1,TMR2IF
movf
SPD0,W
movwf
CCPR1L
movf
movwf
SPD1,W
CCPR2L
btfss
goto
return
PIR1,TMR2IF
wait
wait
delay_medio_seg movlw
movwf
re2_r2
movlw
movwf
re1_r2
movlw
movwf
re0_r2
decfsz
goto
decfsz
goto
decfsz
goto
return
.122
conta1
.255
conta2
0x04
conta3
conta3,F
re0_r2
conta2,F
re1_r2
conta1,F
re2_r2
delay_250ms
movlw
movwf
movlw
movwf
movlw
movwf
decfsz
goto
decfsz
goto
decfsz
goto
return
.61
conta1
.255
conta2
0x04
conta3
conta3,F
re0_250
conta2,F
re1_250
conta1,F
re2_250
;Retardo de 250ms
movlw
movwf
.24
conta1
;Retardo de 100ms
re2_250
re1_250
re0_250
delay_100ms
176
re2_100
re1_100
re0_100
movlw
movwf
movlw
movwf
decfsz
goto
decfsz
goto
decfsz
goto
return
.255
conta2
0x04
conta3
conta3,F
re0_100
conta2,F
re1_100
conta1,F
re2_100
;*****************************************
Lim_inf_PWM
movwf Lim_TEMP
movlw D'12'
subwf Lim_TEMP,W
btfss STATUS,C
goto
menor_pwm
movf
Lim_TEMP,W
return
menor_pwm
movlw D'12'
return
;***********Tabla **************************************
ORG
0X300
Tabla2
bsf
PCLATH,0
addwf PCL,1
;Datos de la distancia en Cm.
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
D'71'
D'70'
D'69'
D'66'
D'63'
D'61'
D'59'
D'57'
D'55'
D'53'
D'51'
D'49'
D'47'
D'46'
D'44'
D'43'
D'42'
D'40'
D'39'
D'35'
D'33'
D'33'
D'32'
D'31'
D'31'
D'30'
D'30'
D'29'
D'29'
D'28'
D'28'
D'27'
D'27'
D'26'
D'26'
D'25'
D'25'
D'24'
D'24'
D'24'
D'23'
D'23'
D'22'
177
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
D'22'
D'21'
D'21'
D'21'
D'20'
D'20'
D'20'
D'20'
D'19'
D'19'
D'18'
D'18'
D'18'
D'17'
D'17'
D'17'
D'16'
D'16'
D'16'
D'16'
D'15'
D'15'
D'15'
D'15'
D'15'
D'14'
D'14'
D'14'
D'14'
D'14'
D'13'
D'13'
D'13'
D'13'
D'13'
D'13'
D'13'
D'12'
D'12'
D'12'
D'12'
D'12'
D'12'
D'11'
D'11'
D'11'
D'11'
D'11'
D'11'
D'11'
D'11'
D'11'
D'11'
D'11'
D'10'
D'10'
D'10'
D'10'
D'10'
D'10'
D'10'
D'10'
D'10'
D'9'
D'9'
D'9'
D'9'
D'9'
D'9'
D'8'
D'8'
178
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
END
D'8'
D'8'
D'8'
D'7'
D'7'
D'7'
D'7'
D'7'
D'7'
D'7'
D'7'
D'7'
179