Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
marvin:lab2 [2008/10/09 20:29] – rieper | marvin:lab2 [2008/10/09 20:50] – rieper |
---|
**Duration of activity:** 9-13\\ | **Duration of activity:** 9-13\\ |
**Participants:** Kasper, Johnny og Bent\\ | **Participants:** Kasper, Johnny og Bent\\ |
**Formål** I denne øvelse skal der laves en test af ultralydssensorens målepræcision ved forskellige afstande. Derefter skal der vha. af ultralydssensoren laves en wall-follower, hvilket vil sige at Marvin skal kunne køre langs en væg og holde en given afstand. | |
| **Formål:** I denne øvelse skal der laves en test af ultralydssensorens målepræcision ved forskellige afstande. Derefter skal der vha. af ultralydssensoren laves en wall-follower, hvilket vil sige at Marvin skal kunne køre langs en væg og holde en given afstand. |
| |
| |
| |
| |
Programmet ''SonicSensorTest.java'' uploades på NXT modulet. Under denne øvelse valgte vi iøvrigt at inddrage en praktikant fra folkeskolens 9. klasse, Gustav, og han bidrog bl.a. med at bygge robotten, der kan ses på billedet ovenfor. Det ses, at transduceren er monteret som et lille hovede på robotten. Metoden "getDistance" returnerer 255, hvis der ikke er noget ekko, dvs hvis der ikke registreres et objekt. Ellers returneres et tal mindre end 255, der angiver afstanden i cm. Vi laver nu et testscenarie med et målebånd, hvor vi vil teste om sensoren kan måle en afstand med en centimeters præcision.\\ | Programmet ''SonicSensorTest.java'' uploades på NXT modulet. Under denne øvelse valgte vi iøvrigt på opfordring at inddrage en praktikant, Gustav, fra folkeskolens 9. klasse, og han bidrog bl.a. med at bygge robotten, der kan ses på billedet ovenfor. Det ses, at transduceren er monteret som et lille hovede på robotten. Sensoren udsender en impuls og afventer et ekko, som den genkender formodentlig ved noget korrelation, og ud fra tidsforsinkelsen beregnes en afstand. Altså må sensoren indeholde en mikroprocessor af en art, hvilket vil sige at der foregår kommunikation mellem transuceres processor og cpu'en i NXT modulet. Kommunikationen er en simpel standard I2 kommunikationsforbindelse (også kaldt I-square). Metoden ''getDistance'' returnerer 255, hvis der ikke er noget ekko, dvs hvis der ikke registreres et objekt. Ellers returneres et tal mindre end 255, der angiver afstanden i cm. Vi laver nu et testscenarie med et målebånd, hvor vi vil teste om sensoren kan måle en afstand med en centimeters præcision.\\ |
| |
Test af funktionen getDistanceTest() og ultrasonic sensoren: | Test af funktionen ''getDistanceTest()'' og ultrasonic-sensoren: |
| |
| |
| 240 | 255 (Max ca. 230) | | | 240 | 255 (Max ca. 230) | |
| |
Betingelserne er, at hvis der skal måles 230cm, skal der være frit udsyn i en ca. 30 graders vinkel (slag på tasken). | Betingelserne er, at hvis der skal måles 230cm, skal der være frit udsyn i en ca. 30 graders vinkel (slag på tasken). Det var ikke muligt at måle 254 cm her, men man kunne evt have forsøgt med andre objekter. Her målte vi mod en jævn væg. |
| |
====Delopgave 2==== | |
The test program was compiled and uploaded with leJOS NXJ version alfa_03 as indicated in the comment to the program. Because of a known limitation of alfa_03 there is a 300 msec sample interval between readings of the distance. This limitation is no longer in the README list so try different values of the sample interval e.g. very small values. | |
What is the time limit for the measurement - remember the speed of sound is 340.29 m/sec ? Does this limit usage of the sensor ? | |
| |
Med 20ms sampling kan lyden nå at bevæge sig 6,8m inkl. ekko, hvilket vil sige 3,4m effektivt. Der er ikke taget højde for forsinkelse gennem A/D konverter I2C kommunikation. Blot konstateres, at 20ms sampling ikke er for hurtig i forhold til Max distancen. Som udgangspunkt er samplingstiden sat til 300ms. | |
| |
====Delopgave 3==== | |
Describe the behaviour of the car controlled by the program and try to change the different constants of the program. | |
| |
Marwin kører med en hastighed proportionel med afstanden til en fastsat grænse, dvs den bremser gradvist ned efterhånden som den nærmer sig sin grænseværdi. Når gain-variablen øges øges accelerationen/deaccelerationen, idet man får et større %OS (procentvis overshoot), og man observerer kraftigere oscillation omkring grænseværdien. Der observeres desuden hjulspænd - batteriforbruget lider! | ====Test af sample-tidsgrænsen==== |
| Det oplyses, at der pga en begrænsning er et 300ms sample-interval mellem aflæsning af afstanden. Denne oplysning stammer fra README-filen, men i den nye version er denne det udeladet, så det vil være interessant at teste om denne begrænsning stadig findes. Man kan jo beregne sig frem til om denne begrænsning overhovedet er rimelig.\\ |
| |
The power to the car motors is the controlled variable and the distance is the measured variable. What kind of control is it ? | Med 20ms sampling kan lyden nå at bevæge sig 6,8m inkl. ekko, hvilket vil sige 3,4m effektivt. Der er ikke taget højde for forsinkelse gennem A/D konverter I2C kommunikation. Blot konstateres, at 20ms sampling ikke er for hurtig i forhold til Max distancen. Som udgangspunkt er samplingstiden sat til 300ms. Det blev desværre ikke noteret, hvorvidt vi fik afprøvet at ændre sampleintervallet. |
| |
P controller, Proportional Gain i feedback loop. Her er fasemarginen afhængig af gainet, hvilket vil kunne afhjælpes med Lead/Lag controllere (PID) | ====Implementering af Wallfollower==== |
| Marwin kører med en hastighed proportionel med afstanden til en fastsat grænse, dvs den bremser gradvist ned efterhånden som den nærmer sig sin grænseværdi. Når gain-variablen øges, øges accelerationen/deaccelerationen, idet man får et større %OS (procentvis overshoot), og man observerer kraftigere oscillation omkring grænseværdien. Der observeres desuden hjulspænd - batteriforbruget lider. Programmet er implementeret med variabel, der kontrollerer effekten til motoren i forhold til den målte afstand, hvilket svarer til en proportional controller, Proportional Gain i feedback loop. Her er fasemarginen afhængig af gainet, hvilket vil kunne afhjælpes med Lead/Lag controllere (Integral/Differential-controllers) |
| |
| |