Unterstützung von Sensoren unter Windows 8

Die Entwicklung von Windows 8

Einblicke in die Arbeit des Windows-Entwicklerteams

Unterstützung von Sensoren unter Windows 8

Rate This
  • Comments 1

Die aktuellen Fortschritte in der Sensortechnologie tragen zur Weiterentwicklung der Benutzerfreundlichkeit von PCs bei. Die Möglichkeit, auf Veränderungen des Umgebungslichts, Bewegungen, Personen in der Nähe oder den Standort zu reagieren, wird zu einem üblichen und wesentlichen Bestandteil des Umgangs mit dem Computer. Auch einfache Features, wie z. B. ein Umgebungslichtsensor zum Anpassen der Helligkeit des Bildschirms in einem Raum mit sich änderndem Licht, können zu einer Grundfunktion von Desktop-PCs werden. Wir möchten natürlich sicherstellen, dass Sie Peripheriegeräte dieser Art vollständig steuern können, da wir wissen, dass verschiedene Sensoren potenzielle Risiken oder die Gefahr von Missbrauch mit sich bringen, was einige Benutzer möglicherweise beunruhigt. Dieser Beitrag, in dem die Details von unterstützenden Sensoren unter Windows 8 erläutert werden, wurde von Gavin Gear verfasst, einem Programmmanager des Device Connectivity-Teams.
– Steven


Zunächst haben wir uns damit beschäftigt, wie Sensoren unter Windows 8 auf Systemebene verwendet werden sollen, um den PC an die Umgebung anzupassen und gleichzeitig die Akkulaufzeit zu verlängern.

Adaptive Helligkeit

Als erstes Systemfeature haben wir die automatische Steuerung der Bildschirmhelligkeit entwickelt, die wir als "Adaptive Helligkeit" bezeichnen. Hierbei handelt es sich um ein Feature, das in Windows 7 mithilfe von Umgebungslichtsensoren (Ambient Light Sensors, ALS) eingeführt wurde, und das bei mobilen Computern wie Tablets, Kombigeräten und Laptops verwendet wird. Das Helligkeitsniveau der heutigen Bildschirme bietet, verglichen mit dem, was noch vor ein paar Jahren üblich war,fast die doppelte Intensität. Daher ist dieses Feature heute besonders wichtig. Mit der dynamischen Steuerung der Bildschirmhelligkeit auf Grundlage des sich ändernden Umgebungslichts können wir den Lesekomfort optimieren und die Akkulaufzeit verlängern, wenn der Bildschirm in dunkleren Umgebungen abgeblendet wird.

Auf dem Bildschirm sind Reflexionen zu sehen, aber die Anzeige ist noch lesbar. Der Bildschirm ist 

durch Reflexionen auf der Oberfläche nahezu vollständig unlesbar.

Tablet PC bei starkem natürlichen Licht mit (links) und ohne (rechts) adaptive Helligkeit

Sie sehen, dass dank der adaptiven Helligkeit der Bildschirminhalt klarer angezeigt wird, da die Helligkeit automatisch erhöht wird, sobald sich der Tablet PC in einer hellen Umgebung befindet. Auch bei einem Desktop-PC, der in einem sonnigen Raum verwendet wird, kann das gleiche Problem zu verschiedenen Tageszeiten in unterschiedlichen Jahreszeiten auftreten.

Automatische Bildschirmdrehung

Bei vielen Smartphones und anderen mobilen Geräten wird erwartet, dass bei Drehung des Geräts auch die grafische Anzeige gedreht und der neuen Ausrichtung angepasst wird (einschließlich Änderungen des Seitenverhältnisses). Mithilfe der Daten eines Beschleunigungsmessers kann das Gerät die Grundausrichtung bestimmen. Durch automatisches Drehen des Bildschirms können Benutzer ihre Geräte (in der Regel Tablets und Kombigeräte) natürlicher und intuitiver verwenden, ohne dass ein manuelles Drehen des Bildschirms per Software oder Hardwaretasten erforderlich ist.

