Satura rādītājs:

Šaha robots, kas izgatavots ar LEGO un Raspberry Pi: 6 soļi
Šaha robots, kas izgatavots ar LEGO un Raspberry Pi: 6 soļi

Video: Šaha robots, kas izgatavots ar LEGO un Raspberry Pi: 6 soļi

Video: Šaha robots, kas izgatavots ar LEGO un Raspberry Pi: 6 soļi
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Novembris
Anonim
Image
Image

Pārsteidz savus draugus ar šo šaha robotu!

To būvēt nav pārāk grūti, ja iepriekš esat izgatavojis LEGO robotus un ja jums ir vismaz elementāras zināšanas par datorprogrammēšanu un Linux.

Robots pats veic gājienus un izmanto vizuālo atpazīšanu, lai noteiktu cilvēka spēlētāja gājienu.

Viena no jaunajām lietām šajā robotā ir kustību atpazīšanas kods. Šis redzes kods ir izmantojams arī šaha robotiem, kas būvēti daudzos citos veidos (piemēram, manam ChessRobot, izmantojot Lynxmotion robotu roku).

Nav nepieciešama īpaša šaha dēlis, niedru slēdži vai kas cits (jo cilvēka kustību nosaka vizuālā atpazīšana).

Mans kods ir pieejams personiskai lietošanai.

1. darbība. Prasības

Gaismas, kamera, darbība!
Gaismas, kamera, darbība!

Viss kods ir rakstīts Python, kas cita starpā darbosies ar Raspberry Pi.

Raspberry Pi ir kredītkartes izmēra dators, ko var pievienot ekrānam un tastatūrai. Tas ir lēts (aptuveni 40 USD), spējīgs mazs dators, ko var izmantot elektronikas projektos un robotikā, kā arī daudzās citās darbībās, ko dara jūsu galddators.

Mans robots izmanto Raspberry Pi un Lego. Aparatūras saskarni starp RPi un Lego Mindstorms EV3 motoriem un sensoriem nodrošina uzņēmums BrickPi3 no Dexter Industries.

Lego būvējums ir balstīts uz Darrous Hadi "Čārlija šaha robotu", ko esmu modificējis es, ieskaitot modifikācijas RPi izmantošanai, nevis Lego Mindstorms procesoru. Tiek izmantoti Lego Mindstorms EV3 motori un sensori.

Jums būs nepieciešams arī galds, kamera, apgaismojums, tastatūra, ekrāns un rādītājierīce (piemēram, pele).

Un, protams, šaha figūras un dēlis.

Tālāk aprakstīšu visas šīs lietas sīkāk.

2. darbība. Aparatūras veidošana

Image
Image

Kā jau iepriekš norādīju, redzes koda sirds darbosies ar dažādām būvēm.

Es balstīju savu robotu uz Darrous Hadi "Čārlija šaha robotu" (EV3 versija), informācija šajā lapā saka, kā iegūt būvniecības instrukcijas. Detaļu saraksts ir šeit.

Es modificēju robotu vairākos veidos.

1. Grābējs. Tas man nederēja. Pārnesumi paslīdēja, tāpēc es pievienoju papildu Lego gabalus, lai to novērstu. Un tad, kad celtnis tika nolaists, tas bieži iesprūst, tāpēc es pievienoju vatu saiti, lai to novērstu.

Augšpusē ir satvērējs darbībā, parādot modificēto saiti.

2. Sākotnējā uzbūvē tiek izmantots Lego Mindstorms EV3 procesors, bet es izmantoju Raspberry Pi, kas atvieglo Python lietošanu.

3. Es izmantoju Raspberry Pi 3 B modeli.

4. Lai sasaistītu RPi ar Lego, es izmantoju BrickPi3 no Dexter Industries. BrickPi piestiprinās pie Raspberry Pi un kopā tie aizstās LEGO Mindstorms NXT vai EV3 Brick.

Ja jums ir Lego digitālā dizainera fails, tad rodas jautājums par LEGO gabalu iegūšanu. Jūs varat iegādāties ķieģeļus tieši no LEGO veikala, un tas ir lētākais veids, kā tos iegūt. Tomēr viņiem nebūs viss nepieciešamais, un ķieģeļu ierašanās var ilgt pāris nedēļas vai ilgāk.

