Grupo 4 – Maze Runner
Integrantes:
José Antonio Rodríguez García (GII)
Cristina López Pizarro (GII)
Alexey Sorokin (GII)
CONTENIDOS
- Memoria del proyecto
- Presentación
- Código fuente
- Vídeo del proyecto:
A continuación relatamos un resumen del proyecto, para información más completa y detallada, por favor consulte la memoria adjunta a esta entrada.
Introducción
Con
motivo de la práctica impuesta en la asignatura de Sistemas Empotrados y de Tiempo
Real, enmarcada en el itinerario de Grado de Ingeniería Informática, el grupo 4
hemos construido un robot capaz de resolver un laberinto. Para ello se ha
utilizado un arduino y diversas placas bases para realizar las conexiones entre
los diferentes componentes utilizados.
motivo de la práctica impuesta en la asignatura de Sistemas Empotrados y de Tiempo
Real, enmarcada en el itinerario de Grado de Ingeniería Informática, el grupo 4
hemos construido un robot capaz de resolver un laberinto. Para ello se ha
utilizado un arduino y diversas placas bases para realizar las conexiones entre
los diferentes componentes utilizados.
Además,
para hacer el proyecto más interesante, hemos
decidido añadirle ciertas capacidades extras: como la capacidad de sortear
obstáculos y hacer sonar una melodía de triunfo cuando alcanza la meta.
para hacer el proyecto más interesante, hemos
decidido añadirle ciertas capacidades extras: como la capacidad de sortear
obstáculos y hacer sonar una melodía de triunfo cuando alcanza la meta.
Componentes y precios
NOMBRE |
UNIDADES |
PRECIO/UNIDAD |
Arduino |
1 |
Cedido |
Placa base |
2 |
Cedido |
Fotointerruptor |
5 |
1.07 € |
Sensor de Proximidad Ultrasonidos |
1 |
3.51 € |
Rueda 90x10mm |
2 |
4.34 € |
Motor pequeño 3..6 V 180:1 |
2 |
6 € |
Rueda Loca metálica 9.5 mm |
1 |
3.14 € |
Resistencias varias de 470 Ω, 1kΩ y 10 KΩ |
11 |
Cedidas |
Cables |
∞ |
Cedidos |
Packs de 10 pilas |
2 |
2 € |
Interruptor |
1 |
1.15 € |
Corcho y madera 8×11 cm |
2 |
1.10 € |
Circuito integrado L293D |
1 |
4.50 € |
Placas de madera escenario |
2 |
8 € |
PRECIO TOTAL |
59.43 € |
Esquema hardware-software
- Etapa 1: Capacidad para moverse
Para
que esto fuese posible, primero montamos un Puente H utilizando pines PWM (permiten regular la intensidad de la energía que
se envía a los motores, útil para acelerar o frenar el aparato en etapas
posteriores).
que esto fuese posible, primero montamos un Puente H utilizando pines PWM (permiten regular la intensidad de la energía que
se envía a los motores, útil para acelerar o frenar el aparato en etapas
posteriores).
El Puente H hace posible que el
aparato se alimente del paquete de pilas de 9 V directamente, en vez del
arduino. De esta forma el robot es capaz de moverse de forma autónoma.
aparato se alimente del paquete de pilas de 9 V directamente, en vez del
arduino. De esta forma el robot es capaz de moverse de forma autónoma.
Por otro lado, añadir que hay que
tener muy en cuenta la circulación de la energía a lo largo del circuito; ya
que depende de ella que las ruedas giren en una dirección u otra.
tener muy en cuenta la circulación de la energía a lo largo del circuito; ya
que depende de ella que las ruedas giren en una dirección u otra.
Ilustración 1: Puente H
Ilustración 2: Montaje real del
puente H
puente H
- Etapa 2: Capacidad para detectar
y seguir una línea
Para
ello hemos utilizado cinco sensores infrarrojos colocados en una posición
semejante a una punta de flecha que mira al frente. El sensor más adelantado se
encarga de detectar el fin del camino que tiene delante. Los sensores de los
lados, por otra parte, poseen otra función: detectar cuándo se abre un camino a
cualquiera de los lados. Finalmente, los dos sensores centrales más atrasados
se encargan de detectar posibles desviaciones del camino por parte del aparato.
ello hemos utilizado cinco sensores infrarrojos colocados en una posición
semejante a una punta de flecha que mira al frente. El sensor más adelantado se
encarga de detectar el fin del camino que tiene delante. Los sensores de los
lados, por otra parte, poseen otra función: detectar cuándo se abre un camino a
cualquiera de los lados. Finalmente, los dos sensores centrales más atrasados
se encargan de detectar posibles desviaciones del camino por parte del aparato.
Para más información referente a
el control de las desviaciones, consultar la memoria completa adjunta a este
resumen.
el control de las desviaciones, consultar la memoria completa adjunta a este
resumen.
Ilustración 3: Sensores IR
Ilustración 4: Montaje real de
los sensores infrarrojos
los sensores infrarrojos
- Etapa 3: Capacidad para tomar
decisiones
La
idea principal es que el robot sea capaz de resolver un laberinto, es decir,
que sea capaz de recorrer distintos caminos hasta alcanzar la meta sin repetir
ninguno. Para conseguir esto, el aparato sigue una lógica muy simple: si existe
un camino que tuerza a la derecha, escoge ese camino; si no, sigue de frente; y
si no existe ninguno de los dos, entonces gira a la izquierda. El robot
entiende que ha alcanzado la meta cuando todos sus sensores perciben el color
negro.
idea principal es que el robot sea capaz de resolver un laberinto, es decir,
que sea capaz de recorrer distintos caminos hasta alcanzar la meta sin repetir
ninguno. Para conseguir esto, el aparato sigue una lógica muy simple: si existe
un camino que tuerza a la derecha, escoge ese camino; si no, sigue de frente; y
si no existe ninguno de los dos, entonces gira a la izquierda. El robot
entiende que ha alcanzado la meta cuando todos sus sensores perciben el color
negro.
Los
sensores laterales junto al sensor frontal son los encargados de percibir los
distintos caminos y activar la lógica correspondiente para la toma de
decisiones.
sensores laterales junto al sensor frontal son los encargados de percibir los
distintos caminos y activar la lógica correspondiente para la toma de
decisiones.
- Etapa
4: Capacidad para detectar obstáculos
Para lograr esta capacidad se ha
usado un sensor de ultrasonidos en la parte frontal del aparato. Cuando este
sensor detecta que hay un objeto a menos de 10 cm, envía la orden de detener el
robot hasta que el objeto desaparece de su vista o se aleja.
usado un sensor de ultrasonidos en la parte frontal del aparato. Cuando este
sensor detecta que hay un objeto a menos de 10 cm, envía la orden de detener el
robot hasta que el objeto desaparece de su vista o se aleja.
A continuación, se muestra una
imagen de las conexiones de este componente con el arduino. El código asociado
a este componente aparece en el Apéndice adjunto a esta entrada.
imagen de las conexiones de este componente con el arduino. El código asociado
a este componente aparece en el Apéndice adjunto a esta entrada.
Ilustración 5 Sensor
ultrasonidos y piezoeléctrico
ultrasonidos y piezoeléctrico
Ilustración 6 Sensor
ultrasonidos montado
ultrasonidos montado
- Etapa 5: Capacidad de reproducir
sonidos
Para
esta última etapa hemos utilizado un zumbador conectado debidamente al arduino.
Cuando el robot inicia o llega a la meta, se envía una señal desde el arduino
al zumbador con una determinada frecuencia. Tocando los tiempos de espera
(delay), se pueden crear melodías completas.
esta última etapa hemos utilizado un zumbador conectado debidamente al arduino.
Cuando el robot inicia o llega a la meta, se envía una señal desde el arduino
al zumbador con una determinada frecuencia. Tocando los tiempos de espera
(delay), se pueden crear melodías completas.
En
nuestro caso, hemos descargado las melodías ya creadas de internet y hemos
ajustado la duración de la misma en base a su uso.
nuestro caso, hemos descargado las melodías ya creadas de internet y hemos
ajustado la duración de la misma en base a su uso.
Ilustración 11 Zumbador montado
Problemas
y soluciones
y soluciones
- –
Grandes desviaciones al seguir una trayectoria: En un principio, pensamos que para ser capaz de no
salirse del camino sería suficiente con poner dos sensores que avisaran de
cuando el cuerpo del robot se salía de la línea… pero pronto quedó claro que
aquello no era suficiente. Después de todo, el aparato se dedicaba a hacer
correcciones muy bruscas, constantemente, en cuanto se salía mínimamente de la
línea. Eso al final se solucionó haciendo uso, además, del sensor frontal. - –
Posicionamiento erróneo al hacer los giros: A veces se daba el caso de que, al realizar un
giro, el aparato giraba de más, quedando mal posicionado sobre la línea y dando
lugar a posteriores lecturas erróneas por parte de los sensores infrarrojos.
Para solucionar este problema retocamos el código de los giros, permitiendo que
el aparato se enderezase haciendo lecturas durante un breve período de tiempo
justa tras el giro. Además, también tuvimos más cuidado al calibrar la
velocidad y potencia con la que realizaba el giro permitiendo un mayor control.
Además, hemos implementado un giro haciendo uso de las dos ruedas a la vez,
para que el giro se produzca de forma rápida y eficaz -una rueda avanza y la
otra retrocede- y consumiendo el menor radio posible. - –
Componentes problemáticos: Uno de los principales inconvenientes detectados
está relacionado con el uso de las ruedas y el movimiento general del robot. Al
parecer, las ruedas no se encuentran perfectamente perpendiculares al suelo,
esto hace que la máquina, al moverse y al girar, se desvíe visiblemente de la
trayectoria a seguir. También influye el reparto del peso general del robot, el
cual no se distribuye de manera equitativa. Para solucionar este problema
definimos en el código una variable de velocidad para cada motor y realizamos
pruebas ajustando dichos valores hasta que el robot avanzase perfectamente
recto. - –
Problemas menores: Introducir un interruptor para mayor facilidad de
uso, utilizar una “rueda loca” junto a dos ruedas normales para disminuir
costes, la necesidad de reformar el cuerpo del robot cada cierto tiempo para
ajustarlo mejor a los cambios físicos producidos al añadir los componentes
-destaca el cambio del paquete de pilas de 6V por uno de 9V-, gran dependencia
de energía dada por las pilas, ya que nos hemos encontrado grandes cambios en
el funcionamiento del aparato según se van gastando más o menos. Y, por
supuesto, la necesidad de investigar concienzudamente cada componente y su uso
para poder aplicarlos a nuestras necesidades.
NOTA: Para más información
respecto al código, consulte el Apéndice adjunto a esta entrada.
respecto al código, consulte el Apéndice adjunto a esta entrada.