La navegación es uno de las clásicos grandes problemas que se le puede presentar a un robot. La navegación debe resolver el problema de encontrar un movimiento libre de colisiones que permita desplazar el robot de un estado o configuración a otro distinto. El primer sistema robótico en el que pensamos al hilo de lo anterior es del tipo de robot móvil, y la navegación deberá resolver el problema de desplazar el robot de un punto a otro del espacio. Hay autores que consideran que el concepto de navegación es aplicable exclusivamente al desplazamiento de un robot móvil completo. Otros autores, por contra, incluyen casos como el de un brazo robot, en los que no es todo el robot el que se desplaza, sino sólo una parte del mismo. En estas circunstancias, las típicas de un robot industrial, el problema de navegación puede estudiar problemas como desplazar el manipulador de un punto a otro sin que éste colisione con los objetos del entorno, y el proceso puede estar sujeto a restricciones tales como seguir el camino más rápido, el más eficiente energéticamente, el camino más recto, el que permite la traslación en el menor volumen posible, etc. Ambos casos se ven involucrados en problemas de localización, cálculo de trayectorias, planificación de movimientos, etc.
El siguiente es un ejemplo en el que aparecen varios robots cuya navegación está relacionada con el desplazamiento del manipulador de unas coordenadas a otras. La herramienta empleada debe enfrentarse al objeto con los ángulos adecuados. El manipulador puede ser una fresadora, un soldador, una herramienta para pulidos, etc.
Limitando el problema de la navegación a robots móviles, la navegación basada en seguimiento de líneas supone un método barato y efectivo que se emplea en la industria en multitud de ocasiones. El sistema de guiado basado en el seguimiento de líneas es uno de los primeros métodos de guiado automático: es lo que se denomina vehículos con guiado automático (AGV en inglés), que se emplean en plantas industriales. Los primeros robots que seguían este método fueron obviamente los más simples, y ante la presencia de algún obstáculo situado sobre su trayectoria, se limitaban a esperar a que el obstáculo se alejara puesto que no eran capaces de navegar rodeándolo.
En el conjunto del problema físico de un robot que sigue líneas, conviene matizar varios puntos que deben quedar bien claros:
- El objetivo de seguir una línea nos obliga a preguntarnos qué es una línea y qué quiere decir seguirla. Si queremos que nuestro robot siga una línea debemos dotarle de la capacidad de reconocerla, lo que exige preguntarnos el tipo de sensor que vamos a emplear para su reconocimiento y el tipo de línea a dibujar. Por lo que respecta a los sensores, podemos trabajar con un solo sensor, con dos sensores, con un array de sensores -todos ellos bien de luminosidad o bien de color- y, en el caso extremo, una cámara. Las posibilidades de nuestro sistema son muy dependientes de la elección anterior y afecta obviamente al algoritmo que deberemos emplear.
- Por lo que respecta a la línea debemos de tener en cuenta que, aunque parezca una obviedad, ésta tiene dos bordes, y en los algoritmos o disposiciones de sensores más simples debemos discernir si seguimos el borde izquierdo, según nuestro sentido de avance, o el borde derecho. Los programas menos robustos que no consideren esta posibilidad tendrán como consecuencia un comportamiento distinto según si posicionamos al robot sobre el borde derecho o izquierdo de la línea. Por otra parte, para evitar en estos casos que un robot siguiendo el borde derecho se confunda y pase al izquierdo debemos garantizar que la línea a seguir tenga una anchura mínima suficiente. Esto en ocasiones viene impuesto por las normas de una competición y simplemente debemos adaptarnos a dichas condiciones. Recordemos en cualquier caso que la información de la línea la proporciona el borde: si imaginamos una línea de 3 metros de anchura y posicionamos al robot en el centro, éste carece de información válida que le permita al robot tomar una decisión que no sea aleatoria sobre la mejor opción encaminada a seguir la línea; esa linea sobre la que nos encontramos, pero de la que desconocemos dónde está su borde.
- La información proporcionada por un sensor de luminosidad resulta de dos factores: 1) el reflejo de la luz emitida por el diodo LED emisor del propio sensor sobre la superficie que tiene delante, la parte que nos resulta útil, y 2) de parte de la luz ambiente que también es reflejada en dicha superficie. La luz ambiente enmascara nuestra medida, por lo que debemos evitarla en la medida de lo posible. Esto implica acercar el sensor a la superficie y ocultar el efecto de la luz ambiente, bien mediante pantallas o bien posicionando los sensores que realizan la lectura en el interior del robot, de forma que el propio cuerpo del robot sea el que evite que la luz ambiente afecte a la lectura del sensor. De lo anterior se deduce que el comportamiento de un robot puede verse alterado como consecuencia de un cambio de las condiciones de iluminación. Como conclusión, para evitar esto debemos reducir el efecto de la luz ambiente, trabajar con un programa más robusto que sea capaz de autocalibrarse o, en el mejor de los casos, realizar ambas cosas.
- A pesar de que acerquemos el sensor a la superficie debemos de tener en cuenta que la luz que recibe el sensor de luminosidad proviene no de un solo punto concreto sino de una pequeña superficie que tiene frente a él. El sensor “ve”, es decir, devuelve, un valor que es el promedio de las condiciones que tiene delante. Esto justifica el hecho de que mientras acercamos el sensor desde la superficie blanca al interior de la línea negra recibamos un contínuo de valores en el proceso, y no dos únicos valores distintos, uno el de la lectura sobre blanco y el de la lectura sobre negro.
- Cuando realizamos la calibración debemos intentar trabajar con el mayor margen posible para garantizar la mejor de las condiciones. El óptimo supone que el valor recibido leyendo un negro debe ser cercano al cero y el recibido sobre blanco cercano al 100%. El valor medio lo deberíamos obtener situando el sensor sobre uno de los bordes de la línea (considerando que la linea es suficientemente ancha como para representar más de la mitad de la superficie de “sensado” del sensor.
- La dificultad del algoritmo depende de la posible complejidad de la línea que debemos seguir. Aunque podemos discernir entre situaciones en las que las características de la línea a seguir podrían ser desconocidas a priori, en ambientes controlados las características de las líneas se definirán a la par que el robot que va a seguirlas, con objeto de poder llegar a una óptima solución de conjunto, típica de una solución industrial. Una línea de características desconocidas puede ser más típicas de una competición: ¿cuáles son los radios de curvatura máximos y mínimos? ¿La línea es derivable o presenta “picos”? ¿existen desvíos en la línea? ¿tienen cruces, discontinuidades, obstáculos, rampas, etc? La posible presencia de alguno de las complejidades anteriores puede forzar a la necesidad de uso de un segundo sensor, un array de ellos o incluso una cámara, así como de programas más robustos que sean capaces de identificar el estado correcto sobre el que se encuentra en cada momento el robot.
- En una competición, en la que no sólo basta con seguir la línea, sino que es necesario hacerlo a la máxima velocidad, resulta todavía de mayor importancia el preguntarse sobre el sistema de locomoción y su relación con la posición de los sensores respecto al mismo. ¿Interesa que el sensor se encuentre entre las ruedas o delante o detrás de ellas? ¿Cuál es la distancia óptima en estos últimos casos? ¿Cuál es el número óptimo de sensores a emplear? ¿Seguimos un borde de la línea, los dos, o usamos un array de sensores en posición transversal al avance y sobre la línea, o quizás es mejor otra disposición? Si usamos una cámara, la detección y procesado de imágenes deberá ser suficientemente rápida como para que la información que se extraiga de la misma llegue a tiempo. Un robot rápido exigirá un procesado de imágenes más veloz o un algoritmo más simple.
- ¿Puede ser necesario que el avance del robot deba tener en consideración la posible presencia de obstáculos en su traectoria? Podría tratarse de un ser humano y habrá que evitar su atropello.
Como vemos, el problema tiene la profundidad que le queramos dar…
Nuestro objetivo es ir publicando varios artículos de complejidad creciente relacionados con este tema: