pasión por la robótica en Argentina
[PRINCIPAL] [NOSOTROS] [ACTIVIDAD] [NOTICIAS] [ARTICULOS] [GALERIA] [ENLACES] [CONTACTO]
Desarrolladores de Robots:
Un grupo donde podemos conversar de los temas que nos interesan

Desarrolladores de Robots funciona en Grupos Yahoo! ar.groups.yahoo.com
Sensores - Lógica de atascos
Basado en el artículo "Stasis Logic" de Chris y Dawn Schur

Información completa sobre -> Sensores para Robots

Introducción

En el entorno normal de una casa, un robot se encontrará con muchos obstáculos que puede detectar con sensores infrarrojos de proximidad comunes, o con un sistema de parachoques de detección de choque. Sin embargo, hay numerosas situaciones en las que el robot se quedará atascado, enredado o encajonado sin que esos detectores sean capaces de definir la situación. Los detectores de atascos cubren este importante hueco en los datos sensoriales. Permitirán que el robot intente liberarse y continúe con la tarea que se le asignó. En este reporte, discutiremos los métodos de detección de atascos y los comportamientos programados que se deben utilizar en un robot hogareño.


Aplicación

Nuestra experiencia es que aquellos robots que hemos construido sin detectores de atascos al rato de operar quedan atrapados en una esquina, desnivel o en un saliente de un mueble, o en una lámpara de pie con una extensión de cable, aunque lo hayamos construido con toda precisión y cuidado. La naturaleza del entorno de una casa, no preparado, presenta complejidades que no se pueden prever caso a caso.

Los robots hogareños tienen, en general, dos situaciones de operación:

  • 1. Cumplir una tarea y
  • 2. Desplazarse para llegar al sitio donde se debe cumplir con una tarea

Esto puede estar definido en "capas", en una arquitectura de subsunción. El recorrido hacia y desde una meta se puede poner en una capa, junto con el comportamiento ante un atasco, en el nivel apropiado. Un ejemplo simplificado puede ser:

  • Comportamiento de Deambular, en el nivel más bajo,
  • Comportamiento de Impacto de Parachoques,
  • Comportamiento de Atasco,
  • y finalmente la tarea principal: Ir a buscar un objeto y tomarlo.

Con este tipo de arquitectura, si el robot queda atrapado en camino a buscar el objeto y los parachoques no detectan un contacto, se activará el comportamiento de atasco, y éste tratará de liberar al robot.


Técnicas de detección de atascos

Discutiremos aquí una variedad de técnicas para detectar atascos, y los detalles asociados con cada método.


Rueda de detección de atascos

Este es uno de los métodos más directos para detectar un atasco. Consiste en la colocación de una pequeña rueda de arrastre en la parte inferior, o delante del robot, con un detector de rotación óptico o mecánico. Cuando el robot rueda hacia su meta, el detector de la ruedita mide la distancia recorrida y la dirección del avance. Codificando la rueda con líneas negras o perforaciones podemos determinar mecánicamente la distancia mínima que debe rodar el detector para indicar un movimiento. Por ejemplo, si se ponen dos agujeros a 180° uno de otro en una rueda de 2,5 centímetros de diámetro, o sea unos 7,5 centímetros de circunferencia, la detección mínima de distancia recorrida será de un poco más de 3,7 cm. Esta táctica se hace importante luego en este análisis.


Sensor óptico de suelo

Un método obvio de detección es, simplemente, medir el brillo de un haz de luz reflejado en el piso debajo del robot. Esto se puede implementar con facilidad con un LED rojo que proyecte un círculo de 2,5 cm de diámetro en el piso, y el monitoreo de esa área con un fototransistor. Cuando el robot se mueve sobre un piso con alguna irregularidad, como por ejemplo un piso de madera como el parquet, la reflexión cambia cuando el robot se mueve. Un gran defecto de este método es que si el piso tiene muy pocas irregularidades, el detector de atasco reportará, falsamente, una condición positiva. Además, incluso en un piso irregular, se deberá integrar en el tiempo los datos detectados, algo que es necesario para lograr una variación pareja y suavizada, y sin picos bruscos. Muchas veces un robot quedará enganchado en un cable de un electrodoméstico, y entonces se moverá una y otra vez hacia adelante y hacia atrás, intentando sobrepasar la situación. Esta condición engañará a un sensor óptico, que no podrá darse cuenta de cuál es el movimiento que se está produciendo.


Detector infrarrojo de distancia

