Robot Laberinto

9
Instituto Tecnológico de Tuxtla Gutiérrez Ciencia y Tecnologia con sentido Humano Ingeniería en Sistemas Computacionales REPORTE DE ELABORACIÓN DE ROBOT RESOLVEDOR DE LABERINTOS Autores: Córdova Morales, Diego A.; Viza Avendaño Hugo A.; González Hernández Jorge L.; Montejo Gúzman Josúe. Lenguajes de Interfaz. Instituto Tecnológico de Tuxtla Gutiérrez, Carretera Panamericana Km. 1080, C.P. 29050, Apartado Postal: 599, Tuxtla Gutiérrez, Chiapas. ResumenSe presenta el reporte sobre la elaboración de un robot autónomo resolvedor de laberintos, usado en el 3er. Torneo estatal universitario de robótica, realizado para la materia de Lenguajes de Interfaz, el cual fue desarrollado en arduino uno, y se muestra desde el inicio su proceso de creación. El objetivo de este trabajo es presentar los detalles principales del diseño del hardware y software de un robot autónomo que es capaz de desplazarse a través de un laberinto prediseñado Palabras clave: Robot, Arduino, laberinto, sensores ultrasónicos. Introducción En la actualidad la mayoría de los problemas pueden ser resueltos de una forma automatizada, el uso de la tecnología es prácticamente parte de nuestro día a día, desde que nos levantamos hasta que nos acostamos. La misma sólo cuenta con un objetivo, el facilitarnos la vida, muchas de estas grandes cosas como automóviles, televisiones, computadoras, refrigeradores, etc. Están basadas en cosas mucho más sencillas pero que con diversas adaptaciones se pueden realizar grandes creaciones. El hardware es la parte física de un sistema, el software es la parte lógica, y ambos son indispensables en la resolución de algunos productos anteriormente mencionados, ya que si uno de los dos es deficiente el otro no podría desarrollar al máximo sus funciones. En cuanto al hardware dependerá o se deberá adecuar al medio ambiente que lo rodea, es decir a su físico para que no se degrade a medida que pasa el tiempo, y en cuanto al software deberá tomar en cuenta las necesidades y las capacidades del hardware para trabajar, existen muchos lenguajes de programación, pero algunos son orientados a determinadas partes, por ejemplo existen infinidad de lenguajes de programación de alto nivel, compiladores, y algunos menos de bajo nivel. Los lenguajes de programación a alto nivel trabajan en un ambiente más visual, y se busca de un intérprete que pueda traducir lo programado a un lenguaje que pueda entender la computadora, el lenguaje a bajo nivel trabaja directamente con el cerebro de nuestro hardware, sin embargo el proceder en su programación es mucho más complicado que si de alto nivel se tratara, así pues el punto óptimo sería el de trabajar con un lenguaje amigable para el programador que pueda sacar las máximas capacidades al hardware. Aquí arduino se presenta como una solución. Arduino es una plataforma de creación de prototipos de código abierto basado en hardware y software fácil de usar. Esto permite a cualquier usuario crear de forma independiente y fácilmente proyectos y adaptarlos a sus necesidades particulares,

Transcript of Robot Laberinto

Page 1: Robot Laberinto

Instituto Tecnológico de Tuxtla Gutiérrez

Ciencia y Tecnologia con sentido Humano

Ingeniería en Sistemas Computacionales

REPORTE DE ELABORACIÓN DE ROBOT RESOLVEDOR DE LABERINTOS

Autores:

Córdova Morales, Diego A.; Viza Avendaño Hugo A.; González Hernández Jorge L.; Montejo Gúzman Josúe.

Lenguajes de Interfaz. Instituto Tecnológico de Tuxtla Gutiérrez, Carretera Panamericana Km. 1080, C.P. 29050, Apartado

Postal: 599, Tuxtla Gutiérrez, Chiapas.

Resumen—Se presenta el reporte sobre la elaboración de un robot autónomo resolvedor de

laberintos, usado en el 3er. Torneo estatal universitario de robótica, realizado para la materia

de Lenguajes de Interfaz, el cual fue desarrollado en arduino uno, y se muestra desde el inicio

su proceso de creación. El objetivo de este trabajo es presentar los detalles principales del

diseño del hardware y software de un robot autónomo que es capaz de desplazarse a través

de un laberinto prediseñado

Palabras clave: Robot, Arduino, laberinto, sensores ultrasónicos.

