Práctica 1B: Vacuum Cleaner

Descripción

  • Lo que queremos conseguir con esta segunda parte de la practica es encontrar un algoritmo lo suficientemente eficiente para que limpie una gran parte de la casa en 15 minutos.
  • Recordar que al igual que en la primera parte, la aspiradora no puede hacer uso de localización, simplemente de sus sensores.

Sistema

  • Haremos uso de una maquina de estados que en función de la información que le proporcionen sus sensores actuará de una forma u otra.
  • El funcionamiento principal de la aspiradora es avanzar, cambiar de dirección si tiene alguna pared u objeto cerca y ademas realizar espirales para limpiar.

Hardware

  • Como actuadores tendremos las ruedas del robot las cuales se podrán mover de forma linear y angular para avanzar y girar la aspiradora.
  • Como sensores disponemos de dos: Un láser LIDAR 180º para saber la distancia con todas las paredes y muebles de la casa y los bumper que funcionaran como botones que al ser presionados nos indicaran que el robot se ha chocado con algo (central / izquierda / derecha).

Software

Solución con varias espirales

  • Para resolver esta práctica usaremos principalmente el láser LIDAR y los actuadores.
  • Al igual que en la practica anterior en la que se hace uso del láser, utilizaremos una maquina de estados, en este caso 3 estados ya que añadiremos otro para hacer una espiral.
  • Su estado inicial sera siempre hacer una espiral con la cual podrá limpiar una gran parte si se encuentra en un espacio abierto.
  • Sus otros dos estados serán los usados anteriormente para el láser, uno para avanzar hasta que se choque y otro de girar para tomar una nueva dirección al chocarse.
  • El giro del robot durara un determinado tiempo que cada vez sera distinto ya que ira variando dentro de un rango para así conseguir que no entre dentro de un bucle.
  • Para hacer que entre en una espiral dejaremos que el robot avance durante un determinado tiempo que al sobrepasarlo decidirá hacer otra espiral.
  • De normal con este algoritmo suele limpiar entre un 50%–60% de la casa, la cual es bastante viendo que son 15 minutos. Si llevamos esta aplicación fuera del simulador seria un algoritmo bastante eficiente para una aspiradora sin localización.

Otras soluciones

  • La primera solución iniciará haciendo una espiral hasta chocarse en una pared y después seguirá esta, bordeando así todas las paredes de la casa y algunos muebles. A priori parece un buen algoritmo que llega a superar los porcentajes de limpieza del algoritmo que yo he implementado en simulador pero al llevarlo a la vida real el hecho de limpiar solo bordeando la casa me parece una forma poco eficiente.
  • La segunda solución seria al igual que la anterior empezando con una espiral hasta chocarse. Después se dedicaría a ir de pared en pared girando de forma aleatoria. En mi opinión tiene un porcentaje de limpieza mas o menos parecido al de mi algoritmo en simulación y seria igual de eficiente fuera de este entorno.
  • La tercera solución que se me ocurrió fue ir de pared en pared. Primero localizo el pico de la casa y después voy limpiando de arriba a abajo y luego de izquierda a derecha. Parece un algoritmo bastante eficiente pero le hecho de que cada casa tenga una forma o la disposición de muebles puede llegar a causar bucles o porcentajes bajos de limpieza.

Conclusiones

  • Existen bastantes algoritmos para limpiar pero el hecho de que no pueda localizarse mediante un mapa que se le haya dado o que el haya creado nos limita mucho el conseguir limpiar el 100% de la casa y ademas hacerlo en un buen tiempo.
  • Como he nombrado en todas las soluciones, todas son validas y algunas limpian mas que otras en mejores tiempos pero llevadas a la vida real creo que el hecho de que tenga un giro aleatorio haría que llegase a completar el 100% de limpieza en algún momento, cosas que las otras no llegarían a conseguir.

Solución Final

  • Como he dicho anteriormente, el algoritmo que he decidido utilizar es hacer que se vaya moviendo de forma aleatorio y de vez en cuando intente realizar alguna espiral. Aquí muestro una ejecución del algoritmo (no es la mejor ejecución pero no podía estar regrabando 15 minutos de vídeo todo el rato 80 veces)

--

--

Juan Carlos Manzanares Serrano
PRÁCTICAS ROBÓTICA MÓVIL

Estudiante de Ingeniería de Robótica Software en la Universidad Rey Juan Carlos.