Datamaskiner og sjakk har vært en potent kombinasjon helt siden utseendet på de første sjakkspillende datamaskiner på 1970-tallet. Du kan selv være i stand til å spille et parti sjakk på enheten du bruker til å lese dette blogginnlegget! For digitale beslutningstakere kan det imidlertid være første skritt å bygge Noe litt mer spennende å legge Til En Raspberry Pi i blandingen. La Oss introdusere Deg For Joey Meyers sjakkspillende robot, Raspberry Turk.
bilde kreditt: Joey Meyer
Å være både en erfaren programvareingeniør med interesse for maskinlæring og en dyktig sjakkspiller, er det ikke overraskende At Joey var interessert i å tinkere med sjakkprogrammer. Det som virkelig er fantastisk, er imidlertid omfanget og kompleksiteten til bygningen han kom opp med. Fascinert av en berømt historisk spøk, joey brukte sine ferdigheter i programmering og robotikk for å bygge en Åpen Kildekode Raspberry Pi-drevet rekreasjon av den berømte Mechanical Turk automat.
Du kan se Raspberry Turk i aksjon På Joeys YouTube-kanal:
en historisk hoax
Joey forklarer at han først møtte Mechanical Turk gjennom En bok Av Tom Standage. Et kjent eksempel på mekanisk trickery, den opprinnelige Turk ble annonsert som en sjakkspillautomat, i stand til å beseire menneskelige motstandere og løse komplekse gåter.
en moderne rekonstruksjon av Den Mekaniske Turk
Bilde fra Wikimedia Commons
Dens indre arbeid er en hemmelighet, Turken turnerte Europa For den beste delen av et århundre, forvirret alle som opplevde det. Dessverre viste det seg ikke å være et fantastisk eksempel på tidlig robotteknikk. I stedet var det bare en forseggjort illusjon. De fantastiske sjakkbevegelsene ble ikke utarbeidet av automatens urverk, men heller av en menneskelig sjakkmester som var listig skjult inne i foringsrøret.
Å Bygge en moderne Turk
en moderne versjon Av Den Mekaniske Turk ble bygget på 1980-tallet. men bygningen kostet $120.000. Til den prisen ville det vært umulig for de fleste beslutningstakere å lage sin egen versjon. Umulig, det vil si til nå: Joey bruker En Raspberry Pi 3 til å kjøre Raspberry Turk, mens En Raspberry Pi Kameramodul håndterer datasyn.
Raspberry Turk i midten av et spill
bilde kreditt: Joey Meyer
Joey ‘ S Raspberry Turk er bygget inn i et pent trebord. All elektronikk er plassert i en boks på den ene siden. Sjakkbrettet er malt direkte på bordets overflate. For at roboten skal kunne spille, tar En Kameramodul plassert i ET 3d-trykt hus over bordet et bilde av sjakkbrettet. Bildet blir deretter analysert for å finne ut hvilke brikker er i hvilke posisjoner på det punktet. Ved å spore endringer i posisjonene til brikkene, Kan Raspberry Turk bestemme hvilke trekk som er gjort, og hvilket stykke som skal bevege seg neste. For å trene systemet måtte Joey bygge et stort datasett for å validere en datasynsmodell. Dette innebar møysommelig flytte brikkene for hånd og samle flere bilder av hver mulig posisjon.
Se, ingen hender!
et viktig trekk ved Mechanical Turk var at automaten syntes å flytte sjakkbrikkene helt av seg selv. Selvfølgelig ble bevegelsene faktisk kontrollert av en person som var skjult inne i maskinen. Raspberry Turk, derimot, flytter sjakkbrikkene selv. For å oppnå Dette brukte Joey en robotarm festet til bordet. Armen er laget hovedsakelig Av Actobotics komponenter. Joey forklarer:
bevegelsen styres ved rotasjon av to servoer som er festet til tannhjul ved foten av hver kobling av armen. På enden av armen er en annen servo som beveger en stråle opp og ned. På bunnen av strålen er en elektromagnet som kan aktiveres dynamisk for å løfte sjakkbrikkene.
Joey monterte sjakkbrikkene individuelt med små deler av metallplugg slik at magneten på armen kunne plukke dem opp.
Programmering Av Raspberry Turk
Raspberry Turk styres av en demonprosess som kjører en persepsjon / handlingssekvens, og statusen oppdateres automatisk når brikkene flyttes. Koden er skrevet nesten helt I Python. Det er alt tilgjengelig På Joey ‘ S GitHub repo for prosjektet, sammen med hans notatbøker på prosjektet.
bilde kreditt: Joey Meyer
AI backend som gir roboten sin sjakk-spiller evne er For tiden Stockfish, en sterk åpen kildekode sjakk motor. Joey sier han ønsker å bygge sin egen motor når han har tid. For øyeblikket er han imidlertid sikker på at DENNE AI vil vise seg å være en verdig motstander.