Navn på robotten

Leftie

Navn på gruppemedlemmerne

Kenneth Nielsen

Simon Juul

Tobias Kettelz

Sanijel Hadzikadunic

Hvordan ser robotten ud? 

Skærmbillede 2014-03-20 kl. 23.51.18.png

Hvorfor er robotten opbygget som den er ift. at løse opgaven?

Hvorfor har hjulene fået denne placering/størrelse, har bilen gearing?

Hjulene er placeret omkring de to batteriholdere for at kunne få en ordentlig vægtdistribuering. Vi har valgt at bruge ”normal” størrelses hjul for at opnå en god vægtdistribuering. Eftersom vi har bygget alt omkring en god vægtdistribuering, er bilen derfor blevet lidt høj og lægger meget tæt på jorden.

Vi har en lav gearing for at opveje for den kraft motoren tilbyder. Dette giver mindre slid på motorerne, og bedre træk for vores bil.

Hvor er motorerne placeret?

Motorerne er placeret centralt i konstruktionen, siddende overfor hinanden således, at de driver hver deres hjul. Dette giver os såkaldt kampvognsstyring, som giver en meget præcis styring og en meget lille venderadius.

Hvilke sensorer er benyttet og hvor er de fysisk placeret robotten

Vi har benyttet to lyssensorer, to CNY 70. I vores første forsøg lagde vi vores sensorer under bilen, og på hver sin side af den linje bilen skulle følge. Vores plan med at lægge begge sensorer under bilen var at, der ville blive mindre fejllæsning, når de var i skygge. Da begge sensorer skaber deres eget infrarøde lys, ville eksterne lyskilder egentlig bare kræve en re-kalibrering af koden. Dette blev dog lavet om, og vi lagde de to CNY 70 sensorer op forrest på bilen.

Vores sonar sensor er placeret forrest på bilen. Dette er gjort da vi ved hvordan banen ser ud, objektet kommer foran bilen hvis vi følger den sorte linje.

Én af sonarens kontakter knækkede på et kritisk tidspunkt. Vi kunne godt have løst problemet, men vi prioriterede at få robotten til at følge den sorte linje problemfrit. Derfor er ultralydssensoren desværre ikke en del af Leftie.

Har det været problemfrit at opbygge robotten eller har den ændret form/sensor-placeringer flere gange?

Robotten er blevet ombygget fra bunden én gang. Den oprindelige konstruktion var bygget med tre hjul; to til styring og fremdrift forrest på robotten, samt et tredje til at holde bagenden af robotten over gulvet. Dette hjul var i samme stil som styrehjulene på en indkøbsvogn og kunne frit dreje 360°. Denne konstruktion havde dog massemidtpunktet mellem hjulakserne og gav nogle problemer i forhold til styring.

Anden iteration af robotten var designet med kun to hjul med hjulene placeret længere inde på midten af robotten. For at holde bagenden over gulvet har vi monteret en søjle med en afrundet bund. Dette er gjort for at holde gnidningsmodstanden fra underlaget så lav som muligt. Lyssensorerne er placeret under vognen og tæt på hjulenes akse.

Tredje iteration af robotten var designet imod forbedring. Denne gang handlede det mere om placering af sensorerne i forhold til koden.

Gearingen på robotten er også blevet ændret undervejs, da også hjulenes størrelse og placering ændredes undervejs processen.

 Hvordan er robottens hardware sammensat?

Vi bruger en Arduino Uno som vi har forbundet til 3 sensorer, 2 af dem er lyssensorer (CNY 70) og den sidste er en ultralydssensor/sonar (SRF02). Derudover bruger vi et “shield” på vores arduino til motorstyring. Denne er koblet til vores strømforsyning som er 8 AA-batterier og til to lego-motorer.

 

Diagramtegning

Lys sensor – Ligger med nok afstand fra hinanden til at den sorte linje er imellem dem

Lyssensorerne blev monteret helt i front kort inden konkurrencen. Bemærk dette i videoen.

Sonar – Skal registrere en forhindring så vores bil kan kører uden om den

Gear – Skal skåne vores motorer og sørge for at hjulene ikke “spinder”.

Hjul – Store hjul så det er muligt at sætter vores sensorer så tæt på banen som muligt

Breadboard – Forbindelse af alle vores sensorer til arduino

Motor – Fremdrift

Har der været nogle problemer ift. At få hardwaren til at virke?

Vi har haft få problemer med hardware. Det første problem vi havde var at en af sensorerne gik i stykker, men ”virkede” stadigvæk. Den sensor der ikke virkede registrerer stadigvæk, dog bare meget lave værdier. Vi troede først der var noget galt med vores opsætning/forbindelse af sensoren. Til sidst endte vi med at byttet om på vores to sensor og det viste sig at fejlen lå hos sensoren. Ud over dette har vi haft nemt at finde datasheets og forbinde vores sensorer.

Vi har også haft problemer med at få forbindelse til arduino uno. Vi ved stadigvæk ikke hvad der var galt, men vi endte bare med at erstatte den.

Vores batterihuse brændte også sammen under endnu uvisse omstændigheder. Arduinoen var hverken koblet til pc’en eller sat til batteri. Pludselig røg det fra batterihusene, men det var heldigvis ikke andet end dem, der gik i stykker.

Det sidste problem vi oplevede var, én af vores motorer blev slidt. Dette var skyld at robotten, med jævn kraft, ville dreje til venstre. Vi kompenserede via koden mere kraft på den slidte motor og mindre på den fungerende motor.

 

Hvordan er robottens opførsel implementeret

Hvad er de overordnede opførelser/metoder for robotten

Robotten vil først og fremmest forsøge at køre ligeud – dog med en tendens til at køre mod venstre pga den svage motor. Hvis den venstre lyssensor rammer en sort streg – lav værdi – så vil den søge mod højre, og vice versa. Hvis sensorerne derimod begge møder en sort streg, vil robotten fortsætte ligeud. Med andre ord; så længe sensorerne registrerer ens værdier, vil robotten køre ligeud. Når sensorerne registrerer forskellige værdier, søger robotten mod de høje lysværdier.

 Flowdiagram over robottens opførsel

Kode + beskrivelse

//deffinering af integers

int readpin = A2;   int irpin = 2;   int a = 0;     int b = 0;            int readpin2 = A3;

int irpin2 = 2;        int a2 = 0;       int b2 = 0;   int fart = 255;   int komFart = 180;

//setup: serial, lyssensor og motor pins

void setup (){

 Serial.begin(9600);

 pinMode(irpin, OUTPUT);

 pinMode(irpin2, OUTPUT);

 //Setup Channel A

 pinMode(12, OUTPUT); //Initiates Motor Channel A pin

 pinMode(9, OUTPUT); //Initiates Brake Channel A pin

 //Setup Channel B

 pinMode(13, OUTPUT); //Initiates Motor Channel A pin

 pinMode(8, OUTPUT);  //Initiates Brake Channel A pin

};

void loop (){

                       readInput();

//tester for de forskellige kombinationer af sensor målinger  og starter den funktion med største priotet

         if (b>150)    {

             if (b2>150)    { forward(); }

             else if(b2<150)   {  right();  }

           }  else if(b<150)    {

               if (b2>150)    {  left();  }

               else if(b2<150)    {  forward();  }

           }

};

void readInput() {

   digitalWrite(irpin, HIGH);

   a = analogRead(readpin);

   digitalWrite(irpin, LOW);

   b = analogRead(readpin);

       digitalWrite(irpin2, HIGH);

   a2 = analogRead(readpin2);

   digitalWrite(irpin2, LOW);

   b2 = analogRead(readpin2);

}

//kør fremad funktion

void forward() {

   //Motor A

   digitalWrite(12, LOW);

   analogWrite(3, fart);

   //Motor B

   digitalWrite(13, LOW);

   analogWrite(11, komFart);

}

//drej til venstre

void left() {

   //Motor A//

   digitalWrite(12, HIGH);

   analogWrite(3, 31);

   //Motor B//

   digitalWrite(13, HIGH);

   analogWrite(11, 200);

}

//drej til højre

void right() {

   //Motor A//

   digitalWrite(12, HIGH);

   analogWrite(3, 200);

   //Motor B//

   digitalWrite(13, HIGH);

   analogWrite(11, 31);

}

 

Hvilke udfordringer har der væres ift. Til at få koden til at virke?

Det har været svært at få testet vores kode da vi har haft en del hardware problemer, så derfor er det meste af koden skrevet meget sent i forløbet. Det  har været en øjenåbner at se, hvor lidt hardware skal ændres før det har stor betydning på koden og vice versa. Når software på denne måde bringes ud i den virkelige verden, så er der naturligvis en masse uforudsigelige faktorer der har indflydelse på resultatet af koden.

 

Konklusion

Løser robotten opgaven ift. Opgaveformuleringen?

Robotten kan følge stregen på den optegnede bane ved hjælp af de to lyssensorer forrest på robotten. Den kan dog ikke styre uden om den placerede 9cm*9cm*9cm forhindring, da den ikke er udstyret med den påkrævede lydsensor.

På hvilke punkter kan den forbedres og evt. hvordan?

At få inkluderet lydsensoren ville være en stor forbedring. At få ens kraft på begge motorer vil også være en mærkbar forbedring. Derved vil robotten kunne komme hurtigere gennem banen. Når robotten hele tiden drejer mod venstre, så bruger den længere tid på de lige strækninger, da robotten indimellem skal rette op. Derudover bruger den også ekstra tid på højresving – hvilket konkurrencebanen har klart flest af.

Det vil også være en fordel at have et mindre breadboard, da det nuværende fylder unødigt meget. Et mindre breadboard vil medføre en mindre robot, som vil have nemmere ved at komme uden om forhindringer.

Video:  https://www.youtube.com/watch?v=sxcp-FhJxdI&feature=youtu.be

Leave a Reply