Archivado - Cómo trabajar con manos y gestos

Intel® RealSense™ SDK ha sido discontinuado. No habrá más actualizaciones ni continuará la asistencia.

Hay muchas modalidades para mano en la versión Gold R1 2014 del SDK para Intel RealSense. Ellas son:

hand skeleton

Seguimiento de esqueleto (seguimiento de manos articuladas y de articulaciones de dedos) 

  • 22 articulaciones por mano
  • Incluye diferenciación entre mano izquierda y derecha.
  • El SDK R1 puede seguir dos manos (pueden ser dos manos derechas de dos usuarios).
  • El seguimiento de articulaciones no requiere calibración; usa proporciones genéricas de manos.
  • Ofrece un esqueleto normalizado aunque parte de la mano pase por
    fuera del campo de visión o esté oculta (o si el ruido es excesivo).
  • Permite que el fondo esté segmentado de la mano (cambio de fondo).
  • También puede usar valores (de 0 a 100) de apertura de mano y
    extensión de dedos (solo disponible en el modo de seguimiento de esqueleto).
Modo de contorno -  (blob tracking) 
  • Una burbuja, o blob, es cualquier componente conexo (un puño, una mano abierta, una mano que sostiene un objeto, dos manos conectadas).
  • Este modo ofrece segmentación, que ayuda a seguir la mano sin incluir el antebrazo.
  • El modo de contorno tiene su propio suavizado.
  • Cada burbuja tiene una máscara, una línea de contorno, una cantidad de pixeles y puntos de extremidad.
  • El SDK R1 puede seguir hasta dos burbujas.
  • Se puede establecer el tamaño mínimo de la burbuja, la profundidad máxima del objeto y la distancia de la "pared virtual".
 

Reconocimiento de gestos: el R1 incluye 10 gestos preestablecidos (ver a continuación)

  • Estáticos ("posturas" sin movimiento), y activos (postura en movimiento)
    Ejemplo: una mano abierta estática se puede convertir en activa, como en
    un saludo.
  •            Atención: los gestos preestablecidos activos requieren de movimientos
               muy específicos (ver especialmente tocar y deslizar horizontalmente).
  • Todos los gestos dinámicos requieren reconocimiento o registro, y 
    una postura de terminación. El movimiento dinámico se puede establecer por movimiento o tiempo.
  • Por lo general, el valor máximo de fotogramas para gestos es de 30 fps.
  • Gestos múltiples: no use gestos similares en simultáneo
    (por ejemplo: pulgares arriba/abajo y puño).
  • Si se usan tanto gestos estáticos como activos a partir de la misma "postura",
    se reconocerán ambos y eso confundirá las interacciones.
  • Consulte también gestos de controlador no táctil.

Controlador no táctil

  • Útil para navegación y reemplazo de cursor. Los deslizamientos horizontales están en este módulo.
  • tc->AddGestureActionMapping(L“swipeLeft”, PXCTouchlessController:
    :Action_NextTrack);
    tc->AddGestureActionMapping(L“swipeRight”, PXCTouchlessController:
    :Action_PrevTrack);

Procedimientos recomendados:

  • Las interacciones de los usuarios deben comenzar con el gesto de la mano extendida de frente, brevemente, para dar tiempo a la cámara de reconocer y calibrar la mano (esto es válido para todas las modalidades). Identificar la mano es un procedimiento lento y consume muchos recursos; hay que esforzarse por evitarlo. Se debe advertir a los usuarios cuando estén por salir del campo de visión, para que hagan más lentos los movimientos, etc.
  • SOLO habilite los gestos que se usen por sección (no habilite todos porque sí).
  • LIMITE la cantidad de articulaciones seguidas a aquellas necesarias para el movimiento.
  • Los dedos que se cierran son dependientes entre sí: con solo seguir dos articulaciones, se pueden doblar los cuatro dedos de manera realista. Solo el índice se puede cerrar individualmente o permanecer levantado mientras los demás están cerrados, por eso necesita su propio seguimiento de articulaciones. Pero para los demás dedos: cuando se dobla el dedo mayor, arrastra con él al anular y el meñique; cuando se dobla el anular, también lo hacen el mayor y el meñique; cuando se dobla el meñique, bajan el mayor y el anular.
  • Rotación: la cantidad de grados que puede girar una falange específica de un dedo humano está determinada por la longitud de la falange (no por la articulación). La falange distal (la punta) del dedo mayor se puede doblar menos que la falange media, y la falange media menos que la proximal (la inferior). Solo se necesita un cover index del script de seguimiento: Joint_Index_IT1 en todas las articulaciones; dedos mayor, anular y meñique: Joint_Middle_ITI en todas las articulaciones.
  • Manos de niños: las manos pequeñas son difíciles de captar. En Gold R1, deje transcurrir cinco segundos para incorporar la información.
  • Deshabilite las modalidades que no utilice; solo llame a las funciones específicas necesarias. Por lo general, no es necesario el seguimiento de esqueleto cuando se usan gestos (y viceversa). No use contorno cuando use seguimiento de esqueleto o gestos. Observe en especial hand_facade.
  • Use distintos subprocesos para modalidades diferentes (excepto gestos de dos manos). Esto será útil para ejecutar solamente la modalidad requerida para cada sección. Pero recuerde que los cambios a subprocesos pueden usar mucha CPU.
  • No espere fotogramas de las modalidades de manos.
  • Brinde información visual al usuario: mano no detectada, mano no calibrada, mano fuera de límites, la mano se mueve demasiado rápido; para esto se puede usar una ventana de visualización. También proporcione al usuario una guía para ayudarlo a calibrar los límites y conocer los gestos.
  • Consejos para Unity: use la regla hand_lost. Para reducir los entrecortamientos y las separaciones, establezca en cero los valores de Virtual y Real World Box. 

Contenido relacionado:

For more complete information about compiler optimizations, see our Optimization Notice.