Date: 21/2 2014
Duration of activity: 9.15 - 13.15
Group members participating: Christian Hansen, Pætur Askildsen, Søren Gregersen
Goal: At gennemføre ugens opgaver [1].
Plan: Gå opgaverne sekventielt igennem.
Results: Vi har gennemført alle opgaverne.
Exercise 1 - Test of the Sound Sensor
First, you should mount the sensor on the LEGO 9797 car as described in in LEGO Mindstorms Education NXT Base Set 9797 building instruction page 24 to page 26. Second, program, compile and download a simple sound sensor test program similar to the ultrasonic sensor test program of Lesson 2, SonicSensorTest.java. Place the car at a fixed position and make sounds of different loudness and at different distances. Use this to give a description of the readings from the sound sensor.
Billede 1 - Hvor vi målte afstande fra på alle lydmålinger i denne rapport. Tommestokken er skubbet ind imod det lysegrå plast.
I starten lagde vi mærke til, at der er en baggrundsstøj hvor sensoren konstant måler mellem 1-2. Vejrtrækningning, tastaturklapren, og andre småting gav målinger på op til 5, når bilen stod på bordet mellem computere.
Almindelig “mandesnak” med en afstand på 70 cm giver værdier på 10-20. På 100 cm afstand kom værdierne kun op på 15.
Klap på en afstand af ca. 100 cm giver værdier på mellem 50-60.
50 cm
|
1,5 m
|
3 m
| |
Hvisken
|
Max 4
|
< Baggrundsstøj
|
< Baggrundsstøj
|
Snak
|
10-20
|
Max 20
|
Max 15
|
Råb
|
90
|
90
|
90
|
Klap
|
76-93
|
Max 67
|
Max 70
|
Når vi kommer ud på en afstand af 1,5-3 m opdagede vi, at værdierne som sensoren målte varierede meget selv med den samme lyd, eksempelvis samme klaprytme. Det virkede som om, at sensoren ikke altid opfangede lydene. Dette er fordi at vi ikke havde ændret sample rate fra SonicSensorTest programmet, så sample rate var 300 ms. Aflæsningerne fra lydsensoren lader til at være i %, 0-100, hvilket også kan ses af [2] under readValue: “Returns: value as a percentage.”
Exercise 2 - Data logger
As described in Lesson 2, a data logger, [1], is a mechanism that can be used to collect and record data from e.g. a sensor for later inspection. In the leJOS system a data logger can be implemented to collect data and record them in a flash file. An example of a simple data logger is DataLogger.java. By means of this data logger e.g. sound data can be collected and recorded in a file Sample.txt as shown in the data collection program SoundSampling.java. The data in the file can then be transfered to the PC by means of the tool nxjbrowse. The sampled data can then be used to plot a graph of the sound level data.
Vi opsamlede data om en fast klapperytme på 1 meters afstand til sensoren, hvor 1 m. er målt fra samme sted på sensoren som set på billede 1.
Dataen er plottet ind i en graf som kan ses herunder.
Exercise 3 - Sound Controlled Car
As a first application of the sound sensor try the program SoundCtrCar.java. The program uses a simple class Car.java to move the car forward, left, right, etc. Describe the behaviour of the car as you make sounds e.g. by shouting or clapping. Describe how the program interprets readings from the sound sensor as loud sounds.
Bilens opførsel består af 4 trin:
- Ved første høje lyd kører bilen ligeud: Car.forward(100, 100);
- Ved næste høje lyd drejer bilen til højre om sig selv: Car.forward(100, 0);
- Ved næste høje lyd drejer bilen til venstre om sig selv: Car.forward(0, 100);
- Ved næste høje lyd stopper bilen: Car.stop();
Efter trin 4 starter programmet fra trin 1 igen.
Programmet fortolker målinger fra lyssensoren som høje lyde når lydniveauet er over 90. Dette kan ses i koden:
hvor soundThreshold = 90;
Exercise 4 - ButtonListener
In the program SoundCtrCar.java the ESCAPE button is polled in the outermost loop so that the ESCAPE button can be used to stop the program. This does not work when the program loops in one of the four inner loops. You can make the ESCAPE button always work as a program terminator if you also poll the state of the button in the inner loops. But you can also use the ButtonListener mechanism to listen for the ESCAPE button and exit when ESCAPE is pressed. A simple example of a ButtonListener can be seen in the leJos tutorial, [3]. Try this in the program.
Ved at kigge på den leJos tutorial som er linket til i opgaven [3] fandt vi ud af, at implementere ButtonListeneren. Vi indsatte koden i det første whileloop, og indsatte funktionerne Car.stop(), LCD.clear(), LCDdrawString(), og System.exit() i metoden buttonPressed på ESCAPE button. Koden kan ses herunder:
Exercise 5 - Clap Controlled Car
Sivan Toledo, [2], has investigated how the sound sensor can be used to detect claps. Through an investigation of a sequence of sound sensor readings during a clap he suggest the following method to detect a clap:
A clap is a pattern that starts with a low-amplitude sample (say below 50), followed by a very-high amplitude sample (say above 85) within 25 milliseconds, and then returns back to low (below 50) within another 250 milliseconds.
Try to use his method to detect claps and compare it to the method used in the program SoundCtrCar.java. Use the DataLogger class to record and investigate clap patterns.
Vi har programmeret et klap som beskrevet i opgaven. Koden kan ses her. Vi valgte af tidsmæssige årsager ikke at undersøge vores egne clap patterns.
Exercise 6 - Party Finder Robot
Try to mount two sound sensors and use the readings from these sensors to always drive towards the location with loud sound.
Billede 2 - Opstilling af to lydsensorer påsat vores bil.
Vi målte ud for hver lydsensor på 20 cm med en konstant lyd, som kom fra et smartphone program, for at undersøge om de to mikrofoner opfører sig ens. Vi målte afstanden som det ses på billede 1. Vi fandt ud af at de målte det samme med en forskel på 1 af og til, og derfor besluttede vi os for ikke at lave yderligere kalibrering.
Vi satte et partyThreshold på 40: hvis ingen af mikrofonerne målte et lydniveau på over 40 kørte bilen ligeud. Men så snart en mikrofon målte et lydniveau på over 40 drejede bilen i den retning hvorfra lyden kom. Som koden nedenfor viser, så drejede bilen til højre, hvis den højre mikrofon målte et højere lydniveau end den venstre.
Conclusion:
Vi har gennemført øvelserne og derigennem opnået erfaring med NXT lydsensoren. Ydermere har vi stiftet bekendtskab med hvordan lyd kan styre en bil samt hvordan man kan reducere antallet af lyde som bilen reagerer på, i vores tilfælde et klap.
References:
[1] Opgaveformulering http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson3.dir/Lesson.html
Ingen kommentarer:
Send en kommentar