memoria proyecto aquiles (aqui los estamos siguiendo) · sistemas embebidos para tiempo real –...

15
S ISTEMAS EMBEBIDOS PARA TIEMPO REAL – IIE – FACULTAD DE I NGENIERÍA Memoria Proyecto AQUILES (AQUI Los Estamos Siguiendo) Martín Randall, Santiago Saralegui Tutor: Mauricio González 27 de junio de 2016 1

Upload: lytu

Post on 30-Apr-2018

222 views

Category:

Documents


6 download

TRANSCRIPT

SISTEMAS EMBEBIDOS PARA TIEMPO REAL – IIE – FACULTAD DE INGENIERÍA

MemoriaProyecto AQUILES

(AQUI Los Estamos Siguiendo)

Martín Randall, Santiago SaraleguiTutor: Mauricio González

27 de junio de 2016

1

ÍNDICE

1. Resumen 3

2. Introducción 3

3. Objetivos 4

4. Alcance del proyecto 4

5. Diseño 45.1. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45.2. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

6. Implementación 66.1. Módulo GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66.2. Módulo IMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

7. Pruebas 8

8. Conclusiones 8

9. Anexo 99.1. Conceptos del curso aplicados al proyecto . . . . . . . . . . . . . . . . . . . . . . 99.2. Especificación del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

9.2.1. Descripción del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99.2.2. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109.2.3. Objetivos del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119.2.4. Alcance del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119.2.5. Descripción del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119.2.6. Requerimientos y restricciones del sistema . . . . . . . . . . . . . . . . . . 129.2.7. Diseño preliminar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139.2.8. Planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

9.3. Comentarios sobre la planificación y desenlance . . . . . . . . . . . . . . . . . . 15

2

1. RESUMEN

El trabajo que se describirá a continuación se planteó hallar la posición de nuestro hard-ware. Para esto se utilizaron dos periféricos: un GPS y una IMU (que integra acelerómetro,brújula y giróscopo). Se reciben los datos de los periféricos a través de dos canales de comu-nicación: UART (GPS) e I2C (IMU). Finalmente, se procesan los datos recibidos para obtenerla posición y la inclinación del hardware.

Para el desarrollo del proyecto se utilizaron conceptos adquiridos en el curso, aplicándolosa hardware nuevo y manejando entornos de desarrollo también desconocidos. Además, seestudiaron el proceso de comunicación a través de I2C, y las posibilidades de procesamientode datos adquiridos de una IMU (filtro pasabajos, filtro complementario).

2. INTRODUCCIÓN

Frente al avance de las radios definidas por software (SDR por sus siglas en inglés) en las Te-lecomunicaciones, en la Facultad de Ingeniería y en particular el IIE se ha estado trabajandoel tema por un tiempo ya. Específicamente, se está considerando incursionar en la combina-ción de “SDR y hardware” que permitan comunicarse y realizar tareas simples a un conjuntode robots. Esto puede concretarse en un proyecto de fin de carrera a iniciar en el segundosemestre del presente año, cuyo objetivo sería el control de una cantidad pequeña (2 o 3) derobots, que comunicándose a través de SDR entre sí y con el usuario, puedan realizar tareassencillas (por ejemplo, de búsqueda), con una cierta calidad de servicio en la comunicación.Para esto es importante que los robots tengan conocida su posición y trayectoria.

La motivación de este proyecto fue entonces el poder avanzar en el desarrollo de una partede lo que será nuestro proyecto de fin de carrera. El objetivo del Proyecto de Fin de Carrera esque un grupo de robots se mueva de manera autónoma para realizar una búsqueda cubrien-do un área determinada. Para esto es fundamental tener clara la posición de cada robot, yaque la posición es la base del movimiento.

Hay varios trabajos dentro del instituto que han tratado y resuelto el problema que estáplanteado. En particular en los trabajos con quadracópteros sabemos que se enfrentaron aeste tipo de desafíos. La navegación mediante una IMU (inertial measurement unit) ya se haresuelto en varios Proyectos de Fin de Carrera, pero quedan puntas abiertas.

