Mit dem Interface Kinect von Microsoft ist es möglich, Dinge per Gesten zu steuern, also mit Körperbewegungen und durch Sprache. Diese neue Art der Steuerung wird durch eine Kombination von PrimeSense-Tiefensensor, 3D-Mikrofon, Farbkamera und Software realisiert. Das Interface kann bis zu sechs verschiedene Personen unterscheiden.
Folgende Punkte werden in diesem Thema erläutert:
Kinect in das Avio-System einbinden
Verfügbare Channels und ihre Anwendung
Die Einbindung von Kinect erfolgt über den Avio Service. Vorbereitend muss zunächst die Kinect for Windows Runtime v1.8 installiert werden, die Sie auf der Microsoft Website finden.
Nachdem Sie die Kinect Runtime installiert haben, müssen Sie den Avio Service neu starten. Klicken Sie dafür auf das Tray-Icon Avio Service und wählen Sie Restart Avio Service.
Klicken Sie auf das Icon des Avio Services und wählen Sie Functional Groups. Aktivieren Sie im erscheinenden Dialog durch Klicken auf Microsoft Kinect diese Funktionsgruppe, die dann oben gelb aufgeführt wird. Abschließend klicken Sie auf Apply Changes.
Sollte eine Fehlermeldung auf eine fehlende PlugIn-Datei hinweisen, ist die Kinect Runtime nicht korrekt installiert bzw. wird vom Avio Service noch nicht erkannt. Erledigen Sie die vorherigen Schritte 1 und 2 vollständig. Kontrollieren Sie ggf., ob sich unter "C:\Program Files (x86)\AV Stumpfl\Wings Avio Service\plugins\Kinect“ die Datei Kinect.plugin.xml befindet, die zwingend erforderlich ist, und starten Sie den Avio Service neu.
Bevor Sie mit dem Kinect im Avio-System arbeiten, sollten Sie das Gerät konfigurieren und einige Optionen festlegen.
Klicken Sie auf das Tray-Icon Avio Service und wählen Sie Configure Kinect..., worauf der Konfigurationsdialog erscheint. Sollte der Eintrag nicht wählbar sein, führen Sie die Schritte unter Kinect in das Avio-System einbinden aus.
Die Einstellungen im Bereich Startup Settings sind Grundeinstellungen, die nach dem Start des Avio Service dem Avio-System übermittelt werden. Diese Werte sind im Betrieb im Avio Manager veränderbar:
Elevation Angle ...legt fest, wie stark das Kinect-Interface geneigt ist.
Enable Kinect on Service Start ...definiert, ob die Kinect mit dem Service gestartet werden und sofort Werte liefern soll.
Use NearMode as Default Mode ...reduziert den Interaktionsbereich auf einen Abstand von 5 bis 30 Meter. Die Werte sind dann allerdings meist weniger genau. Der Standard-Abstand der Kinect liegt bei 8 bis 40 Metern, also wenn die Option nicht aktiv ist.
Filter Invalid Interaction Data ...legt fest, ob die Positionswerte unter „Interaction“ auch außerhalb der Auflösung des PCs liegen können.
Filter Inferred Joints ...bestimmt, ob alle Gelenksinformationen immer geliefert werden sollten (nicht aktiv) oder ob Werte, die von der Software geschätzt werden, nicht an Avio gesendet werden sollten.
Die Einstellungen im Bereich Dynamic Settings können nicht über den Avio Manager konfiguriert werden und werden sofort mit dem Speichern der Änderungen aktiv:
Tracked Persons ...definiert die Anzahl der Personen, deren Daten gesendet werden. Es werden nur so viele Personeninformationen an Avio geliefert, wie in diesem Slider festgelegt.
Displayed Joints ...bestimmt die Anzahl der Avio Channels. Hier wird festgelegt, welche Gelenke an das Avio-System geliefert werden sollten (x-, y-, und z-Werte). Die Punkte All und None können bei der Auswahl der Gelenke helfen.
Je nach Auswahl der Joints wird man im "Seated Mode" oder im "Default Mode" von der Kinect erfasst. Seated-Modus bedeutet, eine Person wird nur mit den Oberkörper-Informationen erkannt. Dieser Modus benötigt meist eine kleine Bewegung. Im Default-Modus muss möglichst der ganze Körper zu sehen sein. Die Wahl des Default-Modus passiert automatisch, sobald eine Gelenksinformation ausgewählt wird, welche nicht zum Seated Modus gehört, z. B. KneeRight.
Smoothing ...legt eine eventuelle Korrektur der Gelenksdaten fest. Dabei stehen die Optionen Fast, Medium und Slow zur Verfügung. Durch das Ändern einer Auswahl ändern sich auch die Werte der Slider (Smoothing, Prdeiction, MaxDeviation, Correction, Jitter Radius) unterhalb. Wählt man die Option Custom aus, so lassen sich benutzerdefinierte Korrekturwerte angeben.
Der Wert Smoothing gibt an, wie weich die Bewegung (in Meter) werden sollte: je kleiner, desto weniger und je größer, desto langsamer und ruhiger. Der Wert null liefert die Rohdaten. Correction gibt den Korrekturwert in Meter an. Je größer, desto schneller wird die Bewegung (desto eher wird der Rohwert verwendet) und je kleiner, desto langsamer und ruhiger. Prediction gibt an, wie viele Frames der Algorithmus in die Zukunft rechnet. Je größer, desto wahrscheinlicher, dass der Wert das Ziel bei schnellen Bewegungen überschießt. Max Deviation gibt den Radius an (in Meter), die gefilterte Position von den Rohdaten abweichen darf.
Person Selection ...bestimmt die Reihenfolge der Personen und deren Auswahl. KinectDefault versucht die aktivste Person auszuwählen. Die Option FirstComeFirstServe weist die erste erkannte Person Platz 1 zu. Dieser Platz bleibt so lange erhalten, bis die Person den Bildschirm wieder verlässt. Die Option SmallestZ reiht die Personen Anhand des Abstandes zur Kinect. Je näher man zur Kinect steht, desto weiter vorne wird man gereiht. XCenter funktioniert ähnlich wie SmallestZ, verwendet aber die zentralste Person als Hauptperson. Je weiter man von der Mitte entfernt ist, desto weiter wird man nach hinten gereiht.
Mit HotSpot lässt sich ein eigener Punkt festlegen (x-, y- und z-Koordinate). Wer dem Punkt am nächsten ist wird zur Hauptperson gewählt.
Bei der Personenauswahl ist zu beachten, dass nur die ersten beiden Personen mit sämtlichen Gelenksinformationen angezeigt werden. Alle anderen Personen besitzen lediglich eine Position.
Show Face Data ...legt fest, ob auch Gesichtsinformationen geliefert werden sollten. Ist dieses Häkchen nicht gesetzt, können auch keine Gesichtsgesten erkannt werden.
Um die auszuwertenden Gesten festzulegen, klicken Sie auf Configure Gesture Settings, worauf sich der Konfigurationsdialog öffnet:
Unter Gestures wählen Sie die gewünschten Gesten aus.
Unter General Gesture Setting können Sie einen Mindestabstand für Gesten mit dem Schieberegler Min. Gesture Distance festlegen. Diese Einstellung wird vor allem für Wischgesten verwendet und wird gesetzt, um das Auslösen versehentlicher Gesten zu minimieren. GripGesten lösen allerdings bereits ab der Hälfte der angegebenen Länge aus.
Min. Gesture Time ...legt die Zeit in Millisekunden fest, die eine Wischgeste benötigen muss, um als solche erkannt zu werden.
Max. Jitter Time ...legt die Zeit fest, die sich die Hand außerhalb des definierten Mindestabstandes zum Körper befinden darf, um eine Wischgeste trotzdem zu erkennen.
Min. Movement X und Min. Movement Y ...definieren die minimale Strecke in x- und y-Richtung, die zurückzulegen sind, um als Wischgeste erkannt zu werden.
Show Accumulated Values of Continuous Gestures (MultiGrip, SingleGrip) ...legt fest, ob auch akkumulierte Werte angezeigt werden sollen.
Limit Accumulated Values ...definiert, ob die Werte der akkumulierten Werte auf das Maximum bzw. Minimum limitiert werden sollen.
Nachdem Sie alle Einstellungen vorgenommen haben, schließen Sie den Dialog mit Save.
Wenn Sie im Dialog Configure Kinect auf Show Kinect Window klicken, können Sie sich ein Fenster mit dem aktuellen Kamerabild anzeigen lassen. Hier gibt es drei Optionen zur Anzeige:
Show Color Stream ...zeigt das Farbbild.
Show Interaction Stream ...zeigt eine ungefähre Fläche der aktuell erkannten Person
Show Skeleton Stream ...liefert zusätzlich eine visuelle Darstellung der Kinect-Gelenksinformationen.
Nachdem Sie alle Einstellungen vorgenommen haben, schließen Sie den Dialog Configure Kinect mit Save. Wenn Sie nun den Avio Manager öffnen, finden Sie unter dem Avio Service den Port Kinect, der die zuvor ausgewählen Parameter als Channels enthält. Sie können diese nun mit anderen Channels verbinden, siehe auch Wings Avio Manager im Überblick und Channels verknüpfen und editieren.
Der Kinect Sensor erkennt neben einem Farbbild auch die notwendige Tiefeninformationen. Dadurch ist es möglich, Gelenksinformationen (Joints) aus dem erstellten Bild zu erhalten. Das Kinect-Plugin in Avio liefert genau diese Informationen mit x-, y- und z-Koordinaten. Diese „Joint“-Informationen werden im Avio Manager im Port Person angezeigt.
Neben x-, y- und z-Koordinaten der Joints befindet sich auch noch eine IsTracked-Information darin. Diese gibt an, ob das Gelenk derzeit auch wirklich erfasst wird. Außerdem wird auch eine ungefähre Position der getrackten Person angegeben. Je nach im Menü ausgewählter Joints wird auch der Modus Default oder Seated automatisch gewählt.
Die Gelenksinformationen werden etwas abgewandelt auch im Interaction-Port angezeigt. Diese Informationen sind speziell auf einen Bildschirm skaliert und zum Beispiel zum Steuern eines Mauszeigers besonders von Vorteil. Die Position der Hand wird auf X- und Y-Koordinaten auf dem Bildschirm umgerechnet. Gleichzeitig werden noch Grip- und Press-Informationen geliefert. Grip gibt an, ob die Hand offen oder geschlossen ist. Press legt fest, ob in Richtung der Kinect eine Drückbewegung durchgeführt wurde.
Auch Gesichtsinformationen können zu einem kleinen Teil erfasst werden. Der Port Face zeigt (sofern er im Menü Show Face Data ausgewählt wurde) Rotationsdaten des Gesichtes um x-, y- und z-Achse, kleinere Bewegungen und eine ungefähre Position der Augenbrauen und des Mundes.
Aus diesen Joint-Informationen lassen sich erneut Daten extrahieren. In den Ports HandGestures und FaceGestures lassen sich Bewegungs- und Positionsmuster erkennen und anzeigen. Zu den FaceGestures gehören zum Beispiel Lächeln, das heben der Augenbrauen und das Öffnen des Mundes.
Im Port HandGestures werden Informationen angezeigt, die über die Handdaten erkannt wurden. Erkannt werden beispielsweise ein Wisch nach links, rechts, oben und unten, beispielsweise zum Weiterblättern von Oberflächen. Weiter ist es möglich eine Grip-Geste durchzuführen, also das Schließen einer Hand und anschließendes Bewegen in eine Richtung. Diese Funktion kann benutzt werden um beispielsweise etwas zu verschieben. Mit jedem „Grip“ wird allerdings wieder vom Ursprung ausgegangen. Aus diesem Grund lassen sich auch akkumulierte Werte anzeigen. Diese ermöglichen es beispielsweise mit mehreren Grip-Gesten ein Objekt auf dem Bildschirm zu verschieben. Neben der Grip-Geste existiert auch eine MultiGrip-Geste. Schließt man beide Hände, so wird diese Geste ausgelöst. Anhand der Bewegung beider Hände werden Rotationen um x-, y und z-Achsen erkannt, aber auch die Abstandsänderung (Zoom) wird geliefert. Auch in diesem Fall werden akkumulierte Werte angeboten, die Mehrere Rotationsbewegungen zu einer zusammenfassen.
Neben diesen Informationen lassen sich akkumulierte Werte auch zurück auf 0 setzen, die Kinect lässt sich ein- und ausschalten und es lassen sich einige Einstellungen ändern.