Obsah:

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

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

Video: Šachový robot vyrobený z LEGO a Raspberry Pi: 6 krokov
Video: 🔴Cultivo de Jengibre y Cúrcuma en Maceta - En Casa 2024, Júl
Anonim
Image
Image

Ohromte svojich priateľov týmto šachovým robotom!

Nie je to také ťažké stavať, ak ste predtým robili roboty LEGO a ak máte aspoň základné znalosti o počítačovom programovaní a Linuxe.

Robot robí svoje vlastné pohyby a na určenie pohybu ľudského hráča používa vizuálne rozpoznanie.

Jednou z noviniek tohto robota je kód na rozpoznávanie pohybov. Tento kód videnia je tiež použiteľný pre šachové roboty postavené mnohými inými spôsobmi (ako napríklad môj ChessRobot využívajúci robotické rameno Lynxmotion).

Nie sú potrebné žiadne špeciálne šachovnice, trstinové spínače alebo čokoľvek iné (pretože pohyb človeka je určený vizuálnym rozpoznaním).

Môj kód je k dispozícii na osobné použitie.

Krok 1: Požiadavky

Svetlá, kamera, akcia!
Svetlá, kamera, akcia!

Celý kód je napísaný v Pythone, ktorý pobeží okrem iného na Raspberry Pi.

Raspberry Pi je počítač veľkosti kreditnej karty, ktorý je možné zapojiť do obrazovky a klávesnice. Jedná sa o lacný (asi 40 dolárov) malý malý počítač, ktorý je možné použiť v projektoch elektroniky a robotiky a na mnohé činnosti, ktoré robí váš stolný počítač.

Môj robot používa Raspberry Pi a Lego. Hardvérové rozhranie medzi motormi a snímačmi RPi a Lego Mindstorms EV3 poskytuje spoločnosť BrickPi3 od spoločnosti Dexter Industries.

Zostavenie Lega je založené na „šachovom robotovi Charlie“od Darrousa Hadiho, ktorý som upravil ja, vrátane spôsobov, ako používať procesor RPi, a nie procesor Lego Mindstorms. Používajú sa motory a senzory Lego Mindstorms EV3.

Budete tiež potrebovať stôl, fotoaparát, osvetlenie, klávesnicu, obrazovku a ukazovacie zariadenie (napr. Myš).

A samozrejme, šachové figúrky a doska.

Všetky tieto veci podrobnejšie popíšem v nasledujúcich krokoch.

Krok 2: Zostava hardvéru

Image
Image

Ako som už naznačil, jadro kódu videnia bude fungovať s rôznymi zostavami.

Svojho robota som postavil na základe „Robota Charlieho šachu“(verzia EV3) od Darrousa Hadiho, informácie na tejto stránke uvádzajú, ako získať návod na zostavenie. Zoznam dielov je tu.

Robota som upravil niekoľkými spôsobmi.

1. grabber. Toto pre mňa nefungovalo. Ozubené kolesá prekĺzli, a tak som pridal ďalšie diely z Lega, aby som tomu zabránil. A potom, keď bol žeriav spustený, často sa zasekával, a tak som pridal Wattovo prepojenie, aby som tomu zabránil.

Hore je drapák v akcii, ktorý ukazuje upravenú väzbu.

2. Pôvodná zostava používa procesor Lego Mindstorms EV3, ale ja používam Raspberry Pi, čo uľahčuje používanie Pythonu.

3. Používam Raspberry Pi 3 Model B.

4. Na prepojenie RPi s Lego používam BrickPi3 od Dexter Industries. BrickPi sa pripája k Raspberry Pi a spoločne nahrádza tehlu LEGO Mindstorms NXT alebo EV3.

Keď máte súbor Lego Digital Designer, je tu otázka získania dielov LEGO. Tehly môžete získať priamo z obchodu LEGO a je to najlacnejší spôsob ich získania. Nebudú však mať všetko, čo potrebujete, a dovoz tehál môže trvať niekoľko týždňov alebo viac.

Môžete tiež použiť Rebrickable: otvorte si účet, nahrajte súbor LDD a získajte zoznam predajcov.

Ďalším dobrým zdrojom je Bricklink.

Krok 3: Softvér, vďaka ktorému sa robot pohybuje

Celý kód je napísaný v Pythone 2.

  1. Dexter Industries dodáva kód na podporu pohybu motorov EV3 atď. To sa dodáva s BrickPi3.
  2. Poskytujem kód, aby sa motory mohli pohybovať takým spôsobom, akým sa dajú pohybovať šachové figúrky!
  3. Šachovým motorom je Stockfish - ktorý dokáže poraziť každého človeka! "Stockfish je jedným z najsilnejších šachových motorov na svete. Je tiež oveľa silnejší ako najlepší ľudskí šachoví veľmajstri."
  4. Kód na ovládanie šachového motora, overenie platnosti ťahu a podobne je ChessBoard.py
  5. Na prepojenie s tým používam nejaký kód z
  6. Môj kód (v bode 2 vyššie) s tým potom spolupracuje!

Krok 4: Softvér na rozpoznanie ľudského pohybu

Potom, čo hráč urobí svoj pohyb, fotoaparát urobí fotografiu. Kód to orezá a otočí tak, aby šachovnica presne zodpovedala následnému obrázku. Šachovnicové štvorce musia vyzerať hranato !. Na obrázku je skreslenie, pretože okraje dosky sú od kamery ďalej ako stred dosky. Fotoaparát je však dostatočne ďaleko, takže po orezaní nie je toto skreslenie výrazné. Pretože robot po pohybe počítača vie, kde sú všetky figúrky, potom, čo človek urobí pohyb, stačí, aby kód dokázal rozpoznať rozdiel medzi týmito tromi prípadmi:

  • Prázdne námestie
  • Čierny kus akéhokoľvek druhu
  • Biely kus akéhokoľvek druhu.

To sa týka všetkých prípadov, vrátane rošády a en passant.

Robot skontroluje, či je pohyb človeka správny, a informuje ho, ak nie je! Jediný prípad, ktorý nie je zahrnutý, je prípad, keď ľudský hráč premení pešiaka na ne Queen. Hráč potom musí robotovi povedať, čo je propagovaná figúrka.

Teraz môžeme obrázok zvážiť z hľadiska šachovnicových štvorcov.

Na počiatočnom nastavení dosky vieme, kde sú všetky biele a čierne figúrky a kde sú prázdne štvorce.

Prázdne štvorce majú oveľa menej farebných variácií ako obsadené štvorce. Vypočítame štandardnú odchýlku pre každú z troch farieb RGB pre každý štvorec vo všetkých jeho pixeloch (iných ako tie, ktoré sa nachádzajú blízko hraníc štvorca). Maximálna štandardná odchýlka pre akékoľvek prázdne pole je oveľa menšia ako minimálna štandardná odchýlka pre akékoľvek obsadené pole a to nám umožňuje, po nasledujúcom ťahu hráča, určiť, ktoré políčka sú prázdne.

Po určení prahovej hodnoty pre prázdne verzus obsadené štvorce musíme teraz určiť farbu dielov pre obsadené štvorce:

Na počiatočnej tabuli vypočítame pre každý biely štvorec, pre každý z R, G, B, priemernú (priemernú) hodnotu jeho pixelov (iných ako tie, ktoré sa nachádzajú blízko hraníc štvorca). Minimum týchto priemerov pre akýkoľvek biely štvorec je väčšie ako maximum priemerov pre akýkoľvek čierny štvorec, a tak môžeme určiť farbu dielu pre obsadené štvorce. Ako už bolo uvedené, toto je všetko, čo musíme urobiť, aby sme zistili, aký bol krok ľudského hráča.

Algoritmy fungujú najlepšie, ak má šachovnica farbu, ktorá má ďaleko od farby figúrok! V mojom robote sú figúrky sivobiele a hnedé a šachová doska je ručne vyrobená z karty a je svetlozelená s malým rozdielom medzi „čiernym“a „bielym“štvorcom.

Upraviť 17. októbra 2018: Hnedé kúsky som teraz namaľoval matnou čiernou, vďaka čomu algoritmus funguje za premenlivých svetelných podmienok.

Krok 5: Svetlá, kamera, akcia

Svetlá

Potrebujete rovnomerný zdroj svetla umiestnený nad doskou. Používam tento, ktorý je skutočne lacný, z amazon.co.uk - a nepochybne existuje niečo podobné aj na amazon.com. Keď sú svetlá v miestnosti vypnuté.

Aktualizácia: Teraz mám dve svetlá, aby som poskytol rovnomernejší zdroj svetla

fotoaparát

Nepochybne môžete použiť špeciálny kamerový modul Raspberry Pi (s dlhým káblom), ale ja používam USB kameru - „Webová kamera Logitech 960-001064 C525 HD - čierna“- ktorá pracuje s RPi. Musíte zaistiť, aby sa kamera nepohybovala vzhľadom na dosku, postavením veže alebo možnosťou niekde ju pevne pripevniť. Fotoaparát musí byť dostatočne vysoko nad doskou, aby sa znížilo geometrické skreslenie. Fotoaparát mám 58 cm nad doskou.

Aktualizácia: Teraz uprednostňujem webovú kameru HP HD 2300, pretože sa mi zdá spoľahlivejšia.

Tabuľka

Potrebujete pevný. Kúpil som tento. Okrem toho vidíte, že mám štvorec z MDF s niekoľkými vecami, ktoré zabraňujú skákaniu robota, keď sa vozík pohybuje. Je dobré držať kameru v rovnakej polohe nad doskou!

Klávesnica

Na prvé nastavenie RPi potrebuje klávesnicu USB. A to používam na vývoj kódu. Jediné, na čo robot potrebuje klávesnicu, je spustenie programu a simulácia úderu na šachové hodiny. Dostal som jeden z nich. V skutočnosti však potrebujete iba myš alebo tlačidlo GPIO pripojené k RPi

Displej

Na vývoj používam veľkú obrazovku, ale robot potrebuje iba to, aby vám oznámil, že váš krok je neplatný, skontroloval ho atď. Dostal som jeden z nich, dostupný aj na amazon.com.

Ale namiesto toho, aby robot vyžadoval displej, bude tieto frázy hovoriť! Vykonal som to prevodom textu na reč pomocou kódu, ako je tu popísané, a pripojením malého reproduktora. (Používam „malý reproduktor Hamburger“).

Frázy, ktoré robot hovorí:

  • Skontrolovať!
  • Mat
  • Neplatný pohyb
  • Vyhral si!
  • Patová situácia
  • Nakreslite trojnásobné opakovanie
  • Pravidlo remízy 50 ťahov

Pravidlo päťdesiatich ťahov v šachu hovorí, že hráč môže požiadať o remízu, ak nebolo chytené a ak nebol počas posledných päťdesiatich ťahov presunutý žiadny pešiak (na tento účel „ťah“pozostáva z hráča, ktorý dokončí svoj ťah, po ktorom nasleduje súper dokončí svoj ťah).

Rozprávanie robota môžete počuť v krátkom videu „Bláznovho kamaráta“vyššie (ak zvýšite zvuk dosť vysoko)!

Krok 6: Ako získať softvér

1. Stockfish

Ak na svojom RPi spustíte Raspbian, môžete použiť engine Stockfish 7 - je to zadarmo. Proste bež:

sudo apt-get install stockfish

2. ChessBoard.py

Získajte to tu.

3. Kód založený na

Dodáva sa s mojím kódom.

4. Ovládače Pythonu pre BrickPi3:

Získajte ich tu.

5. Môj kód, ktorý vyvolá všetok kód uvedený vyššie a ktorý prinúti robota vykonať pohyby, a môj kód videnia.

Získajte to odo mňa uverejnením komentára a ja odpoviem.

Odporúča: