Tartalomjegyzék:
- 1. lépés: Követelmények
- 2. lépés: A hardver felépítése
- 3. lépés: A szoftver, amely mozgatja a robotot
- 4. lépés: A szoftver az ember mozgásának felismerésére
- 5. lépés: Fények, kamera, akció
- 6. lépés: A szoftver beszerzése
Videó: Sakkrobot LEGO -val és Raspberry Pi -vel: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Lepje meg barátait ezzel a sakkrobottal!
Nem túl nehéz építeni, ha már készített LEGO robotokat, és ha legalább elemi ismeretekkel rendelkezik a számítógépes programozásról és a Linuxról.
A robot saját mozdulatait hajtja végre, és vizuális felismerés segítségével határozza meg az emberi játékos lépését.
A robot egyik újdonsága a mozgásfelismerés kódja. Ez a látáskód használható sok más módon épített sakkrobotok esetében is (például a Lynxmotion robotkarját használó ChessRobotom).
Nincs szükség speciális sakktáblára, nádkapcsolókra vagy bármi másra (mivel az ember mozgását vizuális felismerés határozza meg).
A kódom személyes használatra elérhető.
1. lépés: Követelmények
Az összes kód Pythonban van írva, amely többek között Raspberry Pi -n is fut.
A Raspberry Pi egy hitelkártya méretű számítógép, amely képernyőhöz és billentyűzethez csatlakoztatható. Ez egy olcsó (körülbelül 40 dollár), képes kis számítógép, amely használható az elektronikai projektekben és a robotikában, és sok mindenben, amit az asztali PC -k csinálnak.
A robotom Raspberry Pi -t és Legót használ. Az RPi és a Lego Mindstorms EV3 motorok és érzékelők közötti hardver interfészt a Dexter Industries BrickPi3 szolgáltatja.
A Lego -konstrukció Darrous Hadi "Charlie the Chess Robot" -jára épül, általam módosítva, beleértve a RPi -t használó modokat is, nem pedig a Lego Mindstorms processzort. Lego Mindstorms EV3 motorokat és érzékelőket használnak.
Szüksége lesz asztalra, kamerára, világításra, billentyűzetre, képernyőre és mutatóeszközre (pl. Egér) is.
És persze sakkfigurák és tábla.
Mindezeket részletesebben leírom a következő lépésekben.
2. lépés: A hardver felépítése
Amint korábban jeleztem, a látáskód szíve különféle konstrukciókkal fog működni.
A robotomat Darrous Hadi "Charlie the Chess Robot" -jára (EV3 -as verzió) alapultam, az oldalon található információk azt írják, hogyan szerezhetők meg az építési utasítások. Az alkatrészlista itt található.
A robotot néhány módon módosítottam.
1. A markoló. Ez nekem nem működött. A fogaskerekek megcsúsztak, ezért további Lego -darabokat tettem hozzá, hogy ezt megakadályozzam. És amikor a darut leeresztették, gyakran elakadt, ezért hozzáadtam egy Watt kapcsolót, hogy ezt megakadályozzam.
Fent látható a markoló akcióban, amely a módosított összekapcsolást mutatja.
2. Az eredeti konstrukció a Lego Mindstorms EV3 processzort használja, de én egy Raspberry Pi -t használok, ami megkönnyíti a Python használatát.
3. Raspberry Pi 3 B modellt használok.
4. Az RPi és a Lego összekapcsolásához a Dexter Industries BrickPi3 -at használom. A BrickPi a Raspberry Pi -hez kapcsolódik, és együtt kicserélik a LEGO Mindstorms NXT vagy EV3 Brick -et.
Ha megvan a Lego Digital Designer fájl, akkor a kérdés a LEGO darabok beszerzése. Téglát közvetlenül a LEGO üzletből szerezhet be, és ez a legolcsóbb módja annak, hogy beszerezze őket. Azonban nem lesz mindenük, amire szüksége van, és a téglák megérkezése néhány hétig vagy tovább is eltarthat.
Használhatja a Rebrickable -t is: nyisson egy fiókot, töltse fel az LDD -fájlt, és onnan szerezze be az eladók listáját.
Egy másik jó forrás a Bricklink.
3. lépés: A szoftver, amely mozgatja a robotot
Minden kód Python 2 -ben van írva.
- A Dexter Industries kódot biztosít az EV3 motorok stb. Mozgatásához. Ez a BrickPi3 -hoz tartozik.
- Megadom a kódot, hogy a motorok úgy mozogjanak, hogy elmozduljanak a sakkfigurák!
- A sakk motorja Stockfish - amely minden embert meg tud verni! "A Stockfish a világ egyik legerősebb sakkmotorja. Sokkal erősebb is, mint a legjobb emberi sakknagymesterek."
- A sakkmotor hajtására, a lépés érvényesítésére vonatkozó kód, és így tovább, a ChessBoard.py
- A https://chess.fortherapy.co.uk webhelyről származó kódot használok az interfészhez.
- A kódom (a fenti 2 -ben) majd kapcsolódik ehhez!
4. lépés: A szoftver az ember mozgásának felismerésére
Miután a játékos megmozdult, a kamera készít egy fényképet. A kód ezt kivágja és elforgatja, hogy a sakktábla pontosan illeszkedjen a következő képhez. A sakktábla négyzeteknek négyzetnek kell látszaniuk !. A kép torzul, mert a tábla szélei távolabb vannak a kamerától, mint a tábla közepe. A kamera azonban elég messze van, így a vágás után ez a torzítás nem jelentős. Mivel a robot tudja, hol van az összes darab a számítógép mozgatása után, ezért az ember lépése után csak annyit kell tennie, hogy a kód meg tudja különböztetni a következő három esetet:
- Üres tér
- Bármilyen fekete darab
- Bármilyen fehér darab.
Ez minden esetre kiterjed, beleértve az öntvényt és az utast.
A robot ellenőrzi, hogy az ember lépése helyes -e, és tájékoztatja őket, ha nem! Az egyetlen eset, amelyre nem terjed ki, az, amikor az emberi játékos gyalogot hirdet nem királynévá. A játékosnak ezután meg kell mondania a robotnak, hogy mi a reklámozott darab.
Most a sakktábla négyzetek szempontjából tekinthetjük a képet.
A kezdeti táblán már tudjuk, hol van az összes fehér és fekete darab, és hol vannak az üres négyzetek.
Az üres négyzetek színe sokkal kisebb, mint az elfoglalt négyzetek. Kiszámítjuk a szórást a három RGB szín mindegyikére minden négyzetre minden pixelén (kivéve a négyzet határainak közelében). Az üres négyzetek maximális szórása sokkal kisebb, mint az elfoglalt négyzetek minimális szórása, és ez lehetővé teszi számunkra, hogy egy későbbi játékosmozgás után megállapítsuk, mely négyzetek üresek.
Miután meghatároztuk az üres és elfoglalt négyzetek küszöbértékét, most meg kell határoznunk a foglalt négyzetek darabszínét:
A kezdő táblán minden fehér négyzetre, R, G, B mindegyikére kiszámítjuk a képpontok átlagos (átlagos) értékét (kivéve a négyzet határainak közelében). Ezen átlagok minimuma bármely fehér négyzetnél nagyobb, mint bármely fekete négyzet átlaga, és így meg tudjuk határozni a darab színét a foglalt négyzeteknél. Amint azt korábban említettük, ez minden, amit meg kell tennünk annak meghatározásához, hogy mi volt az emberi játékos lépése.
Az algoritmusok akkor működnek a legjobban, ha a sakktábla színe messze van a darabok színétől! Az én robotomban a darabok törtfehér és barna színűek, a sakktábla kézzel készített, kartonból készült, világos zöld színű, kevés különbséggel a "fekete" és "fehér" négyzetek között.
Szerkesztés 2018. október 17.: A barna darabokat most matt feketére festettem, ami miatt az algoritmus változékonyabb fényviszonyok mellett működik.
5. lépés: Fények, kamera, akció
Lámpák
A tábla fölött egyenletes fényforrásra van szüksége. Ezt az igazán olcsó terméket az amazon.co.uk -ról használom - és kétségkívül van valami hasonló az amazon.com -on. Kikapcsolt szobavilágítással.
Frissítés: Most két lámpám van, hogy egyenletesebb fényforrást biztosítsak
Kamera
Kétségtelen, hogy használhatja a speciális Raspberry Pi kamera modult (hosszú kábellel), de én egy USB kamerát - "Logitech 960-001064 C525 HD Webcam - Black" - használok, amely az RPi -vel működik. Gondoskodnia kell arról, hogy a kamera ne mozduljon el a táblához képest, építsen egy tornyot vagy legyen helye, ahol szilárdan rögzítheti. A fényképezőgépnek meglehetősen magasan kell lennie a tábla felett a geometriai torzítás csökkentése érdekében. A fényképezőgépem 58 cm -rel a tábla felett van.
Frissítés: Most a HP Webcam HD 2300 -at részesítem előnyben, mivel megbízhatóbbnak találom.
asztal
Kell egy erős. Ezt vettem. Ezen felül láthatod, hogy van egy négyzet alakú MDF lapom, néhány dologgal, ami megakadályozza, hogy a robot ugráljon, amikor a kocsi mozog. Érdemes a kamerát ugyanabban a helyzetben tartani a tábla felett!
Billentyűzet
Az RPi első beállításához USB billentyűzetre van szüksége. És ezt használom a kód fejlesztéséhez. A robotnak csak billentyűzetre van szüksége, hogy elindítsa a programot és szimulálja a sakkóra ütését. Kaptam egy ilyet. Valójában csak egy egérre vagy egy GPIO-ra van szüksége az RPi-hez csatlakoztatva
Kijelző
Nagy képernyőt használok a fejlesztéshez, de a robotnak csak annyit kell tennie, hogy közölje, hogy a lépése érvénytelen, csekk stb. Kaptam egy ilyet, szintén elérhető az amazon.com oldalon.
De ahelyett, hogy megjelenítést igényelne, a robot kimondja ezeket a kifejezéseket! Ezt úgy tettem, hogy a szöveget beszéddé alakítottam az itt leírt kód használatával, és egy kis hangszórót csatoltam. ("Hamburger mini hangszórót" használok).
A robot mondatai:
- Jelölje be!
- Sakk -matt
- Érvénytelen lépés
- Ön nyert!
- Patt
- Rajzoljon háromszoros ismétléssel
- Döntetlen 50 mozdulattal szabály
A sakk ötven lépéses szabálya kimondja, hogy a játékos döntetlenre tarthat igényt, ha az utolsó ötven lépésben nem történt elfogás és gyalog sem mozdult el (e célból a "lépés" abból áll, hogy a játékos befejezi a körét, majd a az ellenfél befejezi a körét).
Hallhatja a robot beszédét a fenti rövid "bolond társ" videóban (ha elég magasra állítja a hangot)!
6. lépés: A szoftver beszerzése
1. Állományhal
Ha Raspbian -ot futtat RPi -jén, használhatja a Stockfish 7 motort - ingyenes. Csak fuss:
sudo apt-get install stockfish
2. ChessBoard.py
Szerezd meg ezt itt.
3. Kód:
A kódommal jár.
4. Python illesztőprogramok a BrickPi3 számára:
Szerezd meg ezeket itt.
5. Az én kódom, amely meghívja a fenti kódot, és a robotot mozgatja, és a látás kódom.
Kérje ezt tőlem egy megjegyzés közzétételével, és válaszolok.
Ajánlott:
Sakkrobot Raspberry Pi Lynxmotion AL5D Kar: 6 lépés
Sakkrobot Raspberry Pi Lynxmotion AL5D Arm: Építsd meg ezt a sakkrobotot, és nézd meg, hogy mindenkit legyőz! Elég könnyű felépíteni, ha követed a kar felépítésére vonatkozó utasításokat, és ha rendelkezel legalább elemi ismeretekkel a számítógépes programozásról és a Linuxról . Az ember, aki fehérrel játszik
Ultimate Lego Raspberry Pi tok: 8 lépés (képekkel)
Végső Lego Raspberry Pi tok: A Lego -nak a 20. század egyik legnagyobb találmányának kell lennie, a Raspberry Pi -nek pedig a 21. század egyik legnagyobbjának, ezért úgy gondoltam, hogy összefogom őket, és elkészítem a saját testreszabható tokomat a 2B -hez . Ha magam készítem, úgy tudom alakítani
Lego Raspberry Pi egyedi tok: 19 lépés
Lego Raspberry Pi egyedi tok: Nemrég vettem egy Raspberry Pi 3 -at, és úgy döntöttem, hogy saját egyedi tokomat szeretném felépíteni. 4 éves apaként nagy mennyiségű Lego -val is rendelkezem :) Ez egyszerűen tökéletes! Szóval sok prototípus után kitaláltam valamit, aminek nagyon örülök
Commodore 64 Felújítás Raspberry Pi, Arduino és Lego segítségével: 17 lépés (képekkel)
Commodore 64 Felújítás a Raspberry Pi, az Arduino és a Lego segítségével: Ez a projekt lehetővé teszi, hogy újra felfedezze az 1980-as évek játékjátékát, feltámasztva egy régi Commodore 64 otthoni számítógépet új alkatrészek és ezeknek a sokoldalú Lego kockáknak a segítségével! Ha rendelkezett ezekkel a számítógépekkel, ez a konstrukció lehetővé teszi az elfelejtett játékok újrajátszását
Lego Lego Skull Man: 6 lépés (képekkel)
Lego Lego Skull Man: Sziasztok, ma megtanítlak benneteket, hogyan készítsetek egy hűvös kis elemekkel működő led lego koponyás embert. Ez nagyszerű lenne a hamarosan megjelenő halloweenkor. Vagy akár egy egyszerű egyszerű projekt is lenne amikor a deszkád vagy csak egy kis palást