Stap 3: Software
Ik verdeeld de robot schets in 4 dossiers, voornamelijk om te helpen bij de leesbaarheid van code. De bestanden, en de algemene inhoud zijn:
- SimpleRobot.h: Headerbestand met #defines, klassedefinities en functie prototypes
- SimpleRobot.cpp: C++ bestand met PID en motorische controle klasse functies.
- Bluetooth.Ino: Code uitvoerende Bluetooth-communicatie met de Android App.
- SRG2_Bal_Final.Ino: Main schets voor de robot.
De code verwijst naar Arduino.h, CurieIMU.h en MadgwickAHRS.h, dus u de nodige bibliotheken voor de Arduino 101 voor het moet te compileren hebt geïnstalleerd.
Ik zal niet gaan via een volledige code wandeling door, zoals de code vrij goed is heeft gereageerd, maar zal een paar algemene opmerkingen maken:
- De schets maakt gebruik van zowel een Madgwick als een aanvullende filter voor de sensor fusion voor de vergelijkingen van de prestaties – yaw komt uit Madgwick, en pitch komt uit de complementaire filter.
- Encoder gegevens vastgelegd met behulp van een ISR (interrupt service routine) afzonderlijk voor elke motor. Robot speed gebruikt een gemiddelde van de twee, zodat een draaiende robot in de buurt van 0 snelheid registreren zal.
- Een eenvoudige gegevensregistratie implementatie is opgenomen, hoewel het beperkte geheugen van de Arduino 101 in een vrij klein gegevensverzameling resultaten. Vastleggen van gegevens wordt gestart door middel van een instructie van de Android app en het interval voor het vastleggen van gegevens wordt beheerd via een #define verklaring. De kop en de gegevens worden vastgelegd worden gedefinieerd aan de onderkant van de belangrijkste schets. Gegevens automatisch overgebracht naar de Androïde apparaat en opgeslagen in CSV-indeling als opname voltooid is.
- De Bluetooth-module voor Arduino 101 communicatie frequentie ligt vrij hoog (921600) om de overhead/latentie van communicatie via deze interface. Afhankelijk van de signaalintegriteit voor een bepaalde implementatie moet dit mogelijk worden verminderd.
- Aanvankelijk kon ik niet downloaden van schetsen naar de Arduino 101 als gevolg van problemen met USB-stuurprogramma's. Uiteindelijk moest ik kopen en een USB3-invoegtoepassing card installeren in mijn host-PC om het te krijgen om te werken. Zij hebben meer bijgewerkte SW, sindsdien vrijgegeven zodat deze kwestie kan worden aangepakt, maar ik heb het op mijn setup niet bevestigd.