Realidad Aumentada aplicada a la Matemática

Luego de algún tiempo retomo la escritura en el blog, para comentarles el emprendimiento que se ha iniciado en favor de aplicar la tecnología de la Realidad Aumentada para poder reforzar los aprendizajes en matemática, fundamentalmente en los primeros grados.  El Informe Horizon 2010 elaborado por el eLearn Center de la UOC y el New Media Consortium   vaticinó que la realidad aumentada sencilla sólo tardaría de dos a tres años en imprimir una fuerte influencia en la educación; esta vaticinio se ha ido cumpliendo en estos cerca de 3 años; el grato reto que asumí fue poder ser referentes en el uso de esta tecnología; por fortuna se coincidió con la empresa mexicana  M.C. Ar  en este empeño y en estos meses estoy trabajando para ellos en el desarrollo de un sistema que pueda apoyar la enseñanza de las Matemáticas basándonos en la curricula de primer grado en México, que es muy similar en los contenidos a varias de las currículas latinoamericanas en especial la peruana.

Durante el desarrollo del proyecto se van construyendo  juegos de RA, que usan conceptos de las denominadas aplicaciones de computación basadas en el gesto. El lenguaje de programación que se eligió fue CSharp bajo el framework Microsoft XNA; dentro de este entorno se usaron  librerías de visión artificial basadas en OpenCV y adaptada a CSharp con la denominación de OpenCvSharp. Las aplicaciones construidas  logran interactividad a través de los gestos; usando para ello la detección de flujo de movimiento,  es decir, se determina el patrón aparente de movimiento de objetos, superficies, y los bordes en una escena visual que es causado por el movimiento relativo entre un observador (un ojo una cámara ) y la escena,

Experimentalmente se esta validando las aplicaciones en la  I.E. “Jesús Nazareno”, bajo estrategias del juego didáctico; donde se introducen los juegos  para poder validar sus resultados, que espero poder comentar en este espacio. Estos son algunos de los conceptos que se están trabajando:

–        Clasificación de objetos.

–        Seriación de objetos.

–        Representación de la cardinalidad de un conjunto de objetos.

–        Identificación de números ordinales.

–        Identificación de la relación “mayor que”, “menor que”, “igual que”

–        Sumar y restar de números.

Videos ilustrativos de lo que se esta avanzando:

Juan Cadillo

Solicitud de Donación de Computadoras

Este es un llamando a las personas u organizaciones que cuenten con la posibilidad de donar cinco ordenadores a favor de la I.E. “Jesús Nazareno” en Huaraz, Ancash, Perú.

En esta institución se viene realizando un intento de cambio a favor de la experimentación del uso de las TICs en una ámbito que pueda ser un modelo de uso para otras escuelas, pero como todo proyecto requiere de infraestructura acorde a sus objetivos, pero la infraestructuras  con que se cuenta esta quedando obsoleta debido a que el periodo de vida de la OLPC se esta agotando (5 años) y apenas contamos con otras  7 computadoras por lo que seguir desarrollando esfuerzos en nuevos proyectos es muy limitado.

Así que se se anima a poder apoyarnos lo mínimo que requerimos es cinco nuevas PCs o más; el número se ha colocado en base a que es lo mínimo para poder trabajar combinando con las OLPC y seguir operando con un modelo mixto que implique el poder desarrollar soluciones que sean válidas en diferentes contextos.

Dejamos un resumen del trabajo

Gracias por el apoyo que nos puedan brindar.

Juan Cadillo

Videos de realización del proyecto Ancash museo abierto

Dentro del proyecto estamos dando pequeños pasos para poder crear una cultura orientada a la investigación del proceso histórico; como todo trabajo con niños los resultados no son visibles en un tiempo cercano sino que se espera sus resultados den frutos  a mediano y largo plazo.  Dentro del proceso se ha visitado el Museo Arqueológico de Ancash para investigar sobre los primeros pobladores peruanos en especial de la zona de Ancash. En el Museo nos han dado muchas facilidades, explicándonos como se pudo dar el poblamiento del Perú y en que estadio de desarrollo llegó el hombre a nuestras tierras.

Fruto de estas explicaciones, los niños han elaborado un guión sobre el chaco (una de las formas de caza de animales), así como de la  rutina de vida de los hombres de esa época. Luego se ha procedido a modelar figuras usando plastilina, cartulina y colores. Finalmente los niños y niñas capturaron las escenas que deseaban ilustrar usando la técnica de Stop Motion.

Para no interferir demasiado con el horario,  los niños han elaborado las siguientes animaciones en horas fuera del horario escolar dentro de la I.E. “Jesús Nazareno”. Además existe un gran entusiasmo por el trabajo realizado, y esto es una de las razones de sentirme tan orgulloso del trabajo que ellos intentan llevar a cabo.

Juan Cadillo

Medio Millón de visitas… y suena mejor si hablamos de la seguridad emocional

Hoy este espacio celebra un nuevo hito…. el medio millón de visitas fue alcanzado. Dios quiera que muy pronto se llegue al doble.

