Por @Alvy — 1 de diciembre de 2022
Shane Wighton del canal Stuff Made Here trabaja en proyectos tan largos como impresionantes. El último que ha notado es la construcción de un mecanismo robótico para resolver acertijos, Pero sobre el tema, eligió la versión más difícil del desafío: un rompecabezas de 5.000 piezas y completamente blancode modo que la máquina ni siquiera podía guiarse por los dibujos, solo por la forma de las piezas.
Lo mejor es reducir sus expectativas al intentar ciertos proyectos.
–Shane Wighton
El vídeo es largo pero muy ágil, y de él se extrae esa gran moraleja que Shane repite más de una vez y que se puede aplicar a proyectos de todo tipo. Siempre hay soluciones, pero no es lo mismo. Por ejemplo, nada más empezar te das cuenta de que no hay puzzles comerciales blancos de 5.000 piezas, sólo de 4.000, así que decides comprar uno de 5.000 y pintura en aerosol. Más tarde descubrirá que las piezas no encajan del todo bien y, a pesar de intentar limpiarlas y pulirlas, es imposible que funcionen… Así que acaba creando su propio puzzle blanco de 5.000 piezas recortándolo con un láser; A pesar de eso, los cordones que hace el robot tampoco son perfectos. ¡Ah, la famosa diferencia entre la teoría y la práctica!
Algunas cuestiones obvias están muy bien resueltas: utilizar una cámara con un objetivo especial para escanear todas las partes a muy alta resoluciónpara que luego puedas trazar sus contornos automáticamente. Cada escaneo de las 5000 partes significa unas 8 horas de trabajo (!) Y naturalmente, como sucede a menudo, no funciona la primera vez. La forma matemática de definir el perímetro de las piezas, los encajes y salientes y determinar las esquinas es muy interesante y las explica detalladamente; Es una geometría muy interesante. Todo esto él mismo se programa en pitónporque es más cómodo para él y quiere que sea un “proyecto de un solo hombre”, aunque nuevamente hacia el final del video, los problemas lo hacen necesitar ayuda externa (¡y todavía hay errores!)
La otra parte interesante es la algoritmo de resolución, que te ha frustrado durante semanas. Con toda la información sobre las piezas, la computadora puede resolver “mentalmente” el rompecabezas y luego simplemente colocar cada pieza en su lugar. Hay momentos en que las piezas encajan y al agregar otras piezas no encajan, y tienes que volver atrás. Todo esto es así al menos en teoría. El problema es ese 5.000 piezas son demasiadas para probar “todo con todo” y tiene que buscar optimizaciones; seleccionar solo aquellas con contornos compatibles es parte de la solución, aunque no es baladí (de hecho, la falta de soluciones es lo que lo desespera y le hace ver que las piezas de un rompecabezas normal son inútiles).
Al final, Shane obtiene resultados adecuados con sus piezas cortadas con precisión, por lo que al final todo es cuestión de alimentar las piezas una por una al robot –cuyo mecanismo procede de una máquina anterior, y no necesita demasiadas modificaciones salvo aumentar su superficie– y ésta las va colocando. Dato curioso: a diferencia de los humanos, el robot no necesita comenzar con la estrategia de “hacer el marco primero”, que es lo que solemos hacer los humanos.
Como puede verse, en cada fase del proyecto Aparecen nuevas dificultades y hay que bajar las expectativas: el rompecabezas puede no ser lo que pensabas, el robot no puede encajar todas las piezas correctamente y algunas piezas tienen que ser empujadas a mano, o el generador usado para crear las piezas falló y varias de ellas no tienen la forma estándar (tienes dejarlas de lado, para el final). Para colmo, el robot se empeña en apilar unas piezas encima de otras (¿bicho?) o las arrastra con el movimiento si no estaban bien encajadas (¡aggg!) pero, contra todo pronóstico, y tras muchas semanas de trabajo, el Desafío que se puede pasar.
§
Resuelta la parte mecánica, queda otra de mis dudas: ¿Cuál es la forma óptima de resolver un puzzle tradicional en equipo, entre varias personas? Ahí si no he visto avances en este sentido. Ni siquiera sé que hay concursos temáticos.
Relacionado: