Opwaartse Up - Robot Balancing Revisited (5 / 6 stap)

Stap 5: Evenwicht optimalisatie


En nu we bij het interessante deel komen-het verbeteren van de robot is het balanceren van prestaties. Ik had bepaalde ideeën over waar te beginnen op zoek, maar zoals bij elk systeem, is het moeilijk om te weten wat de variabelen Kruis afhankelijkheden zijn. Dus in plaats van te krijgen ook analytische, sprong ik.

Controle lus tijdsinterval

Ik begon door het variëren van de tijdsinterval waartegen de tegenrekening PID werd geëvalueerd. Ik heb de standaardperiode voor de Arduino 101 PWM op 2mS gemeten, en mijn vorige project had een waarde van 20 MS gebruikt, dus ik begon bij 5mS en het interval verdubbeld tot de robot niet kon evenwicht. Bij 5mS, de robot was in staat om evenwicht te brengen, maar het leek te zijn overdreven actief, en schommelde met een periode van ongeveer 120mS. Op 10mS, het was weer in staat om evenwicht te brengen, maar de oscillaties vertraagd tot 280mS. Bij 20mS, periode terug tot ongeveer 180mS de oscillerende geplukt, maar in plaats van actieve, leek het antwoord traag. Op 40mS het antwoord werd zelfs meer traag, de grillige balancing en de robot kon niet altijd om te verblijven evenwichtig. Mijn conclusie was dat terwijl het PID evaluatie interval zeker invloed op het gedrag van de robot uitoefenen kan, en inderdaad moest worden boven bepaalde minimale snelheid om het evenwicht te kunnen, was het niet het wondermiddel. Voor de rest van mijn testen heb ik gebruikt een 5mS controle lus interval.

Sensor fusion filter

Daarna verhuisde ik naar de sensor fusion filter. Waarom hebben we een filter fusion anyway? Die vraag te beantwoorden, moeten we onderzoeken het hart van een balancing systeem, de IMU (Inertial Measurement Unit). Een IMU bestaat uit twee soorten sensoren – een gyroscoop en een versnellingsmeter. De gyroscoop meet de hoekige snelheid van verandering of hoeksnelheid. Theoretisch kan een goede schatting van hoekige positie worden gegenereerd door de integratie van de output van de gyroscoop. Helaas, gyroscoop sensoren hebben een effect genaamd drift – dat zij sommige kleine hoeksnelheid zal registreren zelfs als dood stil. Dus als u uw geschatte hoek alleen door de integratie van de gyroscoop output genereert, zou u een fout die zou blijven groeien na verloop van tijd-een probleem dat maakt een gyroscoop enige oplossing onhoudbaar voor het balanceren. Voer de versnellingsmeter. De waarde die is gerapporteerd door de versnellingsmeter houdt de invloed van de zwaartekracht, die constant is, evenals alle andere versnelling, die zal variëren op basis van beweging van het apparaat. Voor de IMU is de zwaartekracht vector die wij zijn geïnteresseerd in. Het idee van een fusie-filter is het genereren van een geschatte hoek door het combineren van deze twee sensoren. Het gunsten de gyroscoop ogenblikkelijk uitgang (doorgegeven door middel van een high-pass filter) maar de output van de versnellingsmeter op de lange termijn door het meten van gravitationele richting aarde (doorgegeven via een low-pass filter) als u wilt verwijderen van elke drift.

OK, dus we een fusion-filter, maar welke moeten? Zeer complete en complexe oplossingen bestaan. De Kalman-filter is een van de meer prominente fusion filters, maar zelfs een ingenieursdiploma kan niet volledig inrichten met u om te begrijpen wat er in de zwarte doos. Voor dit project heb ik een soortgelijke, maar minder computationeel veeleisende oplossing, de Madgwick-filter gebruikt. Ik gebruikte dit filter voor een van de belangrijkste redenen – het kwam gebundeld met de 101 Arduino! Maar de configuratie van de IMU onderdeinbijlage evenwicht – slechts één graad van vrijheid, leidt tot beperkingen waarmee wij een meer eenvoudige oplossing, de aanvullende filter gebruiken. De aanvullende filter krijgt zijn naam omdat de vermenigvuldigend factoren voor elke term tot er 1 bij optellen. Een blokdiagram van een aanvullende filter is afgebeeld in figuur 1.

Er zijn een aantal zeer goede behandelingen op het web voor de details achter het aanvullende filter, zo boven, dat ik heb net de resulterende filter vergelijking bieden. In de vergelijking is A een constante die de kenmerken van het filter bepaalt. Bovendien moet worden opgemerkt dat in de versnellingsmeter hoek berekeningen, wij zitten taking voordeel van kleine hoek onderlinge aanpassing-een realisatie die voor hoeken minder dan ~ 30̊, sin(θ) ≈ θ in radialen. Voor onze robot, als de hoek 30̊ benadert, 's it gonna omvallen, zodat de veronderstelling lijkt geldig. Daardoor kunnen we de sin(θ) in deze berekening met weinig invloed overslaan. De tijdconstante voor het aanvullende filter is ten slotte ook hierboven weergegeven.

