Consulting Work Blog Kontakt
← Zpět na blog

Na jeden večer jsem svěřil 3D tiskárnu umělé inteligenci. Třikrát se netrefila - a to je ta nejlepší část

Na jeden večer jsem svěřil 3D tiskárnu umělé inteligenci. Třikrát se netrefila - a to je ta nejlepší část

Kamera uvnitř tiskárny ukázala prázdnou podložku, tryska zaparkovaná v rohu, rozjela se první vrstva. Dívám se na telefon a docvakne mi to: neteče žádný plast. Tryska je horká, hlava jezdí, a nic za ní nezůstává. Tiskárna poctivě tiskla do vzduchu.

Nebylo to poprvé ani naposledy toho večera, co se něco pokazilo. A přesně proto o tom chci vyprávět - ne o naleštěném výsledku, ale o tom, jak to doopravdy vznikalo.

Kde to začalo

Mám Bambu Lab P1S a Claude Code na macu. Nápad byl drzý: nechat AI řídit tiskárnu úplně celou. Ne “vygeneruj mi STL”, ale doopravdy - podívat se kamerou na podložku, naslicovat model, zavést správný plast, spustit tisk, hlídat ho. A při tom zvládat to, co mě vždycky štvalo dělat ručně: “vytiskni tenhle díl o 3 % větší”, “změň číslici na modelu”.

Za večer z toho vyrostl živý systém: dvě sady nástrojů (3D modelování zvlášť od ovládání tiskárny), spojení s P1S přes místní síť, snímky z kamery, slicing z příkazové řádky.

Úplně první věc, kterou systém udělal, byla zkouška sebe sama na drobnosti - navrhl od nuly klíčenku s mými iniciálami, naslicoval ji a připravil k tisku. Na první pohled hloupost, ale prověřilo to celý řetězec najednou: od “chci takovou věc” po soubor připravený na podložku, bez jediného kliknutí myší. Řetězec fungoval. A pak začala opravdová dobrodružství - a to zajímavé je právě tam, kde jsem klopýtal.

Klíčenka s mými iniciálami, kterou systém navrhl od nuly
První průchozí test: klíčenka vymyšlená a připravená k tisku od nuly, bez jediného kliknutí myší.

Přešlap č. 1: tisk do vzduchu

První spuštění, a tiskárna se rozjela bez plastu. Uviděl jsem to očima dřív, než mi to došlo hlavou: na kameře hlava jezdí, ale žádná stopa za ní.

Kamera uvnitř Bambu Lab P1S: tisková hlava nad prázdnou podložkou
Uvnitř P1S: hlava jezdí nad podložkou, ale plast neteče. Tisk do vzduchu, pohled zevnitř.

Příčina byla zároveň hloupá i elegantní. Když slicuješ soubor za běhu, bez vazby na AMS, v úloze chybí příkaz “zaveď filament ze zásobníku”. Tiskárna předpokládá, že plast už je v trysce, a klidně kreslí do prázdna. Standardní příkaz knihovny “zavést filament” posílal kód zásobníku 255 - a to znamená “externí cívka, žádná”. Musel jsem do protokolu a poslat skutečné číslo zásobníku. Potom tiskárna poctivě natáhla hnědé PLA ze třetího slotu, zahřála se, pročistila trysku - a rozjela se už s plastem.

Poučení, které jsem si vryl natvrdo: kontroluj ne “příkaz přijat”, ale “v trysce opravdu je filament”.

Přešlap č. 2: písmo, které jsem hádal třikrát

Mám model univerzitní budovy, na střeše vyryté “Graduation 2026”. Chtěl jsem změnit rok - jedna číslice, ne?

Ukázalo se, že je to detektivka. Model je hotové STL, žádné “prostě uprav text”. Nejdřív jsem analyzoval úplně špatnou střešní rovinu: z renderu nepoznáš, ze které strany se díváš, a dvě hodiny jsem lámal hlavu nad geometrií, která tam vůbec nebyla. Průlom přinesl “rentgen” - hloubková mapa, na které je nápis čitelný jako na fotce, s přesnými souřadnicemi každého písmene.

Hloubková mapa modelu: “Graduation 2026” prosvítá jako na rentgenu
'Rentgen' modelu - hloubková mapa. Nápis je čitelný jako na fotce, s přesnými souřadnicemi každého písmene, a hned je vidět, kterou stranu střechy máš před sebou.

