Enkla självbalanserande Robot med Galileo Gen 2 (3 / 6 steg)

Steg 3: Robotprogram

Jag väljer att genomföra robot skissen i en enda fil, vilket gör det lite lång, men sätter allt på ett ställe. Snarare än att gå genom den SW rad-för-rad, kommer jag bara kommentera hur den är organiserad och vad varje avsnitt är inriktad på.

Skissen börjar med rubriken standard kommentar och bibliotek innehålla filer. Jag dokument sköld pin användning i huvudet kommentaren för att hålla mig själv rakt på SW användning av stiften. Jag också definieras en datastruktur som används av funktionen PID, med tanken detta skulle göra det enklare att lägga till en andra överlappande hastigheten PID senare.

Nästa är #define uttalanden för konstanter och vanligen används värden som bekvämt kan ändras. Till exempel när du avgöra vad den optimala P, jag och D värden är för din robot, kan de permanent kodas här. Nästa kommer de varierande definitioner, som jag försökt att gruppera på ett logiskt sätt - du kan vara domaren av hur bra jag gjorde.

Nästa avsnitt innehåller funktioner som används senare i skissen. Den första funktionen implementerar balanserande PID. Detta är SW jag belånade tungt från Brett Beauregard tutorial. Ingår i funktionen PID är en sektion för att spela in PID information till SD-kort om data loggning är aktiverat. Medan tuning PID värden, hittade jag den instruktions- och underhållande, att se den enskilda PID sikt beteendet. Detta sparar data till en fil i CSV-format, som jag senare importeras till Excel och genererade grafer för visualisering. Denna alla uppenbarligen fungerar endast om du har ett SD-kort i Galileo styrelsen.

Detta följs av några motorisk kontrollfunktioner som kartan motorstyrning information till riktning, hastighet och broms kontroller för motor shield

Nästa är en funktion för att hämta positionsdata från modulen MPU-6050. Jag vann detta med stolthet från Jeff Rowberg referenskod. Jag använder en vanlig-intervall-data-drag-metoden för dataöverföring, snarare än med avbrott som Jeff gjorde, som jag hade vissa svårigheter att få avbrotten att arbeta. Tidsintervallet implementeras i huvudprogrammet slingan, och jag fann att en 3ms intervall var tillräcklig för att säkerställa det fanns inga data svämmar över.

Vi sedan gå vidare till en uppsättning funktioner att hantera Bluetooth-kommunikation. Dessa börjar med några funktioner för att skicka mer komplicerade kommandon - dessa bröts funktioner främst för koden läsbarhet. Sedan kommer det primära Bluetooth kommandot parser, som implementerar protokollet ta emot kommunikation med Android app. Denna funktion ackumuleras tecken från den seriella Bluetooth-porten tills slutet av kommandot tecken upptäcks, och sedan det avkodar kommandot. Som väntat, slutar avkoda att bara vara en stor case-sats.

Slutliga funktion är hög nivå robot kontroll tillståndsdatorn. Jag genomfört det i stil med en finite-state-maskin (FSM) - förmodligen overkill, men jag tänkt utöka detta funktioner läggs till roboten.

Nästa är setup-funktionen krävs av alla Arduino skisser. Kommentarerna i koden bör göra detta avsnitt ganska självklar. Det finns ett avsnitt som försök att initiera SD-filen för inloggning, och bör fel ut om ett SD-kort inte är närvarande, men jag inte spendera mycket tid verifiera detta.

Slutligen finns det huvudsakliga skiss slingan. Det första avsnittet implementerar en timer för att hämta data från MPU-6050. Om data hämtas, finns det några beräkningar att upptäcka om roboten är upprätt, eller ur balans.

Nästa den seriella porten är ansluten till Bluetooth-modulen är markerad för en mottagna tecken, och om man väntar, Bluetooth-funktionen kallas.

Detta följs av PID och motorisk kontroll timer. Uttrycket "om" säkerställer att kontrollen PID/motor bara händer när roboten aktivt försöker balansera. Det är där MPU_6050 data matas in PID, och PID utdata skickas till det motoriska kontrollerar. Detta är också där styrningen genomförs, genom att lägga till Bluetooth härrör riktning indata till en motorisk, och subtrahera det från den andra. Eftersom vi gör ytterligare matematik på PID-utgång, har vi igen begränsningen PID Max/Min begränsar för att hålla inom motor PWM värden.

Slutligen tillståndsdatorn robot kontroll kallas, och en timer används för att implementera funktionen robot hjärtat slå. Jag började med en separat hjärtat slå Bluetooth kommando och batteriets spänning kommando, men sedan samman dem till en enda funktion, med spänning som skickas som en indikation på heartbeat.

Och det är det - lite lång omständlig, men ingenting alltför komplex.

Se Steg
Relaterade Ämnen

Gör en självbalanserande Robot med Arduino UNO

Själv balansera Robot är mycket intressant. Många vänner runt omkring oss försökte göra en, men de encounted en hel del chanllenges bland annat bristen på strukturerna som lätt-till-montering, de lämpliga elektroniska kretsarna och program. Så jag be...

Självbalanserande Robot med LCD-

Den modifierade versionen av min mpu6050 balansera robot stabilare med LCD och exempel på ansluta 2 i2c på samma stiftvideo 1video 2Steg 1: Steg 1: ◾L298N dubbla motor förare breakout ombord◾L298N dubbla motor förare breakout ombord12 V BATTARY9 V BA...

Enkla objekt avoider robot med Actobotics Runt Rover Peewee chassi och en Arduino

Det finns många sätt att bygga en robot, från början ett kit, ett färdigt system eller en kombination av dessa metoder. Vägen tar vi här kommer att vara mestadels från ett kit och andra objekt som en Arduino styrenhet, motorn förarens och sensorer fr...

