Sensores mecánicos de choque (parachoques)

Información completa sobre -> Sensores para Robots

Uno de los detectores que más comúnmente se instalan en un robot es algún tipo de parachoques (en Argentina "paragolpes"). Aún así, no es común encontrar información sobre la implementación y comportamiento de los sensores de este tipo. Poner en funciones la programación adecuada puede, entonces, exigir muchas pruebas y producir una buena serie de frustraciones.

Como la mayoría de los libros parecen evitar el tema, limitándose a soluciones tales como "giro a la derecha en caso de choque izquierdo" y "giro a la izquierda en caso de choque derecho", procuramos hacer aquí un análisis de la información relacionada con esta lógica de parachoques, simple sólo en apariencia.

Navegar a ciegas

Navegar con parachoques es como moverse palpando en la oscuridad: alcanzar un destino puede llevarle al robot un tiempo excesivamente largo, si es que alguna vez llega. Se entiende que es el método más básico para implementar la detección de obstáculos en un robot. Hoy día —teniendo en cuenta que la electrónica necesaria es mucho más accesible— se debería pensar en la colocación de algunos detectores infrarrojos, además de los parachoques. Pero este es tema para otro artículo.

El parachoques de un robot puede ser la única capacidad sensorial. Pero resultan necesarios aún teniendo otros métodos de detección, pues constituyen algo así como una última línea de defensa. Cuando los demás sistemas no han detectado un obstáculo, para que el robot no reciba golpes en partes delicadas de su estructura, o se quede haciendo fuerza con sus motores y gastando sus baterías en una trampa mecánica, es bueno que posea el más primitivo pero seguro y eficaz sistema de detección.

Funcionamiento básico

El contacto en un parachoques le indica al robot que hay un objeto en su recorrido, con forma y tamaño sin determinar. Ante el suceso, la lógica de control puede ordenar una maniobra que le permita salir de la situación.

Aunque muchos robots experimentales básicos se construyen con una cantidad mínima de parachoques —dos en la parte delantera, y a veces uno en la parte trasera, lo que permite una navegación primitiva—, una disposición así no será suficiente para lograr que un robot se mueva por los ambientes de una casa sin quedar atrapado en algún sitio.

Lógica convencional de parachoques

En una implementación básica, lo más típico es que la lógica funcione con las siguientes reacciones:

  • si toca el tope izquierdo, detener la marcha y girar un poco a la derecha, luego continuar;
  • si toca el tope derecho, detener la marcha y girar un poco a la izquierda, luego continuar.

Esto funciona, pero lamentablemente también es una buen fórmula para garantizar que un robot quede atrapado muy pronto en un rincón de una casa, o incluso en el recorrido más controlado de una zona de pruebas.

Primeras dificultades con los parachoques

En primer lugar, tan pronto como el robot encuentre una esquina con paredes en ángulo podrá quedar atrapado en un movimiento sin fin de ida y vuelta, hasta que se le acaben las baterías. A esto se le llama "encajonarse", y hay ciertas soluciones que se pueden utilizar para corregir la condición.

En segundo lugar, en áreas estrechas o cerradas, el robot puede quedar atrapado entre dos paredes muy juntas, rebotando entre las paredes por horas, sin ir a ningún lado. Éste es el "problema del túnel".

Si no se ha implementado una manera de saber si la parte posterior ha chocado con algo, el robot hará fuerza con sus motores para intentar retroceder. Finalmente, existiendo sensores traseros, cuando luego de una detección el robot retrocede una distancia apreciable, también puede quedar atrapado, rebotando sin cesar.

Una lógica de parachoques más completa

Colocando algunos interruptores adicionales y con una programación algo más sofisticada podemos evitar muchas de estas trampas. Se agrega así una cierta "inteligencia artificial" que resolverá mejor las situaciones de choque con obstáculos.

Veamos cada condición, y algunas soluciones potenciales.


¿Cuántos parachoques?

Es obvio que agregar un anillo continuo de interruptores de parachoques alrededor de la periferia del robot puede ser algo excesivo, un desperdicio de recursos. Los experimentos en ambientes caseros normales han determinado que cinco parachoques en el frente y uno en la parte posterior ofrecen un funcionamiento óptimo dentro de lo que es una red sensorial algo limitada.

La disposición consiste en un tope central, flanqueado a cada lado por dos topes laterales. Además, se ubica un tope en la parte posterior del robot.

El conjunto delantero debe cubrir la totalidad del ancho del robot, incluyendo cualquier parte que sobresalga, como por ejemplo las ruedas. Lo mismo vale para el parachoques trasero único.

El funcionamiento de estos topes cubrirá las siguientes detecciones:

  • 1. Frente izquierdo izquierdo
  • 2. Frente izquierdo
  • 3. Centro
  • 4. Frente derecho
  • 5. Frente derecho derecho
  • 6. Parte posterior

Antes de que definamos qué comportamiento se debe producir cuando se activa cada tope, recordemos que hay tres tipos de situaciones que debemos considerar.

Primero, un comportamiento simplemente reactivo o de reflejos. Se trata de una lógica simple de parachoques que activa un sistema preestablecido de maniobras de escape, que dependerán de cual interruptor de parachoques se haya activado.

A estas maniobras se les llama "balísticas", porque una vez que comienzan, continúan hasta el final, por lo general sin admitir nuevas entradas sensoriales. Un ejemplo sería: "Si se activa el tope derecho, primero retrocedemos medio segundo, damos vuelta a la izquierda un segundo, y luego continuamos avanzando". Es decir, el comportamiento es totalmente reactivo, con cantidades realmente insignificantes de inteligencia implicadas.

En segundo lugar, y un poco más avanzado, se pueden analizar una serie de choques que se repiten y están relacionados de manera cronológica. Esta secuencia se presenta, por ejemplo, cuando el robot queda atrapado en una situación de "encajonado", y también cuando el robot queda en una reiteración hacia adelante y hacia atrás de la que no puede escapar.

Si empleamos cierto nivel de inteligencia de supervisión, detectaríamos estos sucesos que se repiten en el tiempo y reaccionaríamos en consecuencia. Por ejemplo, si descubrimos que se producen media docena de choques sucesivos y repetitivos en unos segundos, esto puede indicarnos que estamos en una trampa del tipo "encajonado".

En tercer lugar, agregamos un factor de variación. En "inteligencia" robótica, agregar variación es, simplemente, introducir una pequeña cantidad de valores azarosos a la inteligencia estándar de reflejos de la máquina.

Esto tiene peso cuando se toma una decisión lógica con el procesador de un robot o, de manera similar, en la estructura neural de un insecto. Una pequeña cantidad de "variación al azar" puede aportar nuevas soluciones a los problemas que se presentan, e incluso puede producir comportamientos inesperados.

Para lograr esto, se debe agregar aleatoriedad matemática a nuestras reacciones.

Respuestas balísticas y por reflejo

1. Impacto frontal central

En un impacto en el parachoques central, si sólo tenemos como elemento de detección el sensor del parachoques, la opción de girar a la derecha o a la izquierda será arbitraria, puesto que, a diferencia de los infrarrojos, no nos es posible mirar a cada lado para ver si está despejado: con los parachoques, para saber si allí hay algo hay que chocar con eso.

La solución entonces es retroceder un poco para que el interruptor del parachoques ya no esté activado, y entonces el robot gira a la derecha o a la izquierda, en un movimiento seleccionado al azar con una posibilidad de 50% para cada lado. El ángulo de giro será el mayor en el grupo de parachoques delanteros, típicamente de unos 90 grados.

Es muy bueno agregar un valor al azar para no caer dos veces en la misma situación. Se define una rotación de 45 grados sumada a una cantidad seleccionada al azar, que va desde 0 hasta 45 grados. Esto, en conjunto, da un giro máximo de 90 grados.

2. Contacto en los parachoques adyacentes al centro