Varat arī izmantot Rebrickable: atveriet kontu, augšupielādējiet LDD failu un no tā iegūstiet pārdevēju sarakstu.

Vēl viens labs avots ir Bricklink.

3. solis: programmatūra, kas liek robotam kustēties

Viss kods ir rakstīts Python 2.

  1. Dexter Industries piegādā kodu, lai atbalstītu EV3 motoru pārvietošanu utt. Tas tiek piegādāts kopā ar BrickPi3.
  2. Es sniedzu kodu, lai motori kustētos tā, lai pārvietotos šaha figūras!
  3. Šaha dzinējs ir Stockfish - kas spēj pārspēt jebkuru cilvēku! "Stockfish ir viens no spēcīgākajiem šaha dzinējiem pasaulē. Tas ir arī daudz spēcīgāks par labākajiem cilvēku šaha lielmeistariem."
  4. Kods šaha dzinēja vadīšanai, gājiena derīguma apstiprināšanai un tā tālāk ir ChessBoard.py
  5. Es izmantoju kādu kodu no vietnes https://chess.fortherapy.co.uk, lai ar to saskartos.
  6. Mans kods (2 iepriekš) saskan ar to!

4. solis: programmatūra cilvēka kustības atpazīšanai

Kad spēlētājs ir izdarījis gājienu, kamera uzņem fotoattēlu. Kods to apgriež un pagriež tā, lai šaha dēlis precīzi atbilstu nākamajam attēlam. Šaha galdiņa laukumiem ir jāizskatās kvadrātveida !. Attēlā ir izkropļojumi, jo tāfeles malas atrodas tālāk no kameras, nekā ir tā dēļa centrs. Tomēr kamera ir pietiekami tālu, lai pēc apgriešanas šie izkropļojumi nebūtu būtiski. Tā kā robots zina, kur atrodas visi gabali pēc datora pārvietošanas, viss, kas jādara pēc cilvēka gājiena, ir tikai tas, lai kods spētu atšķirt šādus trīs gadījumus:

  • Tukšs laukums
  • Jebkura veida melns gabals
  • Balts jebkura veida gabals.

Tas attiecas uz visiem gadījumiem, ieskaitot liešanu un pasažierus.

Robots pārbauda, vai cilvēka gājiens ir pareizs, un informē, ja tā nav! Vienīgais gadījums, uz kuru neattiecas, ir tas, ka cilvēka spēlētājs reklamē bandinieku par karalieni. Pēc tam spēlētājam ir jāpasaka robotam, kāds ir reklamētais gabals.

Tagad mēs varam apsvērt attēlu šaha dēļu kvadrātu izteiksmē.

Sākotnējā tāfeles izveidē mēs zinām, kur atrodas visi baltie un melnie gabali un kur ir tukši kvadrāti.

Tukšiem kvadrātiem ir daudz mazāk krāsu atšķirību nekā aizņemtajiem kvadrātiem. Mēs aprēķinām standarta novirzi katrai no trim RGB krāsām katram kvadrātam visos tā pikseļos (izņemot tos, kas atrodas kvadrāta robežu tuvumā). Maksimālā standarta novirze jebkuram tukšam laukumam ir daudz mazāka nekā minimālā standarta novirze jebkuram aizņemtajam laukumam, un tas ļauj mums pēc nākamā spēlētāja gājiena noteikt, kuri laukumi ir tukši.

Nosakot sliekšņa vērtību tukšiem pret aizņemtajiem kvadrātiem, mums tagad jānosaka aizņemto kvadrātu gabalu krāsa:

Sākotnējā tāfelē mēs aprēķinām katram baltajam kvadrātam katram R, G, B tā pikseļu vidējo (vidējo) vērtību (izņemot kvadrāta robežu tuvumā esošos). Šo līdzekļu minimums jebkuram baltajam kvadrātam ir lielāks par vidējo maksimumu jebkurā melnā kvadrātā, un tāpēc mēs varam noteikt gabalu krāsu aizņemtajiem kvadrātiem. Kā minēts iepriekš, tas ir viss, kas mums jādara, lai noteiktu cilvēka spēlētāja gājienu.

Algoritmi vislabāk darbojas, ja šaha galdam ir krāsa, kas ir tālu no gabalu krāsas! Manā robotā gabali ir gandrīz balti un brūni, un šaha dēlis ir ar rokām darināts kartītē, un tas ir gaiši zaļš, ar nelielu atšķirību starp "melno" un "balto" kvadrātu.

