Blog que narra la experiencia en la construcción y uso de conceptos de la Realidad Aumentada para favorecer el desarrollo kinestésico y reconocimiento de colores con niños

Entradas etiquetadas como ‘juan cadillo’

Quién dijo que la realidad aumentada es difícil… aprende como los grandes

Luego de mucho tiempo actualizo este blog con la esperanza de que algunos conceptos puedan ser aplicados por los niños.

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

Conclusiones del Proyecto

Deseamos presentar una solución pedagógica y didáctica  factible, pero mucho de lo que se presenta suena a muy técnico y apegado a una herramienta tecnológica, por que así lo es. Sabemos que para desarrollar lateralidad o aprender colores se puede realizar  en tiempos relativamente cortos y sin sobresaltos.

La tecnología es una herramienta y no la meta en si del trabajo en las aulas; eso lo comprendimos desde el inicio más nos damos cuenta que era necesario correr el riesgo y emprender el camino, al final los resultados  nos llenan de orgullo, porque avanzamos en un campo poco explorado y los resultados están documentados. Nuestros niños respondieron y lograron los objetivos que nos habíamos planteado.

Estas son nuestras conclusiones:

  • El apoyo de los niños más grandes es importante para lograr que los niños más pequeños aprendan rápidamente las actividades propuestas.
  • Se puede usar la Realidad Aumentada para enseñar colores. (PROPUESTA PARA LA SEGUNDA ETAPA añadir voz al reconocimiento de colores).
  • Se puede usar la Realidad Aumentada para desarrollar los conceptos de Lateralidad con los niños.
  • La Realidad Aumentada permite el desarrollo de los  reflejos y coordinación ojo mano. También demanda de los niños resistencia en los miembros superiores.
  • La realidad aumentada permite el afianzamiento  de la coordinación motriz en lo niños.
  • Se puede enseñar música a través de la Realidad Aumentada.
  • Los niños y niñas pueden aprender a  dibujar y pintar a través de la Realidad Aumentada
  • La realidad aumentada permite el desarrollo de capacidades consideradas en el Diseño Curricular Básico Curricular del Perú
Juan Cadillo León

Subsistema de Reflejos y Lateralidad para el Proyecto PVRA

Para consolidar el desarrollo, se buscó  reforzar el aspecto kinestésico, lo que permitiera que los niños refuercen sus reflejos y lateralidad mediante la aplicación de juegos; a ello apunto el desarrollo del módulo de ping pong, el módulo de Lateralidadque reforzará el reconocimiento de DERECHA, IZQUIERDA, ARRIBA Y ABAJO. Se implementó un probador de ropa que permite coordinar todo lo aprendido. Y finalmente me anime a desarrollar un piano virtual que sería una adaptación del probador virtual pero en vez de mover o cambiar la ropa se debe tocar una nota musical.

El módulo de ping pong se basa en el reconocimiento y seguimiento de color COLOR TRAKING, que permite mover las barras de los jugadores según un color definido por click (PRIMER JUGADOR ) y anticlik (SEGUNDO JUGADOR). Una pelota se mueve de izquierda a derecha y viceversa donde el jugador tiene que impedir que la bola pase hacia el final de su campo, para ello tiene una barra que se desplaza verticalmente. El juego requiere de coordinación, equilibrio y fuerza en el brazo para mantenerlo levantado.

Para indicar que se está dando el movimiento de las barras y su dirección se ha colocado unos círculos pequeños de diferentes colores que le indican al jugador el sentido que tiene su movimiento.

Fig. Ping Pong – con seguimiento de color (color traking) probado por los

niños del 4º

A continuación se muestra el segmento de código para la implementación de la paleta de juego:

class paleta { //gestor de movimiento, según color

Point e1, e2;

paleta(){ //declaración de la clase

e1 = new Point( 0, 0 );

e2 = new Point( 0, 0 );

}

void mover(){

//nueva región de interés

if (s1)

{

//e1.x = constrain(e1.x, 40, width – 40);

e1.y =  constrain(e1.y, 0, height); //región limite

mouseYnuevoI = e1.y;

ellipseMode(CENTER);

ellipse( e1.x, e1.y, 30, 30 );

}

if (s2)

{

e2.y =  constrain(e2.y, 0, height); //región limite

mouseYnuevoD = e2.y;

fill( 0, 255, 255, 128 );

ellipseMode(CENTER);

ellipse( e2.x, e2.y, 30, 30 );

}

}

El módulo de Lateralidad permite distinguir la dirección del movimiento; si es a la izquierda, a la derecha arriba o hacia abajo.

 

Fig. Juego de Lateralidad: Izquierda, Derecha, Arriba y Abajo

Presentamos una declaración de variables usado:

//Programa que mueve la burbuja en cualquiera de las cuatro direcciones

import hypermedia.video.*;          //  Importando OpenCV library

OpenCV opencv;                      //  Creando un Nuevo objeto OpenCV object

PImage movementImg;                 //  Creando un PImage para detector movimiento

PImage bubblePNG;                   //  Crea un PImage para la burbuja a mover

PFont font;                         //  Crea un objeto font

Bubble bolita;

El módulo  probador virtual permite que el alumno demuestre sus destrezas de coordinación y ubicación para poder  elegir un polo que se le acomode al cuerpo, para ello utiliza el sistema de menú con detección de movimiento.

A continuación presentamos una imagen ilustrativa y el código correspondiente a la clase que permite el cambio de color, tamaño y ubicación de la ropa.

Fig. Probador Virtual – con menú interactivo

class Ropa

{

int rX, rY, ropaWidth, ropaHeight;

int MaxropaWidth, MaxropaHeight;

int elcolor;

Ropa ( int rpX, int rpY, int rW, int rH, int posicion)

{

rX = rpX;

rY = rpY;

ropaWidth = rW;

MaxropaWidth = rW;

ropaHeight = rH;

MaxropaHeight = rH;

elcolor = posicion;

}

}

Y el Piano virtual, es cual todavía nos falta perfeccionar.

Presentación de los Resultados:

Video 1: Institución Educativa  “Jesús Nazareno”

Video 2. Institución Educativa “Jesús Nazareno”

Video3. Institución Educativa  “Jesús Nazareno”

Video 4. Institución Educativa

Juan Cadillo

Subsistema de Dibujo Kinestésico para el Proyecto PVRA

Este es el subsistema  que demando mayor  trabajado. Partimos de la capacidad de poder detectar movimiento para lo cual usamos las librerías para JAVA de OpenCV ubicadas en OPENCV Processing and Java Library cuya dirección url es: http://ubaa.net/shared/processing/opencv/.

Para ello dividí el trabajo en:

  1. Poder detectar el movimiento en regiones puntuales, lo que sirvió para localizar los menús que funcionarán sin necesidad de presionar el mouse o alguna tecla.

 Menú de selección de color activado por detección de movimiento

Fig. Menú de selección de color activado por detección de movimiento

Se trabaja básicamente sobre una diferencia de pixeles de un imagen capturada frente a otra imagen capturada posteriormente; si la diferencia es marcada en la región entonces se ha detectado movimiento; lo que corresponde a la selección de un color para el pincel que debe pintar en nuestro caso.

También se prevé que se tenga que borrar el lienzo donde se pinta lo que se hace con el menú borrar.

 

Fig. Menú de borrado de lienzo – activado por detección de movimiento

El código que presentamos a continuación permite poner una imagen en escala de blanco y negro y hace uso de las librerías de openCV:

  // luego de encontrado el color aplicamos filtros para detectar movimiento

  opencv.absDiff();                           //  Crear una diferencia de imagen

  opencv.convert(OpenCV.GRAY);                //  Convertir a una escala de grises

  opencv.blur(OpenCV.BLUR, 3);                //  Remover- ruido

   opencv.threshold(20); // Thresholds to convert to black and white; se puede //seleccionar en función de la luz del ambiente.

