fredag den 10. oktober 2008

Week 6 - Race video

Legolab week 6,7

Vi lavede en bil med firhjulstræk og firhjulsdrej, som det kan ses i videoen.
Den bedste tid den kørte banen i var på 17 sekunder. I videoen ses et tidligere forsøg hvor den brugte 20 sekunder.

Vi startede med at gøre brug af Motor klassen, men ved nærmere gennemgang af lejos koden stod det klart, at der er alt for stort delay i klassen til, at den kan bruges i kode der skal reagere i realtime. Istedet valgte vi så at bruge MotorPort klassen, hvilket gjorde at bilen blev ca. 5 sekunder hurtigere. Ved yderligere at tweake vinklen bilen drejede og hvilke hastigheder den gjorde det med, hentede vi yderligere et par sekunder og endte således med at kunne køre banen i 17 sekunder.




Youtube version



torsdag den 2. oktober 2008

week 5

Uge 5 - Segway.

Forsøg:
vi byggede vore robot på forskellig vis, men det lykkedes ikke at få den til at balancere i mere end et par sekunder med Sejway.java programmet.
Vi forsøgte, at tweake parametrene SCALE, KP, KI og KD og basis motor-power, men det hjalp ikke meget. Dernæst fik vi mistanke om, at den måde det approximerede integrale blev udregnet, ikke var den bedste, integral_error = 2/3 * (integral_error+error).
Hvis man har hurtige cycles betyder det at integralet ikke har megen information om fortiden, hvilket ikke er i overensstemmelse med definitionen af integralet.

Vi satte derfor integral_error = integral_error+error. Antager man, at cyklus tiden har længde 1 så får man det approximerede integrale, der er defineret ved:
Oversummen når error er stigende.
Undersummen når error er faldenden. For inddelingen {1,2,...,n} af error funktionens domæne.

For at integral_error bliver lille, kræves det, at der har været samme mængde positiv og negativ fejl i kørselsperioden, det kan sagtens lade sig gøre hvis robotten bliver på samme position. Hvorom alt er, så lykkedes det ikke med denne konstruktion at få et brugbart resultat ud af programmet. Vi lavede grafer over tid, error, integral_error, derivative_error, power, retning og pid_value, men selv med denne information lykkedes det ikke at konstruere fornuftige konstanter til PID controlleren.

De bedste resultater fik vi ved at placere vægt højt oppe på robotten, for at opnå samme effekt som når man balancerer med et kosteskaft i håndfladen.

//JACK