Introducción

En la actualidad la mayoría de los problemas

pueden ser resueltos de una forma

automatizada, el uso de la tecnología es

prácticamente parte de nuestro día a día,

desde que nos levantamos hasta que nos

acostamos. La misma sólo cuenta con un

objetivo, el facilitarnos la vida, muchas de

estas grandes cosas como automóviles,

televisiones, computadoras, refrigeradores,

etc. Están basadas en cosas mucho más

sencillas pero que con diversas adaptaciones

se pueden realizar grandes creaciones.

El hardware es la parte física de un sistema,

el software es la parte lógica, y ambos son

indispensables en la resolución de algunos

productos anteriormente mencionados, ya

que si uno de los dos es deficiente el otro no

podría desarrollar al máximo sus funciones.

En cuanto al hardware dependerá o se deberá

adecuar al medio ambiente que lo rodea, es

decir a su físico para que no se degrade a

medida que pasa el tiempo, y en cuanto al

software deberá tomar en cuenta las

necesidades y las capacidades del hardware

para trabajar, existen muchos lenguajes de

programación, pero algunos son orientados a

determinadas partes, por ejemplo existen

infinidad de lenguajes de programación de alto

nivel, compiladores, y algunos menos de bajo

nivel.

Los lenguajes de programación a alto nivel

trabajan en un ambiente más visual, y se

busca de un intérprete que pueda traducir lo

programado a un lenguaje que pueda

entender la computadora, el lenguaje a bajo

nivel trabaja directamente con el cerebro de

nuestro hardware, sin embargo el proceder en

su programación es mucho más complicado

que si de alto nivel se tratara, así pues el punto

óptimo sería el de trabajar con un lenguaje

amigable para el programador que pueda

sacar las máximas capacidades al hardware.

Aquí arduino se presenta como una solución.

Arduino es una plataforma de creación de

prototipos de código abierto basado en

hardware y software fácil de usar. Esto

permite a cualquier usuario crear de forma

independiente y fácilmente proyectos y

adaptarlos a sus necesidades particulares,

Page 2: Robot Laberinto

Instituto Tecnológico de Tuxtla Gutiérrez

Ciencia y Tecnologia con sentido Humano

Ingeniería en Sistemas Computacionales contando además con apoyo de la comunidad

de desarrollo de arduino que cuenta con miles

de proyectos de libre uso para iniciar en este

mundo nuevo [1].

Es por eso que se ha decantado por utilizar

esta placa para llevar a cabo un robot capaz

de resolver cualquier laberinto, apoyándose

de componentes específicos.

Bases [2]

El robot

1. Las dimensiones del móvil no deben

superar los 25 cm. de largo y 25 cm de ancho

en estado inicial. Pudiendo tener la altura que

se desee. Cuando el robot compita, se puede

extender tanto como el diseño así lo permita.

2. Los móviles deben ser totalmente

autónomos; pudiéndose utilizar un medio

inalámbrico para la activación. (No control

remoto).

3. Los robots participantes deberán tener su

“interruptor de encendido” en un lugar visible

que permita ser apreciado tanto por los

Jurados como por el público.

4. El robot podrá utilizar cualquier medio de

locomoción (rueda, orugas, patas, etc.).

5. Los participantes pueden utilizar cualquier

tipo de materiales para la construcción de su

móvil. En la parte estructural, de sensado y

tipo de controlador (no hay ninguna

condicionante para construcción).

6. La única limitante es que el medio de

locomoción no dañe la superficie de juego.

Del juego

1. La competencia de Laberinto Básico

consiste en la creación de un robot autónomo

capaz de entrar y recorrer un Laberinto,

siguiendo las paredes, hasta salir en el menor

tiempo posible.

2. En esta prueba el robot debe ingresar y

recorrer el Laberinto hasta salir de él en un

tiempo máximo de 5 minutos.

3. El robot debe mantener la posición de

inicio por 5 segundos después de haber

presionado el interruptor de encendido.

4. La prueba se considerara finalizada

cuando el robot este completamente dentro de

la meta durante 5 segundos.

5. El método de Juego consistirá en tres

etapas (fácil, intermedio y complicado) en las

cuales se tendrán un diferente laberinto,

acorde a su dificultad de solución.

6. Cada robot tendrá 3 turnos o intentos para

realizar el recorrido en el Laberinto (etapa).

7. Los robots que resuelvan el nivel

