Justina y el mundo de la Robótica

Los robots industriales, usados principalmente en la manufactura y que en su mayoría son brazos robotizados estacionados en un solo lugar, se introdujeron en las fábricas durante la década de los sesenta del siglo pasado. La figura 1 muestra estos robots en una fábrica de automóviles.1
Robots de servicio
Mucho ha avanzado esta tecnología desde entonces, tanto que se espera en un futuro cercano una demanda masiva de los ahora llamados robots de servicios, cuyo objetivo es simplificar el trabajo humano en casas, oficinas, tiendas, etcétera. Estos son dispositivos ambulantes programables que ofrecen servicios en forma automática o semiautomática. Los servicios no son tareas que ayuden en la manufactura industrial de bienes, sino trabajos para los seres humanos en general y sus equipos terminados. A diferencia de los industriales, estos robots navegan en los espacios que les han sido asignados.
Así como se incorporaron a la vida cotidiana televisores, radios, computadoras y los teléfonos celulares, los robots de servicio también lo harán en algún momento, y llegarán a ser muy familiares. La figura 2 muestra el tipo que se espera tener.2

En una casa, en un futuro cercano, no solamente se tendrá un robot, sino varios. Los habrá externamente en las casas; uno de ellos se dedicará a cortar el pasto, mientras que el otro hará rondines de vigilancia. Dentro de la casa funcionarán algunos pequeños que limpien, aspiren y trapeen el piso; uno fijo que se encargue del lavado y planchado de la ropa; otro, tipo humanoide, que ayudará a las personas a traer y llevar objetos de un lugar a otro; este último tendrá capacidades de comunicarse con los integrantes de la casa usando lenguaje natural y planeará las acciones y los movimientos necesarios para hacer sus funciones.
Los robots de servicio son sistemas de software y hardware, autónomos o semiautónomos, que se encuentran en ambientes dinámicos y complejos. Su autonomía consiste en la habilidad de tomar decisiones basadas en una representación interna del mundo. Han surgido de áreas de investigación, entre otras, como son la inteligencia artificial, el procesamiento de señales y la teoría de control.
Los robots de servicio harán lo siguiente para atender a adultos mayores: servir de compañía, explicar acciones rutinarias, llevar lista y toma de medicinas, apoyar en el ejercicio físico, suministrar información de calendario y hora, proveer información espacial, mantener la casa segura para evitar accidentes, por ejemplo, apagar la estufa, detectar caídas o situaciones de riesgo, recoger objetos del suelo. Para el uso de servicios hospitalarios: transporte de medicinas, análisis y alimentos, visitas presenciales de médicos externos usando los robots de servicio como medio de navegación, monitoreo de los signos vitales de los pacientes y para apoyar en el ejercicio físico de los pacientes.
Las capacidades básicas que los robots de servicio deben tener para poder realizar estas tareas son: ser reactivos, es decir, reaccionar oportuna y apropiadamente a eventos imprevistos; ser capaces de resolver tareas por medio de planes; resolver sus tareas eficazmente, haciendo uso de procedimientos probados en situaciones rutinarias; tratar con interacciones, positivas y negativas, con otros robots y humanos.
Los robots necesitan adaptarse a cambios en las condiciones del medio ambiente, ser capaces de aprender a realizar nuevas tareas o variantes de las que ya tienen programadas, a través de demostraciones (de los usuarios), de buscar información (en Internet) y de interactuar con el ambiente.
En el desarrollo de los robots de servicio se han observado tres paradigmas de arquitecturas de robots móviles muy bien marcadas.

La primera, llamada “tradicional”, se aplicó a partir de los años sesenta del siglo pasado, cuando se utilizaban modelos simbólicos para representar el medio ambiente y el uso de técnicas básicas de inteligencia artificial para la búsqueda de caminos y una representación espacio/estado para la planeación de acciones. Un ejemplo de este tipo de arquitecturas es la del robot Shacky 3, desarrollado en la Universidad de Stanford.
La segunda tendencia fue implementada en los años ochenta en el MIT, por el investigador Rodney Brooks, llamada “reactiva”, en la cual no se cuenta con una representación del medio ambiente, ni tampoco con módulos de planeación de acciones ni movimiento. Lo que se tiene son varios módulos que responden a estímulos específicos generando salidas inmediatas, las cuales son combinadas o seleccionadas por un árbitro para generar lo que el robot debe hacer bajo ciertas circunstancias. Los módulos pueden utilizar máquinas de estados, redes neuronales o campos potenciales. Un ejemplo de este tipo de arquitecturas es la del robot Roomba 4, diseñado por la empresa Irobot.