Bueno, es necesario ahora hablar de la seguridad emocional y el porque de su importancia para el éxito personal que se debe formar en los niños y niñas desde muy pequeños. La seguridad emocional es la seguridad en uno mismo… es decir es la capacidad de sentir seguridad sobre la capacidad de ejercer control sobre nuestros sentimientos y sobre nuestra autoeficacia.

Bandura considera que la autoeficacia en un modelo que confiere poder; por lo que debemos  desarrollar en los niños y niñas aptitudes que vayan construyendo una sólida creencia en sí mismos.  Para ello debemos enseñar que una tarea difícil debe ser descompuesta en varias sub tareas, ir reforzando las expectativas  personales de cada niño o niñas en el tiempo con el logro de cada sub tarea. En este camino se debe inculcar el optimismo y reforzarlo. Así una  fuerte seguridad en la propia habilidad para dominar nuevas actividades puede operar de manera generalizada ante diferentes tipos de desafíos educativos y de la vida.

Esto es básicamente lo que se desea en el proyecto “Uso de las TICs en el Desarrollo de las Habilidades del Siglo XXI”; reforzar la seguridad emocional a través de diferentes actividades muchas tecnológicas y otras no, porque lo importante es la formación integral y la oportunidad de que los niños y niñas se vayan formando en una cultura del éxito que les permita:

  • Comportarse con coherencia
  • Respeto por si mismos
  • Aprovechamiento de sus capacidades
  • Sentimientos positivos y motivación
  • Tomar decisiones
  • Comunicarse mejor  con el grupo
  • Conseguir nuevos amigos
  • Mejorar hábitos

Una de las tareas dentro del avance logrado es que los niños y niñas de 11 años vayan elaborando tutoriales cada vez de una manera más autónoma .. donde se apoyen uno a otros para conseguir el objetivo de comunicar lo que van aprendiendo. Es grato presentarles el siguiente tutorial elaborado para ilustrar como construir un probador de ropa virtual… en el video podrán apreciar comentarios de los actores respecto a su desempeño y como mejorarlo.

Juan Cadillo

Tendencias emergentes en Educación con TIC: Libros de Realidad Aumentada

La Asociación Espiral, Educación y Tecnología ha publicado el libro “Tendencias emergentes en Educación con TIC”, este libro es fruto de una actividad colaborativa  en la que muchas investigadores  y docentes comparte sus experiencias y saberes sobre la evolución y perspectivas tecnológicas en la Educación para los próximos años.

Tendencias emergentes en Educación con TIC

En nuestro caso nos sentimos muy contentos de ser mencionados en esta publicación por el trabajo realizado con el primer libro de Realidad Aumentada que construimos en el 2011 (ver página 190  de la publicación Tendencias emergentes en Educación con TIC)  libro de Realidad Aumentada  “Conociendo el Museo Arqueológico de Ancash”; que fue premiada por Fundación Telefónica también en ese año. Esta fue una primera propuesta educativa novedosa para nuestro medio (2011) que se postulo a través de la construcción de contenidos en base a la experiencia recogida por los propios niños y niñas en el museo Arqueológico de Ancash. Nuestra labor a lo largo del tiempo ha mejorado, permitiendo construir en el 2012 un Libro de Realidad Aumentada sobre el Ajedrez y actualmente estamos construyendo contenido para un libro de Realidad Aumentada para el Lenguaje de Señas Peruanas (en esta ocasión la tecnología que se usará esta relacionada con CSharp y Opencv dejando por el momento Processing) en la que se esta utilizando mucho ingenio para que los niños puedan  conocer el lenguaje de señas para sordos, construyan aplicaciones usando este lenguaje en Scratch, así como aplicaciones de realidad aumentada para mejorar la interacción y apoyar el conocimiento de este lenguaje en otros escolares; es un largo camino aún y el resultado final es el libro que espero este terminado a fines de noviembre.

Por otro lado el trabajo con la realidad aumenta se ha extendido al punto de que nuestra experiencia permite que los propios niños pueden construir sus propias aplicaciones de realidad aumentada para lo cual se parte de experiencias de detección de color, uso mensajes y una cámara; permitiendo que los niños desarrollen un conocimiento intuitivo en una primera etapa y luego este quede reforzado con la práctica.

Aquí un ejemplo del trabajo con un probador de ropa virtual construido por los propios niños y niñas:

Juan Cadillo

Tutorial de Realidad Aumentada con Scratch Spot

Hace varios meses que me encontré con Spot (Augmented Environments Lab at the Georgia Institute of Technology) un versión modificada de Scratch, que tiene la virtud de poder adquirir las imágenes en tiempo real como fondo dentro Scratch; si bien Scratch 2.0 en su versión beta tiene esta posibilidad; los creadores de Spot han implementado el seguimiento de marcadores que se puede usar para hacer proyectos de Realidad Aumentada con los niños (si bien esta limitada como muchos por la cantidad de luz para poder obtener un buen seguimiento), Spot cuenta con 3 tipos de marcadores implementados y pueden ser descargado el software desde http://www.augmentedenvironments.org/lab/research/children/arscratch/

