Sadržaj:
- Korak 1: Zahtjevi
- Korak 2: Izgradnja hardvera
- Korak 3: Softver koji pokreće robota
- Korak 4: Softver za prepoznavanje ljudskog poteza
- Korak 5: Svjetla, kamera, akcija
- Korak 6: Kako nabaviti softver
Video: Šahovski robot napravljen s LEGO -om i Raspberry Pi: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:33
Zadivite svoje prijatelje ovim šahovskim robotom!
Nije previše teško izgraditi ako ste već radili LEGO robote i ako imate barem elementarno znanje o računalnom programiranju i Linuxu.
Robot čini vlastite poteze i koristi vizualno prepoznavanje kako bi odredio potez ljudskog igrača.
Jedna od novih stvari u ovom robotu je kôd za prepoznavanje poteza. Ovaj kôd vizije također se može koristiti za šahovske robote izgrađene na mnoge druge načine (poput mog ChessRobota koji koristi robotsku ruku Lynxmotion).
Nisu potrebne nikakve posebne šahovske ploče, prekidači za trčanje ili bilo što drugo (budući da se ljudski pokret određuje vizualnim prepoznavanjem).
Moj kôd je dostupan za osobnu upotrebu.
Korak 1: Zahtjevi
Sav kôd je napisan na Pythonu, koji će, između ostalog, raditi na Raspberry Pi -u.
Raspberry Pi je računalo veličine kreditne kartice koje se može priključiti na zaslon i tipkovnicu. To je jeftino (oko 40 USD) sposobno malo računalo koje se može koristiti u projektima elektronike i robotike te za mnoge stvari koje radi vaše stolno računalo.
Moj robot koristi Raspberry Pi i Lego. Hardversko sučelje između RPi i Lego Mindstorms EV3 motora i senzora osigurava BrickPi3 iz Dexter Industries.
Lego verzija se temelji na "Charlie the Chess Robot", Darrous Hadi, koju sam ja izmijenio, uključujući modove za korištenje RPi -a, a ne Lego Mindstorms procesora. Koriste se Lego Mindstorms EV3 motori i senzori.
Također će vam trebati stol, kamera, osvjetljenje, tipkovnica, zaslon i pokazivački uređaj (npr. Miš).
I naravno, šahovske figure i tabla.
Sve ove stvari detaljnije opisujem u sljedećim koracima.
Korak 2: Izgradnja hardvera
Kao što sam ranije naznačio, srce koda vizije radit će s različitim nadogradnjama.
Svog sam robota bazirao na "Charlie the Chess Robot" (EV3 verzija) Darrous Hadi, podaci na toj stranici govore kako doći do uputa za izradu. Popis dijelova je ovdje.
Robota sam izmijenio na nekoliko načina.
1. Hvatač. Ovo mi nije uspjelo. Zupčanici su skliznuli, pa sam dodao dodatne Lego komade kako bih to spriječio. A kad bi se dizalica spustila, često bi se zaglavila, pa sam dodao Wattovu vezu kako bih to spriječio.
Iznad je hvatač u akciji koji prikazuje izmijenjenu vezu.
2. Originalna verzija koristi Lego Mindstorms EV3 procesor, ali ja koristim Raspberry Pi, što olakšava korištenje Pythona.
3. Koristim Raspberry Pi 3 Model B.
4. Kako bih RPi spojio s Legom, koristim BrickPi3 iz Dexter Industries. BrickPi se pričvršćuje na Raspberry Pi i zajedno zamjenjuju LEGO Mindstorms NXT ili EV3 Brick.
Kad imate datoteku Lego Digital Designer, postavlja se pitanje nabavke LEGO komada. Opeke možete nabaviti izravno u LEGO trgovini, a to je najjeftiniji način da ih nabavite. Međutim, neće imati sve što vam je potrebno, a cigle će možda potrajati nekoliko tjedana ili više.
Također možete koristiti Rebrickable: otvorite račun, učitajte LDD datoteku i iz toga dobijete popis prodavača.
Još jedan dobar izvor je Bricklink.
Korak 3: Softver koji pokreće robota
Sav kod je napisan na Pythonu 2.
- Dexter Industries isporučuje kôd za podršku premještanja EV3 motora itd. Dolazi s BrickPi3.
- Dajem kôd za pokretanje motora na način da pomiču šahovske figure!
- Šahovski motor je Stockfish - koji može pobijediti svakog čovjeka! "Stockfish je jedan od najjačih šahovskih motora na svijetu. Također je mnogo jači od najboljih ljudskih šahovskih velemajstora."
- Kôd za pokretanje šahovske mašine, provjeru valjanosti poteza i tako dalje je ChessBoard.py
- Za povezivanje s tim koristim neki kôd s
- Moj kôd (u 2 gore) tada se povezuje s tim!
Korak 4: Softver za prepoznavanje ljudskog poteza
Nakon što je igrač napravio potez, kamera snima fotografiju. Kôd obrezuje i rotira tako da šahovska ploča točno pristaje sljedećoj slici. Kvadrati šahovske ploče moraju izgledati četvrtasto !. Na slici postoji izobličenje jer su rubovi ploče udaljeniji od fotoaparata nego središte ploče. Međutim, kamera je dovoljno udaljena da nakon izrezivanja to izobličenje nije značajno. Budući da robot zna gdje se nalaze svi dijelovi nakon premještanja računala, sve što treba učiniti nakon što čovjek napravi potez je da kôd može razlikovati sljedeća tri slučaja:
- Prazan kvadrat
- Crni komad bilo koje vrste
- Bijeli komad bilo koje vrste.
To obuhvaća sve slučajeve, uključujući roštilj i prolaznike.
Robot provjerava je li potez čovjeka ispravan i obavještava ih ako nije! Jedini slučaj koji nije obuhvaćen je kada ljudski igrač promovira pješaka u ne-kraljicu. Igrač tada mora reći robotu što je promovirano djelo.
Sada možemo sliku promatrati u obliku polja šahovske ploče.
Na početnom postavljanju ploče znamo gdje su svi bijeli i crni komadi, a gdje su prazni kvadratići.
Prazni kvadrati imaju mnogo manje varijacije u boji od zauzetih kvadrata. Izračunavamo standardnu devijaciju za svaku od tri RGB boje za svaki kvadrat po svim njegovim pikselima (osim onih blizu granica kvadrata). Maksimalna standardna devijacija za bilo koji prazan kvadrat mnogo je manja od minimalne standardne devijacije za bilo koji zauzeti kvadrat, a to nam omogućuje da, nakon sljedećeg poteza igrača, odredimo koji su polja prazna.
Utvrdivši vrijednost praga za prazne i zauzete kvadrate, sada moramo odrediti boju komada za zauzete kvadrate:
Na početnoj ploči izračunavamo za svaki bijeli kvadrat, za svaki od R, G, B srednju (prosječnu) vrijednost njegovih piksela (osim onih blizu granica kvadrata). Minimum ovih sredina za bilo koji bijeli kvadrat veći je od maksimuma sredina na bilo kojem crnom kvadratu, pa možemo odrediti boju komada za zauzete kvadrate. Kao što je ranije rečeno, ovo je sve što trebamo učiniti kako bismo utvrdili kakav je bio potez ljudskog igrača.
Algoritmi najbolje funkcioniraju ako šahovska ploča ima boju koja je daleko od boje figura! U mom robotu figure su prljavobijele i smeđe, a šahovska ploča ručno izrađena u kartonu i svijetlozelena je s malom razlikom između "crnih" i "bijelih" kvadrata.
Edit 17. listopada 2018: Sada sam obojila smeđe komade u crno, što čini da algoritam radi u promjenjivijim uvjetima osvjetljenja.
Korak 5: Svjetla, kamera, akcija
Svjetla
Treba vam ravnomjeran izvor svjetlosti postavljen preko ploče. Ovaj, koji je stvarno jeftin, koristim s amazon.co.uk - i nema sumnje da postoji nešto slično na amazon.com. Kad je svjetlo u sobi isključeno.
Ažuriranje: Sada imam dva svjetla, kako bih dala ujednačeniji izvor svjetla
Fotoaparat
Nema sumnje da možete koristiti poseban modul kamere Raspberry Pi (s dugim kabelom), ali ja koristim USB kameru - "Logitech 960-001064 C525 HD web kamera - crna" - koja radi s RPi -jem. Morate osigurati da se kamera ne pomiče u odnosu na ploču, izgradnjom tornja ili da ga imate gdje čvrsto učvrstiti. Kamera mora biti prilično visoko iznad ploče kako bi se smanjila geometrijska izobličenja. Imam fotoaparat 58 cm iznad ploče.
Ažuriranje: Sada više volim HP Webcam HD 2300 jer smatram da je pouzdaniji.
Stol
Treba vam čvrst. Ovu sam kupio. Povrh toga možete vidjeti da imam kvadrat od MDF -a, s nekim stvarima koje sprečavaju robota da skače okolo dok se kolica kreću. Bilo bi dobro držati kameru u istom položaju preko ploče!
Tipkovnica
RPi za prvo postavljanje treba USB tipkovnicu. I to koristim za razvoj koda. Jedino za što robotu treba tipkovnica je da pokrene program i simulira udaranje šahovskog sata. Ja sam dobio jednu od ovih. Ali doista, potreban vam je samo miš ili gumb GPIO spojen na RPi
Prikaz
Koristim veliki zaslon za razvoj, ali jedino što robotu treba je reći vam da je vaš potez nevažeći, provjeriti itd. Nabavio sam jedan od ovih, također dostupan na amazon.com.
No, umjesto da zahtijeva zaslon, robot će govoriti ove fraze! To sam učinio pretvarajući tekst u govor pomoću koda kako je ovdje opisano i priključio mali zvučnik. (Ja koristim "Hamburger mini zvučnik").
Fraze koje robot kaže:
- Ček!
- Mat
- Nevažeći potez
- Pobjedio si!
- Pat
- Crtanje trostrukim ponavljanjem
- Pravilo izvući po 50 poteza
Pravilo pedeset poteza u šahu kaže da igrač može zatražiti neriješeno ako u zadnjih pedeset poteza nije napravljen hvatanje i nije se pomaknuo pješak (u tu svrhu "potez" se sastoji od igrača koji je završio svoj potez, nakon čega slijedi protivnik dovršava svoj red).
Možete čuti robota kako govori u kratkom videu "mate budale" iznad (ako pojačate zvuk prilično visoko)!
Korak 6: Kako nabaviti softver
1. Stočna riba
Ako pokrećete Raspbian na svom RPi -u, možete koristiti Stockfish 7 engine - besplatan je. Samo trči:
sudo apt-get install stockfish
2. ChessBoard.py
Uzmi ovo ovdje.
3. Kôd temeljen na
Dolazi s mojim kodom.
4. Python upravljački programi za BrickPi3:
Ovdje nabavite ove.
5. Moj kôd koji poziva sve gore navedene kodove i koji tjera robota na poteze, i moj kôd vida.
Dobijte ovo od mene postavljanjem komentara, a ja ću vam odgovoriti.
Preporučeni:
Arduino šahovski sat: 6 koraka
Arduino šahovski sat: Nisam mogao pronaći upute za dobar Arduino šahovski sat pa sam umjesto toga izgradio svoj koji ću ovdje opisati
Šahovski robot Raspberry Pi Lynxmotion AL5D Ruka: 6 koraka
Šahovski robot Raspberry Pi Lynxmotion AL5D Arm: Napravite ovog šahovskog robota i vidite kako će pobijediti sve! Prilično je jednostavno izgraditi ako slijedite upute o tome kako izgraditi ruku i ako imate barem osnovno znanje o računalnom programiranju i Linuxu . Čovjek, igrajući bijelo, čini
Pametni budilnik: pametni budilnik napravljen od Raspberry Pi: 10 koraka (sa slikama)
Pametni budilnik: pametni budilnik napravljen od Raspberry Pi: Jeste li ikada poželjeli pametni sat? Ako je tako, ovo je rješenje za vas! Napravio sam Smart Alarm Clock, ovo je sat s kojim možete promijeniti vrijeme alarma prema web stranici. Kad se alarm oglasi, oglasit će se zvuk (zujalica) i 2 svjetla će se
Jednostavan Arduino šahovski sat: 5 koraka
Jednostavni Arduino šahovski sat: Kad sam razmišljao raditi šahovski sat s Arduinom, cilj je bio izgraditi pomoću jednostavnog programiranja bez klase upotrebe i raditi s AVR registrom. Korištena je baza Arduino Reference. Najteže je bilo manipulirati odbrojavanjem koristeći samo
LED šahovski set - jednostavna verzija: 12 koraka
LED šahovska garnitura-jednostavna verzija: Tetranitrate je ranije objavio izvrsne upute o tome kako napraviti LED šahovsku garnituru ovdje: https: //www.instructables.com/id/LED-Chess-Set/Našao sam to putem BoingBoinga, ali nisam mogao ' Neću se mučiti s izradom takvog izgleda. Samo sam htio jednu