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...!

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.


DTU RoboCup 2011 - overvejelser og forberedelser.

RoboCup 2010 var lidt af en skuffelse. Alle de forberedelser jeg havde lavet med den lille analoge lyssensor viste sig slet ikke at holde, og kombineret med problemerne med firmware og hardware i NXT-brikken, valgte jeg at udgå før kvalifikationen.

For mig er ideen ultimativt at vinde RoboCup med en robot lavet i ren LEGO. Ingen fancy sensorer, kamera, osv. men 3 LEGO-motorer og 4 LEGO-sensorer. Intet andet.

Racerbanen er på forhånd udelukket for en lille LEGO-robot. Dens motorer er simpelthen ikke kraftige nok til at give en hastighed på over 1 m/s. Minimumkravet til hastigheden er 25 m/s, og det giver ikke noget at stile efter mere, hvad angår points.

Størstedelen af banens points høstes ved at kunne navigere efter en streg i gulvet, og så mulighed for at kunne navigere en lille smule uden streger - enten ved odometri, eller på anden måde måle afstande til objekter, f.eks. ved brug af lys eller ultralyd.

Udover navigation er der tre points tilknyttet objekter der skal samles op og flyttes: To golfbolde kan samles op og puttes i et golf-hul, og der er et point mere hvis man kan opsamle en potteplante, og tage den med i mål. Derudover er der mulighed for et point mere, hvis man kan detektere en blinkende port.

Jeg brugte meget lang tid på at tænke over, hvordan man kan konstruere en robot, der kan opsamle golfbolde og en potteplante. For en lille LEGO-robot er potteplanterne en nærmest umulig opgave! Jeg har dog ikke givet op, men har besluttet mig for, at det bliver en anden gang.

Årets bane er desværre uden "pukkelpisten" - en forhindringsbane, der volder de fleste af robotterne en del besvær, da deres hjul let sætter sig fast. Jeg håber stadig de beslutter sig for at tage den med igen...

Jeg beslutter mig for at beholde nuværende design med larvefødder, og så bygge en lyssensor der kan justeres i højden. Jeg har stadig ikke erfaring med lysforholdene og denne sensor (HiTechnic Color Sensor V2). Det tog dog længere tid end jeg lige forestillede mig at lave denne lille detalje, men jeg var klar med robotten til øvedagen. Larvefødderne blev adskilt helt, vasket i sæbevand, skyllet og tørret grundigt. Nye elastikker blev sat på - det er lidt et pillearbejde - og larvefødder og vitale dele af robotten fik lidt Super Lube Dri Film for at mindske slid og friktion. Efter lidt målinger og justeringer besluttede jeg mig for at robotten var klar til at blive meldt til.

Nu mangler softwaren bare! Uanset, så er erfaringerne med de fysiske forhold på banen vigtige, så jeg melder mig til, og gør mig klar til at tage derind om tirsdagen til øvedagen. Det skal også blive hyggeligt at se deltagerne fra sidste år.

mandag den 31. januar 2011

Det betaler sig at spørge!

Jeg tror de fleste der kender mig, kunne skrive under på, at jeg ikke specielt prisbevidst, når det gælder dagligvarer. Til gengæld er der nogle ganske bestemt ting jeg går meget målrettet efter, og nogle produkter jeg absolut prøver at undgå!

Jeg undgår helst Arla (fordi det IMHO er noget pjask, og så lige det der med ytringsfriheden og demokratiet), Ritter Sport (Quadratisch er vel generelt det bedste man kan sige her), Kraft Food og Nestlé (intet andet firma har vel smadret så mange gode produkter, og markedsført sig så svinsk i 3.verdenslande).

Generelt køber jeg meget gerne biodynamisk eller økologisk, hvis det er ligeså godt eller bedre. Økologisk fordi jeg synes godt om princippet med ikke at gøre sig afhængig af syntetiske kemikalier og deres produktion, og biodynamisk, fordi det oftest er fremstillet af folk der virkelig går op i det, og dermed har en langt bedre kvalitet.

Ting på positivlisten omfatter bl.a.:

  • Just Coffee
    Specielt deres Sol og Måne espresso er fantastisk!
  • Mælkeprodukter fra Øllingegaard
    Deres smør er simpelthen fremragende, og det er nok ikke tilfældigt at de har vundet guldmedalje 2 gange blandt ca. 2000 andre smørproducenter.
    Deres kakaomælk er nok bare den bedste den bedste på markedet. Økologist og ikke UHT-behandlet, men lavet på frisk minimælk og økologisk chokolade. Mums!
  • Tres Flores espresso fra Estate
    Rigtig god, kraftig og kompleks espresso.
  • Rapunzel
    Deres "øko-gær"  er fremragende til gærbrød! Skulle det nu gør een forskel? Ja og jeg er absolut enig med Politikens oplevelse her! Prøv det selv!
    Og så er deres mandelsmør også uovertruffen. Lidt som en super luxus-udgave af peanut butter, bare med økologiske mandler i stedet!
  • Duchy originals
    Deres 'Rosemary & Thyme Cheese Nibbles' er super til et glas øl, eller bare some en lille snack, og deres 'Organic Lemon Curd' er super på et stykke hjemmebagt brød eller knækbrød.
  • Øl fra Ørbæk Bryggeri
    Deres økologiske "Honning Ale" slår selv Fuller's Organic Honey Dew, der eller er ganske udemærket.
  • Kornprodukter fra Aurion
    Sjældent finder man folk der går mere op i deres erhverv med større entusiasme, og det kan smages!
Jeg kunne sikkert blive ved længe - der fåes rigtig mange lækre økoligiske produkter, som står højt på min liste over absolutte favoritter.


Jeg var stor fan af Egefeld, da man kunne få de spændende produkter i deres butik i Valby. Desværre tror jeg aldrig helt de forstod, hvor vigtigt det var for dem, at de havde de specielle varer, som man ikke kunne få andre steder. Da krisen begyndte at kradse, begyndte de at mangle netop de varer jeg jeg satte så stor pris på, og dermed blev deres butik også mindre og mindre interessant at købe ind i.

Nu er Egefeld så lukket, og jeg mangler et godt sted at købe bl.a. min Sol & Måne Espresso. Heldigvis har min lokale chokolade- og kaffehandler, Bjørkman's Chokolade, nede på hjørnet af Toftegaards Plads  fået en aftale med Just Coffee, så jeg går og venter spændt på, hvornår det kommer på hylderne.

Og på vejen hjem fra posthuset i dag, gik jeg forbi min lokale 7-Eleven udenfor Valby Station. De havde engang smør og mælk fra Øllingegaard. Da jeg så, at de stadig ikke havde det mere, tog jeg en snak med dem. Det viste sig, at det vist var deres butiksbestyrer jeg talte med, og han lovede at de vil prøve at få det hjem igen! Så hvis du lige kommer et smut forbi Valby, så kan man nu snart få både smør, kakaomælk og letmælk fra Øllingegaard, og kaffe fra Just Coffe!

Det betaler sig nogle gange at spørge. Nu håber jeg så bare, at der er andre der opdager produkterne, så de kan beholde det i deres varesortiment! ;-)

fredag den 28. januar 2011

En lille indsats for en bedre verden...

Sådan en blog forpligter jo, så jeg må jo hellere få postet noget til den faste læserskare (begge to!). ;-)

Min yndlingsfarve er nogle gange orange. Nærmere bestemt ultra orange. Dette site har ofte vinkler på virkeligheden, som giver stof til eftertanke. Det er ikke altid opløftende, men om ikke andet, så er det da godt at vide at man ikke er helt alene med sine holdninger til verden omkring os. Giv det et kig, hvis du ikke allerede har været der for nyligt!

Det minder mig så om en lille oplevelse jeg havde hos et firma. Jeg kom forbi deres skranke i receptionen, og bemærkede en skål med de der ringe der sidder ovenpå dåsesodavand. Jeg havde set den før, men nu måtte jeg spørge. Svaret var, at ringene var lavet af et særligt metal, som kan bruges til benproteser i asien. Nogen samlede den ind og sendte dem derned, fortalte damen i receptionen. Tænk at nogen gider den slags. Jeg mener: prisværdigt, men at de gider. Det er sikkert også bare en and...

Tanken blev dog hængende til jeg kom hjem, hvor jeg lige måtte google efter det. Den var go' nok. Det er rent faktisk rigtigt, iflg. ingeniøren: Selve låget på dåsesodavand er lavet af særlig rent aluminium, der kan bruges til skruer og møtrikker til benproteser hos de fattige stakler, der har mistet et ben ved en landmine eller et slangebid i Thailand. Læs den fascinerende historie her. Jeg rippede naturligvis kontorets (tomme!) coladåser for ringene til receptionisten. Ikke at det gør det store i et ton aluminium, men hvis det kan blive til en skrue eller to i en benprotese et sted, så er det den lille indsats værd! (Jeg medtager gerne jeres dåseringe, hvis I gemmer dem til jeg kommer forbi. Der er stadig fuld pant på resten af dåsen!)

En lille indsats her og der, og verden kan faktisk blive et bedre sted. Et ton aluminium - tænk bare!

torsdag den 27. januar 2011

Endelig!

Så skete det endelig: Jeg har taget mig sammen til at lave en blog på nettet. Jeg har egentlig villet det længe, men det var bare endnu en tærskel, og måske i morgen eller en anden dag, og måske har jeg slet ikke noget interessant at skrive om.

Men nu skete det, takket være en god kollegas opfordringer.

Velkommen til!