En cada lado del parachoques central tenemos parachoques adyacentes. Éstos, debido a la curvatura del cuerpo, están en un ángulo de unos 30 a 40 grados respecto al eje de la dirección de avance del robot, de modo que el ajuste de dirección del robot, en caso de producirse este tipo de contacto, debe estar en un valor de ángulo similar al de esta posición.

A un movimiento de este tipo se la llama "reacción proporcional".

Cuando uno de estos parachoques hace contacto con un obstáculo, se retrocede hasta que quede liberado el interruptor del parachoques y después se gira unos 45 grados en dirección opuesta a la del impacto.

Una vez más, un valor de azar agregado al giro nos asegurará que el robot no se quede en una repetición hacia adelante y hacia atrás en situaciones en las que el espacio para el movimiento es ajustado. El giro, entonces, es de 22 grados, y se le agrega una cantidad al azar de entre 0 y 23 grados para sumar un total de 45 grados de rotación.

3. Contacto en los parachoques apartados del central, o laterales

Un contacto en estos topes indica un choque casi lateral en el robot. La reacción debe ser mínima, de modo que, cuando sea necesario, el robot pueda atravesar pasillos estrechos.

El robot debe retroceder en este caso algo así como la mitad de la distancia que se mueve en un impacto del parachoques central. Esto es porque el ángulo de los topes laterales está a más o menos 60 grados respecto a la dirección de avance, por lo que se necesitará menos giro para superar el obstáculo.

Luego de este retroceso, el robot gira a la derecha o a la izquierda, según en qué flanco haya sido el contacto, un total de 22 grados. Como en los otros casos, la mitad de este ángulo es fijo y la otra mitad es un valor azaroso entre 0 y 11 grados.

En estos parachoques será bueno ir experimentando el valor de giro y tiempo de retroceso hasta que el robot pueda avanzar con fluidez al recorrer un pasillo.

4. Impacto trasero

El parachoques trasero, si se coloca una extensión mecánica tal como una antena de alambre o una banda de metal que cubra por entero la parte trasera, puede tener un único interruptor. Esto es porque la mayoría de los robots sólo se mueven hacia atrás pequeñas distancias, y solamente cuando están realizando una maniobra evasiva, o una de estacionamiento bajo control.

La clave es, en este caso, mientras se avanza hacia atrás, leer una y otra vez el interruptor para ver si hay contacto. Si éste se produce, se interrumpe el retroceso.

Los pocos centímetros que retrocedemos debido a un impacto en la parte delantera pueden ser truncados de inmediato en situaciones de poco espacio para los movimientos.

Ya que sólo atendemos al estado de este interruptor cuando movemos al robot en dirección hacia atrás, un impacto trasero en otras circunstancias no causará ninguna reacción.

Respuesta en base al tiempo entre los sucesos

Además de estas respuestas puramente reflejas, hay posibilidad de establecer respuestas a secuencias de sucesos que se producen dentro de un plazo determinado. Por ejemplo, si se detectan media docena de choques dentro de una cantidad limitada de segundos, podríamos asegurar que el robot está atrapado en un espacio confinado. Observando el tiempo que transcurre entre choques, es posible detectar estos episodios y realizar maniobras evasivas.

Impactos múltiples muy seguidos

Hay por lo menos dos tipos de secuencias de impactos por encierro o entrampado del robot, y será necesario analizarlas para obtener información de lo que está sucediendo. Las dos producen impactos múltiples en poco tiempo y no siempre es fácil determinar cuál es cual. La respuesta a cada una de estas situaciones es algo diferente.

"Encajonamiento" (entrampado en una esquina)

Esta clase de sucesión de choques es la más común que se presenta al probar un nuevo robot. En este caso, el robot quedará atrapado en una esquina de una habitación, o en partes de un mobiliario, rebotando una y otra vez entre paredes adyacentes. Por ejemplo, cuando un robot toca en la esquina con su parachoques izquierdo, retrocede un poco y gira hacia la derecha para evitarla. Pero ahora avanza y un segundo después toca con la pared adyacente con su parachoques derecho, retrocede nuevamente un poco y gira hacia la izquierda, en un movimiento evasivo reflejo. Esto puede seguir para siempre, o hasta que el robot se quede sin baterías.

