Étape 3: logiciel
J’ai divisé le croquis de robot en 4 fichiers, principalement pour aider à la lisibilité du code. Les fichiers et le contenu général sont :
- SimpleRobot.h : Fichier d’en-tête contenant #defines, des définitions de classe et des prototypes de fonction
- SimpleRobot.cpp : Fichier C++ contenant le PID et les fonctions de classe de contrôle moteur.
- Bluetooth.INO : Le Code d’application communication Bluetooth avec l’application Android.
- SRG2_Bal_Final.INO : Les croquis de Main pour le robot.
Le code ne fait référence à Arduino.h, CurieIMU.h et MadgwickAHRS.h, donc vous aurez besoin d’avoir installé les bibliothèques nécessaires pour Arduino 101 pour elle à compiler.
Je n’irai à travers une promenade de code complet, car le code est bien commenté, mais fera quelques remarques générales :
- L’esquisse utilise un Madgwick et filtre complémentaire pour la fusion de capteurs pour les comparaisons de performance – lacet vient de Madgwick, et pitch vient du filtre complémentaire.
- Informations encodeur sont consignées à l’aide d’un ISR (interrupt service routine) séparément pour chaque moteur. Vitesse de robot utilise une moyenne des deux, donc, vous inscrivez à un robot de filature près de vitesse 0.
- Une implémentation de la journalisation de données simple est incluse, même si la mémoire limitée de Arduino 101 se traduit dans un joli petit ensemble de données. Saisie de données est démarré par le biais de l’instruction de l’app Android, et l’intervalle de capture de données est contrôlée au moyen d’une instruction #define. L’en-tête et les données à saisir sont définies au bas de l’esquisse principale. Données sont automatiquement transférées vers le périphérique Android et enregistrées au format CSV, une fois la capture terminée.
- Le module Bluetooth à la fréquence de communication Arduino 101 se trouve assez haut (921600) afin de réduire les frais généraux/temps de latence de communication sur cette interface. Selon l’intégrité du signal d’une implémentation spécifique, cela peut doivent être réduites.
- Au départ, j’étais incapable de télécharger les croquis pour le 101 Arduino en raison de problèmes de pilote USB. En fin de compte j’ai dû acheter et installer une carte d’extension USB3 chez mon hôte PC pour le faire travailler. Depuis, ils ont sorti plus de mise à jour SW, donc ce problème peut être résolu, mais je n’ai pas confirmé sur mon installation.