Stap 4: Android App
Vanaf het begin van dit project was een van mijn doelstellingen te ontwikkelen een metgezel Android app zodat de controle van de robot. Zoals mijn SW ontwikkeling-vaardigheden nog steeds "in ontwikkeling", ik was blij te struikelen over de ontwikkelomgeving van MIT AI2 Android app - bleek te zijn perfect voor wat ik wilde doen.
Bracht ik enige tijd met een aantal van de tutorials om een gevoel voor hoe dingen setup waren, en met de Whatakuai en Pura Vida Apps op hoe hefboom van de BT-interface. Maar in plaats van het besteden tijd aan het uitleggen van MIT AI2, zal ik beschrijven hoe de app is bedoeld om te worden gebruikt en hoe de blokken zijn structuur.
De app is een eenvoudige verzameling knoppen en schuifregelaars om de gebruiker te configureren en beheren van de robot. Hieronder volgt een beschrijving van de verschillende besturingselementen van de app.
· BT Module: elke keer de app is gestart, of de robot macht gefietst, zal de gebruiker hoeft te verbinden met de robot BT module. Dit is de knop dat die actie wordt vergemakkelijkt.
· Stand-by: Zodra robot is verbonden met BT, en het Galileo-bord is opgestart, begint de Robot in de stand-by staat. Deze knop wordt gebruikt voor het instrueren van de robot om de actieve, balancing staat. Houd er rekening mee dat de robot alleen proberen zal te evenwicht als het binnen 2deg van verticale, zodat zelfs als deze knop meldt "Actief", u moeten zult plaatsen de robot in een in de omgeving van verticale positie voor om te starten met het balanceren. Deze knop kan worden gebruikt om te schakelen tussen "Standby" en "Actief" zoals gewenst.
· PID: Deze knop wordt gebruikt om de gebruiker te veranderen van de "P", "I" en "D" waarden voor de PID-regelaar in de robot terwijl de robot is actief. Wanneer ingedrukt, zal het ophalen van de waarden van de PID van de robot en tonen hen onder de respectieve "+" en "-" knoppen. De increment en decrement waarde voor elke parameter zijn hard gecodeerd in de schets van de robot.
· FW Ver: Dit is de robot schets firmwareversie. Ik ging door de vele versies van schetsen, en meerdere SD kaarten, dus ik vond het zeer nuttig om te weten welke versie liep op de robot. Deze waarde is hard gecodeerd in de sketch met een #define instructie, en naar de Android App worden verzonden wanneer de robot uit Standby gaat.
· VBAT: De accuspanning van de robot, verzonden per seconde
· HB: Heartbeat indicator. De tekst verandert van kleur één keer per seconde om aan te geven dat de schets is nog steeds actief op de robot.
· Roll Calibrate (kalibreren): op basis van de module die u hebt, en hoe het gemonteerd op de robot, kan verticaal niet lezen als 0deg. Dit kunt u "kalibreren" wat de MPU leest wanneer de robot verticaal is. De "+" en "-" knoppen worden gedeeld tussen de rollen kalibreren en Motor Slack, zodat slechts één kan worden gewijzigd op elk moment. De huidige Roll kalibreren waarde wordt opgehaald uit de robot als het keuzerondje is geselecteerd.
· Motor toegestane vertraging: De DC reductiemotoren die ik gebruikt had een zone in de lagere PWM-waarden die niet in een beweging van de motoras trekken resulteren. Dit resulteert in een niet-lineaire gebied van de controle voor de uitvoer van PID. Ik vond dat door het "springen" over deze lage waarde van de PWM (motor speling) in de uitvoer van PID, u beter evenwicht de robot tussen zou. Met deze knop kunt u ophalen van de huidige waarde van de robot, en aanpassen van de grootte van de "sprong"
· Snelheid: Hierdoor kan de gebruiker de controle van de snelheid van de robot. Als gevolg van een beperking in het MIT AI compile milieu staat de app geen multi-aanraking, dus u niet de snelheid en richting schuifregelaars tegelijk wijzigen. Een internet-zoekopdracht op het onderwerp toont er een werk rond kunnen multi-aanraking operatie, maar ik heb niet nog nagestreefd.
· Richting: Hierdoor kan de gebruiker om te bepalen van de richting van de robot.
· Afsluiten: Hiermee sluit u af de Android App
Ik vond de visuele methode gebruikt door MIT AI2 voor de ontwikkeling van de details van de app op de sectie "Blokken" wordt een beetje omslachtig - maar zal ik u tot uw eigen conclusies komen. Ik was niet succesvol in het nemen van een screenshot van de lay-out van de blokken, maar ze zijn gerangschikt in drie kolommen. U moet kunnen in importeren de .iai bestand in MIT AI2 en Bekijk de details voor jezelf.
De eerste kolom implementeert de knoppen Quit, BT Module, Standby, Data Log, snelheid, richting, Roll fout en toegestane vertraging van de Motor.
De tweede kolom voert de PID inschakelen knop, en de P, I en D "+" en "-" knoppen. Het implementeert ook de rollen fout en toegestane vertraging van de Motor "+" en "-" knoppen.
De derde kolom implementeert de Bluetooth timer, gebruikt om te controleren de interface voor de ontvangen informatie, en blokken om te halen en uit te voeren opdrachten van de robot. Het duurde wat trial and error om de Bluetooth gegevens receptie en command extractie werken, en het resultaat is een beetje grof force-ish, maar in het einde, het werkte vrij goed.