Turinys:
- 1 žingsnis: Reikalavimai
- 2 žingsnis: Aparatūros kūrimas
- 3 žingsnis: programinė įranga, kuri priverčia robotą judėti
- 4 žingsnis: programinė įranga žmogaus judėjimui atpažinti
- 5 žingsnis: šviesos, fotoaparatas, veiksmas
- 6 veiksmas: kaip gauti programinę įrangą
Video: Šachmatų robotas, pagamintas naudojant „LEGO“ir „Raspberry Pi“: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Nustebinkite savo draugus šiuo šachmatų robotu!
Tai nėra labai sunku sukurti, jei anksčiau kūrėte LEGO robotus ir turite bent elementarių žinių apie kompiuterių programavimą ir „Linux“.
Robotas daro savo judesius ir naudoja vizualinį atpažinimą, kad nustatytų žmogaus žaidėjo judesį.
Vienas iš naujų šio roboto dalykų yra judesio atpažinimo kodas. Šis vizijos kodas taip pat gali būti naudojamas šachmatų robotams, pastatytiems daugeliu kitų būdų (pvz., Mano „ChessRobot“naudojant „Lynxmotion“robotinę ranką).
Nereikia jokių specialių šachmatų lentų, nendrinių jungiklių ar kitų dalykų (nes žmogaus judesį lemia vizualinis atpažinimas).
Mano kodas galimas asmeniniam naudojimui.
1 žingsnis: Reikalavimai
Visas kodas parašytas „Python“, kuris, be kita ko, veiks su „Raspberry Pi“.
„Raspberry Pi“yra kredito kortelės dydžio kompiuteris, kurį galima prijungti prie ekrano ir klaviatūros. Tai nebrangus (apie 40 USD), galintis mažas kompiuteris, kurį galima naudoti elektronikos projektuose ir robotikoje bei daugeliui dalykų, kuriuos daro jūsų stalinis kompiuteris.
Mano robotas naudoja „Raspberry Pi“ir „Lego“. Techninę sąsają tarp RPi ir „Lego Mindstorms EV3“variklių bei jutiklių teikia „BrickPi3“iš „Dexter Industries“.
„Lego“konstrukcija sukurta pagal Darrouso Hadi „Charlie the Chess Robot“, kurią aš pakeičiau, įskaitant modifikacijas, skirtas naudoti RPi, o ne „Lego Mindstorms“procesorių. Naudojami „Lego Mindstorms EV3“varikliai ir jutikliai.
Jums taip pat reikės stalo, fotoaparato, apšvietimo, klaviatūros, ekrano ir žymeklio (pvz., Pelės).
Ir, žinoma, šachmatų figūros ir lenta.
Tolesnius veiksmus išsamiau aprašysiu visus šiuos dalykus.
2 žingsnis: Aparatūros kūrimas
Kaip jau minėjau, regėjimo kodo širdis veiks su įvairiomis konstrukcijomis.
Savo robotą grindžiau Darrous Hadi „Charlie the Chess Robot“(EV3 versija), tame puslapyje pateikta informacija, kaip gauti kūrimo instrukcijas. Dalių sąrašas yra čia.
Aš pakeičiau robotą keliais būdais.
1. Grobikas. Man tai nepadėjo. Krumpliaračiai paslydo, todėl, kad to išvengčiau, pridėjau papildomų „Lego“detalių. Ir tada, kai kranas buvo nuleistas, jis dažnai užstrigdavo, todėl pridėjau „Watt“jungtį, kad to išvengčiau.
Viršuje veikia griebtuvas, rodantis modifikuotą jungtį.
2. Originalioje konstrukcijoje naudojamas „Lego Mindstorms EV3“procesorius, bet aš naudoju „Raspberry Pi“, todėl lengva naudotis „Python“.
3. Aš naudoju Raspberry Pi 3 B modelį.
4. Norėdami prijungti RPi prie „Lego“, naudoju „BrickPi3“iš „Dexter Industries“. „BrickPi“tvirtinasi prie „Raspberry Pi“ir kartu pakeičia „LEGO Mindstorms NXT“arba „EV3 Brick“.
Kai turite „Lego Digital Designer“failą, kyla klausimas dėl LEGO dalių gavimo. Plyteles galite įsigyti tiesiai iš LEGO parduotuvės, ir tai yra pigiausias būdas jas įsigyti. Tačiau jie neturės visko, ko jums reikia, o plytos gali užtrukti porą savaičių ar ilgiau.
Taip pat galite naudoti „Rebrickable“: atidarykite paskyrą, įkelkite LDD failą ir gaukite pardavėjų sąrašą.
Kitas geras šaltinis yra „Bricklink“.
3 žingsnis: programinė įranga, kuri priverčia robotą judėti
Visas kodas parašytas „Python 2“.
- „Dexter Industries“tiekia kodą, skirtą EV3 variklių perkėlimui ir pan. Tai pateikiama kartu su „BrickPi3“.
- Pateikiu kodą, kad varikliai judėtų taip, kad judėtų šachmatų figūros!
- Šachmatų variklis yra „Stockfish“- kuris gali įveikti bet kurį žmogų! "" Stockfish "yra vienas stipriausių šachmatų variklių pasaulyje. Jis taip pat yra daug stipresnis už geriausius žmonių šachmatų grandus."
- „ChessBoard.py“yra šachmatų variklio varymo, judėjimo galiojimo patvirtinimo kodas ir pan.
- Aš naudoju tam tikrą kodą iš https://chess.fortherapy.co.uk, kad su juo sąveikau.
- Mano kodas (2 aukščiau) tada su juo sąveikauja!
4 žingsnis: programinė įranga žmogaus judėjimui atpažinti
Žaidėjui atlikus judesį, kamera nufotografuoja. Kodas apkarpomas ir pasukamas taip, kad šachmatų lenta tiksliai atitiktų vėlesnį vaizdą. Šachmatų lentos aikštės turi atrodyti kvadratinės !. Vaizdas yra iškraipytas, nes plokštės kraštai yra toliau nuo fotoaparato nei plokštės centras. Tačiau fotoaparatas yra pakankamai toli, todėl po apkarpymo šis iškraipymas nėra reikšmingas. Kadangi robotas žino, kur yra visos dalys po kompiuterio perkėlimo, viskas, ką reikia padaryti po to, kai žmogus juda, yra tas, kad kodas galėtų atskirti šiuos tris atvejus:
- Tuščia aikštė
- Bet kokios rūšies juodas gabalas
- Bet kokios rūšies baltas gabalas.
Tai apima visus atvejus, įskaitant liejimą ir keleivius.
Robotas patikrina, ar žmogaus judesys teisingas, ir informuoja, jei ne! Vienintelis atvejis, kurio neapima, yra tas atvejis, kai žaidėjas žmogus skatina pėstininką tapti ne karaliene. Tada žaidėjas turi pasakyti robotui, koks yra reklamuojamas kūrinys.
Dabar galime apsvarstyti vaizdą šachmatų lentos kvadratais.
Pradiniame lentos nustatyme mes žinome, kur yra visos baltos ir juodos dalys, o kur yra tušti kvadratai.
Tuščių kvadratų spalvos skiriasi daug mažiau nei užimtų kvadratų. Mes apskaičiuojame standartinį nuokrypį kiekvienai iš trijų RGB spalvų kiekvienam kvadratui visuose jo taškuose (išskyrus tuos, kurie yra šalia kvadrato ribų). Maksimalus bet kurio tuščio kvadrato standartinis nuokrypis yra daug mažesnis už minimalų bet kurio užimto kvadrato standartinį nuokrypį, ir tai leidžia mums po to, kai žaidėjas juda, nustatyti, kurie kvadratai yra tušti.
Nustatę tuščių ir užimtų kvadratų slenkstinę vertę, dabar turime nustatyti užimtų kvadratų gabalo spalvą:
Pradinėje lentoje apskaičiuojame kiekvieną baltą kvadratą, kiekvienam iš R, G, B, jo pikselių (išskyrus tuos, kurie yra šalia kvadrato ribų) vidutinę (vidutinę) vertę. Minimalus šių vidurkių skaičius bet kokiam baltam kvadratui yra didesnis už maksimalų vidurkį bet kuriame juodame kvadrate, todėl galime nustatyti užimtų kvadratų gabalo spalvą. Kaip minėta anksčiau, tai yra viskas, ką turime padaryti, kad nustatytume, koks buvo žmogaus žaidėjo žingsnis.
Algoritmai geriausiai veikia, jei šachmatų lentos spalva yra toli nuo figūrų spalvos! Mano roboto figūros yra balkšvos ir rudos spalvos, o šachmatų lenta yra rankų darbo iš kortelės ir yra šviesiai žalios spalvos, nedaug skirtumo tarp „juodųjų“ir „baltųjų“kvadratų.
Redaguoti 2018 m. Spalio 17 d. Dabar rudus gabalus nudažiau matine juoda spalva, todėl algoritmas veikia esant labiau kintančioms apšvietimo sąlygoms.
5 žingsnis: šviesos, fotoaparatas, veiksmas
Šviesos
Jums reikia tolygaus šviesos šaltinio, esančio virš lentos. Aš naudoju šį, tikrai pigų, iš amazon.co.uk - ir, be abejo, yra kažkas panašaus amazon.com. Išjungus kambario apšvietimą.
Atnaujinimas: dabar turiu du žibintus, kad šviesos šaltinis būtų tolygesnis
Fotoaparatas
Be jokios abejonės, galite naudoti specialų „Raspberry Pi“fotoaparato modulį (su ilgu laidu), tačiau aš naudoju USB kamerą - „Logitech 960-001064 C525 HD Webcam - Black“- kuri veikia su RPi. Turite užtikrinti, kad fotoaparatas nejudėtų lentos atžvilgiu, pastatydami bokštą ar turėdami vietą, kur jį tvirtai pritvirtinti. Norint sumažinti geometrinius iškraipymus, fotoaparatas turi būti gana aukštai virš lentos. Turiu fotoaparatą 58 cm virš lentos.
Atnaujinimas: dabar man labiau patinka „HP Webcam HD 2300“, nes manau, kad jis yra patikimesnis.
Lentelė
Jums reikia tvirto. Aš nusipirkau šį. Be to, matote, kad turiu MDF kvadratą su tam tikrais daiktais, kurie neleistų robotui šokinėti, kai vežimėlis juda. Patartina laikyti fotoaparatą toje pačioje padėtyje virš lentos!
Klaviatūra
Pirmajai sąrankai RPi reikia USB klaviatūros. Ir aš jį naudoju kurdamas kodą. Vienintelis dalykas, kuriam robotui reikia klaviatūros, yra paleisti programą ir imituoti šachmatų laikrodžio pataikymą. Aš gavau vieną iš šių. Bet iš tikrųjų jums reikia tik pelės arba mygtuko GPIO, prijungto prie RPi
Ekranas
Kūrimui naudoju didelį ekraną, tačiau vienintelis dalykas, kurio robotui reikia, yra pasakyti, kad jūsų žingsnis yra negaliojantis, patikrinti ir tt. Aš gavau vieną iš šių, taip pat pasiekiamą amazon.com.
Bet užuot reikalaudamas ekrano, robotas kalbės šias frazes! Aš tai padariau konvertuodamas tekstą į kalbą, naudodamas čia aprašytą kodą, ir prijungęs nedidelį garsiakalbį. (Aš naudoju „Hamburger mini garsiakalbį“).
Frazės, kurias sako robotas:
- Patikrinti!
- Šachmatas
- Netinkamas žingsnis
- Tu laimėjai!
- Aklavietė
- Pieškite tris kartus
- Lygiosios 50 judesių taisyklė
Penkiasdešimt ėjimų šachmatų taisyklėje teigiama, kad žaidėjas gali pretenduoti į lygiąsias, jei per pastaruosius penkiasdešimt ėjimų nebuvo atliktas nė vienas gaudymas ir nebuvo perkeltas pėstininkas (šiuo tikslu „ėjimas“susideda iš žaidėjo, kuris užbaigia savo eilę, o po to priešininkas baigia savo eilę).
Galite išgirsti robotą kalbant aukščiau esančiame trumpame „kvailio draugo“vaizdo įraše (jei garsą pakeliate gana aukštai)!
6 veiksmas: kaip gauti programinę įrangą
1. Žuvys
Jei naudojate „Raspbian“savo RPi, galite naudoti „Stockfish 7“variklį - tai nemokama. Tiesiog bėk:
sudo apt-get install stockfish
2. ChessBoard.py
Gaukite tai čia.
3. Kodas, pagrįstas
Ateina su mano kodu.
4. „BrickPi3“„Python“tvarkyklės:
Gaukite juos čia.
5. Mano kodas, kuris iškviečia visą aukščiau esantį kodą ir kuris priverčia robotą atlikti judesius, ir mano regėjimo kodas.
Gaukite tai iš manęs, paskelbę komentarą, ir aš atsakysiu.
Rekomenduojamas:
„Arduino“šachmatų laikrodis: 6 žingsniai
„Arduino“šachmatų laikrodis: neradau instrukcijų apie gerą „Arduino“šachmatų laikrodį, todėl sukūriau savo, kurį aprašysiu čia
Šachmatų robotas „Raspberry Pi Lynxmotion AL5D“: 6 žingsniai
Šachmatų robotas Raspberry Pi Lynxmotion AL5D Arm: Sukurkite šį šachmatų robotą ir pamatykite, kaip jis įveikė visus! Tai gana lengva sukurti, jei galite sekti instrukcijas, kaip sukurti ranką, ir jei turite bent elementarių žinių apie kompiuterių programavimą ir „Linux“. Žmogus, žaisdamas baltai, daro
Paprastas „Arduino“šachmatų laikrodis: 5 žingsniai
Paprastas „Arduino“šachmatų laikrodis: Kai galvojau padaryti šachmatų laikrodį su „Arduino“, tikslas buvo sukurti naudojant paprastą programavimą be naudojimo klasės ir dirbti su AVR registru. Naudota bazė buvo „Arduino Reference“. Sunkiausia buvo manipuliuoti laikmačiu naudojant tik
Balansavimo robotas / 3 ratų robotas / STEM robotas: 8 žingsniai
Balansavimo robotas / 3 ratų robotas / STEM robotas: Mes sukūrėme kombinuotą balansavimo ir 3 ratų robotą, skirtą naudoti mokyklose ir po pamokų. Robotas sukurtas naudojant „Arduino Uno“, pasirinktinį skydą (pateikiama visa konstrukcijos informacija), „Li Ion“akumuliatorių paketą (visa tai atitinka
Fotoaparato ir mikroskopo derinys, pagamintas naudojant „Lego“: 12 žingsnių (su nuotraukomis)
Fotoaparato ir mikroskopo derinys, pagamintas naudojant „Lego“: Sveiki visi! Šiandien aš parodysiu, kaip padaryti fotoaparatą prie mikroskopo derintuvo (pagamintas iš „Lego“dalių), kad būtų lengviau užfiksuoti mikroskopo detales. Pradėkime