Autor Téma: (vlastní) Třídička kostek - POZOR, může obsahovat ne-LEGO díly (např. počítač)  (Přečteno 2025 krát)

0 uživatelů a 1 Host prohlíží toto téma.

Offline pryb

  • Trade Count: (49)
  • furťák
  • *****
  • Příspěvků: 521
  • Pohlaví: Mužské
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.
Aktuální projekt - třídička.
Youtube kanál

Offline Jonas

  • Trade Count: (3)
  • furťák
  • *****
  • Příspěvků: 762
  • Pohlaví: Mužské
    • Brickshelf
Držím palce. Neuronové (hluboké) sítě jsou opravdu mocné. Jen je potřeba nashromáždit velké množství trénovacích dat a zvolit raději více vrstev, aby se dobře naučily. (Což pak samozřejmě trvá dlouho, zvlášť pokud není k dispozici GPU).
Jeden náš student také staví třídičku, která na základě kamerového obrazu bude třídit i podle tvaru. První, co si udělal, je mechanický nástroj, který před kamerou náhodně pohazuje vybrané kostky, aby získal pro každý tvar co nejvíce obrázků pro učení.

Offline pryb

  • Trade Count: (49)
  • furťák
  • *****
  • Příspěvků: 521
  • Pohlaví: Mužské
Tohle je spíš takový pokus, na kterém si ověřuju, že tudy vede cesta. Na tuhle kvalitu obrázků a třídění barev bohatě stačí jednoduchá dvouvrstvá síť a počítač bez GPU. Třídění podle tvaru je samozřejmě v plánu.

Třídička už teď vypadá jinak, až budu mít chvíli, tak zas něco napíšu a natočim video.
Aktuální projekt - třídička.
Youtube kanál

Offline pryb

  • Trade Count: (49)
  • furťák
  • *****
  • Příspěvků: 521
  • Pohlaví: Mužské
Když jsem si ověřil, že první verze třídičky docela dobře funguje, dal jsem se do vylepšování.

Fotky

Nejdřív jsem začal vylepšovat kvalitu fotek. Fotky byly rozmazané pohybem, takže do každé kostky bylo přimícháno trochu tmavě šedé. To opravdu není žádná sláva:



Hledal jsem, jestli jde nějak přes API knihovny nastavit rychlost závěrky kamery (dobře, vím že tam žádná závěrka ve skutečnosti není, ale dá se pracovat s počtem snímků za vteřinu). Nejde to. A typicky to tyhle malé webkamerky ani neumožňují, prostě to zařizují automaticky. Dá se to ale udělat nepřímo – zlepšit osvětlení. Kamera pak usoudí, že má dost světla na to, aby si mohla dovolit zvýšit framerate. Takže jsem zahodil tu lampičku, co byla v minulé verzi, a dal jsem tam 2W cyklosvítilnu. To zabralo, kamera začala snímat rychlostí 30 snímků za vteřinu, což je podle specifikace její maximum. Výsledek se o dost zlepšil:




A zlepšily se tak i výsledky. Pořád ale byly problémy s rozlišováním žluté a bílé, což při pohledu na obrázky nepřekvapí. Myslel jsem, že prostě potřebuju lepší kameru s větším dynamickým rozsahem, která nebude pro světlé barvy dávat tak přepálené obrázky. Pak mi došlo, že i jas kamera reguluje automaticky bez možnosti to přímo ovlivnit. Ale opět to jde nepřímo. V měřící krabici jsem měl vedle pásu černé pozadí, aby nerušilo. Na oříznutých fotkách není vidět, ale kamera ho samozřejmě zabírá. Když jsem tuto část nahradil bílými plates a tiles, celkový jas o dost klesnul, a výsledky byly zase o něco lepší:




Rozšíření neuronové sítě

Tak jsem si troufl neuronovou síť rozšířit a přidat další barvy – modrou, černou a světle šedou (specielně rozmazaná světle šedá původně nešla na šedém pozadí poznat ani očima). Výsledky byly opět dobré, problém zůstal v rozlišování světle šedé a bílé, tam se plete pořád. Obávám se, že na to už dvouvrstvá síť stačit nebude.

Vylepšení vlastního třídění

Když jsem dosáhl lepších výsledků při třídění v počítači, začal jsem ještě upravovat vlastní třídičku. Prodloužil jsem pás a postavil ještě dvě šťouchadla (mám jen jednu NXT sadu, takže jsem omezen na 3 motory). To umožnilo vytřídit 3 barvy.  Aktuálně je to nastaveno na vytřídění červených, zelených a modrých.

Původní program běžel v jednom vlákně – když narazil na červenou kostku, prostě chvíli počkal a pak šťouchnul. To už bylo teď nevhodné – dokud program čekal, nedělal nic jiného. Upravil jsem program na dvouvláknový – jedno vlákno snímá obrázky a pokud narazí na něco, co bude třeba shodit z pásu, založí do seznamu požadavek a nastaví mu patřičné zpoždění. Druhé vlákno pak kontroluje, jestli je už v seznamu něco, co potřebuje zpracovat. Pokud ano, vydá příslušnému motoru pokyn k sešťouchnutí.



Méně úspěšné pokusy…

Ne vše se samozřejmě dařilo. Zkusil jsem upravit šťouchadla na oboustranná, abych mohl třídit 6 barev, ale se stávající konstrukcí jsem neuspěl. Musel bych výrazně prodloužit osy, po kterých šťouchadla jezdí. Tedy dát tam osy aspoň šestnáctkové, které nemám, navíc by se to už dost prohýbalo. Vymyslel jsem si kostrukci s dvanáctkovými osami, kterých mám fůru, ale nakonec na ni nedošlo, použil jsem jiné řešení – o tom příště.

Rozmýšlel jsem se ještě nad lepším pásem – ten originální LEGO má příliš výraznou strukturu, což bude nejspíš u složitějších sítí na závadu. Zkusil jsem vyrobit hladký z duše do kola, ale zatím z toho není rozumný výsledek.

Co chci vyzkoušet dál:
    Oboustranná šťouchadla (to už vypadá slibně).
    Udělat lepší pás.
    Použít lepší kameru.
    Pustit do třídičky i jiné dílky než Technic brick 1×1 a 1×2.
    Pro vyhodnocení nepoužít jen jeden obrázek, ale víc. To by mělo snížit chybovost, pokud je ten první špatně (je vidět jenom kousek), u těch dalších to obvykle dopadne líp – ale teď se použije ten první.
    Vyzkoušet vícevrstvé neuronové sítě (a začít experimentovat s tříděním podle tvaru).
    No a machrovinka by byla použít jako vstup NXT barevné čidlo, spočítanou síť nahrát do NXT kostky a udělat pure LEGO třídičku bez připojeného počítače a kamery.

No a nezbytné video…
« Poslední změna: 05.06.2017, 18:37:27 od pryb »
Aktuální projekt - třídička.
Youtube kanál

Offline milanv

  • organi
  • Trade Count: (4)
  • furťák
  • *****
  • Příspěvků: 2843
  • Pohlaví: Mužské
  • Milan
Výborná zábava! A na videu je vidět, jak si stroj chudák skopl modrou kostku do červeného šuflíku úplně mimoděk. Modré šťouchadlo správně chtělo strčit, ale už nemělo co... Takže to už je na zajištění spolehlivosti rozestupů, čtení a strkání funguje hodně dobře, zdá se!

Offline pryb

  • Trade Count: (49)
  • furťák
  • *****
  • Příspěvků: 521
  • Pohlaví: Mužské
Mohlo by se zdát, že tenhle projekt skončil tam, kde spousta projektů končí, ale není tomu tak. Jenom mi to prostě trochu trvá.

Doteď jsem se bavil výpočty neuronových sítí, focením dílků na pásu, mechanismy pro sešťouchávání kostek z toho pásu do krabiček a podobnými složitostmi. Dneska ukročím od složitějších věcí trochu stranou k něčemu mnohem jednoduššímu.

Ze seznamu námětů z minula jsem vyzkoušel skoro vše (vyjma té pitomosti s vyhodnocováním přímo na NXT kostce). Ovšem největší problémy dělal pás.

Pás byl problém. Ten klasický od LEGO je na tohle vysloveně špatný – krom toho, že má výraznou, a tedy matoucí strukturu, tak se na něm kostky zasekávají. Hodně. Zkoušel jsem ledacos – rozřízlé duše z kol, duši z motorky – všechno se nakonec ukázalo jako nevhodné. Nakonec jsem skončil u zdravotnických škrtidel. (Pravda, když jsem chtěl během týdne páté, koukali na mě v té lékárně už trochu divně a podezíravě). Každopádně coby pás se to osvědčilo.

