Resuelven un cubo de Rubik con un N95 y un kit de LEGO

Resuelven un cubo de Rubik con un N95 y un kit de LEGO




ARM ha subido hoy un simpático vídeo a su canal de YouTube que muestra cómo un Nokia N95 es capaz de resolver un cubo de Rubik de 4x4x4 con ayuda de un kit LEGO Mindstorm. El truco reside en utilizar la cámara del teléfono para capturar todas y cada una de las caras del puzzle, con objeto de identificar dónde se encuentra cada color con una aplicación en java. Acto seguido, el propio terminal envía la información con los movimientos necesarios al sistema de robótica a través de su Bluetooth. Una vez más, la ciencia pone a algunos humanos en ridículo, ¿te lo vas a perder? Tienes el impresionante vídeo justo tras el salto.




Fuente : http://www.elrincondelsymbian.com/F...ubo-de-rubik-con-un-n95-y-un-kit-de-lego.html
 
Última edición por un moderador:
una profunda, inteligentisima e imparcial conclusion...
osea que si el app cubecheater la actualizan para resolver un cubo de 5x5x5 apple WINS?
y si el app la sacan para ambos apple y nokia, entonces que? -GAME OVER
Gracias, a mi tambien me pareció que tuve una profunda e inteligentísima conclusión ahi.
Y si la app la sacan para ambos entonces sería un empate, no crees?
 
entiendo que les parezca interesante porque en el video aparece un nokia n95... (FANBOYS!)
pero cual es la gracia?
igual el primer nokia con bluetooth + camara, podria hacer exactamente lo mismo.
pues para comenzar el N95 no es "un simple celular" es toda una computadora...
a diferencia de los humanos,
para cualquier computadora es posible recordar,
todas las caras, y todos los movimientos pasados...
y probar hacia adelante futuros movimiento
s...

Eso sería más de parte heurística, lo cual se aplica más a algoritmos de ajedrez ya que el siguiente paso depende de la respuesta del oponente. Aca se habla de un algoritmo ya definido como ud mismo lo dice. Entonces no tiene mucho sentido recordar caras y movimientos si ya está definido el algoritmo.

los algoritmos para resolver el cubo, ya estan desde que existio el cubo
que yo sepa desde años no ha surgido ningun algoritmo nuevo,
u si sale lo hara un matematico, no un ing de sistemas en symbian, o java.

Y ¿por que no? si el matemático no le ve nada de productivo en hacerlo. En cambio si el ingeniero no está conforme con el o los algoritmos actuales?

Acaso el ingeniero no tiene la formación matemática que precisamente lo hace llamar INGENIERO??? desde matemáticas básicas hasta ecuaciones diferenciales? Incluyendo álgebra lineal para precisamente entender como se hacen operaciones con matrices.

NO CREO que esto califique en el concepto de "VISION ARTIFICIAL", tal vez "sensado de colores".

meh!

meh??? Entonces que se supone que es visión artificial, un ojo de vidrio???

Visión artificial

La Visión artificial, también conocida como Visión por Computador (del inglés Computer Vision) o Visión técnica, es un subcampo de la inteligencia artificial. El propósito de la visión artificial es programar un computador para que "entienda" una escena o las características de una imagen.

fuera de inutilizar passwords y encriptaciones viejas, en que le han cambiado la vida los ultimos avances de las matematicas???

QUE QUE? Ud cree que el procesador que tiene instalado el computador desde el que se conecta a internet para venir a hacer comentarios absurdos se hizo solo con estudiar el álgebra de baldor?

Sin embargo en algo estoy medio de acuerdo, y es que el reconocimiento de los colores no debe tener tanta ciencia.

Tony.
 