  1. Poder pintar sobre el lienzo (pantalla), para ello en primer lugar se trató de detectar bloques de objetos con la función blobs()  de OpenCV pero no fue muy efectivo ya que se detectaban mucho bloques (regiones agrupadas) y el pincel corría de un lugar a otro imposibilitando dibujos uniformes; por lo se vio por conveniente cambiar a un reconocimiento de color, aprovechando lo aprendido en el subsistema de reconocimiento de color. La idea guía fue presentar una imagen de un solo color, sacar el promedio de color dentro de la imagen capturada por el video y en base a este promedio guiar al pincel; en inglés a esta técnica se le denomina “color Tracking”. El inconveniente de este método es la cantidad de otras imágenes que puedan tener un color similar al que estamos siguiendo; esto hace que el pincel salte de un lugar a otro en algunas ocasiones. O en algunos casos la pérdida del color de seguimiento debido a la variación de luz que hace que un objeto se vea de un color distinto al del seguimiento. Una solución al caso planteado es combinar el reconocimiento de bloques y el reconocimiento de color; para ellos se tendría que implementar una red neuronal o algún tipo de filtro como el de Kalman;  pero cuya programación es más costosa.

Fig. Pincel activo – seguimiento de color (color traking)

A continuación se presenta el código que permite implementar el color tracking en el subsistema:

////sacar el promedio de los puntos de un color

Point avg( ArrayList l ) {

int  posicionY = 0;

if (l.size() == 0) {

return new Point( 0, 0 );

}

int x = 0;

int y = 0;

boolean cont = true;

for( Iterator i = l.iterator(); i.hasNext(); ) {

Point p = (Point)i.next();

x += p.x;

y += p.y;

if (cont)

{

posicionY = p.y;

cont = false;

}

}

if (( posicionY – y / l.size())< 20)

{

return new Point( x  / l.size(), y / l.size() + 50);

} else

{

return new Point( x  / l.size(), y / l.size());

}

}

Video 1. Institución Educativa “Jesús Nazareno”

Para poder dibujar es necesario seleccionar un color haciendo click sobre él; los niños del cuarto grado se concentraron mucho en esta actividad para apoyar a los niños pequeños.

Juan Cadillo

Subsistema de reconocimiento de color del proyecto PVRA

Para el subsistema de reconocimiento de color, se tomó  como base  el libro “Learning Processing A Beginner’s Guide to Programming Images, Animation, and Interaction” de Daniel Shiffman quién propone un algoritmo de selección de color y su seguimiento del mismo en el video; el algoritmo fue adaptado para usarse con openCV. Si bien podemos seguir el color mediante la comparación de pixeles nos quedó el problema de poder identificar el color exacto; esto debido a las diferentes tonalidades que distingue el ojo humano; el modelo RGB (rojo, verde y azul) usado por los programas de diseño no  fue  eficiente para poder reconocer adecuadamente los colores debido a las variaciones de luz e intensidad a la hora de reconocer  los colores básicos, por lo que se tuvo que recurrir a una transformación del RGB al modelo CIElab, en el que se mejoró los resultados; pero sigue existiendo problemas con la cantidad de luz a la que es expone el objeto (ambiente oscuro o ambiente con demasiada luz).

Para reforzar el reconocimiento de colores, el niño o niña que selecciona un color en el espacio (aula) podrá distinguir un elipse que se desplaza a través de la pantalla ubicándose en objetos cuyo color es similar al seleccionado con el mouse. En caso de ser un color básico: ROJO, AMARILLO O AZUL (Concepto tradicional sobre los colores básicos), o VERDE, NEGRO O BLANCO se le mostrará un video que muestre objetos y su respectivo nombre del mismo color seleccionado.

Los resultados se muestra a continuación:

Video 1. “Institución Educativa Jesús Nazareno”

Video 2. “Institución Educativa Jesús Nazareno”

Juan Cadillo

Herramientas Utilizadas

I. HERRAMIENTAS DE MODELAMIENTO, DISEÑO E IMPLEMENTACIÓN

ARGOUML.

ArgoUML es una aplicación de diagramado de UML escrita en Java y publicada bajo la Licencia BSD. Dado que es una aplicación Java, está disponible en cualquier plataforma soportada para Java.

SIMPLE DIAGRAMS

SimpleDiagrams es una herramienta creada por McQuillen Interactive, LLC y permite crear diagramas simples de manera rápida y fácil.

II. HERRAMIENTAS DE PROGRAMACION

PROCESSING

Processing es un lenguaje de programación y entorno de desarrollo integrado de código abierto basado en Java, de fácil utilización, y que sirve como medio para la enseñanza y producción de proyectos multimedia e interactivos de diseño digital. Fue iniciado por Ben Fry y Casey Reas a partir de reflexiones en el Aesthetics and Computation Group del MIT Media Lab.

Processing es desarrollado por artistas y diseñadores como una herramienta alternativa al software propietario. Puede ser utilizado tanto para aplicaciones locales así como aplicaciones para la web (Applets). Se distribuye bajo la licencia GNU GPL.

OPENCV

OpenCV es una biblioteca libre de visión artificial originalmente desarrollada por Intel. Desde que apareció su primera versión alfa en el mes de enero de 1999, se ha utilizado en infinidad de aplicaciones. Desde sistemas de seguridad con detección de movimiento, hasta aplicativos de control de procesos donde se requiere reconocimiento de objetos. Esto se debe a que su publicación se da bajo licencia BSD, que permite que sea usada libremente para propósitos comerciales y de investigación con las condiciones en ella expresadas.

III. HERRAMIENTAS DE HARDWARE

–          Equipo de Cómputo: Laptop ADVANCE, Intel Pentium P6100 – 2.0Ghz

–          Cámara Web Genius Eye 110 Instan Video (No recomendado)

La cámara web Genius Eye 110 es una de las cámaras que se utilizó en el proyecto, más no  brindo una buena performance  a la hora de detectar colores, los que eran mostrados en tonos diferentes.

Características:

