Full text
125 Control neuromórfico del brazo robótico BIOROB del Citec de la Universidad de Bielefeld CONTROL NEUROMÓRFICO DEL BRAZO ROBÓTICO BIOROB DEL CITEC DE LA UNIVERSIDAD DE BIELEFELD Linares Barranco, Alejandro*; Jiménez Fernández, Angel F.; Jiménez Moreno, Gabriel, Gutiérrez Galán, Daniel, Ríos Navarro, José Antonio Robótica y Tecnología de Computadores. Departamento de Arquitectura y Tecnología de Computadores. Escuela Politécnica Superior. Universidad de Sevilla. *E-mail: alinar[email protected] RESUMEN Los sistemas neuronales biológicos responden a estímulos de una forma rápida y eficiente en el movimiento motor del cuerpo, comparado con los sistemas robóticos clásicos, los cuales requieren una capacidad de computación mucho más elevada. Una de las claves de estos sistemas es la codificación de la información en el dominio pulsante. Las neuronas se comunican por eventos con pequeños pulsos de corrientes producidas por intercambio de iones entre las dendritas y los axones de las mismas. La configuración en redes de neuronas permite no sólo el procesado de la información sensorial y su procesamiento en el dominio pulsante, sino también la propia actuación sobre los músculos en el formato pulsante. Este trabajo presenta la aplicación de un modelo de control motor basado en el procesado de pulsos, incluyendo la propia actuación sobre motores en el contexto de los pulsos. Se ha desarrollado un sistema de control en lazo cerrado por pulsos, denominado spikebased PID controller para FPGA, el cual se ha integrado en el esqueleto de un robot bioinspirado, BioRob X5 del CITEC de la Universidad de Bielefeld, para su uso en el desarrollo de modelos bioinspirados. El Robot, de más de 1m de largo, permite controlar las posiciones de las articulaciones usando control por pulsos y con un consumo menor de 1A para todos los grados de libertad funcionando al mismo tiempo. PALABRAS CLAVE Procesado por eventos, Modelado neuronal, Robótica, Actuación motora pulsante, FPGA.
126 Linares Barranco, A.; Jiménez Fernández, A. F.; Jiménez Moreno, G.; Gutiérrez Galán, D.; Ríos Navarro, J. A. ABSTRACT Compared to classic robotics, biological nervous systems respond to stimulus in a fast and efficient way regarding to the body motor movement. Classic robotic systems usually require higher computational capacity. One of the main keys of biological systems respect to robotic machines is the way the information is codded and transmitted. They use spikes. A neuron is the “basic” element that form biological nervous systems. Neurons communicate in an event-driven way through small current pulses (spikes) produced when ions are interchanged between dendrites and axons of different neurons. When neurons are arranged in networks, they allow not only the sensory information processing, but they also allow the actuation over the muscles in a spiking way. This paper presents the application of a motor control model based on spike processing, including the motor actuation in the spike domain. A close-loop control system, called spike-PID controller, has been developed for FPGA. This controller has been embedded into a bioinspired robot, called BioRob X5, at CITEC of the University of Bielefeld during a “Salvador de Madariaga” grant for a research visit in the july-september 2018 term. The robot, longer than 1 meter tall, allows the joint position control through spiking signals with a power consumption bellow 1A for the 4 DoF working at the same time. KEYWORDS Event-based processing, Spiking systems, Neuromorphic engineering, Neuronal modeling, Robotic, Spiking motor actuation, FPGA.
127 Control neuromórfico del brazo robótico BIOROB del Citec de la Universidad de Bielefeld INTRODUCCIÓN Y OBJETIVOS Este trabajo se enmarca en el campo de la ingeniería neuromórfica, la cual busca insipiración en la biología, y concretamente en el sistema nervioso central, para resolver problemas de ingeniería imitando la forma en que se resuelven tan eficientemente en un cerebro. La implementación hardware de dispositivos neuromórficos requiere una base tecnológica que se elige para cumplir los requisitos de la aplicación deseada. Las bases tecnológicas más comunes son los diseños de chips “full custom” (ASIC) [1], las FPGAs (Field Programmable Gate Arrays) [2] o los FPAAs (Field Programmable Analog Arrays) [3]. El hardware neuromórfico desarrollado en la última década se puede clasificar en dos clases principales: los sensores y las redes neuronales. En el campo de los sensores, los ejemplos más representativos son los sensores de visión [4][5], de audición [6][7] y de olfato [8]. Los últimos procesadores neuronales analógicos son: ROLLS (procesador neuromórfico pulsante con aprendizaje reconfigurable on line) [9], Neurogrid [10], los dispositivos desarrollados en el HBP (Human Brain Project) basados en resultados de los proyectos EU BrainScaleS [11] o SpiNNaker [12], o los procesadores pulsantes digitales como Loihi de Intel [13] o Neurovision; o el chip de IBM TrueNorth que es un chip híbrido (analógico y digital) [14]. Para integrar e implementar arrays de neuronas pulsantes y arquitecturas neuromórficas complejas, una estrategia de comunicación para el envío de eventos es necesaria. Para ello se desarrolló el protocolo AER (Address-Event-Representation) [15], y hoy día es un estándar en la comunidad neuromórfica. AEs (Address Events) son eventos digitales con una etiqueta asociada (dirección). El tiempo se representa a sí mismo y las etiquetas asociadas identifican la fuente del evento (neurona que emite el impulso). El uso de ROMs permite el mapeo de eventos hacia diferentes destinos, habilitando así la construcción de topologías de redes arbitrarias. La robótica actual no está adaptada o no ofrece soluciones específicas para los sistemas neuromórficos, ya que los productos en el mercado incluyen controladores de motores en cada articulación del robot, siendo normal encontrar dispositivos de comunicación entre los grados de libertad del robot y la controladora (por ejemplo, usando el bus CAN), lo cual no permite ni llegar, ni conocer, las señales que se usan para el control directo del motor. En este trabajo se presenta un robot que se ha adquirido sin controladora alguna. Está compuesto por 4 grados de libertad que se manejan con 4 motores de corriente continua (DC motors) y que incluye un encoder óptico por articulación para informar sobre el estado actual de cada articulación.
128 Linares Barranco, A.; Jiménez Fernández, A. F.; Jiménez Moreno, G.; Gutiérrez Galán, D.; Ríos Navarro, J. A. Mediante el uso de tarjetas de circuito impreso basadas en FPGAs y microcontroladores se ha implementado e implantado un sistema de control motor pulsante para los 4 DC motors del robot usando controladores PID en el dominio pulsante. Así mismo se ha desarrollado el software necesario para comandar al robot desde un portátil. El controlador se ha caracterizado. Y, por último, se ha dotado al controlador de una interfaz hacia sistemas pulsantes implementados en la plataforma Dynap-SE. METODOLOGÍA En esta sección se procede a describir las características del robot utilizado en este trabajo, posteriormente se expone un resumen del controlador PID basado en impulsos que se integra en el robot, y por último, se expone la arquitectura de la plataforma final del robot con la integración del controlador neuroinspirado. El brazo robótico BioRob El robot BioRob [16] está basado en el concepto de actuación elástica y antagonista que se inspira en el aparato elástico músculo-tendón (ver Figura 1). Cada articulación dispone de un motor DC acoplado mediante cuatro cables o cuerdas que contienen muelles y otros componentes elásticos. De esta forma cada articulación posee características de resortes progresivos y no lineales. Adicionalmente, las articulaciones están dotadas de dos sensores: un sensor de posición del motor DC de tipo encoder óptico, y un sensor de posición angular de la articulación. El diseño de la actuación está descrito en detalle en [17] [18]. Figura 1. Brazo robótico BioRob X4.
129 Control neuromórfico del brazo robótico BIOROB del Citec de la Universidad de Bielefeld Figura 2. Diagrama de arquitectura del BioRob: articulaciones y motores. La Figura 2 indica la ubicación de cada motor y cada sensor en el brazo robótico. Los encoders de los motores y los sensores de posición de las articulaciones aseguran una resolución cartesiana por debajo de 1mm. Los sensores de posición de las articulaciones permiten la medida de las fuerzas elásticas de las articulaciones mediante el uso de las curvas características de la rigidez de la articulación. Esto habilita el control de fuerzas, la detección de colisiones y la reacción ante estos efectos. El control motor pulsante El controlador PID pulsante de motor es un controlador en lazo cerrado PID totalmente diseñado en el dominio pulsante. Tanto su señal de referencia de entrada, la señal de salida hacia el motor, así como la señal de sensado del motor para el cálculo del error, son señales codificadas en pulsos. Se utiliza la modulación por frecuencia de pulsos (PFM) incluso para atacar a las bornas de los motores. De esta manera ser permitiría que cualquier sistema neuro-inspirado pueda producir una señal que sea directamente usada para mover un motor a una velocidad determinada o a una posición concreta. Un controlador motor PID clásico se compone de tres bloques que ajustan la proporcionalidad, la integración y la deriva del error del sistema de control en lazo cerrado. Para implementar en el dominio pulsante un controlador PID se requiere del uso de una serie de elementos de procesado pulsante que nos permitan realizar las mismas funciones. Para ello se han diseñado e implementado una serie de elementos de procesado pulsante cuya formulación se realiza en el dominio S. Los bloques básicos son:
130 Linares Barranco, A.; Jiménez Fernández, A. F.; Jiménez Moreno, G.; Gutiérrez Galán, D.; Ríos Navarro, J. A. • Spike-Generator o Generador de impulsos: se utiliza para convertir una señal digital en una secuencia de pulsos con una frecuencia determinada. • Integrate & Generate (I&G) o Integrador y Generador de pulsos: Este bloque se compone de dos partes: la primera es un contador de pulsos de entrada, y la segunda es un generador de pulsos (descrito en el epígrafe anterior). De esta forma, y teniendo en cuenta los pulsos de polaridad positiva y negativa, la señal pulsante de salida de este bloque está representando la integral de la señal de entrada. En el dominio S, este bloque se representa con una función de transferencia como la siguiente: Donde out es la frecuencia en pulsos de la señal de salida, count es el valor de contador de pulsos de entrada, in es la frecuencia de la señal de entrada, NBITS es la resolución en bits del generador de pulsos, genFreqDiv es el divisor del reloj del generador de pulsos y fCLK su frecuencia de reloj. • Hold & Fire (H&F) o retén y dispara: Este bloque permite la fusión de dos señales pulsantes en una nueva señal que representa la diferencia de ambas o la suma de ambas, de una forma intuitiva y sencilla. Teniendo en cuenta las polaridades de los impulsos y el origen de la señal, se usa una máquina de estados para, una vez llegado un pulso por una de las entradas, esperar un próximo pulso y, teniendo en cuenta las polaridades de ambos, así como la operación a realizar (por ejemplo, restar señales pulsantes o sumarlas), se cancelarán los dos pulsos o se mandará el primero que se recibió para retener el último en llegar. • Spike Expanse block o Expansor de pulsos: Debido a que los pulsos de los sistemas neuromórficos son muy estrechos, este bloque se usa para expandir la anchura de los pulsos antes de ser enviados a las bornas de los motores. En este sentido, este bloque permite aplicar un factor multiplicativo o proporcional a la señal de salida de un controlador. • Spike Derivative block o derivador de pulsos: Mediante el uso combinado de un I&G y un H&F, tal como muestra la Figura 3, se puede obtener la función de transferencia en el dominio S de un derivador para su uso en un controlador PID.
131 Control neuromórfico del brazo robótico BIOROB del Citec de la Universidad de Bielefeld Figura 3. Diagrama del derivador y formulación en S. • Spike PID: La Figure 4 muestra el diagram de bloques de un controlador PID clásico, así como la solución adoptada para su implementación en el dominio pulsante. Se incluye la formulación en el dominio S. X(s) representa la señal enviada al motor, mientras que el estado actual del motor se representa por Y(s), la cual es enviada al controlador una vez medida por el sensor que cierra el lazo, y se representa como FB(s). La función de transferencia del controlador PID es TF(s) y la señal de referencia es U(s). En la solución pulsante, los bloques de integración y derivación trabajan sobre la señal de error del sistema (referencia menos realimentación), mientras que la proporcionalidad se aplica al expandir los pulsos. Figura 4. Arriba: controlador PID clásico y formulación. Abajo: Solución pulsante. Este controlador PID permite controlar en velocidad a un motor. Para poder aplicarlo al robot del CITEC se debe añadir un bloque I&G al sensor que mide el estado actual del motor para poder tener control sobre la posición actual del motor, que reflejará la posición actual de la articulación del robot. En la Figura 5 se muestra un diagrama de bloques que representa la solución implementada para el control del robot de cuatro articulaciones del CITEC.
132 Linares Barranco, A.; Jiménez Fernández, A. F.; Jiménez Moreno, G.; Gutiérrez Galán, D.; Ríos Navarro, J. A. Se han utilizado dos plataformas basadas en FPGA con la intención de mantener en la Spartan-3 la expansión de los pulsos y la adaptación de los sensores al dominio pulsante, lo cual es necesario para cualquier controlador pulsante que se realice. Por otro lado, en la Spartan-6, de mayor capacidad, se ha implementado el controlador pulsante PID en un porcentaje reducido de sus recursos, con la intención de permitir que la plataforma final permita probar e implementar nuevos controladores neuroinspirados en este robot. Figura 5. Diagrama de bloques del controlador pulsante PID del brazo robótico BioRob del CITEC. La infrastructura desarrollada La Figura 6 muestra el Sistema completo, su configuración y una fotografía. La tarjeta AER-Robot es capaz de alimentar hasta 4 motores DC con señales de potencia que se manejan desde una FPGA Spartan-3. Además, permite la lectura de los sensores. Se han usado dos buses paralelos AER para comunicar esta tarjeta con la segunda, la AER-node, que implementa los controladores pulsantes para todas las articulaciones. Se usa un bus SPI para enviar la configuración desde la placa AER-Robot hacia la AER-node. Esta configuración llega al sistema a través del bus USB que conecta el computador con la tarjeta AER-Robot.
133 Control neuromórfico del brazo robótico BIOROB del Citec de la Universidad de Bielefeld Figura 6. Configuración HW de la plataforma BioRob para control pulsante y fotografía del robot con el controlador (derecha). • AER-Robot: esta tarjeta ha sido desarrollada en el grupo RTC durante el proyecto SAMANTA-2 (2008) para controlar una mano robótica antropomórfica. Se centra en una FPGA Spartan-3 y un microcontrolador 8051 con conexión USB. Dispone de puentes de potencia opto-acoplados para controlar hasta 4 motores DC. En este escenario la FPGA está recibiendo impulsos en formato AER para poder controlar los motores. Se usan en total 8 direcciones para codificar los dos posibles sentidos de cada uno de los motores. Estas direcciones son decodificadas y se generan pulsos expandidos que se envían directamente a los motores a través de puentes de potencia. Al mismo tiempo, señales de los encoders anexados a los motores se usan, gracias a parejas desfasadas, para detector el sentido de giro del motor y su velocidad. Estas señales se convierten a pulsos y se envían en formato AER a la AER-node. La longitud de expansión de los impulsos es configurada a través de comandos recibidos por el microcontrolador 8051, que se conecta al software del PC mediante USB. El software del PC usado es el jAER, de libre distribución, al que se le ha añadido un filtro para controlar el robot. Estos comandos de configuración se envían a la FPGA de la placa AER-Robot y también a la FPGA de la placa AER-node a través del bus SPI. • AER-Node: Esta segunda tarjeta dispone de una FPGA de mayor capacidad, la Spartan-6, para poder albergar holgadamente los cuatro controladores pulsantes PID para fijar las articulaciones en una posición concreta. Además, esta tarjeta deja abierta la posibilidad de implantar nuevos modelos de controladores motores pulsantes, como puede ser el SVITE [20] u otros por