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