Pak písmo. První volbu jsem udělal od oka a sedmička vyšla mimo. Vedle. Pak algoritmus porovnal rytinu se všemi písmy v systému a sebejistě řekl “Didot Bold, roztažené”. Taky vedle - roztažení byl optický klam z náklonu střechy, ne skutečný. A teprve když mě napadlo mrknout do původního projektu Bambu Studia, našel jsem pravdu: bylo tam “Noto Sans Batak” - písmo úplně bez latinských znaků, takže program tiše dosadil náhradu, čínské Songti. Tím bylo všechno vytištěné.

Maska nápisu “Graduation 2026” vytažená z modelu, černá na bílé
Vytažená maska nápisu - podle ní algoritmus porovnával tvary se všemi písmy v systému.

I když už písmo sedělo, dvakrát jsem se ještě chytil na maličkostech: sedmička seděla o kousek níž než sousední číslice, pak o kousek výš. Měřil jsem pravítkem přímo na modelu, dokud nesedla přesně. Přitom mi došlo, proč sedmička “vypadá divně”: v tomhle písmu je od přírody trochu nižší než dvojka - to je návrh, ne chyba.

Číslice “2027” s linkami verzálek a účaří pro zarovnání
Pravítko přímo na modelu: sedmička sedí nízko, pak vysoko. Posouval jsem ji, dokud nesedla na nulu.

Přešlap č. 3: rohy se zvedly nahoru

Tisk běží, sleduju stream na telefonu - a vidím, jak se konce dlouhých budov zvedají z podložky. První myšlenka byla “podložka se přehřála”.

Stream z kamery: hnědé modely budov se zvednutými rohy nad podložkou
Stream na telefonu: konce dlouhých budov se zvedly z podložky. Brim byl vypnutý a chlazení od prvních vrstev na plno.

Stream z kamery: hnědé budovy skoro hotové, jedna se zhroutila do špagetového klubka
Stejný tisk, jen o kus dál: jedna z budov se utrhla a smotala se do klubka špaget. Takhle doopravdy vypadá 'napoprvé to nevyšlo'.

A tady jsem se chytil při špatném odhadu. Prověřil jsem dokumentaci Bambu i praxi: “příliš horká podložka” v pásmu PLA je mýtus. 55 stupňů je přesně to pravé; přehřátí by dalo vyboulené dno, ne zvednuté hrany. Zvednuté rohy jsou smrštění plus špatná přilnavost. V mém slice profilu byl brim prostě vypnutý, takže dlouhé tenké hrany nic nedrželo dole. K tomu chlazení na plno od prvních vrstev smrštění urychlovalo.

Z toho vznikla asi nejužitečnější věc celého večera: databáze typických tiskových vad a kontrola modelu PŘED tiskem. Teď se systém sám podívá na díl a řekne “velká plochá základna - přidej brim”, “strmý převis - potřeba podpory”, “vysoký díl na úzké základně - překlopí se”. Před selháním, ne po něm.

A pak jsem mu dal oči

Ten průhyb jsem na streamu zachytil náhodou - jen jsem se díval. A napadlo mě: proč by “jen se dívat” mělo být moje práce? Ať se dívá systém.

Teď každých pět minut během tisku vezme snímek z kamery a zeptá se vidoucího modelu: je všechno v pořádku, nebo už katastrofa - chuchvalec “špaget”, odpadlý díl, nános na trysce? Když je to selhání, přijde mi zpráva s fotkou, ještě dřív, než sama tiskárna pozná, že tiskne do prázdna. Dřív se o zkaženém tisku dozvíš o hodinu později, když je celá podložka plná nudlí. Teď skoro hned.

Řeknu upřímně, kde je hranice: hrubé selhání jako špagety pozná spolehlivě, ale mírný průhyb, jako u mých budov, označil za “čistý”. Oči jsou tedy záchranná síť proti katastrofě, ne náhrada kontroly před tiskem. Ať zůstane obojí: “promyslet dopředu” i “hlídat za běhu”.

Okamžik, kdy mě to fakt dostalo

Víte, kdy mi došlo, že tohle není hračka? Řekl jsem slovy: “zkontroluj kamerou, že je podložka volná, a spusť tisk.” A tiskárna ve vedlejším pokoji se rozvrněla. Sama. Zahřála se, olízla podložku, natáhla plast a rozjela se - zatímco já seděl s telefonem a koukal na to jako na kouzelnický trik.

Kamera uvnitř tiskárny: čistá, prázdná podložka připravená k tisku
'Zkontroluj kamerou, že je podložka volná, a spusť.' Podložka je volná - a stroj ve vedlejším pokoji se sám rozvrněl.

Předtím jsem dvacetkrát otevřel slicer myší, tahal model po podložce, zaškrtával políčka. A tady - jedna věta, a stroj ve vedlejším pokoji dělá fyzický objekt. Vážně jsem seděl a hloupě se culil. Ne proto, že “AI je chytrá”, ale protože poprvé se vzdálenost mezi “chci tenhle díl” a “díl leží na podložce” smrskla skoro na nulu.

A co je nejvtipnější? Pokaždé, když se něco pokazilo - vzduch místo plastu, křivá sedmička, zvednutý roh - jsem se nezlobil, ale chytilo mě to. Protože bylo vidět: tady je problém, tady příčina, tady pravidlo, a příště se to už nestane. Je to jako krotit něco živého.

Jak se z toho všeho staly příkazy (o MCP)

Aby to nebyla hromada roztroušených skriptů, sesbíral jsem všechno do dvou sad nástrojů - tomu se říká MCP servery. Rozdělil jsem je schválně: jeden má na starosti jen 3D modely (vytvořit, změřit, roztáhnout, přidat text, rozříznout, spočítat generativně, zkontrolovat před tiskem), druhý jen tiskárnu (stav, kamera, zavést plast, naslicovat, spustit, stop, zapnout stream).

Smysl je prostý: teď tiskárna a modelování nejsou programy, do kterých se musí lézt, ale běžné příkazy, kterým asistent rozumí. “Ukaž kameru.” “Zkontroluj model na problémy.” “Spočítej držák na tuhle zátěž.” “Spusť tisk z hnědého slotu.” Rozdělil jsem je na dva servery záměrně - aby se práce na tvaru a práce s hardwarem nepletly, jako šroubovák a vrtačka leží v oddělených šuplících.

Zní to nudně technicky, ale právě tady žije kouzlo. Postav nástroje jednou pořádně - a pak už jen mluvíš.

Soukromá kamera, kterou nejde najít

Zvláštní kapitolou je stream z kamery. Chtěl jsem sledovat tisk z telefonu odkudkoli, ale s přístupem jen pro mě, a aby ty dveře nešlo ani nahmatat.

Udělali jsme to přes můj vlastní server, ne přes veřejnou službu. Náhodný název domény pod společným certifikátem, aby se neobjevil ve vyhledávacích lozích. Vstup jen s osobním certifikátem na zařízení - bez něj server přeruší spojení ještě před heslem, takže není co zkoušet. Přímý přístup na adresu serveru se prostě ustřihne. Paranoia? Možná. Ale kamera v mém domě je přesně ten případ, kdy je paranoia na místě.

A finále, kvůli kterému to celé bylo

V jednom videu jsem viděl židli, jejíž nosná “kostra” byla navržená generativně: nastavíš, kde jsou úchyty a kde zátěž, a pevnostní výpočet odebere všechen materiál, který nepracuje. Zůstane organická struktura podobná kosti. Chtěl jsem totéž.

Teď to systém umí. Nastavíš prostor, opěrné body a zátěž - a solver vydá příhradový díl, kde materiál sedí jen tam, kde opravdu pracuje. První držák už leží připravený k tisku.

Generativně navržený držák: organická příhradová struktura
První generativně spočítaný držák: materiál zůstal jen tam, kde pod zátěží opravdu pracuje. Připraveno k tisku.

První číslice - tři hodiny. Další tři - po minutě

Tohle je asi to hlavní, co jsem za ten večer pochopil.

Jedna výměna, šestku za sedmičku, mi zabrala skoro tři hodiny. Ne proto, že je úkol těžký, ale protože jsem systém v podstatě učil. Prošli jsme hromadu sedmiček - špatné písmo, špatná výška, jednou o kousek níž než ostatní číslice, jednou o kousek výš. Prohnal jsem to desetkrát a chytal každou maličkost pravítkem. Všechny ty přešlapy mám uložené; dalo by se to položit vedle sebe - celá galerie špatných sedmiček, než se narodila ta správná.

Hotový model budovy s nápisem “Graduation 2027”
První správná sedmička - výsledek skoro tří hodin piplání. Ale po ní už systém věděl, jak udělat rok.

A pak jsem prostě řekl: “teď udělej 2028, 2029 a 2030.” A tady se stalo to, kvůli čemu to celé bylo. Pravidla už jsou zapsaná, nástroje postavené, písmo a hloubka vyladěné - a tři nové roky vyšly každý za minutu dvě. Hned správně. Bez jediné iterace.