Ik testte zowel de Madgwick als een aanvullende filter om te zien hoe het beïnvloed de afweging van de robot. De voorraad Madgwick filteren als geïnstalleerd had de Beta ingesteld op 0,1, met een #define-instructie in het headerbestand MadgwickAHRS.h. De robot zou niet sluitend met die instelling-het antwoord was een beetje te traag. Na het spelen rond, vond ik dat een instelling van 0,01 ingeschakeld het beste evenwicht, al er een compromis in absolute hoek nauwkeurigheid met die instelling was. Als u de robot in een hoek voor een moment gehouden, 20̊ zeggen, en keerde het terug naar de rechtop, was er een vertraging in de geschatte hoek terug te keren naar 0̊.

Voor de aanvullende filter, gebruikte ik A = 0,98, waardoor een tijdconstante van ongeveer 0,25 seconden, met dt ingesteld op 5 milliseconden. Ik vond de resultaten vergelijkbaar met het Madgwick-filter, en beter dan mijn eerste project, maar nog steeds geen rock solid balanceren. Dus bleef het zoeken.

Het gebruik van positionele feedback (encoders)

De DC reductiemotoren die ik heb geselecteerd voor deze robot opgenomen encoders feedback wilt geven over de beweging van de armatuur van de motor. De encoders zijn op de motoras steken voordat de gearing optreedt, zodat ze een vrij hoge resolutie op beweging leveren - met de overbrengingsverhouding en diameter wielen gebruikt, ik vastbesloten dat de overgang van elke encoder vertaald naar ~0.04cm. Afstand en snelheid waren dan vrij eenvoudig te ontlenen, door encoder overgangen over een regelmatige tijdsinterval, tellen en vervolgens het resultaat vermenigvuldigen door 0.04 om afstand te krijgen, en delen van die afstand door het tijdsinterval (20mS in mijn geval) om snelheid te krijgen.

Ik ben van plan mijn volgende project ter bestrijding van vollediger de navigatiemogelijkheden van de robot, dus ik zal niet ingaan op veel detail hier, maar twee methoden werden gebruikt om de controle van de snelheid van de robot-instellen van de hoek van het doel en de directe toevoeging op de motor PWM-waarden. Het toevoegen van toerentalregeling heeft verwijderd de robot "zwerven" maar geen aanzienlijke verbetering balancing. Aan de lus van de controle.

Controle lus variabelen en structuur

De belangrijkste control lus voor de balancing robot is gebaseerd op twee elementen-de fusion-filter om te bepalen van de geschatte hoek van de robot en een PID-regelaar met de geschatte hoek te genereren van de motor controle-signaal. Het idee achter een PID-regelaar is om de fout van een controle-signaal tegen een instelpunt berekenen en vervolgens de som van de proportionele, integraal en afgeleide vormen van die fout nadat zij hebben elk zijn vermenigvuldigd met aparte-constanten zijn. De PID-regelaar die zeer veelzijdig is als een bedieningselement, met toegang tot waar de fout is geweest (I), waar het nu is (P) en waar het wordt geleid (D). Maar wees gewaarschuwd - het is een zeer uitdagende taak voor het optimaliseren van de multipliers voor de P, I en D voorwaarden. Figuur 2 is een blokdiagram tonen de basisverbinding op het gebied van structuur en controle, en weerspiegelt de initiële configuratie van deze robot.

Bij nader inzien ziet u dat de PID controller D termijn is het nemen van de afgeleide van de geschatte hoek, wat in een geraamde hoekige tarief van verandering resulteert. Als u zich herinnert, leverde de gyroscoop slechts, een hoekige tarief van verandering, maar dat is veel nauwkeuriger. Dit leidt tot een vraag me af hoe de controle lus zou gedragen als de gyroscoop uitvoer rechtstreeks werden gebruikt, in plaats van hoekig tarief van de geschatte hoek opnieuw te berekenen.

Na het voederen van de gyroscoop rechtstreeks in de D-term van de PID, was de wijziging in evenwicht brengen van de prestaties dramatisch. Figuur 3 geeft een glimp op waarom-het toont de output van de gyroscoop naast de term D van de PID. Het hoekige mutatietempo van afgeleid van de geschatte hoek loopt de gyroscoop uitvoer door over de 150mS, een vertraging die helpt verklaren een aantal het wiebelen in de afweging van de originele configuratie, en je vraagt je af hoe het helemaal evenwichtig.

Figuur 4 toont de definitieve configuratie, met de gyroscoop gevoed rechtstreeks in de D-term van de PID-regelaar. Terwijl alle gebieden onderzocht had enige invloed op het evenwicht van prestaties, verstrekt het verstrekken van een opgave van de timelier en hogere betrouwbaarheid van hoekige van de gyroscoop de verandering in de prestaties van de robot die ik zocht.

Gerelateerde Artikelen

Hoe het bouwen van een Robot - The BeetleBot v2 (Revisited)

Hoe het bouwen van een Robot - The BeetleBot v2 (Revisited)

dit is de kever robot instructables revisited a la MythBusters stijl!Oorspronkelijk maakte ik een instructables over mijn kever robot versie 1.Het is nu tijd om u te tonen een nieuwe versie van deze prachtige robot. Deze nieuwe versie is veel gemakke
B-robot EVO. De self balancing robot

