Date: 13/2 2014
- Påmontere robottens ultrasoniske sensor
- Udarbejde ugens øvelser.
- Påbegynd blogindlægget for denne uge
Resultat af øvelser
Til de første to opgaver skulle vi placere vores robot foran en række objekter ved forskellige afstande og til sidst sammenligne afstanden med de læsningen sensoren gav. På billedet nedenfor ses de objekter vi har brugt til at udføre målingerne med:
Opgave 1
Denne tabel viser de målede resultater som er kommet frem ved hjælp af det udleverede SonicSensorTest.java program. Det har en måleinterval på 300 ms
| 30cm | 50cm | 100cm | 150cm | 200cm | |
| Ting | 30 | 50 | 100 | 150 | 200 |
| Væg | 30 | 49 | 100 | 146 | 193 |
| Bog | 30 | 48 | 101 | 145 | 255 |
| Plastic | 30 | 51 | 102 | 160 | 255 |
Sensoren kan måle en stor afstand afhængigt af hvad genstand der bliver brugt og sandsynligt også komme på de max 255 cm, dette kan skyldes at genstandene har forskelling størrelse. En anden mulighed er at visse objekter måske absorbere noget af lyden inden den kastes tilbage ulig hårde overflader som f.eks. en mur.
Opgave 2
I denne opgave har vi så vidt som muligt genskabt forholdene fra opgave 1, så vi kan få den bedste sammenligning. Vi satte vores målingsinterval ned på 10 ms istedet for 300 ms for at se en forskel
| 10 msec | |||||
| ting | |||||
| Væg | 30 | 49 | 100 | 149 | 191 |
| Bog | 30 | 48 | 100 | 148 | 195 |
| Plastic | 30 | 53 | 255 | 255 | 255 |
Plastik beholderen gav langt dårligere resultater end i første målling, men derimod så blev resultatet med bogen langt bedre. Altså må nedsættelsen af måleintervallet gøre det lettere for sensoren at kunne registrere objekter langt væk.
Opgave 3
Vi prøvede for så vidt muligt at få den længst mulige målling ved at stå foran en væg. Det bedste vi kunne få var 227cm ud af de 255 potentielt mulige. 255 er måske muligt ved at holde sensoren på en bestemt måde eller måle på et specifikt objekt.
Vi har en maximal måleafstand på 255cm hvilket betyder sensoren skal sende et ekko 255cm frem og så skal ekkoet 255 cm tilbage, med lysets hastighed på 340.29 m/sek så giver det (2.55*2)/340.29 = 14.987 ms.
Opgave 4
Den strøm der leveres til motorne bestemmes af en proportional relation til en målt afvigelse (error). Afvigelsen er givet ved forskellen imellem den målte og den ønskede afstand til et objekt.
error = distance - desiredDistance;
Altså vil en større afvigelse resultere i større kraft leveret til motorne, dette er altså en proportional control. Kraften kan som udgangspunkt variere i et interval [60; 100] hvilket resulterede i oscillerende adfærd når error nærmede sig nul. Reduktion af denne adfærd opnåede vi igennem en mindre aggresiv tildeling af kraft til motorne. Ved at sænke gain eller minPower bevæger robotten sig langsommere og dennes forsøg på at reducere en afvigelse har da mindre mulighed for faktisk at overskyde error = 0 og dermed resultere i en øget afvigelse.
Opgave 5
Efter at have kørt det udgivne Tracker.java og set den occilere skulle vi se om
vi kunne få den til at stå stille, ved at bruge den udgivne pseudokode for en PID controller
previous_error = 0
integral = 0
start:
error = setpoint - measured_value
integral = integral + error*dt
derivative = (error - previous_error)/dt
output = Kp*error + Ki*integral + Kd*derivative
previous_error = error
wait(dt)
goto start
Ved at sætte kp = 0.5f; ki = 0.0f; kd = 0.1f vil robotten stadig occilere lidt, dog ved at sætte power til 50 stod robotten helt stille.
Opgave 6
For at løse opgaven skulle vi oversætte Philippe Hurbains wallfollower program til Java. Linket til et klip af robotten i aktion samt selve koden til wallfollower programmet kan findes nederst på siden. Vi nåede dog ikke at sammenligne NQC-algoritmen med de alternativer i Fred G. Martins tekst.
Konklusion
Vi har efter i dag lært, hvordan den ultrasoniske sensor fungerer ved at udsende en kort høj-frekvens lyd og opfange ekkoet. Ud fra dette kan sensoren måle afstanden til diverse objekter. Ydermere har vi lært at den fysiske verden, her de målte objekter og hvilket materiale de består af, kan have stor indflydelse på sensorens måling. I visse tilfælde kan det endda give os forkerte resultater.
Referencer
Fred G. Martin, Robotic Explorations: A Hands-on Introduction to Engineering, Prentice Hall, 2001
Øvelserne, SonicSensorTest.java og Tracker.java er hentet fra kursussiden:
http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson1.dir/Lesson.html
Link til google drive med vores WallFollower.java fil:
https://docs.google.com/file/d/0B22Duz_kNMvWa0lwaDM3clV2Zk0/edit
Link til youtube klip med WallFollower.java i aktion:
http://www.youtube.com/watch?v=d6b3xoQLZXU
Link til bloggen:
http://eswihemi.blogspot.dk/
No comments :
Post a Comment