Nejdřív jsem tedy strávil hodiny tím, abych systém naučil dělat JEDNU věc dobře. Potom prokousne každý podobný úkol okamžitě. První díl zaplatí celou cestu; zbytek po ní jede zadarmo.

A nebyl to jednorázový úlet

Pak přišly úplně běžné požadavky - a tady se ukázalo, že večer nebyl zbytečný.

Chtěl jsem vytisknout tytéž budovy pro jiné roky. Prostě jsem řekl: udělej 2028, 2029, 2030. Za pár minut byly všechny tři hotové - se stejnou vyladěnou hloubkou a písmem, se kterými jsem se u sedmičky tak dlouho dřel.

Syntetický render podložky s modely budov pro roky 2028, 2029 a 2030
2028, 2029, 2030 - každý vyšel za minutu dvě, hned správně, se stejnou hloubkou a písmem, které jsem vyleštil na sedmičce.

Pak vyplula na povrch pěkná historka o chybě - a o tom, jak rychle se teď opraví. Ukázalo se, že roky byly postavené na ŠPATNÉM modelu budovy: starý koncept místo finální verze, kterou jsem doopravdy poslal univerzitě. Řekl jsem to - a systém se prohrabal mým mailem, našel právě ten německý dopis s přílohou, určil správný soubor (s otevřeným průchodem oblouku a rozšířeným slotem na fotku), porovnal geometrii a znovu aplikoval všechny čtyři roky už na správný model. Minuty. Chyba se opravila skoro tak rychle, jak vznikla.

A takhle ta linka skončila v reálném světě - záběr z kamery tiskárny, žádný render. Správný model z mailu, opravené číslice, brim kolem každé budovy, rohy přitisknuté, roky na střechách čitelné. Žádné tři hodiny trápení: najít, opravit, zařadit do fronty - a vytisklo se to napoprvé čistě, protože každá stará chyba už sedí v pravidlech.

Skutečný záběr z kamery: čtyři čistě vytištěné budovy s roky na střechách
Kamera tiskárny: čtyři budovy s brimem, rohy přitisknuté, roky na střechách. Napoprvé - staré chyby už jsou pravidla.

Budovy na čtyři roky, model opravený za běhu - a to všechno už bez tříhodinového trápení. Jednou to naučíš, potom to prostě používáš.

Stojan, který nás trápí dodnes

A pak jsem si řekl o stojan pod notebook - a tam lehký život skončil.

Začalo to svižně. Uvedl jsem model, Dell Latitude 5430, řekl “skládací a lehký” - a za pár minut jsem měl plochou skládačku ze čtyř dílů: dvě vzdušné bočnice spočítané na skutečnou zátěž, dvě příčky, všechno do sebe zaklapne za patnáct sekund, váží kolem 55 gramů. Na papíře výhra.

Generativně navržená bočnice stojanu pod notebook: vzdušné příhradoví
První pokus: generativně spočítaná bočnice. Hezké, ale je to stavebnice ze čtyř dílů - a já chtěl JEDNU skládací věc.

Zamítl jsem ho. “Skládací” v mé hlavě znamenalo skutečné panty, ne “rozeber na tyčky a poskládej na hromádku”: rozevřít - stojí, složit - plochá deska do tašky. Jeden předmět, ani jeden oddělitelný díl. Řekl jsem: předělat.

A tady začala sága, která běží dodnes.

Nejdřív přišly kostní tvary - kostra ze slitých větví, z některých úhlů skoro socha a jako mechanismus k ničemu: pant slepený z kapek se netočí. Pak voronoiové řezby - už tepleji, buňky v gradientu jako u designových kousků. Pak noc, kdy generátor bez jediné kontroly vyrazil tucet “variant” a průběžně mi je posílal do Telegramu. Ráno jsem upřímně odepsal: tohle je odpad. Není vidět, jak se skládají, půlka neunese notebook, a vytištěné by se nikdy nepohnuly.

Kostní fáze: kostra ze slitých větví
Kostní fáze. Zblízka skoro socha, jako mechanismus nula: kapkový pant se netočí.

Voronoiová fáze: skládací klín s gradientními buňkami
Voronoiová fáze: buňky hustší u okraje, větší uprostřed. Začíná to vypadat jako věc, mechanismus je ještě syrový.

Noční fáze: jedna z automaticky vygenerovaných variant, které šly do koše
Z nekontrolované noční série. Přišlo jich deset. Všechny do koše, právem.

