Práctica 1A: Vacuum Cleaner

Descripción

  • La intención de esta primera parte de la practica es hacer que una aspiradora sea autónoma sin hacer uso de localización, simplemente de sus sensores.

Sistema

  • Haremos uso de una maquina de estados que ira evaluando su situación con el entorno y tomara decisiones.
  • El funcionamiento principal de la aspiradora es: Voy hacia una dirección limpiando hasta que me acerque a una pared, mueble… Si me choco o estoy cerca (dependiendo de que sensor usemos) me retirare un poco y giraré en una dirección durante un tiempo. Después la aspiradora retomará su camino.

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

Para esta practica he sacado dos soluciones en función del sensor que utilizaba.

Solución con bumper

  • Esta primera solución se puede llamar choca gira ya que funciona de la siguiente manera: Avanzo hasta que uno de mis bumper ha sido presionado (choque), me retiro un poco, giro y vuelvo a avanzar.
  • Todo esto como ya he nombrado anteriormente funciona con una maquina de estados, específicamente de 3 estados: Avanzar, Retroceder y Girar.
  • Para optimizar un poco el giro dependiendo del bumper que se presione giro en una dirección o en otra, si me toca el de la derecha voy a la izquierda y si es el de la izquierda pues voy a mi derecha. Además si recibe un choque de frente escoge una dirección a la que girar al azar.
  • Por ultimo para evitar que se quede en un posible bucle he añadido un tiempo mínimo y máximo de alejamiento y giro y cuando tenga que hacer una de estas acciones cogerá un valor al azar dentro de ese rango. Con esto conseguimos que a veces gire mas o menos e igual con el retroceso.
  • Está solución es bastante optima para limpiar y mas barata en cuanto a componentes ya que es capaz de limpiar bastante pero lo malo es que va siempre chocándose con todo y en la vida real puede llegar a mover o tirar cosas.

Solución con láser

  • Esta segunda solución tiene el siguiente funcionamiento: Avanzo hasta que el sensor LIDAR me retorne un valor el cual yo considere suficientemente bajo para pensar que está bastante cerca de una pared u objeto, giro y vuelvo a avanzar.
  • Esto está implementado al igual que el choca gira con una maquina de 2 estados: Avanzar y Girar.
  • Al igual que el anterior elegía donde girar en función del bumper, este también evalúa en función de por donde haya medido el láser que se esta acercando. Partimos el láser 180 en 3 y si detecto objeto en los rangos 0-60 giro a la derecha, si es 60-120 elijo un giro al azar y si es 120-180 giro a la izquierda.
  • Esta solución es igual de optima para limpiar que con bumper pero llega a ser mas caro comprar un láser LIDAR pero la mejora que este nos proporciona es que no ira chocándose por toda la zona con las paredes y objetos.

Conclusiones

  • Como ya he dicho varias veces, el algoritmo para ir limpiando de esta forma funciona bastante bien aunque tiene altas probabilidades de quedarse atascado.
  • También, una de los mayores contras que tiene es que el limpia sin saber si está sucio o si ya ha limpiado por esa zona y es muy probable de que se deje muchas zonas sin limpiar.
  • Sin localización no podemos hacer que limpie todo de la manera mas eficiente posible pero en la segunda parte de esta practica mostraré la implementación de un algoritmo para limpiar “mas” zonas y de forma mas eficiente.

Solución Final

  • En el siguiente vídeo se muestra cuanto es capaz de limpiar la aspiradora en unos 15 minutos a una velocidad considerable. Para ello he decidido usar el láser para ir moviendome por la casa.

--

--

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

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