Jak jsem začal stavět třídičku
Asi tak před sedmi, osmi lety jsem si pořídil LEGO Mindstorms NXT. Báječná hračka. Postavil jsem si pár základních modelů a pak jsem se rozhodl, že se dám do třídičky kostek. S barevným senzorem to nevypadalo složitě.
Dělal jsem se s tím několik týdnů, nejtěžší bylo nastavit tolerance pro jednotlivé barvy (ostatně miho by mohl vyprávět). Nakonec to jakž takž třídilo. Ale stejně se vždycky ukázalo, že temná měřící krabička není temná dost, venku svítí slunce jinak a můžu ty hodnoty nastavovat znova…
Našemu synkovi se to samozřejmě moc líbilo, tak si to jednoho dne „prohlížel“. Po příchodu z práce už jsem jenom shrnul zbytky do krabice a dal se do něčeho jiného.
Před pár týdny jsem se v rámci úklidu propracoval až těmhle troskám, rozložil je a kostky zatřídil. No a ještě ten den odpoledne mi kamarád poslal odkaz na článek o třídičce kostek s pomocí neuronových sítí. Takže jsem začal stavět znova. A k tomu trochu programovat.
Sběr obrázků…
Nejdřív jsem chtěl ověřit, že budu umět nasnímat obrázky a poznat, že na nich vůbec něco je. Takže jsem postavil pás s podavačem, nad něj umístil starou USB kameru a napsal jednoduchý program, který bere z kamery fotky a ukládá je na disk. To fungovalo, byť kvalita fotek je opravdu, opravdu špatná. Jak jsem zjistil později, kamera brala 5 snímků za vteřinu. Nemá ani autofocus, což se ukázalo jako výhoda – když jsem později experimentoval s novější kamerou, autofocus běžící pás nezvládl a dopadlo to ještě hůře.
…zpracování obrázků…
Z fotek jsem vyřízl střední část – pokud je na středu vidět aspoň kousek, dá se předpokládat, že na celé fotce bude celá kostka. S pomocí knihovny Neuroph jsem začal cvičit neuronovou síť, která říkala ano-ne.
No a pak mi došlo, že už z tohohle se dá postavit třídička podle barev. Takže jsem neuronovou síť zahodil a začal cvičit novou, která rozpoznávala červenou, zelenou, žlutou a bílou (výber barev byl jednoduchý – odsypal jsem si z krabičky s technic bricky 1×2 hromádku na testy a tyhle barvy tam byly). Šedé a černé jsem nezkoušel – rozmazaná fotka takové kostky na šedém pásu je k ničemu. No a ono to docela fungovalo. Nasnímané obrázky to začalo třídit.
… a vlastní třídění
Tak jsem začal dělat něco, co by třídilo kostky, nejen obrázky. Pro ovládání NXT z počítače jsem si stáhnul LeJOS a zkusil přeflashovat firmware v NXT kostce. To jsem si dal… Program smazal starý firmware a prohlásil, že žádnou NXT kostku připojenou nemám. Kostka zhasla a začala jen potichu tikat. Nakonec se to povedlo spravit. Pokud byste to chtěli taky zkoušet, tak ovladač NXT se ve Windows musí instalovat BEZ připojení k Internetu. No a nakonec se ukázalo, že pro ovládání z PC není třeba kostku flashovat.
Když jsem ověřil, že umím ovládat motory z počítače, udělal jsem jednoduché „šťouchadlo“, které shazovalo kostky z pásu. Výsledek můžete vidět na videu.
No a v souladu se zákony pana Murphyho můžete vidět, že první natočené třídění skončí chybou. 🙂
Pokračování příště…