Pasos para la construcción de la maquina que es capaz de resolver el cubo de Rubik en 0.38s, desde que se pulsa el botón de inicio hasta que se gira la última cara para resolverlo. Este es el vídeo de cómo lo resuelve.
#12 Yo he leído el títular y dice "Máquina resuelve el cubo de Rubik" y eso da a entender que resuelve el cubo de rubik sea cual sea la posición de las piezas. ¿Qué tiene que ver los 100 metros lisos con el cubo de rubik?
#1 Es imposible: yo no soy capaz de resolverlo en menos de cinco minutos. Ten en cuenta que no es sólo quitar las pegatinas de colores, luego hay que volverlas a poner.
#11#13 que manera de buscar controversia donde no la hay. Para empezar cual es el número de videos que consideras necesario para poder afirmar que resuelve todas las posiciones? un sólo video al parecer no garantiza nada, asi que dime cuantos? simpre te quedarás corto por lo que el número de videos con diferentes posiciones resueltas no indica nada, si lo indica en cambio el hecho de que tenga dos camaras que garantizan que puede ver que cubo tiene y actuar en consecuencia, técnologicamente la máquina puede hacerlo y tiene un video de ejemplo para mi más que suficiente.
Me alegra ver que los mejores cerebros del país invierten su esfuerzo en un mundo mejor. No sé como hemos podido vivir hasta ahora sin esta máquina... Desde hoy el mundo es un poco mejor...
#16, #20 Cuando uno investiga en una nueva técnica, una nueva aplicación de una técnica conocida, o similar, antes de ponerse a curar el cáncer se tiene que intentar validar que el sistema concebido funciona realmente. Y para hacer eso se suele utilizar un caso de uso sencillo y fácilmente validable. Es mejor que destroce un cubo de Rubik a que se cargue un coche o le corte un dedo a alguien. Además de que demostrarlo con un caso sencillo es más barato y en ocasiones hasta más divertido. También ocurre que si lo estás haciendo en tu casa por hobby, pues tienes a mano las herramientas/materiales que tienes, y no puedes hacer una pieza de un satélite.
Este cacharro solo vale para hacer el cubo de Rubik, efectivamente. Pero contiene piezas de software/hardware cuyo diseño puede utilizarse para otra cosa. Es capaz de identificar colores y áreas, identificar movimientos y cuándo han finalizado y cosas así. Una adaptación de esto podría valer (quizá, estoy elucubrando) para seleccionar algún tipo de producto en una cinta transportadora, o eliminar defectuosos, como parte de una fresadora que cree piezas de cierta forma, incluso para pegarle un tiro a un objetivo móvil o hasta para operarte un ojo con láser. Es como montar un Lego: se crean piezas nuevas que luego se pueden usar en otros montajes con diferente utilidad.
#11 vaya tonteria! Si sabe resolver esa situacion, sabra resolver todas! Por si no lo sabes, desde cualquier situacion, el cubo se puede resolver con menos de 30 movimientos. Una vez que la maquina analice y procese la situacion, solo tiene que ejecutar menos de 30 movimientos lo mas rapido posible.
#20 los grandes avances no se producen con un gran paso, sino que son la suma de muchos pasitos. Quien sabe si esto llega a ser util para grandes cosas.
#19 y #26 en realidad por el diseño de la máquina que se observa en el vídeo podemos decir con absoluta seguridad que no funciona para todas las posiciones iniciales posibles. ¿Adivináis porqué?
#26 Yo me iré a donde me de la gana, ¿te enteras?. Estoy dando mi opinión, ¿te queda claro?.
El cacharro no resuelve nada, si por resolver entendemos aplicar lógica a un problema y dar con la solución. Mueve de manera extremadamente rápida las caras del cubo, y que es una pasada, pero de eso a decir que resuelve va un abismo.
El cacharro no tiene IA, no analiza ni la posición del cubo. Al menos podría analizar la posición del cubo y girarlo para desde una posición concreta resolverlo, pero no lo hace.
#37 Pero que IA hace falta para hacer un algoritmo que resuelva un simple 3x3? Hay miles de programas que te calculan los movimientos que tienes que hacer para resolver el cubo desde cualquier posicion. Algunos seran mas efectivos que otros pero es un problema super trillado y no es nada complicado.
Lo complicado de esa maquina es que lo haga a tal velocidad.
#13 tambien, si le hubieras echado un vistazo al enlace, verias que si, que puede resolver cualquier situacion:
Here's part of the software stack
Up top is a monitor showing the camera's views of the cubes. Jared's software allows you to draw polygons on the screen, and assign them to different faces of the cube. The pixels inside each polygon are averaged and compared to some thresholds to determine the color of each face. We found that distinguishing the red faces from the orange ones was finicky, thanks to the low-quality of the cameras, so we sharpied the orange faces black. Apparently that's allowed though.
Once the faces are identified, the solve sequence is computed using the min2phase algorithm. This returns a solution which we've observed to be 19-23 moves for a well-scrambled cube. The fastest solve we've done was actually a 21-move solve, so just getting a little lucky could easily shave off another ~30ms from the time.
#21 Me lo has hecho volver a mirar . Si que la inercia exagera el efecto, pero si te fijas en la pieza central, que esta pegada al eje del motor, verás que vuelve atrás. A ver, que es un problema muy específico, yo lo he estudiado para cosas mas grandes y rígidas, pero estoy casi seguro que optimizando las curvas de aceleración/desaceleración, y vigilando un poco el jerk, se podría ir mas rápido de una posición a otra sin que salgan las piezas volando y frenando antes de pasarse del objetivo. Pero tampoco nos pelearemos por eso
#11 Te vote positivo porque eso me parecía a mi sin haber leído el articulo, ya que al ver el video no note las cámaras. Pero me equivoque.
Pero la clave es el algoritmo para resolverlo github.com/cs0x7f/min2phase. En resumen como funciona es:
1. Las cámaras identifican los colores para saber la posicion
2. Se usa el algoritmo para definir los movimientos
3. A resolverlo.
Lo rápido que son los movimientos es lo mas alucinante de todo.
#11, bueno te comento. Si lo pones a cámara lenta podrás ver que lo resuelve en 21 movimientos. Y teniendo en cuenta que desde hará lo mismo 15 años hay un software de un tal Kociemba llamado "Cube Explorer" que te resolvía en teoría el cubo en menos de 24 movimientos y en la práctica te lo resuelve en 21 o menos, la parte de qué 21 movimientos tiene que hacer como que hace ya mucho tiempo que se puede hacer así y es irrelevante, el robot ese te lo calcula en nada de tiempo sea la posición inicial la que sea. Este cubo lo que tiene de bueno es cómo es capaz de hacer esos movimientos tan rápidos sin destrozar dicho cubo.
#21, depende del movimiento que hagas, en una situaciones será mejor pasarse de largo por poco o quedarse corto, para enlazarlo con el siguiente. De hecho esto se nota hasta haciendo el cubo a mano cuando tienes cierta práctica.
#44 la pieza central tb tiene inercia el motor es rápido de cojones es mágnetico y frenar en seco si un baiven hacia adelante es... imposible. Pero te lo voy a decir de otra manera si se pasan de frenada es por que o bien sus cáculos son erroneos o bien que el motor no es preciso, pero el caso es que luego se "corrige" asi que o saben que calculo han hehco mal y aplican la correción o bien el motor es inexacto pero tb lo vuelven atras exactamente. Ambas posibilidades son raras que tengan un error de calculo que saben corregir y hagan lso dos movimientos raro raro... y que el motor no sea exacto pero consigan corregirlo mas aún. Pero sí seguramente se pueda afinar y jugar con estas "inercias" y ganar milisegundos... pero ya es ir fino fino fino fino fino....
#50 esto si que tampoco estoy de acuerdo, es imposible girar una cara si otra perpendicular aun esta en un angulo girando, obviamente el cubo tiene holgura y no hace falta que la otra cara este 100% perfecta pero si 99,9 con lo cual la ganancia contra el riesgo petar el cubo no compensa, de hecho si hubiera margen para empezar a girar una segunda cara mietnras se termina el movimiento de la primera sería aun mas mas rápido.
#52, he sido 3 veces campeón de España resolviendo el cubo de Rubik con los ojos tapados (tal como suena), sé algo de como se mueven estos cubos. Girando a mano si giro la cara de arriba 90 grados en esos en todo de las aguas del reloj, y me quedo corto por 30 grados si giro la cara derecha en el sentido contrario de las aguas del reloj, la de arriba se alineará sola y podré girar la derecha perfectamente. Su quiero girar la derecha, lo bueno sería que la de arriba se pase en el giro. Todo esto con un cubo medio decente actual. Y si el error es menor, de 10 grados o así, a mano puedo girar la siguiente en cualquiera de los dos sentidos independientemente de si me paso o quedo corto.
Claro que si mueves tan rápido el margen de error debe ser menor, y no valdrá errores de 30 grados, pero aún así tendrá mucha más holgura de la que te imaginas.
#55 De hecho en la página mencionan que tuvieron que apretar el cubo para que no tuviera holguras y así evitar que explotase: One counterintuitive trick for getting things to work well was to make the cube really tight. When the cube is loose (like it would be if a person were trying to solve it fast), the outer faces just cam outwards when you try to turn the center faces quickly - see the Cubsplosion video for what this looks like. It took tightening the cube way past what intuitively felt appropriate, in order to stop the camming action from happening.
#54 Bien visto. Creo que lo que dices son los movimientos 16 y 17, en los que mueve dos caras opuestas en sentidos opuestos y con distinta rotación (digamos que hace un giro de 90 grados en una cara y de 180 grados en la cara opuesta -en sentido contrario-). Hay otro movimiento previo en el que mueve dos caras opuestas en la misma dirección (es decir, que es como mover la fila central en el sentido opuesto), con lo que quizá se podría hacer lo que propones (bastaría hacer ese movimiento en ambas caras, y luego en una de ellas seguir 90 grados más).
Eso ahorraría un movimiento (en realidad ahorraría la mitad del movimiento 17), con lo que podría reducirse el tiempo un 2,5-5% (la secuencia total son 20 movimientos y cada uno es un giro de 90 grados en cualquiera de los dos sentidos, o de 180 grados).
#56, y yo lo que digo es que no sabes cómo están construidos estos cubos. Me falta realmente saber cómo está construido el cubo del vídeo y si tienen amortiguación los ejes que lo giran, pero un cubo de Rubik tiene un muelle en cada eje. En cualquier caso, en el vídeo de más abajo en el que se rompe el cubo (donde se ve que los giros son mucho más imprecisos) viendo los 2 últimos movimientos con el que se rompe, en el penúltimo movimiento se pasa. Si en el penúltimo movimiento se llega a quedar corto o si la cara de arriba se llega a girar en sentido contrario, te aseguro que no habría pasado lo que se ve en el vídeo y no habría reventado.
#57, depende del cubo, pero a nosotros también en muchos casos apretamos el cubo para que nos vaya mejor. Yo solo digo que dependiendo del giro siguiente habrá una tolerancia mayor en exceso o defecto de giro. Mientras menos te desvíes mejor, pero desde luego que no hace falta una precisión del 99.9%. Y claro que necesita más precisión cuando gira el cubo unas 6 veces más rápido que un humano (un humano top en una resolución real puede hacer 10 movimientos en un segundo, esta máquina pues hace cerca de 60).
#59 no habre ganado campeonatos de España pero desmontado cubos si era mi única forma de montarlos y tenía mas que controlado como desmontarlo y es forzando el mover dos caras a la vez. Habrá muchos tipos y no los habré visto todos.. pero en la web son bien claros el cubo tenia que estar mas tenso o apretado sino explotaba, eso hace que la técnica que comentas no se pueda aplicar.
#60 ten en cuenta que también dice que buscaron cubos de los mas baratos, yo estoy seguro que reventaron muchos y por la otra razón a tener en cuenta que a parte de ser 10 veces mas rápidos esos motores carecen de "sensibilidad" de una mano que puede aplicar la presión necesaria sin forzar el cubo en cambio los motores van follados, y reciban mas resistencia o menos aplican la misma presión lo cual hace que esta técnica se pueda aplicar de forma manual pues una mano ya empiece a buscar el siguiente giro sin miedo a romperlo pues tiene "sensibilidad" pero un motor de pasos como este..
#61, ¿por qué no? Tú habrás desmontado cubos de Rubik, yo habré desmontado entre 20 y 40 cubos de Rubik con estructura interna distinta, algunos con más tolerancia, otros con menos, unos con muelles más blandos, otros más duros, etc. Unos cubos tienen una tolerancia mayor que otros sin necesidad de que los muelles cedan. Los cubos de Rubik clásicos tienen una tolerancia horrible, si el que has probado es de la marca Rubiks no va a ser el mejor ejemplo. No te puedes ni imaginar la cantidad de variaciones que le han hecho a la estructura interna para mejorarlos. Y para que veas la velocidad de un humano top:
40 segundos en un tiempo total 4.73 segundos. Y eso que tiene parones de décimas de segundo por medio, además que en algunos momentos tiene que ir frenando para poder reconocer el siguiente paso (la máquina no tiene que hacer eso). La última tanda de movimientos que encadena son 12 movimientos seguidos (11 de 90 grados, 1 de 180 grados). Esos 12 movimientos los hace en 1 segundo (décima arriba, décima abajo), no haciendo todos los movimientos igual de rápidos. Vamos, en ese segundo ha ido a una velocidad media de 12 movimientos por segundo (calculo que ha llegado a encadenar 3 movimiento a una velocidad de 20 movimientos por segundo). Vamos, que el robot calculo que va el triple de rápido que Feliks en velocidad punta.
Y te aseguro que Feliks puede encadenar esos movimientos tan rápido con una tolerancia muy grande, pero porque automáticamente los hace sabiendo si debe pasarse o quedarse corto. El robot puede hacer lo mismo, con tolerancia menor a la que puede usar un humano, pero mayor que la que está necesitando en estos vídeos.
#62, un pequeño detalle, no sé qué modelo han pillado exactamente claro, pero con se pueden conseguir cubos muy buenos que yo creo que irían perfectos para esta máquina por 2 euros, mucho mejores que los cubos originales que te cuestan 15. Y si compran bastantes (por ejemplo 30) pueden conseguir un precio menor, gastos de envío incluidos desde China a España (lo sé por experiencia). Además tengo claro que el mejor para la máquina no es lo mismo que el mejor para un humano.
#55 no solo eso que ya debería servir para rebatir a #50 si no que hay casos en los que puedes dejar un movimiento a medias y ya empezar el siguiente de forma que se completan los dos. Vamos, seguro que tú lo sabes mejor que nadie pero me hace gracia que alguien diga que hay más riesgo de reventar el cubo si las caras no están 100% alineadas, es síntoma de no haber cogido un buen cubo en su vida.
#15 Si quitas las pegatinas probablemente te las cargues y ya no las puedas volver a pegar. Lo más fácil es desmontar el cubo: giras una cara 45º y luego presionas una de las aristas hasta que salga, y a partir de ahí puedes ir quitando las demás.
Cc @zurditorium
#Edito: si entráis al enlace se puede ver el "rubikowned".
Cc @zurditorium
Este cacharro solo vale para hacer el cubo de Rubik, efectivamente. Pero contiene piezas de software/hardware cuyo diseño puede utilizarse para otra cosa. Es capaz de identificar colores y áreas, identificar movimientos y cuándo han finalizado y cosas así. Una adaptación de esto podría valer (quizá, estoy elucubrando) para seleccionar algún tipo de producto en una cinta transportadora, o eliminar defectuosos, como parte de una fresadora que cree piezas de cierta forma, incluso para pegarle un tiro a un objetivo móvil o hasta para operarte un ojo con láser. Es como montar un Lego: se crean piezas nuevas que luego se pueden usar en otros montajes con diferente utilidad.
Gracias #19 por explicarlo tan bien
El cacharro no resuelve nada, si por resolver entendemos aplicar lógica a un problema y dar con la solución. Mueve de manera extremadamente rápida las caras del cubo, y que es una pasada, pero de eso a decir que resuelve va un abismo.
El cacharro no tiene IA, no analiza ni la posición del cubo. Al menos podría analizar la posición del cubo y girarlo para desde una posición concreta resolverlo, pero no lo hace.
Lo complicado de esa maquina es que lo haga a tal velocidad.
Here's part of the software stack
Up top is a monitor showing the camera's views of the cubes. Jared's software allows you to draw polygons on the screen, and assign them to different faces of the cube. The pixels inside each polygon are averaged and compared to some thresholds to determine the color of each face. We found that distinguishing the red faces from the orange ones was finicky, thanks to the low-quality of the cameras, so we sharpied the orange faces black. Apparently that's allowed though.
Once the faces are identified, the solve sequence is computed using the min2phase algorithm. This returns a solution which we've observed to be 19-23 moves for a well-scrambled cube. The fastest solve we've done was actually a 21-move solve, so just getting a little lucky could easily shave off another ~30ms from the time.
Pero la clave es el algoritmo para resolverlo github.com/cs0x7f/min2phase. En resumen como funciona es:
1. Las cámaras identifican los colores para saber la posicion
2. Se usa el algoritmo para definir los movimientos
3. A resolverlo.
Lo rápido que son los movimientos es lo mas alucinante de todo.
Edit: aquí el software que digo kociemba.org/cube.htm
Claro que si mueves tan rápido el margen de error debe ser menor, y no valdrá errores de 30 grados, pero aún así tendrá mucha más holgura de la que te imaginas.
One counterintuitive trick for getting things to work well was to make the cube really tight. When the cube is loose (like it would be if a person were trying to solve it fast), the outer faces just cam outwards when you try to turn the center faces quickly - see the Cubsplosion video for what this looks like. It took tightening the cube way past what intuitively felt appropriate, in order to stop the camming action from happening.
Eso ahorraría un movimiento (en realidad ahorraría la mitad del movimiento 17), con lo que podría reducirse el tiempo un 2,5-5% (la secuencia total son 20 movimientos y cada uno es un giro de 90 grados en cualquiera de los dos sentidos, o de 180 grados).
La solución al cubo de Rubik es la solución a un problema matemático de combinatoria y que como tal se puede hacer un algoritmo que lo haga.
IA dice el tio...
www.youtube.com/watch?v=R07JiT0PlcE
40 segundos en un tiempo total 4.73 segundos. Y eso que tiene parones de décimas de segundo por medio, además que en algunos momentos tiene que ir frenando para poder reconocer el siguiente paso (la máquina no tiene que hacer eso). La última tanda de movimientos que encadena son 12 movimientos seguidos (11 de 90 grados, 1 de 180 grados). Esos 12 movimientos los hace en 1 segundo (décima arriba, décima abajo), no haciendo todos los movimientos igual de rápidos. Vamos, en ese segundo ha ido a una velocidad media de 12 movimientos por segundo (calculo que ha llegado a encadenar 3 movimiento a una velocidad de 20 movimientos por segundo). Vamos, que el robot calculo que va el triple de rápido que Feliks en velocidad punta.
Y te aseguro que Feliks puede encadenar esos movimientos tan rápido con una tolerancia muy grande, pero porque automáticamente los hace sabiendo si debe pasarse o quedarse corto. El robot puede hacer lo mismo, con tolerancia menor a la que puede usar un humano, pero mayor que la que está necesitando en estos vídeos.