El paradigma más reciente es el llamado “probabilístico”, basado en el concepto que tanto el sensado del medio ambiente que hace el robot, así como el de sus movimientos, son dependientes de variables aleatorias, que pueden ser manipuladas utilizando conceptos probabilísticos. Un ejemplo de estas arquitecturas es el automóvil autónomo que obtuvo el primer lugar en el DARPA Grand Challenge de 2005, desarrollado por Sebastian Thrun, de la Universidad de Stanford 5.
Cada uno de estos tipos de arquitecturas tiene sus ventajas y desventajas. Así, tomando lo mejor de cada una de ellas, se pueden tener sistemas híbridos, como el que se ha desarrollado con el robot Justina, de la Facultad de Ingeniería de la UNAM, el cual se presenta más adelante.
1.1. Máquinas de estado
La forma más directa para programar la navegación de un robot móvil es a través del uso del concepto de máquinas de estado. En estas se tiene una representación del estado en el cual se encuentra el sistema y dadas ciertas condiciones de entradas y el estado presente se calcula el siguiente. La parte fundamental de estas máquinas es el algoritmo que ejecutan. En la figura 3 se muestra un robot omnidireccional que cuenta con dos motores que le permiten ir hacia adelante, atrás y hacer giros hacia la derecha e izquierda, asumiendo que solamente puede hacer giros de 45 grados.
Cuenta con dos sensores que le permiten detectar obstáculos, como se muestra en la figura 3. Si el robot no detecta ningún obstáculo seguirá avanzado; si detecta un obstáculo con su sensor izquierdo, primero va hacia atrás y después gira hacia la derecha 45 grados; si detecta un obstáculo con su sensor derecho, primero va hacia atrás y después gira hacia la izquierda 45 grados; si detecta un obstáculo con los dos sensores, entonces el robot va hacia atrás, gira dos veces a la izquierda, avanza hacia adelante y finalmente girará hacia la derecha dos veces. Esta explicación se muestra en el algoritmo de la figura 4.

