Goal:
Målet med dagens aktivitet er, at bygge og programmere en virkende segway-lignende robot. Gennem denne aktivitet ønsker vi at opnå større erfaring med PID-controllers.
Plan:
Indledningsvis konstruerer vi robotten og uploader eksempelprogrammet sejway, herefter tester vi robotten i dens standardkonfiguration. Andel del af dagens program består af eksperimenter med de forskellige parametre i programmet, samt med en eventuel auto-kalibrering af robotten. Ekeperimenterne benytter dataloggeren til dataindsamling.
Activities:
Eksperiment 1.
Med dette eksperiment ønsker vi at undersøge, hvilken betydning den initielle kalibrering af robotten har for dennes evne til at balancere og evt. finde den optimale værdi. Eksperimentet udføres ved, at starte robotten med forskellige kalibreringer og så bringe den i en nogenlunde balancerende position, hvorefter der observeres hvorvidt robotten falder frem- eller bagover og hvor kraftig denne tendens er.
Resultater:
587 - fremover, hurtigt
527 - fremover, langsom
512 - fremover, meget langsom, mange standsninger
509 - skiftende tendens, mange standsninger
506 - bagover, langsomt
504 - bagover, langsomt
487 - bagover, hurtigt
På trods af de meget grove målinger, mener vi dog at kunne konkludere, at vores optimale kalibrering, på det anvendte underlag, ligger mellem 506 og 512. Udover det fundne resultat, giver eksperimentet anledning til at undersøge hvorfor robotten pludseligt standser og hvorvidt dette sker sker mere eller mindre hyppigt under forskellige forhold.
Eksperiment 2.
For at undersøge hvorfor robotten pludseligt standser, tilføjede vi loggerkoden til programmet og starter robotten med en kalibrering på 512. Herefter tolkes dataen for at identificere eventuelle mønstre der standser robotten.
Eksperiment 3.
For at finde en kombination af parametrene KP, KI og KD der giver den optimale balanceevne, gennemførte vi eksperimenter der testede indstillinger af de tre parametre, det skete ved at lade en parameter være variabel og de to andre faste. Til formålet tilføjede vi kode til programmet, således vi kan aflæse et tal(F)der er proportional til antal svingninger frem og tilbage pr. millisekund. Testresultaterne ses nedenunder.
KP | 28 | 28 | 28 | 28 | 28 | 28 | 28 | 28 | 28 | 28 |
KI | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
KD | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
F() | 53 | 56 | 48 | 44 | 50 | 52 | 56 | 57 | 52 |
Generelt virkede robotten meget ustabil med ovenstående settings, dog muligvis lidt mere stabil jo højere værdien var. Vi mener derudover ikke at kunne bruge svingningsmålingen til noget, idet vi er nødt støtte robotten under udførslen, hvilket givetvis har indflydelse på denne måling. Med endnu større værdier af KI(20 og 40) kunne vi dog konstatere, at tendensen til at robotten stopper bliver meget mere udpræget.
KP | 28 | 28 | 28 | 28 | 28 | 28 | 28 | 28 | 28 | 28 |
KI | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
KD | 0 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 |
F() | 45 | 51 | 56 | 104 | 156 | 187 | 226 | 319 | 119 | 327 |
Med denne række målinger, mener vi at kunne se en tydelig forøgelse af svingningstallet. Dette giver udslag i meget mindre svingninger og hvis robotten anbringes i en fornuftig startstilling, kan den næsten balancere selv fra værdier omkring 25 og op, den bliver dog også mere og mere følsom overfor store udslag i målingerne.
KP | 0 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 |
KI | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
KD | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
F() | 310 | 49 | 41 | 49 | 51 | 55 | 56 | 53 | 56 | 56 |
Bortset fra den første måling, hvor KP er 0, giver de øgede værdier for KP anledning stil større svingninger, men til gengæld bliver den bedre til at modstå store udsving, ved f.eks. lettere skub, som med KD målingerne er robotten ved de høje værdier næsten i stand til at balancere selv.
Som forventet skal den optimale løsning findes som en kombination af de tre værdier.
Eksperiment 4.
Efter at have fået en ide om hvordan robotten opfører sig ved ændringer i parametrene, eksperimenterede vi her med at få tunet løsningen, så robotten selv kan balancere.
<-- Ved øvelsernes afslutning havde vi endnu ikke fundet en virkende løsning -->
Ingen kommentarer:
Send en kommentar