Upp och upp - Robot balansera Revisited (5 / 6 steg)

Steg 5: Balans optimering



Och nu får vi till intressanta – hur man kan förbättra roboten balansera prestanda. Jag hade några idéer om var man kan börja leta, men som med alla system, det är svårt att veta vad variablerna cross beroenden är. Så snarare än att få för analytiska, hoppade jag bara i.

Kontroll loop tidsintervall

Jag började med varierande tidsintervall som balanserande PID utvärderades. Jag mätte Arduino 101 PWM standardperioden på 2mS, och mina tidigare projekt hade använt ett värde på 20mS så jag började på 5mS och fördubblades intervall tills roboten inte kunde balansera. Roboten var kunna balansera på 5mS, men det verkade vara alltför aktiva och pendlade med en period på ungefär 120 MS. Det var igen kunna balansera på 10 MS, men svängningarna saktade ner till 280mS. På 20mS, den oscillerande period plockade tillbaka upp till ungefär 180mS, men i stället för aktiv, svaret verkade trög. På 40mS svaret blev ännu trögare, balanseringen oberäkneligt och roboten var inte alltid kunna hålla balansen. Min slutsats var att medan PID utvärdering intervallet kan säkert påverka beteendet robot, och faktiskt var tvungen att stå över några minimal ränta för att kunna balansera, det var inte magic bullet. För resten av mitt test använde jag en 5mS kontroll loop intervall.

Sensor fusion filter

Därefter flyttade jag till sensor fusion filtret. Varför behöver vi en fusion filter ändå? För att besvara denna fråga måste vi undersöka hjärtat av en balanserande system, IMU (Inertial måttenhet). En IMU består av två typer av sensorer – ett gyroskop och en accelerometer. Gyroskopet mäter kantiga graden av förändring eller vinkelformig hastighet. Teoretiskt kan en god uppskattning av kantiga ställning skapas genom att integrera produktionen av gyroskopet. Tyvärr, gyroskop sensorer har en effekt som kallas drift – som är de registrerar vissa små vinkelformig hastighet även när döda stillasittande. Så om du skapar din uppskattade vinkel bara genom att integrera gyroskop utdata, du skulle ha ett fel som skulle fortsätta att växa över tid-ett problem som gör ett gyroskop enda lösningen ohållbar för att balansera. Ange accelerometern. Det värde som rapporterats av accelerometern kommer att omfatta verkan av tyngdkraften, som är konstant, liksom alla andra acceleration, som kommer att variera baserat på enheten rörelse. IMU är det allvar vektorn vi är intresserade. Idén om en fusion filter är att generera en uppskattade vinkel genom att kombinera dessa två sensorer. Det gynnar gyroskopet utgång omedelbart (passerade genom ett högpassfilter) men den accelerometer output på lång sikt genom att mäta jordens gravitationsfält riktning (passerade genom ett lågpassfilter) för att ta bort eventuella drift.

OK, så vi behöver en fusion filter, men som en? Finns mycket kompletta och komplexa lösningar. Kalmanfilter är en av de mer framträdande fusion filter, men även en ingenjörsexamen får inte fullt utrusta dig att förstå vad som finns i den svarta lådan. För detta projekt använde jag en liknande, men mindre computationally krävande lösning, Madgwick filtret. Jag använde detta filter för en huvudsaklig anledning – det levererades med Arduino 101! Men konfigurationen av IMU i balanserande fallet – endast en grad av frihet, skapar begränsningar som tillåter oss att använda en enklare lösning, kompletterande filtret. Kompletterande filtret fått sitt namn eftersom de multiplicerande faktorerna för varje mandatperiod lägga upp till 1. Blockdiagram för en kompletterande filter visas i figur 1.

Det finns några mycket bra behandlingar på webben för detaljer bakom kompletterande filtret, så framför jag har bara ge resulterande filterekvationen. I ekvationen är A en konstant som fastställer egenskaperna som filter. Det bör dessutom noteras att i beräkningen av accelerometer vinkel, vi tar fördel av litet metar tillnärmning – en insikt som för vinklar mindre än ~ 30̊, sin(θ) ≈ θ i radianer. För vår robot, om vinkeln att närma sig 30̊, kommer det att falla över, så att antagandet verkar giltiga. Som ett resultat kan vi hoppa över sin(θ) i denna beräkning med liten inverkan. Slutligen visas även tidskonstanten för kompletterande filtret ovanför.

Jag har testat både Madgwick och kompletterande filter för att se hur det påverkat balanseringen av roboten. Beståndet Madgwick filter som installerade hade Beta in till 0,1, med ett #define uttalande i huvudfilen MadgwickAHRS.h. Roboten inte skulle balansera med inställningen-svaret var lite för trög. Efter att ha spelat, hittade jag en 0,01 aktiverad bästa balanseringen, att det fanns någon kompromiss i absoluta vinkel noggrannhet med den inställningen. Om du höll roboten i en vinkel för ett ögonblick, säger 20̊, och återvände sedan till upprätt, var det en eftersläpning i den uppskattade vinkel återvänder till 0̊.

För kompletterande filtret, jag använde A = 0,98, vilket ger en tidskonstant på ca 0,25 sekunder, med dt inställd på 5 millisekunder. Jag hittade resultaten vara jämförbara med Madgwick filtret, och bättre än min första projektet, men fortfarande inte rock solid balansering. Så sökandet fortsatte.

Användning av positionella feedback (givare)

Inriktade DC-motorer jag valt för denna robot med pulsgivare att ge feedback om rörlighet för armaturen av motorn. Kodare är på motoraxeln innan skuldsättningsgraden inträffar, så de ger en ganska hög upplösning på rörelse - med utväxlingen och diameter hjul används, beslöt jag att varje kodare övergång översatt till ~0.04cm. Avstånd och hastighet då var ganska enkelt att härleda, genom att räkna encoder övergångar över en regelbundna tidsintervall, och sedan multiplicera resultatet med 0,04 att få distans och att dela denna sträcka av tidsintervallet (20mS i mitt fall) att få fart.

Jag planerar mitt nästa projekt för att ta itu med mer fullständigt navigationen anlagen av robot, så jag tänker inte gå in i detalj här, men två metoder har använts för att kontrollera hastigheten på roboten – fastställande av mål vinkel och direkt tillägg till motor PWM värden. Att lägga till varvtalsreglering tog bort robot "vandrande" men betydligt bättre inte balansera. På den kontrollerar kretsar.

Kontroll loop variabler och struktur

Den huvudsakliga kontrollerar kretsar för balanserande robot bygger på två delar – fusion filtret ska bestämma uppskattade vinkeln av roboten och en PID-regulator att använda den uppskattade vinkeln för att generera motor styrsignalen. Tanken bakom en PID-regulator är att beräkna felet av en signal mot ett börvärde, och sedan summera de proportionella, integrerad och härledda formerna av felet efter att de har vart multiplicerats med separat konstanter. PID-regulator mycket mångsidig som ett kontrollelement, med tillgång till där felet har varit (I), där det är nu (P) och när det leds (D). Men var förvarnad - det kan vara en mycket utmanande uppgift att optimera multiplikatorer för P, jag och D termer. Figur 2 är ett blockdiagram visar den grundläggande struktur och kontroll anslutningen, och återspeglar den inledande konfigurationen av denna robot.

Vid närmare inspektion, kanske du märker att PID controller D termen tar derivatan av den uppskattade vinkel, vilket resulterar i en beräknad kantiga förändringstakten. Om du minns, var gyroskopet ge bara att en vinkelformig hastighet för förändring, men en som är mycket mer exakt. Detta leder en att undra hur de kontrollerar kretsar skulle bete sig om gyroskop utdata användes direkt, i stället för att omberäkna angular rate från den uppskattade vinkeln.

Efter utfodring gyroskopet direkt i D benämna av PID, var förändringen i balansera prestanda dramatisk. Figur 3 ger en glimt på varför – det visar gyroskop utgången tillsammans med D benämna av PID. Kantiga förändringstakten som härrör från den uppskattade vinkeln släpar gyroskop produktionen av över 150mS, en försening som hjälper till att förklara några av vingla i balanseringen av den ursprungliga konfigurationen, och gör du undrar hur det balanserade alls.

Figur 4 visar den slutliga konfigurationen med gyroskopet matas direkt i D benämna av PID-regulator. Medan alla områden utforskas hade viss inverkan på att balansera prestanda, som som tillhandahåller en basåret och högre trohet indikation på vinkelformig hastighet från gyroskopet förändringen i robot prestanda jag var ute efter.

Se Steg
Relaterade Ämnen

LED ljus upp Robot hjälm

Hej kunder, Cosplayers och Sci-fi nördar. Jag har för er ett snabbt och enkelt sätt att lägga till några spännande lampor till din science fiction hjälmar. Inte bara kommer de glöd jag mörkret, och ange din hjälm förutom andra hjälmar, men du kan änd...

LEAP rörelse kontrollerad Remote Search och bortskaffande Robot

Som en del av min post för Leap #3D sylt var jag upphetsad att bygga denna trådlösa gest kontrollerade Sök/rädda Robot baserad på Raspberry Pi. Detta projekt visar och ger en minimalistisk exempel på hur trådlös 3D hand gester kan användas för att st...

Raspberry Pi och ROS (Robotic Operating System)

i den här guiden vi ska gå över att inrätta en Raspberry Pi med Linux och ROS. Samt att bekanta sig med några av grunderna genom att köra några enkla handledning program från "ROS WIKI" . Om du är obekant med ROS kan du kolla in WIKI eller en av...

Hur till retur Instructables och RoboGames Robot tävling

robotar är aldrig kommer för att ta över världen om vi inte gå av i soffan och göra dem själva!Det är därför vi har slagit sig ihop med folk påRoboGames att ge dig Robot tävling!Vill du vinna en resa till RoboGames 2009? Berätta hur du gjorde din rob...

K-9 2.0. WiFi kontrollerade och autonom Robot hund.

OBS:I steg 22, har jag postat en uppdatering, förklarar några senaste förändringar/förbättringar som jag har gjort, främst på K-9's elsystem och sensor array som du kan ha nytta.FunktionerRobust trä (MDF) och akryl designHelt mikroprocessorstyrda anv...

WireBeings beta: en 3D tryckta och utbyggbart Robot för Arduino med Android kontroll

http://wirebeings.com/Kolla in videon här:Detta är ett trevligt projekt som du kan fortsätta att arbeta på och ändra som du lär dig mer Arduino projekt. Detta Instructable går igenom den kompletta bygga för bluetooth-aktiverade robot i första halvan...

Lärare robot och talande ROBOT

Detta är min robot. Jag gjorde denna robot för min klass. Han undervisar i min klass när inte jag är i klass, jag älskar denna robotSteg 1: Att göra roboten är mycket lätt om du följer mig Jag gjorde denna robot för min engelska klass .du kan se inre...

Hur man gör en röststyrning, riktning, fjärrkontroll, Android och arduino robot, (3 i ett)

Detta är en förenklad version av någon annan röst kontroll robot, inte komplicerad kodning lätt att förstå kodning med lätt algoritm.Appen är utvecklad så att det konvertera röstkommandot till text och överföra text till anslutna Bluetooth-enheten.Bl...

Enkel och billig ROBOT HAND med endast en MOTOR!

Hej alla,Jag ville bara dela denna idé att göra en enkel, billig robotic hand (eller någon slutet effektor) med endast en motor.Med endast en motor för hela handen kan räcka för att:-extremt billigt, vilket är bra för din plånbok eftersom vanligtvis...

Billig och enkel robot

Det är en enkel och billig lätt att göra här några bilder...

En enkel och mycket lätt inverterad pendel balansera Robot

Låt oss göra en enkel inverterad balanserande robot, och driva den.Du behöver bara en halv dag att göra dem, om du har en arduino och några material.[en video av en robot som du skulle göra]Inledning:Efter några arbetar med arduino, har jag tänkt på...

Balansera Instructable Robot

I detta Instructable ville jag visa dig hur man gör en självbalanserande robot. Vad gör den unik är att dess yttre likna Instructables roboten. Internt det fungerar på principen om PID, det är ett mycket populärt system för att upprätthålla en variab...

Hur man bygger en Robot - The BeetleBot v2 (Revisited)

detta är skalbagge robot instructables revisited a la MythBusters stil!Ursprungligen gjorde jag en instructables om min skalbagge robot version 1.Nu är det dags att visa dig en ny version av denna underbara robot. Denna nya version är mycket lättare...

Instructables robot och profil halsband

så im kommer att Detroit maker faire med min instructabels T-shirt, men jag tänkte hur coolt det skulle vara om jag hade ett halsband som inte bara visar insturctables men visade mig i Instructables alltför. Så jag gjorde något sånt, och det blev bra...

Hur man stå upp i en Street Fight! (Instructable)

Denna situation är där en kombattant är omkull, och den andra är fortfarande står upp. Jag kommer att visa hur man får tillbaka till fötterna tryggt medan en motståndare står över du kasta slag och sparkar.Steg 1: Motståndare pressar du ner Du och di...

Styr ditt hem och Robot av missade samtal från mobiltelefon

Från internet kan du hitta massor av projekt om att kontrollera saker som ljus, fläkt, tvättmaskin och din robot från annan plats. Det finns flera sätt för att kontrollera dessa distans till exempel med hjälp av DTMF signal från mobiltelefon (krävs D...

"Deskbot" en rolig och enkel rensa robot

"Deskbot"! Detta är en rolig och mycket enkel leksak / rensa upp robot gjorde jag i ca 30 min.Jag fick idén när jag hittade en trasig zuu zuu sällskapsdjur. sedan slog det mig. "varför inte göra en rolig och enkel leksak som kan hjälpa u re...

Arduino Uno och Visuino: kontrollera Smart Car Robot med Joystick och L298N motorn förarens

Smart Car anger i kombination med L298N Motor drivrutinsmoduler, erbjuder en av de enklaste sätten att göra roboten bilar. L298N Motor Driver modul är lätt att kontrollera med Arduino, och med hjälp av Visuino kan du programmera din bil i sekunder.I...

En Arduino infraröd kontrolleras och hinder skatteundandragande Robot

Hej alla,Detta Instructables är uppdelad i två faser, vilket gör den lämplig för både nybörjare och mellanliggande robot designers.Den första fasen omfattar användningen av arduino nano ombord endast som registeransvarige. Med detta ska vi bygga en r...