Resolviendo el cubo de Rubik con FPGA

Óscar Soto
Óscar Soto

Para su proyecto final para ECE 5760 en Cornell, [Alex], [Sungjoon], y [Rameez] resuelve los cubos de Rubik. Lo hacen con FPGA, con brazos robóticos caseros para girar y convertir un cubo arcoíris en la posición correcta.

Primero, la parte mecánica de la construcción. El equipo utiliza un sistema de tres brazos robóticos colocados en las caras izquierda, derecha y trasera del cubo en relación con una cámara. Cuando se coloca un cubo en las mandíbulas de este robot, los datos de la cámara NTSC se ingresan en FPGA, donde un soft core Nios II maneja la detección efectiva de las caras del cubo, el algoritmo de solución y el controlador para enviar comandos de servicio al brazos de robot.

El algoritmo utilizado para resolver el cubo es CFOP: resuelve la cruz blanca, las esquinas blancas, la capa intermedia, la cara superior y finalmente todo el cubo. En la práctica, el robot terminó entre 60 y 70 movimientos. Este no es el algoritmo más eficiente; el algoritmo de Thistethwaite solo requiere 52 movimientos. Hay una razón para esta aparente ineficiencia: el algoritmo Thistlethwaite requiere grandes matrices de búsqueda.

Después de escanear el cubo y calcular los desplazamientos exactos, el núcleo blando envía comandos a través de los pines GPIO de la FPGA. Cada cubo se puede resolver en menos de tres minutos después de haber sido escaneado, pero el equipo ha encontrado problemas con la precisión del escaneo. Es un problema que se puede solucionar con la instalación de iluminación adecuada y una mejor detección obligatoria de cubos, y un excelente diseño final con FPGAs.

Video de demostración a continuación.

  • Robar dice:

    Me emocioné cuando vi esto pensando que la lógica de la solución se hizo en HDL / FPGA. Pero no solo un núcleo blando aburrido que utiliza un algoritmo cotidiano.

    El cubo de rubí es una máquina de estado, por lo que sería genial ver un HDL que copia esa máquina de estado directamente en la lógica, es decir, sin CPU ni matrices. Daría la solución más corta, directa o “correcta”. es decir, si hicieras 7 movimientos para mezclarlo, entonces se resolvería invirtiendo esos siete movimientos sin saber cuáles son.

    Bueno, tendré que aprender HDL y hacerlo yo mismo.

    • Mío dice:

      Incluso los servicios integrados en controladores. Tal vez un caso de “tienes que usar FPGA” para el curso. Bastante buena escritura si ignora el bit FPGA.

    • Mate dice:

      Creo que algunos cálculos hechos en supercomputadoras concluyeron que sin conocer los movimientos mixtos del cubo, el mejor número de movimientos que uno puede esperar usar para resolverlo sería 20 o algo así.

      • debe ser absorbido dice:

        Casi el número máximo de movimientos que puede realizar cualquier solución perfecta es 20. El borde inferior es 1 movimiento.

    • Artenz dice:

      Sospecho que encontrar la secuencia de movimiento óptima requeriría grandes cantidades de matrices precalculadas.

    • tomás zerolo dice:

      Solo es cuestión de tiempo hasta que los FPGA estén llenos de núcleos suaves jQuery.js 🙁

  • crampones dice:

    No estoy 100% seguro, pero creo que esta vez se trata de “A” en lugar de “AN”.

    • Rodillo de ojos dice:

      La F en FPGA se pronuncia con un sonido de vocal (“eff”), por lo que “AN” es correcto.

      • Rodillo de ojos dice:

        * sonido de vocal inicial … incluso

      • crampones dice:

        ¡Gracias! Quiere trollear, quiere aprender. Pensé en mi cabeza “Extintor de incendios … o extintor de incendios”. sin pensar que decir la letra es en realidad diferente a usarla en una oración. Gracias por ayudarme a aprender algo nuevo hoy.

        • debe ser absorbido dice:

          ¡Como se pronuncia fish ghoti!

    • Brian Benchoff dice:

      Santo infierno. Trollé la gramática nazis con “El equipo es …” en esta publicación. Has elegido, “un FPGA ”??? ¿Qué sucede contigo?

      // man la-tecnologia realmente se deprimió, la gente que se queja de la gramática ya ni siquiera puede ajustarla.

      • Jonathan Whitaker dice:

        ¡Buen Brian! : D

      • Greenaum dice:

        Yo diría que “el equipo es” porque lo veo como un equipo humano. Como una manada de gansos o lo que sea. Quizás esas fotos grandes en Dictionary City no estén de acuerdo, pero últimamente he estado comprando su mierda.

        • Brian Benchoff dice:

          “El equipo es” versus “El equipo es” es algo británico / estadounidense, lo cual es un poco engañoso tanto como el trolling. Mejor sería un Whoppers menor.

      • Jaime dice:

        Bueno, “FPGA” es, es decir, correcto como correcto. Las abreviaturas se tratan fonéticamente en lugar de literalmente. Dios, este lenguaje es terrible, ¿por qué no pudimos hacer que los rusos invadieran? Su lenguaje no se rompe como el nuestro.

        • miserable dice:

          Preferiría una invasión alemana. Siempre me han gustado los sustantivos compuestos. (C:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *