# Robot que salga de laberinto



## romangua (Jul 16, 2012)

Hola a todos, este es mi primer post y quería hacerles una consulta.

Tengo que hacer de proyecto final de una materia un robot que salga de un laberinto. Estudio Ing en Sistemas por lo que mis conocimientos son de programación y no de electrónica pero bueno tengo que hacer este proyecto.

Necesito una orientación y consejos. Los requisitos son que use JAVA con estructura de datos tipo arbol o grafo y un medio de comunicación para que la lógica sea toda por la aplicación, de modo que el robot envíe datos sobre si tiene una pared en frente y la aplicación decida que hacer. 

Por el momento estuve investigando y pensé en usar 2 motores paso a paso unipolares (uno por rueda), PIC, interfaz USB y 3 sensores infrarrojos para saber si tiene una pared en frente o a los costados (asi decide por donde ir).

Necesito alguna tip de orientación! Que PIC usar o sensores etc! GRACIAS!!


----------



## Moyano Jonathan (Jul 16, 2012)

> Por el momento estuve investigando y pensé en usar 2 motores paso a paso unipolares (uno por rueda)



- En este punto hay que hacer un análisis de precisión. Si necesitas precisión en la posición, de alguna forma vas a tener que conocer donde se encuentra el eje del motor (usando algún tipo de encoder que puede ser incremental, rotacional resistivo, etc.); necesitas también saber cuanto ha recorrido el motor...pero eso lo puede procesar la aplicación, usando la información del encoder y el tiempo transcurrido.

*Usar PIC es una obligación de la cátedra ? En caso de que así sea podés usar un PIC18F4550; las razones:*

a) - No es muy caro U$10, fácil de conseguir, muchos ejemplos de uso de sus periféricos.
b) - Vos, de forma excepcional, no vas a procesar nada en el PIC, por lo tanto no necesitas de un poder de cálculo muy elevado, tan solo que te comande toda la adquisición de datos de los sensores y las comunicaciones que se pueden gestionar por interrupciones.
c) - Fácil soldarlo, montaje DIP40.
d) - Usando la interfaz USB podés descargarle los programas, grabando un bootloader.
e) - Lo podés programar en ANSI C, usando C18, donde la versión de estudiantes es gratuita.

contras:

- Se requieren conocimientos de electrónica algo avanzados y arquitectura de microcontroladores.

*Ahora..quizás PIC sea un poco complejo de usar ya que sos estudiante de Ing. Sistemas. Para esto la solución es usar Arduino (uno, mega, nano, etc); las razones de por que tendrías que usarlo:*

a) - Económico U$S20 (Ebay + envío gratis) $180 + envío caro (Argentina).
b) - No requiere conocimientos de electrónica previos muy avanzados, tampoco requiere conocimientos avanzados de programación ni arquitectura de microcontroladores.
c) - Hay muchísima...o demasiada información respecto a como se utiliza, los proyectos que podés hacer, etc. Incluso existen las librerías para conectar prácticamente cualquier cosa.
d) - Se puede programar en C/C++ ANSI C89. El lenguaje que utiliza Arduino conjuga los poderes del C con la facilidad del Java, por lo que a vos te vendría de 10.
c) - Tiene interfaz de programación directa, no necesita programador, hay muchos ejemplos de robots y sistemas de control implementados con Arduino.

contras: No le he encontrado.

*Con respecto a los sensores:*

Hay que imaginarnos a nosotros mismos dentro de un laberinto y analizar que "sensores necesitaríamos"

El principal sensor es la visión y una de las mejores formas (a mi entendimiento) son los sonares ultrasónicos. Estos miden la distancia en función del sonido, usando el efecto doppler. Las razones de mi recomendación son las siguientes:

a) - Son muy baratos en Ebay (U$S 3 + envío gratis) ...no tanto en Argentina $100 + envío caro.
b) - Hay muchos ejemplos de uso en aplicaciones robóticas.
c) - Fáciles de conectar.
d) - Tienen muy buena precisión y repetibilidad.

Un proyecto similar a lo que vos necesitas: http://www.todorobot.com.ar/proyectos/robot-pacman/robot-pacman.pdf