correspondiente pasaran a la siguiente etapa

en la que se incrementara la dificultad del

laberinto.

8. Cuando se haya finalizado la primera

ronda, los participantes tendrán un tiempo de

10 minutos para que realicen alguna

reparación o reprogramación de su robot

según sea y consideren necesario.

9. Si el robot no pudo alcanzar a salir del

laberinto en el tiempo de 5 minutos

establecidos para la prueba, los Jurados

darán por finalizado su turno (participación) y

se le asignarán los puntos correspondientes

según su desempeño en el recorrido.

10. Si durante la prueba el robot se queda

inmóvil más de 30 segundos, los jurados

darán por concluido su turno.

11. En el caso de que el robot inicie su

recorrido por el Laberinto y retorne

nuevamente al lugar de partida, también

(como en el caso anterior) se dará por

finalizado su turno.

12. En el caso de que exista un empate y

los robots involucrados hayan concluido

satisfactoriamente la prueba, se tomará en

Page 3: Robot Laberinto

Instituto Tecnológico de Tuxtla Gutiérrez

Ciencia y Tecnologia con sentido Humano

Ingeniería en Sistemas Computacionales cuenta el tiempo en que cada robot logró salir

del Laberinto y así se declara un vencedor.

13. En el caso particular de que ningún robot

llegue a la Meta, los Jurados tomarán en

cuenta qué robot es el ganador según su

desempeño y ésta decisión será inapelable.

14. La siguiente puntuación será utilizada

para llevar a cabo un desempate entre robots

que hayan terminado el laberinto:

· Si el robot sale del laberinto en

tiempo: +100 Puntos

· Por cada cambio de dirección hacia

la meta: +10 puntos

· Si el robot regresa al INICIO: No

gana puntos.

· Si el robot se queda inmóvil por más

de 30 seg.: - 10 Puntos

· Si el robot recorre un mismo tramo

3 veces: - 5 Puntos

Especificaciones

1. La competencia de Laberinto Básico se

realizará en una plataforma de madera, que

constará de un piso plano y paredes de

separación.

2. La superficie del piso del laberinto estará

pintada de color blanco.

3. El Área del Laberinto tendrá las

dimensiones de 220 cm de ancho x 220 cm.

de largo.

4. La altura de las paredes del Laberinto

será de 20 cm. y el grosor de éstas será de 1

cm., pintadas de color gris mate.

5. Los anchos de los senderos del Laberinto

tendrán la medida de 35 cm. Los senderos

podrán doblarse en ángulo recto (90º).

6. La zona de Salida (inicio) será marcada

por un cuadro de color amarillo.

7. La zona de llegada (Meta) será marcada

por cuadro de color negro.

8. Todos los senderos contaran con una

línea central discontinua de 2 cm de ancho. Se

tendrá un segmento de línea de 10 cm. A

continuación, un espacio entre segmentos de

5 cm.

Figura 1. Diseño del laberinto a resolver, indicando inicio y final del mismo, con trazas horizontales y verticales

para los cruces.

Figura 2. Vista real del laberinto, con paredes marcadas de acuerdo a las bases establecidas.

Desarrollo y diseño

Al iniciar a diseñar el prototipo se consideraron

diferentes aspectos que podrían afectar la

implementación exitosa del mismo.

Principalmente se consideraron aspectos

como el tamaño del robot, si sería muy grande

para realizar los giros, el tipo de rueda a usar,

ya que debería de contar con suficiente agarre

en el material del suelo, e inclusive contar con

Page 4: Robot Laberinto

Instituto Tecnológico de Tuxtla Gutiérrez

Ciencia y Tecnologia con sentido Humano

Ingeniería en Sistemas Computacionales

la alimentación necesaria para dar abasto a

cada uno de los componentes usados.

Chasis

El diseño del chasis es una de las claves en

cuanto a la implementación exitosa del robot,

ya que deberá contener a todas las piezas que

se utilicen, y deberá de ser capaz de prevenir

de algún daño a las mismas o de evitar la

propagación del fuego en caso de un corto

circuito. Para ello es optó por una base y

paredes de acrílico (Figura 3), la cual

permitiría ver todos los componentes y actuar

de forma inmediata en caso de algún fallo.

Figura 3. Acrílico. Usado como base y paredes del chasis del robot, debido a que es de poco peso.

Desplazamiento

Para realizar el desplazamiento de nuestro

robot optamos por usar 2 llantas de plástico