  • conectividad USB 2.0
  • resolución máxima 640×480 pixeles,
  • compatibilidad con Win Vista y Win 7,
  • girable 360 grados,
  • aplicación directa para messenger,
  • gran flexibilidad de su material y su soporte
  • posibilidad de grabar en WMV y sacar fotos en JPEG con el soft incluido

–          Cámara Web Longitech WebCam Pro 9000

Cámara Web Recomendada

El éxito o no de un algoritmo de visión por ordenador depende en gran medida de la calidad de la imagen sobre la que se trabaja. Es por ello que en este proyecto se cambió de la cámara Genius Eye 110 Instan Video (que ofrecía una baja calidad en la representación del color real en la pantalla) a una cámara de video de contrastada validez como la Logitech QuickCam Pro 9000. Esta cámara es capaz de producir un video fluido y natural e instantáneas de hasta 8 megapíxeles. Y gracias a su enfoque automático de gama alta las imágenes son siempre nítidas.

Especificaciones:

  • Optica Zeiss con enfoque automático.
  • Sensor nativo de alta resolución de 2 megapíxeles.
  • Video en alta definición (hasta 1600 x 1200*).
  • Modo de pantalla panorámica de 720p (con sistema recomendado).
  • Fotos de hasta 8 megapíxeles (mejoradas desde el sensor de 2 megapíxeles).
  • Microphone con tecnología Logitech RightSound.
  • Video de hasta 30 cuadros por segundo.
  • Certificación USB 2.0 de alta velocidad.

Otra cámara utilizada es la Microsoft LifeCam VX-5500, con un desempeño similar a la Cámara Web Genius Eye 110, con la dificultad que no funcionó con las librerías de OpenCV en Window 7.

Nuestros Objetivos para el Desarrollo del Proyecto Pintura Virtual para la Realidad Aumentada

Para el desarrollo de nuestro proyecto definimos nuestros objetivos y nos planteamos un conjunto de conceptos, los que nos guiaron a lo largo del proyecto:

Objetivo General:

Desarrollar y validar una aplicación de realidad aumentada que permita la mejorar de las habilidades kinestésicas y expresión artística en niños de la Educación Primaria.

Mejorar  el autoestima e identidad  de los niños del 4º a través del  apoyo a sus compañeros  menores y la publicación de  su  aporte en el Internet.

Objetivo Específico:

  • Desarrollar una aplicación de realidad aumentada que permita mejorar las habilidades kinestésicas.
  •  Desarrollar una aplicación que apoye el reconocimiento y trabajo con colores.
  •  Describir el proceso metodológico para usar la aplicación en el desarrollo de las capacidades y habilidades consideradas en el Diseño Curricular Básico Regular.
  • Documentar el uso de la aplicación.

Con los niños más grandes:

  • Mejorar las competencias comunicativas  de los niños al  dirigir , coordinar,  interactuar y comunicar al  grupo sus ideas o conceptos, usando creativamente diferentes canales o medios  que se apoyan en las TIC.
  • Incorporar y usar efectivamente las TIC como herramienta para exponer un tema, recoger ideas o enseñar lo aprendido.

Justificación:

Muchos de nuestros niños por sus condiciones  socioeconómicas carecen de una estimulación kinestésica adecuada dentro de sus hogares, la escuela tiene el reto de poder subsanar estas debilidades presentes en los hogares. La inteligencia Kinestésica está vinculada con la capacidad para controlar nuestro cuerpo en actividades físicas coordinadas como la deportiva, la danza, las habilidades manuales, entre otras. A través de la inteligencia Kinestésica corporal adquirimos información que, por efecto del movimiento y la vivencia, se convierte en aprendizaje significativo. Esta es una de las principales inteligencias a desarrollar en la etapa de la niñez.

La expresión es una necesidad vital en el niño que le hace posible, en primer lugar, adaptarse al mundo y posteriormente, llegar a ser creativo, imaginativo y autónomo. La expresión es un instrumento de desarrollo y comunicación del ser humano que se manifiesta por medio de diferentes lenguajes. La expresión plástica, como forma de representación y comunicación, emplea un lenguaje que permite expresarse a través del dominio de materiales plásticos y de distintas técnicas que favorecen el proceso creador. Lo fundamental en este proceso es la libre expresión, no la creación de obras maestras. El color, la línea, el volumen y la forma constituyen elementos básicos del lenguaje plástico que debemos formar.

El desarrollo de la experiencia parte de  dos aspectos fundamentales el primero la identificación de un conjunto de capacidades que se desean desarrollar en los niños  y en segundo lugar la identificación de los mejores procedimientos para lograr las capacidades desde la Realidad Aumentada usando la tecnología presente en nuestra Institución Educativa, la capacidad creativa y la investigación.

Además de  permitir un trabajo solidario entre compañeros más grandes con los pequeños.

REQUERIMIENTOS FUNCIONALES DE LA SOLUCION

  • El usuario deberá tener la posibilidad de dibujar usando su dedo o algún dispositivo que permita realizar trazos en el aire y estos deben ser representados en la pantalla.
  • El sistema deberá proveer el espacio dentro de la pantalla que permita un trabajo adecuado  para realizar los trazos pertenecientes al dibujo.
  • El sistema debe proveer pinceles que permitan realizar el pintado sobre el trazo.
  • Es deseable que la selección de cualquier elemento de dibujo o pintura sea también implementado mediante reconocimiento visual o detección de movimiento.
  • El sistema debe posibilitar el reconocimiento de los conceptos de lateralidad.
  • El sistema debe permitir trabajar  reflejos y movimiento kinestésico.
  • El sistema debe permitir el reconocimiento de los colores básicos.
  • El sistema debe de retroalimentar la selección de un color con imágenes de dicho color.

REQUERIMIENTOS NO FUNCIONALES DE LA SOLUCION

  • El sistema debe poder ser usado por niños desde el primer grado.
  • El sistema debe proveer un bajo número de fallas en el reconocimiento de los trazos.
  • El sistema debe estar en capacidad de permitir en el futuro el desarrollo de nuevas funcionalidades, modificar o eliminar sus funcionalidades después de su construcción y puesta en marcha inicial.

REQUERIMIENTOS DE DOMINIO DE LA SOLUCION

  • Se debe procurar que la solución a desarrollar esté basada en Software Libre para evitar gastos por licencias.

LIMITACIONES DEL PROYECTO

Las limitaciones a las que está sujeta la aplicación son:

  • El tiempo desarrollo de la solución se esta desarrolla en los tiempos libres.
  • El desarrollo  de los algoritmos de visión artificial: la detección y seguimiento del movimiento es un área  investigación reciente por lo que  la información es limita.
  • Necesidad de una buena Cámara: una limitación muy importante  es la calidad de la cámara que realiza la captura; el éxito de la aplicación depende de este factor.