En fin algunos consejos básicos, vos te vas a tener que poner a investigar más.


----------



## elprofetellez (Jul 16, 2012)

te recomiendo que leas toda la teoria que de forma gratuita tiene PARALLAX sobre su robot 3pí. Ahi encuentras los descargables en PDF sobre este tipo de robots ademas de los algoritmos de programación.

saludos.


----------



## romangua (Jul 16, 2012)

Gracias por las respuestas me sirvieron bastante! Estaba leyendo algo de arduino y no creo que me dejen usarlo, me acuerdo el profe que dijo que no podemos comprar algo y que salga andando, tiene que ser hecho por nosotros. 

Mañana voy a leer con tiempo los pdf que me recomendaron.

Ahora una duda que me surge es el tema de la bateria, que batería usar? pensaba en una de celular pero son 3.6v, se puede hacer algún circuito a partir de esta batería y conseguir 5v para los pic y 12v para los motores?


----------



## elprofetellez (Jul 16, 2012)

Lee lo que te recomendé de PARALLAX; lo que tu requieres para lograr lo comentado existe, lo usa el 3pí, y se llama "Step Up". es un elevador de tensión.

Anda a leer la información.

saludos!


----------



## Moyano Jonathan (Jul 16, 2012)

> me acuerdo el profe que dijo que no podemos comprar algo y que salga andando, tiene que ser hecho por nosotros.



Podés hacerte tu propio Arduino, ahí no tendría que decirte nada. Lo único complejo sería soldar el chip FT232RL.



> Ahora una duda que me surge es el tema de la bateria, que batería usar? pensaba en una de celular pero son 3.6v, se puede hacer algún circuito a partir de esta batería y conseguir 5v para los pic y 12v para los motores?



Si conseguís motores más o menos grandes podrías usar baterias de moto de 12v para alimentar los drivers de los motores. Luego con un regulador a 5v podrías alimentar toda la electrónica de control.
Lo bueno que tienen esas baterías es que son relativamente baratas y no son demasiado pesadas. Y con cualquier cargador de baterías de ácido las recargas. Además tienen muy buena relación de descarga por lo que te van a rendir bastante.

*Comunicaciones:*

Para las comunicaciones entre la PC y el robot, podés usar Xbee. Dan un muy buen alcance, hay muchos ejemplos de uso y son relativamente baratos, aprox U$S30 la unidad.
Con ellos podés crear un enlace serial - RF de manera transparente y enviar los comandos a través del puerto USB de la PC, usando un conversor USB - SERIE.

Otra que podés hacer es usar un módulo Bluetooth, reduciendo el alcance, pero bajando los costos. Los módulos tienen un precio aproximado de U$30 en el mercado argentino y U$S 5 en ebay.
Estos módulos se comunican con tu PC/notebook a través de Bluetooth y generan un puerto serie virtual a través del cuál vos le podés enviar los comandos y recibir datos de los sensores.

Hay varias opciones más, pero en general todas tienen formas similares de conectarse al microcontrolador y a la PC.


----------



## romangua (Jul 16, 2012)

Moyano Jonathan dijo:


> *Comunicaciones:*



Nos dan dos opciones para la comunicación, PARALELO o USB. Hay mucha info sobre paralelo pero mi notebook no tiene ese puerto y un adaptador anda por los $150. Opto por usb


----------



## romangua (Jul 18, 2012)

Moyano Jonathan dijo:


> *Ahora..quizás PIC sea un poco complejo de usar ya que sos estudiante de Ing. Sistemas. Para esto la solución es usar Arduino (uno, mega, nano, etc); las razones de por que tendrías que usarlo:*
> 
> a) - Económico U$S20 (Ebay + envío gratis) $180 + envío caro (Argentina).
> b) - No requiere conocimientos de electrónica previos muy avanzados, tampoco requiere conocimientos avanzados de programación ni arquitectura de microcontroladores.
> ...



Hable con el profesor, podemos usar ARDUINO. Pero tenemos que hacer la controladora de los motores paso a paso, por lo que vi no es tan complicado hay muchos diagramas dando vuelta 