Eso sería más de parte heurística, lo cual se aplica más a algoritmos de ajedrez ya que el siguiente paso depende de la respuesta del oponente. Aca se habla de un algoritmo ya definido como ud mismo lo dice. Entonces no tiene mucho sentido recordar caras y movimientos si ya está definido el algoritmo.
y si se llega a la solución aproximandose mediante iteraciones?
seria mas lento pero mas sencillo el programa.
Y ¿por que no? si el matemático no le ve nada de productivo en hacerlo. En cambio si el ingeniero no está conforme con el o los algoritmos actuales?
un ejemplo le daría MUCHO PESO a su propuesta...
veo que Ud. pasó por alto un detalle: me refiero a un Ing. de sistemas usando un sistema operativo para celulares "Symbian", o usando un lenguaje de programación orientado a objetos "Java".
si el ingeniero de sistemas promedio supiera assembler y matematicas avanzadas, como usted sugiere, los sistemas multicore serían más aprovechados... por ejemplo.
Un Lanero Ing. Sistemas experto en programación vectorial por favor?
meh??? Entonces que se supone que es visión artificial, un ojo de vidrio???
su Link le seria muy util para saberlo.
Usted lo habra leído???
"Los objetivos típicos de la visión artificial incluyen:
* La detección, segmentación, localización y reconocimiento de ciertos objetos en imágenes (por ejemplo, caras humanas).
* La evaluación de los resultados (ej.: segmentación, registro).
* Registro de diferentes imágenes de una misma escena u objeto, i.e., hacer concordar un mismo objeto en diversas imágenes.
* Seguimiento de un objeto en una secuencia de imágenes.
* Mapeo de una escena para generar un modelo tridimensional de la escena; tal modelo podría ser usado por un robot para navegar por la escena.
* Estimación de las posturas tridimensionales de humanos.
* Búsqueda de imágenes digitales por su contenido.
Estos objetivos se consiguen por medio de reconocimiento de patrones, aprendizaje estadístico, geometría de proyección, procesado de imágenes, teoría de gráficos y otros campos.
"
Un Lanero Ing. Sistemas experto en Visión artificial por favor?

offtopic flamer
Ud cree que el procesador que tiene instalado el computador desde el que se conecta a internet para venir a hacer comentarios absurdos se hizo solo con estudiar el álgebra de baldor?.
en que se basa para formular, usted, esa propuesta de menospreciar el algebra de baldor?
:cansado: donde hay un ejemplo de comentario absurdo en este foro?
 
Pues el proceso de la deteccion de colores no es tan facil sobre todo en condiciones no ideales.

Es decir si el programa funciona con ese y solo con ese cubo, no hay ningun problema, pero si esta hecho para funcionar con diferentes cubos donde sus colores pueden variar en varios grados e incluso el tipo de superficie puede ser mas o menos brillante.... el tema se complica...

y ni hablar si se piensa en mirar temas como la luz ambiental...

ahora, el tema de la detección de las formas en este proceso si es critico, pero revisandolo me douy cuenta que solo basta con implementar un método de detección de bordes como el de la matriz de convolución de Sobel, combinándolo ( bajo condiciones controladas de luz como las del video ) con un sistema de detección de colores.

el tema de la detección de colores viene ya en el lego con uno de los brick especiales así que se puede dejar de lado, y hay que utilizar ese componente del lego para asociar un color a cada rectangulo detectado.

dado que cada recangulo tiene un ancho y alto fijos, la busqueda de rectangulos y la asignacion de colores en cada uno es relativamente sencilla despues de la detección de bordes inicial.

Acaso el ingeniero no tiene la formación matemática que precisamente lo hace llamar INGENIERO??? desde matemáticas básicas hasta ecuaciones diferenciales? Incluyendo álgebra lineal para precisamente entender como se hacen operaciones con matrices.

coparativamente con un matematico, los ingenieros tenemos una formacion matematica pobre, que apenas nos da para enteneder algunas cosas del mundo real y raras veces para proponer nuevos modelos o mejoras de modelos de abstracción.

El matematico tiene capacidad de abstraer en el mundo real en conceptos discretos o analogos, igual que el ingeniero solo que la labor del matematico es completamente especializada al respecto.

Es como decir que yo se hacer pudin porque compro el sobre en el super mercado, o decir que yo hago pudin combinando cada uno de sus ingredientes en diversas proporciones.


Eso sería más de parte heurística, lo cual se aplica más a algoritmos de ajedrez ya que el siguiente paso depende de la respuesta del oponente. Aca se habla de un algoritmo ya definido como ud mismo lo dice. Entonces no tiene mucho sentido recordar caras y movimientos si ya está definido el algoritmo.

Totalmente de acuerdo con Tooony .
y si se llega a la solución aproximandose mediante iteraciones?
seria mas lento pero mas sencillo el programa.
El algoritmo ( los algoritmos ) del cubo de Rubik son desarrollados , en efecto, con base en interaciones pero para el caso del cubo no hay aproximaciones respecto a su solucion, pero si deben haber componentes difusos respecto a la deteccion de colores aunque esto ya viene resuelto desde el logo.