Windows 8-Startbildschirm auf einem horizontal gehaltenen 

Tablet PC Windows 8-Startbildschirm auf einem vertikal gehaltenen Tablet 

PC

Windows 8-Startbildschirm im Quer- und Hochformat

Entwicklersupport für Sensoren

Neben der grundsätzlichen Verwendung von Sensoren durch ein Windows 8-System mussten wir auch erörtern, wie Sensoren von Apps verwendet werden können. Wir haben uns mit verschiedenen Beispielen von Apps mit Sensoren beschäftigt, darunter Spiele, kommerzielle Anwendungen, Tools und Dienstprogramme, um festzustellen, welche Szenarien unterstützt werden sollen.

Am wichtigsten erschien uns die Möglichkeit für Apps, auf Bewegungen und Bildschirmdrehungen zu reagieren. Hierfür ist ein Beschleunigungsmesser erforderlich, ein Gerät, mit dem sowohl die Schwerkraft als auch die Bewegung des Geräts selbst gemessen werden kann. In den meisten Szenarien sind jedoch neben der Bestimmung von Bewegung und Schwerkraft weitere Aspekte entscheidend. Für viele Apps ist auch die Ausrichtung von großer Bedeutung. Zum Bestimmen der Ausrichtung eines PCs ist eine integrierte Kompassfunktion erforderlich.

Dafür sind mindestens ein 3D-Beschleunigungsmesser (der die Beschleunigung an drei Achsen misst) und ein 3D-Magnetfeldmesser (der die Stärke des Magnetfelds an 3 Achsen misst) erforderlich. Diese Sensorkombination wird als 6-Achsen-Sensorsystem für Bewegung und Ausrichtung bezeichnet und unterstützt einen Kompass mit einfachem Neigungsausgleich, Bildschirmdrehung und bestimmte Spiele-Apps, wie z. B. ein Labyrinthspiel. Beim Testen und Herstellen der Prototypen haben wir jedoch festgestellt, dass das 6-Achsen-Bewegungssensorsystem zwei wesentliche Nachteile aufweist: gelegentliche Kompassungenauigkeit und eine für interaktive 3D-Spiele ungenügende Reaktionsfähigkeit.

Für Handyplattformen wurde kürzlich eine neue Sensorart eingeführt – der Gyrosensor. Mit Gyrosensoren wird die Winkelgeschwindigkeit gemessen, in der Regel entlang dreier Achsen. Mithilfe der Daten von Gyrosensoren lassen sich auch Verbesserungen bei der Reaktionsfähigkeit und der Genauigkeit von 3D-Bewegungssensorsystemen erzielen. Ein Gyrosensor verfügt über eine hohe Empfindlichkeit, weist aber Defizite bei der Ausrichtung auf (z. B. bei der Schwerkraft oder Ausrichtung nach Norden).

Im folgenden Diagramm wird aufgezeigt, wie Gyrodaten als Datensatz von drei Drehungen entlang der drei Hauptachsen des Geräts dargestellt werden:

Gieren: Drehung um die Z-Achse, Neigen: Drehung um die Y-Achse, Rollen: Drehung um die 

X-Achse

Zunächst wurde vielfach angenommen, dass die Nutzung dieser Sensoren auf sehr wenige Apps, z. B. besondere Spiele, beschränkt sein würde. Bei der näheren Beschäftigung mit den Aspekten von 3D-Sensoren für Bewegung und Ausrichtung wurde jedoch zunehmend klarer, dass Apps deutlich intuitiver und ansprechender werden, wenn sie auf menschliche Bewegungen reagieren, wie z. B. Schütteln oder Wendungen und Drehungen in verschiedenen Dimensionen. Mit diesen Sensoren könnten besonders intuitive 3D- Spiele entwickelt werden, für viele andere Apps ließe sich aber auch ein natürlicheres Reaktionsverhalten auf verschiedene Bewegungen realisieren, z. B. für Karten- und Navigationsanwendungen, Messprogramme, computerübergreifende interaktive Apps sowie einfache Apps wie Freizeitspiele.

