Paso 3: Software
Dividí el esbozo de la robusteza en 4 archivos, principalmente para facilitar la legibilidad del código. Los archivos y contenido general son:
- SimpleRobot.h: Archivo de encabezado que contiene #defines, definiciones de clases y prototipos de función
- SimpleRobot.cpp: Archivo de C++ que contiene PID y funciones de control motor de la clase.
- Bluetooth.ino: El código de aplicación de la comunicación Bluetooth con Android de la aplicación.
- SRG2_Bal_Final.ino: Esbozo principal para el robot.
El código de referencia Arduino.h, CurieIMU.h y MadgwickAHRS.h, por lo que necesitarás tener instalado las librerías necesarias para Arduino 101 para al compilar.
No ir por un paseo de código completo a través, como el código está bastante bien comentado, pero hará unos comentarios generales:
- El bosquejo utiliza un Madgwick y filtro complementario para la fusión del sensor para las comparaciones de rendimiento – desvío proviene Madgwick y pitch viene desde el filtro complementario.
- Información de codificador se registra utilizando un ISR (rutina de servicio de interrupción) por separado para cada motor. Velocidad del robot utiliza un promedio de los dos, por lo que registrará un robot de giro velocidad 0.
- Una aplicación de registro de datos simple se incluye, aunque la limitada memoria de Arduino 101 resulta en un muy pequeño conjunto de datos. Captura de datos se inicia a través de las instrucciones de la aplicación para Android, y el intervalo de captura de datos es controlado a través de un comunicado de #define. El encabezado y los datos a capturar se definen en la parte inferior del dibujo principal. Datos es automáticamente transferidos al dispositivo Android y guardados en formato CSV, una vez completada la captura.
- El módulo de Bluetooth a la frecuencia de comunicación de Arduino 101 está situado bastante alto (921600) para reducir la sobrecarga y la latencia de comunicación sobre esta interfaz. Dependiendo de la integridad de la señal de una implementación específica, esto puede necesitar reducirse.
- Al principio era incapaz de descargar bocetos para el Arduino 101 debido a problemas de controlador USB. Al final tuve que comprar e instalar una tarjeta de USB3 en mi host PC para conseguirlo para trabajar. Desde entonces han lanzado SW más actualizado, por lo que este tema puede ser tratado, pero no lo he confirmado en mi configuración.