lørdag den 26. marts 2011

RoboCup 2011 - Tirsdag (øvedagen)

Det er ikke nogen hemmelighed at jeg burde være bedre forberedt. I løbet af året havde jeg oven i købet købt krydsfinérplader svarende til mål for vippen, plateauet med golfkuglen og golfhullet, den rigtige (super gode, men temmelig dyre) Tesa lærredstape osv. Jeg har undervejs i forløbet skiftet fra NXC til LeJOS. Et valg jeg bestemt ikke har fortrudt, men som også har betydet at API'et nærmest skal læres forfra. Jeg har lavet lidt forsøg hjemmefra med LeJOS' motorstyring, og det lader til at fungere ret godt, omend ikke perfekt. Det lader til at være både lettere at anvende, og mere præcist end NXC, men det bruger til gengæld også mere CPU-resourcer, og har lidt udfordringer med at skifte hastighed mens der foretages reguleringer.

Der er dog absolutte fordele ved at skifte til LeJOS:

  • Jeg kan bruge et professionelt udviklingsmiljø til at skrive programmerne til robotten
    Alt fungerer under Eclipse, jeg kan lave unit-tests med JUnit, sende programmer over i robotten med Bluetooth osv.
  • LeJOS er meget tæt på rigtig Java
    Den har dynamisk lagerallokering af objekter, arrays mv, ganske avanceret garbage collection, klasser og objekter, tråde, semaforer osv. helt som man kender det fra Java. 
  • LeJOS afvikles hurtigere end NXC
    Tabeller er ca. 12-13 gange hurtigere, og integer-operationer er ca. 16 gange hurtigere!
Da jeg mangler en del af robottens styring, vil jeg bruge første dag til at få den bassale styring med motorer  og sensorer på plads. Ret beset ved jeg stadig ikke, om sensorerne overhovedet kan fungere i det kraftige lys, uden afskærmning!

Efter at have pakket en kasse med de nødvendige ting (ekstra batterier, oplader, laptop, samt snacks til at holde det hele kørende til dette kode-maraton), tager jeg ind til DTU.

Bortset fra den ændrede bane, er det helt som sidste år. Banen virker dog mindre, og lyset knap så skarpt, men det er absolut subjektivt! Jeg genkender nogle af folkene derinde, da jeg går en runde, og jeg hilser på dem, og hører hvad de stiller op med. 

Jeg går i gang med at sample lys og finder ud af, at sensorerne fungerer fint! Jeg beslutter mig for at flytte sensorerne lidt op, så de får et lidt bredere område at reagere på. Det fungerer stadig fint, og jeg går i gange med en simpel P.I.D.-styring til robotten.

Efter en masse målinger, udskrifter til NXT-brikkens display, prøvekører jeg robotten. Det fungerer første gang!

Nu er det ikke så svært at lave en P.I.D.-styring der "virker", og selvom jeg er ganske stolt af, at robotten reagerer korrekt (drejer til den rigtige side, og faktisk styrer ganske pænt!), så er udfordringen at få stabiliseret styringen, så den også fungerer når robotten kører hurtigere! En PID-styring har det med let at kunne gå i selvsving, ved at overreagere. Det har jeg ikke brug for! Robotten klarer kun lige hastighedskravet på 25 cm/s: Med fuldt opladede batterier klarer den omkring 26 cm/s, så der er ikke råd til alt for meget slinger på vej hen til guillotinen!

Jeg knokler på med at justere parametrene, tester bunker af gange, og robotten ender med at køre ganske pænt: Når den kører ad en stort set lige streg, justerer den fint og roligt, og generelt ligger den indenfor ½ cm på hver side af stregen. Udfordringen kommer når underlaget skifter til gråt, og tilbage til hvidt. Programmet kan ikke selv kompensere, og jeg lægger lidt ekstra logik ind, så den holder lidt til venstre når styringen går galt. Det fungerer, og den kan nu med rimelig sikkerhed køre fra start til mål, så jeg tager hjem ca. 03:15.

På vej hjem tænker jeg på mine prioriteter til næste dag. Der skal bygges noget logik, der kan bruge den simple PID-styring, så jeg kan høste flere points til kvalifikationsrunden. Det plejer ikke at være et problem at kvalificere, men der var flere med, der var noget bedre end sidste år, så man ved aldrig.


Ingen kommentarer:

Send en kommentar