Formål
Formålet med denne øvelse er at lave en line follower der kan finde vej op ad en bakke.
På bakken er der en linje som et rangertog vil kunne følge, med sorte streger når rampen ender.
Fremgangsmåde
Da pepe har fået ny kerne skulle det prøves at forbinde med Bluetooth, sticken blev sat i og der blev gennemført et scan. Det var muligt at finde Bluetooth enheder i lokalet og senere også vores egen NXT.
Der blev fundet en NXT ved navn "Master". Denne tilhører gruppen med Thomas Nielsen 20086024 og Morten Knudsen 20086022, Vores egen "Odin" var det ikke muligt at få kontakt til, selvom det var muligt at finde den ved hjælp af hci tools.
De respektive fejlmeddelser var:
$ nxj -b -n Odin BasicMotorTest
leJOS NXJ> Linking...
leJOS NXJ> Uploading...
leJOS NXJ> Searching for Odin using Bluetooth inquiry
BlueCove version 2.1.0 on bluez
Can not get remote device name
Can not get remote device name
leJOS NXJ> Failed to find any NXTs
leJOS NXJ> Failed to connect to any NXT
an error occurred: No NXT found - is it switched on and plugged in (for USB)?
BlueCove stack shutdown completed
For at prøve at bruge navnet på NXT klodsen, for at prøve med adressen kom denne besked.
$ nxj -b -d 00165304001C BasicMotorTest
leJOS NXJ> Linking...
leJOS NXJ> Uploading...
leJOS NXJ> Using Bluetooth device with address = 00165304001C
BlueCove version 2.1.0 on bluez
leJOS NXJ> Exception in open: Open of null failed: Failed to connect. [112] Host is down
leJOS NXJ> Failed to connect to any NXT
an error occurred: No NXT found - is it switched on and plugged in (for USB)?
BlueCove stack shutdown completed
rfogh prøvede også, men med samme resultat. Derefter blev bluetooth opgivet og USB blev anvendt fremover.
Med henblik på Robot Race-konkurrencen satsede vi fra start på at opnå maksimal hastighed. rfogh havde hjemmefra lavet et differentiale og medbragt en alternativ, hurtigere Lego-motor, der hurtigt blev bygget til en bil. Problemet var bare at differentialet hoppede over i tandhjulene, derfor blev der bygget et alternativt differentiale der ikke skal bruge vinklede tandhjul.
Dette viste sig at være et længerevarende projekt, da balancen i bilen skulle afstemmes, så den ikke rullede rundt, når den drejede. Det lykkedes os dog til sidst at få lavet en bil, der var i stand til at dreje rundt på banens forholdsvist skarpe sving uden at vælte. I starten eksperimenterede vi med at sænke motorens hastighed, men dette virkede ikke tilfredsstillende, og derfor lavede vi bilen bredere og lavere i stedet.
Da det lykkedes os at bygge den og spænde nxt klodsen fast, gik vi i gang med et openloop program, og det lykkedes at få den til at køre nogenlunde, men ikke godt nok til at den ville kunne gennemføre banen. Slør i det bagerste styrehjul og andre småting, som vi ikke kunne kontrollere fik os til sidst til at opgive openloop-modellen. I stedet forsøgte vi at udnytte sensorerne på bedste vis - mere om det nedenfor.
Forsøg
1. Openloop
Indtil flere forsøg blev udført i forbindelse med timingen af opkørslen. Vi skrev et program, der kørte op af den første rampe og drejede til højre, for derefter at køre op af den næste. Der var dog ofte meget stor forskel i, hvor bilen kørte hen, om den ramte anden rampe osv. Dette skyldtes primært forskellene i hvordan styrehjulet var indstillet under hver start, samt at der var en del slør i styrehjulets motor. Det var altså forhold ved konteksten, der var svære at styre for programmet, og derfor blev idéen til sidst droppet.
2. Afstandssensor
Som alternativ til at vide, hvornår robotten kom op på en afsats, prøvede vi at sætte afstandssensoren på. Ideen var, at robotten kunne måle hvor kanten af banen var, samt hvornår den kom til en afsats og hvornår den kom til en ny rampe. Vi prøvede denne løsningsmodel i forskellige afskygninger, men fælles for dem alle var, at målingerne ikke kunne foretages hurtigt og præcist nok til at robotten kunne nå at reagere, givet dens høje hastighed.
3. Lyssensor
For at prøve at få robotten til at følge banen, monterede vi tre lyssensorer forrest på robotten, så de kunne måle når banen svingede og på den måde følge banen til tops. Problemet var dog igen at bilen kørte for hurtigt til at kunne nå at reagere, og i mange tilfælde nåede nxt'en slet ikke at registrere, i hvilken side robotten kørte over stregen.
Forløsning
Vores robot kom aldrig til at gennemføre banen. Vi havde fra start satset på hastigheden som den vigtigste parameter, hvilket indebar, at vi fx. ikke ville standse før sving osv. Det var den overordnede præmis vi arbejdede under, og det gjorde åbenbart opgaven for svær. Ved openloop kontrollen var det største problem, at der var for meget slør i styringen og ved alle sensor-kontrollerne var problemet, at målingerne kom for sent til at robotten kunne nå at reagere.
Hvis vi skulle forsøge os med samme konkurrence endnu engang, ville vi nok starte med et helt andet og simplere design, som var langsommere og mere manøvredygtigt.



Ingen kommentarer:
Send en kommentar