Eenvoudige zelfbalancerende Robot w / Galileo Gen 2 (3 / 6 stap)

Stap 3: Robot Software

Ik kies ervoor om de schets van de robot in een enkel bestand, die maakt het een beetje lang, maar zet alles op één plek. In plaats van wandelen door de SW-per-regel, zal ik nog ingaan op hoe het wordt georganiseerd, en wat elke sectie is gericht op.

De schets wordt gestart met de standaard reactie header en bibliotheek bestanden opnemen. Ik het documenteren van het schild pin gebruik in de header commentaar te houden mezelf rechtdoor SW gebruik van de pinnen. Ik heb ook een gegevensstructuur die wordt gebruikt door de PID-functie, met de gedachte dat dit zou gemakkelijker toe te voegen een tweede trapsgewijze snelheid PID later gedefinieerd.

Vervolgens zijn dat de #define verklaringen voor constanten en algemeen gebruikte waarden die gemakkelijk kunnen worden gewijzigd. Bijvoorbeeld, zodra u wat de optimale P, I en D waarden voor uw robot bepalen zijn, kunnen ze worden permanent gehercodeerd hier. Vervolgens komen de variabele definities, die ik heb geprobeerd om te groeperen op een logische manier - u kan de rechter van hoe goed ik deed.

De volgende sectie bevat de functies die verderop in de schets worden gebruikt. De eerste functie implementeert de tegenrekening PID. Dit is de SW die ik leveraged zwaar van Brett Beauregard de tutorial. Inbegrepen in de PID-functie is een sectie om vast te leggen van de PID-gegevens op SD-kaart als gegevens logboekregistratie is ingeschakeld. Terwijl het afstemmen van de PID-waarden, vond ik het educatief en onderhoudend, om te zien de individuele PID termijn gedrag. Dit bespaart de gegevens naar een bestand in CSV-indeling, die ik later in Excel geïmporteerd en grafieken voor visualisatie gegenereerd. Dit alle uiteraard werkt alleen als je een SD kaart in de Raad van bestuur van Galileo.

Dit wordt gevolgd door een paar motorische controlefuncties die motorische controle informatie aan besturingselementen van richting, snelheid en rem voor de motor shield toewijzen

Vervolgens is een functie om de Positiegegevens ophalen uit de MPU-6050 module. Ik heb dit met trots van Jeff Rowberg de referentiecode. Ik ben met behulp van een reguliere-interval-gegevens-pull-methode voor gegevensoverdracht, in plaats van met behulp van interrupts als Jeff deed, zoals ik had grote moeite om de interrupts te werken. Het tijdsinterval in het hoofdprogramma lus ten uitvoer wordt gelegd, en ik vond dat een 3ms interval volstond om ervoor te zorgen er waren geen gegevens overstorten.

Vervolgens gaan we over tot een aantal functies om de Bluetooth-communicatie. Deze beginnen met een paar functies voor het verzenden van de complexere opdrachten - dit waren uitgebroken in functies voornamelijk voor de leesbaarheid van code. Dan komt de primaire Bluetooth commando parser, waarmee het communicatieprotocol van de ontvangen met de Android app worden geïmplementeerd. Deze functie accumuleert personages uit de Bluetooth seriële poort tot het einde-van-command teken wordt aangetroffen, en vervolgens het decodeert de opdracht. Zoals verwacht, eindigt de decodeer net als een grote case-statement.

De laatste functie is het hoge niveau robot controle statusmachine. Ik heb het in de mode van een eindig--toestandsmachine (FSM) - geïmplementeerd waarschijnlijk overkill, maar ik voorzag dit uit te breiden als mogelijkheden worden toegevoegd aan de robot.

Volgende halte is de setup functie vereist door alle Arduino schetsen. De opmerkingen in de code moet deze sectie vrij spreekt voor zich. Er is een sectie die bij de initialisatie van de SD-bestand voor data logging en fout uit moet als een SD-kaart niet aanwezig is, maar ik niet besteden veel tijd dit te valideren.

Tenslotte is er de belangrijkste schets lus. De eerste sectie implementeert een timer voor ophalen van gegevens uit de MPU-6050. Als gegevens worden opgehaald, zijn er sommige berekeningen te detecteren als de robot is rechtop of uit balans.

Vervolgens de seriële poort is aangesloten op de Bluetooth-module is ingeschakeld voor een ontvangen teken, en als een wacht, de Bluetooth-functie wordt genoemd.

Dit wordt gevolgd door de PID en motorische controle timer. De "if"-instructie zorgt ervoor dat de PID/motor controle slechts gebeurt wanneer de robot actief probeert om evenwicht te brengen. Dit is waar de MPU_6050-gegevens wordt ingevoerd in de PID, en de output van de PID wordt doorgegeven aan de motorische controle. Dit is ook waar het stuurwiel is geïmplementeerd, door het toevoegen van de Bluetooth afgeleid richting inbreng op een motor, en het af te trekken van de andere. Omdat we extra wiskunde op de PID-uitvoer doen, moeten we opnieuw beperking die de PID Max/Min beperkt te houden binnen de motor PWM-waarden.

Tot slot de robot controle statusmachine heet, en een timer wordt gebruikt voor het implementeren van de robot beat hartfunctie. Ik begon met een aparte hart beat Bluetooth opdracht en batterij spanning, maar hen vervolgens samengevoegd in een enkele functie, met de spanning die wordt verzonden als een indicatie van de hartslag.

En dat is het - een beetje lange adem, maar niets te ingewikkeld.

Gerelateerde Artikelen

Maak een zelfbalancerende Robot met Arduino UNO

