Firmware del robot móvil RoMAA-II
Tabla de Contenidos
Objetivos
Aquí se documentarán y organizarán todas las investigaciones y desarrollos ha realizar y realizados para la optimización del firmware de la plataforma robótica móvil RoMAA-II, en su aplicación con el sistema operativo en tiempo real FreeRTOS.
Caracteterísitcas generales del FW
Trabajos iniciales
FreeRTOS
Modo de funcionamiento
Tareas
Versiones del FW
v2.5 - 2012/12/20 - Final Estable
Esta es la versión final estable del FW del RoMAA 2012. Para ver todas las versiones y modificaciones del FW, aquí.
v2.3 - 2012/09/20 - Innovar
Esta es la versión estable del FW del RoMAA, utilizada en INNOVAR 2012. Para ver todas las versiones y modificaciones del FW, aquí.
Información para usuarios del RoMAA-II
Características generales de la plataforma
Link a características generales de la plataforma. Diferencias entre RoMAAs
Funcionamiento básico
Encendido, apagado, reseteo, etc.
Grabación del FW
Condiciones inicales
Lógica simple de funcionamiento
Lógica simple de funcionamiento del FW
Comandos
Comandos: Se describen todos los comandos disponibles para la utiización de la plataforma y los básicos iniciales para comenzar en cualquier aplicación de nivel superior a desarrollar.
Descripción agrupada por tipos de comandos
Detalle del efecto que tienen sobre el RoMAA, en que secuencia debería usarse
Detalle de la trama, envío y recepción a codificar
Información para desarrolladores del FW del RoMAA-II
Repositorio
Repositorio
Creación del tag v2.2 disponible para utilizar con ambos RoMAAs. Creación y utilización del trunk v2.3 para el desarrollo del proyecto.
El código que actualmente se utiliza tanto en el RoMAA II como en el RoMAA original esta basado en el desarrollado para el proyecto "Hardware de Control de Plataforma Robótica Móvil con Arquitectura ARM7 y RTOS embebido. Caracterización". Tesis de grado para obtener el título de Ing. en electrónica de Santiago Pérez y Martín Baudino Ir.
La versión en desarrollo actual (v2.4) se encuentra en el repositorio romaa_firmware. Y se puede descargar del servidor con:
hg clone https://proyectos.ciii.frc.utn.edu.ar/hg/romaa_firmware romaa_firmware_v2.4_trunk
Archivos que componen el proyecto
CiiiEmbLibs
FreeRTOS
Funcionamiento del FW
Compilación y Makefile
Lógica general
Condiciones iniciales
Descripción por partes del FW
El programa principal del firmware está dividido en tres partes principales, que se describen en los links a continuación:
Main
es la función principal del firmware, que de inicio a las tareas, inicializaciones de variables y configuración de hardware, ejecutándose solo una vez y finalizando con la entrega del control del flujo del programa y sincronización de tareas al scheduler del FreeRTOS.Tareas
son 5 tareas en total, que el FreeRTOS sincroniza para que funcionen en pseudoparalelo, según las prioridades asignadas a las mismas y los tiempos de repetición de cada una de ellas.Interrupciones
se usan con dos propósitos fundamentales. Por un lado, la lectura de los encoders, único sensor de realimentación de velocidad utilizado en el movimiento de la plataforma; y por el otro lado, para el timer que utiliza el scheduler del FreeRTOS en la sincronización de todas las tareas y recursos.
Modificaciones detalladas entre versiones
Cambios significativos y problemáticas resueltas relevantes
Memoria
Estudiar e implementar el uso optimizado de memoria de la aplicación con FreeRTOS.Grabación del Firmware con LPC2isp
Estudio y corrección de los problemas de grabación con el software LPC2isp.PID
Implementación de la codificación del PID del cuadricóptero QA3, variables, recursos del FreeRTOS e interacción con las demás tareas.Varios Aplicación
Optimización y utilización de varios recursos y configuraciones del FreeRTOS para la aplicación.Interrupciones y RTOS
Estudio e implementación de las interrupciones bajo programación segura con los recursos del FreeRTOS.Uso y medición de los recursos del micro
Estudio e implementación de mediciones de recursos del micro, FreeRTOS y aplicaciónCompilación
Errores posibles en la compilación y como solucionarlos.Makefile
Errores posibles en el Makefile y como solucionarlos.