La Lógica:

Mi primera intención fue nombrar a esta página como “El Alma” pero pensé que este título contenía implicancias de carácter religioso que me iban a complicar la existencia y finalmente decidí llamarla La Lógica, aún cuando sigo pensando que acá es justamente en donde reside el alma del Robot construido o por construir, acá residen sus dudas, sus reflexiones, su “modo de pensar” y las cosas que percibe y las que no es capaz de percibir.

De lejos, esta es el área más apasionante del diseño de un robot, porque aquí se experimenta con el comportamiento que tendrá el robot y por ende, está llena de amplias posibilidades de experimentación y con resultados inmediatos.

Pero es necesario comenzar por el principio: en términos muy generales, hay dos clases de Lógicas Robóticas dando vueltas por ahí, la primera dice que para poder funcionar armónicamente en el entorno, un robot requiere un detallado conocimiento de su entorno, registrando todos los eventos o accidentes geográficos que le rodean, elaborando un mapa de ambiente. Cada accidente geográfico tendrá asociado un comportamiento específico programado, de tal manera que el robot puede moverse con aceptable nivel de seguridad en su entorno inmediato.

Este diseño también supone la capacidad de actualizar sus mapas internos y de agregar nueva información cuando la geografía del entorno se modifica substancialmente. Si la piensas bien, es la manera humana de aproximarse a un entorno desconocido, mirar, registrar, evaluar los posibles peligros y luego moverse con los datos recogidos.

El problema de esta aproximación a la lógica robótica es que su implementación requiere de enormes recursos de memoria y de procesamiento, capaces de almacenar complejos mapas con alto nivel de detalle, de tal modo que los datos sean verdaderamente útiles para guiar el comportamiento del robot.

Esta concepción de diseño exige de los robots potentes procesadores y especialmente gran cantidad de memoria y cantidades de código dedidacdas a organizar, clasificar y administrar oda esa información. Esta primera mirada hacia la lógica robótica significó que durante muchos años el desarrollo de los robots fue muy lento, porque siempre hacía falta más memoria, más procesador o finalmente, más y más dinero. De manera tal que los robots eran más bien fantasías literarias o cinematográficas del tipo Perdidos en el Espacio, que máquinas reales en el mundo real.

Sin embargo recién en 1986 aparece un libro escrito por Rodey Brooks, actual Director del Laboratorio de Inteligencia Artificial del MIT, que plantea una concepción radicalmente diferente del robot, lo que provoca una verdadera revolución en su desarrollo.

Brooks plantea un modelo llamado en inglés Subsumption Architecture, que en términos generales propone que en lugar de requerir de enormes cantidades de información para poder funcionar en el mundo real, el robot debe estar dotado de sensores y actuadores, los cuales crearán un comportamiento apropiado a cada situación particular. Cada comportamiento es disparado por una situación específica, no es almacenado como aprendizaje y no existe una unidad que recoja toda la información disponible para mantener vigente un modelo actualizado del mundo externo.

Esta concepción permite diseñar y construir pequeños robots con un par de sensores y un par de actuadores, simples y económicos, pero que aún preservan las condiciones de reflexión y cumplimiento de tareas que se le exige a un robot como tal. El modelo está basado en el comportamiento de los seres vivos más básicos que no poseen grandes cerebros pero sin embargo están dotados de muy buenos sensores y actúan con eficacia conforme a la información que reciben de ellos. Los insectos son una buena prueba de esta concepción del modelo y en Internet hay decenas de documentos en español y en inglés sobre este tema, que naturalmente excede los propósitos de este modesto sitio WeB.

Aquí hay una foto de Rodney Brooks para que lo conozcas.

Para los efectos prácticos, Rodey Brooks es el padre de los robots modernos por su concepción simple y esquemática y todos mis robots han seguido los lineamientos de su arquitectura.

En términos básicos, el “alma” del robot se construye definiendo un conjunto de sensores, los cuales tienen asignado u cierto estado digital. Imagínate que defines un sensor de contacto, con el propósito de detectar el momento en que el robot en su camino se encuentre un obstáculo.

El sensor podría ser un simple interruptor mecánico, conectado a una fuente de energía de 5v a través de propio interruptor.

Por otra parte tenemos una rutina de programación alojada en un microprocesador muy sencillo y económico, que revisa en forma sistemática la presencia de los 5v en el sensor mencionado, lo que para el lenguaje del procesador, es simplemente un 1.

Cuando un obstáculo es encontrado, el obstáculo presiona el interruptor, quien cambia su estado e interrumpe el flujo de 5v. En consecuencia, la próxima revisión del procesador encontrará que el 1 ha cambiado a 0. El programador ha asignado una cierta variable de alerta a ese sensor específico, y en función a esa condición el programa define un cierto curso de acción, por ejemplo invirtiendo el sentido de giro del motor de avance, para provocar un giro en el curso del robot.

Una vez que el sensor ha recobrado su estado normal, el procesador retorna los actuadores a su posición de inicio, es decir el motor comienza a funcionar hacia delante y todo sigue normalmente hasta que un nuevo obstáculo sea encontrado. Esta forma de diseño provoca un fenómeno muy interesante, que se materializa en un comportamiento del robot que emerge en forma natural frente a los estímulos del mundo externo.

Algo especialmente entretenido es mantener las alertas asignadas a los sensores en forma de variables de programación. De esta manera, cambiando un par de números en el programa, se puede crear un comportamiento absolutamente nuevo en el robot. Las posibles combinaciones entre los diversos sensores y los actuadores disponibles amplían enormemente las posibilidades de experimentación en este terreno.

La rutina de programación que se encarga de revisar los sensores y disparar un cierto comportamiento a través de los actuadores puede ser concebido como una máquina lógica que revisa estados, los cuales son finitos en términos de sus opciones disponibles.

De esta manera, la rutina central que reside en el programa que corre en el microprocesador, es llamada una Máquina de Estados Finitos, que evalúa en forma secuencial el estado de los sensores y activa un cierto comportamiento de acuerdo al estado de todos los sensores revisados.

En resumen, un robot puede funcionar en forma inteligente y reflexiva al contar con sensores, con actuadores y con una rutina central de revisión de sus estados. Eso es todo lo que necesitas e incluso, hay algunos robots que ni siquiera tienen una máquina de estados, sin sencillamente un comparador que les permite “saber” que hacer con la información colectada en el sensor y actuar en consecuencia. Es el caso de mi primer robot, llamado simplemente el Bicho que puedes ver en la página Fotos de Robots.

Pero sin duda lo más entretenido se produce al contar con los tres elementos operando, porque pequeños cambios en la programación pueden provocar enormes cambios en el comportamiento. No se puede evitar el pensar que una aseveración como esta tiene relaciones en nuestro propio comportamiento, pero por cierto que este tema excede con mucho mis posibilidades de reflexión. Me quedo con la psicología primaria de mis Robots y la certeza que un pequeño cambio puede generar un poderoso efecto.