La detección y corrección de esta condición es de gran importancia si se desea que el robot se mueva en un entorno casero.

Para solucionar esta situación, primero debemos detectarla. Esto se hace registrando en la memoria cuáles fueron los últimos cuatro toques y el tiempo que transcurrió entre ellos. Luego se examina esta información para determinar si se está produciendo un encajonamiento.

Para poner en marcha este sistema, programaremos el robot para que recuerde. Esto no es difícil, y además nos introduce en el concepto de matrices de aprendizaje. La idea básica es definir un grupo de variables, cuatro o más, en las que guardaremos los datos de tiempo. Mientras el robot está avanzando sin chocar con nada, arrancamos con una variable en cero y la vamos incrementando cada 10 milisegundos, por poner un valor típico. Diez milisegundos es un tiempo suficientemente corto como para manejar la respuesta más rápida que se necesita ante un obstáculo.

Cuando detectamos un contacto en un parachoques, respondemos con una acción usual, pero guardamos el valor que alcanzó el contador, y luego ponemos el contador en cero. Luego, en cada impacto sucesivo vamos guardando los tiempos entre cada contacto en distintas variables, hasta haber registrado los últimos cuatro choques.

Cuando tenemos los cuatro valores, los sumamos, y si la suma de los tiempos que transcurrieron nos da un valor menor a 5 segundos, esto significa que hemos detectado una secuencia de choques que se han producido en un corto tiempo. En la mayoría de los casos, para escapar de esta condición se hace que el robot gire un ángulo de 180°.

Pero existe un caso en el que un robot que esté equipado únicamente con parachoques detectará (falsamente) que está atrapado en una esquina, pero no podrá escapar usando las soluciones que hemos visto hasta ahora: la trampa en una situación de túnel.

El problema del túnel

Sin la ayuda de un sistema de detección de obstáculos por infrarrojos o por ultrasonidos (sonar) que nos permita "ver" por qué lado podemos escapar, la situación de encierro en un túnel o estrecho pasillo sólo se puede solucionar probando reiteradas veces. Imagínese que su robot ingresa a un pasillo angosto o en el espacio entre el respaldo de un sofá y la pared. En algún lugar, si la dirección de marcha del robot no es totalmente paralela a las paredes, éste comenzará a chocar con ellas. Lo que ocurra a partir de aquí depende mucho de la forma del robot, además de del espacio que tiene, pero lo más probable es que el robot empiece a rebotar de pared a pared, muy rápido, en una maniobra de evasión tras otra, y quede atrapado.

Dado que sólo puede detectar objetos cuando toca con ellos, no es fácil encontrar qué debe hacer el robot para liberarse de este problema y salir del túnel. Muchos robots caseros pueden moverse horas dentro de una casa, y cuando se produce el ingreso a un túnel, el robot queda atrapado allí hasta que se le agotan las baterías. Parece un situación muy parecida a la del encajonamiento en una esquina, pero hay diferencias a estudiar y una solución muy diferente.


Para detectar la situación de entrampado en un túnel, debemos registrar, además del tiempo transcurrido entre los toques, la cantidad de veces que hemos debido pasar a la reacción de escape de una esquina, y el tiempo total en que se produjeron. Después de dos o tres acciones de evasión de esquina que han ocurrido muy seguidas, es muy probable que en realidad estemos atrapados entre dos paredes cercanas, y debamos entrar en nuestra rutina de escape del túnel.

Si bien no hay ningún método absolutamente seguro, el que vamos a describir puede sacar al robot de esta situación de trampa sin salida. La respuesta es entrar en una rutina de seguimiento de pared, una condición que, bien instrumentada, debería llevarnos a alguna salida.

En esta rutina de seguimiento de pared, cada impacto debe ser seguido de un movimiento de evasión minimizado. Es decir, se ejecuta la serie de movimientos habituales ante un contacto de los parachoques, pero se retrocede muy poco y sólo se gira un pequeño ángulo. Esto debería hacer que el robot siga las paredes del corredor en un movimiento de pequeños arcos, pegado a ellas, sin llegar hasta la pared opuesta. Se sale del modo de seguimiento de pared cuando el o los parachoques vinculados (los del lado de esa pared) dejan de detectar contactos por un tiempo, lo que indicaría que hemos alcanzado el final del túnel.