Ale ani nový pás ale nevyřešil jeden z problémů – kulaté díly se kutálí a padají všude okolo. I do krabiček s roztříděnými dílky, kam rozhodně nepatří. Doufal jsem, že na delším pásu by se mohly dílky uklidnit a přestat se kutálet, ale nestalo se. Všude kolem třídičky byly popadané piny, bushe, krátké osy…

Nakonec mi ale došlo, že i (ne)padání z pásu je svým způsobem třídění. A že úplně postačí prohnat nejprve dílky po šikmém pásu. Co je kulaté, skutálí se. Takže jsem postavil něco, co se dá nazvat „předtřídičkou“ – než dám kostky do opravdové třídičky, nejdřív vyřadím ty problémové. Vypadá to asi takhle:



Předtřídění je potřeba udělat několikrát – třeba halfbushe rády padají naplacato (zejména když se po nich chce, aby se kutálely). Ale výsledek je velmi uspokojivý Takhle to dopadne po prvním průchodu:



no a takhle po druhém:



To už je v naprosté většině jen směs několika málo typů dílů. A to se snadno dotřídí ručně.

Pro přiměřeně čistou směs nekulatých dílů jsou potřeba alespoň 3 průjezdy. Výsledkem je směs, která se už dá dát do „opravdové“ třídičky. Ale o tom zase příště, hned jak se dostanu k tomu to napsat.

No a na závěr samozřejmě nezbytné video.
« Poslední změna: 21.03.2019, 22:24:43 od pryb »
Aktuální projekt - třídička.
Youtube kanál

Offline 444martin

  • Trade Count: (0)
  • bažant
  • **
  • Příspěvků: 85
  • Pohlaví: Mužské
Perfektní. Vždy obdivuji, co všechno lidi dokáží vymyslet. To je hodně dobrý nápad s tím "kutálením". Takže 2 až 3 tyto předtřídičky za sebou (nebo vedlejší větev) a máš odfiltrované kulaté díly. Pak několik dalších modulů na detailnější třídění a je z toho dlouhé zařízení. A bude to světový unikát. Jak jsou na výstavách několikametrové GBC okruhy, tak Ty vymyslíš dlouhou třídící linku.
Teď si jsem si uvědomil, že i pan Šnobr kdysi hovořil, že by se mu líbilo z Lego postavit funkční "továrnu". A toto by se mu, podle mě, určitě líbilo.
« Poslední změna: 20.03.2019, 09:56:14 od 444martin »

Offline pryb

  • Trade Count: (49)
  • furťák
  • *****
  • Příspěvků: 521
  • Pohlaví: Mužské
Dlouhá třídící linka asi hned tak nebude, tady to opravdu stačí jenom prohnat několikrát

U té "opravdové" třídičky by to bylo něco jiného, ale mám jenom jednu Mindstorms sadu a další pořizovat neplánuju. Takže třídit dokážu maximálně do šesti kategorií.
Aktuální projekt - třídička.
Youtube kanál

Offline milanv

  • organi
  • Trade Count: (4)
  • furťák
  • *****
  • Příspěvků: 2843
  • Pohlaví: Mužské
  • Milan
Třídička je super, už se těším, až ji někdy uvidím naživo.
Na stavbě mi přijde nejzajímavější ta tvoje zkušenost o množství "inženýrské práce": jak velký je rozdíl mezi teoretickým modelem (resp. ukázkovým příkladem k němu) a strojem, který bude opravdu spolehlivý.
Navíc mě to láká zase oprášit své starší nápady na kuličkodráhy, když vidím takové stroje...

To třídění kulatých dílů by šlo udělat několika průchody místo několika pásů za sebou, ne? I by to vypadalo hezky, kdyby dole byla pořádná sběrná vana s dopravníkem zase zpátky na ten šikmý pás - jen jak to "počítat", aby ty díly nejezdily donekonečna dokola, ale postupně byly prohlášeny za dostatečně pravděpodobně kulaté a dopraveny do koncové vaničky "kulaté díly"?

Offline pryb

  • Trade Count: (49)
  • furťák
  • *****
  • Příspěvků: 521
  • Pohlaví: Mužské
Jasně že by to šlo ještě vylepšit a zkomplikovat. :D Ale teď to zas nějakou dobu nechám, jak to je, maximálně se zbavim toho vodorovnýho LEGO pásu.

Chci se teď věnovat hlavně té "opravdové" třídičce, na té je toho k vylepšení víc.
Aktuální projekt - třídička.
Youtube kanál

Offline Daniel

  • Trade Count: (14)
  • furťák
  • *****
  • Příspěvků: 521
  • Pohlaví: Mužské
    • Mé fotky
U podobných věcí absolutně nechápu jak to někdo sestrojí/zprovozní...a asi chápat ani nikdy nebudu ;D . Každopádně super stroj :)

Offline pryb

  • Trade Count: (49)
  • furťák
  • *****
  • Příspěvků: 521
  • Pohlaví: Mužské
U podobných věcí absolutně nechápu jak to někdo sestrojí/zprovozní...a asi chápat ani nikdy nebudu ;D . Každopádně super stroj :)

To je v pořádku, já zas vždycky zírám na ty tvoje velkostavby. :)

Na tomhle bylo popravdě nejtěžší přijít na ten poměrně triviální nápad, že kutálení je taky třídění. Zítra napíšu něco trochu složitějšího.
Aktuální projekt - třídička.
Youtube kanál

Offline pryb

  • Trade Count: (49)
  • furťák
  • *****
  • Příspěvků: 521
  • Pohlaví: Mužské
Minule jsem psal o vytřídění kulatých dílů. Dnes se vrátím zpátky k původní třídičce. A i na neuronové sítě dojde.



Šťouchadla
Mám jenom jednu NXT sadu, tj. 3 motory. Přemýšlel jsem, jak upravit šťouchadla, aby shazovala kostky na obě strany pásu a mohl jsem tak třídit do šesti hromádek. Minulá koncepce na to nebyla moc dobrá – šťouchadlo by bylo potřeba přednastavit do správné polohy a to by mohlo shazovat dílky v nevhodnou chvíli. Navíc bych na to potřeboval opravdu dlouhé osy. Nakonec jsem použil konstrukci s LEGO pásy (přeci jen jsou k něčemu dobré :) ). Aby se šťouchadlo lépe strefovalo a dílek před ním nestihl „utéct“, dal jsem k NXT motoru převod 1:3. Dílky to z pásu sestřeluje docela pěkně.


Kamera
Možnosti ovládání původní webkamery byly velmi omezené. Ani obrázky nestály za moc, tak jsem se rozhlížel, čím to nahradit. No a protože jsem se před nějakou dobou zabýval měřením hladin v nádržích pomocí RaspberryPI a protože RaspberryPI má celkem schopnou kameru, byla volba celkem jasná. Použil jsem tedy systémovou RaspberryPi kameru. Krom toho, že se u ní dá kromě jiného nastavit expoziční doba, dokážu z ní tahat 10 snímků za vteřinu (a je tam pravděpodobně ještě rezerva).

Na osvětlení jsem nějakou dobu používal (a vlastně ještě používám) modul Blinkt k Raspberry. Při ladění kamery jsem ale zjistil, že to nestačí, tak jsem přidal jeden díl LED pásky. (Tedy původně jsem přidal asi dvacet centimetrů, ale tím se obraz dokonale přepálil).

Vyhodnocování
Největší změnu jsem ale udělal v softwaru. Zahodil jsem tu srandovní Java knihovnu a začal jsem studovat Python a vícevrstvé neuronové sítě. Na začátku přednášek se říká: „Pořiďte si grafickou kartu Nvidia“. Tu jsem neměl, tak jsem to zkoušel přeprat využitím volné kapacity osmiprocesorového serveru. Večer jsem spustil výpočet a ráno jsem se dozvěděl, že výsledek je nevalný a bude potřeba to spustit znovu a lépe.

Takže jsem si po několika pokusech pronajal v cloudu server s Nvidia kartou. Jeden výpočet sítě trval asi tak 2 minuty, což už bylo zcela postačující (dneska už mám nasbíráno víc obrázků a hraju si se složitějšími sítěmi, ale do hodiny a půl se to zatím vejde).

Vyhodnocení jsem dělal na počítači bez grafické karty, čímž jsem se dostal na zpracování jednoho obrázku za vteřinu. S tím jsem si chvíli hrál, ale nakonec nezbylo, než si sehnat starou Nvidii i domů na vyhodnocování – při jednom snímku za vteřinu toho prostě příiš mnoho projede nepovšimnuto.

Naštěstí měl kolega starou Nvidii, kterou mi půjčil se slovy „mně je k ničemu, na hraní je to už pomalý“. Rychlost zpracování se dostala na deset fotek za vteřinu, což už bohatě stačí. I v tom je rezerva, teď to nejvíc brzdí čtení fotek z kamery.