Para poder usarlo descargue el software desde el enlace, descomprima todo en una carpeta, conecte su cámara web y a dar rienda suelta a su imaginación.

En mi caso he implementado un piano virtual (la codificación usada se ve en el video) que es una remembranza de la investigación que realice para poder implementar un piano usando processing y las librerias de opencv.

Aquí el video:

Y el piano que implemente usando processing ya hace casi dos años:

Juan Cadillo León

El Flujo Óptico

En esta semana me puse a revisar algunos algoritmos de ejemplo que traen las librerías de OpenCvSharp, y me dí con el de flujo óptico. Cuando trabaje con processing deseaba poder implementar algún algoritmo de este tipo, pero las librerías de opencv para processing no me soportaban la cámara y por la inexperiencia de esos días no entendía como hacerlo y me conforme con la detección de movimiento para poder construir juegos para niños. Ahora con un poco más de experiencia y armado de un marco mucho más rico de funciones dentro de OpenCV para C#,  he adaptado el algoritmo de ejemplo que trae y  poder mover un pequeño cuadrado (pensar que para animar un simple cuadrado tuve que romperme la cabeza con processing… hace algunos años).

Algo de teoría

Flujo óptico

El flujo óptico sucede cuando nos movemos en una dirección determinada. Si miramos hacia el punto al que nos dirigimos (el centro de expansión) éste no muestra movimiento, mientras que si miramos al espacio circundante, el campo visual parece expandirse. Este efecto, nuestro cerebro lo percibe con  precisión, y  contribuye al control de la locomoción.

El objetivo inmediato del análisis de imágenes basado en el flujo óptico es determinar el campo de movimiento (representación bidimensional de un movimiento tridimensional)

Algoritmo de Lucas-Kanade

Asumen constantes los vectores de velocidad u y v en una pequeña porción de la imagen.

lucas_a

lucas1

lucas_b

donde la matriz A contiene las derivadas espaciales de la imagen, el vector v corresponde al vector de flujo óptico (u,v) y el vector b contiene las derivadas temporales de la imagen.

lucas_c

lucas2

lucas_d

Para poder realizar el cálculo de flujo óptico tiene que ser posible la inversión de la matriz

lucas_e

Shi y Tomassi definen en las propiedades que debe cumplir una región para que el flujo óptico se estimado apropiadamente utilizando la técnica de LK. Sean λ1 y λ2 los valores propios de la matriz $$A^TA$ para cierta región R de la imagen, entonces se debe cumplir que:

  • min (λ1 y λ2) > λmin) existe en R
  • (λ1 / λ2) < t

Veamos la implementación del algoritmo original ofrecido dentro de los ejemplo de OpenCvSahrp

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OpenCvSharp.Test
{
/// <summary>
/// Lucas & Kanade アルゴリズムによるオプティカルフローの計算
/// </summary>
/// <remarks>http://opencv.jp/sample/optical_flow.html#optflowHSLK</remarks&gt;
class OpticalFlowLK
{
public OpticalFlowLK()
{
using (IplImage srcImg1 = Cv.LoadImage(Const.ImagePenguin1, LoadMode.GrayScale))
using (IplImage srcImg2 = Cv.LoadImage(Const.ImagePenguin1b, LoadMode.GrayScale))
using (IplImage dstImg = Cv.LoadImage(Const.ImagePenguin1b, LoadMode.Color))
{
// (1)速度ベクトルを格納する構造体の確保,等
int cols = srcImg1.Width;
int rows = srcImg1.Height;
using (CvMat velx = Cv.CreateMat(rows, cols, MatrixType.F32C1))
using (CvMat vely = Cv.CreateMat(rows, cols, MatrixType.F32C1))
{
Cv.SetZero(velx);
Cv.SetZero(vely);

// (2)オプティカルフローを計算
Cv.CalcOpticalFlowLK(srcImg1, srcImg2, Cv.Size(15, 15), velx, vely);

// (3)オプティカルフローを描画
for (int i = 0; i < cols; i += 5)
{
for (int j = 0; j < rows; j += 5)
{
int dx = (int)Cv.GetReal2D(velx, j, i);
int dy = (int)Cv.GetReal2D(vely, j, i);
Cv.Line(dstImg, Cv.Point(i, j), Cv.Point(i + dx, j + dy), Cv.RGB(255, 0, 0), 1, Cv.AA, 0);
}
}

// (4)オプティカルフローの表示
Cv.NamedWindow(“ImageLK”, WindowMode.AutoSize);
Cv.ShowImage(“ImageLK”, dstImg);
Cv.NamedWindow(“velx”, WindowMode.AutoSize);
Cv.ShowImage(“velx”, velx);
Cv.NamedWindow(“vely”, WindowMode.AutoSize);
Cv.ShowImage(“vely”, vely);
Cv.WaitKey(0);
Cv.DestroyAllWindows();
}
}

}
}
}

Aquí el video de la implementación del algoritmo en tiempo real:

Y este video con el movimiento detectado sobre un cuadrado:

Juan Cadillo