Andreas Bach Aaen Innovation og Open Source

8. august, 2011

Lego Loop Sorter

Filed under: hardware,ideer,lego,linux — andreas @ 8:00

 

I mit professionelle arbejde, arbejder vi med store maskiner. Vi bygger sorteringsanlæg. Kæmpe store fabriksinstallationer med masser af automatisering. Det er dyre anlæg til mange millioner kroner. Oftest arbejder vi med virtuelle simulatorer under udvikling og test. Det er hurtigere og billigere. Ind i mellem er det dog godt at arbejde med et rigtigt anlæg – for at få den rigtige mekanikforståelse af hvad det er for et problem vi er ved at løse i software. Da jeg i julegave sidste år fik et Lego Mindstorms sæt, så fik jeg hurtigt tanken, at jeg ville bygge mig mit eget  sorteringsanlæg. En fysisk fungerende model hjemme på skrivebordet, der vil kunne demonstrere nogle af de basale teknikker, der bliver brugt i et fuldskala sorteringsanlæg. Altså en miniudgave til nogle få tusinde kroner, frem for en fabriksmodel til mange millioner, der fylder en hel fabrikshal.

Modellen kan indføre duplo klodser på ledige vogne. Ultralydsdetektoren fungerer som en tomvognsdetektor. Det vil sige, at der kun indføres duploklodser på vogne, hvor man kan se, der er tomme og ikke på vogne, som man regner med er tomme forbi vognen netop har læsset en klods af i afkastet. Det er en slags verifikation. Det detekterer fejl, hvor en duploklods nægter at glide af en  vogn, når den læsser af, eller hvis en klods er gledet fra en vogn til en anden.

Lysdetektoren bruges til flere ting. Den ser om der er klodser på transportbåndet, så klodserne kan positioneres klar til indføring på sorteringstoget. Dernæst ser den hvilken farve klodsen har. Trykknapperne får et tryk hver gang en vogn passerer, så tomvognsdetektoren, indføringen og afkastet ved hvilken vogn der passerer. Samtidigt måles hastigheden af toget, så timingen af indføringen kan fintunes. En af motorerne benyttes som omdrejningstæller, der bruges til at vælge hvilke farver klodser, der skal læses af i afkastet. Alle farver, ingen farver, eller strejfere (klodser der ikke er korrekt indført) kan også vælges.

Fuldskala sorteringsanlæg har selvfølgelig mange afkast og også flere indføringer, så her skal der tages valg for hvert afkast. Der vil være stregkodelæsere og måske en vægt i stedet for en farveaflæser. Tomvognsdetektoren kan være videobaseret, men principperne er de samme. Principper, der altså kan demonstreres fysisk på et skrivebord.

3. august, 2011

Lego Mindstorms og Linux

Filed under: hardware,lego,linux — andreas @ 8:00

Min kone kender mig for godt. Jeg er meget tidligt blevet bidt af en gal Legoklods. Det har været min favoritlegetøj helt indtil hjemmecomputeren blev opfundet og flyttede ind i mit teenageværelse. Så nu da alle børnene skulle have Lego i julegave, så skulle jeg også. Det blev til en kasse med Lego Mindstorms.

Det var en perfekt anledning til, at tage mit gamle tekniklego ud af skabet og få det mellem fingrene igen. Det tekniklego, der følger med Mindstormssættet er dog blevet redesignet siden jeg var lille, så stængerne ikke længere har knopper. En del nye sammenkoblingsklodser er kommet til, så rent konstruktionsmæssigt er det en noget anderledes oplevelse at lege med dagens tekniklego. Der er lidt mere Meccado eller Briomek over det.

Softwaren der følger med Lego Mindstormssættet er kun til Microsoft Windows, så ud med den. Der er endda kun konstruktionstegninger på papir til en meget simpel robot med hjul. De mere advancerede modeller, så som den gående robot, der pryder forsiden af æsken, dem finder man kun elektronisk og kun til Microsoft Windows. Nå pyt med det, det er alligevel sjovere at bygge selv.

Men hvad skal man programmere i? Man kan vælge, at bruge Legos eget sprog. Simpelt, men nok mere begrænset end ladder-diagrammer til PLC-programmering. Så er der Open Source alternativerne. Her kan man vælge imellem java programmering og næsten-C programmering. Her valgte jeg NXC (Not eXactly C), da det er det simpleste og ikke krævede flash af firmwaren for at komme i gang. NXC er  frigivet under Mozilla Public License (MPL) og findes prekompileret til Linux, Mac og Microsoft Windows.

Til NXC er der en udemærket tutorial og en ret uoverskuelig userguide, der bærer præg af at være autogenereret med doxygen ud fra kildekoden. Svagheden er nok især, at der mangler en masse sigende eksempler på brugen af de mange funktioner. Så start med tutorialen og kig en ekstra gang om fuktionalitet ikke er beskrevet her inden du giver dig til at lede i userguiden.

NXC giver mulighed for trådprogrammering og brug af semaforer. Man kan sige, at det er komplekst, men i en shared memory model, da er det nødvendigt for at kunne lave parallelprogrammering. Alternativt kunne det være interesant at køre et Occam eller Erlang inspireret sprog til Lego Mindstorms. Message parsing er for mig at se en mere intuitiv og nemmere model at håndtere parallelisme i end shared memory.

Powered by WordPress