Rumstemperatur upptäckten med Galileo Gen 2 och Grove Kit

Jag kommer att visa dig hur du ställer in en interaktiv rumstemperatur projekt med LCD RBG och temperatur sensor använder Intel Galileo och grove kit.Steg 1: Hämta Arduino IDE för Intel Galileo och temperatur sensor koden.Steg 2: Öppna koden i IDE, v...

Grove startpaket med Intel Galileo Gen 2: Komma igång

När jag började med IoT var jag alla förvirrade om elektronik materialen,motstånd och kretsar, då jag fick Seeed Studio's Grove Starter Kit plus. Med detta har vi att bara koppla in modulerna som sensor istället för att hantera det genom lödning elle...

Intellekten Galileo Gen 2 ljussensor med utsäde Studio startpaket

Här ska jag visa dig hur man skapar en enkel Intel Galileoprojektet Gen2 med en ljussensor och en LCD-display.I grund och botten när det finns ljus displayen är tänkt att Visa "Det är Light" och "Göra saker". Den "Göra saker"...

Streaming USB Webcam med Intel Galileo Gen 2

Välkommen!Idag lär vi dig att strömma en USB webbkamera med Intel Galileo Gen 2.Vi måste av "apt-get" så en Debian Linux bygga behövs på din Galileo.Följ min Instructable för att bygga en Debian Linux-distributionen för Intel GalileoKompatibla e...

Hur man skjuter timelapse-video med Intel Galileo Gen 2

Nedan visar vi dig hur man skjuter en timelapse-video med Intel Galileo Gen 2 eller en liknande ombord.Vi använder en 2,5 mm-uttag att ansluta styrelsen till en Canon DSLR och sedan kontrollera slutaren med vår styrelse.Allmänhet Canon digitala syste...

B-robot EVO. Självbalanserande robot

Hur fungerar det?B-ROBOT är en fjärrkontrollerad självbalanserande arduino robot som skapats med 3D tryckta delar. Med endast två hjul är B-ROBOT kan bibehålla sin balans hela tiden med hjälp av sin interna sensorer och köra motorerna. Kan du styra d...

Min första självbalanserande Robot Diy lätt Under 25 år

Detta är min första självbalanserande robot och jag söker på internet efter andra självbalanserande projekt och jag designar min gruva robot att vara enkel och billig.I denna instructabile jag whill berätta dig steg för steg hur man bygger din robot...

Labyrint Problemlösaren Robot, med artificiell intelligens med Arduino

(Om du gillar detta Instructable, glöm inte att rösta på det (ovan: högra hörnet flaggan). Rex, roboten tävlar på ROBOTICS och sensorer tävlingar. Tack så mycket! ;-)Detta Instructable utvecklades på mitt senaste projekt: rad efterföljare Robot - PID...

Hur till spår din Robot med OpenCV

UPPDATERING: Låter göra robotar, mitt hem digital hackerspace, köptes av RobotShop. Jag vill inte gå in, men de nya ägarna förbjudit mig själv och de flesta veteran medlemmarna. Som sagt, de flesta av länkarna där kommer att brytas. Lyckligtvis kunde...

Kontrollera en Roomba robot med Arduino och Android

(Om du gillar detta Instructable, glöm inte att rösta på den - ovan: högra hörnet flaggan. Det tävlar på AUTOMATION tävling. Tack så mycket! ;-)Som en av robotteknik tävling 2016 vinnarna här på Instructables fick jag som pris en iRobot Roomba Create...

Bygga din Internet kontrollerad Video-Streaming Robot med Arduino och Raspberry Pi

< the Instructable och koden är redo. Njut! Lämna en kommentar med du feedback! >Jag är (aka LiquidCrystalDisplay / Itay), en 14 år gammal student från Israel lärande i Max Shein Junior High School för avancerad vetenskap och matematik. Jag gör dett...

SainSmart InstaBots upprätt Rover (själv balansera Robot med Arduino)

Upprätt Rover är en självbalanserande robot som ritades av SainSmart. De verkligen gjort det enkelt. Som ni ser, finns det bara 8 ledningar på robot och 8 ledningar på handkontrollen. Så låt oss ta reda på hur det fungerar!DELAR I RUTAN3 x Potentiome...

Linux Tutorial för Intel® Galileo Gen 2

Man kan felaktigt tro att Intel® Galileo Gen 2 som bara en avancerad, mer kraftfull version av Arduino Uno som råkar vara lager ovanpå ett Linux-system.Det finns faktiskt mer att göra än det och förhoppningsvis kommer denna tutorial visar den större...

Bygga ett självbalanserande fordon med mDrawBot

Jag fick en mDrawBot från Makeblock för några dagar sedan. Detta awesome robot kit är ett kicken project nu. Idag omvandla jag det till ett självbalanserande fordon med en MPU6050 modul. Kolla in.Steg 1: Ramen Bara tre stycken, ganska enkelt.Steg 2:...

Hemgjord rimliga Robot med Bluetooth

INTRODUKTIONAlltid velat ha en Roomba, men är det för dyrt för en bit plast? Vad sägs om uppfinna egna? Jag själv hitta vakuum cleaner / sweeper robotar alltför dyrt och överskattat. Det finns inget absurt i det som du inte kan göra din egen. Göra nå...

Bygga en liten Robot: gör världen är minsta hjul Robot med en gripare.

Bygga en 1/20 kubiktum robot med en gripare som kan plocka upp och flytta små objekt. Den styrs av ett Picaxe mikrokontroller. Vid denna tidpunkt, tror jag detta kan vara världens minsta hjulförsedda robot med en gripare. Som utan tvekan kommer att f...