El truco principal para seguir una pared es que los parachoques laterales sobresalgan lo suficiente del conjunto como para que un contacto del robot en dirección casi paralela a una pared seguro los actúe. El tamaño de los arcos recorridos se determina en base al ángulo de regreso al contacto con la pared. Si el arco es muy amplio, habrá problemas en una pared curvada; si es muy pequeño, se perderá mucha energía rebotando contra las paredes. La amplitud del arco depende mucho del tamaño del robot, por supuesto. Para un robot pequeño (de unos 20 centímetros de longitud, por ejemplo), será apropiado un arco de unos 20 a 30 centímetros.

Y aquí es cuando descubrimos que es necesario otro control: hay que limitar el tiempo en que el robot estará en el modo de seguimiento de pared —una cantidad determinada de segundos— y luego salir de él, porque sino podría ocurrir que el robot se quede girando para siempre alrededor de algún mueble redondeado.

Atascos de todo tipo

Otro problema es que el robot quede atascado en algún objeto que no ha detectado, o en el cable de un electrodoméstico, o en un desnivel del piso, con sus ruedas girando, y ante la falta de detecciones de choque suponga que se está moviendo libremente por una enorme habitación.

Hemos desarrollado las ideas para solucionar este tema en otro artículo, Lógica de detección de atascos.

Falsas detecciones

Si queremos un robot independiente, hay que tener en cuenta las fallas que se pueden producir en los detectores.

Un problema común cuando se trabaja con parachoques caseros es que a veces el diseñador utiliza la pequeña leva del interruptor (del tipo que conocemos como microswitch) directamente como actuador, o para fijar en ella —usándola como soporte— la pieza de material que hará las veces de parachoques. Debido a que la leva es una pequeña tira de metal que no está pensada para esto, la solución casera no habrá de durar mucho y resultará, finalmente, en una leva rota y un interruptor insensible, o en un interruptor presionado todo el tiempo.

Agreguemos también que los interruptores también pueden fallar por sí mismos, internamente.

Sea como sea, si un contacto de parachoques queda cerrado, el robot va a responder constantemente, moviéndose en un baile en círculos para tratar de escapar de un obstáculo fantasma.

Detección falsa por contacto cerrado

Si se monitorea el tiempo que cada interruptor de parachoques está cerrado, se puede alertar al programa principal si este lapso es excesivo, por ejemplo, si es de 5 segundos o más.

Algo más complicado sería observar las últimas 10 acciones de evasión tomadas y, si todas fueron iguales, será una buena indicación de una falla. Otra solución es observar el estado del contacto del parachoques después de retroceder por un impacto en la parte delantera. No debería haber indicación de persiste la presión sobre el interruptor, y lo más probable si esto ocurre es que el contacto esté cerrado por una falla.

Falta de detección por contacto abierto

Esto es difícil de detectar. Se podría observar a lo largo de un buen tiempo si algún parachoques jamás ha detectado un obstáculo.

Si el afectado es el parachoques central, lo más probable es que el robot se detenga contra el obstáculo y quede con las ruedas girando sin cesar. Esta situación se detecta usando la lógica de detección de atascos que describimos en otro artículo.

Pero un parachoques lateral es más problemático.

Una posible solución es crear una rutina que pruebe todos los parachoques contra un obstáculo, girando la cantidad precisa de grados como para ir afectándolos uno a uno. Esta rutina se puede disparar al azar en una situación de vagabundeo (en alguno de los momentos en que se detecta un obstáculo), o se puede efectuar en la base del robot, cuando se lo pone en marcha.

Una lógica con variantes