(Figura 4), las cuales permitirían tener una

mejor tracción que una banda, además de una

rueda loca indispensable para realizar bien los

giros y lograr un equilibrio en la base del robot.

Se colocaron dos llantas a cada costado de la

parte frontal del robot, para tener un

direccionar seguro y confiable, y la rueda loca

en el centro de la parte trasera, para hacer que

cada giro realizado sea hecho con una mejor

precisión.

Figura 4. Llantas de plástico usadas para la tracción del robot en la superficie establecida en las bases.

Sensores

Los sensores de distancia utilizados son

ultrasónicos HC-SR04 (Figura 5). Estos son

capaces de detectar objetos próximos y

calcular la distancia a la que se encuentran en

un rango de 2 a 450 cm. [3]

Funcionan enviando y recibiendo pulsos

ultrasónicos y contienen toda la electrónica

encargada de realizar la medición. Su

utilización se basa en enviar un pulso de

arranque y medir el tiempo de pulso de retorno

luego de la reflexión en el objeto.

Se colocaron de la siguiente forma: Dos

sensores laterales en la parte trasera del robot

mismos que a la hora de detectar un espacio

vacío facilitaría la hora de la rotación del robot,

realizándolo en ese mismo instante y sin la

necesidad de desarrollar cálculos posteriores,

se colocó además otro sensor en la parte

delantera del robot para que pueda identificar

puntos de ruptura y detenerse a analizar

posibles salidas en caso de haber un callejón

sin salida y así evitar chocar contra la pared

(Figura 6).

Page 5: Robot Laberinto

Instituto Tecnológico de Tuxtla Gutiérrez

Ciencia y Tecnologia con sentido Humano

Ingeniería en Sistemas Computacionales

Figura 5. Sensor ultrasónico HC-SR04

Figura 6. Sensor ultrasónico frontal.

Motores

Para el movimiento de las ruedas se usaron

motorreductores (Figura 7), esencialmente

por que su performance/costo es bastante

aceptable. Consisten en motores eléctricos

que operan en voltajes que oscilan entre 3 y

12 V de Corriente Directa.

Se colocaron 2 motorreductores, uno para

cada llanta. Estos nos permitirán realizar

avances, retrocesos y giros, cambiándoles la

intensidad de voltaje con las que trabaja, por

ejemplo para realizar un giro a la derecha,

bastaría con apagar el motor derecho del

robot y mantener en funcionamiento el motor

izquierdo.

Figura 7. Motorreductor.

Alimentación

Para lograr un prototipo autónomo se requiere

de una alimentación independiente, esto se

logra mediante el uso de pilas recargables. Se

usaron dos pilas de 9 V (Figura 8), una para el

funcionamiento del arduino y sus respectivas

salidas, y otra para el funcionamiento de los

motores, que son los que principalmente

consumen la mayor energía.

Figura 8. Pila de 9V, usada como fuente de poder del robot.

Sensores ópticos

Se usaron sensores ópticos del tipo tcrt5000,

esto principalmente para identificar el cuadro

de inicio y de meta, revisando las bases

vemos que el punto de inicio es un cuadro

amarillo, mientras que la meta está contenida

en un cuadro negro, y para ganar será

necesario que el robot permanezca en meta

mínimo 5 segundos, para ello, deberemos

identificar el color de líneas que vayamos

cruzando a cada momento, para ello se

Page 6: Robot Laberinto

Instituto Tecnológico de Tuxtla Gutiérrez

Ciencia y Tecnologia con sentido Humano

Ingeniería en Sistemas Computacionales

instalaron 3 sensores ópticos en la parte

inferior del robot, junto a cada sensor para así

no confundirlas con las líneas ya predefinidas

en el suelo del laberinto. Una vez que se

detecte que están los tres sensores marcando

los colores negros indicará que estamos en el

punto de meta con lo cual suspenderán su

trabajar al menos el tiempo mínimo

establecido en las bases

Figura 9. Sensor óptico TCRT5000

Metodología para la resolución del

laberinto

Para ello se basó en el algoritmo de la mano

izquierda (Figura 10). En el cual el algoritmo

indicaría en base a la información obtenida por

cada componente como se controlarían los

motorreductores. S1 (Sensor lateral

izquierdo), S2(Sensor frontal) y S3(Sensor

lateral derecho). Se utiliza la siguiente

convención: si el sensor Si = 1 significa que se

