INTRODUCCIÓN A LA ROBÓTICA
Figura 1: George C. Devol, a la derecha, y Joseph F. Engelberger son servidos por un brazo mecánico que ellos desarrollaron. Créditos…The Estate of George C. Devol.
¿Qué es un robot?
A veces es difícil dar una respuesta a esta pregunta. Un profesor dijo durante una clase que sabe decir lo que no es un robot, pero no lo que es un robot.
“Definición de libro”: Dispositivo electromecánico programable, con percepción y que puede desempeñar distintas funciones.
¿Qué hace un robot?
Sustituir al operario humano en trabajos peligrosos, aburridos o desagradables para las personas.
¿Qué es la robótica?
Veámoslo…
Figura 2: Robots de ciencia ficción de la película Star Wars.
Modelos de Robots:
Existen muchos dominios en los que podemos encontrar presencia de robots. El más conocido es el brazo robótico (también conocido como manipulador) que existe en muchas fábricas de coches ejecutando tareas como soldadura o pintura. Este robot normalmente está fijado o se mueve sobre una cinta, sin tener más alcance que el que permite la longitud de sus eslabones y el recorrido de la cinta sobre la que se ha fijado.
Otro dominio muy estudiado es el terrestre, aquí el robot se mueve sobre un plano por diferentes métodos de locomoción, que van desde un variado número de patas a ruedas de diferentes tipos, pasando por locomoción tipo oruga como algunos tanques.
En el dominio aéreo encontramos varios tipos de robots, incluyendo algunos con alas batientes que imitan el vuelo de los pájaros.
Cada dominio tiene su propia dinámica y cada configuración describe un movimiento restringido concreto. Por ejemplo, la conducción de un coche no es igual que la conducción de una bicicleta y en ninguno de los dos casos es posible un avance en dirección perpendicular a la longitudinal del vehículo sin un avance longitudinal, tampoco pueden girar sobre sí mismos sin avanzar… sin embargo existen configuraciones que son capaces de desacoplar el movimiento longitudinal y perpendicular como las que usan velocidad diferente para cada rueda (skid steering o dirección deslizante) o como las que actúan cambiando la dirección de cada rueda de forma independiente (explicit steering).
Figura 3: Shamah, Benjamin. “Experimental Comparison of Skid Steering Vs. Explicit Steering for a Wheeled Mobile Robot.” (1999).
Control del Robot:
Estos modelos describen cómo es el movimiento del robot y permiten realizar cálculos para controlar dicho movimiento.
Todo sistema tiene un estado, unas entradas y unas salidas, la evolución del sistema del estado actual al siguiente depende del estado actual y de las entradas.
El control automático es una ciencia que transciende de la robótica, se encarga de obtener el resultado deseado de un sistema variando por sí solo las condiciones de dicho sistema. Por ejemplo, un motor que gire más rápido gracias a que aumente la corriente que circula por su bobina es controlado con el método de realimentación negativa que compara la velocidad del motor con la velocidad deseada y manipula la corriente en función del error entre ambas velocidades.
Si queremos que nuestro robot se mueva, debemos primeramente determinar hacia dónde queremos que se mueva (obtener un objetivo). Tras ello, aplicando el modelo, determinar qué cambios deben darse en el estado del robot para acercarnos a ese objetivo. La forma más común de lograr esto es obtener el error, la diferencia entre el estado actual y el estado deseado, y obtener unas entradas para el sistema proporcionales al error. Dichas entradas se traducen en distintas magnitudes en función de en qué nivel de autonomía estemos.
Arquitectura y Autonomía:
Para que el robot pueda llevar a cabo sus tareas es necesario que este tenga tanto sensores que le permitan percibir su entorno (todo tipo de instrumentos para medir distancia, cámaras, etc) y percibirse a sí mismo (todo tipo de giróscopos, acelerómetros, codificadores de posición y velocidad, etc), como actuadores que le permitan moverse (motores) y actuar sobre su entorno (herramientas).
Figura 4: Cap 6 del texto “Robótica. Manipuladores y robots móviles”. A. Ollero. Marcombo-Boixareu (2001).
Existen varios niveles de abstracción del control del robot, así como de la percepción. Desde abajo, los niveles más básicos consisten en, por ejemplo, alcanzar una velocidad objetivo en la velocidad de giro de un motor, o medir una distancia en una dirección. (Más por debajo aún en la escala del control, hay que manejar la corriente que circula por una bobina en el caso de un motor). Llegando a los niveles más altos, como decidir qué camino seguir para llegar al objetivo o como obtener un mapa del lugar en el que se encuentra.
Por tanto, para poder mover al robot debemos controlar desde la corriente que circula por nuestros dispositivos hasta cuál es el plan que seguir.
Figura 5: Diagrama de bloques de componentes del robot ROSbot 2R del fabricante Husarion.
En su libro sobre robótica móvil, Alonzo Kelly, de la Carnegie Mellon University, nos da tres niveles de autonomía: reactiva, que consiste en mover el vehículo y las articulaciones del robot, perceptiva que consiste en responder ante el entorno y ser capaz de predecir a corto plazo qué puede ocurrir y deliberativa que consiste en concretar cómo lograr unos objetivos o misión y poder predecir a futuro cómo se va a desarrollar la situación. También añade en sus diapositivas un nivel de supervisión, que consiste en definir esa misión y del que se ocupa una persona normalmente.
Para conseguir un control en tiempo real (tiempo real se refiere a la necesidad de obtener de manera instantánea una respuesta ante cambios) se hace necesario repartir las tareas entre varios controladores que recogen datos en crudo, medidas sin procesar y controladores que actúan sobre el hardware más bajo como motores. El procesamiento de los datos para obtener información útil que permita al robot realizar su tarea se realiza en otro ordenador (más potente y que puede permitirse tardar un tiempo en ejecutar su programa (no en tiempo real)) y también toma las decisiones a un nivel lógico más abstracto, como por ejemplo hacia qué zona de Marte explorar. También entre ambos niveles encontramos tareas que, aunque no son de bajo nivel, son críticas en tiempo de respuesta como por ejemplo evitar chocar o volcar.
Figura 6: Arquitectura de Control del robot AURORA.
Tareas típicas
En lo que a robots que se mueven respecta, siempre va a ser necesaria la tarea de localización. Esta tarea consiste en colocar en un modelo del entorno los objetos que hay en ese entorno y al propio robot.
Figura 7: Cap 6 del texto “Robótica. Manipuladores y robots móviles”. A. Ollero. Marcombo-Boixareu (2001).
Además de la localización, hay otras tareas que pueden ser más o menos importantes y suelen aparecer. Tareas como la navegación, la exploración, el mapeo, la planificación, el seguimiento de ruta, la evitación de obstáculos, etc. En sistemas multi-robot (donde se combinan varios robots) la complejidad crece y se dan problemas nuevos, como el del almacén, que consiste en determinar qué robot de entre todos los disponibles debe ir a recoger un paquete.
Figura 8: Viñeta cómica sobre planificación de caminos.
Un robot que nos cervecea
Pongamos un ejemplo práctico para vislumbrar mejor qué hace un robot.
Queremos que un robot nos traiga una cerveza de la nevera.
Necesariamente, debemos disponer de una plataforma móvil con medios para moverse y percibir su entorno. Por ejemplo, el conocido robot limpiador Roomba. Sin embargo, quizás no sea suficiente.
Existe una característica llamada “Carga de Pago” (Payload) que se refiere a cuánto peso se puede añadir al robot. Para potenciar una mayor versatilidad de la máquina (que pueda desempeñar funciones muy variadas) cuando se diseña una plataforma robótica se hace pensando en que sea fácil añadirle nuevas partes, como un brazo robótico para coger cervezas o un compartimento para almacenar cervezas. Entonces, nuestra Roomba puede estar limitada en este sentido.
Si hacemos un recorrido secuencial de qué va haciendo un robot cuya misión es recoger de la nevera una cerveza y entregárnosla, el plan sería algo así:
- Recibir una orden.
- Alcanzar la nevera.
- Coger una cerveza.
- Encontrar a quien solicitó la cerveza.
- Entregar la cerveza.
- Esperar nueva orden.
Recibir una orden.
Nuestro robot tendrá que saber qué queremos que haga. Idealmente tendremos un robot capaz de, por sí mismo, saber que le toca traernos otra cerveza, sin embargo y en general, tendremos que comunicárselo por algún medio.
Y existen muchos medios, podríamos hablarle a nuestro robot al igual que hablamos con el resto de las personas. Para ello nuestro robot debería tener implementados mecanismos de procesamiento de lenguaje natural. Sin embargo, es más fácil implementar una aplicación en nuestro móvil que tenga su correspondiente aplicación en el ordenador de a bordo del robot. Otra opción sería tener un mando de radio control, y mediante unos botones del mando enviar la orden.
Supongamos que cogemos el camino difícil (para quien tenga que implementarlo). Si queremos hablarle directamente al robot será necesario que nuestro robot disponga de un micrófono, este micrófono deberá tener su propio driver (controlador), es decir, una tarjeta electrónica que maneje el funcionamiento del micrófono. El micrófono cumple la función de generar una señal eléctrica con la misma información que la señal acústica. Cuando se transforma la señal desde acústica a eléctrica se tarda un tiempo, llamado retraso, que hay que tener en cuenta.
Figura 9: Carlos Pérez del Pulgar, director Space Robotics Lab de la Universidad de Málaga, probando un robot de exploración.
Ahora que tenemos una señal eléctrica queremos extraer de ella ciertos datos que nos interesen. Estos datos pueden ser información más allá de las palabras concretas que el humano le lanza al robot, por ejemplo, nuestro robot puede reconocer a una persona por su voz, tal y como ya hacemos entre nosotros. Para lograr obtener dichos datos, hemos escrito un programa que procesa la señal y lo hemos cargado en el ordenador del robot.
Otro programa procesa el texto generado. De entre todos los datos que sacamos de la señal eléctrica, uno de ellos serán palabras. El procesador del texto se apoyará en una red neuronal que hemos entrenado para que sea capaz de determinar si le estamos pidiendo al robot una cerveza. Si este procesador interpreta correctamente nuestra orden, el robot tendrá una nueva misión y deberá decidir qué acciones llevar a cabo para cumplirla.
Mientras que el retraso que se produce al transformar la señal acústica en una señal eléctrica es despreciable, el retraso que se produce en las etapas posteriores es cada vez mayor, no siendo despreciable el tiempo que se toma el robot en determinar qué tiene que hacer.
Démonos cuenta de que una misma función, como es la comunicación entre humano y robot, se puede realizar de formas muy diferentes. Requiriendo cada una de las distintas soluciones unas herramientas distintas: botones, pantallas, micrófonos, etc.
Igualmente vemos que dichas herramientas son útiles para cumplir otras funciones. Ese micrófono puede emplearse para medir distancia si añadimos un emisor de ultrasonidos o el procesador de texto se puede emplear para leer texto extraído de una imagen que el robot adquiera mediante cámaras.
Esta característica de los sistemas robóticos es la modularidad, que trata de abstraer y separar el funcionamiento de un componente del resto del robot para facilitar su integración en sistemas distintos.
El programa que se ocupa de decidir las acciones se denomina planificador. Crea un plan y supervisa el cumplimiento de cada acción, tomando el control cuando determina que una acción no va a lograrse cumplir y decidiendo si una acción se ha cumplido o no. Si separamos del planificador la función de controlar la ejecución efectiva del plan tendremos otro programa denominado supervisor.
- Alcanzar la nevera.
Para alcanzar la nevera nuestro robot debe planificar una ruta, para lo cual requiere información sobre dónde se encuentra la nevera o qué obstáculos hay entre la nevera y el robot. Dicha información puede encontrarse modelada como un mapa, un fichero de datos que se almacena en la memoria del ordenador de nuestro robot. También es necesario conocer su propia localización.
La ruta en sí puede venir dada de muchas maneras, lo normal es descomponerla en puntos del camino que se deben ir alcanzando en orden.
Figura 10: Un ejemplo de planificación de camino.
Tras la planificación, entra en juego la navegación. El robot requiere tener un seguidor del camino que reciba la ruta del planificador y trate de alcanzarla de la manera más exacta posible.
Mientras se mueve, el robot debe conocer en cada momento su nueva posición para que el seguidor de trayectoria pueda determinar qué nuevas velocidades dar a cada rueda.
Además, mientras se mueve, el robot debe ser capaz de identificar su entorno inmediato para evitar colisiones con objetos, lo que se conoce como evitación de obstáculos.
El movimiento del robot puede estar totalmente abstraído del hardware, es decir, puede existir un intérprete entre el seguidor del camino y los controladores de los motores que traduzca comandos como velocidad lineal y dirección a velocidades de rotación concretas para cada rueda o para el volante de dirección.
Los controladores de la velocidad deben ser capaces de modificar la intensidad de corriente que circula por los motores de corriente continua para variar así la velocidad hasta alcanzar la que se les pide desde el seguidor de trayectoria.
Control Automático Cambiar dirección, velocidad o configuración mecánica del robot. |
Navegación Determinar qué debe cambiar en el movimiento del robot para acercarse al objetivo.
| Planificación
Determinar cuál es el plan o la secuencia de acciones concretas para ejecutar una tarea. |
Estimación del Estado Responder a la pregunta ¿dónde y cómo estoy? | Percepción
Responder a la pregunta ¿qué hay alrededor?
| Mapeado Generar un modelo del entorno (mapa) que permita localizar los objetos del entorno y al propio robot. |
Por el lado de la percepción, las ruedas deben tener codificadores que permitan determinar las velocidades en cada elemento rotatorio en cada instante. Estas velocidades se procesan e integran para estimar el estado, la posición o la configuración del robot. Esta capacidad de percepción se conoce como propiocepción porque se refiere al estado interno del sistema y no al de su entorno. La propiocepción es básica para hacer funcionar tanto a los drivers de los motores como al seguidor de trayectoria. La integración de las velocidades de cada rueda se conoce como odometría.
Por ejemplo, el cuentakilómetros del coche es un odómetro, un instrumento que a partir de una posición inicial (kilómetro 0) va sumando las medidas para concretar una posición actual, aunque en el caso del coche en una sola dimensión.
Para una mejor estimación del estado se emplean más sensores, por ejemplo, uno muy útil es la IMU, un sensor que concentra de forma integrada acelerómetros, giróscopos y brújulas.
Si seguimos subiendo en la percepción, nuestro robot debe ser capaz de auto localizarse, es decir, si tenemos un mapa del lugar, saber en qué punto nos encontramos. La localización es un problema que se ha resuelto, sobre todo gracias a la gran mejora de los sistemas de adquisición y procesamiento de imágenes, pero como en todos los casos no existe una única solución para un problema.
La localización se lleva a cabo por muchos medios, el más antiguo es la triangulación, mirar a las estrellas y emplear una brújula, o tener integrado un sensor GPS. Pero también se puede disponer de marcas reconocibles que se han colocado explícitamente para que el robot las detecte y procese, o colocar balizas de radiofrecuencia en posiciones conocidas para que el robot pueda calcular la posición en función de la potencia de la señal que recibe o el tiempo que tarda en llegar la señal desde la baliza. La solución más reciente y que se ha mostrado más efectiva en entornos urbanos e interiores consiste en obtener características del entorno que sean fijas, como por ejemplo la detección de una esquina, el marco de una ventana o una cornisa, y ponerlas en un mapa. Combinando varias características, se puede determinar desde dónde se están observando dichas características.
Nuevamente, esto se puede llevar a cabo de distintos modos. Un gran aliado de la robótica para este problema es el LIDAR, algo así como un radar que emplea láseres para medir distancias. También se puede emplear la visión estéreo, unir dos imágenes tomadas desde dos posiciones conocidas en el mismo momento y encontrar la relación entre los puntos de la imagen donde se encuentran los mismos objetos para determinar a qué distancia están estos. La visión estéreo es más barata que el LIDAR, pero aumenta la complejidad.
Si escalamos un poco más en la percepción, encontramos la función de mapeo (Mapping).
Podemos disponer de un mapa que nos entregue un sistema externo al robot o podemos generarlo nosotros mismos. Los robots aspiradora aprenden a recorrer toda la casa gracias a esta función de mapeo. El mapeo y la localización están relacionados en la forma en que se consiguen ambas, por ejemplo, por medio de las features, características reconocibles en el entorno como puede ser una esquina o el marco de una ventana. Si las características que percibe el robot en un momento dado coinciden con las características guardadas en el mapa se puede calcular desde donde se observan.
La mejor manera de hacer mapping no es otra que el SLAM, que significa Simultaneous Localization and Mapping. ¿Qué fue primero, el mapa o la localización?
Figura 11: Beer Me, Robot (cervecéame, robot) de Willow Garage.
Nuestro robot, exhausto por tanto trabajo, llega a la nevera. El planificador de la misión determina que se ha conseguido con éxito el primer paso y termina aquellos programas que no deben continuar. Luego lanza los programas necesarios para el siguiente paso:
Coger una cerveza.
Nuestro robot debe tener la capacidad de abrir la nevera y coger la cerveza. Para hacerlo nuestro robot tiene un brazo robótico (Robot manipulador móvil terrestre).
Primeramente, el robot identifica la posición de la barra de la nevera. Para ello, ejecuta un programa que implementa la red neuronal que se ha entrenado con imágenes de distinta luz y orientación de dicha barra.
También para ello, recoge varias imágenes y determina la localización de la barra que ha identificado en cada imagen, calculando la diferencia de tamaño y posición y tomando en cuenta desde dónde se ha tomado cada imagen.
Luego, se resuelve el problema de la cinemática inversa, es decir, se determinan los ángulos que debe formar cada eslabón de nuestro brazo para que la posición final de la mano de nuestro brazo robótico coincida con la de la barra. Como esto puede tardar, se hacen los cálculos de forma independiente y simultánea para cada articulación.
Figura 12: Parámetros del brazo robot para la cinemática inversa (Reyes J. M., 2015).
Si tenemos encoders (sensores de posición angular) en cada articulación (unión entre dos eslabones del brazo), somos capaces de obtener cuáles son los ángulos que forman los eslabones de nuestro brazo ahora mismo, resolviendo la cinemática directa. Ahora solo queda determinar varios puntos intermedios entre el objetivo y el actual (planificando una trayectoria) e ir alimentando a un controlador del brazo (o más bien a cada controlador de cada articulación) con estos objetivos intermedios para que nuestro brazo alcance la barra de la nevera. Luego, debemos agarrar la cerveza.
Entre tanto, debemos saber que la cerveza tiene propiedades mecánicas concretas que hacen que debamos diseñar nuestra mano para que el agarre sea firme y preciso, de manera que no aplique ni más ni menos fuerza de la necesaria y que no resbale la botella.
Es decir, el agarre de un objeto conlleva no solo conocer la posición y orientación de dicho objeto sino también disponer de un efector final (mano del brazo robótico) adecuado.
Cerramos la puerta de la nevera y el supervisor de la misión manda al robot seguir con el siguiente paso:
Encontrar a quien solicitó la cerveza.
Ahora toca moverse de nuevo, y entran nuevamente en funcionamiento la planificación, la navegación y la localización.
Debemos establecer un algoritmo de exploración, que determine a dónde movernos para buscar a la persona que nos pidió la cerveza y debemos establecer también un método para identificar a esa persona.
Podemos poner un localizador al humano (que por cierto ya lleva en su móvil), pero de nuevo volvemos a apoyarnos en IA (inteligencia artificial) para identificarlo y darle su birra.
Entregar la cerveza.
En un delicado movimiento y de forma muy protocolaria, hacemos entrega de la cerveza.
La interacción humano-robot aún es un tema polémico. Existe una rama de la robótica que está dando buenos pasos en mejorar esta situación llamada soft robotics, robótica suave. Soft Robotics busca crear robots inofensivos para los humanos empleando materiales blandos y flexibles, desgraciadamente queda mucho por hacer. Por ello, la solución hoy día suele ser definir espacios en los que el robot no puede entrar y espacios en los que el robot puede colocar lo que va a entregar.
Dar algo a un robot o recoger algo de un robot es una interacción que un desarrollador o un investigador siempre vive con cierto miedo.
Aun así, si somos valientes y queremos interaccionar físicamente con el robot, es necesario implementar una función que en general se conoce como tracking de objetos y que en este caso es tracking o seguimiento de una mano.
La mano que se mueve para recoger la cerveza se localiza de forma simultánea e ininterrumpida para que el robot pueda acercar la cerveza y soltarla cuando entienda que se le han agarrado la cerveza.
En un protocolo más seguro, el robot soltaría la cerveza en una mesa y se alejaría lentamente. Entre el protocolo más riesgoso y el más seguro, para el protocolo intermedio existiría una interfaz entre el robot y el humano como un botón que abriese la mano del brazo del robot, de manera que el robot pasase a un estado inmóvil hasta que el humano recogiese la cerveza y se fuera.
Esperar nueva orden.
Para acabar, el supervisor del plan comprueba que se ha logrado cumplir la misión y termina las tareas que siguieran ejecutándose.
Ahora el robot queda en stand-by, atento a su entorno y esperando una nueva misión.
Conclusión
En este artículo trato de dar una visión general de lo que es la robótica. He escrito este artículo a nivel divulgativo, para preparar la charla del Cerve-Ciencia 2023 (que organiza en verano AMDIC y trata de acercar al público general temas de ciencia).
Creo que queda claro que la robótica es un campo muy complejo y en constante evolución que requiere de un enfoque multidisciplinar y que conlleva trabajar codo con codo con expertos de diferentes campos.
Figura 13: R. Zufferey et al., «Design of the High-Payload Flapping Wing Robot E-Flap,» in IEEE Robotics and Automation Letters, vol. 6, no. 2, pp. 3097-3104, April 2021, doi: 10.1109/LRA.2021.3061373.