Chris y Dawn Schurs, del sitio Robotics and Artificial Lifeforms, cuyo artículo en ese sitio nos ha servido como ejemplo y guía para este trabajo, usan el término "Creatividad" para referirse al recurso de agregar una pequeña cantidad de valores azarosos en las respuestas reflejas. Este concepto se utiliza en los sistemas biológicos para generar soluciones nuevas a los problemas habituales.

Un ejemplo en el mundo biológico se presenta cuando un ciervo camina por un bosque.

Cuando el ciervo llega a un gran árbol, debe rodearlo. ¿Por qué lado? Después de unos momentos de observación, el ciervo elige una dirección al azar y continúa.

El azar también se puede utilizar para hacer descubrimientos. Considere una hormiga que se dirige hacia una fuente conocida de comida. Cuando las hormigas avanzan, su trayecto no es absolutamente rectilíneo: se mueven hacia un lado y otro en base a algún tipo de generación azarosa en el control de sus patas. Acercándose a su destino, la hormiga descubre una segunda fuente de alimento, que estaba a un lado del camino.

Su movimiento "azaroso" le resultó útil.

Nosotros también podemos emplear valores azarosos en las respuestas de nuestros sentidos biomiméticos para mejorar las rutinas de escape y búsqueda de los robots caseros.

Definiendo los valores azarosos

Hay varios métodos para generar valores azarosos con un programa. Los programas Pbasic y PICbasic tienen la función RANDOM(X), que entrega un valor al azar a partir de un generador de números seudo aleatorios. Estos programas de generación de números utilizan distintas técnicas que no discutiremos aquí.

Un método para obtener números aleatorios reales en un microcontrolador es conectar su convertidor A/D a un semiconductor que normalmente genera ruido electrónico, como un diodo o un transistor. Aquí se puede ver un circuito de ejemplo: http://www.robseward.com/itp/adv_tech/random_generator/.

Generación de "respuestas creativas" azarosas

Ya hemos visto una buena aplicación de una respuesta con variantes al azar en los algoritmos de giro de cada parachoques. Agregando un pequeño valor de azar, limitado a un rango minúsculo, a los movimientos reactivos, se logra evitar situaciones de entrampamiento por una repetición continua del estímulo y de los movimientos de respuesta.


Aplicaciones para la "creatividad"

Hay muchos usos para este útil concepto, pero aquí cubriremos lo referido a la lógica de parachoques. La clave, como ya hemos visto, es que después de decidir la rotación que vamos a efectuar ante un impacto específico, dividimos el valor por dos, tomamos una mitad como valor fijo y hacemos que la segunda mitad del valor sea elegido al azar dentro de un rango que varía entre cero y la mitad del giro total. En el caso de un impacto derecho, por ejemplo, giraremos un ángulo de entre 45 y 90 grados, que surgen de sumarle a un valor fijo de 45 grados otro que varía, al azar, entre 0 y 45 grados.

En este caso hablamos de robots que pretendemos que se dirijan a un destino determinado, y no juguetes que deambulan al azar. No es recomendable que siempre giremos al azar un rango que va entre 0 y 360°, porque esto llevará al robot muy fuera de camino la mayoría de las veces.

También se puede utilizar el concepto de "creatividad" en situaciones donde tratamos con tiempos, sumando un pequeño valor azaroso a los tiempos que se consideran.

Arquitectura electromecánica de los parachoques

Discutiremos ahora la implementación mecánica del conjunto de parachoques. Primero, y más importante, pongámonos en mente que el concepto apropiado para lo que deseamos hacer no es sólo un conjunto de interruptores provistos con una leva de extensión que impacta los obstáculos. Lo que estamos haciendo es un grupo de parachoques, con una instrumentación. Hay una gran diferencia en la filosofía de diseño. La manera incorrecta de diseñar este sistema de detección de impactos es montar los interruptores en el frente y parte trasera del robot y sujetar algún tipo de alambre, barra o planchuela a las levas del interruptor. Aunque esto funcionará bien por un tiempo, no será durable y antes o después los mecanismos de los interruptores resultarán destrozados. La manera correcta de implementar los sensores de impacto es como sigue:

  • Diseñe primero un sistema de parachoques con una sólida mecánica en el frente y parte trasera del robot, que resista por sí sola los impactos.
  • Y recién aquí, agregue los interruptores al parachoques.