está sensando una pared próxima, por lo tanto

no se habilita el giro hacia ese lado y si Si = 0,

se habilita el giro correspondiente.

Figura 10. Algoritmo de la mano izquierda para manipular el movimiento de los motores.

Con esto lo que se trata de evitar son los

loops, o giros, los cuales si se tratara de

resolver de una forma más robusta, nuestro

robot pasaría varias veces por el mismo

camino, cosa que de acuerdo a las bases

establecidas en párrafos anteriores será

contada como una penalización, así que

mientras más se pueda evitar esta situación,

mejor.

Programación

Para realizar el proceso de programación se

recurrió al IDE oficial de Arduino (Figura 11),

en el cual podremos especificar mediante un

lenguaje de alto nivel el funcionamiento de

nuestro robot. Con pocas líneas de código se

pueden hacer grandes cosas.

Page 7: Robot Laberinto

Instituto Tecnológico de Tuxtla Gutiérrez

Ciencia y Tecnologia con sentido Humano

Ingeniería en Sistemas Computacionales

Figura 11. IDE de Arduino

A continuación se presenta el código fuente

implementado para el funcionamiento de

nuestro robot, indicando los pines de entrada

y de salida, además de indicar el

funcionamiento de algunas rutinas.

#include <Ultrasonic.h> Ultrasonic ultrafront(4,5); // (Trig PIN,Echo PIN) Ultrasonic ultraleft(2,3); // (Trig PIN,Echo PIN) Ultrasonic ultraright(6,7 ); // (Trig PIN,Echo PIN) int sensoradeval = 0; int sensoriz = 0; int sensordr = 0; int v=100,tg=400,ta= 300; void setup() { Serial.begin(9600); pinMode(10,OUTPUT); pinMode(9,OUTPUT); pinMode(11,OUTPUT); pinMode(13,OUTPUT); } void loop() { delay(6000); while(true){ SENSORIZQ(); } } void acomodateD(){ delay(100); digitalWrite(10,LOW); analogWrite(9,v+30); digitalWrite(11,LOW); analogWrite(13,v); }

void SENSORADEL() { //.print("Front: "); //Serial.print(ultrafront.Ranging(CM)); // CM or INC //Serial.print(" cm " ); //delay(50); if(ultrafront.Ranging(CM) > 15){ Serial.println("Avanzare hacia adelante"); if(ultraleft.Ranging(CM)<8){ acomodateD(); delay(ta); }else{ IRADELANTE(); delay(ta); } } else { Serial.println("No hay espacio para adelante"); SENSORDER(); } } void SENSORIZQ() { //Serial.print("Left: "; //Serial.print(ultraleft.Ranging(CM)); // CM or INC //Serial.print(" cm " ); // delay(50); boolean band=true; int daux1, daux2,aux3; if(ultraleft.Ranging(CM) > 15){ //Si tiene un espacio mayor a 15 gira a la izquierda Serial.println("Voy a girar a la izquierda"); IRIZQUIERDA(); delay(tg); /*if(ultrafront.Ranging(CM) > 15){ IRADELANTE(); delay(500); }*/ if(ultrafront.Ranging(CM)<10 ){ analogWrite(10,v); digitalWrite(9,LOW); digitalWrite(11,LOW); analogWrite(13,v); delay(ta-200); aux3=21; IRDERECHA(); delay(tg); }else{ IRIZQUIERDA(); delay(tg); do{ Serial.println(ultrafront.Ranging(CM)); IRADELANTE(); Serial.println("Tengo espacio enfrente avanzaré un poquito"); delay(ta); Serial.println(ultrafront.Ranging(CM)); daux1=ultraleft.Ranging(CM); if(band==true){ daux2=ultraleft.Ranging(CM); band=false; } aux3=daux1-daux2; }while(ultrafront.Ranging(CM) > 15 && aux3<20); } } else {//izquierda menor que 15

Page 8: Robot Laberinto

Instituto Tecnológico de Tuxtla Gutiérrez

Ciencia y Tecnologia con sentido Humano

Ingeniería en Sistemas Computacionales Serial.print("izq "); Serial.println(ultraleft.Ranging(CM)); Serial.println("Casi estoy pegado de lado izquierdo"); SENSORADEL(); } } void SENSORDER() { //Serial.print("Right: "); //Serial.print(ultraright.Ranging(CM)); // CM or INC //Serial.println(" cm" ); //delay(50); if(ultraright.Ranging(CM) > 15){ Serial.println("Giraré a la izquierda"); IRDERECHA(); delay(tg); IRADELANTE(); delay(ta); } else { //GIRO COMPLETO POR MITADES IZQUIERDA Serial.println("No hay espacio por ningun lado, dare media vuelta"); IRIZQUIERDA(); delay(tg); STOP(); IRIZQUIERDA(); delay(tg); } } void IRADELANTE(){ digitalWrite(10,LOW); analogWrite(9,v); analogWrite(11,v); digitalWrite(13,LOW); } void IRATRAS(){ analogWrite(10,v); digitalWrite(9,LOW); digitalWrite(11,LOW); analogWrite(13,v); } void IRIZQUIERDA(){ IRATRAS(); delay(100); analogWrite(10,v); digitalWrite(9,LOW); analogWrite(11,v); digitalWrite(13,LOW); } void IRDERECHA(){ IRATRAS(); delay(100); digitalWrite(10,LOW); analogWrite(9,v); digitalWrite(11,LOW); analogWrite(13,v); } void STOP(){ digitalWrite(10,LOW);

digitalWrite(9,LOW); digitalWrite(11,LOW); digitalWrite(13,LOW); }