B-robot EVO. De self balancing robot

Hoe werkt het?B-ROBOT is een op afstand bestuurbaar self balancing arduino robot gemaakt met 3D gedrukte delen. Met slechts twee wielen vermag B-ROBOT haar evenwicht hele tijd door met behulp van zijn interne sensoren en rijden de motoren. Kunt u uw
Borstelloze Gimbal Balancing Robot

Borstelloze Gimbal Balancing Robot

Het volgende project is een gevolg van het bekijken van de video Cubli en steeds geïnteresseerd zijn in de controle van unstable evenwicht met Borstelloze motoren. De eenvoudigere omgekeerde slinger probleem werd besloten om het project te voltooien
2-wiel Self Balancing Robot met behulp van de Arduino en MPU6050

2-wiel Self Balancing Robot met behulp van de Arduino en MPU6050

2-wiel Self Balancing Robot met behulp van de Arduino en MPU6050.Arduino als de controller en de sensor MPU6050 gebruiken om te bepalen van het evenwicht. Gewoon een eenvoudige seriële Bluetooth module toevoegen en een Bluetooth seriële Controller AP
Het gebruik van een Android toestel en Lego NXT een tweewielige Self-Balancing Robot te bouwen

Het gebruik van een Android toestel en Lego NXT een tweewielige Self-Balancing Robot te bouwen

Vandaag zal ik u leren hoe maak je een Android aangedreven en gecontroleerde tweewielige zelfbalancerende robot met Lego NXT.Ten eerste, laten we eens kijken een test video voor de laatste robot.Hier is een andere tests op de helling:Om te bouwen van
Hoe maak je een bal Balancing Robot

Hoe maak je een bal Balancing Robot

vorig jaar, ik heb deze bal balancing robot. Het kan door het systeem van het saldo van zichzelf op een bal stabiel staan.Er is slechts één verbinding punt tussen de robot en de grond, dus het is flexibeler dan de traditionele wielen robot. Het kunt
Een eenvoudig en zeer gemakkelijk omgekeerde slinger Balancing Robot

Een eenvoudig en zeer gemakkelijk omgekeerde slinger Balancing Robot

Laten we een eenvoudig omgekeerde balancing robot, en werken het.U moet alleen een halve dag doen, hebt u een arduino en sommige materialen.[een video van een robot die u zou maken]Inleiding:Na een paar met arduino werken, heb ik gedacht van het make
Arduino Self Balancing Robot

Arduino Self Balancing Robot

In dit project die zal ik beschrijven de bouw van robots in evenwicht met Arduino.We staan uitgelegd in onze vorige versie van het android gecontroleerde project. In dit project gaan we tot onze controle. Laten we laten we krijgen op onze bouwproject
Chappie-zelftest-Balancing robot

Chappie-zelftest-Balancing robot

Na het krijgen van zo veel gefrustreerd over het afstemmen van de PID van de quadcopter, heb ik besloten om eerst meester van PID op sommige basisproject en dit project. Zelfbalancerende robot lijkt een inactief keuze. Aangezien er geen nieuwe en nog
Balancing Instructable Robot

Balancing Instructable Robot

Ik wilde in dit Instructable tonen u hoe u een self balancing robot. Wat het uniek maakt is dat de buitenkant is gemaakt te lijken op de Instructables Robot. Intern het werkt in het beginsel van PID, het is een zeer populaire controlesysteem voor het
Rollbars voor Self Balancing Robot en op trappen

Rollbars voor Self Balancing Robot en op trappen

Toegevoegd sommige rollbars maakte van badminton rackets naar mijn eenvoudige self balancing robot die vrij een beetje omvalt. Nu kunt ten minste het terughalen omhoog het grootste deel van de tijd.Het spijt me dat ik ben niet het creëren van een ech
SainSmart InstaBots rechtop Rover (Self Balancing Robot met Arduino)

SainSmart InstaBots rechtop Rover (Self Balancing Robot met Arduino)

Rechtop Rover is een zelfbalancerende robot die werd ontworpen door SainSmart. Ze maakten het echt eenvoudig. Zoals u zien kunt, zijn er slechts 8 draden op de robot en 8 draden op de controller. Dus laten we het weten hoe het werkt!ONDERDELEN IN HET
R/C Auto Balancing Robot

R/C Auto Balancing Robot

Hallo! Dit is Kaeru geen Ojisan.Veel robots van het evenwicht (zelfs met open-source code) vinden we in de website.Vervolgens heb ik geprobeerd om te vinden een balancing robot op basis van een werkelijke auto of een commercieel verkocht R/C auto zoa
Domo Kun WobblyBot, eenvoudige Self Balancing Robot

Domo Kun WobblyBot, eenvoudige Self Balancing Robot

Een self balancing robot van de twee wielen die wiebelt, vandaar de naam WobblyBot.Misschien wel de eenvoudigste ontwerp voor een robot die zelf (soort van) op twee wielen, zonder het gebruik van de gyroscoop, versnellingsmeter en microcontroller eve