Uso de Simulink y Arduino para Pr acticas de Rob...

10
Uso de Simulink y Arduino para Pr´ acticas de Rob´otica J.E. Gil Lozano, A.J. Mu˜ noz Ram´ ırez, V. Torres L´ opez, y J.M. G´ omez de Gabriel Dto. Ingenier´ ıa de Sistemas y Autom´ atica Universidad de M´ alaga [email protected], {ajmunoz, vetorres, jmgomez}@uma.es Resumen En ´ este art´ ıculo se presenta el dise˜ no de un equi- po y un conjunto de pr´ acticas para la docencia en asignaturas de rob´otica, mediante el uso de Simu- link y los microcontroladores Arduino. Se han di- se˜ nado y construido un conjunto de plataformas m´oviles con un microcontrolador y se ha evaluado su rendimiento y la facilidad del uso de Simulink con las librer´ ıas de soporte de Arduino para su uso docente en grados de ingenier´ ıa. Palabras clave: Docencia, Arduino, Rob´ otica, Simulink. 1. Introducci´ on El aprendizaje basado en proyectos es un m´ etodo de ense˜ nanza que implica a los estudiantes en la resoluci´ on de problemas de ingenier´ ıa reales [10]. Para que sea eficaz, el profesor debe identificar un problema de una extensi´ on adecuada y con una dificultad suficiente para estimular el proceso de aprendizaje. Si adem´ as, el proyecto est´ a apoyado con equipos f´ ısicos, frente a los modelos de simu- laci´ on, se proporciona al alumno una versi´ on com- pleta del problema a resolver, en lugar de limitar su trabajo a un modelo simplificado, a la vez que aumenta su motivaci´ on [11]. Desafortunadamente, muchos sistemas de desarrollo hardware son com- plejos y distraen al alumno y al profesor con la resoluci´ on de problemas hardware de bajo nivel que no suelen estar relacionados con el objeto de estudio. Sin embargo, recientemente ciertas herramien- tas reconocidas en el ´ ambito acad´ emico, como MATLAB y Simulink, usadas en el dise˜ no y si- mulaci´ on de sistemas de control de robots, se han visto potenciadas por la incorporaci´ on de capaci- dades para programar de forma transparente las plataformas de desarrollo hardware de bajo cos- te m´ as populares, como son los sistemas Arduino [5], Lego NXT, Beaglebone y Raspberry Pi, entre otras [4]. La soluci´ on ideal tanto para el profesor como pa- ra el alumno es disponer de una herramienta de alto nivel para el dise˜ no de sistemas de control de robots, y su modelado, para simulaci´ on y ge- neraci´ on de c´ odigo que pueda ser evaluado sobre un robot f´ ısico de bajo coste [17]. En concreto, el objetivo de este trabajo es presentar la experien- cia de la creaci´ on de unos equipos de pr´ acticas de rob´ otica de bajo coste programables con la he- rramienta MATLAB/Simulink en asignaturas de rob´ otica. Para lo cual se ha dise˜ nado y constru´ ıdo la plataforma m´ ovil PIERO (V´ ease Figura 1). Figura 1: Plataforma rob´ otica educativa PIERO basada en Arduino programable mediante Simu- link Entre las materias impartidas por el Departamen- to de Ingenier´ ıa de Sistemas y Autom´ atica de la Universidad de M´ alaga, existen diversas asigna- turas relacionadas con la rob´ otica, y el modelado y control de robots m´ oviles y manipuladores. En ´ estas se incluyen pr´ acticas de control, cinem´ atica y din´ amica, que a menudo se realizan mediante alculos y simulaci´ on en MATLAB y Simulink. El principal beneficio esperado es que el entorno de desarrollo elegido, al resultar familiar tanto a profesores como a alumnos, reduzca el tiempo ne- cesario de preparaci´ on de pr´ acticas y de aprendi- zaje debido a que no se requiere el aprendizaje de otros lenguajes ni herramientas de programaci´ on adicionales [8]. Asimismo se espera que la realiza- ci´ on de las pr´ acticas en laboratorio sea m´ as eficien- te debido a que el mismo modelo que se construye para simular el robot se utiliza para controlarlo. Por ´ ultimo un beneficio adicional esperado con- siste en el reducido coste econ´ omico del hardware utilizado. Adem´ as, ´ este art´ ıculo pretende servir de ayuda o referencia a los profesores interesados en

Transcript of Uso de Simulink y Arduino para Pr acticas de Rob...

Page 1: Uso de Simulink y Arduino para Pr acticas de Rob …gomezdegabriel.com/wordpress/wp-content/uploads/2014/09/...te m as populares, como son los sistemas Arduino [5], Lego NXT, Beaglebone

Uso de Simulink y Arduino para Practicas de Robotica

J.E. Gil Lozano, A.J. Munoz Ramırez, V. Torres Lopez, y J.M. Gomez de Gabriel

Dto. Ingenierıa de Sistemas y AutomaticaUniversidad de Malaga

[email protected], {ajmunoz, vetorres, jmgomez}@uma.es

Resumen

En este artıculo se presenta el diseno de un equi-po y un conjunto de practicas para la docencia enasignaturas de robotica, mediante el uso de Simu-link y los microcontroladores Arduino. Se han di-senado y construido un conjunto de plataformasmoviles con un microcontrolador y se ha evaluadosu rendimiento y la facilidad del uso de Simulinkcon las librerıas de soporte de Arduino para su usodocente en grados de ingenierıa.

Palabras clave: Docencia, Arduino, Robotica,Simulink.

1. Introduccion

El aprendizaje basado en proyectos es un metodode ensenanza que implica a los estudiantes en laresolucion de problemas de ingenierıa reales [10].Para que sea eficaz, el profesor debe identificar unproblema de una extension adecuada y con unadificultad suficiente para estimular el proceso deaprendizaje. Si ademas, el proyecto esta apoyadocon equipos fısicos, frente a los modelos de simu-lacion, se proporciona al alumno una version com-pleta del problema a resolver, en lugar de limitarsu trabajo a un modelo simplificado, a la vez queaumenta su motivacion [11]. Desafortunadamente,muchos sistemas de desarrollo hardware son com-plejos y distraen al alumno y al profesor con laresolucion de problemas hardware de bajo nivelque no suelen estar relacionados con el objeto deestudio.

Sin embargo, recientemente ciertas herramien-tas reconocidas en el ambito academico, comoMATLAB y Simulink, usadas en el diseno y si-mulacion de sistemas de control de robots, se hanvisto potenciadas por la incorporacion de capaci-dades para programar de forma transparente lasplataformas de desarrollo hardware de bajo cos-te mas populares, como son los sistemas Arduino[5], Lego NXT, Beaglebone y Raspberry Pi, entreotras [4].

La solucion ideal tanto para el profesor como pa-ra el alumno es disponer de una herramienta de

alto nivel para el diseno de sistemas de controlde robots, y su modelado, para simulacion y ge-neracion de codigo que pueda ser evaluado sobreun robot fısico de bajo coste [17]. En concreto, elobjetivo de este trabajo es presentar la experien-cia de la creacion de unos equipos de practicasde robotica de bajo coste programables con la he-rramienta MATLAB/Simulink en asignaturas derobotica. Para lo cual se ha disenado y construıdola plataforma movil PIERO (Vease Figura 1).

Figura 1: Plataforma robotica educativa PIERObasada en Arduino programable mediante Simu-link

Entre las materias impartidas por el Departamen-to de Ingenierıa de Sistemas y Automatica de laUniversidad de Malaga, existen diversas asigna-turas relacionadas con la robotica, y el modeladoy control de robots moviles y manipuladores. Enestas se incluyen practicas de control, cinematicay dinamica, que a menudo se realizan mediantecalculos y simulacion en MATLAB y Simulink.

El principal beneficio esperado es que el entornode desarrollo elegido, al resultar familiar tanto aprofesores como a alumnos, reduzca el tiempo ne-cesario de preparacion de practicas y de aprendi-zaje debido a que no se requiere el aprendizaje deotros lenguajes ni herramientas de programacionadicionales [8]. Asimismo se espera que la realiza-cion de las practicas en laboratorio sea mas eficien-te debido a que el mismo modelo que se construyepara simular el robot se utiliza para controlarlo.Por ultimo un beneficio adicional esperado con-siste en el reducido coste economico del hardwareutilizado. Ademas, este artıculo pretende servir deayuda o referencia a los profesores interesados en

Page 2: Uso de Simulink y Arduino para Pr acticas de Rob …gomezdegabriel.com/wordpress/wp-content/uploads/2014/09/...te m as populares, como son los sistemas Arduino [5], Lego NXT, Beaglebone

el diseno de practicas relacionadas.

En la seccion 2 se puede encontrar una descripcionde la plataforma movil desarrollada para la reali-zacion de practicas. A continuacion se describe eldiseno de un conjunto de practicas y los principa-les aspectos a tener en cuenta en su diseno y reali-zacion. Posteriormente, en la seccion 4 se evaluanlos beneficios esperados. Por ultimo se incluyenconclusiones sobre el uso de la herramientas pro-puestas para la docencia de robotica.

2. La Plataforma Movil

El equipo de practicas se ha disenado en base aun robot movil con los siguientes requerimientos:

Coste reducido y de facil fabricacion mediantecomponentes comunes.Robusto y de tamano medio.Simple y facil de programar.Autonomo y que permita funcionamientoinalambrico.Sistema de sensores configurable que incluyaodometrıa.

2.1. Diseno mecanico

La plataforma posee una planta de forma circularcon un diametro de 30 cm y un sistema de locomo-cion diferencial con ruedas locas pasivas frontal ytrasera. Las ruedas activas son de 100 mm y estanaccionadas por servomotores EMG30 [16] comu-nes en tiendas de componentes de robotica. Puederealizar giros sobre su centro geometrico con radiode curvatura cero y sin deslizamientos.

Figura 2: Diseno de la plataforma movil PIEROrealizado con Sketchup disponible on-line

En la parte inferior de la base se encuentra laelectronica de potencia y en la parte superior seubican el microcontrolador y los sensores. Asimis-mo, posee un segundo nivel sobre el que se podrıacolocar un ordenador portatil.

Los disenos se han realizado mediante el softwarede diseno 3D Sketchup y se encuentran disponibleson-line en varias versiones [12]. Pueden exportar-se facilmente a formato DXF para su fabricacionmediante corte por laser.

2.1.1. Modulos de sensores

PIERO posee un sistema modular de paneles late-rales mediante el cual se pueden intercambiar lossensores. Actualmente se han construido modulosque soportan los clasicos sensores opticos de dis-tancia por infrarrojos de Sharp [19] y genericospara anadir sensores de otros tipos.

Figura 3: Paneles de sensores removibles

Los sensores utilizados [19] permiten medir dis-tancias en base al angulo de reflexion del haz deinfrarrojos en un rango de 9 a 80 cm. Se alimentana 5 V y proporcionan una salida analogica entre0.4 y 2.7 V que se actualiza cada 38 ms, y quedebe ser convertida para obtener las distancias.

2.2. Electronica de potencia

Se han incorporado baterıas LiPo de 3 celdas(11.1V) de 2400 mAh por la corriente que sumi-nistran y por su rapidez de carga. Proporcionanenergıa tanto a la electronica de potencia comoal microcontrolador, que reduce la tension a 5Vmediante un regulador propio. La conexion de tie-rra de las baterıas es comun a todo el sistemaelectronico del robot. Estan protegidas medianteun fusible y un interruptor en serie que desconec-tan completamente la corriente del robot.

El circuito de control de potencia para los motoreses un L298 que incluye dos puentes H completosde 2 A. Si bien los motores pueden requerir mascorriente (hasta 2.5 A). El disipador incluıdo en elmodulo le permite funcionar sin calentamiento yse obtienen pares suficientes para esta aplicacion.Modulos con este circuito (u otro compatible) pue-den adquirirse a muy bajo coste.

Cada puente H del L298 se controla con tres lıneas(Vease Figura 4): EN1(2) (Activacion), conectadaa una salida PWM; IN1(3) e IN2(4) que seleccio-nan la polaridad (direccion) y el tipo de parada(libre o con freno). Se requieren por tanto seis sa-lidas digitales desde el Arduino hasta el modulodel L298. Se conectan mediante un unico conectorde 6 hilos etiquetado para facilitar al alumno laidentificacion de las senales y su programacion.

Page 3: Uso de Simulink y Arduino para Pr acticas de Rob …gomezdegabriel.com/wordpress/wp-content/uploads/2014/09/...te m as populares, como son los sistemas Arduino [5], Lego NXT, Beaglebone

Figura 4: Esquema de la electronica de potencia yconexionado de los encoders

2.3. Electronica de control

El control de la plataforma esta basado en un mi-crocontrolador Arduino Mega2560 compatible conlos microcontroladores soportados por Simulink.Se ha elegido este modelo respecto a otros, comoel UNO, debido a que posee un mayor numerode puertos de entrada/salida, interrupciones y pe-rifericos.

El sistema de conectores que identifica a la familiaArduino es adecuado para conectar otras placas decircuito impreso (denominadas shields) pero no re-sulta adecuado para la conexion de multiples dis-positivos directamente ya que solo posee de un pinde tierra y alimentacion.

Las shields de conexionado comerciales proporcio-nan infinidad de conexiones de tres hilos (GND,VCC y senal), si bien los dispositivos interesan-tes suelen requerir dos lıneas de senal: modulos decomunicaciones, sensores I2C, codificadores incre-mentales, etc. Por ello se ha adoptado un sistemade conexiones basado en la GROVE Shield [18],que usa estas conexiones de 4 hilos para todas lasentradas y salidas, desarrollandose una shield pro-pia.

2.3.1. PIERO Shield

Se ha disenado la PieroShield. Una placa de co-nexiones compatible con Arduino Mega2560 quese ha disenado usando el software de diseno decircuitos impresos Eagle [6]. A esta placa de co-nexiones se le han anadido los siguientes puertosde conexion (todos ellos con lıneas de tierra y ali-mentacion incorporadas):

16 puertos digitales dobles8 puertos analogicos dobles2 puertos para encoders1 puerto de mando para el modulo del L2983 puertos UARTS4 puertos I2C

Posee conectores de paso 0.1”. Conectores hem-bras para los puertos digitales y conectores ma-chos para las conexiones con el microcontroladory resto de puertos. Esta placa puede verse en lafigura 5.

Figura 5: Placa de conexiones desarrollada paraArduino Mega

2.3.2. Codificadores angularesincrementales

Los codificadores angulares incrementales de losmotores permiten controlar el movimiento de lasruedas del vehıculo. Estos sensores permiten eje-cutar trayectorias y estimar la posicion median-te odometrıa. Esta caracterıstica es un requisitoindispensable para la realizacion de practicas derobotica movil.

Los codificadores de los servomotores EMG30 sonde tipo magnetico, con dos salidas digitales (A yB) de pulsos de 5 V que se conectan a entradas deinterrupcion del Arduino. Permiten obtener unaresolucion de 360 cuentas por vuelta si se deco-difican en modo 4x (Considerando los flancos desubida y bajada de A y B). El microcontroladorposee seis lineas de interrupcion externa [3]. Sehan usado las lıneas 2, 3, 18, 19 para las senales Ay B de los encoders de las dos ruedas. La alimen-tacion (5 V) se obtiene del regulador de la placaa traves de conector de 4 pines mencionado en laseccion 2.3.1.

2.4. Comunicaciones inalambricas

El microcontrolador cuenta con cuatro puertos se-rie, de los cuales uno es utilizado por Simulink pa-ra la carga de programas y la ejecucion en modoexterno.

La ejecucion en modo externo permite ejecutar elmodelo de simulacion simultaneamente en el hard-ware externo (el robot) y en el computador parahacer la simulacion (ejecucion) interactiva, mos-trando valores y graficas de evolucion de las varia-bles, y tambien para modificar valores de parame-tros del modelo, lo que permite depuracion y ajus-te de controladores durante el funcionamiento delsistema. Esto se efectua de manera transparente,

Page 4: Uso de Simulink y Arduino para Pr acticas de Rob …gomezdegabriel.com/wordpress/wp-content/uploads/2014/09/...te m as populares, como son los sistemas Arduino [5], Lego NXT, Beaglebone

mediante un protocolo propio, sin necesidad deprogramar codigo para ello. Son necesarios masrecursos por lo que no es compatible con los Ar-duino UNO o nano, debido a su reducida memoriade programa.

La alternativa a este modo consiste en programarlas comunicaciones de manera explıcita mediantelos bloques que proporciona la biblioteca de fun-ciones basicas de Arduino. Lo cual requiere de pro-gramacion de codigo especıfico tanto en el micro-controlador como en el PC.

Para cumplir con el requerimiento de funciona-miento inalambrico se ha elegido un modulo decomunicaciones Bluetooth [1] con capacidades es-peciales que permiten sustituir el cable de comuni-caciones de manera transparente. Esto es posibledebido a que: gestiona la senal de reset del micro-controlador para la carga de nuevos programas; yposee un sistema de auto-ajuste de velocidad de suUART. La funcion de reset requiere que el modulomaestro del PC sea version 3.0 o superior.

Otras alternativas de comunicacion inalambricaconsisten en adaptadores Wifi o Zigbee que presen-tan costes mas elevados y o no son trasparentes.

2.5. Software

El soporte de Arduino en MATLAB incluye unabiblioteca de bloques especıficos que se encargande gestionar las entradas/salidas. Internamenteestan programados en C y hacen la funcion de dri-vers del hardware externo. El resto de las funcio-nes se implementan mediante los bloques estandarde Simulink. El conjunto de bloques proporcio-na acceso a: entradas/salidas digitales, entradasanalogicas, salidas PWM, comunicaciones serie yentradas/salidas de pulsos para servos RC. Noobstante, no proporcionan funciones que serıan degran utilidad como decodificacion de codificadoresincrementales, lectura de sensores ultrasonicos, co-municaciones I2C o SPI.

Existen unos ejemplos de programacion incluıdosy se pueden encontrar mas recursos en MakerZone[14], una comunidad de usuarios creada por Math-Works para proporcionar soporte a los principalestargets.

3. Practicas

Se han disenado una serie de practicas que vandesde el control de posicion o velocidad de las rue-das a la ejecucion de una tarea basada en unamaquina de estados finitos. Estas practicas se hanplanteado como las diversas etapas del desarrollode un unico proyecto de laboratorio consistente enel objetivo ultimo de la programacion de un robot

movil completo.

3.1. Introduccion a la programacion deArduino mediante Simulink

Inicialmente se realiza una practica tutorizada pa-ra ensenar a los alumnos los aspectos relacionadoscon el uso y la configuracion de la herramientade desarrollo. Para ello se implementa el controlde la orientacion de un sensor de luz utilizandouna fotocelula y un servo conectados al Arduino.Se implementa una estrategia basica de controlproporcional y los alumnos lo ejecutan en modoremoto y externo para observar los valores de lasvariables del sistema y modificar los parametrosdel controlador.

3.2. Control de la plataforma movil

El objetivo de esta practica es ensenar la electroni-ca de control del robot movil y su manejo basico.En ella se estudia el esquema de conexiones y elalumno desarrolla sus propios bloques de controldel vehıculo. Asimismo, se instalan los modulos decomunicaciones inalambricas y se prueba su fun-cionamiento. Al final de esta practica, cada grupoha desarrollado sus propios bloques que utilizaranen practicas siguientes. Los bloques desarrolladosson los de: envıo de consignas a la electronica depotencia de las ruedas y lectura de los sensoresanalogicos de distancia mencionados en la seccion2.1.1.

3.3. Control de posicion

El objetivo de esta practica consiste en aprender acontrolar el movimiento de las ruedas del vehıcu-lo mediante el uso de los encoders. Para ello seles propone realizar un control de posicion sobreuno de los motores utilizando un controlador PID.La decodificacion de las senales de los codificado-res incrementales no esta incluıda entre las funcio-nes basicas por lo que se le proporciona al alumnoel codigo C necesario para implementar su propiodriver como una S-Function que hace uso de lasinterrupciones (Vease Seccion 4.2). En la figura6 se muestra un ejemplo de solucion del modeloSimulink.

En este esquema se observa el lazo tıpico de con-trol que incluye el bloque PID propio de Simulink.El signo de la salida del PID se utiliza para selec-cionar el sentido de giro. Se ha incorporado unmecanismo para evitar la zona muerta del motor.El par deseado se envıa como una senal PWM alpuente H que controla el motor.

Las ganancias del PID se sintonizan mediante elmetodo de Ziegler-Nichols [15] basado en la ganan-

Page 5: Uso de Simulink y Arduino para Pr acticas de Rob …gomezdegabriel.com/wordpress/wp-content/uploads/2014/09/...te m as populares, como son los sistemas Arduino [5], Lego NXT, Beaglebone

Figura 6: Esquema Control de Posicion

cia crıtica Kcr y en el periodo crıtico Pcr. Estosvalores se han obtenido gracias al uso combina-do de los bloques Scope junto con la ejecucion enmodo externo.

Una vez sintonizado el PID se usa la posicion dela rueda no controlada como referencia de posi-cion de la controlada. En la figura 7 se observanla posicion de la rueda no controlada (referencia)y la posicion de la rueda controlada.

Figura 7: Resultado Control de Posicion duranteuna ejecucion de 10 s

3.4. Control de velocidad

Esta practica consiste en controlar las velocidadesde las ruedas del vehıculo. Para ello se implemen-ta un bucle de control velocidad de los motores.Esta practica enfrenta al alumno con el proble-ma de la baja resolucion de los encoders. Ya queel calculo de la diferencia de posiciones entre ci-clos aumenta el error de estimacion a medida queaumentamos la frecuencia del control. Asimismo,la elevada desviacion temporal sobre el periodode muestreo jitter del Arduino introduce un granruıdo en la estimacion de la velocidad.

Para obtener una mejor estimacion de la veloci-

dad del vehıculo se puede usar diferentes tecnicasque requieren de una modificacion del bloque delectura implementado en la practica anterior.

3.4.1. Calculo de la velocidad basado eninterrupciones

Esta tecnica consiste en obtener la posicion de losmotores de cada cierto periodo de tiempo, me-diante una rutina de interrupcion asociada a untemporizador, independientemente de la frecuen-cia del control y calcular la velocidad utilizando laformula 1.

w (rpm) =∆pos× 60

Tm × E(1)

donde Tm representa el periodo de muestreo ensegundos y E el numero de cuentas por rotacionque ofrece el encoder (360 en este caso).

El periodo utilizado en esta practica es de 180 ms,para lo que se ha configurado el timer5 del Ar-duino con este proposito. El codigo necesario seha incluido en la misma S-Function que lleva acabo la decodificacion de los encoders.

Se ha montado el mismo esquema mostrado enla figura 6 y se ha sintonizado el PID utilizandola misma tecnica utilizada para control de posi-cion. El la figura 8 se muestra el resultado de estapractica.

Figura 8: Resultado Control de Velocidad

3.4.2. Calculo de velocidad basado enposicion y tiempo

Una alternativa al calculo de velocidad de los mo-tores desarrollada en el apartado anterior, consis-te en la inclusion de una marca de tiempo para el

Page 6: Uso de Simulink y Arduino para Pr acticas de Rob …gomezdegabriel.com/wordpress/wp-content/uploads/2014/09/...te m as populares, como son los sistemas Arduino [5], Lego NXT, Beaglebone

dato de posicion con ello se elimina el efecto deimprecision de la medida debida a la desviacionde exactitud de la senal del reloj, efecto conocidocomo jitter. Para el calculo de la marca de tiem-po se modifica el bloque funcional de lectura deencoders desarrollado en [9] de la siguiente forma:

En la pestana Initialization en Sample modese cambia a Inherited con ello se consigue queel tiempo de muestreo del sistema de controlsea el mismo que el de la lectura de la po-sicion y poderlo cambiar sin la necesidad derecompilar el bloque funcional.En la pestana Output ports se anade elparametro time creandose ası una segunda sa-lida.En la pestana Output se anade el codigo de lafigura 9.

Figura 9: Nuevo Bloque Encoder y codigo modifi-cado en la pestana Outputs

Las diversas alternativas para calcular la marcade tiempo del dato posicion utilizando el codigonativo del Arduino y que se han estudiado en es-te apartado se encuentran como comentarios decodigo en la figura 9. Dichas alternativas depen-den de la manera de extraer el valor del reloj delmicrocontrolador, usando la funcion millis() o lafuncion micros(). Asimismo se ha probado a habi-litar o deshabilitar las interrupciones durante estalectura. Estas cuatro posibilidades se analizan enla seccion 4.4.

3.5. Navegacion reactiva

En esta practica se implementa un sistema de con-trol de navegacion reactiva en el que la velocidadlineal y angular del vehıculo es funcion de las lec-tura de los sensores delanteros de distancia. Elalumno crea la funcion de evitacion y el bloquecon la cinematica inversa del vehıculo para calcu-lar las velocidades de las ruedas, que se envıan alos bloques de control de velocidad.

3.6. Navegacion basada en estados

El objetivo de esta ultima practica es desarrollarun sistema de navegacion basado en una maqui-na de estados finitos. En el ejemplo se muestraun sistema con dos estados. El alumno aprende autilizar la herramienta Stateflow de Simulink y aintegrarla en el bucle de control.

En uno de los estados la plataforma avanza, y enel otro, la plataforma gira debido a la presenciade un obstaculo. En la figura 10 se muestra estamaquina de estados, que cuenta con una entra-da (dist) la distancia al obstaculo, que determinalas condiciones de transicion entre estados y dossalidas (vel izq y vel der) para determinar la ve-locidad de giro de cada rueda.

Figura 10: Diagrama de estados de la tarea de na-vegacion programada en Stateflow

En el ejemplo mostrado se ha implementado ladeteccion de los obstaculos mediante un sensor dedistancias ultrasonico. Para ello se ha implemen-tado una S-Function basandose en la bibliotecaNewPing [7] de Arduino. En la figura 11 se mues-tra un ejemplo del diagrama completo.