Maak een zelfbalancerende Robot met Arduino UNO

Self balancing Robot is zeer interessant. Veel vrienden om ons heen wilden maken een, maar ze encounted alot van chanllenges met inbegrip van het ontbreken van de gemakkelijk-aan-de vergadering van structuren, de geschikte elektronische schakelingen
Linux Tutorial voor Intel® Galileo Gen 2

Linux Tutorial voor Intel® Galileo Gen 2

Een ten onrechte zou kunnen denken dat de Intel® Galileo Gen 2 als alleen een geavanceerde, krachtigere versie van de Arduino Uno dat gebeurt op een Linuxsysteem worden gestapeld.Er is eigenlijk meer dan dat en hopelijk, deze tutorial zal de weergeve
Hoe om te schieten timelapse-video met de Intel Galileo Gen 2

Hoe om te schieten timelapse-video met de Intel Galileo Gen 2

In de volgende zal wij u tonen hoe om te schieten een timelapse-video met de Intel Galileo Gen 2 of een dergelijke plaat.Wij zullen een 2.5mm jack gebruiken om de Raad van bestuur verbinden met een Canon DSLR en vervolgens bepalen de sluiter met onze
Intel Galileo Gen 2 lichtsensor met Seed Studio starterskit

Intel Galileo Gen 2 lichtsensor met Seed Studio starterskit

Hier ga ik om u te tonen hoe maak je een eenvoudige Gen2 Intel Galileo-Project met een lichtsensor en een LCD-scherm.In principe wanneer er licht de display wordt verondersteld Display "Er is Light" en "Doen dingen". Het "Doen Stu
Eenvoudige Pi Robot

Eenvoudige Pi Robot

Eenvoudige Pi Robot wil zetten robot controle in eenvoudige vorm, het ontwerp van de robot is vergelijkbaar met de veelzijdige GOPIGO robot gebouwd door dexter industrieën.De lijst met(1) raspberry pi (ieder model) is maar met de recente lancering va
Jeff-A goedkoop en eenvoudig IC-robot

Jeff-A goedkoop en eenvoudig IC-robot

Jeff duurde 5 weken om te concurreren en is een eenvoudige IC-robot. Jeff's belangrijkste ding is de led koplampen heks kom op automatisch wanneer het donker is. Het werkt door het hebben van wat heet een huidige Zie zere heks wanneer de huidige is h
SUPER EENVOUDIGE BEGINNERS ROBOT II (ARDUINO UNO VER.)

SUPER EENVOUDIGE BEGINNERS ROBOT II (ARDUINO UNO VER.)

Dit ' ible is gebaseerd op mijn behoorlijk populair SUPER eenvoudige BEGINNERS ROBOT ' ible. Na vele, vele verzoeken om een bijgewerkte versie van de Arduino, is hier het!Ik heb dit Instructable, en zijn voorganger, voor de absolute n00by robot wanna
Eenvoudige Walker Robot

Eenvoudige Walker Robot

Het bouwen van een eenvoudige wandelende robot is echt gemakkelijk. Laat niet het aantal stappen dat u gek te anders geloven. Deze robot is in feite gemaakt met een handvol van huishoudelijke artikelen en sommige eenvoudige elektronica die u gemakkel
Grove starterskit met Intel Galileo Gen 2: Aan de slag

Grove starterskit met Intel Galileo Gen 2: Aan de slag

Toen ik begon met IoT was ik al verward over elektronica materialen,weerstanden en circuits, dan heb ik kreeg het Seeed Studio Grove startpakket plus. Daarmee moeten we gewoon stekker van de sensor modules in plaats van het beheer van it door soldere
Eenvoudige 2WD Robot Chassis

Eenvoudige 2WD Robot Chassis

een kleine CNC machine is handig wanneer u wilt iets mechanische onderdelen maken door uzelf voor uw robot of andere structuren.Onlangs, ik heb een kleine stap voor mezelf en gebruiken voor het maken van een eenvoudige 2WD Robot Chassis snel.Stap 1:
Streaming USB-Webcam met de Intel Galileo Gen 2

Streaming USB-Webcam met de Intel Galileo Gen 2

Welkom!Vandaag zullen we leren hoe te streamen van een USB-webcam met de Intel Galileo Gen 2.We moeten het gebruik van "sudo apt-get" zodat een Debian Linux te bouwen op uw Galileo nodig is.Volg mijn Instructable voor het bouwen van een Debian L
Eenvoudig DIY Robot Valentines

Eenvoudig DIY Robot Valentines

Dit jaar iets anders doen voor je Valentijn. Licht van de dag met een eenvoudige DIY LED Robot Valentijnsdag kaart.Stap 1: Verzamel uw materialenU moet:Gratis Robot Valentine afdrukbareWenskaartpapier of cardstockKoperen tape1 rode LED1 3V horloge ba
Hoe het bouwen van een eenvoudige bewegende robot(beginners)

Hoe het bouwen van een eenvoudige bewegende robot(beginners)

Een zeer eenvoudige robot met zeer fundamentele onderdelen die worden gebruikt die uw belangen in robotica zou ontbranden. Geniet van het maken!Stap 1: Hulpprogramma's en onderdelen Laten we beginnen met het verzamelen is alle onderdelen. U kunt stap
De Crawli - een eenvoudige zachte Robot lopen

De Crawli - een eenvoudige zachte Robot lopen

Zachte Robotics is een jonge veld van robotica die blijven groeien elke dag. Veel zachte robotica projecten in de Gemeenschap zijn echter eenvoudige actuatoren of zachte sensoren, niet volledig zacht robots. Dit is de Crawli. Het is een kruipende zac