Själv balansera Robot (2 / 7 steg)
Steg 2: Phisics
Fysik för denna robot är enkla, robot stativet i två punkter fodrad, hjulet, och jag tenderar att falla och förlora sin vertikalitet, förflyttning av hjulet i riktning mot den fallande stiger roboten för återvinna den vertikala positionen.
En Segway-skrivar medlet är en klassisk inverterad pendel kontroll problem som är lösbara i två grader av frihet för de enklaste modellerna. Fordonet försöker korrigera för en inducerad lean vinkel genom att flytta framåt eller bakåt, och målet är att återställa sig till vertikal. Eller åtminstone inte falla över.
För detta mål har vi två saker att göra, vi måste mäta lutningsvinkeln (rulle) som har fordonet i ena handen och i andra hand har vi att kontrollera motorerna för att gå framåt eller bakåt till göra den vinkeln 0, upprätthålla hans vertikalitet.
Vinkel mätning:
För mäter vinkeln vi har två sensorer, accelerometer och gyroskop, har båda sina fördelar och nackdelar. Accelerometern kan mäta styrkan av gravitationen, och med den informationen kan vi få vinkeln på roboten, problemet med accelerometern är att det också kan mäta resten av krafterna som fordonet är someted, så det har massa fel och buller. Gyroskopet mäta vinkelformig hastighet, så om vi integrera denna åtgärd kan vi få vinkeln roboten flyttas, problemet med denna åtgärd är det inte är perfekt och integration har en avvikelse, som innebär i kort då åtgärden är så bra, men för lång tid benämner vinkel kommer att avvika mycket bilda verkliga vinkeln.
Dessa problem kan lösas vara kombinationen av både sensorer, det kallas sensor fusion, och det finns många metoder att kombinera den. I detta projekt jag prova två av dem: Kalmanfilter och kompletterande filter.
- Kalmanfilter är en algoritm mycket utvidgats i robotteknik, och erbjuder ett bra resultat med låg computational. Det finns ett bibliotek för arduino som implementerar denna metod, men om du vill veta mer om denna metod eller genomföra det själv titta på den här sidan.
- Kompletterande filtret är en kombination av två eller flera filter som kombinerar information från olika källor och får det bästa värdet du vill. Man kan genomföra i bara en kodrad. För mer information besök denna sida.
vinkel = A * (vinkel + gyro * dt) + (1 - A) * accel;
där A är normalt motsvarar 0,98.
Första jag försökte använda Kalmanfilter men jag få inte bra resultat, min vinkel beräknades med en liten fördröjning och det påverkar kontrollen. Kalman-filter har tre variabler kan du ändra baserat på parametern i sensorn, och varierande här du kan få bättre resultat, jag försökt till ändra de värdena, men jag förstår inte bättre resultat så jag bestämde mig att genomföra kompletterande filtret, så mycket lättare och det har mindre computational kostnad. Kompletterande filtret fungerar bra för mig.