Elección de los sensores adecuados según su uso (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Los sensores permiten que las aplicaciones conozcan cuál es la relación entre un dispositivo y el entorno físico. Pueden indicar a la aplicación la dirección, la orientación y el movimiento del dispositivo. Pueden ayudarte a crear un juego, una aplicación de realidad aumentada o aplicación de utilidad de forma más útil e interactiva proporcionando una forma exclusiva de entrada, como el uso del movimiento del dispositivo para ordenar los caracteres en la pantalla o para simular que te encuentras en una cabina y el dispositivo es el volante.

Como regla general, decide desde el comienzo si la aplicación dependerá exclusivamente de sensores o si estos solamente ofrecerán un mecanismo de control adicional. Por ejemplo, un juego de conducción que usa un dispositivo como volante virtual puede controlarse también a través de una GUI en pantalla. De este modo, la aplicación funciona sin importar cuáles son los sensores disponibles en el sistema. Por otro lado, un laberinto de canicas puede codificarse para que funcione solamente en los sistemas que tienen los sensores apropiados. Debes tomar la decisión estratégica de si confías por completo en los sensores. Ten en cuenta que el esquema de control táctil o por mouse resigna la inmersión en pos de un mayor control.

Procesamiento por lotes de sensores

Algunos sensores admiten el concepto de procesamiento por lotes. Esto varía según el sensor individual disponible. Cuando un sensor implementa procesamiento por lotes, recopila varios puntos de datos en un intervalo de tiempo especificado y, después, transfiere todos esos datos a la vez. Esto es distinto del comportamiento normal, por el que un sensor informa de sus hallazgos en cuanto se realiza una lectura. Considera el siguiente diagrama en el que se muestra cómo se recopilan los datos y, después, se entregan, primero con entrega normal y a continuación, con la entrega por lotes.

Colección de procesamiento por lotes de sensores

La principal ventaja del procesamiento por lotes de los sensores es una mayor duración de la batería. Cuando los datos no se envían de inmediato, se ahorra en consumo del procesador y se evita que los datos se deban procesar de inmediato. Las partes del sistema se pueden suspender hasta que se necesitan, lo que genera un importante ahorro energético.

Puedes influir en la frecuencia con que el sensor envía lotes, ajustando la latencia. Por ejemplo, el sensor del Accelerometer tiene la propiedad ReportLatency. Cuando se establece esta propiedad para una aplicación, el sensor enviará datos después del período de tiempo especificado. Puedes controlar la cantidad de datos que se acumulen para una latencia determinada, estableciendo la propiedad ReportInterval.

Hay un par de advertencias que se deben tener en cuenta con respecto a la configuración de la latencia. La primera advertencia es que cada sensor tiene un valor MaxBatchSize que puede admitir basado en el propio sensor. Este es el número de eventos que el sensor puede almacenar en memoria caché antes de que se obligue a enviarlos. Si se multiplica MaxBatchSize por ReportInterval, se determina el valor de ReportLatency máximo. Si especificas un valor mayor que este, se usará la latencia máxima para que no se pierdan datos. Además, varias aplicaciones pueden establecer la latencia que cada una desea. Para satisfacer las necesidades de todas las aplicaciones, se usará el período de latencia más corto. Por estos motivos, la latencia que se establezca en la aplicación puede no coincidir con la latencia observada.

Si un sensor usa informe por lotes, una llamada a GetCurrentReading borrará el lote de datos actual y se iniciará un nuevo período de latencia.

Acelerómetro

El sensor de Accelerometer mide los valores de la fuerza G en los ejes X, Y y Z del dispositivo y es excelente para sencillas aplicaciones basadas en movimiento. Ten en cuenta que los valores de fuerza G incluyen aceleración por gravedad. Si el dispositivo tiene la SimpleOrientation de FaceUp sobre una mesa, el acelerómetro leerá -1 G en el eje Z. Es por ello que los acelerómetros no necesariamente miden solo la aceleración de coordenadas, la tasa de cambio de la velocidad. Cuando uses un acelerómetro, asegúrate de diferenciar el vector gravitacional de la gravedad y el vector de aceleración lineal del movimiento. Ten en cuenta que el vector gravitacional debe normalizarse en 1 para un dispositivo estático.

En los siguientes diagramas se ilustra lo siguiente:

  • V1 = Vector 1 = Fuerza por gravedad
  • V2 = Vector 2 = Eje -Z del chasis del dispositivo (puntos fuera de la parte posterior de la pantalla)
  • Θi = ángulo de inclinación = ángulo entre el eje –Z del chasis del dispositivo y el vector de gravedad

AcelerómetroMedida del acelerómetro

Las aplicaciones que pueden usar un sensor de acelerómetro son, entre otras, los juegos en los que una canica debe girar hacia la dirección a la que se inclina el dispositivo (vector de gravedad). Este tipo de funcionalidad se asemeja mucho al del Inclinometer y podría hacerse también con ese sensor mediante una combinación de rotación alrededor del eje x y rotación alrededor del eje y. El uso del vector de gravedad del acelerómetro simplifica esto en cierta medida proporcionando un vector que se manipula fácilmente de forma matemática para la inclinación del dispositivo. Otro ejemplo sería una aplicación que hace el sonido de chasquido de un látigo cuando el usuario realiza un movimiento rápido por el aire con el dispositivo (vector de aceleración lineal).

Girómetro

El sensor de Gyrometer mide las velocidades angulares en los ejes X, Y y Z. Estas son muy útiles en sencillas aplicaciones basadas en movimiento que no prestan atención a la orientación del dispositivo sino que se preocupan por que el dispositivo gire a distintas velocidades. Los girómetros pueden sufrir de ruido en los datos o una desviación de constantes a lo largo de uno o más ejes. Debes consultar el acelerómetro para comprobar si el dispositivo se está movimiento con el fin de determinar si el girómetro presenta alguna desviación y, después, compensarla en tu aplicación.

Girómetro con rotación alrededor del eje x, rotación alrededor del eje y rotación alrededor del eje z

Un ejemplo de una aplicación que puede usar el sensor de girómetro es un juego que hace girar la rueda de una ruleta mediante la realización de un movimiento rotativo rápido del dispositivo.

Brújula

El sensor de Compass devuelve una dirección 2D con respecto al norte magnético sobre la base del plano horizontal de la tierra. Este sensor no debe usarse al determinar la orientación específica del dispositivo ni para representar nada en un espacio 3D. Las características gráficas pueden causar una declinación natural en la dirección. Por ello algunos sistemas admiten tanto HeadingMagneticNorth como HeadingTrueNorth. Piensa en cuál es mejor para tu aplicación, pero recuerda que no todos los sistemas informarán un valor de norte verdadero. Los sensores de girómetro y magnetómetro (un dispositivo que mide la magnitud de fuerza magnética) combinan sus datos para dar origen a la orientación de la brújula, lo que tiene el efecto neto de estabilizar los datos (la fuerza de campo magnético es muy inestable debido a los componentes del sistema eléctrico).

Lecturas de brújula en relación con el polo norte magnético

Las aplicaciones que quieren mostrar una rosa de los vientos o navegar por un mapa generalmente usan el sensor de brújula.

Inclinómetro

El sensor de Inclinometer especifica los valores de rotación alrededor del eje x, rotación alrededor del eje y rotación alrededor del eje z de un dispositivo y funciona mejor con aplicaciones que deben saber cómo el dispositivo está situado en el espacio. La rotación alrededor del eje x y la rotación alrededor del eje se obtienen tomando el vector de gravedad del acelerómetro e integrando los datos del girómetro. El cabeceo se establece con datos del magnetómetro y del girómetro (de forma similar que la dirección de la brújula). Los inclinómetros ofrecen datos de orientación avanzados de una forma fácil de comprender. Úsalos cuando necesites la orientación del dispositivo pero no tengas que manipular los datos del sensor.

Inclinómetro con rotación alrededor del eje x, rotación alrededor del eje y rotación alrededor del eje z

Las aplicaciones que cambian la vista para coincidir con la orientación del dispositivo pueden usar el sensor de inclinómetro. También, las aplicaciones que muestran un avión que coincide con la rotación alrededor del eje x, la rotación alrededor del eje y la rotación alrededor del eje z del dispositivo podrían usar las lecturas del inclinómetro.

Sensor de orientación

La orientación del dispositivo se expresa mediante una matriz de rotación y cuaternión. El OrientationSensor ofrece un alto grado de precisión al determinar cómo se sitúa el dispositivo en el espacio con respecto a la dirección absoluta. Los datos del OrientationSensor se derivan del acelerómetro, el girómetro y el magnetómetro. Como tales, tanto el sensor de brújula como de inclinómetro pueden derivarse de los valores de cuaternión. Las matrices de rotación y los cuaterniones pueden usarse en manipulación matemática avanzada y, a menudo, se usan en programación gráfica. Las aplicaciones que usan manipulación compleja deben privilegiar el sensor de orientación dado que muchas transformaciones se basan en las matrices de rotación y los cuaterniones.

Datos del sensor de orientación

El sensor de orientación a menudo se usa en aplicaciones de realidad aumentada avanzadas que pintan una cubierta sobre el entorno en función de la dirección a la que apunta la parte posterior del dispositivo.

Orientación sencilla

El SimpleOrientationSensor detecta la orientación de cuadrante actual del dispositivo especificado o si se encuentra cara arriba o abajo. Tiene seis posibles SimpleOrientation estados (NotRotated, Rotated90, Rotated180, Rotated270, FaceUp, FaceDown).

Una aplicación de lector que cambia su pantalla sobre la base de si el dispositivo se encuentra paralelo o perpendicular al suelo puede usar estos valores del SimpleOrientationSensor para determinar cómo se está sosteniendo el dispositivo.

Temas relacionados

Datos de sensor y orientación de la pantalla