Las computadoras y el ajedrez han sido una combinación potente desde la aparición de las primeras computadoras para jugar al ajedrez en la década de 1970. Sin embargo, para los fabricantes digitales, agregar una Raspberry Pi a la mezcla puede ser el primer paso para crear algo un poco más emocionante. Permítanos presentarles al robot de ajedrez de Joey Meyer, el Turco de Frambuesa.
Crédito de la imagen: Joey Meyer
Siendo un ingeniero de software experimentado con un interés en el aprendizaje automático, y un jugador de ajedrez experto, no es de extrañar que Joey estuviera interesado en retocar los programas de ajedrez. Lo que es realmente impresionante, sin embargo, es la escala y la complejidad de la construcción que se le ocurrió. Fascinado por un famoso engaño histórico, Joey usó sus habilidades en programación y robótica para construir una recreación de código abierto con Raspberry Pi del célebre autómata Turco Mecánico.
Puedes ver al Turco de Frambuesa en acción en el canal de YouTube de Joey:
Un engaño histórico
Joey explica que se encontró por primera vez con el Turco Mecánico a través de un libro de Tom Standage. Un famoso ejemplo de trucos mecánicos, el turco original fue anunciado como un autómata de ajedrez, capaz de derrotar a oponentes humanos y resolver rompecabezas complejos.
Una reconstrucción moderna del Turco Mecánico
Imagen de Wikimedia Commons
Su funcionamiento interno es un secreto, el Turco recorrió Europa durante la mayor parte de un siglo, confundiendo a todos los que lo encontraron. Desafortunadamente, no resultó ser un fabuloso ejemplo de ingeniería robótica temprana después de todo. En cambio, era solo una elaborada ilusión. Los impresionantes movimientos de ajedrez no estaban siendo realizados por el cerebro mecánico del autómata, sino por un maestro de ajedrez humano que estaba astutamente oculto dentro de la carcasa.
Construyendo un turco moderno
Una versión moderna del Turco Mecánico fue construida en la década de 1980, sin embargo, la construcción costó 1 120,000. A ese precio, habría sido imposible para la mayoría de los fabricantes crear su propia versión. Imposible, es decir, hasta ahora: Joey usa una Raspberry Pi 3 para conducir el Raspberry Turk, mientras que un módulo de cámara Raspberry Pi maneja la visión por computadora.
El Raspberry Turk en medio de un juego
Crédito de la imagen: Joey Meyer
El Raspberry Turk de Joey está integrado en una mesa de madera limpia. Todos los componentes electrónicos están alojados en una caja en un lado. El tablero de ajedrez está pintado directamente sobre la superficie de la mesa. Para que el robot pueda jugar, un módulo de cámara ubicado en una carcasa impresa en 3D sobre la mesa toma una imagen del tablero de ajedrez. La imagen se analiza para determinar qué piezas están en qué posiciones en ese punto. Al rastrear los cambios en las posiciones de las piezas, el Turco de frambuesa puede determinar qué movimientos se han realizado y qué pieza debe moverse a continuación. Para entrenar el sistema, Joey tuvo que construir un gran conjunto de datos para validar un modelo de visión por computadora. Esto implicó mover cuidadosamente piezas a mano y recoger múltiples imágenes de cada posición posible.
Mira, sin manos!
Una característica clave del Turco Mecánico era que el autómata parecía mover las piezas de ajedrez por sí solo. Por supuesto, sus movimientos estaban siendo controlados por una persona escondida dentro de la máquina. El Turco Frambuesa, por el contrario, mueve las piezas de ajedrez en sí. Para lograr esto, Joey usó un brazo robótico unido a la mesa. El brazo está hecho principalmente de componentes actobóticos. Joey explica:
El movimiento se controla mediante la rotación de dos servos que están unidos a engranajes en la base de cada eslabón del brazo. En el extremo del brazo hay otro servo que mueve una viga hacia arriba y hacia abajo. En la parte inferior de la viga hay un electroimán que se puede activar dinámicamente para levantar las piezas de ajedrez.
Joey ajustó individualmente las piezas de ajedrez con pequeñas secciones de pasador de metal para que el imán en el brazo pudiera recogerlas.
Programación del Raspberry Turk
El Raspberry Turk está controlado por un proceso de demonio que ejecuta una secuencia de percepción / acción, y el estado se actualiza automáticamente a medida que se mueven las piezas. El código está escrito casi en su totalidad en Python. Todo está disponible en el repositorio de GitHub de Joey para el proyecto, junto con sus cuadernos sobre el proyecto.
Crédito de la imagen: Joey Meyer
El motor de IA que le da al robot su capacidad para jugar al ajedrez es actualmente Stockfish, un potente motor de ajedrez de código abierto. Joey dice que le gustaría construir su propio motor cuando tenga tiempo. Por el momento, sin embargo, confía en que esta IA será un oponente digno.