Figura 11: Diagrama Simulink del sistema de na-vegacion basado en estados

4. Resultados

Durante el primer ano del desarrollo de esta he-rramienta docente se ha trabajado en el diseno yconstruccion de la plataforma robotica. Pero tam-bien, en la creacion del conjunto de practicas y suevaluacion mediante sesiones con alumnos y expe-rimentales. A continuacion, se incluyen algunos delos inconvenientes encontrados que condicionan eldiseno e implementacion del resto de las practicas.

4.1. Pruebas

Se han realizado experimentos docentes en asigna-turas de robotica con las practicas 1 y 2 (descritasen las secciones 3.1 y 3.2). Los alumnos han apren-dido a configurar el software y tambien han co-nectado sensores y actuadores al sistema Arduino.

Page 7: Uso de Simulink y Arduino para Pr acticas de Rob …gomezdegabriel.com/wordpress/wp-content/uploads/2014/09/...te m as populares, como son los sistemas Arduino [5], Lego NXT, Beaglebone

Estas practicas tambien han servido para verificarel funcionamiento homogeneo de las plataformasconstruıdas y de los sistemas de control de los mo-tores. En estas practicas los alumnos han tenido elprimer contacto con el software de desarrollo y conel hardware, lo que les ha motivado visiblemente.

4.2. Lectura de codificadoresincrementales

Para controlar el movimiento de los motores es ne-cesario decodificar las senales de los codificadoresincrementales. En el ejemplo oficial del modulo desoporte de Arduino se asume una unica senal depulsos que detecta la velocidad de avance de lasruedas en una direccion. Para estimar la velocidadse usa un bloque controlado por eventos como semuestra en la Figura 12 cuya entrada proviene deun bloque de entrada digital a la que se conec-ta el sensor optico. No se implementa como unainterrupcion sino que se establece un periodo demuestreo (en el ejemplo es de 1 ms). Cada evento(subida o de bajada en la senal de disparo) pro-voca la ejecucion del bloque que mide el tiempotranscurrido entre eventos a partir de la hora delsistema. Este metodo presenta problemas de ac-tualizacion con velocidades bajas y sobrecarga elmicrocontrolador con velocidades altas.

Figura 12: Bloque ejecutado por eventos para me-dir la velocidad de una rueda

Ademas, tampoco puede usarse en robots contraccion diferencial, donde las velocidades pue-den cambiar de signo en los giros, y la capaci-dad computacional del microcontrolador limita elnumero de pulsos por vuelta del sensor. Por otraparte, este ejemplo menciona un control PID, queno existe, siendo a lo sumo proporcional.

No existe un medio oficial para la lectura de codi-ficadores incrementales. Para resolver este proble-ma se han disenado y probado los metodos descri-tos en la seccion 3.4 con resultados satisfactorios.

4.3. Pull-ups internos

Una entrada digital, como las que se usan para de-tectar los pulsos de los codificadores incrementalesde las ruedas (Vease seccion 2.3.2) u otros sensorescon salida por transistor en colector abierto, pue-de poseer resistencias internas (denominadas pull-

up) para conseguir una lectura de un uno logicocuando la entrada esta en alta impedancia y uncero logico cuando la entrada se conecta a tierra.Este sistema permite simplificar el hardware y elconexionado de multiples sensores. En el lenguajede Arduino, la activacion de los pull-up internosse realiza escribiendo un uno en un puerto digitalconfigurado como entrada, tal como se muestra enel codigo de la Figura 13. No obstante, las librerıasde soporte de Arduino en Simulink solo permitenespecificar el numero del pin de entrada a leer yno permiten usar dicho numero en otro bloque desalida digital.

/* Configura el puerto pin como entrada */

pinMode(pin, INPUT) ;

/* Habilita resistencias pull-up interna */

digitalWrite(pin, HIGH );

Figura 13: Codigo para la activacion de los pull-upinternos

Sin embargo, las senales de los encoders que pro-vienen de sensores de efecto hall requieren de pull-up. La soluciones pueden ser varias: incorporar lasresistencia pull-up fısicamente, programar una S-Function con un driver para activarlas o utilizarel driver ya programado [9] para la lectura de losencoders, que incluye dicho codigo y utiliza las in-terrupciones eficientemente. En nuestro caso uti-lizaremos esta ultima solucion.

4.4. Rendimiento y Jitter en Arduino

Un buen determinismo temporal (bajo jitter) esnecesario en un sistema de tiempo real para li-mitar el error cometido en calculos que dependendel tiempo, como son la diferenciacion (calculo dela velocidad) y la integracion (calculo de la parteintegral de un PID). Con el fin de medir el de-terminismo temporal del Arduino programado conSimulink se han realizado unos experimentos pararegistrar la desviacion temporal con diferentes in-tervalos de ejecucion. Estos experimentos se hanejecutado en modo externo manteniendo el motora la maxima potencia durante 100 segundos, lasgraficas de dispersion de las mediciones se han ob-tenido con MATLAB, haciendo uso de la funcionboxplot(). Se ha marcado el valor de la media conun rombo y un asterisco.

El primer experimento sirve para estimar el jit-ter, calculandolo con ayuda de la marca de tiem-po para un tiempo de muestreo del sistema de 100ms y con el Arduino ejecutando un codigo simple(Vease figura 14). La menor dispersion del valorviene dada por el uso de la instruccion millis() conlas interrupciones habilitadas pero sin grandes va-riaciones con respecto a las demas.

Page 8: Uso de Simulink y Arduino para Pr acticas de Rob …gomezdegabriel.com/wordpress/wp-content/uploads/2014/09/...te m as populares, como son los sistemas Arduino [5], Lego NXT, Beaglebone

50

60

70

80

90

100

110

120

130

140

150

ms ms(Di) µs(Di) µs

Tie

mpo e

n m

ilis

eg

un

dos

Distribución de percentiles del jitter con Ts=100ms

Figura 14: Desviacion del valor del reloj para untiempo de muestreo de 100 ms durante 100 seg.(ms indica el uso de la instruccion millis(), µs indi-ca el uso de la instruccion micros(), (Di) indica ladeshabilitacion de interrupciones en el Arduino).

La influencia del jitter en la estimacion de la ve-locidad se ilustra la figura 15. Se presentan losvalores de velocidad angular calculadas con y sintener en cuenta la marca de tiempo. En la obser-vacion de la figura 15 cabe destacar como se pasade unos errores de velocidad que oscilan entre del15 al 50 % a un errores en la medida que van desde0.5 al 3 %.

Los mejores resultados se han obtenido usando lafuncion micros() con las interrupciones deshabili-tadas. Los mismos resultados se obtuvieron de losexperimentos realizados con un tiempo de mues-treo de 50 ms, si bien todavıa se acusaron masdebido al aumento de la dispersion del jitter con-forme se disminuye el tiempo de muestreo.

La utilizacion de un tiempo de muestreo de 10 mscon el mismo experimento obtuvo unos resultadossorprendentes en cuanto al valor del jitter obteni-do. En luegar de centrar el valor entorno a esos10 ms, el valor se centra proximo a los 20 ms. Lagrafica de dispersion que se ilustra en la figura 16demuestra que el Arduino es incapaz de alcanzarvalores inferiores a 15 ms de tiempo de ejecuciony eso para un programa muy simple, es decir, elrendimiento que se consigue con el codigo escritoen Simulink y en modo externo lo hacen altamenteineficiente y la supervision del jitter muy necesa-ria.

4.5. Versiones de MATLAB

Si bien, puede utilizarse cualquier version deMATLAB con soporte Arduino, las ultimas versio-nes, han automatizado el proceso de incorporaciondel soporte de esta y otras plataformas fısicas me-

175

176

177

178

179

180

181

182

183

ms ms(Di) µs(Di) µs

r.p

.m.

Wt:Velocidad angular calculada con el jitter en Ts=100ms

100

120

140

160

180

200

220

240

260

ms ms(Di) µs(Di) µs

Velocidad angular sin considerar el jitter en Ts=100ms

Figura 15: Dispersion en los valores de velocidadangular maxima del motor con o sin compensacionde jitter para un tiempo de muestreo de 100 msdurante 10 seg (ms indica el uso de la instruccionmillis(), µs indica el uso de la instruccion micros(),(Di) indica la deshabilitacion de interrupciones enel Arduino).

diante un repositorio centralizado que facilita suinstalacion y actualizacion.

0

10

20

30

40

50

60

ms ms(Di) µs(Di) µs

Tie

mpo e

n m

ilise

gundos

Distribución de percentiles del jitter con Ts=10ms

Figura 16: Desviacion del valor del reloj para untiempo de muestreo de 10 ms durante 100 seg. (msindica el uso de la instruccion millis(), µs indicael uso de la instruccion micros(), (Di) indica ladeshabilitacion de interrupciones en el Arduino).

Esta puesta al dıa, necesaria para usar las ulti-mas caracterısticas, puede resultar difıcil en los ac-tuales laboratorios docentes ya que Mathworks haanunciado que a partir de la version 2014b (2015 yposteriores) no sera compatible con sistemas ope-rativos de 32 bits.

No obstante la version 2014a ha resultado muyinestable durante la realizacion de estas practicas,por lo que, hasta nuevas versiones, se recomiendausar 2013b.

Page 9: Uso de Simulink y Arduino para Pr acticas de Rob …gomezdegabriel.com/wordpress/wp-content/uploads/2014/09/...te m as populares, como son los sistemas Arduino [5], Lego NXT, Beaglebone

5. Conclusiones

De acuerdo a estos requerimientos planteados enla seccion 2 se ha disenado la plataforma y se hanconstruıdo un total de seis unidades con un costeinferior a 200 epor robot.

Entre los objetivos iniciales de este trabajo se en-cuentran determinar si el uso de Simulink y Ar-duino permite la realizacion de practicas basadasen proyectos para asignaturas de robotica de ma-nera eficiente. En concreto se han encontrado lossiguientes beneficios:

Tiempo de adopcion reducido. En terminosde incremento del tiempo de preparacion depracticas por parte del profesor y de los alum-nos (numero de horas invertidas por el profe-sor para aprender la herramienta y horas declase dedicadas a su uso).Adecuacion. Diversidad del tipo de practi-cas posibles dentro del campo de la robotica(identificacion, control, cinematica, planifica-cion, etc).Bajo coste de los equipos de practicas.Alto nivel de motivacion. Tanto de los alum-nos como del profesor.Generalidad. Multiples posibilidades de apli-cacion de esta plataforma a otras asignaturascon lo que se reduce el coste economico y detiempo.Utilidad futura. Proveen al alumno de una he-rramienta de diseno y desarrollo de sistemasrelacionadas con la mecatronica y la roboticaque incluso puede ser replicada en su casa porsu bajo coste.Otros beneficios. El aprendizaje basado enproyectos desarrolla las competencia de tra-bajo autonomo.

Asimismo se ha estudiado el determinismo tempo-ral del sistema de desarrollo para comprobar lassus capacidades a la hora de implementar un sis-tema de control y se han mostrado los resultadosen una tarea de estimacion de la velocidad de lasruedas del robot.

Entre los beneficios que se esperan obtener du-rante el proximo curso, aparte de la evaluaciondel tiempo invertido en la realizacion del conjuntode practicas completo, se encuentran la posibili-dad de probar en sistemas fısicos los resultadosde herramientas de alto nivel como Stateflow, lasutilidades de diseno de control borroso u otros.

Agradecimientos

Este trabajo ha sido parcialmente financiado porel Proyecto de Innovacion Educativa de la Univer-sidad de Malaga, con codigo PIE13-134, e Inge-nierıa UNO (http://www.ingenieriauno.com/).

Referencias

[1] Adafruit, Bluefruit EZ-Link,https://learn.adafruit.com/introducing-bluefruit-ez-link/overview, Consultado Jun.2014.

[2] Apte, A. (2014), “Line Following ZumoRobot Using Simulink”, Adafruit on-linetutorials, https://learn.adafruit.com/line-following-zumo-robot-programmed-with-simulink.

[3] Arduino, Arduino Mega 2560,http://arduino.cc/en/Main/ArduinoBoardMega2560,Consultado Jun. 2014.

[4] Basso, M. , Innocenti, G. and Rosa, A., (2012)“Simulink meets Lego: Rapid Controller Pro-totyping of a Stabilized Bicycle Model”, 52ndIEEE Conference on Decision and Control,Florence, Italy.

[5] , Beni, N., Grottoli, M., Ferrise, F., Borde-goni, M. (2014),“Rapid Prototyping of LowCost 1 DOF Haptic Interfaces, IEEE HapticsSymposium, pp. 479 - 483.

[6] Cadsoft, CadSoft EAGLE PCB DesignSoftware, http://www.cadsoftusa.com/eagle-pcb-design-software, Consultado Jun. 2014.

[7] Eckel, T. (2012), “NewPing Libraryfor Arduino”, Arduino Playground,http://playground.arduino.cc/Code/NewPing

[8] Gartseev, I.B., Lee, L.F., and Krovi, V.N.(2011) “A Low-Cost Real-Time Mobile RobotPlatform to support Project-Based Learningin Robotics and Mechatronics”, Proceedingsof 2nd International Conference on Roboticsin Education. Vienna, Austria, pp. 117-124.

[9] Giampiero, C. (2013), “Writing a SimulinkDevice Driver block: a step by step guide”,MATLAB File Exchange.

[10] Gomez-de-Gabriel, J.M., Fernandez-Lozano,J.J. and Garcıa-Cerezo, A.J. (2012), “Evalua-cion de la contribucion del aprendizaje basa-do en proyectos a la adquisicion de compe-tencias en estudiantes de Ingenierıa en Au-tomatica y Electronica Industrial” Actas delas XXXIII Jornadas de Automatica, Vigo.

[11] Gomez-de-Gabriel, J.M., Mandow, A.,Fernandez-Lozano, J. and Garcıa-Cerezo,A.J. (2011), “Using LEGO NXT MobileRobots With LabVIEW for UndergraduateCourses on Mechatronics” IEEE Tran-sactions on Education, Vol. 54, I.1, pp.41-47.

Page 10: Uso de Simulink y Arduino para Pr acticas de Rob …gomezdegabriel.com/wordpress/wp-content/uploads/2014/09/...te m as populares, como son los sistemas Arduino [5], Lego NXT, Beaglebone

[12] Gomez-de-Gabriel, J.M. (2014)Piero Mobile Robot Platformhttp://gomezdegabriel.com/wordpress/projects/piero-mobile-robot-platform/

[13] Lamar, K. and Kocsis, A. G. (2013), “Imple-mentation of speed measurement for electri-cal drives equipped with quadrature encoderin LabVIEW FPGA”, Acta Technica Corvi-niensis - Bulletin of Engineering.

[14] Mathwoks, MakerZone Arduino, Rasp-berry PI and Lego Mindstrorms Resources,http://makerzone.mathworks.com/, Consul-tado Jun. 2014.

[15] Ogata, K. (1999), “Ingenieria de Control Mo-derna (Spanish Edition)”, Prentice Hall, pp.670 - 679.

[16] Robot Electronics, EMG30 mounting bracketand wheel specification, http://www.robot-electronics.co.uk/htm/emg30.htm, Consulta-do Jun. 2014.

[17] Rogers J.R. and McVay, R.C. (2012), “Grap-hical Microcontroller Programming”, IEEEInternational Conference onTechnologies forPractical Robot Applications (TePRA), pp.48 - 52.

[18] Seeed Studio, Grove Mega Shieldhttp://www.seeedstudio.com/wiki/Grove -Mega Shield, Consultado Jun.2014.

[19] Sharp, GP2D12 Optoelectronic Device,http://www.sharpsma.com/webfm send/1203,Consultado Jun. 2014.