Como se mencionó, el problema que se buscará abordar en este proyecto de fin de cursoserá el de conocer la posición y el movimiento de nuestro hardware, a través de la comunica-ción entre un microcontrolador Arduino y cuatro periféricos.

Nuestro trabajo consistió entonces en establecer la comunicación con los periféricos, reci-bir y procesar los datos. Se indicó además como tarea que no utilizaramos las librerías de Ar-duino para establecer la comunicación UART con el GPS. Para el procesamiento de los datosrecibidos se implementaron filtros sencillos: un filtro pasabajos y un filtro complementario,

3

que ya explicaremos con mayor profundidad.

3. OBJETIVOS

El objetivo global del proyecto es tener la posición del robot. Nos propusimos obtenerla apartir de un GPS (latitud y longitud), y de la combinación de acelerómetro y giróscopo paraobtener la inclinación. La posiciones se desplegan alternadamente cada un segundo.

Para lograr esto nos fijamos como objetivos específicos:

a) Estudiar diferentes protocolos de comunicacion (I2C y UART).b) Lograr la comunicacion entre el Arduino y los periféricos mencionados.c) Filtrar los datos para minimizar el ruido de adquisición.d) Calcular la posición utilizando la información adquirida.

4. ALCANCE DEL PROYECTO

Establecer una comunicación apropiada entre el GPS y el microcontrolador (Cortex M3) através de UART; así como lograr la comunicación correcta entre el microcontrolador y la IMUa través de I2C. Es decir realizar la configuración de la UART (micro-GPS), y la utilización delibrerías para lograr la comunicación con I2C.

Recibir los datos de los periféricos, y trabajar sobre ellos para obtener la ubicación delhardware. Esto implica obtener a partir de los datos la posición y la orientación (ángulosrespecto de un referencial fijo, calculados a partir de la dirección de la gravedad). Los datosdel GPS se parsearon para convertirlos de formato NMEA a latitud y longitud. Finalmente,desplegar de manera amigable los datos procesados.

5. DISEÑO

5.1. SOFTWARE

Se utilizó una arquitectura de software round-robin (con interrupciones). Como podrá ob-servar el lector, las interrupciones del round-robin están entre paréntesis. Esto se debe a queel GPS marca el ritmo del sistema, como ya explicaremos.

En particular, no se pudo realizar la arquitectura pensada inicialmente, que era la tradicio-nal de round-robin con interrupciones, donde tenemos un loop que va revisando cuando lasbanderas están “encendidas” (esto sucede durante la interrupción correspondiente). Esto nose pudo debido a que las interrupciones de la IMU fueron manejadas desde la utilización delibrerías de Arduino (en particular Wire), y por carencias del grupo fallamos en controlarlas

4

debidamente (no resultaba claro como deshabilitarlas y rehabilitarlas). Ante la falta de tiem-po se decidió mantener el esquema de round-robin funcionando con la latencia del GPS, loque genera serias desventajas. Por ejemplo, en el procesamiento de los datos de la IMU, cuyafrecuencia es muy superior, se pierden datos y se integra sobre períodos de tiempo excesiva-mente largos, lo cual puede generar errores grandes en las estimaciones.

Un esquema de nuestro software es (notése que usamos el esquema de software del Ar-duino IDE):

Programa principal

setup:- inicialización de la comunicación serial con la terminal (para despliegue de datos).- inicialización del GPS y la comunicación UART.- inicialización de la IMU y la comunicación I2C.- relevamiento de una primera medida de la IMU (que será nuestra posición inicial).

loop:- if (interrupción del GPS)- if (desplegué GPS, habilito lectura de datos IMU)

Tenemos entonces un programa principal con el main, y desde el cual llamamos funcionesde los tres módulos (profundizaremos en estos más adelante):

- Módulo GPS: inicializa la comunicación UART y el manejo del GPS, incluye la rutina deatención a la interrupción del GPS, y la traducción de formato NMEA (como llegan los datos)a “latitud y longitud“ y despliegue.

- Módulo IMU: inicializa la comunicación con la IMU, incluye una función que toma unaprimera medida para hallar la posición e inclinación inicial, e incluye una función de recep-ción y tratamiento y despliegue de los datos recibidos.

- Módulo Colas: usamos una cola circular para guardar los datos que ingresan en las in-terrupciones del GPS, como ya explicaremos. Este módulo es importado del obligatorio deteórico.

5.2. HARDWARE

El sistema, que está conformado por el microcontrolador Arduino, un GPS, un aceleróme-tro y un giróscopo, se esquematiza en la figura 9.1, donde se muestra el diagrama de bloquescorrespondiente, en el cual se observan los protocolos serie comunicación con el micro.

5

Los componentes utilizados son la placa Arduino Due con microprocesador Cortex M3,un GPS u-blox NEO-7M, y una placa IMU GY-86, que contiene los siguientes componentessoldados: MS5611, HMC5883L, MPU6050.

El GPS arroja 8 medidas consecutivas, en formato NMEA, que indican latitud, longitud,hora, altura, y otros datos. De estos nos quedamos únicamente con latitud y longitud.

La IMU (Inertial Measurement Unit) es un circuito integrado que incluye los periféricosmencionados (brújula, giróscopo y acelerómetro). El acelerómetro entrega 3 medidas, queson la fuerza que se realiza sobre la IMU según los ejes [x, y, z] marcados en la placa. El gi-róscopo mide la velocidad angular según estos tres ejes mencionados. La brújula mide elapartamiento del norte según el eje X, dato que no utilizamos en nuestra implementación(aunque es de fácil uso porque no requiere casi procesado).

Figura 5.1: Esquema del hardware del sistema y sus conexiones

Las conexiones fueron de ambos periféricos con la alimentación de 3,3 V y tierra. La IMUse conectó a través de SCL y SDA (entradas de reloj y datos de I2C), y el GPS a los pines 18 y19 (recepción y transmisión de la USART0, utilizada como UART para la comunicación conel GPS, ya que la UART fue usada para el intercambio con la terminal de despliegue).

6. IMPLEMENTACIÓN

Profundizaremos ahora en el funcionamiento de los módulos presentados.

6.1. MÓDULO GPS

Como ya dijimos, usamos la USART0 para la comunicación UART. El módulo GPS incluye:- Función de inicialización: en esta seteamos los pines de recepción y transmisión, el baud

rate, y los registros necesarios para el manejo del GPS. Finaliza esta función con la habilita-ción de interrupciones.

- Rutina de atención a las interrupciones del GPS: cada vez que llega un carácter, lo guardaen la cola circular. Cuando terminó de llegar un mensaje completo, se prende la banderaflag_gps.

6

- Prendida la bandera, en el loop del round-robin entrará a la función de tratamiento ydespliegue de los datos del GPS. Esta función convierte los datos recibidos de formato NMEAa simplemente longitud y latitud; y los despliega en pantalla.

6.2. MÓDULO IMU

Este módulo utiliza las librerías I2Cdev, Wire, y las propias de los periféricos que utiliza-mos: MPU6050 y HMC5883L. El módulo incluye:

- Función de inicialización: en esta se inicia la comunicación I2C y se inicia el manejo delos periféricos.

- Función de posición inicial: hace un primer relevamiento de la posición del hardwarea partir de las medidas del acelerómetro (que estando el hardware en reposo sólo siente lagravedad, que sabemos apunta ”hacia abajo“), y define los ángulos pitch y roll (ver figura).También calcula la fuerza de gravedad (en función de g), esto fue más un ejercicio de com-prensión por nuestra parte de las medidas que algo útil para nuestra implementación.

- Función de tratamiento de datos: releva los datos de giróscopo y acelerómetro.Los primeros 10 datos son usados para estabilizar la lectura, es decir que se promedian

para obtener una posición inicial de reposo más robusta. Los datos son también pasados porun filtro pasabajos, para que movimientos bruscos no afecten tanto las medidas del aceleró-metro.

Con los datos del acelerómetro calcula los ángulos de pitch y roll, descomponiendo la fuer-za de la gravedad según los tres ejes [x, y, z] que tiene la IMU. El ángulo pitch representa elmovimiento respecto del plano ”xz“ del hardware y roll respecto del plano ”yz“. Luego, in-tegramos los datos del giróscopo (sería más preciso decir que es una suma de Riemman, esdecir multiplicamos el período de tiempo por el valor de la velocidad angular). Esto nos dael ángulo según el giróscopo. Cuando decimos período de tiempo, nos referimos al tiempoentre una medida y la siguiente, que es muy superior al tiempo entre medidas posibles.

Para combinar estos datos (ángulos según acelerómetro y según giróscopo), utilizamos unfiltro complementario. Es decir, que consideramos una fórmula del tipo: y[n] =COEF∗(y[n−1]+ ang ulo_g i r oscopi o)+ (1−COEF )∗ pi tch. En este caso, y[n] es el valor que estamosestimando del ángulo según y. Según x es la misma fórmula, excepto que usando roll en vezde pitch. El valor de COEF debe ser alto (para actuar como pasabajos para la aceleración ypasaaltos para el giróscopo), nosotros tomamos 0.93, aunque vimos en varios trabajos quevaría (alrededor de ese valor en general).

Por último, este módulo imprime los datos en pantalla. Esta función es llamada en elround-robin únicamente luego que se imprimen los datos del GPS, en lo que es nuestra dis-torsión del round-robin con interrupciones.

7

Figura 6.1: Descripción de los ángulos pitch y roll.

7. PRUEBAS

Las pruebas que se realizaron fueron directamente la demo, comparando con los datos delGPS de google maps. Esto arrojó buenos resultados, aún si en algunos lugares de la Facultadcostaba que el GPS tuviera señal. Para la IMU, se procedió a inclinar a ángulos reconoci-bles, como 90 grados vertical (tanto en roll como en pitch). Esto arrojó buenos resultadoscon movimientos lentos, lo cual es razonable, porque, como explicamos, no consideramoscorrectamente la adquisición de datos e integramos sobre un período de tiempo demasiadogrande. El filtro complementario en particular demostró ser un algoritmo sencillo y eficazpara disipar errores en las medidas separadas de giróscopo y acelerómetro.

8. CONCLUSIONES

En conclusión, logramos establecer la comunicación UART con el GPS usando sólo la li-brería del microcontrolador, y a partir de esta comunicación, recibir los datos de latitud ylongitud que establecen la posición del hardware.

Se logró así mismo obtener a partir de una comunicación I2C los datos del giróscopo y elacelerómetro, y combinarlos para obtener la inclinación del hardware.

8

Faltó una correcta combinación de estos módulos en el programa principal, que permitie-ra hacer un mejor uso de los periféricos y calcular con mayor precisión la posición del robot.

El proyecto cumplió con el objetivo de familiarizarse con Arduino, ya sea con el micro-controlador como con su entorno de desarrollo y el manejo de librerías. También permitióiniciarnos en el manejo de datos para la estimación de posición y nos acercó al cálculo detrayectorias, componentes fundamentales en un futuro proyecto de fin de carrera como elmencionado al inicio.

9. ANEXO

9.1. CONCEPTOS DEL CURSO APLICADOS AL PROYECTO

Se utilizaron conceptos estudiados tanto en el teórico como en el laboratorio. En particu-lar, la comunicación con UART fue prácticamente la implementación del laboratorio 5 perocon hardware y entorno de desarrollo desconocidos, integrando a su vez el manejo de rutinasde atención a las interrupciones (vistas en otros laboratorios y en teórico).

La comunicación I2C fue algo nuevo a estudiar, pero la base que representa el enfrentarsea las hojas de datos y aprender a buscar información sobre trabajos similares, así como lacomprensión de la comunicación UART vista en clase, nos permitió manejar esto. El traba-jo con librerías, si bien no era ajeno, si presentó aspectos novedosos, principalmente por lacantidad de librerías con que cuenta Arduino (al menos en este tema).

El programa principal, donde el round-robin terminaría de hacer el merge entre los módu-los para combinar correctamente los datos no se realizó correctamente. Si bien esto fue máspor el manejo incorrecto de las interrupciones de la IMU que por un desconocimiento o ma-la implementación del round-robin, es necesario realizar la crítica a lo que logramos obtenercomo resultado final en nuestra implementación.

