datorer och schack har varit en potent kombination ända sedan utseendet på de första schackspelande datorerna på 1970-talet. du kanske till och med kan spela ett schackspel på enheten du använder för att läsa detta blogginlägg! För digitala tillverkare kan dock lägga till en Raspberry Pi i mixen vara det första steget för att bygga något lite mer spännande. Låt oss presentera dig för Joey Meyers schackspelande robot, Raspberry Turk.
bildkredit: Joey Meyer
eftersom Joey är både en erfaren mjukvaruingenjör med intresse för maskininlärning och en skicklig schackspelare är det inte förvånande att Joey var intresserad av att tinka med schackprogram. Vad är verkligen fantastisk, fastän, är omfattningen och komplexiteten i byggnaden han kom upp med. Fascinerad av en berömd historisk Bluff använde Joey sina färdigheter inom programmering och robotik för att bygga en öppen källkod Raspberry Pi-driven rekreation av den berömda mekaniska Turk-automaten.
Du kan se Raspberry Turk i aktion på Joeys YouTube-kanal:
en historisk hoax
Joey förklarar att han först stötte på den mekaniska Turken genom en bok av Tom Standage. Ett känt exempel på mekanisk trickery, den ursprungliga Turk annonserades som en schackspelautomat, som kunde besegra mänskliga motståndare och lösa komplexa pussel.
en modern rekonstruktion av den mekaniska Turk
bild från Wikimedia Commons
dess inre arbete en hemlighet, Turk turnerade Europa för den bästa delen av ett sekel, förbryllande alla som stött på det. Tyvärr visade det sig inte vara ett fantastiskt exempel på tidig robotteknik trots allt. Istället var det bara en utarbetad illusion. De fantastiska schackrörelserna utarbetades inte av automatens urverkshjärna, utan snarare av en mänsklig schackmästare som listigt doldes inuti höljet.
bygga en modern Turk
en modern version av den mekaniska Turken byggdes på 1980-talet. byggnaden kostade dock 120 000 dollar. Till det priset hade det varit omöjligt för de flesta tillverkare att skapa sin egen version. Omöjligt, det vill säga tills nu: Joey använder en Raspberry Pi 3 för att driva Raspberry Turk, medan en Raspberry Pi-kameramodul hanterar datorsyn.
hallon Turk mitt i ett spel
bildkredit: Joey Meyer
Joeys hallon Turk är inbyggd i ett snyggt träbord. All elektronik är inrymd i en låda på ena sidan. Schackbrädet är målat direkt på bordets yta. För att roboten ska kunna spela tar en kameramodul i ett 3D-tryckt hus ovanför bordet en bild av schackbrädet. Bilden analyseras sedan för att bestämma vilka delar som är i vilka positioner vid den punkten. Genom att spåra förändringar i styckens positioner kan Raspberry Turk bestämma vilka rörelser som har gjorts och vilken bit som ska röra sig nästa. För att träna systemet var Joey tvungen att bygga en stor dataset för att validera en datorvisionsmodell. Detta innebar mödosamt rörliga bitar för hand och samla flera bilder av varje möjlig position.
titta, inga händer!
en viktig egenskap hos den mekaniska Turken var att automaten tycktes flytta schackbitarna helt av sig själv. Naturligtvis styrdes dess rörelser faktiskt av en person gömd inuti maskinen. Raspberry Turk, däremot, flyttar schackpjäserna själv. För att uppnå detta använde Joey en robotarm fäst vid bordet. Armen tillverkas främst av Actobotics-komponenter. Joey förklarar:
rörelsen styrs av rotationen av två servon som är fästa vid kugghjul vid basen av varje länk i armen. I slutet av armen är en annan servo som flyttar en stråle upp och ner. I botten av strålen finns en elektromagnet som kan aktiveras dynamiskt för att lyfta schackbitarna.
Joey monterade schackpjäserna individuellt med små delar av metallplugg så att magneten på armen kunde plocka upp dem.
Programmering av Raspberry Turk
Raspberry Turk styrs av en demonprocess som kör en perception/action-sekvens, och statusuppdateringarna uppdateras automatiskt när bitarna flyttas. Koden skrivs nästan helt i Python. Det är alla tillgängliga på Joeys GitHub repo för projektet, tillsammans med sina anteckningsböcker på projektet.
bildkredit: Joey Meyer
AI-backend som ger roboten sin schackspelningsförmåga är för närvarande Stockfish, en stark schackmotor med öppen källkod. Joey säger att han skulle vilja bygga sin egen motor när han har tid. För tillfället är han dock övertygad om att denna AI kommer att visa sig vara en värdig motståndare.