computere og skak har været en potent kombination lige siden udseendet af de første skak-spiller computere i 1970 ‘ erne. Du kan endda være i stand til at spille et spil skak på den enhed, du bruger til at læse dette blogindlæg! For digitale producenter kan det dog være det første skridt til at opbygge noget lidt mere spændende at tilføje en Raspberry Pi i blandingen. Tillad os at introducere dig til Joey Meyers skakspilrobot, Raspberry Turk.
Image credit: Joey Meyer
at være både en erfaren programmelingeniør med interesse for maskinlæring og en dygtig skakspiller, er det ikke overraskende, at Joey var interesseret i at tinker med skakprogrammer. Hvad er virkelig fantastisk, selvom, er omfanget og kompleksiteten af den bygning, han kom op med. Fascineret af et berømt historisk fupnummer, Joey brugte sine færdigheder inden for programmering og robotik til at opbygge en open source Raspberry Pi-drevet rekreation af den berømte Mekaniske Turk-automat.
Du kan se Raspberry Turk i aktion på Joeys YouTube-kanal:
et historisk fupnummer
Joey forklarer, at han først stødte på Den Mekaniske Turk gennem en bog af Tom Standage. Et berømt eksempel på mekanisk trickery, den oprindelige Turk blev annonceret som en skakspilautomat, der var i stand til at besejre menneskelige modstandere og løse komplekse gåder.
en moderne rekonstruktion af Den Mekaniske Turk
Billede fra Commons
dens indre arbejde en hemmelighed, Turken turnerede Europa i den bedste del af et århundrede og forvirrede alle, der stødte på det. Desværre viste det sig ikke at være et fantastisk eksempel på tidlig robotteknik. I stedet var det bare en udførlig illusion. De fantastiske skakbevægelser blev ikke udarbejdet af automatens urværkshjerne, men snarere af en menneskelig skakmester, der var listigt skjult inde i huset.
opbygning af en moderne Turk
en moderne version af Den Mekaniske Turk blev bygget i 1980 ‘ erne. bygningen kostede dog $120.000. Til den pris ville det have været umuligt for de fleste producenter at oprette deres egen version. Umuligt, det vil sige indtil nu: Joey bruger en Raspberry Pi 3 til at køre Raspberry Turk, mens et Raspberry Pi-kameramodul håndterer computersyn.
Raspberry Turk midt i et spil
Billedkredit: Joey Meyer
Joey ‘ s Raspberry Turk er indbygget i et pænt træbord. Al elektronik er anbragt i en kasse på den ene side. Skakbrættet er malet direkte på bordets overflade. For at roboten kan spille, tager et kameramodul placeret i et 3D-trykt hus over bordet et billede af skakbrættet. Billedet analyseres derefter for at bestemme, hvilke stykker der er i hvilke positioner på det tidspunkt. Ved at spore ændringer i stykkernes positioner kan Raspberry Turk bestemme, hvilke bevægelser der er foretaget, og hvilket stykke der skal bevæge sig næste gang. For at træne systemet måtte Joey bygge et stort datasæt for at validere en computervisionsmodel. Dette involverede omhyggeligt at flytte stykker i hånden og indsamle flere billeder af hver mulig position.
Se, ingen hænder!
et centralt element i Den Mekaniske Turk var, at automaten syntes at flytte skakbrikkerne helt af sig selv. Selvfølgelig blev dens bevægelser faktisk kontrolleret af en person skjult inde i maskinen. Raspberry Turk, derimod, flytter skakbrikkerne selv. For at opnå dette brugte Joey en robotarm fastgjort til bordet. Armen er primært lavet af Actobotics komponenter. Joey forklarer:
bevægelsen styres af rotationen af to servoer, der er fastgjort til gear i bunden af hvert led i armen. I slutningen af armen er en anden servo, der bevæger en stråle op og ned. I bunden af strålen er en elektromagnet, der kan aktiveres dynamisk for at løfte skakbrikkerne.
Joey monterede skakbrikkerne individuelt med små sektioner af metal dyvel, så magneten på armen kunne samle dem op.
Programmering af Raspberry Turk
Raspberry Turk styres af en dæmon-proces, der kører en perception / action-sekvens, og status opdateres automatisk, når stykkerne flyttes. Koden er skrevet næsten udelukkende i Python. Det hele er tilgængeligt på Joey ‘ s GitHub repo til projektet sammen med hans notesbøger om projektet.
Billedkredit: Joey Meyer
AI backend, der giver robotten sin skakspilningsevne, er i øjeblikket Stockfish, en stærk open source skakmotor. Joey siger, at han gerne vil bygge sin egen motor, når han har tid. For øjeblikket er han dog overbevist om, at denne AI vil vise sig at være en værdig modstander.