9.2. ESPECIFICACIÓN DEL PROYECTO

9.2.1. DESCRIPCIÓN DEL PROBLEMA

El problema que se buscará abordar en este proyecto de fin de curso será el de conocerla posición y el movimiento de nuestro hardware, a través de la comunicación entre un mi-crocontrolador Arduino y cuatro periféricos: un GPS, un acelerómetro, un giróscopo y uncompás. Para esto, tendremos que establecer la comunicación entre el microcrontrolador ylos périfericos (que combinará comunicación a través de una UART así como usando I2C).

Además, tendremos que procesar estos datos para calcular la posición y actualizarla en lamedida en que los periféricos vayan proporcionando información.

La motivación de este proyecto es poder avanzar en el desarrollo de una parte de lo queserá nuestro proyecto de fin de carrera. El objetivo del Proyecto de Fin de Carrera es que ungrupo de robots se mueva de manera autónoma para realizar una búsqueda cubriendo un

9

área determinada. Para esto es fundamental tener clara la posición de cada robot, ya que laposición es la base del movimiento.

9.2.2. ANTECEDENTES

Frente al avance de las radios definidas por software (SDR por sus siglas en inglés) en las Te-lecomunicaciones, en la Facultad de Ingeniería y en particular el IIE se ha estado trabajandoel tema por un tiempo ya. Específicamente, se está considerando incursionar en la combina-ción de “SDR y hardware” que permitan comunicarse y realizar tareas simples a un conjuntode robots. Esto puede concretarse en un proyecto de fin de carrera a iniciar en el segundosemestre del presente año, cuyo objetivo sería el control de una cantidad pequeña (2 o 3) derobots, que comunicándose a través de SDR entre sí y con el usuario, puedan realizar tareassencillas (por ejemplo, de búsqueda), con una cierta calidad de servicio en la comunicación.Para esto es importante que los robots tengan conocida su posición y trayectoria.

Hay varios trabajos dentro del instituto que han tratado y resuelto el problema que estáplanteado. En particular en los trabajos con quadracópteros sabemos que se enfrentaron aeste tipo de desafíos. La navegación mediante una IMU (inertial measurement unit) ya se haresuelto en varios Proyectos de Fin de Carrera, pero quedan puntas abiertas.

Haciendo una rápida búsqueda usando las palabras clave “ARDUINO”, “GPS” y “aceleró-metro” obtuvimos rápidamente páginas que debemos revisar con mayor profundidad, perotocan directamente el tema:

Tutoriales sobre manejo de IMU:- http://www.gpsinformation.org/forum/viewtopic.php?t=4322- http://courses.cs.tau.ac.il/embedded/projects/fall2011/gps_tracker/- http://www.instructables.com/id/Intro-to-GPS-with-Microcontrollers/- http://www.instructables.com/id/Geo-Data-Logger-ArduinoGPSSDAccelerometer-to-l/

Artículos y publicaciones sobre la utilización de filtros para la resolución de problemas deIMU:

- "Filtro complementario para estimacion de actitud aplicado al controlador embebido deun cuatrirrotor", de David Gaydou, Javier Redolfi y Agustín Henze 1

Manual de usuario y hojas de datos de los periféricos que usaremos:GPS NEO 7M:- https://www.u-blox.com/en/product/neo-7-series

IMU GY-86 incluye:MS5611 (medida de temperatura y presión):http://www.meas-spec.com/product/pressure/MS5611-01BA03.aspx

1https://www.researchgate.net/publication/275033545_Filtro_complementario_para_estimacion_de_actitud_aplicado_al_controlador_embebido_de_un_cuatrirrotor

10

HMC5883L (compás):https://cdn-shop.adafruit.com/datasheets/HMC5883L_3-Axis_Digital_Compass_IC.pdfMPU6050 (acelerómetro y giróscopo):http://www.invensense.com/products/motion-tracking/6-axis/mpu-6050/

Comunicación I2C:http://www.i2c-bus.org/i2c-bus/

9.2.3. OBJETIVOS DEL PROYECTO

