Windows Dev Center

Language: HTML | XAML

Auswählen des richtigen Sensors (HTML)

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.

Für die folgenden Diagramme gilt:

  • V1 = Vektor 1 = Kraft aufgrund der Schwerkraft
  • V2 = Vektor 2 = -Z-Achse des Geräte-Chassis (zeigt aus der Rückseite des Bildschirms heraus)
  • Θi = Kippwinkel (Neigung) = Winkel zwischen -Z-Achse des Geräte-Chassis und Gravitationsvektor

BeschleunigungsmesserMessung des Beschleunigungsmessers

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 einen 2D-Kurs (Richtung) basierend auf dem magnetischen Nordpol anhand der horizontalen Erdoberfläche zurück. Sie sollten den Kompasssensor nicht verwenden, um die spezifische Ausrichtung des Geräts zu ermitteln oder Elemente im 3D-Raum darzustellen. Geografische Features können zu einer natürlichen Deklination des Kurses führen. Daher wird von einigen Systemen sowohl HeadingMagneticNorth als auch HeadingTrueNorth unterstützt. Überlegen Sie sich, was für Ihre App besser geeignet ist. Berücksichtigen Sie jedoch, dass nicht von allen Systemen ein Wert für den geografischen Nordpol ausgegeben wird. Die Daten der Gyrometer- und Magnetometersensoren (Gerät zum Messen der Größenordnung der magnetischen Feldstärke) werden kombiniert, um den Kompasskurs zu erzeugen. Dies hat den Nettoeffekt, dass die Daten stabilisiert werden (die magnetische Feldstärke ist aufgrund der elektrischen Komponenten des Systems sehr instabil).

Kompassablesungen in Bezug 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.

Neigungsmesser

Der Inclinometer-Sensor gibt die Werte für das Schwenken, Neigen und Rollen eines Geräts an und funktioniert am besten in Verbindung mit Apps, bei denen berücksichtigt wird, wie das Gerät im Raum angeordnet ist. Die Ableitung des Neigens und Rollens erfolgt, indem der Gravitationsvektor des Beschleunigungsmessers genutzt wird und die Daten des Gyrometers integriert werden. Das Schwenken wird über die Daten des Magnetometers und Gyrometers (ähnelt dem Kompasskurs) ermittelt. Neigungsmesser bieten erweiterte Ausrichtungsdaten in leicht verdaulicher und verständlicher Form. Verwenden Sie Neigungsmesser, wenn Sie Daten zur Geräteausrichtung benötigen, die Sensordaten jedoch nicht ändern müssen.

Neigungsmesser mit Daten für das Neigen, Rollen und Schwenken

Für Apps, die ihre Anzeige in Abhängigkeit der Ausrichtung des Geräts ändern, kann der Neigungsmessersensor genutzt werden. Ebenso können die Werte des Neigungsmessers für eine App verwendet werden, in der ein Flugzeug dargestellt wird, dessen Bewegungen sich nach dem Schwenken, Neigen und Rollen des Geräts richten.

Ausrichtungssensor

Die Ausrichtung des Geräts wird mithilfe eines Quaternions und einer Rotationsmatrix ausgedrückt. Der OrientationSensor ermöglicht einen hohen Grad an Präzision, wenn es um die Ermittlung geht, wie das Gerät in Bezug auf den absoluten Kurs im Raum angeordnet ist. Die OrientationSensor-Daten werden vom Beschleunigungsmesser, Gyrometer und Magnetometer abgeleitet. Daher ist es möglich, sowohl den Neigungsmessersensor als auch den Kompasssensor von den Quaternionwerten abzuleiten. Quaternionen und Rotationsmatrizen eignen sich gut für erweiterte mathematische Manipulationen und werden häufig für die Grafikprogrammierung eingesetzt. Für Apps mit komplexen Manipulationen sollte der Ausrichtungssensor bevorzugt werden, da viele Transformationen auf Quaternionen und Rotationsmatrizen basieren.

Ausrichtungssensordaten

Der Ausrichtungssensor wird häufig in erweiterten Augmented-Reality-Apps verwendet, bei denen basierend auf der Richtung, in die die Rückseite des Geräts zeigt, die Umgebung mit einer Überlagerungszeichnung versehen 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).

Für eine Lese-App, bei der sich die Anzeige in Abhängigkeit davon ändert, ob das Gerät parallel oder senkrecht zum Erdboden gehalten wird, wird mithilfe der SimpleOrientationSensor-Werte ermittelt, wie das Gerät gehalten wird.

Verwandte Themen

Sensordaten und Bildschirmausrichtung

 

 

Anzeigen:
© 2015 Microsoft