Buenas tardes compañeros, soy programador pero loco por la electrónica y por arduino.
Estoy realizando un proyecto muy ambicioso parar mis bajos conocimientos en electrónica y ya llegue a un punto donde quede atascado, He buscado en internet y no he visto ni una luz sobre información de como poder lograr una funcionalidad de mi robot.
Resulta que mi robot debe memorizar un obstáculo y luego debe recordarlo para sortearlo incluso antes de ser censado nuevamente. NO es un seguidor de lineas ni nada por el estilo, el robot puede andar por toda la superficie y en cualquier momento encontrar un obstáculo.
Lo que pretendo no es que siempre cense el mismo obstáculo un millón de veces, pues he notado que el avance se vuelve lento al chocar contra las paredes y demás obstáculos, lo que quiero solucionar es que de alguna manera al chocar con un obstáculo este lo guarde en la memoria SD (había pensado con un GPS guardar X y Y del obstáculo .. para luego crear una alerta y evitar el obstáculo automáticamente antes de ser censado nuevamente) pero me dicen que el GPS no es tan exacto para esta tarea.
Alguna idea de como podría geo-posicionar obstáculos ???
Lo que quiero conseguir adicionalmente a futuro es ordenarle al robot que se dirija automáticamente a uno de esos obstáculos guardados en la memoria.
Si el recorrido siempre es el mismo y los obstáculos siempre estarán en el mismo sitio, igual lomás sencillo es un sistema RFID.
QUe harás? Le pondras un tag a cada obstáculo? No entiendo tu idea.
La mejor alternativa a esta consulta ya la hemos debatido pero no tiene una solución simple.
Investiga el iRobot, el robot de limpieza que solo usa dos ruedas y otra rueda loca y que sabe siempre donde esta y APRENDE donde estan los obstáculos.
Hay información, pero nunca resolvimos como el robot se da cuenta si una rueda patina... sugerimos que si no avanza pero como no tenemos mas que un enconder por rueda todo giro es avance..
Bueno búscalo a ver si te sirve.
Para mi es una de las soluciones mas simples. Dos ruedas, dos encoders, cada movimiento es almacenado.. y traducido en una ruta y por ende una posición.
Claro que el iRobot almanecena el recorrido en tanto y en cuanto no lo levantes y lo pongas en una nueva posicón de la habitación en cuyo caso debe comenzar de nuevo, poque no tiene manera de reconocer nada.
Sino hay que pensar en algun sistema de visión robótica estereo con medicion de distancia y reconocimiento de objetos, algo que a mi me supera hoy pero que puede ser posible.
iburol:
Si es así, ¿has visto esos coches que aparcan sólo? Pues eso, programa que se mantenga a cierta distancia de los obstáculos y listo.
Gracias por aportar tus ideas, si, el problema de sortear los obstáculos se soluciona como dices .. con sensores, pero la idea era crear una especie de memoria, para en un futuro poder darle la orden que se desplace directamente hacia uno de esos obstáculos en particular y sepa como llegar.
surbyte:
Sino hay que pensar en algun sistema de visión robótica estereo con medicion de distancia y reconocimiento de objetos, algo que a mi me supera hoy pero que puede ser posible.
Gracias por tu respuesta, si tienes razón el robot puede usar visión, algo como el kinet del xbox, pero el problema continuaría por que detectaría el obstáculo con su visión... ¿ y como guardarlo para que recuerde que ahí esta ? sigue la interrogante de como geo-posicionar el obstáculo.
iburol:
Si el recorrido siempre es el mismo y los obstáculos siempre estarán en el mismo sitio, igual lomás sencillo es un sistema RFID.
Gracias por tu respuesta, no, el recorrido nunca va a ser el mismo, el robot estará libre y autónomo .. si, he pensado en usar RFID pero para marcar objetivos importantes donde el robot debe hacer alguna tarea especifica con el. Pero sigo con el problema que no se como indicarle al robot la ruta que debe tomar para llegar a ese punto marcado con el TAG RFID .. de lo contrario el robot tendría que iniciar una búsqueda siega hasta que por casualidad se tope con ese TAG.
Comencemos desde 0 si me permites.
Que quieres hacer? Porque es tan importante saber donde esta cada obstáculo?
Ahora sigo con las ideas:
Leiste algo del iRobot? Si usas las ruedas con encoder puedes tener un registro del mapa del sitio donde se mueve el robot. Como referenciar el objeto detectado ya sea por contacto o por vision stereoscópica es todo un tema, para analizar.
El irobot arma un mapa del sitio. Pero si lo levantas vuelve a hacerlo porque en un sentido o en todo sentido es bobo, recuerda todo el mapa pero comenzando del mismo sitio o sin levantarlo.
Como te dije, este es un debate que en su momento no resolvimos.
Bueno pero si puedes fijar sitios y usarlos como referencia, entonces la cosa se simplifica.
Bastará conque el robot en un inicio vaya a buscar uno de esas referencias y luego se desplace a la segunda (supongo) y entonces estará UBICADO. Como lo ves?
El tema es que para encontrar la segunda como se lo indicas? Hacia donde gira para hacerlo?
SI .. es realmente difícil y complejo ... hoy alguien experto en robotica me contó que lo que estoy buscando es extremadamente complejo, que inclusive hay carreras o especializaciones universitarias para poder lograrlo.
Tonces mi proyecto queda congelado, pues todas las utilidades planeadas funcionan si el robot es consciente de donde esta y donde están los objetivos a los que debe acudir.
Por el momento vamos a probar con un kinet de xbox si podemos lograr algo dándole esta visión al robot. Estaré contando si hay avances.
Esto es lo mejor que he encontrado. IPS (Indoor Position System) hay mucha info pero esto es lo mejor
Tanto google como Nokia trabajan en sistemas de este tipo e introducen mapas de shoping, aeropuertos y lugares grandes.
Broadcom presentó un chip BCM4752 que soporta sistemas IPS que pronto funcionarán en los smartphones.
Investiga por este lado que luce como interesante.
Hallé una pregunta muy similar a la tuya en un foro en inglés que dió lugar a un debate amplio.
Una de las respuestas mas aceptadas fue el método sugerido por Go_zalo, la bola de un mouse como sensor de posición.
Otro es usar motor paso a paso en lugar de DC y con ello sabrás como te mueves pero este concepto tiene el problema que requiere saber de donde partió, o sea su coordenada 0,0.
Y acá viene lo bueno: Plantean usar ya sea un detector ultrasónico, o un barrido laser para poder ubicarlo en el lugar y luego reconociendo el mapa puedes saber donde estas. No sera preciso al 100% pero es algo..
The problem of figuring out a robot's position in its environment is called localization. Computer science researchers have been trying to solve this problem for many years, with limited success. One problem is that you need reasonably good sensory input to figure out where you are, and sensory input from webcams (i.e. computer vision) is far from a solved problem.
If that didn't scare you off: one of the approaches to localization that I find easiest to understand is**particle filtering**. The idea goes something like this:
If you search around a bit, you'll find plenty of examples: e.g. a video of a robot using particle filtering to determine its location in a small room.
Particle filtering is nice because it's pretty easy to understand. That makes implementing and tweaking it a little less difficult. There are other similar techniques (like Kalman filters) that are arguably more theoretically sound but can be harder to get your head around.
surbyte:
Y acá viene lo bueno: Plantean usar ya sea un detector ultrasónico, o un barrido laser para poder ubicarlo en el lugar y luego reconociendo el mapa puedes saber donde estas. No sera preciso al 100% pero es algo..
Hola, gracias por tu respuesta ... muy interesante la info ... ya la estoy revisando y pues ese el resultado que estoy buscando con la utilización del kinect de xbox en el robot.
Quisiera hacerte una pregunta ... cual es el láser del que hablas para hacer el barrido ?? pues he encontrado modulos de eco y de infrarrojo pero son muy limitados en el espacio que pueden abarcar...
Imagino que un laser del tipo de los que usan los coches tipo Google. Algo no barato.
Buscas una especie de scanner 3D, con limitación de barrido a la altura del robot.
pues, al parecer el tema ya es viejo, pero si a alguien le sirve, lo mas acercado a un gps en interiores serían los sistemas beacon, los cuales trabajan con bluetooth sería cuestíon de montar un emisor en el robot y 3 receptores (o al revés) uno en cada esquina de la habitación predefinir las medidas de la superficie en el programa y mediante triangulación medir la posición del robot (si necesitas precisión milimétrica olvídalo, no sirve este método) guardar como un arreglo char en un txt en la SD cada vez que se encuentre con un obstáculo, así lo evitará con antelación, (eso suponiendo que el obstáculo siga ahí la próxima vez que el robot realice el barrido, de otra forma sería inútil esquivar algo que no se encuentra ahí)