Realidad Aumentada algo que puedes hacer en casa o la escuela fácilmente… te lo demostramos

Una de mis mayores pasiones en estos dos último años ha sido poder investigar y desarrollar aplicaciones con realidad aumentada, orientadas a favorecer el desarrollo de diferentes capacidades en los niños. Sin duda a lo largo de este tiempo han aparecido diversas aplicaciones que amplían las posibilidades de este nuevo concepto.

Mi mayor preocupación al inicio era poder crear estas aplicaciones y empoderarlas con la creación de contenido trabajada por los niños y niñas en base a la investigación, la cooperación y el trabajo social en nuestra comunidad. En todos los casos trabajados y que he visto  la realidad aumentada es un elemento motivador que desarrolla habilidades de búsqueda de información, trabajo en equipos, diseño de contenidos, comunicación… y un gran etc. pero los conceptos de como funciona y que hay dentro del backend de esta tecnología quedaban ocultas para los niños. Afortunadamente esto puede cambiar si usamos las posibilidades que ofrece la combinación de diferentes aplicaciones (lenguajes de programación) como Scratch, Etoys aunado a  Wedo (que en este caso lo usamos porque afortunadamente contamos con este recurso). Scratch y Etoys son software distribuidos libremente y sus posibilidades han ido mejorando.

El trabajo con los niños que estoy experimentando a los largo de estos años, es la posibilidad de poder enseñarles programación usando estos lenguajes visuales. La ventaja de estos es que reducen las dificultades propias del código y se centran en la lógica. Sea Scratch o Etoys cada uno tiene ciertas ventajas sobre el otro, pero si aprovechamos ambos las cosas se ponen mucho más interesantes. Es así que Scratch tiene aunado a su código la posibilidad de manejar sensores como los de WEDO, o recibir conexiones remotas; también existen adaptaciones que trabajan con Arduino y dan otras posibilidades. Etoys puede manejar una cámara(en su versión Windows, algo falla en las olpc pese a tener la misma versión) y tiene la posibilidad de enviar mensajes a Scratch.

Entonces la idea que surge es porque no utilizar estas aplicaciones en conjunto y crear una versión que pueda detectar color en Etoys y en base a esta detección enviarle mensajes a   Scratch. Y en Scratch que tiene comandos para WEDO poder mover los motores que trae este set, y eso es lo que estamos haciendo. Para los niños  es algo simple y hasta natural con el tiempo el  poder controlar cosas en base a la programación y entender como funcionan las cosas que usan.

Aquí el video:

Veamos las condiciones necesarias:

  • Tener instalado Etoys la última versión, por que en las anteriores la cámara no funcionaba.
  • Tener Scratch
  • Tener una cámara web (mucho de la calidad depende de tener una buena cámara)
  • Tener una manopla con un color homogéneo que sea diferente a los colores del fondo que usas

Pasos:

En esta primera oportunidad solo trabajaremos con Etoys

Abrir Etoys y comenzar un nuevo proyecto.

abrirEtoys

Ir a provisiones, catálogo de objetos.

abrirCatalogodeobjetosdeprovsiones

Pestaña multimedia y sacar al Mundo el objeto cámara.

multimediaCamara

Por lo general la cámara se activa, puedes agrandar o reducir la imagen (pero hay un máximo según la capacidad o flujo de la cámara y su rango o tamaño).

multimediaCamaraabierta

Pintar un objeto, como el famoso autito de Etoys.

pintarauto

Redirige la dirección del auto con Shift + movimiento del mouse sobre la flecha verde de dirección.

cambiadireccion

Pinta dos círculos, uno que diga atrás y otro adelante con sus respectivas flechas de manera  similar a como se hizo con el auto.

pintaCirculos

Mueve los círculos hacia la imagen.

muevecirculos

Si das click sobre el objeto cámara observarás su halo, ir a menú en la parte superior al lado de la X en el borde izquierdo. Configura la cámara en enviar al fondo, se resiste al avance; y al final del menu también esta la opción de apagar o encender la cámara (off, on).

configurarcamara

Colócate sobre el circulo, saca halo, abrir visor.

visorprogramacion

Saca al Mundo, Prueba Si No

pruebasino

Luego saca de Adelante(si colocaste ese nombre)la orden esta encima de color

encimadecolor

Luego colócate sobre el auto, saca halo, y coloca sobre el guión de Adelante, auto avanza 5, pero cambia ese valor por 10.

pruebasinoautoavanza

Selecciona con el cuenta gotas el color de tu guante, trata de que sea cerca del circulo ya que los colores varían en función de la cantidad de luz y la posición.

cuentagotas

Activa los guiones en el reloj de cada guión y todo terminado, tu primera aplicación de realidad aumentada esta listo para impresionar en casa o el colegio.

scripterminado

Lo último no olvides esconder los guiones para que se vea mejor y acercar el guante para que el carro se mueva adelante o atrás. el reto es mejor el guión para hacer otras cosas.

En posteriores post, les mostrare como interactuar con Scratch y WEDO.  Y si te gusto déjame un comentario.

Juan Cadillo

Desarrollo de un Multimarcador para Realidad Aumentada

Desde Diciembre del 2012 me empeñe en desarrollar mi propia detección de marcadores en CSharp y XNA, para ello estoy empleando OpenCvSharp, un marco de trabajo muy bueno que esta siendo portado desde OpenCv.

Para el desarrollo de diferentes pasos me he inspirado en js-aruco que me permitió entender los pasos para desarrollar la homografía. La codificación del marcador es propia y esta basada en una secuencia de 2 a la 9 combinaciones, es decir el marcador esta dividido en un tablero de 7 x 7 partes (49), de las cuales solo tomo 9 que son las centrales. La parte exterior permite crear una bloque totalmente negro que separa el marcador de la parte blanca, la segunda cuadricula interior determina la orientación y la siguiente cuadricula es la que permite determinar la codificación, cuyo resultado son 512 marcadores posibles.

Una vez ubicado e identificado el marcador, el siguiente reto fue determinar la rotación, traslación y escalado. Fue realmente una tarea ardua, debido a que se tenía que transmitir estos valores a 3D en XNA, que de por si es ya es difícil sino tienes mucha experiencia en trabajar con 3D. Luego de mucho investigar en la matemática proyectiva y funciones recomendadas  (ProjectPoints2, SolvePnP, Rodrigues, etc.) que fueron casi un dolor agudo de cabeza por los datos de entrada como de salida (interpretación); me decidí hacerlo a mi modo…. básicamente basarme en el ángulo de rotación y su cambio según los sentidos de orientación que me permite trasladar y rotar el objeto en 3D según el movimiento del marcado. Esto me  permite economizar en tiempo de ejecución y memoria.

El escalado fue mucho más sencillo pues tomé como referencia el perímetro y en función de este determinar el tamaño del modelo a presentar.

Este es el video de muestra del avance logrado; ahora queda optimizar el código y documentarlo para su posterior liberación.

Juan Cadillo

Aplicando robótica y programación en la Educación

Hablar de robótica en la educación es algo que poco a poco se va dando en las escuelas; como disciplina educativa, es buscar potenciar lo atractivo que resulta para los educandos aprender haciendo. El ambiente que se crea es propicio para el  aprendizaje, ya  que posibilita   integrar diferentes  disciplinas como la matemática, el lenguaje, la física, la lógica, la informática, la electrónica y la mecánica, etc.

La programación es un complemento importante, sin lógica es un mero armar de un rompecabeza en 3D. Por ello es necesario usar con los niños programas que puedan desarrollar esta lógica; para ello podemos usar los programas visuales orientado a objetos como Scratch, Etoys u otros.

Algo importante, dentro de mi experiencia, es iniciar el trabajo con lo niños a nivel de programación y el reconocimiento de los dispositivos y componentes; es preferible no mezclar contenidos con la programación; ya que muchas veces es frustrante que no se avanza ni los contenidos ni el logro de los proyectos de programación o robótica.

Otro elemento importante es la formación de alumnos líderes que apoyen a sus compañeros, esto se puede lograr formándolos en horarios extra escolares o en los recreos. La oportunidad de tener estos alumnos es la posibilidad de que ellos apoyen a sus compañeros y refuercen los mensajes y ordenes impartidas.

Generalmente se habla mucho de la innovación y la creatividad, pero debemos recordar que al inicio los niños deben familiarizarse con el entorno de programación, las piezas y elementos mecánicos. Y solo después de mucho trabajo el estudiante estará realmente en la capacidad de innovar y crear nuevos conceptos. Caso contrario caeremos en un mero  repetir o un recrear cosas sin ton ni son.

A continuación les presento el trabajo que venimos desarrollando para formar a niños en el uso de robots WEDO; para este trabajo se esta utilizando el Scratch instalado en la OLPC. Además para potenciar su uso se esta trabajando con Phyton lo que permite enviar comando de manera remota a otro ordenador con Scratch. Dentro del video se muestra un automóvil que usa dos motores, algo que no se puede hacer con la versión 1.4 de Scratch sino con una versión de la misma para control de dos motores. Además se ha implementado en CSharp el reconocimiento de voz que permite controlar el robot móvil a través de comandos de voz.

Juan Cadillo