Po tomhle ztrhání jsem proces přestavěl - a to je, myslím, ta nejzajímavější část. V noci teď běží autonomní smyčka: každých pár minut si čerstvá session přečte stavový soubor, prostuduje skutečné skládací stojany s vysokým hodnocením, vylepší generátor a postaví kandidáta. A pak přijde to hlavní slovo - DOKÁŽE to. Skládání se ověřuje geometricky: otočení kolem skutečné osy pantu, nulové průniky dílů v obou polohách, těžiště notebooku přísně mezi podporami, zátěž jde do tvrdého dorazu, ne do tenkého čepu. Potom zvláštní design-soudce rozhodne, jestli se to vůbec smí ukázat. Odpad už se ke mně do telefonu nedostane.

Za první noc smyčka stihla třináct iterací. Tady je ranní nejlepší kus: prolamovaná deska, opěrná noha na pantu tištěném rovnou smontovaném, vačkový zámek, který váha notebooku sama dotlačuje. 111 gramů.

Skládací stojan: rozevřený pohled, voronoiová deska
Ráno po třinácti iteracích: prolamovaná deska, opěrná noha, vačkový zámek. 111 gramů.

Tentýž stojan složený - plochá deska
Složený: plochá deska, pant leží na podložce - přesně tak se i tiskne, už smontovaný.

Pant zblízka
Pant zblízka: čep a články se tisknou smontované s třetinou milimetru vůle; po tisku se osa volně točí.

Uprostřed skládání: noha na půli cesty
Půlka dráhy: skládání je skutečné otočení na pantu, žádná kouzla renderu.

Hotovo? Ještě ne. Pořád si nejsem jistý, že vačka unese kilo a půl, nelíbí se mi úzký rozchod, a dnes ráno jsem zase všechno poslal na předělání - tentokrát s katalogy pantů a zámků, které souběžně sepisují tři agenti. Ale porovnejte oba konce: od “stavebnice z tyček” k předmětu, který čísly dokazuje, že se složí a udrží.

Utrpení? A jaké. Ale přesně na takovém utrpení se systém učí - každé ztrhání se promění v nové kontrolní pravidlo. A jsem si skoro jistý, že příští skládací věc už udělá na první pokus. Uvidíme.

Co jsem si odnesl

Nejcennější na tom večeru nebylo to, co vyšlo napoprvé, ale to, co NEvyšlo. Tisk do vzduchu, tři přešlapy s písmem, zvednuté rohy, špatný odhad o přehřátí. Každá chyba se proměnila v pravidlo, které si systém teď pamatuje za mě.

A teď upřímně. Změnit na modelu jednu číslici ručně je práce na pět minut, spíš míň. Když počítáš jen tenhle úkol, celé moje handrkování se systémem nedává vůbec smysl. Strávil jsem večer tam, kde by stačilo pár kliknutí.

Ale já nekupoval pětiminutovou zkratku. Nestavěl jsem “výměnu číslice”, ale systém, který teď zvládne skoro cokoli: navrhnout, spočítat na pevnost, naslicovat, zavést plast, spustit tisk, hlídat ho a upozornit mě, kde se chystám něco zvorat. Investuj jednou - a potom to pracuje na jakémkoli objektu, ne na jednom nápisu.

A ano, upřímně: je to zatím syrové. Alfa, možná dřív než alfa. Jak dobře to utáhne složité věci, se teprve musí prověřovat a prověřovat. První dávka vyšla se zvednutými rohy, nastavení nesedělo; ale databáze chyb už je postavená, profil opravený, a další dávka vyšla rovná - fotka hotových budov je výš. Ne dokonale napoprvé - ale rychle ke správnému.

A víte co? Ten okamžik - když držíš syrovou, živou, právě postavenou věc, která už něco umí a za chvíli se naučí víc - to je ten pravý požitek. Ne hotový, naleštěný produkt, ale tahle fáze, kdy se to celé teprve rodí. Vážně si to užívám.

Pořád si nejsem jistý, jestli by ta židle z videa unesla mých 80 kilo. A nejsem si jistý, jestli můj systém zítra nezakopne o něco nového. Ale ten skládací stojan na notebook, který stroj navrhl, chci držet v rukou už teď - a ten pocit váží víc než jakákoli záruka.

Stack: Claude Code · MCP · Python · Bambu Lab P1S · Telegram Bot API

Potřebujete něco podobného pro svou vlastní firmu? Podívejte se, jak můžu pomoct →