Obsah:
- Krok 1: Požadavky
- Krok 2: Sestavení hardwaru
- Krok 3: Software, díky kterému se robot pohybuje
- Krok 4: Software pro rozpoznávání lidského pohybu
- Krok 5: Světla, kamera, akce
- Krok 6: Jak získat software
Video: Šachový robot vyrobený z LEGO a Raspberry Pi: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
Ohromte své přátele tímto šachovým robotem!
Není těžké stavět, pokud jste dříve vyráběli roboty LEGO a pokud máte alespoň základní znalosti o počítačovém programování a Linuxu.
Robot provádí vlastní pohyby a pomocí tahu člověka určuje pohyb lidského hráče.
Jednou z novinek tohoto robota je kód pro rozpoznávání pohybu. Tento kód vidění je také použitelný pro šachové roboty postavené mnoha jinými způsoby (například můj ChessRobot využívající robotickou ruku Lynxmotion).
Nejsou vyžadovány žádné speciální šachovnice, jazýčkové spínače nebo cokoli jiného (protože pohyb člověka je určen vizuálním rozpoznáním).
Můj kód je k dispozici pro osobní použití.
Krok 1: Požadavky
Veškerý kód je napsán v Pythonu, který poběží mimo jiné na Raspberry Pi.
Raspberry Pi je počítač velikosti kreditní karty, který lze připojit k obrazovce a klávesnici. Jedná se o levný (zhruba 40 dolarů) schopný malý počítač, který lze použít v elektronických projektech a robotice a pro mnoho věcí, které váš stolní počítač dělá.
Můj robot používá Raspberry Pi a Lego. Hardwarové rozhraní mezi motory RPI a motory a senzory Lego Mindstorms EV3 poskytuje společnost BrickPi3 od společnosti Dexter Industries.
Sestavení Lega je založeno na „Charlieho šachovém robotu“od Darrouse Hadiho, který jsem upravil já, včetně modů pro použití RPi, nikoli procesoru Lego Mindstorms. Jsou použity motory a senzory Lego Mindstorms EV3.
Budete také potřebovat stůl, kameru, osvětlení, klávesnici, obrazovku a polohovací zařízení (např. Myš).
A samozřejmě šachové figurky a prkno.
Všechny tyto věci popisuji podrobněji v následujících krocích.
Krok 2: Sestavení hardwaru
Jak jsem již dříve naznačil, jádro kódu vidění bude fungovat s různými sestaveními.
Svého robota jsem založil na "Charlie the Chess Robot" (verze EV3) od Darrousa Hadiho, informace na této stránce uvádějí, jak získat pokyny k sestavení. Seznam dílů je zde.
Robota jsem upravil několika způsoby.
1. Drapák. To pro mě nefungovalo. Převodovka sklouzla, a tak jsem přidal další lego dílky, abych tomu zabránil. A pak, když byl jeřáb spuštěn, často se zasekával, proto jsem přidal Wattovo spojení, abych tomu zabránil.
Nahoře je drapák v akci, který ukazuje upravené propojení.
2. Původní build používá procesor Lego Mindstorms EV3, ale já používám Raspberry Pi, což usnadňuje používání Pythonu.
3. Používám Raspberry Pi 3 Model B.
4. Abych propojil RPi s Lego, používám BrickPi3 od Dexter Industries. BrickPi se připojí k Raspberry Pi a společně nahradí LEGO Mindstorms NXT nebo EV3 Brick.
Když máte soubor Lego Digital Designer, pak je otázka pořízení dílků LEGO. Cihly můžete získat přímo z obchodu LEGO a toto je nejlevnější způsob, jak je získat. Nebudou však mít vše, co potřebujete, a dovoz cihel může trvat několik týdnů i déle.
Můžete také použít Rebrickable: otevřete si účet, nahrajte soubor LDD a získáte seznam prodejců.
Dalším dobrým zdrojem je Bricklink.
Krok 3: Software, díky kterému se robot pohybuje
Veškerý kód je napsán v Pythonu 2.
- Dexter Industries dodává kód na podporu pohybu motorů EV3 atd. To je dodáváno s BrickPi3.
- Poskytuji kód, aby se motory pohybovaly takovým způsobem, aby se pohybovaly šachové figurky!
- Šachovým motorem je Stockfish - který dokáže porazit každého člověka! „Stockfish je jedním z nejsilnějších šachových motorů na světě. Je také mnohem silnější než nejlepší lidští šachoví velmistři.“
- Kód pro ovládání šachového enginu, ověření platnosti tahu atd. Je ChessBoard.py
- K propojení s tím používám nějaký kód z
- Můj kód (v 2 výše) pak s tím spolupracuje!
Krok 4: Software pro rozpoznávání lidského pohybu
Poté, co hráč provedl svůj tah, fotoaparát pořídí fotografii. Kód to ořízne a otočí tak, aby šachovnice přesně odpovídala následujícímu obrázku. Šachovnicová políčka musí vypadat čtvercová! V obraze dochází ke zkreslení, protože okraje desky jsou dále od kamery než střed desky. Fotoaparát je však dostatečně daleko, takže po oříznutí není toto zkreslení významné. Protože robot ví, kde jsou všechny tahy po pohybu počítače, pak vše, co je třeba udělat po pohybu člověka, je, aby kód byl schopen rozlišit následující tři případy:
- Prázdné náměstí
- Černý kus jakéhokoli druhu
- Bílý kus jakéhokoli druhu.
To zahrnuje všechny případy, včetně rošády a en passant.
Robot zkontroluje, zda je pohyb člověka správný, a pokud ne, informuje je! Jediným nepokrytým případem je situace, kdy lidský hráč promění pěšce v ne-dámu. Hráč pak musí robotovi říci, co je propagovaný kus.
Nyní můžeme obrázek zvážit z hlediska šachovnicových čtverců.
Na počátečním nastavení desky víme, kde jsou všechny bílé a černé figurky a kde jsou prázdná políčka.
Prázdné čtverce mají mnohem menší barevnou variabilitu než obsazené čtverce. Vypočítáme standardní odchylku pro každou ze tří barev RGB pro každý čtverec ve všech jeho pixelech (kromě těch, které se nacházejí poblíž hranic čtverce). Maximální standardní odchylka pro jakýkoli prázdný čtverec je mnohem menší než minimální standardní odchylka pro jakýkoli obsazený čtverec, a to nám umožňuje po následném tahu hráče určit, která políčka jsou prázdná.
Když jsme určili prahovou hodnotu pro prázdné versus obsazené čtverce, musíme nyní určit barvu dílku pro obsazené čtverce:
Na počáteční desce vypočítáme pro každý bílý čtverec, pro každý z R, G, B, průměrnou (průměrnou) hodnotu jeho pixelů (jiné než ty, které se nacházejí poblíž hranic čtverce). Minimum těchto průměrů pro jakýkoli bílý čtverec je větší než maximum průměrů pro jakýkoli černý čtverec, a tak můžeme určit barvu dílku pro obsazené čtverce. Jak již bylo řečeno, toto je vše, co musíme udělat, abychom zjistili, jaký byl tah lidského hráče.
Algoritmy fungují nejlépe, pokud má šachovnice barvu, která je hodně vzdálená barvě figurek! V mém robotu jsou figurky špinavě bílé a hnědé a šachovnice je ručně vyrobená z karty a je světle zelená s malým rozdílem mezi „černým“a „bílým“čtvercem.
Upravit 17. října 2018: Nyní jsem namaloval hnědé kousky na matnou černou, díky čemuž algoritmus funguje za proměnlivějších světelných podmínek.
Krok 5: Světla, kamera, akce
Světla
Potřebujete rovnoměrný zdroj světla umístěný nad deskou. Používám tento, který je opravdu levný, z amazon.co.uk - a bezpochyby na amazon.com něco podobného existuje. S vypnutými světly v místnosti.
Aktualizace: Nyní mám dvě světla, abych poskytl rovnoměrnější zdroj světla
Fotoaparát
Není pochyb o tom, že můžete použít speciální kamerový modul Raspberry Pi (s dlouhým kabelem), ale já používám USB kameru - „Webová kamera Logitech 960-001064 C525 HD - černá“- která pracuje s RPi. Musíte zajistit, aby se kamera nepohybovala s ohledem na desku, postavením věže nebo někam, kde ji pevně upevníte. Fotoaparát musí být poměrně vysoko nad deskou, aby se omezilo geometrické zkreslení. Fotoaparát mám 58 cm nad deskou.
Aktualizace: Upřednostňuji nyní webovou kameru HP Webcam HD 2300, protože se mi zdá spolehlivější.
Stůl
Potřebujete robustní. Koupil jsem tento. Kromě toho vidíte, že mám čtverec MDF, s několika věcmi, které zabraňují robotovi skákat kolem, když se vozík pohybuje. Je dobré mít kameru na palubě ve stejné poloze!
Klávesnice
Pro první nastavení RPi potřebuje USB klávesnici. A používám to pro vývoj kódu. Jediné, k čemu robot potřebuje klávesnici, je spuštění programu a simulace úderu na šachové hodiny. Dostal jsem jeden z nich. Ale ve skutečnosti potřebujete pouze myš nebo tlačítko GPIO připojené k RPi
Zobrazit
K vývoji používám velkou obrazovku, ale jediná věc, kterou robot potřebuje, je říct vám, že váš tah je neplatný, zkontrolovat atd. Mám jeden z nich, dostupný také na amazon.com.
Ale spíše než vyžadovat displej, robot bude tyto fráze mluvit! Udělal jsem to převedením textu na řeč pomocí kódu, jak je popsáno zde, a připojením malého reproduktoru. (Používám „malý reproduktor Hamburger“).
Fráze robot říká:
- Šek!
- Šach mat
- Neplatný tah
- Vyhrál jsi!
- Patová situace
- Kreslení trojnásobným opakováním
- Pravidlo remízy 50 tahů
Pravidlo padesáti tahů v šachu říká, že hráč může požádat o remízu, pokud nebylo provedeno žádné zajetí a nebyl během posledních padesáti tahů přesunut žádný pěšec (pro tento účel „tah“sestává z hráče, který dokončí svůj tah, po kterém následuje soupeř dokončí svůj tah).
Robota můžete slyšet mluvit v krátkém videu „kamarád blázna“výše (pokud zvýšíte zvuk docela vysoko)!
Krok 6: Jak získat software
1. Stockfish
Pokud na svém RPi používáte Raspbian, můžete použít engine Stockfish 7 - je to zdarma. Prostě běž:
sudo apt-get install stockfish
2. ChessBoard.py
Získejte toto zde.
3. Kód založený na
Dodává se s mým kódem.
4. Ovladače Pythonu pro BrickPi3:
Získejte je zde.
5. Můj kód, který vyvolá veškerý výše uvedený kód a který přiměje robota provést tah, a můj kód vidění.
Získejte to ode mne zveřejněním komentáře a já vám odpovím.
Doporučuje:
Šachový robot Raspberry Pi Lynxmotion AL5D Rameno: 6 kroků
Chess Robot Raspberry Pi Lynxmotion AL5D Arm: Postavte tohoto šachového robota a uvidíte, že porazí každého! Je docela snadné ho postavit, pokud můžete postupovat podle pokynů k sestavení ramene a pokud máte alespoň základní znalosti o počítačovém programování a Linuxu . Člověk hrající bíle dělá
Inteligentní budík: inteligentní budík vyrobený z Raspberry Pi: 10 kroků (s obrázky)
Chytrý budík: Chytrý budík vyrobený z Raspberry Pi: Chtěli jste někdy chytré hodiny? Pokud ano, toto je řešení pro vás! Vytvořil jsem inteligentní budík, toto jsou hodiny, u kterých můžete podle času na webu změnit čas budíku. Když se spustí alarm, ozve se zvuk (bzučák) a 2 kontrolky
SafetyLock: chytrý zámek vyrobený z Raspberry Pi (otisk prstu a RFID): 10 kroků
SafetyLock: chytrý zámek vyrobený z Raspberry Pi (otisk prstu a RFID): Chtěli jste někdy přístupnější způsob zabezpečení svého domu? Pokud ano, toto je řešení pro vás! Vytvořil jsem SafetyLock, jedná se o zámek, který lze otevřít otiskem prstu, odznakem RFID a dokonce i prostřednictvím webové stránky. Díky tomuto konceptu budete
Kombinovaný kamerový mikroskop vyrobený s Lego: 12 kroků (s obrázky)
Kombinátor kamerového mikroskopu vyrobený s Lego: Ahoj všichni, dnes ukážu, jak vytvořit kombinátor fotoaparátu s mikroskopem (vyrobený s díly Lego), který můžeme snáze zachytit detaily na mikroskopu. Začněme
Box pro Raspberry Pi Model B a napájecí zdroj vyrobený z dřevěných podložek: 10 kroků
Box pro Raspberry Pi Model B a napájecí zdroj vyrobený z dřevěných podložek: Box, který pojme Raspberry Pi 3 Model B a jeho napájecí zdroj vyrobený z cedrového dřeva. Díly: 1. Raspberry Pi 3 Model B2. Podložky z cedrového dřeva 3. Lepidlo na dřevo 4. Pila na dozery 3/4 palce Milwaukee Dole Kleště pro zajištění nosu jehly 6. 1/2 palce, #