Rediģēt 2018. gada 17. oktobrī: tagad esmu nokrāsojis brūnos gabaliņus matēti melnā krāsā, kas liek algoritmam darboties mainīgākos apgaismojuma apstākļos.

5. solis: gaismas, kamera, darbība

Gaismas

Jums ir nepieciešams vienmērīgs gaismas avots, kas novietots virs tāfeles. Es izmantoju šo, kas ir patiešām lēts, no amazon.co.uk - un, bez šaubām, vietnē amazon.com ir kaut kas līdzīgs. Kad istabas apgaismojums ir izslēgts.

Atjauninājums: man tagad ir divas gaismas, lai nodrošinātu vienmērīgāku gaismas avotu

Kamera

Bez šaubām, jūs varat izmantot īpašo Raspberry Pi kameras moduli (ar garu kabeli), bet es izmantoju USB kameru - "Logitech 960-001064 C525 HD Webcam - Black" -, kas darbojas kopā ar RPi. Jums jāpārliecinās, ka kamera nepārvietojas attiecībā pret dēli, uzbūvējot torni vai atrodot vietu, kur to stingri nostiprināt. Kamerai jāatrodas diezgan augstu virs tāfeles, lai samazinātu ģeometriskos izkropļojumus. Man ir kamera 58 cm virs tāfeles.

Atjauninājums: tagad es dodu priekšroku HP Webcam HD 2300, jo uzskatu to par uzticamāku.

Tabula

Jums ir nepieciešams izturīgs. Es nopirku šo. Papildus tam jūs varat redzēt, ka man ir MDF kvadrāts ar dažām lietām, lai apturētu robota lekšanu apkārt, kad ratiņi kustas. Ieteicams turēt kameru tādā pašā stāvoklī virs tāfeles!

Tastatūra

RPi pirmajai iestatīšanai nepieciešama USB tastatūra. Un es to izmantoju koda izstrādei. Vienīgais, kam robotam nepieciešama tastatūra, ir sākt programmu un simulēt šaha pulksteņa sitienu. Es saņēmu vienu no šiem. Bet patiesībā jums ir nepieciešama tikai pele vai GPIO poga, kas savienota ar RPi

Displejs

Izstrādei izmantoju lielu ekrānu, taču vienīgais, kas robotam nepieciešams, ir pateikt, ka jūsu gājiens ir nederīgs, pārbaudīt utt. Es saņēmu vienu no šiem, pieejams arī vietnē amazon.com.

Bet, nevis prasot displeju, robots runās šīs frāzes! Es to darīju, pārvēršot tekstu runā, izmantojot šeit aprakstīto kodu un pievienojot nelielu skaļruni. (Es izmantoju "Hamburger mini skaļruni").

Frāzes, ko saka robots:

  • Pārbaudiet!
  • Kabatas matiņš
  • Nederīgs gājiens
  • Tu uzvarēji!
  • Strupceļš
  • Zīmējiet trīs reizes
  • Zīmējiet ar 50 gājienu likumu

Šaha piecdesmit gājienu noteikums nosaka, ka spēlētājs var pieprasīt neizšķirtu, ja pēdējos piecdesmit gājienos nav veikta neviena noķeršana un neviens bandinieks nav pārvietots (šim nolūkam "gājiens" sastāv no spēlētāja, kurš pabeidz savu gājienu, un pēc tam pretinieks pabeidz savu kārtu).

Augšējā īsajā "muļķa biedra" videoklipā varat dzirdēt robota runu (ja skaņu ieslēdzat diezgan augstu)!

6. darbība. Kā iegūt programmatūru

1. Stāvi

Ja savā RPi palaižat Raspbian, varat izmantot Stockfish 7 dzinēju - tas ir bez maksas. Vienkārši skrien:

sudo apt-get install stockfish

2. ChessBoard.py

Iegūstiet šo šeit.

3. Kods, kura pamatā ir

Nāk ar manu kodu.

4. Python draiveri BrickPi3:

Iegūstiet šos šeit.

5. Mans kods, kas izsauc visu iepriekš minēto kodu un liek robotam veikt kustības, un mans redzes kods.

Saņemiet to no manis, ievietojot komentāru, un es atbildēšu.

Ieteicams: