Auswählen des richtigen Sensors (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Mithilfe von Sensoren können Apps die Beziehung zwischen einem Gerät und der physischen Umgebung ermitteln. Sensoren können für die App die Richtung, Ausrichtung und Bewegung des Geräts erfassen. Diese Sensoren können Ihre Spiel-, Augmented Reality- oder Dienstprogramm-App hilfreicher und interaktiver machen, indem sie eine spezielle Eingabeform bereitstellen. So können z. B. durch Bewegen des Geräts die Zeichen auf dem Bildschirm angepasst werden, oder das Gerät kann als virtuelles Lenkrad verwendet werden.

Im Allgemeinen sollten Sie im Vorfeld entscheiden, ob die App ausschließlich auf Sensorsteuerung beruhen soll oder ob mit den Sensoren lediglich ein zusätzlicher Steuermechanismus bereitgestellt wird. Ein Rennspiel, bei dem ein Gerät als virtuelles Lenkrad genutzt wird, kann beispielsweise auch über eine GUI auf dem Bildschirm gesteuert werden. Die App funktioniert dann unabhängig von den Sensoren, die für das System zur Verfügung stehen. Andererseits könnte ein Murmel-Kipplabyrinth ausschließlich für die Funktion mit Systemen mit entsprechenden Sensoren geschrieben werden. Sie müssen die strategische Entscheidung treffen, ob ausschließlich Sensoren verwendet werden sollen. Dabei ist zu beachten, dass ein Ansatz mit Steuerung per Maus oder Touchfunktion eine bessere Kontrolle ermöglicht, was jedoch zu Lasten des Immersionseffekts geht.

Sensorbatchverarbeitung

Einige Sensoren unterstützen das Konzept der Batchverarbeitung. Dies variiert je nach verfügbaren Sensoren. Wenn ein Sensor die Batchverarbeitung implementiert, sammelt er mehrere Datenpunkte in einem bestimmten Zeitintervall und überträgt dann alle Daten auf einmal. Dies unterscheidet sich vom normalen Verhalten, bei dem ein Sensor die Ergebnisse sofort beim Erfassen meldet. Im folgenden Diagramm sehen Sie, wie Daten erfasst und anschließend übermittelt werden. Zuerst ist die normale Übermittlung und anschließend die Batchübermittlung dargestellt.

Sensorbatchsammlung

Der wichtigste Vorteil der Sensorbatchverarbeitung besteht in der längeren Akkulaufzeit. Wenn die Daten nicht sofort gesendet werden, wird dadurch Prozessorleistung gespart und die umgehende Verarbeitung der Daten verhindert. Teile des Systems können deaktiviert werden, bis sie benötigt werden. Dadurch wird Energie gespart.

Sie können durch Anpassen der Wartezeit beeinflussen, wie oft der Sensor Batches sendet. Beispiel: Der Accelerometer-Sensor verfügt über die ReportLatency-Eigenschaft. Wenn diese Eigenschaft für eine Anwendung festgelegt ist, sendet der Sensor Daten nach Ablauf der angegebenen Zeit. Sie können mithilfe der ReportInterval-Eigenschaft steuern, wie viele Daten über einen bestimmten Zeitraum gesammelt werden.

Beim Festlegen der Wartezeit müssen mehrere Punkte berücksichtigt werden. Beispielsweise gilt für jeden Sensor eine MaxBatchSize, die basierend auf dem Sensor unterstützt wird. Dabei handelt es sich um die Anzahl der Ereignisse, die der Sensor zwischenspeichern kann, bevor er gezwungen ist, sie zu senden. Wenn Sie MaxBatchSize mit ReportInterval multiplizieren, ergibt das den Höchstwert für ReportLatency. Wenn Sie einen höheren Wert als diesen angeben, wird die maximale Wartezeit verwendet, damit keine Daten verlorengehen. Darüber hinaus können mehrere Anwendungen eine gewünschte Wartezeit festlegen. Um die Anforderungen aller Anwendungen zu erfüllen, wird die kürzeste Wartezeit verwendet. Aufgrund dieser Tatsachen kann die in Ihrer Anwendung festgelegte Wartezeit von der beobachteten Wartezeit abweichen.

Falls ein Sensor die Batchberichterstellung verwendet, wird durch Aufruf von GetCurrentReading der aktuelle Datenbatch gelöscht und eine neue Wartezeit gestartet.

Beschleunigungsmesser

Mit dem Accelerometer-Sensor werden Schwerkraftwerte entlang der X-, Y- und Z-Achse des Geräts gemessen. Er eignet sich gut für einfache Anwendungen, die auf Bewegung basieren. Beachten Sie, dass für die Beschleunigungskraftwerte die Schwerkraft berücksichtigt wird. Wenn das Gerät für das SimpleOrientation-Element den Wert FaceUp auf einem Tisch aufweist, ermittelt der Beschleunigungsmesser für die Z-Achse den Wert -1 G. Mit Beschleunigungsmessern wird also nicht unbedingt nur die Koordinatenbeschleunigung (Veränderung der Geschwindigkeit) gemessen. Bei Verwendung eines Beschleunigungsmessers sollten Sie zwischen dem schwerkraftbezogenen Vektor der Schwerkraft und dem linearen Beschleunigungsvektor für die Bewegung unterscheiden. Beachten Sie, dass der Gravitationsvektor für ein stationäres Gerät auf den Wert 1 normalisiert werden sollte.

Die folgenden Diagramme veranschaulichen Folgendes:

  • V1 = Vektor 1 = Anziehungskraft aufgrund der Gravitation
  • V2 = Vektor 2 = -Z-Achse der Geräte-Chassis (zeigt aus der Bildschirmrückseite)
  • Θi = Neigungswinkel (Neigung) = Winkel zwischen –Z-Achse des Geräte-Chassis und Schwerkraftvektor

BeschleunigungsmesserBeschleunigungsmessung

Zu den Apps, für die der Beschleunigungsmessersensor verwendet werden kann, zählt beispielsweise ein Spiel, bei dem Sie durch Kippen des Geräts eine Murmel bewegen (Schwerkraftvektor). Die Funktionalität entspricht in etwa der Inclinometer-Funktionalität und kann auch mit dem Sensor mithilfe einer Kombination aus Neige- und Rollwinkel erzielt werden. Die Nutzung des Schwerkraftvektors eines Beschleunigungsmessers vereinfacht dies, da ein Vektor für das Kippen des Geräts vorhanden ist, der auf einfache Weise mathematisch manipuliert werden kann. Ein anderes Beispiel ist eine App, die das Geräusch eines Peitschenschlags generiert, wenn Benutzer das Gerät schnell durch die Luft bewegen (Vektor für lineare Beschleunigung).

Gyrometer

Der Gyrometer-Sensor misst Winkelgeschwindigkeiten entlang der X-, Y- und Z-Achse. Dies ist sehr nützlich bei einfachen bewegungsabhängigen Apps, bei denen es nicht um die Ausrichtung des Geräts geht, sondern darum, mit welchen unterschiedlichen Geschwindigkeiten sich das Gerät dreht. Die Leistung von Gyrometern kann durch ein Rauschen in den Daten oder einen systematischen Fehler entlang einer oder mehrerer Achsen beeinträchtigt werden. Sie sollten den Beschleunigungsmesser abfragen, um zu überprüfen, ob sich das Gerät bewegt. So können Sie ermitteln, ob für das Gyrometer ein Fehler vorliegt, und dies in der App dann entsprechend berücksichtigen.

Gyrometer mit Neigen, Rollen und Schwenken

Ein Beispiel für eine App, in der der Gyrometersensor verwendet werden kann, ist ein Spiel, bei dem ein Rouletterad der Drehbewegung des Geräts entsprechend schnell gedreht wird.

Kompass

Der Compass-Sensor gibt eine 2D-Richtung unter Berücksichtigung des magnetischen Nordpols auf Grundlage der horizontalen Ebene der Erde zurück. Der Kompasssensor sollte nicht für die Bestimmung spezifischer Geräteausrichtung oder die Darstellung von Objekten im 3D-Raum verwendet werden. Geografische Objekte können eine natürliche Abweichung der Richtung verursachen, daher unterstützen einige Systeme sowohl HeadingMagneticNorth als auch HeadingTrueNorth. Entscheiden Sie, welcher Pol von der App verwendet werden soll, aber bedenken Sie, dass nicht alle Systeme den korrekten Nordwert ausgeben. Gyrometer- und Magnetometer (ein Gerät zur Messung der magnetischen Stärke)-Sensoren vereinen ihre Daten, um die Kompassrichtung zu bestimmen, wodurch die Daten stabilisiert werden (Die magnetische Feldstärke ist aufgrund der Komponenten elektrischer Systeme sehr instabil).

Kompasswerte im Hinblick auf den magnetischen Nordpol

Für Apps, in denen eine Windrose angezeigt oder nach einer Karte navigiert werden soll, wird dafür in der Regel der Kompasssensor eingesetzt.

Neigungssensor

Der Inclinometer-Sensor gibt Schwenk-, Neige- und Rollwinkel des Geräts an und funktioniert optimal mit Apps, die die Stellung des Geräts im dreidimensionalen Raum berücksichtigen. Neige- und Rollwinkel werden anhand der Daten des Schwerkraftvektors des Beschleunigungsmessers und der Daten des Gyrometers berechnet. Der Schwenkwert wird durch die Daten des Magnetometers und des Gyrometers (entsprechend der Kompassrichtung) bestimmt. Neigungssensoren bieten erweiterte Ausrichtungsdaten auf eine leicht verständliche Art und Weise. Verwenden Sie Neigungsmesser, wenn Sie Geräteausrichtungswerte benötigen, aber die Sensordaten nicht verarbeiten möchten.

Neigungsmesser mit Neigungs-, Roll- und Schwenkdaten

Für Apps, bei denen die Ansicht der Ausrichtung des Geräts entsprechend geändert werden soll, kann der Neigungssensor verwendet werden. Eine App, bei der Neigungs-, Roll und Schwenkwinkel eines Flugzeugs angezeigt werden, würde ebenfalls Neigungsmesserdaten verwenden.

Ausrichtungssensor

Die Geräteausrichtung wird durch die Quaternionen- und Drehungsmatrizes ausgedrückt. Der OrientationSensor bietet einen hohen Genauigkeitsgrad bei der Bestimmung der Position des Geräts im dreidimensionalen Raum unter Berücksichtigung der absoluten Richtung. Die OrientationSensor-Daten werden vom Beschleunigungsmesser, Gyrometer und Magnetometer abgeleitet. Auch die Neigungsmesser- und die Kompasssensorendaten können von den Quaternionenwerten abgeleitet werden. Quaternion- und Rotationsmatrizes sind für erweiterte mathematische Manipulationen geeignet und werden oft bei der grafischen Programmierung verwendet. Für Apps, die komplexe Manipulation verwenden, sollten die Ausrichtungssensoren verwendet werden, da viele Transformationen auf Quaternion- und Rotationsmatrizes beruhen.

Ausrichtungssensordaten

Der Ausrichtungssensor wird häufig in Augmented Reality-Apps verwendet, in denen auf Grundlage der Ausrichtung der Geräterückseite das Bild der Umgebung mit einer Grafik überlagert wird.

Einfache Ausrichtung

Der SimpleOrientationSensor erkennt die aktuelle Quadrantenausrichtung des angegebenen Geräts, bzw. ob die Oberseite nach oben oder unten zeigt. Er verfügt über sechs mögliche SimpleOrientation-Zustände (NotRotated, Rotated90, Rotated180, Rotated270, FaceUp, FaceDown).

Eine Leseapp, bei der die Anzeige auf Grundlage der Ausrichtung des Geräts zur Erdoberfläche geändert wird, würde den SimpleOrientationSensor verwenden, um die Ausrichtung des Geräts zu bestimmen.

Verwandte Themen

Sensordaten und Bildschirmausrichtung