Kazalo:
- 1. korak: Zahteve
- 2. korak: Zgradba strojne opreme
- 3. korak: Programska oprema, zaradi katere se robot premika
- 4. korak: Programska oprema za prepoznavanje človekovega gibanja
- 5. korak: Luči, kamera, akcija
- 6. korak: Kako do programske opreme
Video: Šahovski robot narejen iz LEGO in Raspberry Pi: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
Presenetite svoje prijatelje s tem šahovskim robotom!
Zgraditi ga ni težko, če ste že izdelovali LEGO robote in če imate vsaj osnovno znanje o računalniškem programiranju in Linuxu.
Robot se sam premika in z vizualnim prepoznavanjem določi potezo človeškega igralca.
Ena od novih stvari v tem robotu je koda za prepoznavanje premikov. Ta koda vizije je uporabna tudi za šahovske robote, zgrajene na številne druge načine (na primer moj ChessRobot z uporabo robotske roke Lynxmotion).
Nobena posebna šahovska deska, trstična stikala ali karkoli drugega (saj je človekova poteza določena z vizualnim prepoznavanjem).
Moja koda je na voljo za osebno uporabo.
1. korak: Zahteve
Vsa koda je napisana v Pythonu, ki bo med drugim deloval na Raspberry Pi.
Raspberry Pi je računalnik velikosti kreditne kartice, ki ga lahko priključite na zaslon in tipkovnico. Je poceni (okrog 40 USD) zmogljiv mali računalnik, ki ga je mogoče uporabiti pri projektih elektronike in robotike ter pri številnih stvareh, ki jih počne vaš namizni računalnik.
Moj robot uporablja Raspberry Pi in Lego. Strojni vmesnik med motorji in senzorji RPi in Lego Mindstorms EV3 zagotavlja BrickPi3 iz Dexter Industries.
Zgradba Lega temelji na "Charlie the Chess Robot", avtorja Darrous Hadi, ki sem ga spremenil, vključno z načini uporabe RPi namesto procesorja Lego Mindstorms. Uporabljajo se motorji in senzorji Lego Mindstorms EV3.
Potrebovali boste tudi mizo, kamero, osvetlitev, tipkovnico, zaslon in kazalno napravo (npr. Miško).
In seveda šahovske figure in tabla.
Vse te stvari podrobneje opišem v naslednjih korakih.
2. korak: Zgradba strojne opreme
Kot sem že omenil, bo srce kode vida delovalo z različnimi zgradbami.
Svojega robota sem zasnoval na "Charlie the Chess Robot" (različica EV3) Darrous Hadi, podatki na tej strani pravijo, kako dobiti navodila za izdelavo. Seznam delov je tukaj.
Robota sem spremenil na nekaj načinov.
1. Grabilica. To mi ni uspelo. Zobniki so zdrsnili, zato sem dodal dodatne kocke Lego, da bi to preprečil. Ko se je žerjav spustil, se je pogosto zagozdil, zato sem dodal Wattovo povezavo, da bi to preprečil.
Zgoraj je grabilica v akciji, ki prikazuje spremenjeno povezavo.
2. Prvotna zgradba uporablja procesor Lego Mindstorms EV3, jaz pa Raspberry Pi, ki olajša uporabo Pythona.
3. Uporabljam Raspberry Pi 3 Model B.
4. Za povezavo RPi z Legom uporabljam BrickPi3 iz Dexter Industries. BrickPi se pritrdi na Raspberry Pi in skupaj zamenjata LEGO Mindstorms NXT ali EV3 Brick.
Ko imate datoteko Lego Digital Designer, se pojavi vprašanje pridobivanja kosov LEGO. Opeke lahko kupite neposredno v trgovini LEGO in to je najcenejši način za njihovo pridobitev. Vendar pa ne bodo imeli vsega, kar potrebujete, in lahko pridejo opeke nekaj tednov ali več.
Uporabite lahko tudi možnost Rebrickable: odprite račun, naložite datoteko LDD in iz nje dobite seznam prodajalcev.
Drug dober vir je Bricklink.
3. korak: Programska oprema, zaradi katere se robot premika
Vsa koda je napisana v Pythonu 2.
- Dexter Industries dobavlja kodo za podporo premikanju motorjev EV3 itd. To je priloženo BrickPi3.
- Zagotavljam kodo za premikanje motorjev tako, da premikajo šahovske figure!
- Šahovski motor je Stockfish - ki lahko premaga vsakega človeka! "Stockfish je eden najmočnejših šahovskih motorjev na svetu. Prav tako je veliko močnejši od najboljših človeških šahovskih velemojstrov."
- Koda za pogon šahovskega motorja, potrditev veljavnosti poteze itd. Je ChessBoard.py
- Za vmesnik uporabljam nekaj kode s
- Moja koda (v 2 zgoraj) se nato poveže s tem!
4. korak: Programska oprema za prepoznavanje človekovega gibanja
Ko se igralec premakne, fotoaparat posname fotografijo. Koda obreže in zavrti tako, da se šahovnica natančno prilega naslednji sliki. Kvadrati šahovnice morajo izgledati pravokotno !. Na sliki je popačenje, ker so robovi plošče bolj oddaljeni od kamere kot središče plošče. Vendar pa je kamera dovolj daleč, da po obrezovanju to popačenje ni pomembno. Ker robot ve, kje so vsi kosi po premiku računalnika, je po tem, ko se človek premakne, treba narediti le to, da lahko koda pokaže razliko med naslednjimi tremi primeri:
- Prazen kvadrat
- Črni kos kakršne koli vrste
- Beli kos kakršne koli vrste.
To zajema vse primere, vključno z rokovanjem in prehodom.
Robot preveri, ali je poteza človeka pravilna, in ga obvesti, če ni! Edini primer, ki ni zajet, je, da človeški igralec promovira pešca v ne-kraljico. Igralec mora nato robotu povedati, kaj je promovirani del.
Zdaj lahko sliko obravnavamo kot kvadrate šahovnice.
Pri začetni postavitvi plošče vemo, kje so vsi beli in črni kosi in kje so prazni kvadrati.
Prazni kvadrati imajo veliko manj razlike v barvi kot zasedeni. Izračunamo standardni odklon za vsako od treh barv RGB za vsak kvadrat po vseh njegovih pikslih (razen tistih blizu meja kvadrata). Največji standardni odklon za kateri koli prazen kvadrat je veliko manjši od minimalnega standardnega odklona za kateri koli zasedeni kvadrat, kar nam omogoča, da po naslednjem premiku igralca ugotovimo, kateri kvadrati so prazni.
Ko smo določili mejno vrednost za prazne in zasedene kvadrate, moramo zdaj določiti barvo kosa za zasedene kvadrate:
Na začetni plošči izračunamo za vsak beli kvadrat, za vsako od R, G, B povprečno (povprečno) vrednost njegovih slikovnih pik (razen tistih blizu meja kvadrata). Najmanjša vrednost teh sredstev za kateri koli beli kvadrat je večja od največje vrednosti za kateri koli črni kvadrat, zato lahko določimo barvo kosa za zasedene kvadrate. Kot smo že omenili, je to vse, kar moramo storiti, da ugotovimo, kakšen je bil korak človeškega igralca.
Algoritmi najbolje delujejo, če ima šahovnica barvo, ki je daleč od barve figur! V mojem robotu so kosi umazano bele in rjave barve, šahovska deska pa je ročno izdelana iz kartona in je svetlo zelena z majhno razliko med "črnimi" in "belimi" kvadrati.
Edit 17. oktober 2018: Zdaj sem rjavo rjavo pobarval v mat črno, zaradi česar algoritem deluje v bolj spremenljivih svetlobnih pogojih.
5. korak: Luči, kamera, akcija
Luči
Potrebujete enakomeren vir svetlobe, nameščen na plošči. Tega, ki je res poceni, uporabljam z amazon.co.uk - in nedvomno je na amazon.com nekaj podobnega. Pri izklopljeni sobni luči.
Posodobitev: Zdaj imam dve luči za bolj enakomeren vir svetlobe
Kamera
Brez dvoma lahko uporabite poseben modul kamere Raspberry Pi (z dolgim kablom), jaz pa uporabljam kamero USB - "Logitech 960-001064 C525 HD Webcam - Black" - ki deluje z RPi. Zagotoviti morate, da se kamera ne premakne glede na ploščo, tako da zgradite stolp ali da ga imate kje trdno pritrditi. Kamera mora biti precej visoko nad ploščo, da se zmanjša geometrijsko popačenje. Fotoaparat imam 58 cm nad desko.
Posodobitev: Zdaj imam raje HP Webcam HD 2300, saj se mi zdi bolj zanesljiv.
Tabela
Potrebujete trdnega. Tole sem kupil. Poleg tega lahko vidite, da imam kvadrat iz MDF -ja, z nekaterimi stvarmi, ki preprečujejo, da bi robot skakal naokoli, ko se voziček premakne. Dobro je, da kamero držite v istem položaju nad ploščo!
Tipkovnica
RPi za prvo nastavitev potrebuje tipkovnico USB. In to uporabljam za razvoj kode. Robot potrebuje le tipkovnico, da zažene program in simulira udarjanje v šahovsko uro. Imam enega od teh. Toda v resnici potrebujete le miško ali gumb GPIO, povezan z RPi
Zaslon
Za razvoj uporabljam velik zaslon, a edino, kar mora robot povedati, da je vaša poteza neveljavna, preverite itd. Enega od teh sem dobil tudi na spletnem mestu amazon.com.
Toda namesto da bi zahteval zaslon, bo robot govoril te fraze! To sem naredil s pretvorbo besedila v govor s kodo, kot je opisano tukaj, in priključitvijo majhnega zvočnika. (Uporabljam "mini zvočnik Hamburger").
Fraze, ki jih robot pravi:
- Preveri!
- Mah
- Neveljavna poteza
- Zmagal si!
- Zastoj
- Nariši s trikratno ponovitvijo
- Pravilo žrebanja za 50 potez
Pravilo petdesetih potez v šahu navaja, da lahko igralec zahteva neodločen rezultat, če v zadnjih petdesetih potezah ni bil ujet in ni bila premaknjena nobena peška (v ta namen "potezo" sestavljajo igralci, ki zaključijo svoj obrat, čemur sledi nasprotnik, ki zaključi svoj red).
Robota lahko slišite v zgornjem kratkem videu "norčev prijatelj" (če močno povečate zvok)!
6. korak: Kako do programske opreme
1. Nakladnica
Če zaženete Raspbian na svojem RPi -ju, lahko uporabite motor Stockfish 7 - brezplačen je. Samo zaženite:
sudo apt-get install stockfish
2. ChessBoard.py
Pridobite to tukaj.
3. Koda, ki temelji na
Prihaja z mojo kodo.
4. Gonilniki Python za BrickPi3:
Pridobite jih tukaj.
5. Moja koda, ki prikliče vso zgornjo kodo in ki robot naredi, ter moja koda vida.
Pridobite to od mene tako, da objavite komentar in odgovoril vam bom.
Priporočena:
Šahovski robot Raspberry Pi Lynxmotion AL5D Roka: 6 korakov
Šahovski robot Raspberry Pi Lynxmotion AL5D Arm: Zgradite tega šahovskega robota in si oglejte, da premaga vse! Zgraditi ga je precej enostavno, če sledite navodilom, kako zgraditi roko, in če imate vsaj osnovno znanje o računalniškem programiranju in Linuxu . Človek, ki igra belo, naredi
Pameten ventilator, narejen pametno: 7 korakov
Dumb Fan Made Smart: Tipičen ventilator na podstavku sem želel narediti pametnega, ker se mi je naveličal ročnega vklopa in izklopa, ko je na drugi strani sobe in sem na kavču ali v postelji. Želela sem si tudi, da bi si vzela čas med spanjem. Neki oboževalec
Doma narejen Digispark: 5 korakov
Doma narejen Digispark: Digispark je razvojna plošča mikrokrmilnika na osnovi ATtiny85, opremljena z vmesnikom USB. Kodiranje je podobno Arduinu in za razvoj uporablja znani Arduino IDE. Moj digispark bo napajal samo USB. Digispark je popolnoma združljiv z
Digitalni šah - Sledite svoji šahovski igri na spletu: 5 korakov
Digitalni šah - Sledite svoji šahovski igri na spletu: Že od malih nog igram veliko šaha, in ker ima splet ogromno spletnih mest za igranje šaha proti računalnikom ali živim nasprotnikom, nikoli nisem našel spletnega mesta ki sledi vaši šahovski igri, v kateri pravzaprav igrate
LED šahovski komplet - preprosta različica: 12 korakov
LED šahovska garnitura-preprosta različica: Tetranitrat je prej objavil odlično navodilo, kako narediti LED šahovsko garnituro: https: //www.instructables.com/id/LED-Chess-Set/ Našel sem jo prek BoingBoinga, vendar je nisem mogel ne boš motil pri izdelavi takega, ki je izgledal tako bliskovito. Hotel sem samo eno