El objetivo global del proyecto es tener la posición del robot 10 veces por segundo.

Para lograr esto nos fijamos como objetivos específicos:

a) Estudiar diferentes protocolos de comunicacion (I2C y UART).b) Lograr la comunicacion entre el Arduino y los periféricos mencionados.c) Filtrar los datos para minimizar el ruido de adquisición.d) Calcular la posición utilizando la información adquirida.

En concreto se espera poder llegar a mover el hardware (por ejemplo con la mano) y obte-ner los datos de posición del mismo.

9.2.4. ALCANCE DEL PROYECTO

El proyecto incluye el estudio y comprensión del microcontrolador (Arduino), y de los pe-riféricos GPS y giróscopo (que incluye acelerómetro y compás). También incluye el procesa-miento de los datos, evaluando dos filtros posibles: de Kalman o complementario, según elcosto de procesamiento que tienen y el resultado que se obtiene. El alcance del proyecto esobtener 10 posiciones por segundo del robot.

9.2.5. DESCRIPCIÓN DEL SISTEMA

El sistema, que está conformado por el microcontrolador Arduino, un GPS, un aceleróme-tro y un giróscopo, se esquematiza en la figura 9.1, donde se muestra el diagrama de bloquescorrespondiente, en el cual se observan los protocolos serie comunicación con el micro.

Con dichos instrumentos se determinará la posicion y orientación del objeto, teniendo encuenta que el acelerómetro enviará por el canal de comunicación 3 medidas, el giróscopo 3medidas, el GPS 1 medida, y el compás 3. Esto quiere decir que serán en total 10 medidas,que deberán de ser procesadas por el microprocesador, en un tiempo limitado.

Para el sistema se plantea el diagrama de bloques planteado en la figura 9.2:

11

Figura 9.1: Esquema del hardware del sistema y sus conexiones

Figura 9.2: Diagrama de bloques del sistema

Lo que haremos será recibir los datos de los periféricos en sus respectivas rutinas de aten-ción a la interrupción. Cada actualización de dato implicará una función de tratamiento deestos datos. En el caso del GPS lo que se hará será una corrección del estimador de la posición(será considerado como la verdad). Los datos del acelerómetro se integrarán para obtener laposición, así como los del giróscopo. Todos los datos deberán ser filtrados previo tratamientopara minimizar el ruido que ingresan.

9.2.6. REQUERIMIENTOS Y RESTRICCIONES DEL SISTEMA

Para determinar el tiempo de respuesta, se ha de poner en balanza el consumo y la ne-cesidad de actualización de los datos recabados. Se estipula un tiempo de respuesta de 10medidas por segundo.

Contamos con los siguientes datos del hardware. El GPS arroja datos de posición con unaprecisión de 2.5 mts, y con una cadencia de actualización de 1 segundo. El compás actuali-

12

za datos a frecuencia de 160 Hz (cada 6.2 milisegundos), con una precisión de 2 grados. Elgiróscopo entrega datos a frecuencia entre 4 y 8000 Hz, y el acelerómetro entre 4 y 1000 Hz.Buscaremos que los periféricos trabajen a la mayor frecuencia posible, ya que tomaremos co-mo válida la medida del GPS y calcularemos la posición a partir de los otros 3 periféricos entremedida y medida del GPS. Para esto debemos contar con bastantes iteraciones entre mediday medida del GPS que nos permitan integrar la aceleración y los ángulos proporcionados porel giróscopo con el menor error posible.

Los datos entregados por el hardware pueden sufrir desviaciones por desajustes de los ins-trumentos de medida. Si bien los filtros que eliminan este ruido se suponen integrados alhardware, puede que esto tenga que ser revisado (en el diagrama aparecen como filtros pa-sabajos).

Otro aspecto que nos debe interesar es la pregunta ¿A qué velocidad podré moverme y serárazonable la descripción de mi trayectoria?. Si tenemos 10 interpolaciones calculadas de laposición por segundo, y cada 1 segundo ajustamos la posición con la medida del GPS, parecerazonable pensar que si el hardware se mueve a 1 metro/segundo (velocidad de peatón) po-dremos estimar correctamente su posición.

