Obsah:

Šachový robot vyrobený z LEGO a Raspberry Pi: 6 kroků
Šachový robot vyrobený z LEGO a Raspberry Pi: 6 kroků

Video: Šachový robot vyrobený z LEGO a Raspberry Pi: 6 kroků

Video: Šachový robot vyrobený z LEGO a Raspberry Pi: 6 kroků
Video: 🌹Вяжем красивую летнюю женскую кофточку со спущенным рукавом из хлопковой пряжи спицами. Часть 1. 2024, Červenec
Anonim
Image
Image

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

Světla, kamera, akce!
Světla, kamera, akce!

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

Image
Image

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.

  1. Dexter Industries dodává kód na podporu pohybu motorů EV3 atd. To je dodáváno s BrickPi3.
  2. Poskytuji kód, aby se motory pohybovaly takovým způsobem, aby se pohybovaly šachové figurky!
  3. Š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.“
  4. Kód pro ovládání šachového enginu, ověření platnosti tahu atd. Je ChessBoard.py
  5. K propojení s tím používám nějaký kód z
  6. 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: