Week 3
Dato:
14-02-2013Varighed:
Fælles lab: 5 timerBlog: 4 timer
Deltagere:
Martin
Nikolaj
Steffen
Status
Mål
Målet for denne øvelsesgang er at lave opgaverne for "Week 3 - Sensing and Sensors - Analog|Digital conversion"1 og derigennem forstå hvordan sensorerne i Lego Mindstorms virker. Endvidere er det et mål at få leJOS installeret på de resterende maskiner, så alle gruppens computere kan kommunikere med robotten. Desuden skal der oprettes et blogindlæg med henblik på denne laboratoriesession, hvor vi skal huske på den feedback, vi fik fra forrige uge (Week 2).Plan
- Afslutning af installation af leJOS.
- Løse opgaverne for "Week 3 - Sensing and Sensors - Analog|Digital conversion"1 .
- Udarbejdelse af blogindlæg for "Week 3 - Sensing and Sensors - Analog|Digital conversion"1 .
Afslutning af installation af leJOS
OS X
Efter at have fulgt tutorialen "Getting Started on OS X"2 uden succes blev tutorialen, der beskriver, hvordan man installerer og kører leJOS via et plugin i Eclipse3 , fulgt. Installationen af pluginet var simpel, men da der skulle kompileres et Java-program for at teste, at der kunne uploades til robotten, opstod fejlen "This Java instance does not support a 32-bit JVM.". Efter at have søgt på internettet var det første bud på en løsning af dette problem at tjekke om alle filerne i bin mappen af leJOS havde fået tilføjet switchen -d32, der sikrer at Java-filerne bliver kompileret med 32-bit versionen af Java på OS X. Dette var dog implementeret som standard i den nyeste version af leJOS. Løsningen på problemet var derimod at hente 32-bit versionen af Eclipse i stedet for 64-bit versionen, der allerede var installeret på computeren i forbindelse nogle tidligere projekter. Java-programmet kunne derefter kompileres og uploades til robotten via USB. LeJOS kører derfor nu også fint på OS X.
Da leJOS var kommet op at køre i Eclipse, og man kunne overføre programmerne til robotten via USB, blev det forsøgt at få det til at virke med den indbyggede Bluetooth i MacBooken. Det lykkedes at finde og forbinde til robotten via "Bluetooth" i systemindstillinger, men da det blev afprøvet i Eclispe kunne den her ikke finde robotten. Status er derfor at overførsel af programmer til robotten fungerer med USB, men ikke med Bluetooth på computeren, der kører OS X.
Windows 8
Skiftet fra Ubuntu til Windows skete, da understøttelsen af leJOS til Linux er dårlig. Dette kombineret med at installationen ikke ligefrem var "mint" bidrog til, at det ikke længere kunne betale sig at bruge flere timer på de problemer, der var med at få leJOS til at virke i Linux. Følgende trin blev derfor foretaget:
- Hent Windows 8 Pro N fra Dreamspark (bemærk at man kun kan hente fra Windows-maskiner).
- Installer Windows 8. (ca. 30 min)
- Installer Java.
- Installer leJOS via guiden4. (ingen problemer/advarsler undervejs)
- Installer leJOS igen - første gang virkede kommunikationen imellem robotten og Eclipse ikke.
Efter disse 5 trin virkede alt på nær det indbyggede bluetooth-kort. Dette kort tog længere tid at få til at virke end resten af installationen. Windows kunne nemlig ikke finde ud af at tænde for kortet uden driveren, som ikke kunne installeres uden at kortet var tændt. Dette blev dog løst på følgende måde:
- Installer Window 7 driveren i kompatibilitet mode.
- Aktiver kortet.
- Installer Windows 8 driveren.
Status for denne maskine er nu, at leJOS er installeret, samt at det fungerer med overførsel via Bluetooth.
Opgaver
Til opgave 1 og 2 skulle vi placere robotten foran forskellige objekter i forskellige afstande og sammenligne afstanden med læsningerne fra sensoren. Vi har lavet afstandsmålinger på en skraldespand, affaldsposen i skraldespanden og en mur.
1. På billedet nedenunder ses skraldespanden og affaldsposen, som vi har foretaget afstandsmålinger på. Da vi lavede målingerne på skraldespanden, havde vi trukket posen helt væk, og da vi lavede målingerne på affaldsposen, havde vi trukket den ned, så den dækkede hele siden.
1. På billedet nedenunder ses skraldespanden og affaldsposen, som vi har foretaget afstandsmålinger på. Da vi lavede målingerne på skraldespanden, havde vi trukket posen helt væk, og da vi lavede målingerne på affaldsposen, havde vi trukket den ned, så den dækkede hele siden.
Opgave 1
Nedenstående skema viser målingerne med det udleverede program SonicSensorTest.java5 i version alfa_03. Dvs. med prøveinterval på 300 msek.
Genstand
|
45 cm.
|
75 cm.
|
105 cm.
|
135 cm.
|
165 cm.
|
195 cm.
|
225 cm.
|
Max
|
Skraldespand
|
45
|
75
|
106
|
138
|
255
|
255
|
255
|
150
|
Mur
|
45
|
76
|
107
|
138
|
168
|
199
|
232
|
255
|
Affaldspose
|
40
|
72
|
255
|
255
|
255
|
255
|
255
|
78
|
Ud fra de målinger vi har foretaget, er vores konklusion, at den maksimale afstand det er muligt at registrere en genstand fra med UltraSonic sensor er afhængig af den genstand, der skal registreres. Vi ved ikke helt præcist, hvorfor der er forskel på genstandene, men vi har overvejet, at det f.eks. kunne være at nogle genstande absorberer mere lyd end andre.
Opgave 2
I denne opgave har vi forsøgt at gøre miljøet så ens som muligt i forhold til, hvordan det var, da målingerne til opgave 1 blev foretaget, men denne gang med et prøveinterval på 10 msek. Nedenstående skema viser resultatet af målingerne.
Genstand
|
45 cm.
|
75 cm.
|
105 cm.
|
135 cm.
|
165 cm.
|
195 cm.
|
225 cm.
|
Max
|
Skraldespand 10 m/sek
|
45
|
76
|
107
|
140
|
169
|
198
|
228
|
255
|
Mur 10 m/sek
|
45
|
76
|
106
|
138
|
168
|
199
|
255
|
208
|
Affaldspose 10/msek
|
45
|
76
|
103
|
137
|
255
|
255
|
255
|
154
|
Det kortere prøveinterval i opgave 2 i forhold til opgave 1 gør, at det er muligt for UltraSonic sensoren, at registrere genstande, som den på større afstande har haft problemer med .
Opgave 3
Den måde hvorpå vi har fået de bedste resultater med UltraSonic sensoren er ved at sætte prøveintervallet til 0 og måle med en mur som genstand. Betingelsen for et godt resultat er i dette tilfælde at have størst mulig afstand fra UltraSonic sensor og genstanden, vi måler på.
Vi har lavet en måling på 253 cm, og det er muligvis et spørgsmål om, at placere sensoren præcist nok for at få en måling på 254 cm.
Angående spørgsmålet om hvorvidt lydens hastighed har betydning for vores sensors brugbarhed:
Da den maksimale måleafstand er 2,55m hen til og tilbage fra et objekt, får vi at tiden fra vores sensor påbegynder at måle på virkeligheden, til vi har et resultat, har en nedre grænse på:
(2,55 m * 2) / 340,29 m pr sek = 14.987 msek
Denne nedre begrænsning er dog ikke speciel. Vi vil altid være nødt til at se på hvor hurtigt en given sensor er i stand til at give os et måleresultat ift. hvor hurtigt, vi forventer at få et billede af virkeligheden i vores programmer.
Derudover vil en mere typisk brug af sensoren (50 cm) give et mærkbart bedre resultat:
(0,5m * 2) / 340,29 m pr sek = 2.9387 msek
Dette delay er mærkbart bedre og langt mere typisk i de programmer, vi har arbejdet med hidtil.
Vi har lavet en måling på 253 cm, og det er muligvis et spørgsmål om, at placere sensoren præcist nok for at få en måling på 254 cm.
Angående spørgsmålet om hvorvidt lydens hastighed har betydning for vores sensors brugbarhed:
Da den maksimale måleafstand er 2,55m hen til og tilbage fra et objekt, får vi at tiden fra vores sensor påbegynder at måle på virkeligheden, til vi har et resultat, har en nedre grænse på:
(2,55 m * 2) / 340,29 m pr sek = 14.987 msek
Denne nedre begrænsning er dog ikke speciel. Vi vil altid være nødt til at se på hvor hurtigt en given sensor er i stand til at give os et måleresultat ift. hvor hurtigt, vi forventer at få et billede af virkeligheden i vores programmer.
Derudover vil en mere typisk brug af sensoren (50 cm) give et mærkbart bedre resultat:
(0,5m * 2) / 340,29 m pr sek = 2.9387 msek
Dette delay er mærkbart bedre og langt mere typisk i de programmer, vi har arbejdet med hidtil.
Opgave 4
For at lave denne opgave skulle vi først hente programmet Tracker.java6 og uploade det til robotten. Bilen som styres af programmet Tracker.java kører ind mod den nærmeste mur og står derefter på en distance af ca. 35 cm. fra muren og oscillerer frem og tilbage.
Fordi programmet foretager beregninger på målinger det har aflæst fra miljøet og derefter justerer sin adfærd i forhold til målingerne, er det en closed loop control.
Opgave 5
I denne opgave skal vi prøve at få robotten til at oscilere ved at justere på konstanterne i controlleren. Hvis vi indstiller trackeren med nedenstående værdier oscilerer robotten.velocity = 50, pGain = 1.5, dGain = 0.5
Vi er dog ikke sikker på, hvilken konklusion vi skal drage ud fra dette.
Vi har taget udgangspunkt i pseudokoden fra ugesedlen, der beskriver en generisk PID Controller og brugt denne til at lave ændringer i Java-filen Tracker.java7. Resultatet blev at robotten kørte hen til væggen, oscilerede kort og derefter stoppede. Vi har ikke eksperimenteret med så mange variabler, da det er tidskrævende at gætte på hvilke konstanter, der skal ændres på for vores robot, men vi ved at en PID-controller kan bruges til at få en blød opbremsning i stedet for oscilering.
Opgave 6
For at lave denne opgave startede vi med at oversætte dette wallfollower-program8, til Java. Det lykkedes os dog ikke at oversætte programmet helt rigtigt, da det var nødvendigt for os at bytte om på højre og venstre motor for at den fulgte muren i stedet for at følge de steder, hvor der ikke er noget. Desuden har vi justeret konstanterne9. Den kom til sidst til at følge en mur, men det blev aldrig særlig godt. En video af dette kan ses herunder:
Konklusion
Alle computerne kom til at fungere med leJOS, og vi fik udarbejdet en løsning til de fleste af ugens opgaver. Vi har lært hvordan Ultrasonic sensoren opdager objekter ved at udsende en kort høj-frekvens lyd og lytte for genlyde, samt hvordan vi kan bruge den til at måle afstand til objekter med vores robot. Undervejs i løsningen af opgaverne opdagede vi hvordan den fysiske virkelighed nogle gange registreres ukorrekt af en robots sensorer, hvilket kan have store konsekvenser, når man bruger close loop control - netop at man forsøger at korrigere for noget der ikke kræver korrektion. Typisk ved at køre ind i en væg.Endvidere har vi forsøgt at tage feedbacken af vores blogindlæg fra sidste uge til os, idet vi har lagt ekstra vægt på at overveje adskillelsen af plan og mål samt tilføjet de punkter, som vi manglede (status, dato, varighed og deltagere). Vi har også prøvet på at være mere specifikke i henvisningerne til de guides og applikationer, som vi har brugt.
____________________________________________________________________________________________________________
1. https://services.brics.dk/java/courseadmin/DigitalControl/pages/Week+3+-+Sensing+and+Sensors+-+Analog|Digital+conversion
2. http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/GettingStartedMac.htm
3. http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/UsingEclipse.htm
4. http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/GettingStartedWindows.htm
5. http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson2.dir/SonicSensorTest.java
6. http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson2.dir/Tracker.java
7. https://sites.google.com/site/digikaison/Tracker.java
8. http://www.philohome.com/wallfollower/wallfollower.nqc
9. https://sites.google.com/site/digikaison/WallFollower.java
10. Fred G. Martin, Robotic Explorations: A Hands-on Introduction to Engineering, Prentice Hall, 2001.


No comments:
Post a Comment