Otro método interesante es monitorear las distancias de objetos cercanos y de las paredes. Si la distancia cambia todo el tiempo, significa que el robot debe estar en movimiento. Con estos detectores, en el caso de que el robot se enganche con un cable en una habitación con paredes alejadas, el robot podría no ser capaz de detectar las paredes y entonces no trataría de escapar... en absoluto.


Detector de distancia por sonar

Su uso es similar a la medición descripta arriba con detectores IR, pero con un rango mucho mayor. La mayoría de las habitaciones serán fáciles de recorrer con un método de detección como éste, que además aporta la capacidad de evitar choques. El problema aquí es el costo.


Detectores visuales

Para detectar el atasco e inmovilización del robot, se puede utilizar también una cámara CMU (el nombre viene de Carnegie Mellon University, quienes la diseñaron), siempre que haya suficientes contrastes en un cuarto como para proporcionar blancos en movimiento. Cuando el robot se esté acercando a una pared o a un obstáculo, el histograma cambiará continuamente. Esto también se puede utilizar para la detección de un atasco. Sin embargo, en este caso no queda para nada claro cómo se fijaría el umbral de escape. Es probable que este sea el método más costoso y más complejo que consideramos.


Fotoceldas de luz visible

Ponga un fototransistor en el extremo de un tubo y colóquelo apuntado hacia delante. Cuando el robot se mueva, la salida del detector variará. Sin embargo, la integración de esta señal puede ser problemática. Pero con suficientes contrastes en la habitación, esta puede ser una solución muy económica.


Detección del campo magnético

Una brújula electrónica puede funcionar especialmente bien en un ambiente exterior. De un precio moderado, estos detectores ofrecerán a su salida una medición variable de ángulo cuando el robot se mueva. Naturalmente, en un curso en línea recta no se obtendrá ninguna indicación de variación, por lo cual se detectaría una falsa situación de atasco. De todos modos, el detector es tan sensible que se pueden captar pequeñas variaciones si el robot se mueve sobre rocas e irregularidades del terreno.


Detección de atasco programada

Se trata de la solución más económica, pero puede ocurrir que la reacción del robot se produzca después de un tiempo excesivo. El área de acción de un robot en una casa es de tamaño limitado, por lo cual si el robot no toca con un objeto en cierto tiempo, es muy probable que esté atrapado. Se puede usar aquí cualquier sensor capaz de detectar un obstáculo. Aunque esto pueda parecer una buena solución de costo, la realidad es que el robot puede quemar sus motores en los minutos transcurridos hasta que este tipo de detección se dé cuenta de que hay un atasco y tome alguna medida para escapar de él. Las aspiradoras robóticas baratas utilizan este método y, en realidad, pasan más tiempo trabadas que haciendo su tarea.


Rueda de detección de atascos: diseño mecánico

Se puede observar a continuación la mecánica básica en un pequeño robot:


Una vista de frente que muestra la rueda en contacto con el piso entra las ruedas impulsoras


Vista lateral que muestra un soporte curvado en el que se han colocado los interruptores ópticos. El soporte aplica una presión constante para mantener esta rueda contra el suelo

El diseño mecánico es simple, y hay distintas maneras de implementarlo. Una posibilidad es una leva con algún movimiento limitado de rotación, que empuja una rueda de arrastre contra el suelo. En superficies desparejas, gracias a la leva la rueda puede adaptarse a los desniveles. En el brazo se ha instalado un fotosensor que detecta las secciones oscuras que hay sobre la superficie de la rueda de arrastre, que es transparente. En otro montaje, el concepto es mucho más simple y de pequeño tamaño: como se ve en la ilustración, la rueda de arrastre está montada en un eje y su soporte fue pegado directamente al optosensor. El conjunto está montado sobre un tramo de planchuela plástica curvada, que presiona la rueda contra el suelo. El sensor diseñado así resultó fácil de instalar. El soporte curvado se construyó con un plástico llamado Lexan y se dobló con una pinza de punta, ya que este plástico no se quiebra al doblarlo, como el acrílico.


Vista frontal que muestra la rueda detectora de atascos en contacto con el suelo


Presión sobre la rueda para mostrar su elasticidad

Vemos aquí otros dos tipos de soluciones mecánicas:


Aquí está la rueda de detección de atascos hecha con un disco negro con perforaciones


Otro tipo de sensor de tipo reflectivo que utiliza un sensor de IR

Rueda de detección de atascos: diseño electrónico

La electrónica depende de cómo se detecte la rotación de la rueda. Con la rueda con bandas negras, se utiliza un opto-reflector (como el CNY70, por ejemplo) para "ver" el reflejo de IR de las bandas. Con este tipo de detector, si bien se puede conectar en directo con un resistor a +5V en el colector del transistor de salida del sensor, si la señal resulta débil sólo se necesita un amplificador operacional LM324 para amplificar la señal, seguido de un comparador con histéresis, cuya salida se lleva a la entrada del microcontrolador.


En la mesa de pruebas, se hace girar la rueda a una velocidad similar a la que operaría para probar la amplitud y frecuencia


Se observa la señal de 0 a 5 V que se obtiene del sensor, a 2v/div

Se puede seguir este camino o, si se hace la rueda suficientemente delgada y transparente, utilizar un fotosensor de ranura. En este caso, con un resistor apropiado a +5V (pull up), los sensores de ranura que tienen un fototransistor a la salida podrán entregar una señal TTL a la entrada del microcontrolador, sin necesidad de amplificación. Lo bueno es que muchos PIC tienen entradas Schmidt trigger que aceptan sin problemas la forma de onda casi cuadrada de estos sensores. En otros procesadores que no tengan entradas así, se puede agregar un integrado con entrada Schmidt trigger para dar forma correcta a la señal.


Consideraciones de programa

La programación para la detección de atasco es bastante directa. En esencia, consiste en un autómata finito con dos estados primarios: Exploración y escape. Durante el estado de exploración, el detector de atasco se comprueba continuamente para determinar si hay una condición de atasco. Esto se hace muy fácil: se cuentan las transiciones de señal durante un intervalo pequeño, como por ejemplo 5 segundos. Si durante ese tiempo la cuenta desciende por debajo del valor previsto, o es cero, entonces se determina una condición positiva y se dispara el estado de escape del atasco.

Para escapar de la condición de atasco, la idea general es invertir la dirección del avance por un pequeño tiempo y girar a un lado. La rutina más exitosa probada en un ambiente hogareño es hacer un retroceso con una sola rueda y la otra quieta, y luego a la inversa, es decir, moviendo ahora la rueda que antes quedó quieta (ver video). La operación se repite dos o tres veces. Este tipo de movimiento ayuda a liberar el robot de atascos complicadas, como en el cable de un electrodoméstico.

Luego de efectuar de este modo unos centímetros de retroceso, se hace rotar al robot a un lado o al otro un ángulo azaroso. Si el detector de atasco detecta de nuevo la condición en un tiempo mínimo, se puede decidir entre reintentar la liberación o detenerse y solicitar ayuda. Además, se puede agregar una salida de detección del atasco desde el procesador de atasco, de manera que otros procesadores de mayor nivel en la arquitectura de subsunción puedan utilizar esta información sensorial para tomar decisiones de mayor nivel.


Prueba y evaluación

El robot se prueba primero en una mesa de pruebas preparada para el caso y luego se lo coloca en el entorno de una casa, con pisos de madera y también alfombras. Aquí se puede ver un vídeo de la prueba en la mesa de pruebas. Allí se ve al robot avanzando hacia un obstáculo angosto y bajo que traba su movimiento, y lo deja con sus ruedas girando a velocidad normal, pero detenido. Después de tres segundos, el robot decide que está en una situación de atasco, detiene su marcha, emite un sonido y se retira del obstáculo, retrocediendo y luego girando un ángulo azaroso.

En un entorno casero, el robot se desempeñó muy bien tanto en suelos lisos, como de madera y con alfombra. Cuando las ruedas resbalan con facilidad en una superficie lisa, se puede usar un tiempo de espera de unos 3 segundos, pero se debe acortar este tiempo en una alfombra, donde es más normal que las ruedas se queden detenidas y haciendo fuerza.


Conclusión

Las pruebas han demostrado sin ninguna duda que los detectores de atascos son absolutamente esenciales para evitar que los robots se queden atrapados en una variedad de situaciones en las que ningún otro tipo de sensor puede detectar el problema. Se trata de un simple agregado que hará que nuestro robot pueda estar no sólo horas, sino días enteros vagando por una casa sin quedarse fatalmente atrapado en una alfombra, un cable o en el ángulo de algún mueble.


Adaptación de Eduardo J. Carletti del artículo "Stasis Logic" de Chris y Dawn Schur, con autorización de los autores. Fotos © 2007 Chris y Dawn Schur.

Ver también -> Sensores mecánicos de choque (parachoques)


© 2007, 2014 Robots Argentina