Second International Conference on Advanced Mechatronics, Design, and Manufacturing Technology - AMDM 2014 1 HERRAMIENTA PARA REALIZAR SOFTWARE-IN-THE-LOOP MEDIANTE ROBOT OPERATING SYSTEM Tool to Perform Software-In-the-Loop through Robot Operating System RESUMEN En este artículo se expone el uso de Software-in-the-loop (SIL) y Robot Operating System (ROS) como herramientas para la implementación de controladores y simulación de plantas en tiempo discreto. Para la validación experimental se utiliza como planta un levitador magnético, el cual se modela utilizando el formalismo de Lagrange obteniendo un modelo no lineal el cual es tratado mediante el uso del jacobiano para obtener una representación lineal. Este modelo es discretizado mediante una transformación de Tustin para la posterior implementación del lazo de control. Se implementa una retroalimentación de variables de estado como estrategia de control para su validación experimental sobre un sistema (Raspberry-Pi / fit-PC ; Matlab / PC). Se optó por el uso de ROS ya que se encuentra disponible para equipos con sistemas operativos basados en linux, como los utilizados en varios de los sistemas embebidos disponibles en el mercado com el Fit-PC, Beagle-Board y Raspberry-Pi, ROS ocupa poco espacio en disco (instalación básica), se hace la programación en C++ lo que permite un uso más a fondo del hardware. Para las pruebas se implementaron tres módulos (nodos); “reference_node” el cual se encarga de solicitar al usuario la posición deseada y transmitirla al siguiente nodo, “control_node” es el responsable de realizar el control, el cual recibe como entradas la referencia (posición deseada) y la salida de la planta (posición actual), y tiene como salida la señal de control (u), finalmente “plant_node” es el nodo que simula el comportamiento de la planta. Palabras clave: Robot Operating System, Raspberry-Pi, SIL. ABSTRACT This article describes the use of Software-in-the-loop (SIL) and Robot Operating System (ROS) as tools for controller implementation and simulation of discrete-time plants is exposed. For the experimental validation is used as a magnetic levitation plant, which is modeled using the Lagrange formalism of obtaining a nonlinear model which is treated by using the Jacobian to obtain a linear representation. This model is discretized using a Tustin transformation for subsequent implementation of the control loop. Feedback state variable is implemented as control strategy for experimental validation on a system (Raspberry-Pi / fit-PC, Matlab / PC). We chose to use ROS as it is available for computers running operating systems based on linux, as used in various embedded systems commercially available com the Fit-PC, Beagle-Board and Raspberry-Pi, ROS occupies low disk space (basic installation), programming is done in C ++ allowing more thorough use of the hardware. For testing three modules (node) implemented; "Reference_node" which is responsible for requesting the user to the desired position and transmit it to the next node, "control_node" is responsible for carrying out checks, which receives as inputs the reference (desired position) and the output of the plant (position current), and which outputs the control signal (u), finally "plant_node" is the node that simulates the behavior of the plant. Keywords: Robot Operating System, Raspberry-Pi, SIL. Fecha de recepción: 23 de septiembre de 2014 Fecha de aceptación: 2 de octubre de 2014 CRHISTIAN SEGURA GÓMEZ Ingeniero Mecatrónico, M. Sc. Profesor Catedra Universidad Militar Nueva Granada [email protected] JUAN CAMILO HERNÁNDEZ Ingeniero Mecatrónico, M. Sc. Asistente de Investigación Universidad Militar Nueva Granada [email protected] ÓSCAR FERNANDO AVILÉS Ingeniero Electrónico, Ph.D. Profesor Tiempo Completo Universidad Militar Nueva Granada [email protected] MAURICIO MAULEDOUX Ingeniero en Mecatrónica, Ph.D. Profesor Tiempo Completo Universidad Militar Nueva Granada [email protected] 2 Second International Conference on Advanced Mechatronics, Design, and Manufacturing Technology - AMDM 2014 1. INTRODUCCIÓN En este artículo se expone el uso de Software-in-the-loop (SIL) y Robot Operating System (ROS) como herramientas para la implementación de controladores y simulación de plantas en tiempo discreto, SIL ha sido usado para implementacion de distintos modelos como se observa en [1,2,3,4]. Para la validación experimental se utiliza como planta un levitador magnético, el cual se modela utilizando el formalismo de Lagrange y obteniendo un modelo no lineal el cual es tratado mediante el uso del jacobiano para obtener una representación lineal [5]. Este modelo es discretizado mediante una transformación de Tustin para la posterior implementación del lazo de control. Se implementa una retroalimentación de variables de estado como estrategia de control para su validación experimental sobre un sistema (Raspberry-Pi / fit-PC ; Matlab / PC). Se optó por el uso de ROS ya que se encuentra disponible para equipos con sistemas operativos basados en linux, como los utilizados en varios de los sistemas embebidos disponibles en el mercado com el Fit-PC, Beagle-Board y Raspberry-Pi. ROS ocupa poco espacio en disco (instalación básica), se hace la programación en C++ lo que permite un uso más a fondo del hardware, ejemplos de esto se encuentran descritos en [6, 7, 8]. controlador PID. La planta fue utilizada para probar el modelamiento del levitador magnético, ver figura. 1, donde m es la masa de la esfera, g la constante gravitacional, R la resistencia del embobinado y L la inductancia del mismo. Figura 1. Modelo físico. Se realizó un modelado matemático del sistema mediante la segunda ley de Newton y la Ley de Kirchhoff, con el fin de obtener las ecuaciones diferenciales, ver ecuación (1) las que permiten representen el comportamiento del sistema. ( ) (1) Para las pruebas se implementaron tres módulos (nodos); “reference_node” el cual se encarga de solicitar al usuario la posición deseada y transmitirla al siguiente nodo. “control_node” es el responsable de realizar el control, el cual recibe como entradas la referencia (posición deseada) y la salida de la planta (posición actual), y tiene como salida la señal de control (u). Finalmente “plant_node” es el nodo que simula el comportamiento de la planta. 2. DESARROLLO DEL PROBLEMA A lo largo de estas secciones se presenta la linealización y discretización de un levitador magnético, junto con la implementación de un controlador de realimentación de variables de estados, todo esto embebido en un sistema embebido, y programado con la herramienta ROS [9, 10]. Como se puede evidenciar el modelo matemático es no lineal, con el fin de implementar métodos de control lineales hay que eliminar los componentes de la ecuación que sean no-lineales, ver ecuación. (2). De esta forma es posible implementar estas ecuaciones dentro de un sistema digital para realizar las simulaciones. El término que se agrega al modelo no lineal hace referencia a la posición deseada de la esfera( ). Para todo el proceso de simulación los valores utilizados para cada elemento son: masa (m=0.1Kg), gravedad (g=9.8m/s^2), resistencia del embobinado (R=1Ω), inductancia de la bobina (L=0.01H) y fuerza contra electromotriz (c=1V). ̇ ̇ √ 2.1 Modelado del sistema A continuación se pretende explicar el procedimiento utilizado para obtener un modelo linealizado digital que sea funcional en un lazo de control en tiempo discreto para realizar la comparación de dos métodos de control como son la realimentación por variables de estado y un (2) ̇ Se cambió la representación a variables de estado para poder realizar los cálculos de forma matricial como se explica en [11, 12], quedando un sistema en espacio de Second International Conference on Advanced Mechatronics, Design, and Manufacturing Technology - AMDM 20142 estados de la forma ̇ , en la ecuación. (3, 4) se encuentra el modelo del levitador en este formalismo. En la figura 2 se encuentra el modelo de la planta en Matlab utilizando las matrices A, B, C, D, como se observa en la figura 3 al aplicar una entrada escalón de 10cm al sistema linealizado. ̇ ̇ [ ] ̇ √ [ [ ] [ ] (3) ] Figura 4. Diagrama de polos y ceros del levitador. Luego de conocer la cantidad y la posición de polos se procede a verificar que el sistema sea observable y controlable, lo que se realiza mediante el cálculo de los determinantes de las matrices de observabilidad y controlabilidad, ver ecuación (5), de ahí se tiene que ambos son diferentes de cero, con esto es posible implementar un controlador y un observador para obtener la salida deseada. Figura 2. Sistema linealizado. [ ] [ (5) ] 2.2 Retro de estado Figura 3. Respuesta frente a entrada escalón 10cm. Para poder implementar un controlador se deben conocer las características de la planta, como puede ser la ubicación de polos y ceros del sistema, estos se pueden obtener calculando el polinomio característico y despejando las raíces, ver ecuación (4). En la figura 4 se encuentra el diagrama de polos y ceros donde se observa un polo ubicado en el semiplano derecho que hace al sistema inestable. Para el control por retroalimentación de variables de estado se utilizó el modelo en espacio de estados como se propone en [5], pero debido a que la salida del sistema solo permite medir de manera directa uno de los estados, se planteó el uso de un observador que permitiera obtener los demás estados, para obtener los valores del controlador (K) y del observador (L) que se implementaron, se utilizó el método de Ackerman. Se escogieron como parámetros de diseño un cita de 0.7 y un ts de 0.5s, el sistema completo se observa en la figura 5, y las constantes del control en la ecuación (6), en la figura 6 se observa la respuesta del sistema controlado. (4) Figura 5. Modelo controlado por una realimentación de variables de estado. Second International Conference on Advanced Mechatronics, Design, and Manufacturing Technology - AMDM 2014 3 [ ] (6) Figura 6. Respuesta del sistema realimentado frente a entrada escalón de 10 cm. 3 ROS Para la realización de las pruebas del software in the loop se implementaron varios nodos, y la información que comparten se llama topics, en la figura 7 se encuentra la arquitectura desarrollada en ROS, los nodos son ref_node que se encarga de pedir al usuario la referencia deseada y la transmite mediante el topic “/ref” al ctrl_node que recibe adicionalmente /sal y /obs, internamente realiza el cálculo del error y genera la señal de control a través el topic /ctrl. El planta_node tiene implementada la ecuación en diferencias que genera la salida del sistema frente a la entrada presentada, pero dado que por la matriz C solo sale un estado, es necesario implementar un observador para estimar los otros dos estados que requiere el método de realimentación por espacio de estados, esto se realiza en obs_node. computadores en la misma red, de tal forma que apunten a la IP del equipo que lanzo el roscore. Se puede evidenciar que los demás nodos están al mismo nivel jerárquico por lo tanto se pueden iniciar en cualquier orden. Figura 8. Nodos y su jerarquía en ROS. En la figuras 9, 10, 11 y 12 se encuentran los diagramas de secuencia de cada uno de los nodos en donde los bloques indican acciones, y las flechas muestran el sentido que sigue el programa. También se evidencia quién publica (emite) los mensajes y cuál nodo es el encargado de recibirlos para poder desarrollar las operaciones pertinentes. Figura 9. Diagrama de secuencia del nodo referencia. Figura 7. Arquitectura de módulos en ROS. Las ecuaciones del observador se encuentran en (7) donde A, B y C son las matrices del sistema, es la matriz de ganancias del observador, ̃ y ̃ son las variables estimadas y la salida estimada respectivamente. ̃ ̃ ̃ ̃ ̃ (7) En la figura 8 se observa la jerarquía de los programas en ROS, de ahí se puede ver que primero es necesario iniciar el nodo roscore, el cual se encarga de coordinarlos a todos y también crea un servidor, esto permite que los demás nodos puedan ser lanzados desde otros Figura 10. Diagrama de secuencia del nodo planta. Second International Conference on Advanced Mechatronics, Design, and Manufacturing Technology - AMDM 20144 ROS tiene implementada la comunicación entre “Nodos” que facilita la implementación de múltiples programas ya que se pueden usar los protocolos establecidos por defecto o implementar los propios; además, almacena la información transferida permitiendo para el caso de controles y sistemas discretos ver “muestras” o eventos del pasado para la implementación de las ecuaciones en diferencias. 5. BIBLIOGRAFÍA Figura 11 Diagrama de secuencia del nodo de control. [1] M. ubera, onsa, llera, Exergetic evaluation of solar controller using Software-In-TheLoop method, ScienceDirect ELSEVIER 850-857, 2014Demers, S.; Gopalakrishnan, P.; Kant, L., "A Generic Solution to Software-in-the-Loop," Military Communications Conference, 2007. MILCOM 2007. IEEE , vol., no., pp.1,6, 29-31 Oct. 2007. [2] Hassani, K.; Won-Sook Lee, A software-in-the-loop simulation of an intelligent microsatellite within a virtual environment, Computational Intelligence and Virtual Environments for Measurement Systems and Applications (CIVEMSA), 2013 IEEE International Conference on , vol., no., pp.31,36, 15-17 July 2013. [3] G. Vandia, N. Cavinaa, E. Cortia, G. Mancinia, D. Moroa, F. Pontia, V. Ravagliolia ,Development of a software in the loop environment for automotive powertrain systems, 789 – 798, 2014. [4] Muresan, M.; Pitica, D., Software in the Loop environment reliability for testing embedded code, Design and Technology in Electronic Packaging (SIITME), 2012 IEEE 18th International Symposium for , vol., no., pp.325,328, 25-28 Oct. 2012. [5] F. Grognarda, R. Sepulchreb, G. Bastina, Global stabilization of feedforward systems with exponentially unstable Jacobian linearization, 107– 115. Figura 12. Diagrama de secuencia del nodo del observador. 4. CONCLUSIONES El uso de ROS como herramienta de simulación de sistemas, mediante la técnica de SIL, permite validar controladores diseñados en discreto dentro de un lazo de control, de este modo se pueden probar las plantas en ambientes de trabajo críticos sin arriesgar maquinaria, equipos o vidas. El uso de sistemas embebidos, con sistemas operativos que tienen un bajo consumo de recursos, tiene como ventaja que los algoritmos implementados se ejecuten de forma eficiente, para el caso de la herramienta ROS permite que se puedan asegurar tiempos de generación de señales, y de este modo se puede obtener una buena representación en discreto de las señales continuas. [6] I. Mayachita, R. Widyarini, H. R. Sono, A. R. Ibrahim, W. Adiprawita Implementation of Entertaining Robot on ROS Framework ScienceDirect ELSEVIER 380-387, 2011. [7] André Araújoa, David Portugala,*, Micael S. Couceiroa,b, Jorge Salesc y Rui P. Rochaa, Desarrollo de un robot móvil compacto integrado en el middleware ROS, 315–326, 2014. [8] Fetter Lages, Walter; Ioris, Darlan; Santini, Diego Caberlon, An Architecture for Controlling the Barrett WAM Robot Using ROS and OROCOS, ISR/Robotik 2014; 41st International Symposium on Robotics; Proceedings of , vol., no., pp.1,8, 2-3 June 2014. [9] DeMarco, K.; West, M.E.; Collins, T.R., An implementation of ROS on the Yellowfin autonomous underwater vehicle (AUV), OCEANS 2011 , vol., no., pp.1,7, 19-22 Sept. 2011. [10] Speers, A; Forooshani, P.M.; Dicke, M.; Jenkin, M., Lightweight tablet devices for command and control of ROS-enabled robots, Advanced Robotics (ICAR), 2013 16th International Conference on , vol., no., pp.1,6, 25-29 Nov. 2013. Second International Conference on Advanced Mechatronics, Design, and Manufacturing Technology - AMDM 2014 5 [11] K. Ogata, Ingenieria de Control Moderna, Prentice Hall; 3rd edition edition (March 1999) [12] S. Ramirez Control de Sistemas No Lineales, Prentice Hall; (Mayo 2004).