9.2.7. DISEÑO PRELIMINAR

Se utiliza una placa Arduino como microcontrolador, un GPS u-blox NEO-7M, y una placaIMU GY-86, que contiene los siguientes componentes soldados: MS5611, HMC5883L, MPU6050.

Se usará una arquitectura de software round-robin con interrupciones, donde éstas pro-vendrán de los periféricos descritos anteriormente. Motivan esta elección que round-robincon interrupciones es la arquitectura más sencilla que permite solucionar el problema.

Un esquema de nuestro software sería:

Periféricos

- Módulo de GPS: debe incluir la rutina de atención a la interrupción del GPS y el trata-miento de los datos ingresados.

- Módulo de giróscopo: debe incluir la rutina de atención a la interrupción del giróscopo yel tratamiento de los datos ingresados.

- Módulo de acelerómetro: debe incluir la rutina de atención a la interrupción del aceleró-metro y el tratamiento de los datos ingresados.

- Módulo de compás: debe incluir la rutina de atención a la interrupción del compás y eltratamiento de los datos ingresados.

Comunicación

13

- Módulo de inicialización de la comunicación a través de la UART.- Módulo de inicialización de la comunicación a través de I2C.

Programa principal

- Módulo de display de datos, con interrupción interna cada 10 centisegundos.- Módulo del filtro a implementar.- Main con el esquema de round-robin.

Cuando decimos "procesamiento"de los datos, nos referimos a que cada uno de los peri-féricos ingresará datos al micro a cierta tasa, y con exactitud y utilidad diferentes. Tendremosque utilizar filtros para procesar estos datos, en particular utilizando por ejemplo el filtro deKalman, que es computacionalmente más costoso, o el filtro complementario (que es unaversión simplificada del filtro de Kalman).

9.2.8. PLANIFICACIÓN

Hito 1 (30 de Mayo):

Como se planteó, primero interesa establecer la comunicación con los periféricos. Para es-to se trabajará en los módulos de comunicación con los periféricos (inicialización e interrup-ciones). Esto implica el establecimiento de un primer contacto con el microcontrolador, elestudio de la comunicación UART e I2C, el establecimiento de los relojes de funcionamiento,la inicialización de microcontrolador y periféricos y el desarrollo de un programa de prueba.Se piensa que en esta etapa, en función de los datos adquiridos, podremos decidirnos por elfiltro a utilizar para determinar la posición con la tasa deseada.

La prueba de estos módulos se puede hacer con un main que ya sea un esqueleto delround-robin con interrupciones que usaremos después. En esta prueba podremos tambiénevaluar el estado de los datos recibidos, en particular el ruido que incluyen y si hay offset enlas medidas, etc. Como puede deducirse, el armado del hardware (conexiones, alimentación,etc) será condición necesaria para esta etapa, por lo que también será una de las tareas a en-carar.

Presentación del Proyecto (13 de Junio):

La etapa final implica el desarrollo de las funciones de tratamiento de los datos (filtros),la conclusión del programa principal (round-robin con interrupciones) y el testeo de este,además de la documentación y la puesta a punto de la presentación oral y de la demo para ladefensa.

14

9.3. COMENTARIOS SOBRE LA PLANIFICACIÓN Y DESENLANCE

Si bien se logró establecer la comunicación UART con el GPS para el hito intermedio, locual nos auguraba un buen desenlace para el resto del camino, este módulo falló luego dela presentación. Esto nos retrasó, por lo menos una semana. Luego el parseado de datos delGPS y el programa principal también costaron más de lo estimado. En particular, la ausenciade módulos atómicos que permitieran una fácil combinación dificultó la tarea.

La pérdida de un compañero luego de establecidos el alcance y objetivos también nos obli-gó a replantearnos estos (en el hito intermedio).

Si bien lo que se desarrolló en el proyecto no aporta elementos novedosos para el manejode los periféricos utilizados, ni para el tratamiento de los datos recabados, la familiarizacióncon el hardware utilizado es un paso importante que dimos, y esperamos dé sus frutos en elfuturo.

15