Robottens navn: Bamasake
Gruppemedlemmer: Kenza Faten Statoua, Bjarke Thøger, Martin Mølvadgaard Svensson og Sacha Kjærhus Therkildsen

Bamasake deconstructed:
Bamasakes krop består af en “kasse”, der bærer på Arduinoen med motorshield samt batterierne på den. Kassen er opdelt i rum, så skulle Bamasake komme i sammenstød vil dens vitale dele ikke falde ud. Der ud over giver det hurtig adgang til at tage strømmen fra Arduino-boardet, når Bamasake ikke længere skal være aktiv.

De to motorer, der bruges til at få vores robot til at køre, er ligeledes placeret foran ud for “forhjulene”, og alle elementer er fordelt, så der er nogenlunde lige meget vægt på begge sider af Bamasake.

Bamasake er bygget med larvefødder – fordi det er sejt, og så fordi det stabiliserer og balancerer robottens krop uden at skulle tage brug af et balancerings element. Et tredje hjul ville eventuelt kunne få indflydelse på Bamasake mulighed for at dreje ‘pænt’, hvor imod vi lettere kan styre vores larvefødder.

Vi har lavet en gearing på vores robot, for at få bedre kontrol ved en lavere fart. Da vi uden gearing havde problemer med bare at få den til at køre uden at skulle bruge omkring 1/4 af den mulige kraft bare for  at kunne køre larvefødderne rundt, hvor det også lød som vores motorer var ved at dø. En mulig optimering, der kunne have gjort Bamasake hurtigere, ville have været et større tandhjul forrest i larvefødderne og et mindre bagtil.

Robotten er udstyret med tre sensorer alt i alt; to CNY70 optiske sensorer og en SRF02 ultralyds sensor. De to infrarøde optiske sensorer er placeret længst foran på Bamasake – ca. 1 cm fra gulvet  –  de er placeret foran for at give vores robot så lang en reaktionstid som overhovedet muligt for at justere sin kørebane. Sensorerne kigger på deres side af den sorte streg, og vil  rette kursen op når de fanger data der indikerer at de bevæger sig ind og linien – mere om kodningen af de optiske sensorer i afsnittet om implementeret opførsel.

Ultralyd sensoren er også placeret foran i midten af Bamasake, da den forhindring vi skal udenom er placeret midt på banen. Forhindringen er også meget lav, og derfor kan vi ikke placere ultralyd sensoren andre steder på Bamasake, uden at skulle til at bygge dens krop om, for at gøre plads til den i en korrekt højde. Dette betyder, at vi må undvige vores forhindring tidligt, da minimums afstanden imellem sensor og robot er høj og Bamasake er bred.

Til sidst har vi valgt at lodde alle vores ledninger sammen, så Bamasake ikke skal slæbe rundt på det store fumlebræt. Nok er vores robot bred, men fumlebrættet er faktisk bredere endnu.

Vores robot har ikke ændret meget form undervejs i vores testforløb, da vi fokuserede mere på at finde ud af hvordan vores nuværende design kunne komme til at fungere optimalt, frem for at finde et design der var optimalt til forhindringsbanen. (Banens udformning blev først offentliggjort efter vi havde arbejdet med at designe vores robot fysisk). Den eneste reelle tilføjelse til robotten i løbet af projektet var gearingen som vi omtalte tidligere.

Bamasakes komponenter:
Bamasake komponenter

bamasake forfra_sensorer

Diagram tegninger over Bamasake:
bamasake Arduino 2x CNY70 1xSFR02 Sketch_bb
bamasake Arduino 2x CNY70 Sketch_bb
bamasake Arduino 1xSFR02 Sketch_bb

Bamasakes implementerede opførsel:
Bamasake har følgende metoder og opførlser, herunder opsat i den rækkefølge robotten prioriterer sine handlinger:

  1. Undgå sammenstød  – Hvis der er et objekt foran Bamasake (Indput: SRF02 Ultralyd sensor), vil den undvige ved at dreje 45 grader, køre frem og derefter dreje -45 grader for at komme tilbage på ret kurs.
  2. Kør ligeud ved kryds – Hvis begge CNY70 sensorer rammer en streg – kører Bamasake lige ud
  3. Hvis højre CNY70 sensor rammer en streg – sæt højre motor i bak (drejer mod højre)
  4. Hvis venstre CNY70 sensor rammer en streg – sæt venstre motor i bak (drejer mod venstre)
  5. Kør lige ud – full throttle på begge motorer

Flowchart:
bamasake flowchartKode problemer:
Vi havde nogle problemer medat få ultralyds sensorens library kode til at virke sammen med vores to CNY70 sensorer, der bruges til at følge banen rundt. Robotten begyndte “tilfældigt” at køre hen over svingende på banen og blev meget ukonsistent.

Vi fandt ud af, at hver gang man kalder en Delay() function, stoppede alle andre dele af koden med at køre, selv om delay funtionen ikke var i selve Void() loopet, men i en seperat function, som man skulle kalde for at køre.

Vi løste problemet ved i stedet at bruge en selvlavet tæller – en Integer, der tæller op hver gang første del af vores ultralyd sensor kode kører – og når den når til 70 kører den koden forfra.

Bamasakes kode:
Download sketch her.

Konklusion:
Bamasake opførte sig som forventet ved konkurrencen og tog banen på en officiel tid af ca. 36 sec og en uofficiel tid på 34sec. Vores robot kører meget konsistent og vil i mindst 9/10 gange gennemføre banen uden at ramme forhindringen.

Forbedringer på robotten skulle laves i form af en hurtigere model, men i det tilfælde ser vi nok nærmere på at skulle udskifte larvefødderne eller lave om på de tandhjul der er inden i fødderne, som nævnt tidligere.

Leave a Reply