torsdag den 11. oktober 2007

NXT Programmering, Lesson 6

Varighed: 3-timer, Deltagere: Janus, Mads og Rolf

Målet for dagens øvelser bliver at lave en selvbalancerende robot, ud fra eksemplet givet i Brian Bagnall's bog.

Bygningen af robotten

Vi brugte byggevejledningen i det udleverete kapittel fra Brian Bagnall's bog, og det tog ikke lang tid at bygge modellen.

Første test af programmet

Vi tog programmet fra kapitel 11 (Sejway), og skrev det ind i eclipse og uploadede det til nxt'en. Derefter afprøvede vi programmet som det var for at få en ide om hvor godt det var. Så prøvede vi at pille lidt ved KP, KD, KI og SCALE for at se hvilken effekt de forskellige variabler har.

Efter de indledende tests kom vi frem til at de værdier der er får KÅ, KD og KI ikke passer i vores tilfælde.

Rekalibrering og ombygning

Vores første tests gav os en ide om at robottens tyngdepunkt ligger for lavt. (Alle der har balanceret med en pind på deres finger ved at det bliver nemmere jo længere pinden er, da man har længere tid at reagere i). Derfor byggede vi robotten lidt om så motorerne sidder længere nede på nxt'en, som resulterer i at den blev hævet med ca 5cm.

Herefter blev programmet bygget om så pilene på nxt'en kan bruges til hendholdsvis at skifte mellem de 3 variabler KP, KD og KI, og så hæve værdien af den valgte variabel med 2. Dette gør os istand til at starte alle variablerne på 0, og så justere KP opad lidt ad gangen indtil den "føles rigtig", herefter skiftes til næste variabel, og igen justeres op. Dette fortsættes indtil man har tunet alle 3 variabler.

Efter meget justering og testning blev det konstateret at "gode" værdier for KP, KD og KI kun er en del af faktorerne. Desværre var sollys en meget stor faktor, som når lyset ændrer sig giver meget store udslag. Altså hvis robotten står og balancerer nogenlunde, og lyset ændrer sig, tror robotten at den er ved at vælte da værdien fra lyssensoren ændrer sig. Hvilket selvfølgelig resulterer i at den vælter.

Midt under øvelsestimen var strømmen på vores alkaline batterier kommet temmeligt langt ned (Vores genopladelige batteri var til opladning). Derfor skiftede vi til det nu opladede batteri, og igen måtte vi rekalibrere værdierne for KP, KD og KI da nxt'en nu opførte sig helt anderledes.

Konklusion

Vi kom frem til at PID controlleren virkede nogenlunde til at holde SejWay oprejst, men at lysforholdene i det rum man tester i er en enorm fejlkilde. Hvis lyset ændrer sig efter den er kalibreret virker det ikke mere. Derfor ville det til en anden gang være godt med et lukket rum med en stor ensartet overflade til at teste på. (Teksturer i borde/gulve har også stor betydning for balancen).

Robotten kom aldrig til at balancere mere end 10-20sec af gangen, og det var kun under "gode" lysforhold. Alligevel har vi lært meget omkring PID control af robotten, og kalibrering af de variabler der bruges til dette. Vi har også fået et indblik i hvor stor rolle dit environment kan have på din model, fx Lys og flerfarvede overflader.

Her følger 2 videoer af vores nxt i aktion :)



/+MJR

Ingen kommentarer: