Computadores e xadrez têm sido uma combinação potente de sempre desde o aparecimento do primeiro xadrez computadores nos anos 1970. Você pode até mesmo ser capaz de jogar um jogo de xadrez no dispositivo que você está usando para ler este post do blog! Para fabricantes digitais, no entanto, adicionar um Raspberry Pi na mistura pode ser o primeiro passo para construir algo um pouco mais emocionante. Permita-nos apresentar-lhe o robô jogador de Xadrez do Joey Meyer, o Turk framboesa.
Image credit: Joey Meyer
sendo ambos um engenheiro de software experiente com interesse na aprendizagem de máquinas, e um jogador de xadrez habilidoso, não é surpreendente que Joey estivesse interessado em remendar programas de xadrez. O que é realmente impressionante, no entanto, é a escala e complexidade da construção que ele criou. Fascinado por um famoso embuste histórico, Joey usou suas habilidades em programação e robótica para construir uma Recreação de framboesa alimentada por Pi do célebre autômato mecânico Turco.
you can see the Raspberry Turk in action on Joey’s YouTube channel:
A historical hoax
Joey explains that he first encountered the Mechanical Turk through a book by Tom Standage. Um exemplo famoso de Truques mecânicos, O Turco original foi anunciado como um autômato de xadrez, capaz de derrotar adversários humanos e resolver quebra-cabeças complexos.
Uma reconstrução moderna do Mechanical Turk
Imagem do Wikimedia Commons
o Seu funcionamento interno de um segredo, o Turk excursionou pela Europa para a melhor parte de um século, contrariando todo mundo que encontrou ele. Infelizmente, acabou por não ser um exemplo fabuloso de engenharia robótica precoce, afinal. Em vez disso, foi apenas uma ilusão elaborada. Os incríveis movimentos de xadrez não estavam sendo trabalhados pelo cérebro de clockwork do autômato, mas sim por um mestre de xadrez humano que estava astutamente escondido dentro do Invólucro.
construir um turco moderno
uma versão moderna do turco mecânico foi construída na década de 1980. A esse preço, teria sido impossível para a maioria dos fabricantes criar sua própria versão. Impossível, isto é, até agora: Joey usa um Raspberry Pi 3 para dirigir o Framboesa Turk, enquanto um módulo de Câmera Raspberry Pi lida com a visão de computador.
A Framboesa Turk no meio de um jogo
crédito de Imagem: Joey Meyer
Joey Framboesa Turk é construído em uma caprichada mesa de madeira. Todos os Eletrônicos estão alojados em uma caixa de um lado. O tabuleiro de xadrez é pintado diretamente na superfície da mesa. A fim de que o robô para jogar, um módulo de Câmera localizado em uma caixa 3D impresso acima da mesa leva uma imagem do tabuleiro de xadrez. A imagem é então analisada para determinar quais peças estão em que posições nesse ponto. Ao rastrear as mudanças nas posições das peças, o Framboesa Turk pode determinar quais movimentos foram feitos, e qual a peça deve mover-se a seguir. Para treinar o sistema, Joey teve que construir um grande conjunto de dados para validar um modelo de visão de computador. Isto envolveu peças que se moviam meticulosamente à mão e coletavam múltiplas imagens de cada posição possível.olha, sem mãos!
uma característica chave do turco mecânico era que o autômato parecia mover as peças de xadrez inteiramente por si mesmo. Claro que os seus movimentos estavam a ser controlados por uma pessoa escondida dentro da máquina. O Turk De Framboesa, pelo contrário, move as peças de xadrez em si. Para conseguir isso, Joey usou um braço robótico preso à mesa. O braço é feito principalmente de componentes Actobóticos. Joey explica:
O movimento é controlado pela rotação de dois servos que estão ligados a mudanças na base de cada link do braço. No final do braço está outro servo que move um feixe para cima e para baixo. Na parte inferior do feixe está um eletroíman que pode ser ativado dinamicamente para levantar as peças de xadrez.
Joey individualmente ajustou as peças de xadrez com minúsculas seções de metal dowel para que o íman no braço pudesse pegá-las.
Programando o Framboesa Turk
o Framboesa Turk é controlado por um processo daemon que executa uma sequência de percepção/ação, e as atualizações de Estado automaticamente à medida que as peças são movidas. O código é escrito quase inteiramente em Python. Está tudo disponível no GitHub repo de Joey para o projeto, juntamente com seus cadernos sobre o projeto.
crédito da Imagem: Joey Meyer
AI de back-end que dá o robô seus xadrez capacidade é atualmente Bacalhau, um forte open-source motor de xadrez. O Joey diz que gostaria de construir o seu próprio motor quando tiver tempo. De momento, porém, ele está confiante de que esta IA será um adversário digno.