Celé to teď funguje tak, že Raspberry průběžně snímá fotky a odesílá je na server s Nvidia kartou. Ten provádí vyhodnocení podle předpočítané sítě (a podle jiné sitě odhaduje polohu dílku na obrázku). Z obojího spočte zpoždění a výsledek pošle zpátky do Raspberry. Tam už je pak jen fronta pokynů pro šťouchadla, které se v pravý čas předají NXT kostce. A když se to celé povede, skončí dílek ve správné krabičce.
A jak to dopadlo?

Po několika (mnoho) pokusech se mi podařilo vycvičit vcelku funkční neuronovou síť na rozpoznávání deseti barev – Black, Blue, DBG, DkGreen, Green, L(B)G, MdBlue, Red, White a Yellow. Od dalších barev jsem neměl dost velkou vytříděnou hromádku, aby bylo na čem se učit.

Třídění není dokonalé, dělá to několik typů chyb:

  • Kostky jsou moc blízko u sebe a šťouchadlo strefí dvě najednou (a jednu z nich špatně).
  • Neuronová síť si není dost jistá. V takovém případě nechám kostku radši projet.
  • Neuronová síť barvu nezná a nebyla na ni učena. Tan tak padají do šedých a žlutých, DkRed a Orange do červených atd.
  • Šťouchadlo se prostě netrefí.
  • No a někdy se taky stane, že to neuronová síť určí úplně špatně. To se ale děje zřídka, rozpoznávání barev je jednoduchá úloha.

Výsledek je k vidění tady.

Co dál?
Pořád je to vývojová verze a už teď vím, že několik věcí bude potřeba předělat:
  • Potřebuju vyladit nastavení kamery – teď se nastavuje automaticky. Specielně bílé dílky jsou přepálené.
  • Bude potřeba znovu zvětšit zorné pole kamery a upravit šťouchadla, aby to bylo použitelné i pro větší než malé dílky.
  • Kamera snímá kolmo shora. To není pro třídění podle barev problém – ale pro třídění podle tvarů už ano.
  • No a samozřejmě spousta drobných úprav v programech i v konstrukci.

A to všechno nejspíš znamená, že můžu celou sbírku učících fotek zahodit a začít pěkně znova. :)
« Poslední změna: 23.03.2019, 14:44:01 od pryb »
Aktuální projekt - třídička.
Youtube kanál

Offline pryb

  • Trade Count: (49)
  • furťák
  • *****
  • Příspěvků: 521
  • Pohlaví: Mužské
Jak jsem psal, tak jsem udělal - začal jsem znovu. A narazil jsem na další problém - při zkrácení expoziční doby se mi obrázky rozbily. Kdo pozná, co je špatně? :)
Aktuální projekt - třídička.
Youtube kanál

Offline Foton

  • Trade Count: (3)
  • furťák
  • *****
  • Příspěvků: 1010
  • Pohlaví: Mužské
Zajímavé, hodně zajímavé. Kdybs potřeboval víc NXT motorů, tak dej vědět. Aktuálně je nepotřebuju, rád zapůjčím.
Kdo chce hledá způsoby, kdo nechce hledá důvody.

Offline pryb

  • Trade Count: (49)
  • furťák
  • *****
  • Příspěvků: 521
  • Pohlaví: Mužské
Bod má milanv - poznal, že jde o interferenční pruhy způsobené špatným napájením osvětlení. To je důsledkem snahy mít to "co nejvíc LEGO". Pro napájení osvětlení jsem použil LEGO 12V Trains trasformátor, který dává mizerný tvar výstupního napětí (což motorům a žárovkám vláčků nijak zvlášť nevadí). Kameře to vadí mnohem víc.
Ještě ráno jsem vzal robátkům z Boffinu 470uF kondenzátor. To docela pomohlo, ale dobré to pořád není. Jednotlivé obrázky vypadají dobře, při prohlížení série je vidět, že pruhy tam jsou pořád.

Chtěl jsem původně koupit větší kondenzátor, nakonec jsem na Milanovu radu koupil napěťový měnič, ke kterému dám zdroj od starého notebooku.
« Poslední změna: 28.03.2019, 22:01:07 od pryb »
Aktuální projekt - třídička.
Youtube kanál

Offline pryb

  • Trade Count: (49)
  • furťák
  • *****
  • Příspěvků: 521
  • Pohlaví: Mužské
Dneska se přišel na třídičku podívat Foton. Bude se vylepšovat...



Děkuji.
Aktuální projekt - třídička.
Youtube kanál