Monday, February 17, 2014

Embedded Systems Lesson 2


Date: 13/2 2014
Duration of activity: 3 timer 
Group members participating: 
Henrik Jørgensen
Michael Schiønning 
William Thorsen 

Mål 


Målet med første øvelsesgang er at samle LEGO-robotten, få basal kendskab til leJOS og gennemføre denne uges opgaver. 


Plan


Planen for denne uge er: 

  • 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 

30cm50cm100cm150cm200cm
Ting3050100150200
Væg3049100146193
Bog3048101145255
Plastic3051102160255

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æg3049100149191
Bog3048100148195
Plastic3053255255255

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