marvin:lab1
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
marvin:lab1 [2008/09/22 14:37] – deva | marvin:lab1 [2008/10/09 20:32] (current) – rieper | ||
---|---|---|---|
Line 4: | Line 4: | ||
**Participants: | **Participants: | ||
+ | **Formål: | ||
+ | |||
+ | Herunder ses nogle billeder fra øvelsen.\\ | ||
{{: | {{: | ||
{{: | {{: | ||
- | {{: | + | {{: |
- | Problemer med installation af software. kan ikke kommunikere med USB til NXT modulet.\\ | + | ====Softwareinstallation/ |
+ | Problemer med installation af software. | ||
- | Kan desuden ikke resette NXT modulet, der formodes at være i stykker. | + | Vi fik herefter |
- | NXT modulet kunne ikke kommunikere, | + | I mellemtiden blev der iøvrigt indsamlet legostumper til kasserne.\\ |
- | Fik hjælp til at flashe fra en anden gruppe.\\ | + | |
- | Indsamlede lego stumper.\\ | + | ====Upload af program |
- | Uploadede | + | Uploadede programet '' |
- | Foretog | + | Herefter Hentes |
- | - Hastigheden svarede ikke til forventninger, derfor ændrede vi programmet tilbage og skiftede batteri og foretog ny test. Problemet blev ikke løst. Testede motorer på en anden gruppes NXT modul, og motorerne virkede fint. Hentede et HELT NYT NXT modul, flashede, uploadede igen java koden fra hjemmesiden | + | |
- | // | + | ====Koden==== |
- | Henter | + | Koden kan findes via linket http:// |
- | Det lader til at vi har kørt med forkert kode - øv, men nu virker det!\\ | + | <code java> |
- | Vi når at måle følgende intensiteter fra lysdioderne: | + | import lejos.nxt.*; |
+ | /** | ||
+ | * A simple line follower for the LEGO 9797 car with | ||
+ | * a single light sensor. | ||
+ | * | ||
+ | * The light sensor should be connected to port 3. The | ||
+ | * left motor should be connected to port C and the right | ||
+ | * motor to port B. | ||
+ | * | ||
+ | * Variables initialized with a constant string are used | ||
+ | * in the LCD.drawString calls of the control loop to | ||
+ | * avoid garbage collection. | ||
+ | * | ||
+ | * @author | ||
+ | * @version 22.08.08 | ||
+ | */ | ||
+ | public class LineFollower { | ||
+ | |||
+ | public static void main (String[] aArg) | ||
+ | throws Exception | ||
+ | { | ||
+ | String left = "Left "; | ||
+ | String right= " | ||
+ | |||
+ | LightSensor light = new LightSensor(SensorPort.S3); | ||
+ | final int blackWhiteThreshold = 45; | ||
+ | |||
+ | final int forward = 1; | ||
+ | final int stop = 3; | ||
+ | final int flt = 4; | ||
+ | final int power = 80; | ||
+ | |||
+ | // Use the light sensor as a reflection sensor | ||
+ | light.setFloodlight(true); | ||
+ | LCD.drawString(" | ||
+ | |||
+ | // Show light percent until LEFT is pressed | ||
+ | while (! Button.LEFT.isPressed()){ | ||
+ | LCD.drawInt(light.readValue(), | ||
+ | LCD.refresh(); | ||
+ | } | ||
+ | |||
+ | // Follow line until ESCAPE is pressed | ||
+ | while (! Button.ESCAPE.isPressed()){ | ||
+ | |||
+ | if (light.readValue() > blackWhiteThreshold){ | ||
+ | // On white, turn right | ||
+ | LCD.drawString(right, | ||
+ | MotorPort.B.controlMotor(0, | ||
+ | MotorPort.C.controlMotor(power, | ||
+ | } | ||
+ | else{ | ||
+ | // On black, turn left | ||
+ | LCD.drawString(left, | ||
+ | MotorPort.B.controlMotor(power, | ||
+ | MotorPort.C.controlMotor(0, | ||
+ | } | ||
+ | LCD.drawInt(light.readValue(), | ||
+ | LCD.refresh(); | ||
+ | Thread.sleep(100); | ||
+ | |||
+ | } | ||
+ | |||
+ | // Stop car gently with free wheel drive | ||
+ | MotorPort.B.controlMotor(0, | ||
+ | MotorPort.C.controlMotor(0, | ||
+ | LCD.clear(); | ||
+ | LCD.drawString(" | ||
+ | LCD.refresh(); | ||
+ | Thread.sleep(1000); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Test af Sensor - transmitter/ | ||
+ | Vi har målt følgende intensiteter fra lysdioderne: | ||
^ Overflade ^ Intensitet ^ | ^ Overflade ^ Intensitet ^ | ||
| sort | 36 | | | sort | 36 | | ||
Line 28: | Line 107: | ||
| brun tape | 46-49 | | | brun tape | 46-49 | | ||
| blåmønstret gulv | 41 | | | blåmønstret gulv | 41 | | ||
- | Desuden | + | Desuden |
+ | |||
+ | ====Konklusion==== | ||
+ | Det lykkes ikke at flashe NXT modulet, og det lader til, at vi for fremtiden er afhængige af andres hjælp, hvis vi får brug for at flashe igen. Til gengæld kan vi uploade programmer via bluetooth, hvilket fungerer fint. De problemer vi havde med, at motorerne ikke agerede lige effektivt på trods af ens parametre softwaremæssigt, | ||
+ | Lyssensoren af den nye type er god til at skelne mellem hvid og sort, men til gengæld er det svært at måle forskel på blå og grå. Det må desuden konkluderes at kodeeksemplet med en bang bang kontroller er alt for simpel til at lave en god linefollower med. | ||
+ | |||
+ | ====Forslag til forbedring==== | ||
+ | For at lave en god linefollower skal oscillationerne mellem venstre og højre reduceres, så bilen kører i mere bløde kurver. Dertil er idéen fx at tilføje flere lyssensorer, |
marvin/lab1.1222087038.txt.gz · Last modified: 2008/09/22 14:37 by deva