La idea es construir un conjunto fuerte de parachoques, con un desplazamiento limitado, que puedan absorber los esfuerzos mecánicos que se habrán de presentar en la realidad. Limitando con recursos mecánicos el rango de desplazamiento del conjunto, prevenimos posibles daños a los interruptores de detección.

Veamos algunos ejemplos de parachoques buenos y malos.

Hay montones de diseños de robots que tienen interruptores con leva que fueron atornillados o ¡pegados! en el frente, a los que se les fija alambres de acero, tales como el de cuerda de piano, a las levas del interruptor, por medio de una manguerita plástica termocontraíble. Luego de chocar unas docenas de veces con las paredes y muebles, las levas se deforman, y los pulsadores se hunden demasiado, algo que, antes o después, los daña. Aún peor, debido a que la leva no tiene limitación en su movimiento hacia fuera, si se jala de ella en lugar de pulsarla, cuando los alambres o extensiones se enganchan en los obstáculos, al girar, las levas se doblan más de lo que soportan y nunca vuelven a su forma normal. Este es un MAL diseño.

Vamos a considerar otro tipo. El robot está totalmente rodeado de una banda cilíndrica metálica o plástica, suspendida, para darle movilidad, sobre resortes o alambres de acero, y algo mayor que la circunferencia del cuerpo del robot (con que quede 0,5 a 1 cm todo alrededor está perfecto). En este espacio entre el cuerpo y el interior del cilindro se montan varios interruptores de leva, alrededor de la periferia, en cantidad necesaria. Cuando el cilindro choca contra un obstáculo, se desplaza y empuja sobre la leva de alguno de los interruptores, aportando información que indica en qué dirección está el obstáculo.

Montamos además topes todo alrededor, como para que el cilindro no supere el desplazamiento mínimo necesario para mover las levas y presionar los interruptores, lo que protege a los interruptores y a sus levas de cualquier presión excesiva o exceso de límite. Otra opción es que los interruptores estén ubicados por dentro del borde del cuerpo, con sólo las levas sobresaliendo, lo que ya de por sí evita cualquier esfuerzo aplicado sobre el cuerpo del interruptor. De esta manera hemos limitado el desplazamiento usando un recurso mecánico, que protege a los interruptores. Los robots del tipo conocido como "Rug Warrior" están construidos según este diseño. Este es un diseño MUY BUENO.

Hay otros detalles menores de la construcción de parachoques que harán que éstos sean óptimos para detectar obstáculos, tales como agregar unos rectángulos de goma que suavicen los impactos y dividir el cilindro del parachoques en secciones para aportar una información sensorial más precisa.

Ya hemos discutido sobre la distribución de los detectores de choque, pero esto no quiere decir que sea la única configuración posible. La mayoría de los desarrolladores de robots coinciden en que un cuerpo circular con un motor en cada rueda es el mejor diseño para un robot con un tamaño de menos de 30 centímetros de diámetro que se mueve en interiores. Esto habilita al robot a girar sobre sí mismo cuando se está moviendo hacia algún lugar o está evadiendo obstáculos, y no ofrece ángulos ni proyecciones que se enganchen en los muebles u otras cosas que haya en la casa. En realidad el robot puede ser cuadrado o rectangular, siempre que su límite externo esté definido por el anillo de los parachoques. Es algo que se hace comúnmente y que aporta lo mejor de ambas opciones.       

Como se lee en la primera parte de este trabajo, en nuestros robots hemos decidido colocar cinco parachoques en la parte delantera y uno en la parte posterior. No es una elección arbitraria; la tomamos luego de probar docenas de robots que han operado por años en entornos internos y externos. Se pueden elegir otras opciones, pero es bueno tener presente siempre que uno o dos únicos parachoques frontales no son suficientes para evitar problemas.

Basado en el artículo Bumper Logic de Chris y Dawn Schurs.

Ver también -> Sensores - Lógica de atascos