Computer e scacchi sono stati una potente combinazione fin dalla comparsa dei primi computer di scacchi nel 1970. Si potrebbe anche essere in grado di giocare una partita a scacchi sul dispositivo che si sta utilizzando per leggere questo post del blog! Per i produttori digitali, però, l’aggiunta di un Raspberry Pi nel mix può essere il primo passo per costruire qualcosa di un po ‘ più eccitante. Permettici di presentarti il robot che gioca a scacchi di Joey Meyer, il Turk Lampone.
Immagine di credito: Joey Meyer
Essendo un esperto ingegnere del software con un interesse per l’apprendimento automatico, e un abile giocatore di scacchi, non è sorprendente che Joey era interessato ad armeggiare con i programmi di scacchi. Ciò che è davvero sorprendente, però, è la scala e la complessità della build che ha inventato. Affascinato da una famosa bufala storica, Joey ha usato le sue abilità in programmazione e robotica per costruire una ricreazione open-source Raspberry Pi-powered del celebre automa meccanico turco.
Puoi vedere il Turk lampone in azione sul canale YouTube di Joey:
Una bufala storica
Joey spiega che ha incontrato per la prima volta il Turco meccanico attraverso un libro di Tom Standage. Un famoso esempio di inganno meccanico, il turco originale è stato pubblicizzato come un automa che gioca a scacchi, in grado di sconfiggere avversari umani e risolvere enigmi complessi.
Una ricostruzione moderna del turco meccanico
Immagine da Wikimedia Commons
Il suo funzionamento interno è un segreto, il turco ha girato l’Europa per la parte migliore di un secolo, confondendo tutti coloro che l’hanno incontrato. Sfortunatamente, si è rivelato non essere un favoloso esempio di ingegneria robotica precoce dopo tutto. Invece, era solo un’illusione elaborata. Le fantastiche mosse degli scacchi non venivano elaborate dal cervello a orologeria dell’automa, ma piuttosto da un maestro di scacchi umano che era astutamente nascosto all’interno dell’involucro.
Costruire un turco moderno
Una versione moderna del turco meccanico è stata costruita nel 1980. Tuttavia, la costruzione costava $120.000. A quel prezzo, sarebbe stato impossibile per la maggior parte dei produttori di creare la propria versione. Impossibile, cioè, fino ad ora: Joey utilizza un Raspberry Pi 3 per guidare il Raspberry Turk, mentre un modulo telecamera Raspberry Pi gestisce la visione artificiale.
Il lampone turco nel bel mezzo di un gioco
Immagine di credito: Joey Meyer
Lampone turco di Joey è costruito in un tavolo di legno pulito. Tutti i componenti elettronici sono alloggiati in una scatola su un lato. La scacchiera è dipinta direttamente sulla superficie del tavolo. Affinché il robot possa giocare, un modulo telecamera situato in un alloggiamento stampato in 3D sopra il tavolo prende un’immagine della scacchiera. L’immagine viene quindi analizzata per determinare quali pezzi sono in quali posizioni in quel punto. Seguendo i cambiamenti nelle posizioni dei pezzi, il lampone turco può determinare quali mosse sono state fatte e quale pezzo dovrebbe muoversi dopo. Per addestrare il sistema, Joey ha dovuto costruire un grande set di dati per convalidare un modello di visione artificiale. Ciò ha comportato lo spostamento meticoloso dei pezzi a mano e la raccolta di più immagini di ogni possibile posizione.
Guarda, senza mani!
Una caratteristica fondamentale del turco meccanico era che l’automa sembrava spostare i pezzi degli scacchi interamente da solo. Naturalmente, i suoi movimenti erano effettivamente controllati da una persona nascosta all’interno della macchina. Il lampone turco, al contrario, sposta i pezzi degli scacchi stessi. Per raggiungere questo obiettivo, Joey ha usato un braccio robotico attaccato al tavolo. Il braccio è costituito principalmente da componenti Actobotics. Joey spiega:
Il movimento è controllato dalla rotazione di due servi che sono attaccati agli ingranaggi alla base di ciascun collegamento del braccio. Alla fine del braccio c’è un altro servo che muove un raggio su e giù. Nella parte inferiore del raggio c’è un elettromagnete che può essere attivato dinamicamente per sollevare i pezzi degli scacchi.
Joey ha montato individualmente i pezzi degli scacchi con piccole sezioni di tassello metallico in modo che il magnete sul braccio potesse raccoglierli.
Programmazione del Raspberry Turk
Il Raspberry Turk è controllato da un processo daemon che esegue una sequenza di percezione/azione e lo stato si aggiorna automaticamente man mano che i pezzi vengono spostati. Il codice è scritto quasi interamente in Python. È tutto disponibile sul repository GitHub di Joey per il progetto, insieme ai suoi taccuini sul progetto.
Immagine di credito: Joey Meyer
Il backend AI che dà al robot la sua capacità di giocare a scacchi è attualmente Stoccafisso, un forte motore di scacchi open-source. Joey dice che vorrebbe costruire il proprio motore quando ha tempo. Per il momento, però, è fiducioso che questa IA si rivelerà un degno avversario.