me refiero a un Ing. de sistemas usando un sistema operativo para celulares "Symbian", o usando un lenguaje de programación orientado a objetos "Java".
Esto no tiene mucho sentido, pues finalmente java puede ejecutarse sobre el sistema operativo, ... sin contar que no le veo relacion alguna con lo que dijo Toony.

si el ingeniero de sistemas promedio supiera assembler y matematicas avanzadas, como usted sugiere, los sistemas multicore serían más aprovechados... por ejemplo.

Entiendo tu punto pero no el ejemplo. Porque precisamente un ingeniero de sistemas no necesita saber assembler ni matematicas avanzadas para sacarle mayor provecho a los sistemas multicore.... por ejemplo en .NET basta con usar la TPL... y por demas esta decir que los algoritmos que requieren un nivel alto de abstracción matemática respecto a la asignacion de recursos de procesador ya vienen implementados en el kernel de los sistemas operativos, es decir para la mayoria de los ingenieros nos vale, porque eso ya esta hecho... de eso se trata la existencia del sistema operativo.

Un Lanero Ing. Sistemas experto en programación vectorial por favor?
Para qué?
ninguno de los temas tratados en el articulo ni en el debate dan como para ponerse a trabajar Matrices de convolucion, multiplicacion de vectores, normalizacion, intercambio de fuerzas o energias, colision entre objetos etc etc etc.

Un Lanero Ing. Sistemas experto en Visión artificial por favor?

de nuevo no veo el para que...

sin ser un experto en el tema, pero me la paso trabajando con efectos graficos, matrices de convolucion, y matematica vectorial todo el tiempo... por mi hobbie: programacion de video juegos y manipulacion digital de imagenes....y creame en este hilo no he visto absolutamente nada la necesidad de un experto en Sistemas Vectoriales ni en Vision artificial.
 
ninguno de los temas tratados en el articulo ni en el debate dan como para ponerse a trabajar Matrices de convolucion, multiplicacion de vectores, normalizacion, intercambio de fuerzas o energias, colision entre objetos etc etc etc.
miercoles! omme por supuesto que NO estoy hablando de vectores...
no se como sera en español pero estoy hablando de "vector programing" y "parallel programming" .:cansado:

Pues el proceso de la deteccion de colores no es tan facil sobre todo en condiciones no ideales. Es decir si el programa funciona con ese y solo con ese cubo, no hay ningun problema, pero si esta hecho para funcionar con diferentes cubos donde sus colores pueden variar en varios grados e incluso el tipo de superficie puede ser mas o menos brillante.... el tema se complica...
y ni hablar si se piensa en mirar temas como la luz ambiental...
en el video se ve claramente que el cubo, el celular y la "luz ambiental" estan fijos, y eso ya lo dije mucho antes:
eso que tiene de asombroso?:confused::confused:
1. el celular y el cubo estan claramente FIJOS, osea que no hay que reconocer el patron, ni la ubicacion, porque YA SABES DONDE ESTAN LOS CUADRADOS. sabes en cuales pixels esta la informacion.
2. la iluminacion y los colores de las caras son FIJOS, osea que los rangos en los que se encuentran los colores TAMBIEN SE CONOCEN previamente...

Totalmente de acuerdo con Tooony ...
El algoritmo ( los algoritmos ) del cubo de Rubik son desarrollados , en efecto, con base en interaciones...
primero supongo que quizo decir "iteraciones",
segundo. si usted afirma que " los algoritmos ) del cubo de Rubik son desarrollados , en efecto, con base en interaciones"
entonce porque esta "TOTALMENTE" de acuerdo con que no tiene sentido?
Entonces no tiene mucho sentido recordar caras y movimientos si ya está definido el algoritmo.
para cualquier computadora es posible recordar,
todas las caras, y todos los movimientos pasados...
y probar hacia adelante futuros movimientos...
 
un ejemplo le daría MUCHO PESO a su propuesta...

Cuando cursaba computación gráfica en la universidad, el profesor nos pedía que escribiéramos un código para dibujar la línea basados en el de bresenham, la verdad no entendí exactamente lo que el quería, así que me puse a pensar en como dibujar una línea y teminé desarrollando un algoritmo propio basado en triángulos. No tenía nada de parecido al de bresenham y prácticamente con eso pasé la materia.

veo que Ud. pasó por alto un detalle: me refiero a un Ing. de sistemas usando un sistema operativo para celulares "Symbian", o usando un lenguaje de programación orientado a objetos "Java".

Lo importante es el algoritmo, independientemente de donde lo vaya a compilar.

Vuelvo y repito, que tiene eso que ver? lo importante es el algoritmo, de ahí lo puede meter en C, C++ .net java, en donde quiera ponerlo, son detalles menores.

si el ingeniero de sistemas promedio supiera assembler y matematicas avanzadas, como usted sugiere, los sistemas multicore serían más aprovechados... por ejemplo.
Un Lanero Ing. Sistemas experto en programación vectorial por favor?

Cualquier pensum de ingeniería comprende desde matemática básica, calculo: diferencial, integral, VECTORIAL, ecuaciones diferenciales, eso sin mencionar todas las físicas y como lo dije antes aparte de álgebra lineal, e incluso geometría. Entonces no solo un ingeniero de sistemas, si no en general un ingeniero tiene los conocimientos para solucionar un problema matemático independientemente sea vectorial o no.

su Link le seria muy util para saberlo.

Claramente era un comentario sarcástico. :rolleyes:

Usted lo habra leído???
"Los objetivos típicos de la visión artificial incluyen:
* La detección, segmentación, localización y reconocimiento de ciertos objetos en imágenes (por ejemplo, caras humanas).
* La evaluación de los resultados (ej.: segmentación, registro).
* Registro de diferentes imágenes de una misma escena u objeto, i.e., hacer concordar un mismo objeto en diversas imágenes.
* Seguimiento de un objeto en una secuencia de imágenes.
* Mapeo de una escena para generar un modelo tridimensional de la escena; tal modelo podría ser usado por un robot para navegar por la escena.
* Estimación de las posturas tridimensionales de humanos.
* Búsqueda de imágenes digitales por su contenido.
Estos objetivos se consiguen por medio de reconocimiento de patrones, aprendizaje estadístico, geometría de proyección, procesado de imágenes, teoría de gráficos y otros campos.
"

Usted leyó?

El propósito de la visión artificial es programar un computador para que "entienda" una escena o las características de una imagen.

Está reconociendo los colores del cubo, acaso no es eso una característica de la imagen?


offtopic flamer

en que se basa para formular, usted, esa propuesta de menospreciar el algebra de baldor?

No la menosprecio, pero así mismo los avances matemáticos por los cuales nos vemos beneficiados a diario no son los mismo que hace 100 años.

:cansado: donde hay un ejemplo de comentario absurdo en este foro?
NO CREO que esto califique en el concepto de "VISION ARTIFICIAL", tal vez "sensado de colores".

meh!

fuera de inutilizar passwords y encriptaciones viejas, en que le han cambiado la vida los ultimos avances de las matematicas???

y si se llega a la solución aproximandose mediante iteraciones?
seria mas lento pero mas sencillo el programa.

Número de combinaciones posibles

43.252.003.274.489.856.000 <--- Un número algo absurdo no le parece?

cuarenta y tres trillones doscientos cincuenta y dos mil tres billones doscientos setenta y cuatro mil cuatrocientos ochenta y nueve millones ochocientas cincuenta y seis mil permutaciones

Y eso para el cubo de 3x3x3

Tony.
 
43.252.003.274.489.856.000 <--- Un número algo absurdo no le parece?

cuarenta y tres trillones doscientos cincuenta y dos mil tres billones doscientos setenta y cuatro mil cuatrocientos ochenta y nueve millones ochocientas cincuenta y seis mil permutaciones

Y eso para el cubo de 3x3x3
primero.
El algoritmo ( los algoritmos ) del cubo de Rubik son desarrollados , en efecto, con base en interaciones...
segundo. no dije "posibles permutaciones" dije iteraciones.
al usar iteraciones, no se tienen que almacenar todas, los datos innecesarios se van descartando :cansado:

Cuando cursaba computación gráfica en la u...
la verdad no entendí exactamente lo que el quería...
y prácticamente con eso pasé la materia.
aham
ese es el ejemplo de un ing de sistemas solucionando un problema matematico de una forma en que NUNCA antes a ningun matematico se le habia ocurrido???
 
primero.

segundo. no dije "posibles permutaciones" dije iteraciones.
al usar iteraciones, no se tienen que almacenar todas, los datos innecesarios se van descartando :cansado:

yo entendi mal, supuse que te referias a desarrollar los movimientos generados por el algoritmo en multiples iteraciones, no me refereia a que tuvieras que probar todas las combinaciones posibles.
 
vector programing y parallel programing: CRAY, pMatlab, array programming, ZPL, multi core computing, SIMD, MIMD
la gran mayoria de los Ing. de sistemas programan y piensan en "serial programming" , SISD.

pues entonces hablamos de lo mismo y sigo sin ver la necesidad de un experto en ninguno de los dos campos.


Y lo de los programadores - que no necesariamente ingenieros - es cierto, pero hoy en dia esto esta cambiando a pasos agigantados, ya que ahora es una necesidad imperativa.
 
ojala!
asi podrían aprovechar
los comandos SIMD, las GPU´s, el procc CELL, nuestros dual y quad core´s, etc.

hoy dia se puede, pero no es muy comun usarlos porque realmente hasta hace poco tener desktops de mas de un core era poco comun....
hoy dia ya tenemos desktops con 4,8,12 nucleos.


sin embargo no es necesario saber assembler para hacer uso de estas caracteristcas, tanto intel como microsoft y demas... tienen su juego de librerias para cada caso,

DirectX por ejemplo hace uso extensivo de este tipo de extensiones sin que el programador llegue a sentir la necesidad de codificarlo pos si mismo.

Y de DX para arriba todo lo multimedia que corre en windows hace uso de SIMD.

Por su parte la programacion en las GPU es utilizada en multimedia ( sobre todo videojuegos y aplicaciones de diseño 3d ) a traves de la programacion de shaders, nvidia y ati tienen librerias dedicadas al respecto, y ahora con la llegada de DirectX11 - Directcompute el acceso se hara de manera uniforme sin importar el hardware.

Y respecto a multinucleo siempre ha habido forma de hacer uso de ello, aunque de una manera muy limitada precisamente porque se requerían conocimientos de mas bajo nivel, por lo cual no siempre el tiempo dedicado en consumir dichos componentes era algo rentable, ahora por su parte librerias como la TPl de microsoft ( anteriormente Parallel Extensions ) se han modernizado mucho y hacen parte del .net framework 4.0
 
Y respecto a multinucleo siempre ha habido forma de hacer uso de ello, aunque de una manera muy limitada precisamente porque se requerían conocimientos de mas bajo nivel, por lo cual no siempre el tiempo dedicado en consumir dichos componentes era algo rentable, ahora por su parte librerias como la TPl de microsoft ( anteriormente Parallel Extensions ) se han modernizado mucho y hacen parte del .net framework 4.0
a eso me refiero, como no saben como funcionan, dependen 100% de los compiladores.
 
a eso me refiero, como no saben como funcionan, dependen 100% de los compiladores.
pues claro esa es la idea, comparativamente hablando un proyecto de software para una empresa puede tardar 6 meses dedicandose en 80% a la logica del negocio y en 20% a la presentacion...

si un ingeniero se pone a programar para optimizar el paralelismo ( como hace 20 o 30 años) el proyecto ya no tomaria 6 meses sino probablemente 2 años... lo cual se deriva en costos que no tiene porque asumir una empresa.

Por otro lado, los ingeniero SI SABEN COMO FUNCIONA porque para eso se ven materias de electronica, sistemas operativos etc...

pero no por el hecho de saber como funciona implica que se la deban pasar perdiendo el tiempo en algo mayoritariamente inutil como el assembler, que solo es util en menos de un 0.001% de los proyectos de software del mercado.
 
Bueno y esto?...

Sigan que estoy aprendiendo con uds! :p

Y si no me equivoco, el que programó todo esto, armó el LEGO y montó el video son los de ARM... ¿no?, El canal que aparece es el de ellos, y en los créditos: ARM Ltd. © 2010..
u.u
 
Última edición por un moderador:
Pues demostrar que las técnicas de algoritmos para la programación de máquinas se pueden refinar y optimizar tan bien como para que un simple celular resuelva un problema que le da duro a más de un ser humano.

Más bien que ganamos nosotros con su comentario ? :cansado:

jaja los 2 están bien pero, una calculadora hace cálculos matemáticos instantáneos y no es una maravilla electrónica.
 

Los últimos temas