Varighed: 11-14
Deltagere: Daniel, Leni, Martin A og Martin N
1. Formål
2. Øvelsegennemgang
Billede af LEGO 9797 Line Follower with Calibration car:
Del 1 - Black White Detection
Denne del opgaver går ud at danne os nogle erfaringer med at anvende lys sensoren, ved at bruge BlackWhiteSensor.java programmet.
Programmet anvender readCalue() på sensoren denne værdi er den normaliserede værdi som tager den rå værdi og omregner den til et tal mellem 0 og 100, hvor hvid ligger mellem 55 - 65 og sort omkring 35. Som man kan se er dette et meget lille spektrum vi her arbejder i og andre farver ville være meget svære at finde frem til.
BlackWhiteSensor koden fungerer ved at man kalibrere sensoren ved først at læse sort ind og derefter hvid herefter ligges disse to værdier sammen og middel værdien bliver den som bestemmer om det er sort eller hvid robotten ser, denne metode fungerer ok hvis motoren ikke accelerer alt for meget så robotten kommer for langt væk fra linjen.
- Black value: 357
- White value: 550
- Green value: 370-400
De tre værdier ovenfor viser resultaterne fra aflæsning af lys sensoren med metoden getNormalisedValue() som returnere de rå værdier fra lys sensoren, dette giver en bedre opløsning af sensorens aflæsninger dette havde i spørgsmålet omkring sort og hvid programmet ingen betydning da robotten alligevel delte spektrumnet i to dele tolkede alt som enten sort eller hvidt.
Men når programmet skal udvides til at finde flere farver ville et større spektrum gøre det nemmere at skelne mellem de enkelte farver.
Del 2 - Line Follower with Calibration
Video af, hvordan Line Follower with Calibration kørte:
I denne del brugte vi koden fra BlackWhiteSensor som udgangspunkt for at se om robotten var i stand til at anvende givne program til at følge linjen. og her viser problemstillingen nævnt ovenfor sig hurtigt i form af hvis robotten kommer for langt væk fra den sorte linje er den tabt og køre i ring altså robotten reagerer kun på farve ændringer.
Næste forsøg var så bruge regulering til at få robotten til bedre at kunne følge linjen og denne opgave blev gjort til vores aflevering 6 og robot kapløbet så for mere information omkring dette kig på afleveringen til opg. 6.
Del 3 - ColorSensor with Calibration
Med udgangspunkt i BlackWhiteSensor var opgaven her at udvide koden til at kunne kende forskel på mere end sort og hvidt. For at gøre dette skulle algoritmen omkring de to målte værdier og bare tage middelværdien af disse udskiftes.
Første forsøg var at tage udgangspunkt i målinger foretaget i del 1. og derefter bruge lidt af den samme tankegang som sort hvid metoden, nemlig ved at inddele spektrumnet i en sort hvid og grøn zone hvor alle værdier over grøn betraktes som hvid alt under grøn som sort og derefter alt i zonen som grøn.
Problemet her er at grøns værdi ikke ligger særligt langt væk fra sort og derfor kan det være meget svært at få robotten til at skelne mellem sort og grønt, dette gjorde at robotten en gang i mellem mens den kørte lavede nogle stop sekvenser i overgangsfasen mellem hvid og sort da disse overgange er flydende sker der nemlig det at på de rigtige tidspunkter vil blandingen af den sorte og hvide halvdel på banen ville blive til grøn og derfor signalerer stop til robotten.
For at gøre det sværere for robotten at læse værdien grøn mens den køre på banen blev der lavet først en cirkulær buffer hvor de aflæste værdier blev gemt og derefter midlet for at se om denne værdi var grøn og så reagerer på dette, men det samme problem var stadig til stede da en middel værdi ikke ændre på det faktum at der er tale om et flydende værdigrundlag fra sensoren og at en middelværdi bare ville kunne give flere områder hvor værdien grøn ville kunne blive fortolket af robotten.
det næste forsøg tog også udgangspunkt i en cirkulær buffer hvor der i stedet for en middel værdi blev forsøgt at huske på de sidste 5 værdier og så opstille en regel om at de sidste 5 værdier skulle være grønne før at det blev tolket som en grøn kommando. dette havde en delvis effekt robotten stoppede med at lave tilfældige stop kommandoer mens den kørte, fordi en tilfældig grøn værdi ikke længere ville blive tolket som stop kommando, men problemet nu var at 5 værdier i grøn zone var meget afhængig af om solen var bag en sky eller om skidt kom ind foran sensoren, og dette gjorde det meget tilfældig om robotten fik tolket rigtigt mens den var i den grønne zone.
Del 4 - Line Follower that stops in a Cole Zone
forsøget her blev ikke til en kørende robot da opgave 6 tog lidt over og resultatet kan ses i denne opgave.
Men i stedet lavede vi her en række test hvor vi i displayet skrev hvilken zone robotten kunne se via sensoren og dette blev brugt til at forsøge de ovennævnte metoder til at genkende den grønne farve i forhold til de sorte og hvide farver.
Et forsøg vi ikke fik nået at lave var at dedikere en sensorer til kun at kigge efter grøn ved at placerer en sensor løftet op i luften i forhold til de sort hvide sensor ville man kunne hæve det grønne spektrum op midt i mellem sort og hvid man ville kunne bruge aflæsninger over tid (e.g cirkulær buffer ) samt lave et større spekter for sensoren at tolke grønt i og give robotten en meget mere stabilt grundlag til at genkende grøn.
3. Konklusion
Opgaven var et godt grundlag til opg. 6 og blev også til grundlaget for den kode vi lavede til den opgave. der blev ligeledes gjort en masse erfaringer med anvendelsen af lys sensoren, dels omkring præcision og dels omkring problemstilligner omkring tolkning af sensorenes værdier.
4. Referencer