Lo que me queda por ver antes de meter mano es si puedo programar arduino desde netbeans con java, porque por lo q vi arduino tiene su propio ide. Y si desde el arduino uno puedo manejar dos motores pap, 3 sensores ultrasonido, un par de led y un altavoz. Sabes algo de esto?

Me sirvió mucho tu ayuda! Gracias


----------



## Moyano Jonathan (Jul 19, 2012)

> Lo que me queda por ver antes de meter mano es si puedo programar  arduino desde netbeans con java, porque por lo q vi arduino tiene su  propio ide.



Arduino como vos decís, tiene su propia IDE. Tenés que usar la IDE para poder desarrollar con las placas Arduino. 



> Y si desde el arduino uno puedo manejar dos motores pap, 3 sensores ultrasonido, un par de led y un altavoz. Sabes algo de esto?



Si podés manejar motores PAP, leer sensores ultrasónicos y demás, hay librerías para casi todo. Vas a tener que investigar más para sacar conclusiones. Mi recomendación es que uses motores de corriente continua mas que paso a paso, debido a que son mucho más adecuados para el desplazamiento de tu robot por el laberinto, además de que tienen la posibilidad de posicionarse de manera mucho más exacta. En los motores paso a paso estás limitado por la cantidad de pasos que puede dar el robot.

Lo que no entiendo es como vas a comandar el robot...si tu profesor dice que uses un cable USB, paralelo o serie....no tiene más sentido hacer la comunicación de forma inalámbrica con un Xbee o un módulo de RF ?

En caso de que sea obligatorio usar cables, me parece que la opción más adecuada es la de usar RS485, que te permite tener una gran distancia entre el robot y la PC de control.

Saludos !


----------



## furrichip (Jul 26, 2012)

hola, he encontrado este post y me ha recordado que tengo que seguir trabajando en el algoritmo de un robot de laberinto, tengo dos:

uno para laberinto de lineas en el suelo que ademas memoriza la ruta y calcula la mas corta





y el que sale de un laberinto de paredes gracias a sensores de ultrasonidos.





ambos robots están basados en un proyecto que tengo con un amigo, esquemas, codigo fuente, etc. lo puedes ver en la web www.pingubot.com

Si te sirve de algo aprovecha.
furri.


----------



## electroconico (Jul 27, 2012)

furrichip dijo:


> hola, he encontrado este post y me ha recordado que tengo que seguir trabajando en el algoritmo de un robot de laberinto, tengo dos:
> 
> uno para laberinto de lineas en el suelo que ademas memoriza la ruta y calcula la mas corta
> 
> ...



Felicitaciones por tus robots , te quedaron muy bien .
Muy padre el diseño del pcb 

Por cierto , buena documentacion de tu proyecto.


----------



## hernanespak (Jul 27, 2012)

hola lo puedes hacer con sensores cny 70 detectando el color de la pared si la pared es blanca manda 1 si la pared es negra manda un 0 o lo puedes configurar viceversa...utilizas un pic18f877a y los datos de los sensores cny70 los envias a las entradas que posteriormente debes configurar en tu programa como entradas digitales.


----------



## dmc (Jul 27, 2012)

romangua, sabias que si caminas por un laberinto apoyando una mano contra la pared (sin levantarla) salís de cualquier laberinto aunque no lo conozcas? puede que tardes más, pero salís.


----------



## furrichip (Jul 27, 2012)

Efectivamente, en eso se basan los algoritmos de los robots para salir de los laberintos, si miras los videos de mi post anterior, el primero (el que va siguiendo una linea negra) siempre que puede gira a la derecha hasta que llega al final, el robot del segundo video (por ultrasonidos lee donde están las paredes) siempre va pegado a la izquierda, ese escenario es solo para pruebas, en un laberinto real (con una entrada y una salida) sale sin problemas.

Esto es válido para laberintos con una entrada y una salida, pero no vale por ejemplo para laberintos con entrada y meta en el centro (como en las revistas de pasatiempos), o pruebas donde te sueltan en una posición aleatoria de un laberinto.


----------

