aspiradora inteligente para limpieza automática de suelos

aspiradora inteligente para limpieza automática de suelos
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
PROYECTO FIN DE CARRERA
ASPIRADORA INTELIGENTE PARA
LIMPIEZA AUTOMÁTICA DE SUELOS
* SOFTWARE DE CONTROL Y BRAZO MECÁNICO *
AUTOR: JAVIER MIGUEL GUTIÉRREZ-BARQUÍN
MADRID, Junio 2007
ESTE PROYECTO CONTIENE LOS SIGUIENTES DOCUMENTOS
DOCUMENTO Nº1, MEMORIA
1.1 Memoria
pág.
5 a 99
95 páginas
1.2 Estudio Económico
pág. 100 a 102
3 páginas
1.3 Manual de Usuario
pág. 103 a 117 15 páginas
1.4 Guía de Manejo del Driver de la TCS-2
pág. 118 a 135 18 páginas
DOCUMENTO Nº2, PRESUPUESTO
2.1 Consideraciones Generales
pág.
3a3
1 páginas
2.2 Mediciones, Precios Unitarios y Sumas Parciales pág.
4a7
7 páginas
2.3 Presupuestos Generales
8a9
2 páginas
pág.
Autorizada la entrega del proyecto del alumno/a:
Javier Miguel Gutiérrez-Barquín
EL DIRECTOR DEL PROYECTO
Álvaro Sánchez Miralles
Fdo.:
Fecha:
Vº Bº del Coordinador de Proyectos
Álvaro Sánchez Miralles
Fdo.:
Fecha:
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
PROYECTO FIN DE CARRERA
ASPIRADORA INTELIGENTE PARA
LIMPIEZA AUTOMÁTICA DE SUELOS
* SOFTWARE DE CONTROL Y BRAZO MECÁNICO *
AUTOR: JAVIER MIGUEL GUTIÉRREZ-BARQUÍN
MADRID, Junio 2007
Resumen
ASPIRADORA INTELIGENTE PARA LIMPIEZA AUTOMÁTICA
DE SUELOS: SOFTWARE DE CONTROL Y BRAZO MECÁNICO
Autor: Miguel Gutiérrez-Barquín, Javier.
Director: Sánchez Miralles, Álvaro.
Entidad colaboradora: ICAI – Universidad Pontificia Comillas
RESUMEN DEL PROYECTO
El proyecto “Aspiradora Inteligente para la Limpieza Automática de Suelos” ha
sido desarrollado en el ámbito de la investigación con el propósito de crear un
primer prototipo de robot aspirador que presente la novedad de estar dotado de un
brazo mecánico (Figura 1). Actualmente (año 2007) no se conoce de ningún robot
aspirador, al menos a nivel comercial, que cuente con esta singularidad. Este
primer prototipo será el punto de partida de próximos proyectos que se encargarán
de optimizar al máximo las distintas partes de que consta el robot. Son muchas las
mejoras que se deben todavía implantar. Es un proyecto de gran envergadura y es
imposible realizarlo todo en un solo proyecto.
Brazo
Base
+
Robot Aspiradora
=
Figura 1: Módulos principales del robot aspiradora
A día de hoy ya existen en el mercado robots aspiradoras, pero presentan dos
deficiencias muy notorias: su poder de aspiración es bastante reducido (no limpian
muy bien); y no son capaces de acceder a limpiar a ciertos sitios como por
ejemplo bajo los sofás, las camas u otros muebles. Es de aquí de donde surgió la
motivación del proyecto y se propuso como objetivo final desarrollar una
aspiradora que mejore las prestaciones de las que actualmente existen en el
mercado. Incluso no se descarta llegar a ponerla a la venta si los resultados
obtenidos son realmente satisfactorios.
Resumen
La idea de incorporar a la base del robot un brazo surgió del director del proyecto
en el año 2005. Gracias al brazo se conseguiría acceder a esos sitios donde otros
no pueden, a pesar de su reducido tamaño. El diseño actual de dicho brazo se basa
en el diseño realizado en el año 2005-06 en el IIT (Instituto de Investigación
Tecnológica) por dos alumnos con beca de colaboración (uno de ellos es el
proyectista de este trabajo).
Como el trabajo a realizar para conseguir este primer prototipo era demasiado
para un solo proyecto se decidió dividirlo en dos. Así, el objetivo concreto de este
proyecto ha sido construir el brazo mecánico y desarrollar el software de control
del robot (tanto de la base como del brazo), mientras que otro proyecto [1] se ha
encargado de la base y los actuadores necesarios. Eso sí, se ha tenido que trabajar
bastante en equipo ya que, muchas de las decisiones que se han tenido que tomar
influían en ambas partes.
Sin duda alguna, el brazo mecánico constituye la gran innovación del proyecto y
donde se han invertido los mayores esfuerzos. En la Figura 2 puede verse cómo es
y cuales son sus partes principales.
Extensor cable
retráctil USB
Antena
eléctrica
Tubo
telescópico
Boca de
aspiración
Figura 2: Brazo mecánico
Su principio de funcionamiento es el siguiente: localizado bajo la base, cuando el
robot se está desplazando permanece contraído y quieto. Ahora bien, cuando el
robot detecta que hay un hueco por el que no cabe, pero si que lo haría el brazo,
deja de moverse y estira el brazo. Una vez se ha limpiado la zona deseada, el
brazo se recoge y entonces vuelve a moverse la base. Como cuando se está
limpiando por el brazo no es necesario limpiar por la base, se decidió instalar una
servo-válvula que automáticamente seleccionara si aspirar por la base o por el
Resumen
brazo. Este elemento es muy importante ya que si no estuviera se estaría aspirando
siempre por ambos sitios y la capacidad de aspiración de cada una de las bocas
sería muy pequeña. No se limpiaría casi nada.
En cuanto al hardware utilizado para el control del robot, decir que se han usado
sensores (digitales, infrarrojos y ultrasónicos), una tarjeta de control de sensores
(TCS-2), y una PDA. La TCS-2 es la encargada de recibir las medidas de los
sensores y mandar las órdenes correspondientes a los actuadores según le indique
la PDA, que es donde se ha descargado el programa con los algoritmos de control.
La TCS-2 y la PDA, que van integradas en la estructura del robot, se comunican
vía RS232.
Una vez acabado este prototipo, la conclusión principal a la que se ha llegado es
que la idea de incorporar el brazo a la base, buscando las ventajas anteriormente
comentadas, es algo totalmente viable. Ahora bien, hay dos puntos que son
especialmente críticos y que deben ser optimizados al máximo. Uno de ello es la
válvula que hace que se reduzca la capacidad de aspiración pues no llega a aislar
totalmente las dos tomas de aspiración. No es totalmente estanca ya que entonces
el rozamiento a la hora de moverla sería muy alto y haría falta una gran fuerza.
Por ello se decidió quitarle un anillo que llevaba pero habría que buscar otra
solución. El otro punto crítico es el tubo telescópico que también presenta
pérdidas de aire. Ocurre más o menos lo mismo. Como son tubos unos dentro de
otros, que deslizan entre sí, las uniones no son perfectas y hay una holgura por la
que se escapa el aire. Habría que minimizar esa holgura llegando a un
compromiso entre pérdida de aire y rozamiento entre tubos.
En resumen, el trabajo realizado hasta el momento ha demostrado que es posible
llegar a conseguir un producto de mejor calidad que los que actualmente hay pero
todavía queda mucho por mejorar.
Referencia:
[1]
Cerezo, M., “Aspirador inteligente para la limpieza automática de suelos: Diseño
electromecánico y electrónico”. Biblioteca de Proyectos Universidad Pontificia Comillas
de Madrid, Escuela Técnica Superior de Ingeniería (ICAI). Madrid, Junio 2007.
Abstract
INTELLIGENT
FLOORS
VACUUM
CLEANING:
CLEANER
CONTROL
FOR
AUTOMATIC
SOFTWARE
AND
MECHANICAL ARM
Author: Miguel Gutiérrez-Barquín, Javier.
Manager: Sánchez Miralles, Álvaro.
Collaborating Entity: ICAI – Universidad Pontificia Comillas
ABSTRACT
The project “Intelligent Vacuum Cleaner for Automatic Floors Cleaning” has
been developed in the field of investigation in order to create a first prototype of
vacuum cleaner robot that has the newness of been equipped with a mechanical
arm (Figure 1). Nowadays (year 2007), it is not known any vacuum cleaner robot,
at least at commercial level, which counts on this singularity. This first prototype
will be the departure point of next projects that will be in charge of optimizing the
different parts comprising the robot. There are many improvements that must still
be implanted. It is a project of great spread and it is impossible to do everything
within a single project.
Brazo
Base
+
Robot Aspiradora
=
Figure 1: Principal modules of the robot
These days there are robotic vacuum cleaners in the market, but they show two
considerable deficiencies: their suction power is not enough (they do not clean
good enough); and they are not able to clean certain places, like for example,
under sofas, beds or other furniture. This is the main motivation for the project,
which final goal is to develop a vacuum cleaner that improves the current features
of those that are currently in the market. Moreover, the eventual launching of the
product will be considered as long as the obtained results are really satisfactory.
Abstract
The idea to incorporate an arm to the base of the robot arose from the project’s
instructor in 2005. Thanks to the arm, it would be able to accede to those places
where others cannot, in spite of its reduced size. The current design of this arm is
based on the design made in 2005-06 at the IIT (Institute of Technological
Investigation) by two students with a collaboration scholarship (one of them is the
designer of this work).
Since the forecasted workload for this first prototype was too much for a single
project, the project was split in two. Thus, the specific objective of this project has
been to build the mechanical arm and to develop the control software of the robot
(for both the base and the arm), whereas the other project [1] has been in charge of
the base and the necessary actuators. However, the two parties have worked as a
team since many decisions influenced in both projects.
Without any doubt, the mechanical arm constitutes the great innovation of the
project and it is where the greater efforts reside. It can be seen in Figure 2 how the
arm is, and what are its main components.
Extensor cable
retráctil USB
Antena
eléctrica
Tubo
telescópico
Boca de
aspiración
Figure 2: Mechanical arm
Its principle of operation is the following one: the arm is located under the base
and it remains contracted and stands still when the robot is moving. Besides,
whenever the robot detects a hollow in which it does not fit but the arm would, the
robot stops and stretches the arm. Once the desired zone has been cleaned, the arm
is contracted again and then the base continues to move.
Since when the arm is cleaning it is not necessary to clean by the base, it was
decided to install a servo-valve that automatically selected whether to aspire by
the base or by the arm. This element is very important because if it were not
Abstract
installed, both sites would be always aspiring and the capacity of aspiration of
each of the entrances would be very small. Nothing would be cleaned.
Regarding the hardware used for the control of the robot, sensors have been used
(digital, infrared and ultrasonic), a sensor control card (TCS-2), and a PDA. The
TCS-2 is the one in charge of receiving the measures of the sensors and of
sending the corresponding orders to the actuators according to the indications of
the PDA, which is where the program with the control algorithms has been
uploaded. The TCS-2 and the PDA, which is integrated in the robot structure, are
communicated via RS232.
Once finished this first prototype, the main conclusion that has been reached is
that the idea to incorporate the arm to the base, looking for the previously
commented advantages, is something completely feasible. However, there are two
points that are especially critical and that must be optimized. Firstly, the valve,
which causes a reduction in the aspiration capacity because it does not totally
isolate the two entrances of aspiration. It is not totally watertight because if it
were, then the friction at the time of moving would be very high and a great force
would be needed to move it. For that reason, it was decided to remove a ring, but
it would be necessary to look for another solution. The other important point is the
telescope tube that also causes a loss of aspiration. It occurs practically for the
same reason than before. There are tubes, ones inside others that slide between
them, and the unions are not perfect because there is space by which the air
escapes. It would be necessary to minimize that space arriving to a clear trade-off
between the loss of aspiration and the friction between tubes.
In summary, the finished work demonstrates that it is possible to achieve a better
quality product than those existing in the market, but there is still a lot of room for
improvement.
Reference:
[1]
Cerezo, M., “Aspirador inteligente para la limpieza automática de suelos:
Diseño electromecánico y electrónico”. Biblioteca de Proyectos Universidad
Pontificia Comillas de Madrid, Escuela Técnica Superior de Ingeniería (ICAI).
Madrid, Junio 2007.
Documento
Nº1,
MEMORIA
Índice
2
Índice
Parte I
Capítulo 1
Memoria .............................................................................................5
Introducción ..................................................................................6
1
Estudio de los trabajos existentes / tecnologías existentes ........................ 7
2
Motivación del proyecto................................................................................. 19
3
Objetivos ........................................................................................................... 21
4
Metodología / Solución desarrollada ........................................................... 23
5
Recursos / herramientas empleadas ............................................................. 24
Capítulo 2
1
Mecánica del robot aspiradora.................................................25
Brazo mecánico del robot ............................................................................... 26
1.1 Diseño............................................................................................................................. 27
1.2 Construcción ................................................................................................................. 28
1.3 Implantación en la base ............................................................................................... 34
2
Base del robot ................................................................................................... 36
Capítulo 3
Hardware del robot aspiradora................................................39
1
Sensores............................................................................................................. 40
2
Tarjeta de Control de Sensores (TCS-2) ...................................................... 45
2.1 Arquitectura de la TCS-2 ............................................................................................. 46
2.2 Conexiones de la TCS-2 ............................................................................................... 49
Capítulo 4
1
Software del robot aspiradora .................................................58
Microsoft eMbedded Visual C++ 4.0, Microsoft PPC 2003 SDK y
Microsoft ActiveSync 4.2......................................................................................... 60
2
Driver de control de la TCS-2........................................................................ 66
2.1 Variables y funciones del Driver ................................................................................ 67
Capítulo 5
1
Algoritmos ...................................................................................70
Pantalla de usuario .......................................................................................... 72
1.1 Botón Start ..................................................................................................................... 74
1.2 Botón Stop...................................................................................................................... 76
2
Control general del robot ............................................................................... 77
Índice
3
3
Control del brazo mecánico ........................................................................... 79
Capítulo 6
1
Resultados y experimentos .......................................................81
Protocolo de pruebas de aspiración.............................................................. 82
1.1 Pruebas sin servo-válvula............................................................................................ 82
1.2 Pruebas con servo-válvula .......................................................................................... 84
2
Protocolo de pruebas de navegación............................................................ 86
2.1 Definición del protocolo de pruebas para entorno estructurado........................... 86
2.2 Definición del protocolo de pruebas para entorno desestructurado..................... 87
3
Resultados pruebas de aspiración ................................................................ 88
4
Resultados pruebas de navegación .............................................................. 90
Capítulo 7
1
Conclusiones..................................................................................................... 93
Capítulo 8
1
Conclusiones................................................................................92
Futuros desarrollos ....................................................................96
Mejoras aplicables al prototipo..................................................................... 97
Bibliografía..........................................................................................................99
Parte II
Estudio económico........................................................................100
1
Introducción.................................................................................................... 101
2
Estudio económico......................................................................................... 101
Parte III
Manual de usuario........................................................................103
Parte IV
Guía de manejo del driver de la TCS-2......................................118
1
Introducción.................................................................................................... 119
2
Nociones básicas del driver ......................................................................... 119
3
Variables y funciones del driver................................................................. 120
4
Instrucciones de manejo del objeto Comm .............................................. 126
4.1 Creación del objeto ..................................................................................................... 126
4.2 Inicialización de la comunicación............................................................................. 127
4.3 Introducción de las órdenes a enviar ....................................................................... 127
4.4 Envío y recepción ....................................................................................................... 129
4.5 Lectura de las medidas .............................................................................................. 129
Índice
4
4.6 Problemas que pueden surgir................................................................................... 132
4.7 Ejemplo de uso............................................................................................................ 132
Memoria
5
Parte I MEMORIA
Memoria. Introducción
6
Capítulo 1 INTRODUCCIÓN
En este capítulo se hace la introducción del proyecto. En la sección
“Estudio de los trabajos existentes / tecnologías existentes” se resumen y
analizan los diferentes desarrollos tecnológicos relacionados con el tema
del proyecto. Lo que aquí se pretende es transmitir una visión general de
la tecnología actualmente en uso. Esta primera sección dará pie a la
siguiente, “Motivación del proyecto”, donde a la vista de los trabajos
existentes, se exponen las razones por las que se ha decidido idear y
desarrollar este trabajo. Posteriormente en la sección “Objetivos” se explica
que es lo que se va a hacer. Para ello, se dividirá el proyecto en objetivos
perfectamente definidos, y se comentará cada uno por separado, de
manera que quede claro si se ha alcanzado o no dicho objetivo. Finalmente
en la secciones “Metodología / Solución desarrollada” y “Recursos /
herramientas empleadas” se detalla a grandes rasgos el proceso seguido para
la consecución de los objetivos planteados, así como los recursos de los
que se ha dispuesto para su desarrollo.
Memoria. Introducción
7
1 Estudio de los trabajos existentes / tecnologías existentes
La robótica en general y la robótica móvil en particular es un área
de intenso estudio por la comunidad científica debido a las múltiples
aplicaciones que ofrece. En el uso cotidiano del término se considera un
robot a cualquier dispositivo mecánico que realiza tareas automatizadas
ya sea por medio de un programa, por supervisión directa de un humano
o mediante técnicas de Inteligencia Artificial.
El empleo de brazos robóticos está implantado desde hace tiempo
en la industria moderna, siendo su utilización muy extendida para la
realización de tareas repetitivas o de riesgo: atornillar piezas, pintar
coches, realizar soldaduras, desplazar objetos pesados, etc. Estos aparatos
trabajan en entornos controlados y preparados específicamente para ellos,
a los que el operador humano no suele tener acceso mientras están en
funcionamiento. Aparte de los brazos robóticos industriales, existen otras
utilidades que se les están dando cada vez con mayor frecuencia a
máquinas de este tipo. Así, es cada vez más habitual la utilización de
brazos robóticos para realizar operaciones quirúrgicas, sobre todo las
relacionadas con la microcirugía y cirugía no invasiva, debido al alto
grado de precisión que se puede obtener. También se utilizan como
implantes para miembros amputados, dentro de la ingeniería biónica.
Estos robots tienen un grado de autonomía limitado y no se engloban en la
categoría de robots móviles autónomos estudiados en esta memoria.
Desde esta perspectiva, un robot es un agente con un cuerpo físico con
capacidades motrices y situado en un entorno real con el que el robot
interactúa. La autonomía en un agente de este tipo requiere de
capacidades complejas como trabajar durante largos periodos de tiempo
sin supervisión en entornos dinámicos en los que es imposible predecir el
estado del mismo. Esto implica a su vez capacidad de navegar en el
entorno, además de técnicas de autoalimentación, detección de fallos,
auto-regulación y auto-generación de reglas de comportamiento. El grado
Memoria. Introducción
8
de autonomía en los robots móviles disponibles hoy día está todavía lejos
de ajustarse a esta definición. Es de destacar que el estado del arte en el
desarrollo de sistemas robóticos autónomos no se corresponde con lo que
de ellos se espera por parte de la sociedad. Los avances en la tecnología no
se reflejan a la misma velocidad en la robótica móvil. Seguramente, la
pregunta más oída por un investigador del área en ámbitos sociales sea:
¿Para cuándo uno que pase la aspiradora o que corte el césped? Tareas
que, aunque no triviales, no suponen grandes dificultades, están lejos de
ser realizadas por un robot móvil con un grado de éxito satisfactorio.
Obviamente, las aplicaciones de este tipo de sistemas son infinitas,
desde robots guías en museos y centros públicos, hasta la exploración
marítima y espacial. Por otro lado, hoy en día se están construyendo
dentro de la robótica autónoma, muñecas o mascotas artificiales de
compañía para personas mayores, debido a que en los países
desarrollados la esperanza de vida crece pero no el índice de natalidad, lo
que hace que existan cada vez más personas ancianas que viven en
soledad y que pudieran verse beneficiadas por robots de este tipo. Así, se
han construido robots imitando a “mamíferos” que muestran cierto grado
de sensibilidad en el trato con las personas, pero suponen todavía un costo
no abordable para lograr un uso generalizado.
No hay soluciones “mágicas” para resolver los problemas; incluso
una tarea tan simple como la de evitar obstáculos depende fuertemente
tanto de la morfología del robot y de los sensores de que dispone, como
del propio entorno y del grado de dinamismo que presenta el mismo. La
navegación con objetivo en entornos con un grado de estructuración
pequeño, más allá del puro deambule, algo casi “instintivo” para los
animales, es uno de los mayores escollos a resolver para conseguir robots
fiables y convertirlos así en algo rutinario en los espacios comunes.
Hasta prácticamente finales de los 80 el rumbo tomado para el
desarrollo de agentes autónomos se fundamentaba en la Inteligencia
Memoria. Introducción
9
Artificial. Se consideraba que, una vez conseguida la “mente artificial
inteligente”, el paso de añadirle un cuerpo a esa “mente” sería, si no
inmediato, un problema ingenieril de menor dificultad. Claro reflejo de
esto es el vago número de referencias a robots físicos reales que puede
hallarse en la literatura de la época.
A finales de los 80, R. A. Brooks [1] revolucionó el área atacando la
filosofía seguida hasta entonces desde su base. Postuló que para conseguir
robots autónomos inteligentes debe empezarse por construir agentes
físicos reales con capacidades básicas que puedan actuar en entornos
reales, y que una vez logrado ese objetivo, se podría aspirar a ir
aumentando las habilidades del robot y, en definitiva, su grado de
autonomía. La irrupción de las ideas de Brooks dio lugar a lo que hoy día
se conoce como Sistemas Basados en el Comportamiento.
Centrándonos en la situación de los robots aspiradores sería lógico
preguntarse: “¿Qué diablos pasó para que los robots aspiradores no
empezasen a desarrollarse antes?”. Cuando aún éramos jóvenes y leíamos
novelas de ciencia ficción imaginábamos que los robots convivirían con
nosotros en un futuro no muy lejano. Pero la realidad es que por ahora, los
robots sólo se han ocupado de las tareas industriales más importantes
como la construcción de automóviles.
Desde el año 2001 han aparecido varios modelos que se han ido
desarrollando lentamente a la sombra del mercado para llegar hoy a
aspiradores robóticas como la Roomba Pro. Aunque Japón siempre cuenta
con la última palabra en robótica parece que se inclinan más por conseguir
robots de aspecto humanoide. Mencionamos éste producto de la empresa
iRobot [2] por haberse convertido en una referencia importante en lo que a
aspiradoras robotizadas se refiere. Roomba Pro ya se ofrece en dos colores
distintos, con habilidades de succión y barrido del polvo, recarga
automática de baterías y sensores de caída por escaleras. Cuando ésta
aspiradora encuentra un obstáculo gira 45º y continúa limpiando. El
Memoria. Introducción
10
sistema de aspiración seleccionado por iRobot es el de bolsa de aspiración
en seco (es la forma tradicional como sistema de aspiración). El robot se
maneja muy bien con suelos duros y alfombras poco altas y sin flecos.
La estrategia de navegación adoptada por iRobot para Roomba es la
de inicio mediante espiral (Figura 1). Poco a poco el robot va describiendo
una trayectoria circular con radio creciente (con forma de caracola) para
luego comenzar un algoritmo aleatorio de navegación por la habitación al
más puro estilo ping-pong. El comportamiento puede describirse como
“poco inteligente” recurriendo a una lógica reactiva lo que se traduce en el
sucesivo repaso de zonas concretas de la habitación. Se ha preguntado al
servicio de atención al cliente si pensaban desarrollar algún algoritmo de
navegación alternativo que fuera más eficaz, a lo que contestaron [al
menos no en la versión de 230$]. Roomba como el resto de aspiradores
robotizados del mercado sigue una navegación aleatoria, dejando actuar la
probabilidad y consiguiendo una eficiencia del 95% de superficie aspirada
en una habitación cuadrada y sin obstáculos.
Figura 1: Estrategia de navegación del robot aspiradora Roomba
iRobot se sirvió de un sistema operativo de menos de 256 bytes de
memoria (menos que el propio logo de Microsoft Windows). Con esta
relativamente baja potencia de cálculo es capaz de manejar sensores de
infrarrojos (medidores de distancia), sensores de contacto y sencillos
algoritmos de escape ante “aprisionamientos”. Cuando por alguna
circunstancia no es capaz de encontrar una salida apaga sus motores y
Memoria. Introducción
11
emite un pitido de auxilio para ser rescatada por algún ser humano. La
Figura 2 permite ver cómo es el interior de este robot.
Figura 2: Interior del robot aspiradora Roomba
El sistema de acumulación de polvo del aspirador es relativamente
pequeño siendo muchas veces necesario su vaciado si la suciedad de la
habitación en cuestión es importante. La filosofía en éste aspecto es la de
mantener una limpieza continua y no dejar que la suciedad se acumule.
iRobot también ha desarrollado últimamente algunos accesorios
como cepillos especiales, generadores de paredes virtuales (se trata de un
dispositivo que genera un rayo infrarrojo y evita que la aspiradora
atraviese dicha frontera) y mandos de control a distancia para el robot.
Sus baterías tardan 12h en cargar y ofrecen una autonomía de hasta
90 minutos de aspiración al robot.
También se deben mencionar otros modelos de robot aspirador
inteligente que apuestan por otras tecnologías. En la Figura 3 se resumen
mediante un esquema cuales son estas otras alternativas.
Memoria. Introducción
12
Figura 3: Oferta de robot aspiradores actuales
De entre las distintas clasificaciones que se han hecho en el
esquema anterior, se quiere comentar más a fondo la referente al apartado
tecnológico Actualmente existen tres maneras para absorber la suciedad
de nuestros hogares:
Memoria. Introducción
13
- Tecnología bolsa en seco (Tradicional) (Figura 4)
Mediante
una
diferencia
de
presión generada por un ventilador
eléctrico, el aire presente en la boca de
aspiración
a
presión
ambiente
se
introduce por la toma de aire a través de
los cepillos y de la bolsa dejando en el
filtro intermedio la suciedad.
Las ventajas de éste método son el
bajo coste del material filtrante, el bajo
peso (comparado con otras tecnologías) y
la sencillez de diseño.
a)
Los principales inconvenientes son
la pérdida de eficiencia de aspiración a
medida que el filtro se obtura, el ruido
del motor aspirador y el retorno de
partículas de polvo al ambiente en la
mayoría de los casos. También debemos
b)
Figura 4: Tecnología de bolsa en seco
a) esquema de funcionamiento
b) imagen de la bolsa
destacar la incomodidad que supone el
cambio de las bolsas filtrantes y la
incapacidad
de
reutilización
de
las
mismas. Es necesaria una gran potencia
eléctrica para el conjunto.
Decir que el método de bolsa en seco es el más extendido en el
mundo de las aspiradoras robóticas debido a su sencillez y a la ausencia
de patentes de esta tecnología.
Como ejemplos de productos tenemos además de la comentada
Roomba (Tabla 1):
Memoria. Introducción
Foto Producto
14
Descripción Técnica
Smart Multi-Function Vacuum Cleaner
(TRV-10) con control remoto. Vuelve
automáticamente al punto de carga una
vez que detecta un nivel bajo de baterías.
Con variedad de programas de limpieza
(semanal, diaria, etc). Posibilidad de
alargar el periodo de limpieza para
grandes superficies. El control remoto
permite guiar el aspirador hacia lugares
específicos.
Las características del AV-838 son el
detector anticaída por escaleras, detector
virtual de paredes, sensor seguimiento de
paredes, función de control remoto.
Tensión de entrada al cargador: 100-240V
AC. Tensión salida del cargador: 24C DC
Tensión en baterías: 14.4V. Potencia
media de la unidad 23 W. Tiempo recarga
5h. Autonomía 50-70 minutos.
Ubot propone la siguiente aspiradora:
Funciones de señalización con voz digital.
Seguidor de paredes. Especificaciones:
dimensiones: 42 x 18cm. Peso: 8.12kg.
Cargador externo: AC 100-240V.Salida
del cargador: DC 19V, 3.16A.Tensión en
baterías: 14.4V. Potencia del motor: 60W.
Tiempo de recarga 4 horas máximo.
Autonomía 100 minutos. Velocidad:
0.2m/seg. Volumen bolsa aspiración 0.7L.
Tipo de baterías Li-ion recargable.
Aspiradora de VS Electronics. Las
especificaciones son altura 98mm.
Autonomía 58min. Peso 3.4kgs. Tiempo
de recarga 3hrs. Ruido 65DB.El peso es de
1Kg. Capacidad bolsa de aspiración 0.7L.
Potencia de aspirador 30W. Velocidad
0.2m/seg. Baterías recargables de Ni-MH.
El tamaño de la habitación es
configurable. Se carga manualmente.
Función de control remoto.
Tabla 1: Robot aspiradores comerciales que usan la tecnología de bolsa en seco
Memoria. Introducción
15
- Tecnología ciclones (Dyson)
El sistema “Dual Cyclone”, inventado por James Dyson [3] en 1987,
sustituye las tradicionales bolsas de recogida de residuos, cuya
obstrucción es frecuente, por dos ciclones que garantizan una capacidad
de aspiración constante. Los residuos se depositan en una cubeta
fácilmente extraíble y limpiable. Además, James Dyson incluyó una nueva
opción en sus aspiradoras: pueden informar al servicio técnico acerca de
problemas de funcionamiento. Lo único que se debe hacer es llamar al
centro de servicio técnico y la aspiradora transmitirá en formato binario
las piezas defectuosas que han de ser sustituidas.
Las fases que tienen lugar
en este sistema son las siguientes
(
Figura 5): la entrada de aire
viciado, la separación a modo de
Ciclones
centrifugadora en los ciclones y
la separación de partículas según
Rejilla
su masa pequeña, mediana o
grande en la rejilla o en el cubo.
Cubo
El sistema tiene la ventaja de no
contar con cartuchos de bolsas y
su principal inconveniente es el
Figura 5: Sistema de tecnología de ciclones
elevado precio y la pérdida de
estanqueidad a largo plazo.
Como ejemplo de producto que usa esta tecnología está el robot
Dyson DC06 [4] y que a continuación se describe en mayor detalle (Tabla
2):
Memoria. Introducción
16
Foto Producto
Descripción Técnica
Dyson introduce la DC06 con un precio de
6.000$. Un 5% del sistema es limpieza y un
95% inteligencia. Incorpora más de 70
sensores y tres computadoras independientes
pudiendo realizar un total de 16 decisiones
por segundo. Reconoce cuando la limpieza de
la habitación finalizó. Se han fabricado un
total de 1100 unidades en todo el mundo. Su
peso es de 9.2Kg. Hicieron falta 60.000 horas
de investigación para diseñar el modelo.
Dyson no facilita ningún otro dato técnico.
Tabla 2: Robot aspirador comercial que usa la tecnología de ciclones
- Tecnología bolsa hidráulica (Karcher)
Karcher [5] recurre a esta tecnología para sus modelos manuales de
limpieza. Merece la pena nombrar y entender los principios básicos de
funcionamiento. En la actualidad no hay ningún aspirador robótico que la
incorpore por algunos problemas que puede presentar.
El principio de funcionamiento
(ver Figura 6) se basa en establecer
una diferencia de presión utilizando
un ventilador. Con ello se consigue
que
las
partículas
procedentes
introduzcan
del
por
el
y
el
aire
exterior
se
canal
de
aspiración. El ventilador se encuentra
situado en la parte más alta de la
aspiradora
únicamente
de
las
tal
manera
partículas
que
más
livianas son capaces de ascender por
el canal de ventilación siendo las más
Figura 6: Sistema de bolsa hidráulica
gruesas atrapadas en el recipiente de
agua.
Memoria. Introducción
17
La ventaja del sistema se encuentra en el terreno ecológico. La
suciedad queda en el agua, no es necesario fabricar bolsas de filtrado, etc.
El principal inconveniente es el elevado peso que adquiere el conjunto
pudiendo alcanzar los 15Kg.
Como se ha dicho actualmente no hay ningún robot aspirador que
realmente cuente con este tipo de tecnología pero un modelo que se
aproxima mucho es el Robocleaner 3000 (ver Tabla 3) que necesita una
estación base para su correcto funcionamiento.
Foto Producto
Descripción Técnica
AspiradorRobot Robocleaner
3000.
Cuenta
con
una
autonomía de 60 minutos. El
peso del conjunto son 2Kg. El
depósito del acumulador de
suciedad es de 0.2L.Las
dimensiones son Ø 280x105
mm .La tensión de servicio
empleada es de 12V. Su
precio ronda los 1500€.
Limpia unos 15 metros
cuadrados a la hora. Cuenta
con un programa especial
para el reconocimiento de los
flecos de alfombra para no
quedar enganchado con ellos.
La estación de mando tiene
un depósito de suciedad de
2L que se va llenando según
se recarga la unidad móvil. El
sistema de navegación se
basa en rayos infrarrojos. Su
potencia de aspiración es de
18W. Y la velocidad máxima
de 20cm por segundo.
Tabla 3: Robot aspirador comercial que usa la tecnología de ciclones
El mercado no reaccionó tan mal como se esperaba los últimos 5
años vendiéndose entre 2002 y 2003 un total de 570.000 unidades. La
Memoria. Introducción
18
proyección de futuro para este mercado entre 2003 y 2007 es de 4.1
millones de aspiradores vendidas con una valor total de más de 4 billones
de dólares.
Memoria. Introducción
19
2 Motivación del proyecto
En los últimos años se ha avanzado muchísimo en el campo de la
robótica y, en la actualidad se está investigando en como hacer que estos
nuevos descubrimientos tengan una aplicación útil en la vida cotidiana de
las personas.
Hasta hace poco, los robots sólo se usaban en líneas industriales
(automoción, tratamiento de residuos,…), la exploración espacial, o
situaciones donde es muy peligroso que el trabajo sea realizado por una
persona, como es la localización de minas terrestres y la desactivación de
explosivos.
Entre otras causas el que la gente no usara robots se debía a que,
como toda gran revolución tecnológica, necesita un tiempo para que la
sociedad se adecue a ella puesto que la reacción más común hacia lo
nuevo es la de rechazo.
Ahora bien, en una sociedad como la actual que ha vivido, y está
viviendo, el boom tecnológico del PC y las telecomunicaciones (Internet,
móviles,…) y es consciente de las ventajas que todo ello ha supuesto, esta
barrera parece haberse cruzado. Si unimos esto al hecho de que, hoy en
día, el estrés y la falta de tiempo son predominantes, todo producto cuyo
fin sea la mejora de las condiciones de vida tendrá una gran aceptación
social.
Es por ello que la integración de la robótica en la sociedad empieza
a ser ya una realidad, con una perspectiva de futuro muy buena. Estamos
hablando de un mercado todavía por explotar tanto a nivel económico
como de desarrollo tecnológico.
En este caso en particular, se ha decidido crear una aspiradora
inteligente que sea capaz de limpiar automáticamente una casa evitando
así que sea una persona la que tenga que hacerlo. Con ello se evitará sufrir
todos los males derivados de esta actividad (tiempo empleado, dolor de
Memoria. Introducción
20
espalda, cansancio,..) que a buen seguro a nadie le gusta realizar pero que,
por desgracia, de vez en cuando hay que hacer.
Como se comentó el la sección anterior, en la actualidad ya existen
en el mercado robot-aspiradoras, pero presentan dos deficiencias muy
notorias: su reducido poder de aspiración que resulta insuficiente para
limpiar en condiciones; y su falta de accesibilidad a ciertos sitios que
impiden la limpieza debajo de sofás u otros muebles.
Para solucionar estos problemas de falta de accesibilidad se decidió
que lo mejor era dotar a la base de aspiración de un brazo mecánico. Ésta
fue una idea del director del proyecto que surgió en el año 2005. El diseño
actual del brazo se basa en el diseño realizado en el año 2005-06 en el IIT
(Instituto de Investigación Tecnológica) por dos alumnos con beca de
colaboración (uno de ellos es el proyectista de la presente memoria).
Por tanto, lo que se pretende en este proyecto es conseguir un
prototipo de aspiradora automática que sustituya al modelo convencional
y no presente los inconvenientes que tienen los robots-aspiradoras que ya
existen.
Memoria. Introducción
21
3 Objetivos
Con este proyecto, y el que a su vez está desarrollando
paralelamente un compañero del ICAI [6], se quiere llegar a construir un
primer prototipo de aspiradora automática.
Son cuatro los objetivos básicos que atañen a este proyecto y que se
consideran de obligatorio cumplimiento para poder decir que realmente el
proyecto cumple su cometido. A continuación se define y explica cada
uno de ellos:
Objetivo 1. Conseguir que un robot limpie una superficie.
La capacidad de aspiración debe ser la suficiente como para limpiar
correctamente una superficie. Lógicamente será menor que la de una
aspiradora convencional pues al estar ésta conectada a un enchufe puede
tener un motor de hasta 220V. Sin embargo, en un robot la tensión será
mucho menor pues hay que suministrársela con pilas.
Objetivo 2. Realizar un algoritmo de navegación
El robot ha de ser capaz de moverse por un entorno desconocido sin
chocar con los obstáculos. No es necesario que la navegación sea
inteligente, es decir, puede pasar varias veces por el mismo sitio. Si se el
robot llegara a colisionar con algo, debe ser capaz de detectar el choque y
actuar en consecuencia.
Objetivo 3. Construir un brazo mecánico.
Para solventar el problema de la falta de accesibilidad para limpiar en
ciertos sitios se decidió que lo mejor era dotar a la base de la aspiradora de
un brazo mecánico. De la construcción de la base se encarga el otro
proyecto.
Memoria. Introducción
22
Objetivo 4. Conseguir que haya una coordinación perfecta entre brazo
mecánico y base de la aspiradora.
No se puede permitir que el brazo mecánico se mueva cuando no debe.
Esto podría ocasionar que la aspiradora se quedara atascada en algún
lugar o, aún peor, que se rompiera alguna parte del robot.
Objetivo 5. Documentación.
Todo el proyecto debe estar perfectamente documentado. Con esto se
pretende que cualquiera que esté interesado en lo que aquí se ha hecho
tenga toda la información que necesite. Además, puesto que se trata de un
proyecto que se continuará en los próximos años, ha de servir de guía a los
futuros desarrollos.
Finalmente como objetivos opcionales, que se consideran extras
del proyecto y que su ejecución dependerá fundamentalmente del tiempo
que sobrara tendríamos:
Objetivo opcional 1. Desarrollar un algoritmo de actuación para nivel
de batería bajo.
Cuando la batería del motor de aspiración esté descargada, recibiremos
una señal y la aspiradora deberá actuar según lo que se decida hacer ante
esta situación.
Objetivo opcional 2. Detección de escaleras y desarrollo del algoritmo
correspondiente.
Cuando el robot se aproxime a una escalera se detectará el desnivel que
hay y el robot deberá actuar en consecuencia. Sería catastrófico que se
cayera.
Memoria. Introducción
23
4 Metodología / Solución desarrollada
Como en todo proyecto medianamente serio, lo primero que se hizo
fue documentarse a fondo sobre todos los aspectos que abarca el proyecto.
Se estudió que es lo que a día de hoy existe, se evaluaron sus ventajas e
inconvenientes, y en caso de que pudiera servir, si se podía mejorar o no.
Así, en la sección “Estudio de los trabajos existentes / tecnologías existentes”,
comentada anteriormente, se resume parte de este análisis.
Como consecuencia del estudio anterior, se tomó la decisión de
dotar a la base de un brazo mecánico. Éste es sin duda el punto más
importante y novedoso del proyecto y en donde se han invertido la mayor
parte de los esfuerzos realizados. Con este brazo se busca solucionar los
problemas de falta de accesibilidad a ciertos sitios como pueda ser limpiar
bajo los sofás o las camas.
Una vez construido el brazo mecánico se procedió a la colocación
de los sensores pertinentes, tanto en la base como en el brazo, y se
desarrollaron los diferentes algoritmos.
Tras finalizar esta parte se realizaron pruebas tanto de aspiración
como de software y se evaluaron los resultados obtenidos.
Por último se agrupó toda la documentación recogida a lo largo del
proyecto y se elaboró la presente memoria.
Memoria. Introducción
24
5 Recursos / herramientas empleadas
Para el desarrollo del proyecto se ha necesitado el uso de muy
variados componentes puesto que hay mecánica, hardware y software.
En la parte mecánica del robot (construir el brazo mecánico) se han
utilizado tubos de PVC de distinto diámetros, un tubo flexible de plástico,
una antena extensible de radio para coches, elementos de fijación y
sujeción, y papel de periódico y cola para hacer la boca de aspiración.
El hardware lo componen los sensores (digitales, infrarrojos y
ultrasónicos), una tarjeta de control de sensores (TCS) que será la
encargada de recibir las medidas de los sensores y mandar órdenes a los
actuadores (los actuadores no forman parte de este proyecto), y una PDA
que intercambiará información con la TCS.
Para desarrollar el software se utilizó un PC en el cual se instalaron
los programas Microsoft eMbedded Visual C++ 4.0 , Microsoft PPC 2003
SDK y Microsoft ActiveSync 4.2
También se hizo uso de los laboratorios de la universidad ya que
hubo que usar polímetros, fuentes de alimentación y osciloscopios.
Memoria. Mecánica del robot aspiradora
25
Capítulo 2 MECÁNICA DEL ROBOT
ASPIRADORA
Este capítulo tiene como propósito explicar el sistema mecánico del
robot, donde se han distinguido dos partes. Por un lado está la base o
cuerpo principal del robot, y por el otro, el brazo mecánico.
Tal y como se ha comentado en la sección “Objetivos”, de toda la
mecánica que tiene el robot aspiradora, este proyecto se centra en el
desarrollo del brazo mecánico. De la base se encarga el proyecto de un
compañero.
Como consecuencia de ello, se podría pensar que no tiene sentido
que se hablara aquí de la base del robot. Ahora bien, base y brazo están
íntimamente relacionamos ya que, como se verá en las distintas secciones
de este capítulo, el diseño de uno condiciona el del otro (sobre todo en lo
que a dimensiones se refiere).
Además, para poder entender el software de control desarrollado
tanto para el brazo como para la base (ver capítulo “Software del robot
aspiradora”) que sí forma parte de este proyecto, se cree conveniente
explicar brevemente la mecánica de la base.
Así, en primer lugar en la sección “Brazo mecánico del robot” se
describirá, en profundidad, el diseño y la construcción del brazo. Y, a
continuación, en la sección “Base del robot” se comentará, sin entrar en
detalles, la estructura de la base. Si se quiere más información a cerca de
la base ver [6].
Memoria. Mecánica del robot aspiradora
26
1 Brazo mecánico del robot
Esta sección es la más importante del proyecto ya que recoge la
gran innovación y el verdadero punto de investigación del proyecto.
La incorporación de un brazo a la aspiradora fue una idea del
director del proyecto que surgió en el año 2005. El diseño actual del brazo
se basa en el diseño realizado en el año 2005-06 en el IIT (Instituto de
Investigación Tecnológica) por dos alumnos con beca de colaboración
(uno de ellos es el proyectista de la presente memoria).
La idea de construir un brazo mecánico surgió como solución a un
gran inconveniente que, a día de hoy, presentan los robots aspiradoras
comerciales: no son capaces de acceder a ciertos lugares por lo que quedan
zonas sin limpiar, como por ejemplo ocurre, bajo los sofás, las camas u
otros muebles.
Puesto que estos robots están, por lo general, ya muy optimizados
en lo que a tamaño se refiere, se llegó a la conclusión de que por ahí no
estaba la solución.
Ahora bien, a la hora de limpiar una superficie, estos robots se
mueven como un único cuerpo de forma que todo el robot debe
desplazarse hasta situarse sobre la zona a limpiar. Esto hace que, a pesar
de suelen tener una altura muy reducida, no es lo suficiente como para
que pueda entrar en sitios como los indicados anteriormente.
Ese es el punto débil que se quiere mejorar. Que no tenga que entrar
todo el robot para limpiar.
Así, la solución que aquí se propone para solventar este problema
es hacer que, cuando “el cuerpo” del robot no quepa, un brazo mecánico
sea el encargado de realizar las tareas de limpieza.
En los siguientes apartados explicamos como se hizo el brazo y
como se incorporó a la base del robot.
Memoria. Mecánica del robot aspiradora
27
1.1 Diseño
Se pensó largo y tendido sobre como hacer el brazo mecánico pues
no era tarea fácil. Debía hacerse algo que no molestara a la base cuando no
se estuviera usando (que es en la mayoría de los casos), y que tuviera una
altura lo suficientemente pequeña como para poder acceder a lugares de
poca altura. Por supuesto luego tendría que ser capaz de salir sin quedarse
atrapado.
Finalmente se decidió que lo mejor era hacer un diseño inspirado en
como funcionan algunas antenas de radio o televisión (ver Figura 7).
Figura 7: Antena telescópica
¿Por qué se decidió adoptar ese diseño?
Un diseño como el propuesto trae consigo una serie de ventajas que
se puede decir que son justo las que se buscaban:
Reducido tamaño cuando no se usa: cuando el robot se esté
moviendo el brazo mecánico estará contraído y la longitud del
brazo, más o menos, será la que tenga el tubo más exterior.
Puede limpiar huecos de gran profundidad: como dentro de un
tubo va otro, y así sucesivamente, cuantos más tubos pongamos
mayor profundidad alcanzaremos. Lo malo es que también
cuantos más tubos haya menor será la sección de aspiración
(suponiendo diámetro del tubo exterior fijo).
La altura respecto al suelo, en principio, queda fijada por el
diámetro del tubo más exterior. Como luego se verá también
influye el sistema motor que contrae y expande el brazo.
Al salir recto, y ser un cuerpo rígido, es imposible que se quede
atascado. Si es capaz de entrar, será capaz de salir. Además, al
Memoria. Mecánica del robot aspiradora
28
no doblarse, el tubo no puede llegar a estrangularse lo que
podría ocasionar una pérdida total de la capacidad de
aspiración.
Por desgracia también tiene alguna desventaja o complicación como
son:
Tiene que salir paralelo al suelo. Si no se hiciera así, podrían
ocurrir dos cosas: que llegara un punto en el cual no se pudiera
estirar más pues estaría chocando con el suelo; ó que se
despegara del suelo si está inclinado en la otra dirección.
Por ser un cuerpo rígido, el hueco que ocupa en la base al estar
contraído se puede optimizar menos que si fuera flexible.
Hay pérdida en la capacidad de aspiración debido a que no es
un único tubo. Para que puedan moverse unos dentro de otros
debe haber una pequeña holgura por donde puede salir el aire.
1.2 Construcción
Una vez comentado el diseño propuesto, junto con sus ventajas y
desventajas, ha llegado el momento de explicar cómo es y cómo se hizo el
brazo mecánico.
En la siguiente imagen (Figura 8) se muestra el brazo ya acabado y,
además, se han indicado con flechas los distintos elementos que lo forman.
Memoria. Mecánica del robot aspiradora
29
Figura 8: Brazo mecánico
A continuación lo que se va a hacer es explicar cada uno de los
componentes por separado.
Tubo telescópico
Está formado por tres tubos de PVC, de distintos diámetros, para
poderlos meter unos dentro de otros. El tubo exterior es de 30mm de
diámetro por 400mm de longitud; el intermedio de 24mm de diámetro por
390mm de longitud; y el más interior de 20mm de diámetro por 380mm de
longitud.
Una vez obtenidos los tres tubos, el procedimiento que se ha de
seguir para montar el tubo telescópico es el siguiente:
-
Se pone una tira de cinta adhesiva en el exterior de un extremo
del tubo más pequeño.
-
Se pone una tira de cinta adhesiva en el interior de un extremo
del tubo intermedio.
Memoria. Mecánica del robot aspiradora
-
30
Se introduce el extremo sin cinta del tubo más pequeño por el
extremo sin cinta del tubo mediano hasta que empiece a salir
por el otro lado.
-
Se comprueba que al coincidir los dos extremos con cinta el
tubo no se sale. Las cintas adhesivas hacen de tope. Si se sale lo
que habrá que hacer es poner una capa más gorda de cinta.
-
Se hace lo mismo entre el tubo exterior y el intermedio.
Notar que cuanto mayor es el grosor de la cinta, menores serán las
pérdidas de aspiración pero, por el contrario, mayor será el rozamiento al
estirar y contraer los tubos. Y, por tanto, más potencia tendría que tener el
motor encargado de mover el tubo telescópico.
Puesto que el tubo exterior irá fijo en la base, sin sobresalir para no
molestar cuando el brazo esté contraído, la máxima profundidad que se
puede alcanzar es de 750mm. Es un poco menor que la suma de la
longitud de los otros dos tubos ya que hay parte de los tubos que se queda
sin salir para así hacer de tope.
Boca de aspiración
La boca de aspiración se hizo manualmente. No servía coger una
boca como la de los aspiradores normales pues son muy grandes y se
quiere una boca relativamente pequeña para que el poder de aspiración no
se reduzca mucho. Además, para estar optimizada, debía tener la misma
altura que el tubo interior al cual irá encajado. Así, si cabe el tubo cabe la
boca y viceversa.
Lo primero de todo fue hacer un molde de plastilina con la forma
desea. A continuación, se fueron dando capas de papel de periódico con
cola sobre los laterales y parte superior del molde. Una vez seco, se
procedió a quitar el molde por la parte inferior quedando así el interior
hueco. Finalmente se colocaron unas cerdas de escoba en el borde inferior
de la boca.
Memoria. Mecánica del robot aspiradora
31
Puede verse en la Figura 9 el resultado final de la boca de
aspiración.
Figura 9: Boca de aspiración
Se barajó la idea de hacer una boca articula que pudiera amoldarse
cuando chocara. Esto resultaría muy útil en ciertas situaciones, como por
ejemplo, limpiar las esquinas. Pero finalmente se rechazó esta propuesta
porque si no sería inviable poner sensores de contacto en la parte
delantera de la boca para detectar los choques. Era una u otra cosa. Pero lo
que no se podía permitir es que en caso de choque se tardara en
reaccionar. Sería poco visto de cara al público y, además, el motor sufriría
en exceso por los picos de corriente.
Antena eléctrica
Se trata de una entena de radio para coche cuyos valores nominales
son 12V y 12W (Figura 10).
Figura 10: Antena eléctrica de coche
Su finalidad es la de estirar y contraer el tubo telescópico. Al estar
éste anclado a la antena se mueven solidariamente.
Memoria. Mecánica del robot aspiradora
32
El principio de funcionamiento es el mismo que el del tubo
telescópico sólo que ahora hay un motor que se controlará de la siguiente
manera:
-
+12V la antena se estira y con ella el tubo telescópico
-
-12V la antena se contrae y con ella el tubo telescópico.
Lo malo de la antena eléctrica es que es muy grande y pesa bastante
(700 gramos). Esto hará que a la hora de diseñar la base, que será circular,
el diámetro quede fijado por la longitud de la antena.
Por ello, se pensó en otras soluciones como poner una rueda motora
al lado de la boca. Lo malo de esta solución es que hay que llevar un cable
desde la base hasta el motor de la rueda. Y se debe soltar y recoger el cable
según estemos estirando o contrayendo. Esto es bastante difícil de
conseguir y se intentó, por ejemplo, unir un cable a un metro. Pero no se
consiguió.
Extensor de cable retráctil USB portátil
Para poder llevar la señal del sensor de contacto colocado en la
parte delantera de la boca hasta la base, se presentó el mismo problema
que el que acabamos de comentar a cerca de poner una rueda motora.
Ahora bien, aquí si que no quedaba más remedio. Así que hubo que
ingeniárselas para conseguirlo.
Con paciencia y algo de tiempo se consiguió unir el cable a un
metro con un resultado muy bueno (ver Figura 11). El cable se recogía y
soltaba tal y como se quería.
Memoria. Mecánica del robot aspiradora
33
Figura 11: Metro modificado (recoge cable en vez de la tira de metro)
Pero finalmente se optó por usar un extensor de cable retráctil USB,
como muestra la Figura 12 ya que era una solución mucho más elegante.
USB
Figura 12: Extensor de cable USB
Tubo flexible de plástico transparente
Con un diámetro de 28mm y una longitud de 300mm su función
consiste en conectar el brazo mecánico con la servo-válvula que, como se
verá en la siguiente sección, se encargará de seleccionar la toma de
aspiración.
Tiene una flexibilidad suficiente como para no estrangularse al
hacer la curva para superar la diferencia de altura entre brazo y válvula
(ver Figura 13).
Memoria. Mecánica del robot aspiradora
34
TUBO
FLEXIBLE
Figura 13: Tubo flexible (conducto comunicación brazo-válvula)
Su diámetro es un poco menor que el del tubo exterior al cual va
conectado (Figura 14). Sin embrago, es algo mayor que el del tubo más
interior que es lo importante pues si esto no fuera así se podría quedar
algo atascado.
BRAZO
TUBO
FLEXIBLE
Figura 14: Unión tubo flexible a tubo telescópico
1.3 Implantación en la base
Para acoplar el brazo mecánico a la base se tuvieron en cuenta
fundamentalmente tres aspectos.
-
Se colocó de manera que fuera un diámetro de la base: el brazo
contraído no debe salir de la planta y con esta distribución se
consigue que la base sea lo más pequeña posible.
Memoria. Mecánica del robot aspiradora
-
35
El brazo debe ir casi a ras de suelo: recordar que tiene que salir
paralelo a él.
-
Se orientó para que al extenderse saliera por la izquierda: que
fuera izquierda o derecha daba igual. Ahora bien, no se quería
que saliera por delante (o por detrás) porque al moverse el
robot lo normal es que cuando llegue a un obstáculo se coloque
paralelo a él. Así, tras avanzar un poco se volvería a meter el
brazo (si es que hay que hacerlo) mientras que, de la otra
manera, o se llega recto o no se limpiará. Además, si se pone
longitudinalmente al robot, se dividiría la parte delantera en
dos. Esto haría que en lugar de haber una toma de aspiración
para la base hubiera dos.
En la Figura 15 se puede ver la ubicación final del brazo en la base
del robot.
Figura 15: Brazo mecánico acoplado a la base del robot aspiradora
Memoria. Mecánica del robot aspiradora
36
2 Base del robot
Como se comentó al inicio del presente capítulo, la intención de esta
sección es explicar brevemente la mecánica de la base del robot
aspiradora. No se va a detallar el modo en que se diseñó y construyó, ni se
van a comentar las características de los elementos que la forman, lo cual
sí se hizo para el brazo mecánico. Ese cometido es tarea del proyecto de un
compañero al cual ya se ha hecho referencia con anterioridad. Por tanto, si
se quiere más información al respecto, se recomienda consultar el
documento de la referencia [6].
Aquí simplemente se pretende transmitir una idea general del
funcionamiento del robot y de su aspecto físico. Esto es necesario ya que si
no, cuando en el capítulo 3 se hable del software de control del robot,
podría haber problemas para entender las soluciones adoptadas.
En las Figura 16 y Figura 17 pueden observarse dos imágenes de la
base tomadas desde distinto ángulo. Notar que el brazo ya está acoplado y
que la carcasa exterior no se ha puesto para así poder ver el interior del
robot. Se han indicado con flechas sus componentes principales.
PLACAS
ELECTRÓNICAS
SERVO
CONTROL
VÁLVULA
MOTOR
ASPIRACIÓN
PDA
TARJETA
CONTROL
SENSORES
Figura 16: Componentes del robot aspirador (vista desde arriba)
Memoria. Mecánica del robot aspiradora
BATERÍA (RUEDAS Y
ELECTRÓNICA)
BOCA
ASPIRACIÓN
BASE
BARREDOR
LATERAL
37
BOLSA
SUCIEDAD
VÁVULA
BATERÍA
(MOTOR
ASPIRACIÓN)
MOTOR RUEDA
BRAZO
MECÁNICO
Figura 17: Componentes del robot aspirador (vista desde abajo)
Con estas dos imágenes uno ya es capaz de entender más o menos
el funcionamiento del robot aspiradora y el papel que juega cada
elemento.
A continuación, únicamente se van a comentar un par de asuntos
que para este proyecto resultan de relativa importancia, ya que influirán
tanto en su desarrollo, como en los resultados finales que se obtengan.
El primer asunto es que, a pesar de que la base es más o menos
circular, las ruedas motrices no están colocadas de manera que la línea
imaginaria que uno sus ejes sea un diámetro del círculo. Están situadas un
poco más cerca de la parte delantera por culpa del brazo. Esto será un
inconveniente ya que cuando se encuentre un obstáculo y se quiera girar
para esquivarlo, el robot no será capaz de girar sobre sí mismo
manteniendo el centro de la base sin cambiar de posición. En su lugar, el
punto que permanecerá inmóvil por ser el centro del giro, estará
desplazado hacia delante (ver Figura 18).
Memoria. Mecánica del robot aspiradora
38
Figura 18: Situación ruedas motrices en la base
La consecuencia directa de todo esto es que el robot no se podrá
acercar hasta prácticamente chocar con el obstáculo. Tendrá que parar un
poco antes para que al girar sobre sí mismo no dé con la parte de atrás.
El otro tema a comentar es la válvula que hay instalada. Movida
por un servo, se encargará de seleccionar la toma de aspiración. Así, si se
va a utilizar el brazo mecánico, comunicará la toma del brazo con la bolsa
de suciedad; y, en caso contrario, lo que comunicará será la toma de la
base con la bolsa de suciedad.
El problema que presenta la válvula es que no está muy optimizada
y se pierde poder de aspiración por la toma que no se esté usando.
Inicialmente no había pérdida capacidad pero el problema que había era
que, para poder mover la válvula, hacía falta ejercer un par muy grande.
El rozamiento era muy alto. Así que lo que se hizo fue quitar un anillo
interior, y con ello disminuyó considerablemente el rozamiento. La
contrapartida fue que la válvula dejaba de estar sellada y perdía algo de
aire.
Memoria. Hardware del robot aspiradora
39
Capítulo 3 HARDWARE DEL ROBOT
ASPIRADORA
En este capítulo se recoge el hardware que se utiliza para el control
del robot, a excepción de los circuitos actuadores, que forman parte del
otro proyecto [6]. Es decir, aquí se encuentra la información referente a la
recepción de medidas, y a la emisión de órdenes que irán a parar, a los
actuadores, o a los sensores, si es que hay que indicarles cuando medir.
En la sección “Sensores” se detallan los diferentes sensores que se
utilizan para el correcto manejo del robot, y se comentan algunas de sus
características.
Posteriormente en la sección
“Tarjeta de Control de Sensores” o
“TCS-2” a partir de ahora, se explicará en que consiste esta tarjeta. Se
puede adelantar que será la encargada de manipular y controlar los
distintos actuadores y sensores que se integran en el robot.
Memoria. Hardware del robot aspiradora
40
1 Sensores
El uso de sensores es indispensable para conseguir el correcto
control del robot. Mediante ellos, el robot es capaz de saber que es lo que
está sucediendo a su alrededor (sensores exteroceptivos), en su interior
(sensores propioceptivos), y actuar en consecuencia. Ahora bien,
dependiendo del tipo de medida que se quiera obtener habrá que usar un
sensor u otro. Se recomienda consultar [7] y [8] si se quiere entrar en
detalles sobre cuales son los sensores que más se suelen utilizar y cuando
deben usarse.
Aquí se van a utilizar tres tipos diferentes de sensores, todos ellos
exteroceptivos: ultrasónicos, infrarrojos y digitales.
Sensores de ultrasonido
Figura 19: Sensor ultrasonido Devantech Ltd. SRF04
Se han colocado 4 sensores de ultrasonido, modelo SRF04 (Figura
19) de Devantech Ltd. [9], en la periferia frontal del robot separados a
intervalos uniformes (Figura 20).
SENSORES DE
ULTRASONIDO
Figura 20: Localización sensores de ultrasonido
Memoria. Hardware del robot aspiradora
41
Estos sensores se utilizan para conseguir medidas de distancia, que
se usaran para detectar y evitar los obstáculos.
Para llevar esto acabo, se conectan todos los sensores a la TCS-2 y
ésta es la encargada de indicar cuando se debe realizar la medida y de
medir el tiempo que transcurre entre esta indicación y la indicación del
sensor de que ha recibido el eco. Para evitar que la medida de un sensor
sea recibida por otro, no pueden medir dos sensores a la vez. Entre una
medida y otra debe transcurrir un tiempo de 10ms.
Las características más importantes de estos sensores son: mide
bien en el rango que va de los 5cm a los 3m; abraca un ángulo de unos 45º;
mide sólo cuando se le indica; su mayor inconveniente es el problema de
la reflexión que hace que, en ciertas situaciones, la distancia medida sea
mayor que la que realmente es.
Sensores de infrarrojos
Figura 21: Sensor infrarrojo Sharp GP2D12
Se han usado un total de 5 sensores de infrarrojos, de la marca
Sharp [10] modelo GP2D12 (Figura 21). Al igual que los de ultrasonidos,
se utilizarán para obtener medidas de distancia. Ahora bien, su finalidad
no será la de evitar obstáculos.
Se colocarán 2 infrarrojos, cada uno cerca de una rueda, apuntando
hacia el suelo (ver Figura 22), para poder detectar desniveles y prevenir
que se puede caer el robot. Está pensado, sobre todo, para el caso de
Memoria. Hardware del robot aspiradora
42
encontrarse unas escaleras. Ante esta situación, el sensor medirá una
distancia mayor que la que correspondería al nivel del suelo y el software
de control se encargará de actuar en consecuencia.
SENSOR
DESNIVEL
Figura 22: Localización sensor desnivel (vista desde abajo)
Nota: en la otra rueda hay otro colocado de manera simétrica
Los 3 sensores restantes servirán para manejar el brazo mecánico
(ver Figura 23). El AD2 apunta siempre a la boca de aspiración del brazo y,
por tanto, se encargará de medir la longitud que se ha estirado el brazo. El
AD1, situado justo encima de la antena eléctrica, valdrá para saber si hay
hueco (y su profundidad) en la dirección del brazo. Es decir, indicará si se
puede estirar, o no, y cuanto. Y el AD0, que está inclinado hacia arriba,
servirá para decidir si se tiene que sacar o no el brazo cuando el AD1 diga
que hay hueco. El que vaya inclinado se debe a que, para decidir si estirar
o no el brazo, lo que hay que mirar es si el robot cabe o no (si cabe no
habrá que sacar el brazo). Si el AD0 se hubiera puesto en la parte más alta
del aspirador, tendría que ir recto. Esto tendría un gran inconveniente ya
que solo cubriría esa altura y si hubiera algo a media altura, como puede
ser la tabla horizontal que une las patas de las sillas, no sacaría el brazo, y
debería hacerlo. Al ponerlo inclinado cubrimos todas las alturas.
Memoria. Hardware del robot aspiradora
43
AD0
AD1
Hacia donde apuntan
AD2
Figura 23: Localización sensores del brazo mecánico
Al contrario que los sensores de ultrasonidos, los infrarrojos
actualizan su medida solos cada 32ms. Los cinco sensores van conectados
a la TCS-2 y ésta es la encargada de pedir las nuevas medidas cuando crea
oportuno. Las medidas están en analógico pero la TCS-2 se encargará de
convertirlas a digital.
Las características más importantes de estos sensores son: mide
bien en el rango que va de los 10cm a los 80cm; las medidas son bastante
fiables ya que no tiene el problema de la reflexión; y son muy
direccionales por lo que no son buenos para evitar obstáculos.
Sensores digitales
Estos sensores sirven para detectar los choques. Aunque se supone
que el robot debe ser capaz de darse cuenta de que se va a producir una
colisión antes de que ocurra, hay veces en las que algo falla y termina
chocándose. Gracias a estos sensores, cuando esto suceda, el robot recibirá
una señal y rápidamente ejecutará el algoritmo que corresponda ante tales
situaciones.
Memoria. Hardware del robot aspiradora
44
Se han utilizado tres tipos diferentes de sensores digitales ya que,
según sea su forma, serán los adecuados o no para el lugar donde han de
colocarse.
Así, para la carcasa se usaron micro-interruptores, y para el brazo
pulsadores de dos tipos distintos como muestra la Figura 24. Finalmente
se tuvo que colocar un sensor más en el brazo para saber de manera
rápida y fiable cuando está el brazo contraído. Viene a ser un final de
carrera. Inicialmente esto se controlaba con el sensor de infrarrojos AD2
pero a veces tardaba en dar la medida correcta y el motor de la antena
intentaba contraer pero, como no se podía más, se originaban picos de
corriente significativos. A causa de ello, el motor y otros componentes
electrónicos sufrían por lo que hubo que colocar ese sensor extra.
SENSORES
DIGITALES
Figura 24: Sensores digitales contacto boca aspiración del brazo mecánico
Memoria. Hardware del robot aspiradora
45
2 Tarjeta de Control de Sensores (TCS-2)
Desarrollada por el Departamento de Electrónica y Automática del
ICAI, la TCS-2 es una plataforma electrónica para el control de robots
móviles autónomos que incorpora las siguientes características (Figura 25):
- Capacidad de comunicación con una PDA por puerto serie
(protocolo RS-232) y por radiofrecuencia (código Manchester),
así como comunicación por infrarrojos (protocolo IRDA) a través
de la PDA conectada al puerto serie.
- Capacidad para integrar sensores analógicos, ultrasonidos,
digitales, encoders, y control de motores y servomecanismos
(mediante PWM).
Además, la plataforma tiene la flexibilidad suficiente para poder
integrar un número variable de cada familia de sensores, y
además,
algunos conectores pueden ser configurados. De este modo se consigue
que el usuario pueda adaptar la plataforma a las necesidades reales de su
robot.
Figura 25: Plataforma de control
Memoria. Hardware del robot aspiradora
46
En este proyecto se va usar la comunicación TCS-PDA a través del
puerto serie. Existe la posibilidad de controlar la PDA vía Wi-Fi pero como
el robot ha de funcionar de modo automático, no hay que controlar la
PDA de ninguna manera (solo hay que ejecutar el programa que se grabe
en la PDA). En ambos casos, al traspasar el sistema de control y
navegación del robot a la PDA, se permite una mayor versatilidad en la
programación de comportamientos dado que será posible la utilización de
lenguajes de más alto nivel.
A modo de resumen se puede decir que la TCS-2 es una plataforma
rápida, flexible, versátil y barata (si se considera que el usuario ya dispone
de la PDA, la plataforma obtendría posiblemente la mejor relación
calidad/precio del mercado) que permite el control local y/o remoto de
robots móviles autónomos.
2.1 Arquitectura de la TCS-2
La plataforma se basa en dos microcontroladores que son capaces
de controlar los diferentes módulos de los que consta la tarjeta. El modelo
utilizado es el PIC16F876 de MICROCHIP [11]. Los diferentes módulos se
distribuyen en ambos microcontroladores tal y como muestra la Figura 26.
Figura 26: Distribución módulos TCS-2
Memoria. Hardware del robot aspiradora
47
Hay que destacar que ninguno de los dos microcontroladores
manda sobre el otro. La PDA, a través de su puerto serie, se comunicará
con los dos: primero con uno y luego con otro (ver Figura 27). En el caso
de usar el módulo de radiofrecuencia (que está alojado en el primer PIC)
se comunicarán ambos microcontroladores a través del bus I2C. De no usar
el bus sólo podría establecerse comunicación con el primer PIC.
Figura 27: Comunicación con los 2 PICs
Como ya se ha dicho, cada PIC se encarga de acceder a diferentes
recursos. A continuación se detalla el funcionamiento de los diferentes
módulos a modo de resumen:
•
Módulo de RF
Se encuentra en el PIC 1 y funciona de modo continuo
recibiendo órdenes y respondiendo a las mismas. Si se desactiva
el bus I2C, sólo puede relacionarse con los dispositivos con los
que comparte microcontrolador.
Memoria. Hardware del robot aspiradora
•
48
PDA
Ante la ausencia del módulo de RF, la PDA a través de la
comunicación serie, queda como único medio por el que recibir
las órdenes. Ambos PICs se comunican con ésta, recibiendo y
enviando continuamente información.
•
Motores
Funcionan desde el PIC 1. Los parámetros de configuración son
establecidos desde el programa de control.
•
Encoders
Cada enconder se encuentra en un microcontrolador. La
actualización de las medidas se realiza de forma continua.
•
Sensores digitales
También se encuentran en ambos PICs. En caso de detectar una
variación en las medidas ésa se envía de forma automática al
programa de control. En la versión actual (2.0) los digitales del
PIC 1 pueden ser configurados como salidas. Por defecto están
como entradas.
•
Sensores analógicos
Se encuentra en el PIC 1. Las medidas se actualizan
continuamente. La conversión analógica-digital también se
realiza de modo continuo.
•
Sensores de ultrasonido
Las medidas de ultrasonido son realizadas por el PIC 2. La
recepción de este tipo de medidas es algo más complejo que en
los casos anteriores. El PIC, una vez que recibe la orden, realiza
las medidas, las almacena, y posteriormente las devuelve en otra
comunicación.
Memoria. Hardware del robot aspiradora
•
49
Servomecanismos / Motores auxiliares
Los conectores que corresponden a este módulo pueden ser
configurados individualmente como servo o como motor. En
ambos casos se encuentran ligados al PIC 2. Funcionan según las
órdenes recibidas y no devuelven ningún tipo de información.
•
Sensores analógicos/Sensores de ultrasonido/Servos
Este módulo también puede ser configurado para que en sus
conectores pueda haber sensores analógicos, de ultrasonido o
servomecanismos. Sin embargo, no puede hacerse conector a
conector y presenta algunas restricciones como se verá en el
siguiente apartado. Funciona desde el PIC 2.
2.2 Conexiones de la TCS-2
En este apartado se detallan las diferentes conexiones que tiene la
TCS-2 con el exterior. Para explicar las conexiones se va a usar un esquema
equivalente de la tarjeta; por ejemplo, en la Figura 28 se muestra una
fotografía de la TCS-2 y en la Figura 29 se muestra un esquema
equivalente.
Figura 28: Fotografía TCS-2
Memoria. Hardware del robot aspiradora
50
Uno de los aspectos más importantes en cualquier tarjeta es conocer
las señales de +5V y las de referencia, con el objetivo de poder alimentar
dispositivos externos a la misma y para no equivocarse en ninguna
conexión que pudiera acarrear desperfectos. En la Figura 29 y Figura 30 se
muestran las conexiones de +5V y referencia respectivamente.
Figura 29: Conexiones de +5V de la TCS-2
Figura 30: Conexiones de referencia de la TCS-2
Memoria. Hardware del robot aspiradora
51
La TCS tiene varias conexiones para poder conectar los diferentes
sensores y actuadores que soporta. En la Figura 31 se muestran estos
conectores, además de los de conexión con la PDA y la fuente de
alimentación.
Figura 31: Conexiones de la TCS-2 con sensores, actuadores, PDA y alimentación
Como se puede apreciar en la Figura 31 existen conectores que se
pueden utilizar para varios tipos de sensores o actuadores. Para que la
tarjeta pueda saber lo que hay que conectar en cada uno de ellos, es
necesario configurarla, lo cual ya se verá cómo se hace.
A continuación se van a estudiar las diferentes configuraciones
posibles suponiendo que el módulo “Servos y/o Motores” está siempre
configurado como servos:
•
Para conectar 7 u 8 sensores de ultrasonidos, ver Figura 32. En esta
configuración se pierden 5 sensores analógicos (4 de ellos podrían ser
servos) y 4 digitales.
Memoria. Hardware del robot aspiradora
52
Figura 32: Configuración de la TCS-2 para funcionar con 8 sensores de ultrasonido
•
Para conectar 5 o 6 sensores de ultrasonido; si el número de analógicos
es de 9 o 10 (no hay servos), ver Figura 33; si es de 7 u 8 (se tienen 2
servos), ver Figura 34; y es menor de 7 (se tienen 4 servos), ver Figura
35. En todas estas configuraciones se pierden 4 sensores digitales.
Figura 33: Configuración de la TCS-2 para funcionar con 6 sensores de ultrasonido
y 9 o 10 sensores analógicos
Memoria. Hardware del robot aspiradora
53
Figura 34: Configuración de la TCS-2 para funcionar con 6 sensores de ultrasonido
y 7 u 8 sensores analógicos
Figura 35: Configuración de la TCS-2 para funcionar con 6 sensores de ultrasonido
y menos de 7 sensores analógicos
•
Para conectar hasta 4 sensores de ultrasonido; si el número de
analógicos es de 9 o 10 (no hay servos), ver Figura 36; si es de 7 u 8 (se
Memoria. Hardware del robot aspiradora
54
tienen 2 servos), ver Figura 37; y si es menor de 7 (se tienen 4 servos),
ver Figura 38.
Figura 36: Configuración de la TCS-2 para funcionar con 4 sensores de ultrasonido
y 9 o 10 sensores analógicos
Figura 37: Configuración de la TCS-2 para funcionar con 4 sensores de ultrasonido
y 7 u 8 sensores analógicos
Memoria. Hardware del robot aspiradora
55
Figura 38: Configuración de la TCS-2 para funcionar con 4 sensores de ultrasonido
y menos de 7 sensores analógicos
Y ya por último se van a mostrar las tres posibles configuraciones
que puede tener el módulo “Servos y/o Motores”, y que complementan a
las configuraciones anteriores:
•
Si se quieren conectar un total de 2 motores, ver Figura 39. No se
pierde ningún servo.
Figura 39: Configuración de la TCS-2 para funcionar con 2 motores
Memoria. Hardware del robot aspiradora
•
56
Si se quieren conectar un total de 3 motores, ver Figura 40. Se pierde 1
servo.
Figura 40: Configuración de la TCS-2 para funcionar con 3 motores
•
Si se quieren conectar un total de 4 motores, ver Figura 41. Se pierden
2 servos.
Figura 41: Configuración de la TCS-2 para funcionar con 4 motores
En el presente proyecto se usarán 3 motores, 1 servo, 4 sensores de
ultrasonido, 5 sensores analógicos, 4 entradas digitales y 3 salidas
Memoria. Hardware del robot aspiradora
57
digitales. Por tanto, la configuración utilizada corresponde con la de la
Figura 38 y la de la Figura 40 (son complementarias).
Memoria. Software del robot aspiradora
58
Capítulo 4 SOFTWARE DEL ROBOT
ASPIRADORA
Este cuarto capítulo tiene por objetivo explicar todo lo referente al
software utilizado en el proyecto, que incluye tanto a los programas que se
han usado para poder programar el robot como al driver de control de la
TCS.
Así, en una primera sección titulada “Microsoft eMbedded Visual C++
4.0, Microsoft PPC 2003 SDK y Microsoft ActiveSync 4.2” se va a hablar de
todos estos programas. Se comenzará analizando ciertos detalles del
lenguaje de programación utilizado para controlar el robot, que es C++, y
el entorno usado para ello: el Microsoft eMbedded Visual C++ 4.0. Se
eligió este entorno de desarrollo debido a que permite crear aplicaciones
basadas en ventanas con lo que se podrá manejar el robot desde la PDA
de manera muy sencilla.
Ahora bien, para poder crear estas aplicaciones se necesita tener
instalada la plataforma Microsoft PPC 2003 SDK en el PC, que siempre se
debe instalar después del Microsoft eMbedded Visual C++ 4.0.
Además, en esta misma sección se explicará el funcionamiento del
programa Microsoft ActiveSync (versión 4.2), que es necesario para poder
descargar en la PDA la aplicación que se ha desarrollado en el PC. Por
supuesto, el sistema operativo de la PDA que se utilice deberá ser el
mismo.
Finalmente, en la sección “Driver de control de la TCS-2” se describirá
cómo se maneja el driver que se ha usado en el proyecto y que permite
realizar programas en una PDA para controlar a la TCS-2. Un driver no es
más que un objeto que tiene un conjunto de funciones, que permiten
Memoria. Software del robot aspiradora
59
manejar un dispositivo, y un conjunto de variables, que permiten
monitorizar el estado del mismo, sin necesidad de conocer cómo está
hecho. Lo único que se debe conocer es el conjunto de funciones y
variables del driver que son interfaz con el usuario. Por tanto, en esta
sección se explicarán en detalle estas funciones y variables ya que es lo que
se utilizará a la hora de programar el robot.
Memoria. Software del robot aspiradora
60
1 Microsoft eMbedded Visual C++ 4.0, Microsoft PPC 2003
SDK y Microsoft ActiveSync 4.2
Los tres programas se descargaron directamente de la página web
de Microsoft y, tras haberlos instalado en el PC de trabajo (lo cual puede
resultar un poco complicado), lo primero que se hizo fue ejecutar el
Microsoft eMbedded.
El Microsoft eMbedded Visual C++ 4.0 es el programa que se ha
usado para programar la PDA utilizando como lenguaje de programación
C/C++. Este entorno de desarrollo permite desarrollar aplicaciones muy
complicadas con ventanas Windows PPC 2003.
Una vez dentro del programa, lo que se ha hecho es crear un nuevo
proyecto basado en una aplicación que consta de un algoritmo de control
(la inteligencia del robot), y de una ventana de diálogo que sirve de
interfaz con el usuario. Con todo ello se consigue finalmente manejar el
robot desde la PDA de manera sencilla. La programación consistirá en
añadir controles a la ventana de diálogo y, a estos controles, irán asociadas
ciertas funciones que permitirán el desarrollo de la aplicación deseada.
A continuación se detalla el procedimiento seguido para crear este
nuevo proyecto:
1. Ir al menú File→New
2. Seleccionar en el cuadro de diálogo “New” la opción WCE Pocket
PC 2003 FC AppWizard(exe); escribir en Project name “aspiradora”,
que es el nombre que se le dio; escribir en Location la ruta donde se
quiere guardar. Las demás opciones se dejan como están por
defecto y se pulsa OK. Ver Figura 42.
Memoria. Software del robot aspiradora
61
Figura 42: Ventana 1. Creación nuevo proyecto Microsoft eMbedded Visual C++ 4.0
3. Después se abre otra ventana (Figura 43) donde se selecciona la
opción Dialog based.y se pulsa el botón Finish. Finalmente se pulsa
OK.
Figura 43: Ventana 2. Creación nuevo proyecto Microsoft eMbedded Visual C++ 4.0
Tras haber realizado los pasos anteriores, el nuevo proyecto estará
creado y aparecerá en pantalla la ventana de proyecto, que se divide a su
vez en otras cuatro ventanas (Figura 44):
Memoria. Software del robot aspiradora
62
Figura 44: Ventana de proyecto
- Ventana de Workspace.
Hay tres pestañas: Classes que no se va a usar; Resources, que es donde se
va a tocar para poder cambiar el interfaz gráfico de la aplicación; y
FileView, que es sitio en el que se encuentran los ficheros de código. Al
crear el proyecto, el propio programa añade aquí cuatro archivos:
aspiradora.cpp/.h contiene el código de la aplicación principal, es decir, es
equivalente a main; en aspiradoraDlg.cpp/.h se desarrollará el código fuente
que controlará el robot; aspiradora.rc contiene los recursos que usa la
aplicación: ventanas, botones, controles, eventos, etc. Este fichero no se
puede tocar directamente. De hecho si se hace doble clic equivale a ir a la
pestaña Resources; y Stdafx.cpp/.h es un fichero que existe en todos los
proyectos, y que no hace falta entender pero que es necesario para que
todo funcione.
- Ventana de mensajes.
Aquí se podrán ver los mensajes que da el compilador al compilar y linkar
el programa, los valores de las variables durante el debugs, etc.
- Ventana de código.
Memoria. Software del robot aspiradora
63
Es donde se escribirá el código del programa.
- Barra de selección.
Permite seleccionar el tipo de archivo ejecutable. Elegir en las tres listas
despegables: Pocket PC 2003, Win 32 (Win CE ARM) debug, Pocket PC 2003
Device. Con esto se está diciendo que el archivo ejecutable se descargará
sobre la PDA. Se podría utilizar el emulador para realizar pruebas si no se
dispone de la PDA.
Para acabar de configurar el programa solo faltaría ir a
Project→Settings→Debug e indicar el directorio de descarga del ejecutable
en la PDA.
Hasta aquí no se ha usado para nada el Microsoft ActiveSync.
Ahora bien, se necesitará tener instalado este programa para comunicar el
PC (donde se ha programado la aplicación) con la PDA, de tal forma que
se pueda descargar en ésta la aplicación programada.
El Microsoft ActiveSync 4.0 permite la conexión a la PDA a través
de cable USB, puerto serie (COM), Bluetooth o infrarrojos. En este
proyecto se usará la comunicación vía USB. Al conectar la PDA (por
cualquiera de estos medios) al PC donde esté instalado el programa y éste
se inicia, aparecerá la siguiente pantalla (Figura 45):
Figura 45: Ventana de configuración de asociación en el Microsoft ActiveSync 4.0
Memoria. Software del robot aspiradora
64
En esta pantalla se deberá elegir qué tipo de conexión (asociación)
se quiere establecer entre el PC y la PDA. Como puede leerse en el texto de
ayuda de la figura, la asociación estándar sincroniza datos entre el PC y la
PDA, como mensajes de correo electrónico, elementos del calendario etc.
Si se ha elegido esta opción aparecerán más ventanas que preguntarán qué
es exactamente lo que se quiere sincronizar. Si se elige la otra opción
(asociación como invitado) no se sincronizarán los dos equipos, aunque se
seguirá teniendo la posibilidad de navegar por la PDA para copiar
programas desde el PC, eliminar programas de la propia PDA etc. Para el
objetivo de este proyecto valdría cualquier asociación de las mencionadas,
aunque es preferible la segunda ya que se devuelve inmediatamente el
control al usuario.
Una vez establecida la conexión entre PC y PDA el programa debe
presentar el siguiente aspecto (Figura 46):
Figura 46: Pantalla principal del Microsoft ActiveSync 4.0
Para descargar la aplicación programada en la PDA (tiene que estar
el ActiveSync activo y la PDA conectada) existen dos métodos. El primero
consiste en arrastrar la aplicación con el ratón desde la carpeta donde esté
en el PC hasta donde se quiera en la PDA, usando el explorador de la PDA
del Microsoft ActiveSync. La segunda posibilidad es realizar la descarga
directamente desde la ventana de proyecto de Microsoft eMbedded, si se
Memoria. Software del robot aspiradora
65
ha hecho el proceso de configuración tal y como se ha indicado
anteriormente. En ese caso, una vez terminado el programa, se debe
pulsar F7 o bien pinchar en el icono Build.
Por último se va a comentar que aunque con el Microsoft
ActiveSync es posible explorar el contenido de la PDA desde el PC a
través de una ventana, no se consigue un control remoto real de la PDA.
Se pueden mover y eliminar archivos y aplicaciones pero no ejecutarlos, ni
se permite acceder a ciertas zonas dentro de la PDA. Pero esto no es
necesario para el desarrollo del proyecto.
Memoria. Software del robot aspiradora
66
2 Driver de control de la TCS-2
En la introducción del capítulo ya se explicó a grandes rasgos en
que consistía el driver. Ahora bien, para utilizarlo se deben añadir los
archivos que lo componen al proyecto que se ha creado en el Microsoft
Visual C++ 2005. Los pasos a seguir son:
•
Copiar los archivos del driver en el directorio del proyecto (son
los archivos serial.cpp/h y Comm_sr.cpp/h).
•
Añadir los archivos *.cpp del driver al proyecto. Para ello se
pulsará el botón derecho del ratón sobre Ventana de Workspace>Source Files->Add Files to Folder. Se seleccionarán los archivos
con extensión *.cpp del driver.
•
Añadir los archivos *.h del driver al proyecto. Con el botón
derecho del ratón se pulsará sobre Ventana de Workspace>Header Files->Add Files to Folder. Se seleccionarán los archivos
con extensión *.h del driver.
Una vez hecho esto sólo hay que añadir en el fichero
AspiradoraDlg.cpp la línea #include "Comm_sr.h" y crear una variable de
tipo Comm (por ejemplo Comm com), que es el nombre de la clase que
maneja la TCS.
El haber añadido este driver supone que se tenga una serie de
funciones y variables asociadas a la variable de tipo Comm, que serán muy
útiles para controlar el robot en diversas comunicaciones. Así, si se escribe
en el archivo de código fuente (AspiradoraDlg.cpp) de alguna función ya
creada (asociada al Timer o a algún botón, por ejemplo) com (nombre de la
variable tipo Comm), aparecerá una ventanita que muestra estas funciones
(Figura 47):
Memoria. Software del robot aspiradora
67
Figura 47: Funciones asociadas a las variables de tipo Comm
Una comunicacion entre la PDA y la TCS consistirá en el envío de
órdenes de la PDA a la TCS (de una sola vez) y la respuesta de la TCS a las
mismas (también de una sola vez). Estas órdenes pueden ir con o sin
parámetros, y las respuestas de la TCS pueden ser esperadas (es la
respuesta a los datos solicitados en la misma comunicación por la PDA) o
inesperadas (que son las interrupciones).
Toda comunicación debe tener un inicio (com.inicio()) y un final
(com.comunica(), que devuelve un 0 si ha habido algún error en la
comunicación). Entre estas dos funciones se llamará a otras con las
órdenes que se quieren transmitir a la TCS.
2.1 Variables y funciones del Driver
A continuación sólo se van a explicar brevemente las variables y
funciones del driver que se van a utilizar en este proyecto. Éstas son:
Funciones de configuración
com.configuracion(5,4,1) //5 ADs, 2 USs, 1 motor auxiliar
com.periodoMotores(70)
com.configuraIO(0)
//D0, D1, D2, D3 son salidas digitales
com.desactivaI2C()
//desactiva el bus I2C
Memoria. Software del robot aspiradora
68
Funciones de control de los motores y de los servos
com.DcMotores(60,10)
//se configura el duty cycle de los
motores. Si es mayor que 35 gira hacia
delante; si es menor, hacia atrás
com.DcMotoresAuxiliares(70,10)
//misma explicación que antes
pero
para
los
motores
auxiliares
com.DcServos(7,20,30,40,43,30) //los valores tienen que estar
entre 7 que corresponde a -90º y
43 que son 90º
com.activarMotores(3) //3 activa los motores normales y los
aux; 2 solo los aux; 1 solo los
normales; 0 ninguno
Funciones de control de las salidas digitales
com.escribe Digital(0) //se ponen todas las salidas a 0V
Funciones de control de los sensores ADs
com.leerADs()
//se
solicita
leer
todos
los
ADs
que
se
han
configurado previamente
Inmediatamente después de acabar la comunicación, se
pueden almacenar los valores en una variable de tipo const
BYTE* con la siguiente instrucción:
vectorAD=com.valorADs() //en vectorAD[0] se almacena la medida
del sensor AD0 y en las siguientes posiciones, y por orden, el
resto de las medidas tomadas por los sensores ADs. Las medidas
de estos sensores tendrán un valor entre 0 y 255.
Funciones y variables de control de los sensores USs
com.pedirUSs() //función que solicita leer todos los USs que
se han configurado previamente
Una vez acabada la comunicación, hay que esperar a la
variable interrupcion (la número 2) para que los valores de los
sensores de USs se puedan almacenar en una variable de tipo
const BYTE* con las siguientes instrucciones:
Memoria. Software del robot aspiradora
69
if (interrupcion[2]) vectorUSs=com.valorUSs()
//en vectorUSs[0] se almacena la medida del sensor US0 y en
las siguientes posiciones, por orden, el resto de las medidas
tomadas por los USs. Las medidas de estos sensores tendrán un
valor entre 0 y 255.
Funciones y variables de control de los sensores digitales
En cada comunicación hay que mirar en la variable
interrupcion (la número 3) si el valores de los sensores digitales ha
cambiado. Si es que sí se guardarán los nuevos valores en una
variable de tipo const BYTE*:
if (interrupcion[3]) Digitales=com.valorDig()
//en Digitales[0] se almacena el estado de todos los sensores
digitales. El bit más bajo corresponde a D0 y el más alto a
D7. Si vale 0 es que está pulsado y si vale 1 es que no.
Para más información sobre el driver de la TCS, consultar la Parte 4
(“Guía de manejo del driver de la TCS-2”) de este documento.
Memoria. Algoritmos
70
Capítulo 5 ALGORITMOS
Este capítulo tiene como objetivo describir los algoritmos de control
que rigen el comportamiento del robot aspiradora. Para que quede claro el
contenido de estos algoritmos se va a dividir el capítulo en tres secciones.
En la primera sección (“Pantalla de usuario”) se describirá cómo es la
ventana de diálogo que se ha elaborado y qué se puede hacer en ella. Es
muy importante dejar este último punto claro ya que esta ventana será la
pantalla que utilice el usuario a la hora de manejar el robot.
Posteriormente en la sección “Control general del robot” se comentará
el algoritmo de navegación que gobierna al robot cuando éste se ha puesto
en marcha.
Y, finalmente, se dedicará la sección “Control del brazo mecánico” a
explicar cómo y cuándo se mueve el brazo. Aunque el brazo está
directamente relacionado con el apartado anterior, se ha creído
conveniente dedicar un apartado sólo para él fundamentalmente por dos
razones: es el componente realmente innovador del proyecto y, desde el
punto de vista de la programación, su control es considerablemente más
complejo que el de otros elementos debido a que para su correcto
funcionamiento ha sido necesario instalar un número considerable de
sensores.
Por último decir que en este capítulo no se pretende entrar en los
detalles de los distintos algoritmos desarrollados. Lo que se quiere es
transmitir la idea de cómo funcionan las cosas. Por ello, no se va a poner
ningún fragmento del código fuente, y en su lugar, cuando se crea
conveniente se usará un diagrama de flujo o una tabla para completar la
explicación.
Memoria. Algoritmos
71
Si se quiere entrar en los detalles, se puede consultar el código
fuente en el CD-ROM que se adjunta con el tomo del proyecto.
Memoria. Algoritmos
72
1 Pantalla de usuario
Resumiendo lo visto en el capítulo anterior, la programación en
Visual C++ se basa en escribir en aspiradoraDlg.cpp (aspiradora es el nombre
que se dio al proyecto) funciones asociadas a los controles que se han
añadido a la ventana de diálogo del proyecto (archivo aspiradora.rc).
Para crear estos controles basta con seleccionar en el menú Toolbox
el tipo de control deseado (por ejemplo un botón) y colocarlo en la ventana
de diálogo. Si a continuación se hace doble clic en el botón se creará por
defecto una función asociada al evento “hacer clic sobre este botón”. En
estas funciones será donde se programen los algoritmos de control, y
donde se utilizarán las variables y funciones que se han descrito en el
apartado 2.1 del capítulo anterior.
Se ha creído más conveniente llamar pantalla de usuario a la
ventana de diálogo ya que, es a través de ésta, la única forma que tiene el
usuario de interaccionar con el robot aspiradora.
En la siguiente imagen (Figura 48) puede verse el aspecto que tiene
la pantalla de usuario:
Figura 48: Pantalla de usuario PDA
Memoria. Algoritmos
73
Como se aprecia en la figura anterior, son dos las acciones que
puede desempeñar el usuario del robot: visualizar las medidas recogidas
por los USs y ADs (menos los dos que sirven para detectar desniveles) y el
valor de los digitales, los motores y el servo; y/o pulsar alguno de los dos
botones (“Start” y “Stop”) que hay en la pantalla.
Con el propósito de que quede claro a qué se refiere cada uno de los
datos que se muestran en la pantalla de usuario, se ha elaborado la
siguiente tabla (Tabla 4) que explica qué es cada cosa:
Nombre
A qué
sensor
corresponde
Qué indica
USs_Izq
US3
Ultrasonido más a la izquierda. Mide
distancia
USs_MIz
US2
Ultrasonido en medio a la izquierda.
Mide distancia
USs_Mdr
US1
Ultrasonido en medio a la derecha. Mide
distancia
USs_Drc
US0
Ultrasonido más a la derecha. Mide
distancia
ADs_BasArr-Par
AD0
Infrarrojo que mide distancia de base a la
pared por el lateral izquierdo
ADs_BasAbaj-Par
AD1
Infrarrojo que mide distancia del brazo a
la pared por el lateral izquierdo
ADs_Bas-Braz
AD2
Infrarrojo que mide distancia de base al
brazo para saber lo que se ha estirado
D0
Salida digital para el control de
encendido del motor de la aspiradora: 1
(5V) si ON, 0 (0V) si OFF.
D1
Salida digital para el control de
encendido de la alarma de batería de
aspiración baja: 1 (5V) si batería baja, 0
(0V) si batería OK.
Sal_DigD2
D2
Salida digital para el control de
encendido de los sweepers: 1 (5V) si ON,
0 (0V) si OFF.
Sal_DigD3
D3
No se usa.
Sal_DigD0
Sal_DigD1
Memoria. Algoritmos
74
Entr_DigD4
D4
Entrada digital nivel batería aspiración: 1
si batería OK, 0 si batería baja.
Entr_DigD5
D5
Entrada digital sensor contacto punta
antena: 1 si no choca, 0 si choca.
Entr_DigD6
D6
Entrada digital sensor contacto antena
recogida: 1 antena no recogida, 0 si sí.
Entr_DigD7
D7
Entrada digital sensor choque base: 1 si
no choca, 0 si choca.
Motores_Izq
M0
Duty cycle del motor de la rueda
izquierda: si <35 gira para atrás, 35 no
gira, >35 gira para delante
Motores_Drc
M1
Duty cycle del motor de la rueda
derecha: si <35 gira para atrás, 35 no
gira, >35 gira para delante
Motores_Braz
M2
Duty cycle del motor del brazo
mecánico: si <35 brazo se recoge, 35 no
se mueve, >35 brazo se estira
Servo_Valv
S2
Duty cycle del servo que posiciona la
válvula: 7 si aspiración por la base, 43 si
aspiración por el brazo
*se está suponiendo que el robot se está mirando desde su parte trasera
Tabla 4: Información recogida en la pantalla de usuario
1.1 Botón Start
Al pulsar este botón se reinician todos los valores de configuración
y, a continuación, el robot autónomamente empieza a limpiar la
habitación.
En la Tabla 5 se recoge la información que se manda desde la PDA
a la TCS en la primera comunicación que se establece entre ambas:
Memoria. Algoritmos
75
Valor del
parámetro
Descripción
(5,4,1)
5 ADs, 4 USs y 1 motor auxiliar (antena
del brazo mecánico)
configuraIO
(0)
D0, D1, D2, D3 son salidas digitales. El
resto son entradas
escribeDigital
(5)
D0=5V (motor aspiradora ON), D1=0V
(alarma batería baja OFF), D2=5V
(sweepers ON)
(70)
A esa frecuencia el motor no pita y
además así es igual que el del motor
auxiliar
Función
Configuración
periodoMotores
DcMotores
(35,35)
No se mueven las ruedas
DcMotoresAuxiliares
(35,35)
No se mueve el brazo
activarMotores
DcServos
(0)
(10,10,7,10,
10,10)
En principio no activo ningún motor
Solo importa el 7 (Servo 2) que
posiciona la válvula comunicando la
bolsa de aspiración con la toma de
aspiración de la base
desactivaI2C
-
Hay que llamarla
comunicación
en
la
primera
leerADs
-
Se pide medidas a todos los ADs
Tabla 5: Información mandada desde la PDA a la TCS en la primera comunicación
Por su parte la TCS devuelve en la misma comunicación las
medidas de los ADs y de los digitales que, junto con el valor del servo y de
los motores, se sacan por la pantalla de usuario. Los USs se piden en otra
comunicación.
Sin duda, esta primera comunicación es la más importante de todas
las que pueda haber ya que, si no tuviera lugar, todo estaría mal
configurado y no se sabe como actuaría el robot.
Por ello, si no es posible establecer la comunicación entre la PDA y
la TCS aparecerá en la pantalla de usuario un punto rojo (Figura 49) para
que se sea consciente de que algo no va bien. Si se está en esta situación se
recomienda comprobar que la TCS está bien alimentada, resetearla, y
como última medida resetear la PDA. En caso de que no haya problemas
Memoria. Algoritmos
76
de comunicación el punto será verde. Todo esto también es aplicable al
resto de comunicaciones que tengan lugar al ejecutar la aplicación.
Punto
rojo
Figura 49: Aspecto de la pantalla de usuario de la PDA ante fallo en la comunicación con TCS
Por último decir que al pulsar el botón “Start” se está haciendo dos
cosas muy importantes: que el brazo se contraiga (si es que estaba
estirado) antes de que el robot se desplace, e inicializar un timer que
rebosará al cabo de 200 ms. Sería un gran error permitir que el robot se
moviera con el brazo estirado pues podría chocar con algo y llegar incluso
a romperse. En cuanto al timer comentar que, al rebosar, se ejecutarán los
algoritmos que realmente se encargan del control del robot pero se
explicarán en las dos secciones restantes pues corresponde con el control
general de la base y el control del brazo.
1.2
Botón Stop
Si se desea que el robot pare y deje de limpiar, se debe pulsar el
botón “Stop”. Al darle al botón se desactivan los motores, se apaga el
motor de la aspiradora (D0=0), se apaga la alarma de batería baja si es que
estaba sonando (D1=0), se paran los sweepers (D2=0) y se para la cuenta
del Timer para que no vuelva a contar hasta que no se le indique.
Memoria. Algoritmos
77
2 Control general del robot
Transcurridos 200 ms desde que se pulsó el botón “Start”, se ejecuta
la función asociada al rebose del Timer (void CaspiradoraDlg::OnTimer
(UINT_PTR nIDEvent)).
Para ilustrar qué es lo que ocurre cuando esto sucede se va a hacer
uso de un diagrama de flujo (Figura 50).
Inicio
reboseTimer==1
Si
KillTimer
Medidas
choque_base==1 | |
desnivel==1
No
ControlBrazo
Si
ChoqueBase
nueva medida USs
&&
brazo no se mueve
No
Si
Navegacion
SalidasDigitales
ActualizaPantalla
SetTimer=200ms
Fin
Figura 50: Diagrama de flujo del algoritmo principal
El programa básicamente hace lo siguiente. Lo primero es parar el
timer y llamar a la función Medidas. Aquí se guardan los nuevos valores de
los ADs y los digitales cada 200ms, y se pide el valor de los USs cada
400ms (una de cada dos veces). Además, se aprovecha esta comunicación
Memoria. Algoritmos
78
para mandar a la TCS los nuevos valores de los motores, del servo y de los
digitales de salida. A continuación, se comprueba si la base está chocando
con algo o si hay un desnivel (por ejemplo escaleras) en cuyo caso se
ejecutará la función ChoqueBase (parece lógico poder tratar un desnivel
como un choque). En caso contrario, se llamará a ControlBrazo (ver
siguiente sección). Tras esta última función se mira si se está moviendo en
brazo y, si además ha habido nuevas medidas de ultrasonidos, se llamará
a la función Navegacion. En ella se decidirá que velocidad debe tener cada
una de las ruedas motrices. Así, si localiza un obstáculo, girará el robot
sobre sí mismo hasta que encuentre un hueco por el que ir recto.
Finalmente, se actualizan las salidas digitales en función de las
medidas recogidas, se sacan por la pantalla de usuario los nuevos datos, y
se vuelve a inicializar el timer a 200 ms.
Memoria. Algoritmos
79
3 Control del brazo mecánico
El algoritmo de control del brazo mecánico se ejecuta al llamar a la
función ControlBrazo, tal y como se acaba ver en la sección anterior. La
Figura 51 muestra el diagrama de flujo simplificado de este algoritmo.
Inicio
brazo no se mueve &&
base se ha movido más de 1s &&
base no cabe &&
brazo cabe
Si
estiro brazo
No
estiro brazo &&
(estirado al máximo posible ||
estirado lo que quería ||
choque punta brazo)
Si
contraigo brazo
No
No
contraigo brazo &&
antena recogida
Si
paro brazo
Fin
Figura 51: Diagrama de flujo del algoritmo de control del brazo mecánico
Lo que aquí se está haciendo es lo siguiente. Si el brazo no se
mueve, el robot se ha desplazado algo desde la última vez que se usó el
brazo (para no limpiar en el mismo sitio), la base no cabe (medida de AD0)
y el brazo sí (medida de AD1) se estira el brazo. En caso contrario el brazo
no se mueve salvo que ya lo estuviera haciendo. Así, si el brazo lo que
Memoria. Algoritmos
80
estaba haciendo era estirarse, lo seguirá haciendo hasta que ocurra una de
las siguientes opciones: que no se pueda estirar más (controlado por AD2),
que se haya estirado hasta la profundidad que se cree que tiene el hueco
(también controlado por AD2) o que la punta del brazo choque con algo
(sensor de contacto D5). Cuando suceda algo de esto, el brazo comenzará a
contraerse. Hay dos formas de detectar que el brazo se ha contraído del
todo y, por tanto, se debe de parar. Una es con el sensor infrarrojo AD2; y
la otra con el sensor de contacto D6. Inicialmente sólo se disponía del
sensor infrarrojo pero la precisión requerida era demasiado alta para las
prestaciones del sensor. Así que se decidió instalar un sensor digital a
modo de final de carrera.
Por último recordar que, como medida de seguridad, al pulsar el
botón “Start” el brazo se encontrará en estado de contraerse. Con ello se
consigue recoger el brazo en caso de que la última vez que se haya parado
se dejara estirado. Si por el contrario estaba ya recogido, no intentará
contraerse ya que antes de salir de la función comprobará que el sensor de
contacto de antena recogida (D6) está pulsado (y por tanto no llegará a
moverse).
Memoria. Resultados y experimentos
81
Capítulo 6 RESULTADOS Y EXPERIMENTOS
En este apartado se comentarán los experimentos con el robot
aspirador final realizado entre los dos proyectistas involucrados.
El conjunto de experimentos se divide en dos tipos de pruebas:
•
Pruebas de aspiración: incluye las pruebas de aspiración por la base
del robot aspirador y el brazo telescópico con servo-válvula y sin
servo-válvula. Se ha sometido a la boca de la base y a la boca del
brazo telescópico a diferentes cargas para comprobar la potencia de
aspiración efectiva. El protocolo de pruebas se comentará en el
primer apartado del capítulo.
•
Pruebas de navegación: incluye las pruebas de navegación general
del robot aspirador con todos sus elementos por una habitación del
hogar seleccionada. Las condiciones de la prueba se describirán en
el segundo apartado del capítulo.
Memoria. Resultados y experimentos
82
1 Protocolo de pruebas de aspiración
A continuación se describen las características de entorno más
relevantes para la realización de la prueba de aspiración.
Las pruebas de aspiración se dividen en dos grupos: sin servoválvula instalada; y con servo-válvula.
1.1 Pruebas sin servo-válvula
En las pruebas sin servo-válvula se eliminará del circuito de
aspiración del robot la servo-válvula de gestión de aspiración. La conexión
de la boca base de aspiración o de la boca del brazo telescópico se hará
directamente con la bolsa de aspiración. Este experimento tiene como
objetivo principal evaluar cualitativamente las pérdidas debidas a fugas
en el brazo telescópico y la potencia efectiva de aspiración en cada una de
las bocas de aspiración (base y brazo telescópico).
Las pruebas se realizaron con las siguientes condiciones:
1. La batería de 6V del motor aspirador se encontrará cargada
completamente con una tensión de flotación de aproximadamente
7,2V.
2. La temperatura ambiente rondará los 25ºC. Nunca superior a los
42ºC.
3. La prueba nunca durará más de 15 minutos de aspiración
continuada. Entre la preparación de cada carga de partículas y las
conexiones del circuito de aspiración, la aspiradora permanecerá
apagada. En caso de tener que repetir el experimento se dejará
recargando la batería de 6V un mínimo de 3 horas, hasta alcanzar
la tensión de flotación mencionada en el apartado 1.
4. Las cargas seleccionadas se irán acercando lentamente hacia la
toma de aspiración que se quiera analizar, pero nunca se
empujarán dentro de la toma en cuestión.
Memoria. Resultados y experimentos
83
5. Las partículas seleccionadas como cargas de prueba de aspiración
serán: un conjunto de finos papeles de celulosa cortados en
cuadrados, bolitas de papel de aluminio compactadas, garbanzos
caseros crudos, judías pintas caseras crudas, tornillos y tuercas.
Para el caso del brazo telescópico, por motivos de morfología de la
boca de aspiración, la carga será de una mezcla de sal fina y café
molido.
6. Terminada la aspiración de todos los elementos que configuren
una carga, (ejemplo: aspiración todas las bolitas de papel) se
apagará la aspiradora y se retiraran los elementos aspirados de la
bolsa de aspiración.
7. Cada prueba únicamente se considerará satisfactoria si se han
aspirado y encontrado en la bolsa una cantidad igual o superior al
90% de las partículas que configuraban la carga. Ejemplo: Si de 10
elementos aspiramos 10 y encontramos 9 en la bolsa la prueba se
dará por satisfactoria.
8. El robot aspirador se encontrará en posición completamente
horizontal y la bolsa de aspiración llevará la tapa inferior de la
bolsa cerrada.
9. Antes de comenzar el experimento se deberá comprobar que no
existan fugas, roturas u obstrucciones en el circuito de aspiración.
10. Para la realización de la prueba de aspiración de la boca del brazo
telescópico, éste debe encontrarse extendido hasta su longitud
máxima. Podrán realizarse hasta un máximo de dos pasadas del
brazo por encima de la carga para lograr la aspiración. La
velocidad de extensión y contracción del brazo será la misma que
la utilizada en la navegación general del robot.
11. Deben evitarse, en la medida de lo posible, la aparición de codos
en el circuito de aspiración.
Memoria. Resultados y experimentos
84
12. Podrán activarse los barredores laterales del robot aspirador para
facilitar la canalización de la carga hacia la boca base de aspiración.
13. Debe comprobarse que la toma de salida de aire del motor
aspirador se encuentra despejada de obstáculos o suciedad para la
realización de ambas pruebas (aspiración base y aspiración brazo
telescópico).
14. Para la prueba de aspiración base de este conjunto de pruebas,
conéctese directamente la bolsa de aspiración con la boca base de
aspiración mediante el tubo flexible.
15. Para la prueba de aspiración del brazo telescópico de este conjunto
de pruebas, conéctese directamente la bolsa de aspiración con el
primer segmento (mayor en diámetro) del brazo telescópico de
aspiración mediante el tubo flexible.
1.2 Pruebas con servo-válvula
En las pruebas con servo-válvula se incorpora el elemento “servoválvula de gestión de aspiración” en el conjunto robot aspirador. El
cometido de este conjunto de pruebas es la medida cualitativa de la
eficiencia de la servo-válvula en la aspiración de base y en la aspiración
por el brazo telescópico. A continuación se describen los requisitos que
debe reunir la prueba.
1. Se aplicará la normativa del apartado 1.1 “Pruebas sin servoválvula” exceptuando las normas 14 y 15.
2. La servo-válvula debe colocarse en la posición diseñada en el
robot aspirador para tal efecto. Su sujeción será firme a la
estructura del robot.
3. Se procederá al calibrado del conjunto servomotor y engranaje
reductor para lograr el cambio de la dirección de caudal base o
brazo telescópico.
Memoria. Resultados y experimentos
85
4. Antes de la conexión de los tubos flexibles de aspiración se
comprobará el correcto funcionamiento de la servo-válvula,
programando los giros con la unidad de control.
5. Se conectarán los tubos flexibles como se explicó en el capítulo
“Diseño e Implantación de la Servo-válvula de Gestión de
Aspiración” del otro proyecto, ver [6].
6. Antes
de
la
aspiración
de
las
partículas,
se
orientará
adecuadamente la servo-válvula hacia la base o el brazo
telescópico según corresponda.
Memoria. Resultados y experimentos
86
2 Protocolo de pruebas de navegación
A continuación se describen las características de entorno más
relevantes para la realización de la prueba de navegación. El objetivo de la
prueba es demostrar la eficacia de los algoritmos de navegación del robot
aspirador en distintos entornos. Se distinguen dos escenarios distintos
para la navegación:
•
Entorno estructurado: la finalidad de someter al robot aspirador a
un entorno estructurado es la búsqueda de medidas de superficie
efectiva de aspiración. En la actualidad todos los fabricantes de
robots aspiradores incluyen mediciones que relacionan la superficie
visitada por unidad de tiempo. La medida duele facilitarse en tanto
por cien. Ejemplo: 90% de eficacia en 6 metros cuadrados en un
tiempo de 30 minutos. Supone visitar 0.9*6=5.4 metros cuadrados
de superficie en 30 minutos. El entorno en esta situación suele ser
cuadrado, de dimensiones definidas, y libre de obstáculos.
•
Entorno desestructurado: la finalidad de someter al robot aspirador
a un entorno desestructurado es la valoración global y real del
comportamiento de la unidad. Los fabricantes de aspiradores
inteligentes, generalmente, abordan este apartado presentando
videos de demostración de las habilidades de sus productos. Para
este caso el entorno no debe estar definido en forma ni tamaño y
debe presentar obstáculos.
2.1 Definición del protocolo de pruebas para entorno estructurado
1. Las pruebas de navegación del robot aspirador en entorno
estructurado se realizarán en una superficie plana, cuadrada,
embaldosada, de área 25 metros cuadrados.
2. En cada baldosa se colocará una pegatina que se irá retirando
cuando el robot aspirador pase por encima de ella.
3. La duración total de la prueba será de 8 minutos y 30 segundos.
Memoria. Resultados y experimentos
87
4. El robot aspirador se situará el cualquier lugar de la superficie de
prueba.
5. El arranque del robot aspirador debe sincronizarse con un
cronómetro para la cuenta del tiempo de prueba.
6. Trascurrido el tiempo de prueba no se quitarán más pegatinas de
nuevas baldosas que pudiera visitar el robot. Se procederá al
apagado de éste.
7. Para el cálculo del rendimiento de la prueba se realizará la
siguiente operación: (Baldosas visitadas/baldosas totales)*100 en 8
minutos y 30 segundos.
8. La prueba se realizará con las dos baterías de 12V cargadas
completamente, alcanzando una tensión de flotación de 13.7V
9. Entre dos pruebas deben reponerse las pegatinas arrancadas en la
prueba anterior.
10. Durante la prueba no se debe modificar la trayectoria del robot
aspirador. La persona que arranque las pegatinas irá siempre
detrás del robot.
11. En ningún caso podrá tocarse el robot aspirador una vez
comenzada la prueba.
12. La utilización de la unidad aspiradora es opcional y no necesaria.
13. La aspiradora incorporará todos sus elementos para la realización
de la prueba. (Bocas de aspiración, baterías, carcasa exterior, etc.).
2.2 Definición del protocolo de pruebas para entorno desestructurado
1. Son aplicables a estas pruebas los puntos 3, 4, 5, 8, 11, 12 y 13 del
protocolo anterior.
2. Podrán utilizarse lugares con bajadas de escaleras y que cuenten
con obstáculos tipo sillas, mesas, camas, sillones, etc.
Memoria. Resultados y experimentos
88
3 Resultados pruebas de aspiración
En la tabla siguiente (Tabla 6) se muestra el resultado de las
pruebas de aspiración con y sin servo-válvula.
Prueba realizada con servo-válvula
Prueba realizada sin servo-válvula
Tipo Prueba
Toma
aspiración
Boca base
Boca brazo
telescópico
Boca base
Boca brazo
telescópico
Carga
aspiración
Resultado
Papelillos
Satisfactorio
Bolas papel de
aluminio
Satisfactorio
Garbanzos
Satisfactorio
Judías
Satisfactorio
Tornillos
Fallido
Papelillos
Satisfactorio
Mezcla de sal
fina y café
molido
Satisfactorio
Papelillos
Satisfactorio
Bolas papel de
aluminio
Satisfactorio
Garbanzos
Satisfactorio
Judías
Fallido
Tornillos
Fallido
Papelillos
Fallido
Mezcla de sal
fina y café
molido
Satisfactorio
Tabla 6: Resultados pruebas de aspiración
Memoria. Resultados y experimentos
89
Como puede comprobarse en la tabla anterior, la introducción de la
válvula se traduce en un empeoramiento de la capacidad de aspiración del
robot. Las cargas con cierto diámetro tienden a salir rebotadas en el caso
de la aspiración por la boca base y la utilización de la servo-válvula, al
chocar contra la base. En el caso de la utilización de la servo-válvula y la
toma de aspiración del brazo telescópico no se produce la succión de la
carga por pérdidas en la servo-válvula. Este hecho se debe a que las
pérdidas en la válvula sumadas a las pérdidas en el brazo telescópico son
considerables.
Se concluye que es imprescindible un buen diseño y construcción
de la servo-válvula para evitar pérdidas de carga importantes en le
circuito de aspiración. La potencia de aspiración es más que suficiente
para la aspiración independiente por brazo telescópico o base.
La no introducción de cargas voluminosas por la boca del brazo
telescópico queda justificada por el diseño de la misma. En este proyecto
se concibió el brazo telescópico como complemento a la limpieza realizada
por la toma base del robot aspirador. Es por ello que únicamente se
pretende aspirar polvo o partículas de poca masa presentes generalmente
en los lugares más inaccesibles del hogar.
Todos los intentos de aspiración de tornillos resultaron fallidos
debidos a su alargada forma. Al tratarse de un robot aspirador, el circuito
de aspiración debe estar confinado en un volumen muy reducido, la
aparición de codos o pequeños ángulos es inevitable. Las cargas más
alargadas, aunque no sean de gran masa, quedan atascadas en los codos
del tubo flexible de aspiración.
Memoria. Resultados y experimentos
90
4 Resultados pruebas de navegación
Se probaron dos tipos de algoritmos, el “algoritmo corto” y el
“algoritmo largo”, en el entorno estructurado. Para un entorno
desestructurado es aconsejable utilizar siempre el “algoritmo corto”.
El algoritmo tachado como “algoritmo corto” consiste en la
navegación del robot utilizando cada cierto tiempo una variable aleatoria,
que es tenida en cuenta cada poco tiempo, para la realización de giros a la
derecha del robot.
El algoritmo tachado como “algoritmo largo” consiste en la
navegación del robot utilizando cada cierto tiempo una variable aleatoria,
que es tenida en cuenta cada mucho tiempo, para la realización de giros a
la derecha del robot.
Para más información sobre las condiciones de la prueba consúltese
el apartado 2.1 “Definición del protocolo de pruebas para entorno
estructurado”.
La siguiente tabla (Tabla 7) muestra los resultados de las pruebas de
navegación en entorno estructurado, de los dos algoritmos.
PRUEBA NAVEGACIÓN CON ALGORITMO CORTO
Tiempo
de prueba
minutos
Número
total de
baldosas
Número
baldosas
visitadas
Número
baldosas
sin visitar
Velocidad
del robot
aspirador
Eficiencia
en %
8.5
121
87
34
9.52 cm/s
72
8.5
121
82
39
9.52 cm/s
67
PRUEBA NAVEGACIÓN CON ALGORITMO LARGO
Tiempo
de prueba
minutos
Número
total de
baldosas
Número
baldosas
visitadas
Número
baldosas
sin visitar
Velocidad
del robot
aspirador
Eficiencia
en %
8.5
121
112
9
9.52 cm/s
93
8.5
121
107
14
9.52 cm/s
88
Tabla 7: Resultados pruebas de navegación entorno estructurado
Memoria. Resultados y experimentos
91
Como puede apreciarse de la tabla anterior, el algoritmo largo es
más eficiente en entornos grandes estructurados. La eficiencia máxima
conseguida por el aspirador se sitúa en el 93% de superficie visitada en el
tiempo establecido. La velocidad media del robot fue de 9,52cm/s en
todas las pruebas. El tamaño de baldosa es de 32 x 33 cm lo que supone un
área total de la prueba de 32 x 33 x 121 =127.776 cm 2 que equivalen a una
superficie de aproximadamente 13 m 2 .
Una vez estudiados los resultados de la prueba de navegación en
entorno estructurado se pasará a comentar las pruebas en el entorno
desestructurado. Para más información sobre las condiciones de esta
prueba consúltese el apartado 2.2 “Definición del protocolo de pruebas
para entorno desestructurado”.
Los resultados de las pruebas realizadas son satisfactorios. El brazo
telescópico se introdujo correctamente en los lugares de reducido acceso.
El comportamiento general del aspirador fue el adecuado, el brazo
telescópico se mantuvo retraído durante la navegación y aspiración por la
base.
El robot aspirador reaccionó ante la posible caída por escaleras a
tiempo sin llegar a caer. El recorrido realizado por la habitación
seleccionada fue, aunque aleatorio, bastante eficaz y poco repetitivo.
Para la ampliación de los resultados de la prueba se recomienda
explorar el CD-ROM incluido en el proyecto. Dicho CD-ROM dispone de
varios videos en formato *.avi que corroboran lo dicho.
Memoria. Conclusiones
92
Capítulo 7 CONCLUSIONES
En este capítulo se van a comentar las conclusiones de este
proyecto, destacando lo que se ha hecho, qué objetivos se han cubierto y
cuáles son las aportaciones realizadas. Dado que en el capítulo 6 se han
analizado los resultados del proyecto en detalle, en el capítulo 7 se
analizarán desde un punto de vista más general los objetivos que se han
cumplido.
Memoria. Conclusiones
93
1 Conclusiones
Si se tienen en cuenta los objetivos que se propusieron al comienzo
del proyecto, se puede afirmar que se han cumplido todos, tanto los
básicos como los opcionales. A continuación se va a revisar cada uno de
los objetivos propuestos al inicio del proyecto justificando por qué se dice
que se han logrado.
Son definieron cuatro objetivos básicos y que se consideraban de
obligatorio cumplimiento para poder decir que realmente el proyecto
cumplía su cometido:
Objetivo 1. Conseguir que un robot limpie una superficie.
Los videos adjuntos al proyecto demuestran que el robot es capaz
de limpiar una superficie razonablemente bien. Aún así, tal y como era de
esperar, la capacidad de aspiración del robot es bastante menor que la de
las aspiradoras convencionales. Esto se debe a que el motor de aspiración
usado va a 6V mientras que uno normal está enchufado a la tensión de
casa que es de 220V.
El único pero sería que la capacidad de aspiración del brazo no es
muy alta. Las causas principales de ello son las pérdidas producidas por la
servo-válvula y por los espacios que quedan en los tramos de unión de los
distintos segmentos del tubo telescópico. Con los recursos disponibles no
se estaba en disposición de optimizar estos elementos así que se puede
decir que se hizo todo lo que se pudo. Se recuerda que es un primer
prototipo cuya finalidad es demostrar si la idea es viable o no, a lo cual
habría que responder que sí.
Objetivo 2. Realizar un algoritmo de navegación
Se pedía que el robot fuera capaz de moverse por un entorno
desconocido sin chocar con los obstáculos (si llegara a colisionar con algo,
debería de ser capaz de detectar el choque y actuar en consecuencia). No
Memoria. Conclusiones
94
era necesario que la navegación fuera inteligente (se podía pasar varias
veces por el mismo sitio). Basándose en estas premisas se elaboraron los
distintos algoritmos de navegación que cumplen con el objetivo. Al igual
que en el caso anterior, hay videos que demuestran lo dicho.
Objetivo 3. Construir un brazo mecánico.
Este objetivo es también la aportación más importante realizada al
proyecto. Ante el problema de solventar la falta de accesibilidad para
limpiar en ciertos sitios se decidió que lo mejor era dotar a la base de la
aspiradora de un brazo mecánico. El problema fue propuesto por el
director del proyecto pero la solución del brazo la aportó el propio
proyectista. Sin duda alguna se puede decir que esta es la gran innovación
del proyecto.
En capítulos anteriores se ha visto el proceso seguido para su
construcción y fotos del mismo quedando demostrado que el brazo se
construyó.
Objetivo 4. Conseguir que haya una coordinación perfecta entre brazo
mecánico y base de la aspiradora.
Una vez fabricado el brazo y unido a la base del robot, se pedía que
hubiera una coordinación perfecta entre ambos. Para se usaron los
sensores que se creyeron oportunos y se realizó un algoritmo para su
control. Los vídeos adjuntos permiten ver que la coordinación entre base y
brazo es perfecta. El brazo no se mueve mientras la base se mueve, y
viceversa.
Objetivo 5. Documentación.
El proyecto debía quedar perfectamente documentado por dos
motivos: que cualquiera que estuviera interesado en lo que aquí se ha
hecho tenga toda la información que necesite; y que puesto que se trata de
Memoria. Conclusiones
95
un proyecto que se continuará en los próximos años, tiene que servir de
base para los futuros desarrollos.
Se considera este objetivo cumplido con la realización del presente
documento donde se ha hecho un gran esfuerzo por dejar todo bien claro.
De los dos objetivos opcionales propuestos, que son considerados
extras del proyecto, decir que finalmente dio tiempo a realizarlos y que
eran:
Objetivo opcional 1. Desarrollar un algoritmo de actuación para nivel
de batería bajo.
El otro proyecto se encarga de la parte del hardware. Aquí se hizo
el software que consiste en que cuando el nivel de la batería del motor de
aspiración sea inferior a un cierto valor, se recibe una señal y la aspiradora
deja de moverse, de aspirar y enciende una alarma tanto acústica como
lumínica. El código se adjunta en un CD.
Objetivo opcional 2. Detección de escaleras y desarrollo del algoritmo
correspondiente.
Esto es algo que había que hacer en este proyecto o en futuras
mejoras. No se puede permitir que el robot corra el riesgo de que ante un
desnivel se caiga y se rompa.
Como se puede ver en los vídeos del CD, el robot detecta las
escaleras y da marcha atrás alejándose así de ella. El código del algoritmo
también se adjunta en el CD.
Memoria. Futuros desarrollos
96
Capítulo 8 FUTUROS DESARROLLOS
En este capítulo se van a analizar cuestiones relacionadas con las
mejoras que se podrían aplicar al proyecto en el futuro, aunque no
formaran parte de los objetivos iniciales del mismo. Como este proyecto
está directamente relacionado con el que está desarrollando otro
compañero, se van a mencionar todas las posibles mejoras pues se podrían
meter en ambos proyectos.
Memoria. Futuros desarrollos
97
1 Mejoras aplicables al prototipo
A continuación, lo que se va a hacer es ir enumerando las distintas
mejoras que se creen convenientes aplicar al prototipo actual. El objetivo
final que se tiene en mente es conseguir un robot aspirador que pueda
tener una salida comercial y pueda competir con los productos que
actualmente existen en el mercado. Dichas mejoras serían:
1. Optimizar al máximo la servo-válvula para que no hay pérdidas
de aspiración. Además, la válvula actual tiene unos orificios de
menor diámetro que el resto de los tubos de aspiración por lo
que hay cosas que se absorben que se quedan atrancadas ahí.
Abría que mejorar también eso.
2. Optimizar las uniones del tubo telescópico. Entre tramo y tramo
se pierde aire por las uniones pero es difícil mejorar esto. Hay
que llegar a un compromiso entre rozamiento entre tubos y
pérdidas admisibles.
3. Aumentar la longitud del tubo telescópico y optimizar el
diámetro. Los tubos actuales son de PVC con un grosor
considerable cada uno. Si se hubiera puesto otro más por dentro
habría quedado una sección muy pequeña y no cabría casi nada.
Lo suyo sería tener muchos segmentos de poca longitud pero de
espesor mínimo.
4. Buscar un sistema alternativo para contraer y estirar el tubo
telescópico. El motor de antena que hay es muy grande, ocupa
mucho y pesa demasiado. Además es la causante de que el robot
tenga un diámetro tan grande y también, en parte, de su altura.
Una posible solución podría ser colocar una rueda motora que se
mueva con el brazo. Inicialmente se descartó esta idea porque era
difícil hacer que el cable que alimentaría al motor se contrajera y
estirara bien. Pero finalmente se consiguió pues hubo que
Memoria. Futuros desarrollos
98
ingeniárselas por los sensores de contacto de la punta que siguen
el mismo principio. No hubo tiempo para probar si lo de la rueda
resultaba mejor.
5. Probar nuevas bocas de aspiración tanto para la base como para
el brazo.
6. Perfeccionar los distintos algoritmos de navegación.
7. Poner un sensor de nivel de llenado de la bolsa de suciedad que
avise de cuando hay que cambiarla.
8. Hacer un cargador para recargar las baterías del robot.
Actualmente se están cargando con fuente de alimentación. Y
esto no es bueno para la vida útil de las baterías.
9. Conseguir que el robot acuda solo al cargador cuando su nivel de
batería se bajo. Una vez recargado deberá volver a sus tareas de
limpieza sin que el dueño del robot tenga que hacer nada.
10. Dotar al robot de un sensor de líquidos.
11. Hacer posible manejar el robot desde Internet. Hay proyectos
dedicados a esto pero para otros aparatos por lo que esto no
supondrá ningún problema importante.
12. Conseguir que el robot autónomamente sepa si se le ha roto
alguna pieza y avise al servicio técnico de la pieza que debe ser
reparada. Esto es algo más complicado pero ya hay robots
aspiradores que pueden hacerlo.
Memoria. Bibliografía
99
BIBLIOGRAFÍA
[2]
Brooks R.A., “Intelligence without reason”. Proceedings of the 1991
International Joint Conference on Artificial Intelligence, pp. 569-595,
Sydney, Australia, 1991.
[3]
Página Web de iRobot: www.irobot.com
[4]
Dyson, J., “Against the Odds: An Autobiography”. ISBN 0-7528-0981-4. 1997.
[5]
Página Web de Dyson: www.dyson.com
[6]
Página Web de Kärcher: www.karcher.es
[7]
Cerezo, M., “Aspirador inteligente para la limpieza automática de suelos:
Diseño electromecánico y electrónico”. Biblioteca de Proyectos Universidad
Pontificia Comillas de Madrid, Escuela Técnica Superior de Ingeniería
(ICAI). Madrid, Junio 2007.
[8]
Sánchez, A., “Diseño de robots móviles”. Libro autoeditado. ISBN 84-6890474-0. 2004.
[9]
Sánchez, A., Meléndez, R., “Robots basados en PDA”. Libro autoeditado.
ISBN 84-689-0471-6. 2004.
[10]
Página Web Distribuidor Oficial de Devantech Ltd.:
www.robot-electronics.co.uk
[11]
Página Web de Sharp de componentes electrónicos:
http://sharp-world.com/products/device/index.html
[12]
Página Web de Microchip: www.microchip.com
Estudio Económico
Parte II ESTUDIO ECONÓMICO
100
Estudio Económico
101
1 Introducción
Esta parte tiene como propósito explicar la viabilidad, rentabilidad
y fiabilidad del proyecto que se ha llevado a cabo, así como comentar qué
vistas de futuro tiene. Es decir, lo que aquí se pretende es justificar la
realización del proyecto.
2 Estudio económico
La finalidad de este proyecto era crear un primer prototipo de
aspiradora automática que sirviera de base para futuros trabajos. El
objetivo final es desarrollar una aspiradora que realmente pueda competir
con las que actualmente existen en el mercado.
A pesar de que se partía de cero, sólo con este primer prototipo se
ha demostrado que es posible llegar a este objetivo. Esta afirmación se
basa en los buenos resultados que se han obtenido y que se han recogido a
lo largo de este documento. Por tanto, si en los próximos años se aúnan
esfuerzos en optimizar cada una de las partes de que consta el aspirador,
se puede estar hablando de un producto final que ciertamente esté a la
altura de sus rivales.
A esto último hay que añadir la singularidad que presenta este
robot: su brazo mecánico que le permite acceder y limpiar en sitios donde
otros no pueden. Puesto que, al menos a día de hoy, no hay ningún
aspirador dotado con algo que sea de este estilo, éste es un factor de
diferenciación que, desde el punto de vista del cliente, puede resultar muy
atractivo. Habría que hacer un estudio de mercado y ver si el consumidor
valora o no esta ventaja.
Tecnológicamente se está hablando de un producto no muy
complejo. Esto es algo que se ha buscado ya que se quiere un producto de
calidad y fiable, pero del menor coste posible. Por ello, a la hora de
seleccionar el hardware que se iba a utilizar, se ha mirado la relación
Estudio Económico
102
calidad/precio. Es muy importante que el precio no sea muy elevado ya
que aquí si que no hay que hacer ningún estudio para saber que esto sí
que es importante para el cliente.
En cuanto a las previsiones de futuro que se auguran para un
producto de esta índole, decir que son realmente buenas. Actualmente son
muy pocas las casas que cuentan con una aspiradora automática lo que lo
convierte en un mercado muy atractivo que aún está por explotar.
Unido a esto, diariamente se pueden ver en los medios de
comunicación noticias relacionadas con la domótica y su inminente
implantación en las casas. Cuando en un futuro no muy lejano se empiece
a dotar a las casas de un sistema domótico, la demanda de aspiradoras
automáticas experimentará una gran subida. Todo el mundo dejará de
utilizar las aspiradoras manuales y querrá tener una aspiradora que, o
limpie sola, o la pueda manejar por control remoto (o ambas). En resumen,
se está hablando de un sector en el que si se está interesado en entrar, éste
es el mejor momento de hacerlo.
Manual de Usuario
Parte III MANUAL DE USUARIO
103
Manual de Usuario
104
www.upco.es
105
ÍNDICE DEL MANUAL
Instrucciones importantes de seguridad………………………3
Descripción del producto………….……….……………...…….……6
Carga y recambio de las baterías………..……………………...…8
Puesta en marcha, parada y pausa………………………….........9
Guía de problemas y soluciones………………………………….12
Especificaciones técnicas……………………………………………..14
106
Instrucciones Importantes de Seguridad
Peligro
Advertencia
Precaución
INSTRUCCIONES GENERALES DE SEGURIDAD
Campos de utilización
•
Utilice el aspirador para limpiar sólo suelos domésticos comunes,
incluyendo madera, baldosas, linóleo, moquetas de pelo corto y
medio.
•
No utilice el aspirador para limpiar:
-
Suelos mojados (incluyendo por líquidos inflamables o
combustibles).
-
Baños, cocinas u otras habitaciones húmedas.
-
Escaleras.
-
Mesas y estanterías.
-
Objetos ardiendo o humeando (cigarrillos, cerillas, cenizas
calientes).
-
Habitaciones sin vigilar con chimeneas abiertas o sistemas de
la calefacción de fuego vivo (braseros).
Niños, animales y otras consideraciones
•
El robot aspirador no es un juguete. Vigile los niños pequeños y los
animales de compañía para que no jueguen con el aparato.
•
No se siente ni apoye nada sobre el robot. Podría romperse.
ANTES DE LIMPIAR
Riesgo de caída
•
El robot no puede detectar desniveles inferiores a 10 centímetros.
Por tanto, puede caerse por una escalera o de una terraza si el
107
desnivel es pequeño. Por consiguiente, asegúrese que no puede
caerse por ningún sitio.
Objetos en el suelo
•
Antes de utilizar la unidad, recoja los objetos como ropa, papeles
sueltos, manteles, telas, cables, y objetos frágiles. Podrían impedir
el correcto funcionamiento del robot.
•
Retire también los objetos pequeños que puedan ser aspirados y
que no quiera que esto suceda (monedas, billetes, fichas, etc.).
Otras consideraciones
•
Antes de limpiar, asegúrese de que los cepillos están en buenas
condiciones.
•
Mire que la bolsa de basura del robot no esté llena y la tapa esté
cerrada.
•
No maneje el robot si tiene las manos húmedas
DURANTE LA LIMPIEZA
Riesgo de choque
•
Para evitar tropezones con el robot, asegúrese de que todas las
personas de la vivienda sepan que está funcionando.
Líquidos
•
No deje que el robot limpie líquidos. Esto podría dañar seriamente
el aspirador.
DESPUÉS DE LIMPIAR
Limpieza del robot
•
Limpie regularmente la superficie los sensores (especialmente los
de desnivel) con un paño limpio y suave de algodón que no esté
húmedo.
108
•
Para la limpieza del resto del robot use un paño limpio y seco.
•
El brazo telescópico precisa de un mantenimiento especial. Cada
aproximadamente 600h de funcionamiento las uniones entre los
segmentos telescópicos deben ser engrasadas con aceite multiuso.
•
Mantenga las bocas de aspiración de base y brazo telescópico
limpias y libres de suciedades pegajosas.
Vaciado de la bolsa de suciedad
•
Vacíe con cuidado el depósito de suciedad. El polvo recogido en la
unidad puede causar reacciones alérgicas a las personas sensibles.
•
Es posible que el robot aspire veneno para ratas, insectos, etc. Por
razones de seguridad, vacíe el polvo en una bolsa de plástico,
ciérrela y tírela a la basura.
•
Si lo considera conveniente, utilice guantes de fibra de látex para el
vaciado de la bolsa de aspiración.
Baterías
•
No tire las pilas agotadas en cualquier sitio. Envíelas al sitio
indicado para reciclarlas. Infórmese en su municipio de los lugares
acondicionados para el reciclaje de baterías. No olvide que se trata
de un producto muy contaminante para el medioambiente.
•
Bajo ninguna circunstancia caliente o exponga al fuego las baterías.
Pueden llegar a explotar.
ALMACENAJE
Lugar de almacenaje
•
Guarde el robot y sus accesorios en un lugar frío, ventilado y seco.
•
Asegúrese que ningún menor pueda ponerla en funcionamiento
accidentalmente.
109
Descripción del Producto
110
111
Carga y Recambio de las Baterías
1.
2.
Cargue el robot durante unas cuatro horas antes de la primera
utilización.
La unidad robot prototipo no cuenta con base y algoritmo de
búsqueda de carga automática. Debe usted recargar el aspirador
cuando trascurran aproximadamente 20 minutos de uso o se
active la alarma acústica interna.
No realice el proceso de carga si no cuenta con los
conocimientos necesarios. Pida ayuda o consejo a un
experto
3.
El robot aspirador cuenta con baterías de 12V y 6V. La
recomendación del fabricante es cargar las baterías a 13.8V y
7.5V de tensión de flotación respectivamente.
4.
Para la carga de las baterías de 12V conecte el polo positivo del
cargador al hueco banana hembra y el polo negativo al hueco
banana hembra negativo de la placa de alimentación.
5.
La carga de la batería de 6V debe realizarse conectando unos
conectores tipo cocodrilo a las bornas de la batería. Recuerde
conectar el polo positivo (+) con el positivo del cargador y el
polo negativo (-) al negativo del cargador.
6.
La corriente de carga no debe superar los 200mA en la carga de
las baterías.
7.
Sea cuidadoso al desconectar las bananas de las baterías y evite
el contacto entre las bornas de signo opuesto.
8.
A los 2 años de funcionamiento y como mantenimiento
preventivo deposite las baterías usadas en un lugar destinado
especialmente a tal efecto.
112
Puesta en Marcha, Parada y Pausa
PUESTA EN MARCHA
Para empezar a utilizar su aspirador siga los siguientes pasos en el orden
que se indican. ¡OJO! En caso de alterar el orden el robot no funcionará
como debiera hacerlo:
1. Abra la tapa superior, inserte la PDA, y conéctela al cable que hay.
A continuación pulse el botón que indica la figura para encenderla.
2. Encienda la aspiradora pulsando los dos interruptores que muestra
la siguiente figura. Las dos luces deberán encenderse.
3. Ejecute el programa “Aspiradora”
113
4. Pulse el botón “Start”. Aparecerá un punto verde en la pantalla de
la PDA. Si fuera rojo, consulte el apartado “Guía de Problemas y
Soluciones” de este manual.
5. Baje la tapa superior.
PARAR EL ROBOT
El robot dejará de moverse cuando se agote la batería del motor de
aspiración y empezará a sonar una alarma acústica. Tanto para este caso
como si se quiere parar antes el robot, los pasos que se deben seguir son:
1. Abra la tapa superior y pulse el botón “Stop” de la PDA. Aparecerá
un punto verde en la pantalla de la PDA. Si fuera rojo, consulte el
apartado “Guía de Problemas y Soluciones” de este manual.
2. Pulse de nuevo los dos interruptores que pulsó para encenderlo.
Las dos luces deberán apagarse. Y la alarma dejará de sonar (en
caso de que lo hiciera por batería baja).
3. Apague la PDA, pulsando de nuevo el botón que usó para
encenderla. Extráigala si quiere (no es necesario).
114
PAUSA
Puede ser que quiera parar un momento el robot y a continuación volverlo
a poner en marcha. En tal caso de hacer lo siguiente:
1. Abra la tapa superior y pulse el botón “Stop” de la PDA. Aparecerá
un punto verde en la pantalla de la PDA. Si fuera rojo, consulte el
apartado “Guía de Problemas y Soluciones” de este manual.
2. Pulse el botón “Start” cuando desee que vuelva a limpiar, y baje la
tapa.
115
Guía de Problemas y Soluciones
Si tiene problemas con su aspirador, lo más probable es que pueda
solucionarlo ayudándose de la siguiente tabla. Si tiene dudas NO TOQUE
NADA y consulte.
Problema
Solución
No se encienden las Compruebe que las baterías están conectadas,
luces de encendido del cargadas y que no se ha soltado ningún cable
aspirador.
de alimentación. Si tiene dudas no toque nada
y consulte.
Al pulsar Start el punto Pulse el interruptor de la luz blanca (no debe
de la PDA es rojo.
lucir) para que el robot no se mueva. Salga del
programa Aspiradora y vuelva a entrar. Si
persiste el problema, compruebe que la luz
amarilla de encendido de la aspiradora luce. Si
sigue sin ir, compruebe que la PDA está
conectada a su cable y reiníciela. Como última
medida quite la carcasa y reinicie la TCS.
Cuando el punto sea verde, pulse en
interruptor de la luz blanca (tiene que lucir).
Al pulsar Stop el punto El robot no se parará. Tendrá que pulsar los 2
de la PDA es rojo.
interruptores de alimentación para apagarla. A
continuación pulse sólo el de la luz amarilla
(debe lucir) y compruebe que al darle a Start el
punto es verde. Entonces pulse el interruptor
de la luz blanca (debe lucir). En caso de que
siga rojo leer la solución al problema anterior.
La alarma acústica está Debe apagar el aspirador y proceder a cargar
sonando.
las baterías. Al apagar el aspirador la alarma
dejará de sonar.
El robot no aspirada o Vacíe la bolsa si estuviera llena. Compruebe
lo hace muy mal.
que no hay nada obstruido en los tubos de
aspiración. Limpie el filtro del motor.
La PDA no se enciende. Reiníciela. Si sigue sin encenderse es que se ha
acabado su batería. Cárguela.
El robot no detecta las Limpie los sensores de desnivel como se dice
escaleras.
en este manual. Y compruebe si en otras
escaleras pasa lo mismo. Podría ser que el
desnivel fuera muy pequeño y no se detecte.
El robot se choca Limpie los sensores tal y como se dice en el
continuamente.
anual.
116
Si su problema no está entre éstos no intente ninguna solución si no está
seguro de saber lo que hace y consulte a su proveedor.
Puede obtener información en www.upcomillas.es
117
Especificaciones Técnicas
Modelo
Diámetro
Altura
Peso en vacío
Peso máximo en carga
Potencia aspiración
Velocidad
Ruido
Batería motor aspiración
Tiempo de carga bat. Mot. Asp.
Autonomía bat. Mot. Asp.
Baterías motores ruedas
Tiempo de carga bat. Mot. Rued.
Autonomía bat. Mot. Rued.
Filtro de polvo
Capacidad bolsa
Electrónica controlada por
Sensores desnivel
Sensores proximidad
Sensores control brazo
Material de la carcasa
Velocidad máxima del brazo
Ruedas motrices
Distancia al suelo desde
plataforma base
Capacidad para aspirar suelos
húmedos
Material de la bolsa
Temperatura de uso
Accesorios
Avisador de bolsa llena
Señalización de funcionamiento
Tiempo en limpiar 15m2
ELEFENTA 001 – Prototipo
37 cm
27 cm
8.5 Kg
10 Kg
60W
9.52 cm/s
73 dB
Plomo-Ácido 6V 4.8 Amp/h
3h
20 min
2x Plomo-Ácido 12V 1.4 Amp/h
2.5 h
30 min
Esponja polvo normal
0.3 L
TCS-2
SHARP mod.GP2D12
Devantech Ltd. mod. SRF04
SHARP mod.GP2D12
Plástico
15 cm/s
2x 7.5 cm diámetro
13 cm
No cuenta con capacidad para
aspirar suelos húmedos
Plástico
10º- 50º
No disponible
Nivel de suciedad visible a través
de bolsa transparente
SÍ, 10 luces LED para condiciones
de trabajo nocturnas
8.5 min
Guía de manejo del driver de la TCS-2
118
Parte IV GUÍA DE MANEJO DEL
DRIVER DE LA
TCS-2
Guía de manejo del driver de la TCS-2
119
1 Introducción
Esta guía tiene como objetivo describir cómo se maneja el driver
que permite realizar programas en una PDA para controlar a la TCS-2.
Un driver no es más que un objeto que tiene un conjunto de
funciones que permiten manejar un dispositivo y un conjunto de variables
que permiten monitorizar el estado del mismo, sin necesidad de conocer
cómo está hecho. Lo único que se necesita conocer es el conjunto de
funciones del driver que son interfaz con el usuario.
2 Nociones básicas del driver
La clase que maneja la TCS se llama Comm y se encuentra declarada
en el fichero Comm_sr.h y definida en el fichero Comm_sr.cpp. Esta clase
necesita el driver del puerto serie para poder funcionar, que es el medio de
comunicación que el PC o la PDA tiene con la TCS. Este driver se
encuentra en los ficheros Serial.h y Serial.cpp.
Para entender el funcionamiento del driver es necesario entender
qué es una comunicación entre el PC/PDA con la TCS. Una comunicación
consiste de una petición de ejecución de comandos a la TCS y de una
respuesta por parte de la TCS a esa petición; es decir, una comunicación
implica el trasiego de dos flujos de datos: uno del PC/PDA a la TCS y otro
en sentido contrario. Por ejemplo, una comunicación podría consistir en la
petición a la TCS de la ejecución de dos comandos: que mueva los motores
a una determinada velocidad y que le devuelva todas las medidas
analógicas que tenga en ese momento; como contrapartida la TCS
respondería con los valores de las medidas analógicas pedidas. Se pueden
realizar tantas comunicaciones con la TCS como se quieran, de hecho el
ejemplo anterior podría haberse llevado a cabo con dos comunicaciones en
vez de con una, simplemente enviando un sólo comando en cada una de
las comunicaciones. En cualquier caso, en este esquema de funcionamiento
es la PDA la que actúa como maestro; es decir, toma la iniciativa en las
Guía de manejo del driver de la TCS-2
120
comunicaciones, y la TCS actúa como esclavo; es decir, responde a la PDA
cuando esta se lo pide únicamente.
3 Variables y funciones del driver
A continuación se describen las variables del driver que puede
utilizar el programador cuando maneja el driver:
• interrupcion: vector de cuatro elementos que informa de los
datos no esperados que se reciben en una comunicación con la
TCS; es decir, es información que no se ha pedido a la TCS y que
en cambio la TCS decide mandar para informar al robot de
eventos que ocurren y que debe conocer. Estos eventos se llaman
interrupciones, aunque no lo son propiamente, porque surgen
sin esperarse de la misma forma que las interrupciones, lo que
lleva a tener que programar líneas de código que atiendan estos
eventos. Cada uno de los elementos del vector tiene dos posibles
estados: 1 si hay interrupción y 0 si no la hay. Las posibles
fuentes de interrupción son:
información
o interrupcion[1]:
recibida
por
radiofrecuencia. El PC/PDA no sabe cuándo puede recibir
información por radio. Por ello cuando la TCS recibe
información por radio, se lo comunica a la PDA. Para la
recepción de mensajes por radio se usa el elemento 1 del
vector interrupcion.
o interrupcion[2]:
medidas de
los ultrasonidos.
Los
sensores de ultrasonidos no pueden estar midiendo de
continuo ya que el transductor se desgasta con el uso. Esto
lleva a realizar medidas de forma no discriminada y bajo
petición. Dado que un sensor de ultrasonido puede tardar
hasta 20ms en hacer una medida, no se puede permitir que
cada vez que la PDA pida medidas de ultrasonido tenga que
Guía de manejo del driver de la TCS-2
121
esperar a que se obtenga el dato ya que estaría perdiendo un
tiempo en el cual podría estar haciendo otra cosa y le podría
llevar a que el robot se chocara. Por ello, se ha optado por
gestionar los ultrasonidos como una interrupción; es decir, en
una comunicación con la TCS, la PDA pide que se hagan
ciertas medidas de ultrasonido, pero no espera a que se hagan,
sino que sigue realizando comunicaciones para pedir otro tipo
de medidas a la TCS o para actuar. Cuando la TCS ha
terminado de hacer las medidas, introduce los resultados en
una comunicación con la PDA sin que ésta sepa a priori en qué
comunicación la TCS le va a enviar las medidas. Para los
sensores de ultrasonido se usa el elemento 2 del vector
interrupción.
o interrupcion[3]: medidas de sensores digitales. Este tipo
de sensores miden 0 o 1. Como sólo existen dos posibles
estados este tipo de sensores ofrecen medidas muy estáticas ya
que cambian poco en el tiempo. Para evitar trasiego de
información innecesaria en la comunicación entre el PC/PDA
y la TCS, la TCS enviará a la PDA las medidas de los sensores
digitales cuando alguno de estos cambie de estado. Por
ejemplo, este tipo de sensores se suele usar para saber si el
robot se ha chocado; en ese caso la TCS informará al robot sólo
cuando se acabe de chocar o cuando deje de hacerlo. Para los
sensores
digitales
se
usa
el
elemento
3
del
vector
interrupcion.
• compruebaPing: variable de dos estados que indica si al
mandar el comando “ping” (comando que se usa comúnmente
en comunicaciones para determinar si un dispositivo está vivo:
¿estas ahí?) a la TCS, éste ha respondido (compruebaPing==1)
o no (compruebaPing==0). A veces se usa para establecer una
comunicación con la TCS, únicamente para saber si existe algún
Guía de manejo del driver de la TCS-2
122
evento que deba ser recibido; ya que como se comentó en la
sección la TCS sólo puede mandar eventos si la PDA a tomado la
iniciativa de abrir una comunicación.
• RFrespuesta: variable de dos estados que indica si el último
mensaje
de
radiofrecuencia
espera
una
respuesta
(RFrespuesta==1) o no (RFrespuesta==0).
A continuación se describen las funciones del driver que permiten
controlar y establecer una comunicación entre la PDA y la TCS:
1. inicio(): función que se debe llamar al principio de cualquier
comunicación entre la PDA y la TCS.
2. comunica(): establece la comunicación de la PDA con la TCS,
enviando todas las ordenes a la TCS y recibiendo la respuesta de
la misma. En caso de que surja algún problema durante la
comunicación devolverá un 0 y si no un 1.
A continuación se describen las funciones interfaz del driver que
permiten enviar órdenes para manejar la TCS:
1. configuracion(número
de
ADs,
número
de
USs,
número de MOTaux): función que indica a la TCS cómo se
configuran los pines de conexión con el exterior en función del
número de sensores de cada tipo que se le manden en esta
función. También indica el número de motores auxiliares que
hay: si en total hay 0, 1 o 2 motores se pondrá un 0 (los pines del
motor 0 quedarán configurados como los del servo 0 y los del
motor 1 como los del servo 1; si hay 3 se pondrá un 1 (el motor 3
será el motor auxiliar y los pines del motor 4 serán los del
servo1); y si hay 4 un 2 (no hay servo 0 ni servo 1).
2. desactiva_I2C(): función que debe ser llamada al inicio del
programa para no tener problemas con las interrupciones.
Guía de manejo del driver de la TCS-2
123
3. leerAD(sensor): función que pide la medida de un sensor
analógico que se manda como parámetro. El parámetro sensor va
de 1 hasta el número de sensores analógicos que se hayan
configurado.
4. leerADs(): función que pide todas las medidas de los sensores
analógicos que se hayan configurado.
5. pedirUS(sensor): función que pide la medida de un sensor de
ultrasonido que se manda como parámetro. El parámetro sensor
va de 1 hasta el número de sensores de ultrasonidos que se
hayan configurado.
6. pedirUSs(): función que pide todas las medidas de los
sensores de ultrasonido que se hayan configurado.
7. activarMotores(Byte
de
configuración): activa los
motores. Si el byte de configuración es 1 se activan el motor 0 y el
motor 1; si es 2 se activan el motor 2 y el motor 3; si es 3 se
activan todos; y si es 0 se desactivan todos. Para que un motor se
ponga en funcionamiento es necesario haberlo activado.
8. periodoMotores(Periodo): indica a la TCS el periodo de la
señal PWM que va a utilizar para controlar los motores 0 y 1. El
motor 2 y el motor 3 tienen el periodo definido a 70. El
parámetro tiene que ser un número que esté comprendido entre
70 y 255. Cuanto mayor sea el valor, mayor será el periodo.
9. DcMotores(Dc motor0, Dc motor1): fija el valor de los
anchos del pulso de la señales PWM que controlan los motores 0
y 1. Variando el ancho del pulso del PWM se puede variar la
velocidad de los motores. El parámetro tiene que ser un número
que esté comprendido entre 0 y el valor del periodo de control de
los motores. En concreto el valor en el que se encuentra parado el
motor es cuando coincide con la mitad del periodo de control de
Guía de manejo del driver de la TCS-2
124
los motores (por ejemplo 100 en caso de que el periodo sea 200);
el valor en que el motor gira a la máxima velocidad en sentido
negativo es 0; el valor en el que el motor gira a la máxima
velocidad en sentido positivo es el que coincide con el valor del
periodo de control; y valores intermedios hacen que el motor se
mueva a una velocidad que se puede obtener interpolando entre
los valores anteriormente citados.
10. DcMotoresAuxiliares(Dc motor2, Dc motor3): misma
explicación que en el caso anterior pero para los motores extras
(en caso de que haya más de 2 motores). Recordar que su periodo
estaba fijo a 70, es decir, para que no se muevan habrá que poner
de valor 35. Si solo hay un motor auxiliar será el motor 2 y por
tanto el valor que se ponga en motor 3 se ignorará.
11. DcServos(Dcservo0,Dcservo1,Dcservo2,Dcservo3,Dc
servo4,Dcservo5): fija el valor de los anchos del pulso de la
señales PWM que controlan los servos. Variando el ancho del
pulso se puede variar el ángulo de giro de cada servo. El valor
del ancho del pulso puede variar entre 7 y 43. A día de hoy, el
servo 4 no funciona bien. Un valor de 7 hace que el servo se
encuentre posicionado a -90º, en cambio un valor de 43 hace que
el servo se encuentre posicionado a 90º. Valores intermedios
hacen que el servo se posicione en un ángulo que se puede
obtener interpolando entre los valores anteriormente citados.
12. Ping(): función que sirve para determinar si la TCS se
encuentra en funcionamiento y que existe comunicación entre la
PDA y la TCS.
13. escribeRadio(longitud_mensaje,mensaje,espera_re
spuesta): función que indica a la TCS que tiene que enviar un
mensaje por radio. El parámetro longitud_mensaje indica el
número de bytes que se quieren transmitir, el parámetro
Guía de manejo del driver de la TCS-2
125
mensaje representa el mensaje a transmitir y el parámetro
espera_respuesta indica si la PDA espera una respuesta de
aquel a quien envía el mensaje.
14. configuraIO(config_dig): función que indica a la TCS
como se configuran los pines digitales. Solo se pueden configurar
como salidas los digitales D0, D1, D2 y D3. Por tanto, solo valen
los 4 bits más bajos de config_dig. D0 es el bit más bajo, luego
va D1 y así sucesivamente. Si el bit correspondiente a un pin se
pone a 1 será una entrada digital; si es 0 será una salida. Por
defecto son todo entradas. Si configuro un bit como salida sacará
el valor que tuviera la última vez que se configuro como salida.
Para cambiar este valor usar la siguiente función.
15. escribeDigital(valor): función que indica a la TCS el
valor que tienen las salidas digitales. Como solo se pueden
configurar como salidas los digitales D0, D1, D2 y D3, solo valen
los 4 bits más bajos de valor. D0 es el bit más bajo, luego va D1
y así sucesivamente. Si el bit correspondiente a un pin se pone a
1 su salida tendrá 5V; si es 0 su salida tendrá 0V.
16. leerEncoders()
17. debug()
Funciones para leer las medidas de los sensores:
1. valorADs(): devuelve un vector de 10 elementos (10 bytes) con
todas las medidas analógicas que ha devuelto la TCS.
2. valorEncoders(): devuelve un vector de 4 elementos (4 bytes)
con las medidas de los encoders. El primer byte es la parte menos
significativa de la medida del encoder 0, el segundo byte es la
parte más significativa del encoder 0, el tercer byte es la medida
menos significativa del encoder 1 y el cuarto byte es la medida
más significativa del encoder 1.
Guía de manejo del driver de la TCS-2
126
3. valorUSs(): devuelve un vector de 8 elementos (8 bytes) con
todas las medidas de ultrasonido que se han pedido a la TCS.
4. valorDig(): devuelve un vector de 1 elemento (1 byte) con la
medida de los ocho sensores digitales. Cada bit del elemento se
corresponde con la medida de un sensor.
5. valorRF(nElementos): devuelve un vector de nElementos
elementos con el mensaje que la TCS ha recibido por radio.
4 Instrucciones de manejo del objeto Comm
A continuación se detallan las instrucciones para el manejo del
driver desde una aplicación programada en C++, que será la que se ejecute
en un PC o en una PDA.
4.1 Creación del objeto
El primer paso es añadir los siguientes archivos al proyecto donde
se va a realizar la aplicación deseada:
•
Comm_sr.h: Definición de la clase Comm, encargada de la
comunicación.
•
Comm_sr.cpp: Código de la clase Comm.
•
Serial.h: Definición de la clase Serial, encargada del manejo del
puerto serie.
•
Serial.cpp: Código de la clase Serial.
Una vez añadidos, en el archivo del proyecto donde se vaya a crear el
objeto de la clase Comm se introduce el código correspondiente, habiendo
incluido anteriormente la cabecera Comm_sr.h:
#include “Comm_sr.h”
…
Comm comunicacion;
…
Guía de manejo del driver de la TCS-2
127
De esta manera se ha creado el objeto comunicacion con el que
se podrán establecer comunicaciones con la TCS.
4.2 Inicialización de la comunicación
Antes de establecer una nueva comunicación lo primero que hay
que hacer es llamar a al método inicio() del objeto Comm:
comunicacion.inicio();
Este método tiene como función vaciar el buffer de datos de envío.
En caso de que no se ejecutara, al introducir las órdenes para la TCS, éstas
se irían colocando tras las órdenes solicitadas en la comunicación anterior.
4.3 Introducción de las órdenes a enviar
Una vez que se ha inicializado la comunicación, es necesario
introducir las órdenes que se quieren mandar al microcontrolador. Para
ello, tan sólo se tienen que ejecutar las funciones o métodos de la sección 3
que se encargan de mandar actuaciones o de pedir medidas.
A la hora de ejecutar dichos métodos se debe tener en cuenta los
siguientes aspectos:
• En la primera comunicación con la TCS se debe configurar,
enviando la orden configuracion que le indica el número de
sensores de cada tipo que se van a utilizar y el número de
motores auxiliares. Si por ejemplo, se quiere usar sólo el sensor
de ultrasonidos 3, se debe configurar el número de ultrasonidos
al menos a 3, aunque el 2 y el 1 no se usen. Lo mismo sucede
para los sensores analógicos y los motores auxiliares.
• En caso de que en la misma comunicación se envíe la orden de
configuracion y además alguna otra orden para pedir la
medida de sensores analógicos o ultrasonidos, siempre se deberá
introducir primero la orden de configuracion, ya que si no,
Guía de manejo del driver de la TCS-2
128
cuando en la TCS vaya a realizar las medidas no estará
configurada de la forma adecuada.
• En las funciones leerAD(sensor) y pedirUS(sensor), se
debe tener en cuenta que el primer sensor se pide con un 1 y el
último con el número de sensores totales configurados (no como
los vectores en C++, que usan los índices que van de 0 al número
de elementos – 1).
• Si se solicita una medida de ultrasonidos antes de haber recibido
la respuesta con medidas de una petición anterior, ésta se
sobrescribe y no se sigue esperando.
• Si no se han activado nunca los motores, es aconsejable que no se
envíe
solamente
la
orden
activarMotores
en
una
comunicación, sino que se acompañe con las órdenes que
configuran el periodo de control y los la velocidad (duty cycle)
de los mismos. De esta manera se evita que al activar los
motores, se pongan en marcha de forma no controlada.
• Cuando se envíen los parámetros de actuación a los servos
(fundamentalmente el ángulo de giro, duty cycle), se deben tener
en cuenta los límites de estos para no dañarlos: dc mínimo 7 (90º) y dc máximo 43 (90º).
• Al enviar un mensaje para la radiofrecuencia, se debe tener en
cuenta que mensajes de excesiva longitud (mayor de 30 bytes)
pueden presentar problemas a la hora de ser enviados.
Un ejemplo a la hora de introducir las órdenes:
...
comunicacion.inicio();
//se inicia la comunicación
comunicacion.configuracion(5,4,1);
//se introduce una nueva
configuración 5ADs, 4USs y
1 motor auxiliar
comunicacion.leerAD(4);
//se solicita el 4º sensor
analógico
Guía de manejo del driver de la TCS-2
129
comunicacion.pedirUSs();
//se pide un
todos los US
barrido
comunicacion.periodoMotores(200);
//el periodo de mot0 y mot1
a 200 (el mot3, el aux, lo
tiene fijo a 70)
comunicacion.DcMotores(100,100);
//Dc motor0 y mot1
(motores parados)
a
de
100
comunicacion.DcMotoresAuxiliares(35,100); //Dc motor3 a 35 (motor
parado). El 100 se ignora.
comunicacion.activarMotores(3);
//los 3 motores activados
...
4.4 Envío y recepción
Para enviar el vector con las órdenes para el microcontrolador, se
llama al método comunica. Este método envía las órdenes y no devuelve
el control hasta que no recibe la respuesta y la procesa. En caso de que se
produjeran errores durante la comunicación, esta función devolvería un 0.
Por ello, sería recomendable que al método se le llamase desde dentro de
un if, y si fallase se pusiera de manifiesto al usuario:
if(!comunicacion.comunica()) //si devuelve 0 en caso de error
MessageBox(_T("Error en la comunicación"));
Sólo se produce una comunicación si hay órdenes a ejecutar; es decir, que:
comunicacion.inicio();
comunicacion.comunica();
no realiza ninguna comunicación.
4.5 Lectura de las medidas
Existen tres tipos de medidas: las que se solicitan en una
comunicación y se reciben en la propia respuesta (analógicas y encoders);
las que se solicitan en una comunicación y, debido al tiempo que se tarda
en realizarlas, no se reciben en la propia respuesta sino en la respuesta de
una o varias comunicaciones posteriores (ultrasonidos); y las que se
Guía de manejo del driver de la TCS-2
130
reciben sin ni siquiera haber sido solicitadas con anterioridad (digitales y
radiofrecuencia).
En el caso de las primeras, no existe problema, pues la aplicación
principal tratará de leerlas sólo cuando las haya solicitado primero. Para
los otros dos tipos se deberá consultar el vector interrupcion de forma
periódica en el que se indica, con un 1 (sí) o un 0 (no), si en la última
comunicación se ha recibido alguna de estas medidas no esperadas. Cada
elemento del vector se refiere a:
• interrupcion[1]:
si se ha recibido o no un mensaje
procedente de la radio.
• interrupcion[2]: si se ha recibido la medida o medidas de
ultrasonidos solicitadas anteriormente.
• interrupcion[3]: si se ha producido un cambio en el estado
de los sensores digitales.
Lo lógico sería que cada vez que se realice una comunicación se
comprobara si se ha recibido un nuevo mensaje de la radiofrecuencia o si
ha habido cambios en el estado de los sensores digitales. Y, en caso de que
se hubiese pedido anteriormente los ultrasonidos, comprobar también si
estos se han recibido. Hay que tener en cuenta que el vector
interrupcion pondrá a 1 el elemento correspondiente solamente en el
momento que se recibe dicha respuesta no esperada, volviendo a ponerse
a 0 en la siguiente comunicación.
Una vez que se sabe qué medidas se deben leer, la forma de hacerlo
es la siguiente. Se crea un puntero constante de tipo BYTE, y éste se iguala
a la función de petición de medidas correspondiente (ver sección 3).
Un ejemplo de lectura de medidas, suponiendo que anteriormente
se ha pedido un barrido de los sensores de ultrasonidos:
int elemRadio; //indica el número de elementos que devuelve la radio
Guía de manejo del driver de la TCS-2
131
const BYTE *vectorADs,*vectorEncoders,*vectorRadio,*vectorUSs,*digit;
//definición de variables para
el manejo de valores entregados
por el driver
vectorADs=comunicacion.valorADs(); //el valor de los ADs se guarda en
vectorADs, que será un const BYTE*
vectorEncoders=comunicacion.valorEncoders();
//similar a la función anterior
if(comunicacion.interrupcion[1])
//1, se ha recibido mensaje de RF
vectorRadio=comunicacion.valorRF(&elemRadio);
//en el caso de la radio se pasa
un puntero donde dejará el número
de elementos que tiene el mensaje
if(comunicacion.interrupcion[2])
//si 1, se han recibido los USs
vectorUSs=comunicacion.valorUSs();
//se pasa las medidas a vectorUSs
if(comunicacion.interrupcion[3])
digit=comunicacion.valorDig();
//1, si hay cambio en digitales
//se pasa el estado a digit
...
Además, en el caso de la radio se debe tener otro factor en cuenta.
Los envíos recibidos desde la radiofrecuencia pueden esperar una
respuesta de la PDA hacia el que envió el mensaje. La forma de saberlo es
a través de la variable RFrespuesta, que tendrá valor 1 si espera
respuesta y 0 en caso contrario.
if(interrupcion[1]) {
//si 1, se ha recibido mensaje de RF
vectorRadio = comunicacion.valorRF(&elemRadio);
if (RFrespuesta == 1)
// aquí el código para responder
}
Por otra parte, para saber si la TCS está funcionando y existe
comunicación entre la PDA y la TCS se puede usar la función Ping. En
caso de que exista comunicación la variable compruebaPing se pone a 1
y en caso contrario a 0.
comunicacion.inicio();
comunicacion.Ping();
if(comunicacion.comunica()){
//se reinicia la comunicación
Guía de manejo del driver de la TCS-2
132
if (comunicacion.compruebaPing)
MessageBox(_T("Comunicación OK. La TCS está
viva"),_T("Aviso")
,MB_OK);
else
MessageBox(_T("Error de comunicación"),_T("Error"),MB_OK);
}
4.6 Problemas que pueden surgir
• Al pedir ultrasonidos y esperar la respuesta el programa deja
de responder. En ocasiones pudiera ocurrir que alguna
comunicación fallase, o que la TCS no entendiese la orden de
realizar la lectura de los ultrasonidos. Si esto ocurre, teniendo la
aplicación programada para no continuar hasta recibir la
medida, podría quedarse colgado el programa ya que la TCS
nunca responderá. La solución de este problema consiste en
reprogramar
la
aplicación
indicando
que
si
en
diez
comunicaciones (número orientativo) no se ha recibido la
medida se volviese a pedir.
• Al crear el objeto Comm salta el mensaje “No se puede abrir el
puerto”. Si no se puede abrir el puerto serie es debido a que hay
otro
programa
usándolo.
Cerrando
dicho
programa
se
solucionaría el problema. Si no se puede cerrar o no hay ningún
programa abierto la solución será resetear la PDA (botón de reset
situado en la parte inferior o trasera).
• No se puede establecer la comunicación. Normalmente esto es
debido a que la última vez que se utilizó la comunicación serie, el
puerto se cerró mal, o a que hay algún problema en la TCS. En tal
caso se debe resetear la PDA y la TCS.
4.7 Ejemplo de uso
Suponemos que se tiene un robot con las siguientes características:
Guía de manejo del driver de la TCS-2
133
• El robot cuenta con tres motores.
• La navegación se quiere controlar por medio de tres sensores de
ultrasonidos.
• También tiene el robot dos sensores de infrarrojos (analógicos)
situados en un costado, para poder controlar la distancia a la
pared.
• Además el robot cuenta con tres sensores digitales (lógica
negada) que le advierten en caso de contacto. Son D0, D1 y D2.
• En la salida digital D3 se sacarán 5V si hay contacto y 0V si no lo
hay.
• También se quiere llevar un control de la posición, y esto se
realiza por medio de dos encoders situados en cada una de las
ruedas motoras.
En una primera comunicación se deberían pasar los parámetros de
configuración de la plataforma: el número de sensores, tanto de
ultrasonidos como analógicos; y la configuración inicial de los motores, es
decir, activarlos pero que se encuentren parados. Ésta primera
comunicación quedaría:
//definición de variables globales
BYTE Dc1=0, Dc2=0, choque=0;
//Primera comunicación con el robot, donde se activan los motores, se
configuran el número de sensores analógicos y de ultrasonidos.
comunicacion.inicio();
//se reinicia las colas Rx y Tx
comunicacion.configuracion(2,3,0); //2 ADs, 3 USs, 0 mot_auxiliares
comunicacion.periodoMotores(200);
//se pone un periodo de 200
comunicacion.DcMotores(100,100);
//inicialmente parados
comunicacion.activarMotores(1);
//se activan los dos motores
comunicacion.configuraIO(7);
//D3 salida. Resto dig entrada
comunicacion.desactivaI2C();
//hay que desactivar el I2C
Guía de manejo del driver de la TCS-2
comunicacion.comunica();
134
//se pasan los parámetros al PIC
En el funcionamiento normal del robot, la función periódica a
ejecutar cuando el robot esté activo podría ser:
//definición de variables locales
const BYTE *Digitales, *USs, *ADs, *Encoders;
comunicacion.inicio();
//se reinician las colas Tx y Rx
comunicacion.pedirUSs();
//se pide el barrido de los tres USs
comunicacion.comunica();
//se comunica, sabiendo que los USs
pueden llegar en la propia comunicación
no
//Se inicia un bucle hasta que se reciben las medidas de los
ultrasonidos, o bien se recibe un cambio en los digitales. En el
bucle se está continuamente pidiendo los encoders y los ADs, para que
cuando se salga del mismo estos no estén desfasados respecto a los
USs.
int i = 0;
//se establece un contador para que no se
quede infinitamente en el bucle si hubiera
algún problema en la comunicación y no se
recibiesen nunca los USs
while(comunicacion.interrupcion[3]!=1
&& comunicacion.interrupcion[2] ! =1
&& i < 10)
{
i++;
comunicacion.inicio();
//se reinician las colas
comunicacion.leerEncoders();
//petición de los Encoders
comunicacion.leerADs();
//petición de los ADs
comunicacion.comunica();
}
if(comunicacion.interrupcion[3] == 1) //si hubo cambio en digitales
{
Digitales=comunicacion.valorDig(); //se toma el valor
sensoresdigitales
if (Digitales[0] < 15) {
choque=8;
Dc1 = 100; Dc2 = 100;
}
else
de
los
//ha habido choque, D3=5V y por
ejemplo paro el robot
Guía de manejo del driver de la TCS-2
choque=0;
135
//no ha habido choque. D3=0V
}
else if(comunicacion.interrupcion[2] == 1) //si hubo medida de los US
{
USs=comunicacion.valorUSs();
//se guardan las medidas de los USs
ADs=comunicacion.valorADs();
//se guardan las medidas de los ADs
Encoders=comunicacion.valorEncoders();
//se guardan las medidas
de Encoders
//lógica de control en función de las medidas. Por ejemplo:
if (USs[0] < 20 || USs[1] < 20) {
//gira en un sentido
Dc1 = 100; Dc2 = 0;
}
else if (USs[1] < 20) {
//gira en otro
Dc1 = 0; Dc2 = 100;
}
}
comunicacion.inicio();
comunicacion.escribeDigital(choque);
comunicacion.DcMotores(Dc1,Dc2);
comunicacion.comunica();
//se volvería a enlazar con el principio, bien siendo esto
función que la volverían a llamar, o dentro de un bucle, etc.
una
Este es un modelo de comunicación, pero se podrán idear multitud
de ellos. Es necesario darse cuenta de la ineficiencia de este código, ya que
precisa de tres comunicaciones al menos por cada ciclo de control: una
para pedir los ultrasonidos, otra para recoger las medidas y otra para
actuar. Si en el control no intervinieran los sensores de ultrasonidos, el
modelo sería muy distinto.
Documento
Nº2,
PRESUPUESTO
Índice
2
Índice
Capítulo 1
Consideraciones generales...........................................................3
Capítulo 2
Mediciones, precios unitarios y sumas parciales ....................4
1
Materiales directos ............................................................................................ 4
1.1 Brazo mecánico ............................................................................................................... 4
1.2 Sweepers (barredores) ................................................................................................... 4
1.3 Base del robot .................................................................................................................. 5
1.4 Carcasa exterior .............................................................................................................. 5
1.5 Placas electrónicas y Hardware .................................................................................... 6
1.6 Otros materiales.............................................................................................................. 6
2
Mano de obra directa ........................................................................................ 7
3
Materiales indirectos......................................................................................... 7
Capítulo 3
Presupuestos generales ................................................................8
1
Materiales directos ............................................................................................ 8
2
Mano de obra directa ........................................................................................ 8
3
Materiales indirectos......................................................................................... 8
4
Coste total del proyecto .................................................................................... 8
5
Distribución coste total proyecto.................................................................... 9
Presupuesto. Consideraciones generales
3
Capítulo 1 CONSIDERACIONES GENERALES
En este documento se calcula el presupuesto que se necesitaría si se
encargara construir un prototipo como el desarrollado en el proyecto.
A la hora de detallar los conceptos que se verán incluidos en este
presupuesto, se han seguido las siguientes premisas:
•
No se incluyen los costes correspondientes al equipo informático
considerándose la amortización de los mismos incluida en los
costes de mano de obra imputados al programador.
•
No se incluye el precio del software ya que a sido descargado
gratuitamente desde la página web oficial del Microsoft, compañía
propietaria del software.
•
Los precios de los componentes detallados corresponden al
importe pagado en su fecha de compra, y pueden no coincidir con
el importe de compra en caso de requerirse una reproducción del
proyecto.
•
El presupuesto incluye la totalidad de los componentes y de la
mano de obra empleados en los dos proyectos que se han
desarrollado para construir este prototipo.
Presupuesto. Mediciones, precios unitarios y sumas parciales
4
Capítulo 2 MEDICIONES, PRECIOS UNITARIOS
Y SUMAS PARCIALES
1 Materiales directos
Como el número de componentes utilizados en el proyecto es muy
elevado, lo que se ha hecho es agruparlos en los siguientes subconjuntos:
1.1 Brazo mecánico
SUBCONJUNTO
DESCRIPCIÓN DEL ARTÍCULO
BRAZO TELESCÓPICO
Antena eléctrica 12V 12W
Boca aspiracion
Sensores infrarrojos gp2d12 36
Sensores digitales
tubo PVC diam 24mm long 390mm 1,5€/m
tubo PVC diam 30mm long 400mm 1,5€/m
tubo PVC diam 20mm long 380mm 1,5€/m
Tornillo metrica C.Ancha Hend Azinc 5x60
Arandelas AC.zincado D.5
Tuerca métrica C.cilind Hend A.zinc 4x12
Tuercas Mariposa AC.zincado D.5
Tornillo métrica C.cilind Hend A.zinc 4x12
Pieza mecano
Bridas 2.5x100mm
Extensor cable retráctil USB portátil
Tubo plastico transpa. long 300mm 3€/m
Cerdas escoba
UNIDADES
PRECIO
UNIDAD (€)
1
35
1
2
3
18,35
4
2,5
1
0,59
1
0,6
1
0,57
2
0,25
8
0,09
6
0,06
2
0,14
2
0,12
1
0,5
8
0,1
1
1,75
1
0,9
1
0,4
Total Brazo Telescópico
TOTAL (€)
35
2
55,05
10
0,59
0,6
0,57
0,5
0,72
0,36
0,28
0,24
0,5
0,8
1,75
0,9
0,4
110,26 €
1.2 Sweepers (barredores)
SUBCONJUNTO
DESCRIPCIÓN DEL ARTÍCULO
UNIDADES
PRECIO
UNIDAD (€)
TOTAL (€)
SWEEPERS (BARREDORES)
Tornillo métrica C.cilind Hend A.zinc 4x12
Motores con reductora ref GH12/2217Y
12V 600mA 120rpm
Bridas 2.5x100mm
Tornillo metrica C.Ancha Hend Azinc 5x60
Arandelas AC.zincado D.5
Tuercas Mariposa AC.zincado D.5
Tuerca métrica C.cilind Hend A.zinc 4x12
Discos de pulido/barnizado madera
4
0,12
0,48
2
19,55
39,1
4
0,1
4
0,25
8
0,09
4
0,14
4
0,06
2
3
Total Sweepers (Barredores)
0,4
1
0,72
0,56
0,24
6
48,50 €
Presupuesto. Mediciones, precios unitarios y sumas parciales
5
1.3 Base del robot
SUBCONJUNTO
BASE DEL ROBOT
DESCRIPCIÓN DEL ARTÍCULO
UNIDADES
Base madera 0,2 m2 6€/m2
Liston de madera 2x2,5cm2 long 400mm
Tacos madera 4,5x4,5cm long 8
Soporte motores de madera
Motores con reductora 24V 0.8A 250rpm
Rueda loca
Pinza papel
Tuerca métrica C.cilind Hend A.zinc 4x12
Arandelas AC.zincado D.5
Motor aspiradora 60W 6V Moulinex
Válvula esfera pegar PVC-Pres EPE D20
Manguito liso H-H PVC-PRES EPE D20
Tubo plástico long 200mm
Boca base aspiración plástico
Bolsa suiedad (recipiente de pelotas de tenis
Escuadras ángulo 30x30mm Bicr mod
Tuerca métrica C.cilind Hend A.zinc 4x12
Pintura madera color rojo LEROY MERLÍN
Barniz madera LEROY MERLÍN
Ruedas motrices diámetro 7,5 cm
Bateria 6V plomo-acido 4,8 A/h
Bateria 12V plomo-acido 1,2 A/h
Sens ultrasonicos SRF04 DEVANTECH
Sens infrarrojos gp2d12 36
Cinta velcro recambio tesa 5,60M
Servo FUTABA S3010 5V Par 6,5Kg
PRECIO
UNIDAD (€)
1
1,2
1
0,54
2
0,2
2
1,5
2
40
1
3,5
3
0,2
16
0,06
13
0,09
1
50
1
6,54
1
0,42
1
2,5
1
2
1
1,1
3
0,15
3
0,06
1
9,66
1
9,95
2
2,15
1
20
2
14,71
4
19,25
2
18,35
1
5,78
1
25
Total Base Robot
TOTAL (€)
1,2
0,54
0,4
3
80
3,5
0,6
0,96
1,17
50
6,54
0,42
2,5
2
1,1
0,45
0,18
9,66
9,95
4,3
20
29,42
77
36,7
5,78
25
372,37 €
1.4 Carcasa exterior
SUBCONJUNTO
DESCRIPCIÓN DEL ARTÍCULO
UNIDADES
PRECIO
UNIDAD (€)
TOTAL (€)
CARCASA EXTERIOR
Cubo lavandería diam 500mm
Pintura spray efecto decor sat nitro 400ml
Pintura spray efecto decor brillo 400ml
Tornillo metrica C.Ancha Hend Azinc 5x60
Led luz difusa
Visagra 2 piezas corta para arcón
Arandela AC.zincado D.5
Interruptor 2 circuitos 3A
Burlete umbral tesa marrón
Microinterruptor
PLACA ILUMINACION
Amplificador operacional LF411
Resistencia 0,25W
Resistencia 2W
Clemas sujecion cable
Potenciometro 10K
Transistor de potencia BD135/137/139
Placa de insercion baquelita 9x8cm2
Sensor luminosidad LDR
1
1
1
4
10
1
20
1
1
4
4,6
7,68
12,55
0,25
0,2
2,7
0,09
1,75
2,9
0,4
4,6
7,68
12,55
1
2
2,7
1,8
1,75
2,9
1,6
3
0,5
12
0,09
1
0,2
2
0,75
1
0,2
1
0,9
1
5,5
1
1
Total Carcasa Exterior
1,5
1,08
0,2
1,5
0,2
0,9
5,5
1
50,46 €
Presupuesto. Mediciones, precios unitarios y sumas parciales
6
1.5 Placas electrónicas y Hardware
SUBCONJUNTO
PLACAS ELECTRÓNICAS
Y HARDWARE
DESCRIPCIÓN DEL ARTÍCULO
UNIDADES
PRECIO
UNIDAD (€)
ACTUADOR ASPIRADOR
Led luz difusa
2
0,2
Timbre electrónico
1
0,8
Microinterruptor
1
0,4
Transistor señal npn 3904
1
0,3
Portafusible
1
0,42
Fusible 16A
1
0,14
Relé 4571 1 N0 13/30A 12V (SPB)
2
2,33
Resistencia 0,25W
4
0,09
Disipador
1
0,8
Diodo de potencia BYW80-200
1
1,3
Placa inserción fibra vidrio 12x5cm2
1
8
Diodo
1
0,3
Conectores de insercion placa
3
0,75
PUENTE H ANTENA
Transistor señal npn 3904
1
0,3
Diodo
4
0,3
Resistencia 0.25W
2
0,09
Zocalo 18 pines
1
0,5
Integrado L293B
1
2,57
Conector de insercion placa
4
0,75
Placa inserción fibra vidrio 4x7cm2
1
4
PUENTE H MOTORES DE TRACCION
Transistor señal npn 3904
2
0,3
Diodo
8
0,3
Resistencia 0.25W
4
0,09
Zocalo 18 pines
1
0,5
Integrado L293B
1
2,57
Conector de insercion placa
5
0,75
Placa inserción fibra vidrio 4x7cm2
1
4
PLACA ALIMENTACION
Clemas de insercion placa 2 cables
2
0,75
Banana hembra
2
0,8
Interruptor 3A 1 circuito
2
1,5
Led luz difusa
2
0,2
Resististencia 0.25W
2
0,09
ACTUADORS SWEEPERS
Relé 12V 10A 2 contactos
1
2,15
Portafusible inserción en placa
1
0,42
Fusible 4A
1
0,14
Transistor señal npn 3904
1
0,3
Diodos
2
0,3
Resistencia 0.25W
2
0,09
Conectores de insercion placa
3
0,75
Placa insercion fibra vidrio 7x4cm2
1
4
COMPARADOR NIVEL BATERIA
Amplificadores operacionales LF411
3
0,5
Led luz difusa
2
0,2
Zocalo 8 pines
3
0,5
Resist 0.25W
7
0,09
Microinterruptor
1
0,4
Clema de insercion placa
2
0,75
Placa insercion fibra vidrio 10x3,5cm2
1
6
TCS-2 (Tarjeta Control Sensores)
1
35
Cable FA122A iPAQ USB/Serial AutoSync
1
15
PDA HP iPAQ hx2190
1
384
Total Placas Electrónicas y Hardware
TOTAL (€)
0,4
0,8
0,4
0,3
0,42
0,14
4,66
0,36
0,8
1,3
8
0,3
2,25
0,3
1,2
0,18
0,5
2,57
3
4
0,6
2,4
0,36
0,5
2,57
3,75
4
1,5
1,6
3
0,4
0,18
2,15
0,42
0,14
0,3
0,6
0,18
2,25
4
1,5
0,4
1,5
0,63
0,4
1,5
6
35
15
384
508,71 €
1.6 Otros materiales
SUBCONJUNTO
OTROS MATERIALES
DESCRIPCIÓN DEL ARTÍCULO
Pegamento loctite Super Glu-3
Estaño soldadura Salki ref. 8500118
Cartucho silicona
Cable termorretractil 50cm 5€/m
Cable 2x0,75mm Rojo/Negro 4,5m 0,43€/m
Cable 4mm 1m 0,88€/m
Pieza lego
UNIDADES
PRECIO
UNIDAD (€)
3
5,9
1
1,95
3
0,6
1
2,5
1
1,94
1
0,88
7
0,2
Total Otros Materiales
TOTAL (€)
17,7
1,95
1,8
2,5
1,94
0,88
1,4
28,17 €
Presupuesto. Mediciones, precios unitarios y sumas parciales
7
2 Mano de obra directa
45
Precio hora ingeniero €/h
Horas por semana
40
COSTE MANO DE OBRA DIRECTA
Nº Semanas
Documentación Previa
Horas
Total €
4
160
7.200,00 €
4
160
7.200,00 €
Desarrollo Técnico
Ingeniería y Diseño (Mecanica. y Control)
Ejecución de circuitería electrónica y montaje eléctrico del conjunto
5
200
9.000,00 €
Programación
2,5
100
4.500,00 €
11,5
460
20.700,00 €
Supervisón, Pruebas y Chequeo
2,5
100
4.500,00 €
Documentación del Proyecto
2
80
3.600,00 €
TOTALES
3 Materiales indirectos
COSTE MATERIALES INDIRECTOS
Descripción del concepto
Gastos de servicios generales. Luz, equipos y comunicación
Gastos de transporte
Gastos adicionales de materiales deteriorados
Coste €
15,00 €
50,00 €
10,00 €
Presupuesto. Presupuestos generales
8
Capítulo 3 PRESUPUESTOS GENERALES
1 Materiales directos
TOTAL COSTE MATERIALES DIRECTOS
Total Brazo Telescópico
Total Sweepers (Barredores)
Total Base Robot
Total Carcasa Exterior
Total Placas Electrónicas
Total Otros Materiales
110,26 €
48,50 €
372,37 €
50,46 €
508,71 €
28,17 €
TOTAL
1.118,47 €
2 Mano de obra directa
TOTAL COSTE MANO DE OBRA DIRECTA
Total Documentación Previa
Total Desarrollo Técnico
Total Supervisión, Pruebas y Chequeo
Total Documentación del Proyecto
7.200,00 €
20.700,00 €
4.500,00 €
3.600,00 €
TOTAL
36.000,00 €
3 Materiales indirectos
TOTAL COSTES MATERIALES INDIRECTOS
Gastos de servicios generales. Luz, equipos y comunicación
Gastos de transporte
Gastos adicionales de materiales deteriorados
15,00 €
50,00 €
10,00 €
TOTAL
75,00 €
4 Coste total del proyecto
COSTE TOTAL PROYECTO
Coste TOTAL (MOD+C.Directos+C.Indirectos)
16% I.V.A
37.193,47 €
5.950,96 €
TOTAL COSTE PROYECTO 43.144,43 €
Presupuesto. Presupuestos generales
9
5 Distribución coste total proyecto
DISTRIBUCIÓN COSTE TOTAL
PROYECTO
C.I. 0,20%
C.D. 3,01%
MOD 96,79%
MOD
C.D.
C.I.
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertising