onsdag den 30. marts 2011

RoboCup 2011 - Onsdag (Kvalifikation)

Jeg tænkte meget på, hvordan jeg skulle komme videre fra den simple line-follower, til noget mere intelligent. Noget som gjorde, at jeg hurtigt og ret let kunne lægge flere ting ind i et program, og hvor robotten kunne træffe simple beslutninger undervejs, udover blot at følge stregen. Det skulle være noget, der er drevet af en form for events (når robotten er kørt x cm, når der kommer en forgrening), og der skulle være flere måder at køre (kør ligeud eller i en cirkelbue uden en streg).

Om morgenen fik jeg fik jeg resten af ideen, og da jeg kom derud begyndte jeg at skrive koden.

Hvis robotten følger stregen på højre side fra start til slut, vil den kunne køre i mål med 6 points. (4 porte á 1 point + 2 points for at komme i mål og aktivere sirenen).

Jeg kodede i ca. 3 timer, og efter ca. 700 linier kode og en masse tests, havde jeg et lille modulært system, hvor jeg kunne programmere robotten til at følge en streg, tælle sidegrene, sætte farten op/ned osv. Jeg nåede at få lavet et program, der i princippet kunne køre gennem 6 porte, og dermed score 6 points. Der ville være basis for at udvide programmet, hvis det fungerede på den første del.

Hvis programmet ikke fungerede, så havde jeg jo min back-up-plan, som blot fulgte stregen, og scorede 6 points, så strategien burde være rimelig sikker. (under kvalifikationen og under konkurrencen, får hver robot to gennemløb, og den bedste af de to gennemløb er den der tæller).

Jeg satte nye batterier i robotten, da "træningen" om formiddagen jo havde tæret lidt på batterierne. Min robot kan med friske batterier køre ca. 26 cm/s, og da minimumkravet til hastigheden er min 25 cm/s (reelt dog lidt mindre), så er der ikke så meget at give af!

Da robotten skulle starte på rampen gik det helt galt! Da den skulle til at køre, kom der nogle grimme 'knæk'-lyde fra den, hvorefter robotten gav sig til at køre i en bue! Dommerpanelet er dog fair, og reglerne giver da også mulighed for en omstart, hvis robotten fejler.

Jeg piller alle ledningerne af robotten, for at få batteridækslet af, så jeg kan stoppe robotten. (Modsat det oprindelige firmware, så kan LeJOS ikke bare stoppes, hvis ikke det er bygget ind i programmet). Jeg får lettet kontakten til et batteri, samler robotten, og starter igen.

Om jeg ikke lige har være så omhyggelig med at sætte robotten på tape-stregen, eller om det skyldes at jeg satte nye batterier i robotten ved jeg ikke, men styringen af robotten går lidt i selvsving (en egenskab ved den PID-styrealgoritme jeg bruger). Uanset, så gør de sving robotten laver hen mod guillotinen, at robotten lige netop fanges af kniven! Der røg så muligheden for at rette op på det avancerede program, og jeg turde ikke andet end at vælge den sikre back-up.

Ved næste kørsel var robotten klar med den simplere line-follower. Desværre mistede dette ellers så sikre og velafprøvede program stregen efter 4. port i et S-sving. Jeg endte på 4 points, og det krævede i år 6 points at kvalificere - en del mere end sidste år!

Lidt øv, men uanset, så er jeg meget meget bedre forberedt til næste år:

  • De digitale lyssensorer virker i det kraftige lys
  • Robotten er reelt hurtig nok, hvis blot den kører stabilt nok, og ikke slingrer for meget.
  • Robotten kan fint klare trappen, når blot batteridækslet er monteret.
  • På trods af den større modstand i larvefødder i forhold til hjul, så er der masser af batterikapacitet til et løb.
  • PID-styringen skal også testes med helt friske batterier...
  • LeJOS fungerer rigtig fint!
  • Diverse tests fungerede godt undervejs
  • Forberedelse betyder alt!

Næste år...!

Ingen kommentarer:

Send en kommentar