Las máquinas de estado pueden programarse desde muy bajo nivel, usando flip-flops en su instrucción y compuertas ANDs y ORs, hasta en uno muy alto usando lenguajes de programación como C++ y Python. También se pueden utilizar para su instrumentación redes neuronales retroalimentadas en FPGAs6.
1.2. Robot Justina
Justina es un robot de servicio completamente diseñado en la Facultad de Ingeniería de la UNAM.
El sistema de operación de Justina7 está basado en una arquitectura híbrida de robots móviles, que consiste de cuatro capas: entrada, planeación, conocimiento y ejecución.
Cada una de ellas cuenta a su vez con varios subsistemas que controlan en forma general el funcionamiento del robot. Operativamente cada uno de los componentes de software se enlaza entre ellos usando el mecanismo de comunicación entre procesos del sistema operativo para robots ROS.
1.3. Capa de entrada
En esta etapa se procesan las señales provenientes de los sensores internos y externos con los que cuenta el robot, utilizando técnicas de procesamiento digital de señales, para generar una representación simbólica de ellas. Por ejemplo, si el robot está situado enfrente de una mesa donde hay objetos, esta capa indicaría los tipos y nombres de objetos encontrados. Si alguien le da un comando de voz al robot, después de hacer reconocimiento de palabras, se encuentra una representación de la oración, utilizando técnicas de lenguaje natural, que puede aplicarse después por las siguientes capas para realizar lo que se solicita.
Esta capa contiene los siguientes subsistemas:
Sensores internos. Sirven para determinar el estado interno del robot y están formados por los siguientes elementos: codificadores en las ruedas, sensor de carga de la batería, sensor de inclinación, sensor de temperatura, etcétera.
Sensores externos. Los sensores externos sirven para detectar el medio ambiente, utilizándose los siguientes: de contacto, de luz infrarroja, cámaras, micrófonos, láser, sonares, etcétera.
Interpretación/representación simbólica. Con los datos proporcionados por los sensores externos e internos se obtiene una representación simbólica, que se logra utilizando técnicas de procesamiento digital de señales.
Tareas del robot. Un conjunto de tareas que el robot necesita realizar en el tiempo que fueron programadas.
Interfaz humano/robot. La comunicación entre el usuario y el robot es por medio de la voz y gestos manuales; el robot responde usando voz sintética y expresiones faciales simples.
Percepción. El módulo de percepción recibe la representación simbólica de los datos que vienen de los subsistemas: tareas del robot, interfaz hombre-robot y los sensores internos y externos. Con esta representación simbólica se genera una o una serie de creencias.
1.4. Capa de planeación
En esta capa se planean las acciones que tiene que hacer el robot para cumplir las situaciones que se le presentan.
Validación de situaciones. Este subsistema valida las creencias generadas en la capa de entradas, así se reconocen situaciones nuevas en el medio ambiente.
Activación de metas. Dado el reconocimiento de situaciones nuevas un grupo de metas se activa.
Banco de procedimientos. Se tienen procedimientos que resuelven parcialmente problemas específicos; estos están representados usando máquinas de estados. Se tienen procedimientos para tomar objetos, limpiar mesas, encontrar humanos, alinearse a una pared o muebles, etcétera.
Planeador. El planeador intenta alcanzar cada una de las metas seleccionando un conjunto de funciones del banco de procedimientos. Escoge el mejor plan de acciones que resuelve cada una de las metas y los reúne. Se cuenta con dos tipos de planeadores: acciones y movimientos. El planeador de acciones encuentra una secuencia de acciones que lleven a la solución de un problema, se utiliza una máquina de inferencias que realiza búsquedas en una representación espacio/estado. El planeador de movimientos encuentra alguna o la mejor ruta (puede ser la más corta), usando el algoritmo de Dijkstra o A*, que lo lleven de un origen a un destino utilizando un mapa topológico (nodos y conexiones) del lugar.
Reconocedor de excepciones. Si durante la ejecución de un plan suceden cosas inesperadas y el plan necesitara este módulo ofrece esta capacidad.
1.5. Capa de conocimiento
Esta capa contiene una representación del conocimiento con la que cuenta el robot.
Modelo del mundo. Contiene una descripción y la relación que hay entre los objetos, las personas y los lugares con los que interactúa el robot.
Cartógrafo. Este módulo contiene los mapas que representan el medio ambiente, los cuales pueden ser creados en forma manual o por el robot usando algoritmos de creación de mapas (SLAM).
Representación del conocimiento. Usando un sistema basado en reglas, CLIPS (NASA), se representa parte del conocimiento del robot. A través de reglas de producción, que corresponden a ciertas condiciones que ocurren en situaciones cotidianas.
Aprendizaje. El sistema puede aprender a resolver problemas nuevos usando:
- Algoritmos genéticos y programación genética.
- Métodos probabilísticos aplicando cadenas de Markov.
- Agrupamiento utilizando cuantización vectorial.
- Redes neuronales artificiales.
1.6. Capa de ejecución
En esta capa se efectúan los planes generados en la capa de planeación.
Ejecutor. El ejecutor trata de implementar los planes de acciones y de movimientos utilizando procedimientos que resuelven parcialmente problemas espe-cíficos.
Supervisor. El supervisor recibe una copia del plan que tiene que implementar el ejecutor y supervisa que se aplique en tiempo y forma.
Comportamientos de reacción. Este subsistema evita obstáculos desconocidos no contemplados por el planeador de movimientos. Los comportamientos pueden ser máquinas de estados, campos potenciales, redes neuronales, etcétera.
Algoritmos de control. Son usados para controlar el funcionamiento de los actuadores; en su forma más simple se utilizan controladores PID.
Actuadores. El robot real o virtual recibe los comandos y los aplica. Una interfaz gráfica 3D permite probar diversos robots virtuales, que son una simulación muy próxima de los reales. Los algoritmos que el robot ejecutará se pueden probar primero en los robots virtuales y después en el real. Los robots virtuales pueden ejecutar las mismas órdenes que los robots reales, así como los comportamientos, las ecuaciones de movimiento y las lecturas de los sensores. El ambiente virtual se visualiza por un motor de 3D usando Rviz y Gazibo bajo el sistema operativo de robots (ROS).
Dr. Jesús Savage Carmona
Facultad de Ingeniería, UNAM
Referencias
1 https:/en.wikipedia.org/wiki/Automotive_industry
2 "A Robot in Every Home: Overview/The Robotic Future". Bill Gates, Scientific American (2007).
3 http://www.ai.sri.com/shakey/
4 https://www.irobot.com/For-the-Home/Vacuuming/Roomba.aspx
5 S. Thrun et al., "Stanley: The Robot that Won the DARPA Grand Challenge", Journal of Field Robotics 23(9), 661-692, 2006.
6 Jesús Savage, Jesús Cruz, Mauricio Matamoros, David A. Rosenblueth, Stalin Muñoz, Marco Negrete, Configurable Mobile Robot Behaviors Implemented on FPGA Based Architectures, ICARSC 2016, the 16th IEEE Int. Conf. on Autonomous Robot Systems and Competitions, pp 317-322, Portugal, 2016.
7 Jesús Savage, Marco Negrete, Mauricio Matamoros, Jesús Cruz, Ramón Lagunas and Jaime Márquez, The Role of Robotics Competitions for the Development of Service Robots, IJCAI’16,
Workshop on Autonomous Mobile Service Robots, New York, USA, 2016.