Herausforderungen bei der Entwicklung

Beim Entwerfen von Bewegungs-Apps begannen wir zunächst mit der Prototyperstellung von 3D-Oberflächen. Die erste Herausforderung bestand darin, die physische Ausrichtung des Geräts direkt einer virtuellen 3D-Umgebung in der App zuzuordnen. Als Modell einer einfachen Augmented Reality-Oberfläche entschieden wir uns für ein Tablet als Fenster in eine virtuelle Welt. Das Konzept war ziemlich einfach: bei einer Bewegung des Geräts, während man den Bildschirm betrachtet, scheint die virtuelle Umgebung (das Innere eines Raums) still zu stehen.

In einem ersten Versuch haben wir mithilfe des Beschleunigungsmessers der Bewegung des Geräts nach unten bzw. oben eine entsprechende Bewegung der 3D-Umgebung zugeordnet. Wenn Sie das Gerät stillhalten, sollte auch die Oberfläche stabil bleiben. Wenn Sie das Gerät neigen, sollte auch die Ansicht nach oben bzw. unten geneigt werden. Hierbei wurde sofort ein Problem deutlich: "Störsignale" in den Daten des Beschleunigungssensors verursachten in der 3D-Umgebung auch dann eine Jitter-Bewegung, wenn das Gerät nicht bewegt wurde. Durch das Erstellen eines Diagramms der aufgezeichneten Daten des Beschleunigungsmessers konnten diese Störsignale klar identifiziert werden.

X-Beschleunigung als gezackte Linie in der Nähe von 0; Y-

Beschleunigung als gezackte Linie in der Nähe von 0; Z-Beschleunigung als gezackte Linie in der Nähe von -1

Ohne Störsignale würden die Linien im Diagramm gerade verlaufen, ohne vertikale Abweichung. Üblicherweise werden solche Störsignale beseitigt, indem ein Tiefpassfilter auf den Rohdatenstrom angewendet wird. Als wir diese Minderungstechnik in unseren Prototypen implementierten, erhielten wir eine flüssige und stabile Bewegung (ohne Jitter). Der Tiefpassfilter verursachte aber ein neues Problem: die Reaktionsfähigkeit der App verringerte sich, und die Reaktion auf Bewegungen wurde träge. Wir mussten eine Möglichkeit finden, diesen Jitter ohne Einbußen bei der Reaktionsfähigkeit auszugleichen.

In einem nächsten Versuch ging es um die Möglichkeit, die Ansicht in der virtuellen 3D-Umgebung der App "nach links“ und "nach rechts" zu verschieben. Wir verwendeten für diese Bewegung eine Kompasslösung mit 6 Achsen (3D-Beschleunigungsmesser + 3D-Magnetfeldmesser). Obwohl dies irgendwie funktioniert hat, war die Bewegung aufgrund der allgemeinen Instabilität des 6-Achsen-Kompasses nicht einheitlich. Auch die Kombination der Auf- und Abwärtsbewegung mit der Bewegung nach links bzw. rechts war eine Herausforderung.

Nach diesen Versuchen war uns klar, dass wir mit dieser Sensorkombination nicht die flüssige und reaktionsfähige Oberfläche realisieren können, die wir anstrebten. Der Beschleunigungsmesser lieferte keine sauberen Daten und konnte daher nicht allein zum Bestimmen der Geräteausrichtung verwendet werden. Die Aktualisierung des Magnetfeldmessers erfolgte langsam, und er war anfällig für elektromagnetische Störungen (denken Sie an eine Kompassnadel, die gelegentlich in einer bestimmten Richtung festhängt). Wir mussten noch die Gyrosensoren testen. Da sich mit Gyrosensoren aber nur die Drehgeschwindigkeit bestimmen lässt, war uns nicht klar, inwiefern sie uns helfen konnten.

Erstellen einer "Sensorfusion“

Weitere Versuche zeigten jedoch, dass mithilfe einer Kombination aus allen drei Sensoren das Problem möglicherweise gelöst werden kann. Ein Beschleunigungsmesser, ein Magnetfeldmesser und ein Gyrometer können wechselseitig die Schwächen der anderen ausgleichen und so Datenlücken und Schwierigkeiten bei der Reaktionsfähigkeit wirksam entgegentreten. Durch die Kombination dieser drei Sensoren ist es möglich, eine bessere, reaktionsfähigere und flüssigere Oberfläche zu erstellen, als es mit Einzelsensoren der Fall wäre. Das Kombinieren mehrerer Sensorwerte zum Erzielen eines besseren Gesamtergebnisses bezeichnen wir als Sensorfusion.

Bei der Sensorfusion handelt es sich im Wesentlichen um einen Vorgang, bei dem das Ganze größer als die Summe der Teile ist. In der Regel wird bei einem Sensorfusionssystem ein 3D-Beschleunigungsmesser, ein 3D-Magnetfeldmesser und ein 3D-Gyrometer zum Erstellen eines kombinierten "9-Achsen-Sensorfusionssystems" verwendet. Die Funktionsweise dieses Systems wird anhand der Eingaben und Ausgaben veranschaulicht.

Hardware (3D-Beschleunigungsmesser, 3D-Gyrometer, 3D-Magnetfeldmesser) mit Pfeilen, 

die auf "Pass-Through" und "Sensorfusion" zeigen; von dort zeigen Pfeile auf die Sensorausgaben (3D-

Beschleunigungsmesser, 3D-Gyrometer, 3D-Kompass, 3D-Neigungsmesser, Geräteausrichtung)
9-Achsen-Sensorfusionssystem

In diesem Diagramm sind zwei Arten von Ausgaben dargestellt: Pass-Through-Ausgaben, in denen Sensordaten direkt an eine App geleitet werden, und Sensorfusions-Ausgaben, in denen Sensordaten zu leistungsfähigeren Datentypen zusammengefasst werden.

Einige Apps können Pass-Through-Sensordaten direkt verwenden. Diese Daten können in verschiedenen Szenarien als "Nennwert" verwendet werden. Bei einem dieser Szenarien handelt es sich um eine App zur Implementierung eines Pedometers, das die Schritte beim Gehen zählt. Im folgenden Diagramm ist die Ausgabe des Beschleunigungsmessers für einen gehenden Menschen mit einem Tablet PC dargestellt. In diesem Diagramm wird deutlich, dass es möglich ist, alle Schritte zu erfassen.

Beschleunigung X, Beschleunigung Y und 

Beschleunigung Z im Diagramm als Linien mit gleichmäßiger Veränderung dargestellt, durch die die Bewegung bei jedem Schritt des 

Benutzers abgebildet wird.

 

Aus unseren Versuchen ging jedoch hervor, dass Sensorrohdaten von vielen Apps nicht effektiv verarbeitet werden können. Zu diesen Apps gehören unter anderen:

  • Kompass-Apps
  • Erweiterte Navigations- und Augmented Reality-Apps
  • Freizeitspiele
  • 3D-Spiele-Apps

Dies ist ein Screenshot eines beispielhaften 3D-Spiels:

Einfaches 3D-Spiel, bei dem Ziele in einem simulierten 3D-Raum angezeigt werden

3D-Ego-Shooter-Spiel (auf der //Build/-Konferenz vorgestellt)

Diese Apps benötigen Sensorfusionsdaten zum Unterstützen der implementierten Features. Der "Trick" der Sensorfusion besteht darin, die Daten aller drei Sensoren mathematisch zu kombinieren, um so komplexere Ausgaben zu erhalten, wie z. B. einen Kompass mit Neigungsausgleich, einen Neigungsmesser (für Gieren, Neigen und Rollen) sowie erweiterte Darstellungen der Geräteausrichtung. Mit diesen Daten können hochentwickelte Apps schnell, flüssig und unmittelbar auf natürliche Bewegungen reagieren.

Durch integrierte Sensorfusionstechnik bietet Windows 8 eine vollständige Lösung für die gesamte Palette an Apps. Mit der Sensorfusion können unter Windows Probleme mit Jitter-Bewegungen und ruckartigen Übergängen gelöst, Datenintegritätsprobleme verringert und Daten bereitgestellt werden, die eine nahtlose Darstellung von aller Gerätebewegungen in dreidimensionalen Räumen (ohne unschöne Übergänge) ermöglichen.

Zusammenarbeit mit Hardwarepartnern

Während der Entwicklung einer Sensorfusionslösung für Windows mussten wir auch früh Hardwaredesigner miteinbeziehen, damit sie von den Vorteilen dieser Lösung profitieren konnten. Für ein einzelnes Gerät ist die Entwicklung eines Sensorfusionssystems relativ einfach. Windows wird aber auf vielen Arten von PCs in vielen verschiedenen Ausführungen genutzt, und es werden dabei Hardwarekomponenten vieler unterschiedlicher Hersteller verwendet. Wir mussten eine Lösung entwickeln, an der sich das gesamte Spektrum der Windows-Hardwarepartner beteiligen konnte.

Als erstes ging es darum, eine Leistungsgrundlage für Sensorpakete zu entwickeln, die mit der Sensorfusionslösung von Windows funktionieren. Mithilfe der Windows-Zertifizierungsrichtlinien haben wir Spezifikationen für die Sensorleistung bereitgestellt. Zur Unterstützung der Hardwareunternehmen bei der Überprüfung Ihrer Lösungen auf Kompatibilität mit Windows haben wir eine Reihe von Tests erarbeitet und in das Windows-Zertifizierungskit integriert.

Auch das Verringern der Entwicklungskosten und der Kosten für unterstützende Treiber stellten Herausforderungen dar. Zur Unterstützung der Hersteller von Sensorhardware und PCs haben wir einen einzigen, von Microsoft bereitgestellten Treiber programmiert, der über einen USB-Anschluss und sogar über einen niedrigeren Power-Bus wie I2C mit allen Sensorpaketen funktioniert, die mit Windows kompatibel sind. Mit diesem Sensor-Klassentreiber können Hardwareunternehmen neue Sensorhardware entwickeln und dabei sicherstellen, dass die Hardware von Treibern unterstützt wird, die in das Windows-Betriebssystem integriert sind.

Damit dieser Klassentreiber möglichst schnell weitgehend eingesetzt wird, hat Microsoft mit Branchenpartnern zusammengearbeitet, um die Spezifikation allgemeiner Standards einzuführen. Im Juli 2011 wurde der Standard für Sensoren in die HID (Human Interface Device)-Spezifikation des USB-IF aufgenommen (HID Spec Version 1.12, aufgenommen mit Prüfungsanforderung 39). Diese Standardisierung ermöglicht es beliebigen Sensorherstellern, ein mit Windows 8 kompatibles Sensorpaket zu entwickeln, indem der allgemeine Standard der USB-IF-Spezifikationen für kompatible Gerätefirmware befolgt wird. So lassen sich bei der Integration von Sensorhardware in Windows 8-PCs Zeit und Kosten sparen. Zu den Vorteilen zählen zudem niedrigere Supportkosten und einheitlichere Hardwareigenschaften für Windows 8-PCs, die über Sensoren verfügen.

Neben der Standardisierung des Klassentreibers war es auch unser Ziel, die Leistung der Sensorfusionslösung zu optimieren und ihren Energieverbrauch zu reduzieren. Jeder aktive Sensor eines Systems benötigt Energie, und beim Senden der Daten in den Stapel werden sowohl Speicher als auch CPU-Zeit beansprucht. Wir konnten den Energieverbrauch und die Leistungseinbußen durch Sensorfusionssysteme, die unter Windows 8 ausgeführt werden, durch zwei Maßnahmen reduzieren:

1. Wir haben die Sensorfusions-Schnittstellen unter Windows 8 so entwickelt, dass ein großer Teil der Verarbeitung von Sensorfusionsdaten auf Hardwarebene erfolgt. Diese Verarbeitung der Sensorfusion auf Hardwareebene bedeutet, dass Algorithmen, die eine hohe Rechenleistung beanspruchen, nicht auf der Haupt-CPU ausgeführt werden müssen. Hierdurch lassen sich Energie und CPU-Zyklen sparen.

2. Wir haben leistungsfähige Filtermechanismen speziell für die Sensor-Apps implementiert, die zu jedem beliebigen Zeitpunkt ausgeführt werden. Bei diesem Pay-for-Play-Daten- und Ereignismodell werden Sensordaten nur in der für die Apps erforderlichen Geschwindigkeit an den Stapel gesendet, und nicht schneller. So wird die CPU-Auslastung für den Durchsatz von Sensordaten deutlich verringert.

Sensoren und Apps im Metro-Stil

Zusammenfassend bestand die letzte Herausforderung darin, die Leistung und die Möglichkeiten der Sensorfusion Entwicklern zugänglich zu machen, die Apps im Metro-Stil programmieren. Um dieses Ziel zu erreichen, haben wir als Komponente des neuen WinRT eine Sensor-API entwickelt. Mit diesen APIs können Entwickler von beliebigen Apps im Metro-Stil auf die Leistung der Sensorfusion zugreifen. Die APIs sind transparent, einfach und ermöglichen gleichzeitig den Zugriff auf Daten, die zur Unterstützung sämtlicher Apps benötigt werden, von Freizeitspielen bis hin zu Apps mit virtueller Realität. Natürlich sind diese Möglichkeiten auch als Win32-APIs für Spieleentwickler oder für andere Zwecke in Desktop-Apps verfügbar.

Im folgenden JavaScript-Codeausschnitt wird deutlich, wie einfach der Zugriff auf einen Beschleunigungsmesser und das Abonnieren von Ereignissen mithilfe der Windows Runtime ist:

var accelerometer;
accelerometer = Windows.Devices.Sensors.Accelerometer.getDefault();
accelerometer.addEventListener("readingchanged",onAccReadingChanged);

function onAccReadingChanged(e) {
var accelX = e.reading.accelerationX;
var accelY = e.reading.accelerationY;
var accelZ = e.reading.accelerationZ;
}

Weitere Informationen zur Unterstützung von Sensoren in der Windows Runtime finden Sie in dieser //build/-Sitzung unter Verwenden von Standorten und Sensoren in Apps.

Möglicherweise fragen Sie sich an diesem Punkt, wie Sie die Sensorfusion unter Windows 8 testen oder sogar einige Apps programmieren können, die diese neuen Möglichkeiten nutzen. Entwickler, die 2011 an der //build/-Konferenz teilgenommen haben, haben den Samsung Windows 8 Developer Preview-Tablet PC erhalten, auf dem das gesamte Sensorpaket enthalten war. Da wir nur ungefähr 4.000 Computer verteilt haben, hatte natürlich nicht jeder die Chance, einen zu erhalten. Das gleiche 9-Achsen- Sensorfusionssystem, das in die Windows Developer Preview integriert ist, kann jetzt auch online von ST Microelectronics erworben werden. Das "ST Microelectronics eMotion Development Board für Windows 8" (Modellnr. STEVAL-MKI119V1) kann über USB angeschlossen werden und funktioniert mit dem in Windows 8 integrierten HID-Sensorklassentreiber. Wenn Sie die Windows 8 Developer Preview heruntergeladen haben und Sensoren testen möchten, sollten Sie den Erwerb eines dieser Geräte in Betracht ziehen.

Platine mit USB-Dongle-Anschluss

ST Microelectronics eMotion Development Board für Windows 8

Im folgenden Video können Sie die Sensorfusion in Aktion sehen.


Laden Sie dieses Video herunter, und spielen Sie es in einem geeigneten Media-Player ab:
MP4 in hoher Qualität | MP4 in niedriger Qualität

– Gavin

  • Loading...
Leave a Comment
  • Please add 7 and 4 and type the answer here:
  • Post