Pruebas

Se realizaron varias pruebas en suelos de

diferentes materiales con el objetivo de lograr

una buena calibración en los giros y el rango

de los sensores, provisionalmente se creó un

laberinto construido con paredes de base de

cartón, y se probaron diferentes condiciones

de decisiones.

Como se puede apreciar en las siguientes

imágenes.

Figura 12. Prueba en una línea recta para determinar la estabilidad de la rueda loca.

Figura 13. Prueba decisión giro izquierdo, si encuentra un espacio vacío en el sensor lateral izquierdo girará

hacia la izquierda.

Page 9: Robot Laberinto

Instituto Tecnológico de Tuxtla Gutiérrez

Ciencia y Tecnologia con sentido Humano

Ingeniería en Sistemas Computacionales

Conclusiones

En este trabajo se realizó una investigación y

análisis exhaustivo sobre cada uno de los

componentes que nos permitirían realizar un

robot autónomo capaz de resolver cualquier

tipo de laberinto que tuviera cierres de 90º en

cualquier sentido.

Pese a las limitaciones de recursos con las

que se puede contar, se logró realizar un

prototipo barato en términos económicos,

utilizando equipamiento genérico, lo que

indiscutiblemente hace a un robot único, y que

le permite ser mejor que los demás es su

software, para ello se requiere contar con un

buen algoritmo de solución del problema, la

solución dada en este documento es sólo una

de las muchas alternativas que existen para

lograr dicho objetivo.

Este proyecto pese a ser muy básico se puede

seguir expandiendo hasta, como se

mencionaba en un inicio, ir agregando nuevos

módulos y no sólo limitarlo a que resuelva

laberintos, sino que podría incluso usarse con

otros fines, como el servicio a la comunidad.

Se espera así que el lector, pueda elaborar un

juicio y soberana idea sobre que podría

resultarle útil o no, y adecuarlo a sus

necesidades.

Aplicaciones del robot en un entorno

social

Si bien este prototipo fue realizado sólo con el

objetivo de resolver laberintos, se puede

adaptar y mejorar para funcionar como un

seguidor de gas, solamente bastaría con

agregar el sensor apropiado para realizar

dichas mediciones, y cuando se detecté que

existe una fuga de gas acudir inmediatamente

al sitio de origen e indicar de manera remota a

personal capacitado el punto de origen de

esta, y así ahorrar en gran medida el tiempo y

el riesgo de exposición de personas ante tales

situaciones. Esto es sólo uno de las muchas

otras aplicaciones que pueden basarse en el

prototipo de robot resolvedor de laberintos.

Referencias

[1] Arduino, «Arduino,» 26 Mayo 2016. [En línea].

Available:

https://www.arduino.cc/en/Guide/Introduction#.

[2] Club Robotec Ittg, «Club Robotec,» 26 Mayo 2016.

[En línea]. Available:

http://clubrobotecittg.blogspot.mx/p/lalaberinto.html.

[3] Geek Factory, «Geek Factory,» [En línea].

Available:

http://www.geekfactory.mx/tienda/sensores/hc-

sr04-sensor-de-distancia-ultrasonico/. [Último

acceso: 26 Mayo 2016].