Headtracking

Das Ziel dieses Projekts: Bau eines Headtracking Systems für die Integration in opentrack, eine Software die in Videostreams verschiedener Typen Tracking-Objekte erkennt und deren Drehkomponenten Roll, Pitch und Yaw, sowie Position im Raum X, Y und Z errechnet. Dies wird auch auf Grund der Anzahl der Daten als 6-Degrees-of-Freedom (6-DoF) Headtracking bezeichnet.

Grafische Darstellung von Yaw (Gieren), Pitch (Nicken), Roll (Rollen)

Quelle: Wikimedia Foundation Inc. Roll-Nick-Gier-Winkel. Verfügbar unter: https://de.wikipedia.org/wiki/Roll-Nick-Gier-Winkel, zuletzt aufgerufen am 26.01.2024.

Die errechneten Daten können dann an verschiedene Programme als Eingabegerät weitergegeben werden. Dies ermöglicht es, die Bewegung des menschlichen Kopfes in eine Simulation einzubringen. Am populärsten wird diese Technologie bei Flugsimulatoren eingesetzt, um sich im Cockpit umzuschauen, oder, um rundum aus diesem hinausschauen zu können.


Grundlagen

Unterschiedliche Methoden können eingesetzt werden um Headtracking zu ermöglichen:

KI Gesichtserkennung

Opentrack kann direkt einen Videostream einer Webcam verarbeiten. Eine KI übernimmt dann über Gesichtserkennung das Tracking. In meinen Tests musste ich hier feststellen, dass dies nur suboptimal funktioniert. Bei selbst kleineren Winkeln der Drehkomponenten kann das Gesicht nicht mehr erkannt werden. Zudem wird eine erhöhte Rechenleistung für die KI basierte Gesichtserkennung benötigt (Diese ist entsprechend nicht mehr für die Simulation verfügbar). Auch musste ich feststellen, dass die Performanz bei dieser Methode nicht besonders hoch ist. Die Anzahl an Daten pro Sekunde ist hier deutlich geringer als bei anderen Methoden.

Infrarot Punkt-Erkennung

CMOS Bildsensoren sind auch empfindlich für Wellenlängen außerhalb des sichtbaren Lichts. So werden eine oder mehrere Infrarot Lichtquellen (meistens im Bereich 800 – 900nm) in Kombination mit einem optischen Tiefpassfilter eingesetzt, um einzelne Punkte zu erkennen. Durch Fixierung der Punkte am Kopf kann Headtracking realisiert werden.

Elektromagnetische Strahlung: Sichtbares Licht und angrenzende Bereiche

Quelle: Ausschnitt aus: Joachim Herz Stiftung. Sichtbares Licht. Verfügbar unter: https://www.leifiphysik.de/optik/elektromagnetisches-spektrum/grundwissen/sichtbares-licht, zuletzt aufgerufen am 26.01.2024

Durch die Verwendung eines optischen Tiefpassfilters können Wellenlängen unter 700nm effektiv (>90%) herausgefiltert werden. Im Sonnenlicht befinden sich auch Wellenlängen über 700nm, diese Anteile besitzen jedoch eine deutlich geringe Intensität als spezielle Infrarot Lichtquellen (LEDs). Durch Anpassung der Belichtung der Kamera können die Anteile der Sonne weiter herausgefiltert werden.

Je nach Art der Montage der Infrarot Lichtquelle(n) unterscheidet man zwischen aktivem und passivem Headtracking.

Passives Headtracking

Hierbei wird eine Infrarotlichtquelle an der Kameraeinheit befestigt. Diese strahlt ein helles Licht in Richtung des Nutzers aus. Reflektoren an dem Kopf des Nutzers reflektieren das Infrarote Licht zurück in Richtung der Kamera. Diese kann die Position der Reflektoren im Bild und somit die 6-DoF bestimmen.

Vorteile dieser Technik: Keine aktiven Komponenten am Kopf des Nutzers.
Nachteile dieser Technik: Dauerhaftes Leuchten von hellem, nicht sichtbarem Lichtes in das Gesicht des Nutzers. Andere Objekte neben den eigentlichen Reflektoren können auch reflektieren.

Reflektor Clip. Dieser kann in einer Cap oder in dem Bügel eines Headsets befestigt werden.

Quelle: NaturalPoint, Inc. Accessories – TrackClip. Verfügbar unter: https://www.trackir.com/accessories, zuletzt aufgerufen am 26.01.2024.

Durch die Gefahr der Aussetzung des Auges mit hellem, nicht sichtbaren Licht habe ich diese Technik für meine Umsetzung ausgeschlossen.

Aktives Headtracking

Bei aktivem Headtracking werden Infrarot-LEDs am Kopf des Nutzers befestigt. Diese Einheit wird geläufig als Clip bezeichnet. Die Kamera wird somit direkt angestrahlt. Durch die Position der LEDs im Bild werden die 6-DoF bestimmt.

Vorteile dieser Technik: Präzises Tracking durch kleine, dennoch helle Punkte. Der Nutzer wird nicht aktiv angeleuchtet.
Nachteile dieser Technik: Elektronik muss direkt am Kopf des Benutzers befestigt werden. Zu helle LEDs können Blendenflecken im Bild verursachen.

Delanclip Fusion Pro. Aktives Headtracking Set

Quelle: Delan Engineering Ltd. Delanclip Headtracking. Verfügbar unter: https://delanclip.com/product/delanclip-fusion-pro/, zuletzt aufgerufen am 26.01.2024.

Wichtig bei dieser Technik ist, dass LEDs verwendet werden müssen, die einen hohen Abstrahlwinkel haben. Bei einer Drehung des Kopfes um 45° befindet sich die Kamera entsprechend in diesem Winkel zur LED. Eine LED mit einem Abstrahlwinkel von 10° gibt in diesem Winkel somit kaum noch Licht ab. Das Resultat davon wäre ein Verlust des Trackings.


Kommerzielle Produkte

Verschiedene kommerzielle Produkte sind erhältlich die Headtracking ermöglichen. Zu den bekanntesten gehören hier TrackIR und Delanclip.

TrackIR bietet passives, sowie aktives Headtracking. Ein aktives Headtracking Set kostet hier 170 USD. Ein deutscher Händler verkauft ein Set für 210€.
– Auflösung der Kamera: 480p bei 120Hz

Delanclip bietet aktives Headtracking. Ein Set kostet hier ~92 GBP. Günstigere Varianten mit anderen Kamera Sensoren oder kabelgebundenen Clips sind auch vorhanden.
– Auflösung der Kamera: 480p bei 60Hz

Beide Systeme sind somit sehr teuer und weisen eine niedrige Auflösung auf, was ein akkurates Tracking bei höherer Distanz unmöglich macht.


Umsetzung

Die Umsetzung eines eigenen Systems ist in zwei große Teile unterteilt. Zum einen die Entwicklung eines Clips, zum anderen die Entwicklung einer Kamera Komponente.

Entwicklung eines Clips

Die Entwicklung eines Clips beginnt mit der Auswahl einer LED.

Auswahl einer LED

Wie in den Grundlagen bereits beschrieben ist bei dieser der Abstrahlwinkel wichtig. Außerdem muss die LED eine Bauform haben, die sich in ein Gehäuse des Clips gut integrieren lässt. Die Wellenlänge der LED muss sich natürlich im Infraroten Bereich befinden.

Eine passende LED ist hier die OSIXCA56A1A von OptoSupply. Mit einer Wellenlänge von 880nm und einem 50% Power Angle (Abstrahlwinkel) von 100°, alles in einer 4,8mm Bauform eignet sich diese gut.

Diese ist bei dem polnischen Händler TME für 0,34€ / Stück erhältlich.

Sonstige Komponenten

Weiterhin wird ein Akku und entsprechendes Akku Management gegen Tiefentladen, Kurzschlüsse, Strombegrenzung und natürlich für das Laden mit einer passenden Ladekurve gebraucht. Um die korrekte Spannung an die LEDs anzulegen wird zusätzlich ein Spannungsregler benötigt. Der Strom kann dann mit einem Widerstand begrenzt werden.
Für Akku Management und Spannungsregler habe ich ein einzelnes Modul gefunden, dass in einem kleinen Formfaktor alle zuvor genannten Bedingungen erfüllen kann. Ein solches Modul kostet zwischen 0,80€ und 1,30€.

LX-LCBST Lithium Akku Management + Step Up Regler

Quelle: Ausschnitt aus: AliExpress.com. Lithium Battery Charger Board DC-DC Step Up Module. Verfügbar unter: https://www.aliexpress.com/item/1005004957485592.html, zuletzt aufgerufen am 26.01.2024.

Als Akku habe ich einen generischen LiPo Akku mit 1000mAh ausgesucht. Im normalen Gebrauch reicht diese Kapazität für viele Stunden Nutzung. Um der Ladekurve dieses Akkus gerecht zu werden musste ein Widerstand (Formfaktor 0603) getauscht werden. Dieser Widerstand regelt den Ladestrom. Ein geeigneter Widerstand muss anhand des Rprog Wertes aus dem Datenblatt des Ladereglers (TP4056) entnommen werden.

Gehäuse

Diese Komponenten werden zusammen mit einem An- und Aus-Schalter, sowie einem Widerstand, für die Limitierung des Stroms über die LEDs, in einem 3D-gedruckten Gehäuse zusammengefügt. Dieses besteht aus zwei verschraubbaren Teilen. Ein oberes Teil, welches drei LEDs, den Akku und das Akku Management beinhaltet und eine untere Basis. Neben der Gehäusefunktion des oberen Teils, hält dieses auch die LEDs in einem bestimmten Abstand zu einander. Dieser Abstand wird später in opentrack eingetragen und ist wichtig für die Berechnung von Drehkomponenten und Position.

Verschraubt werden die zwei Gehäuseteile mit M3 Schrauben (1x M3x20, 1x M3x15) und zwei M3 Muttern.

Explosionszeichnung des 3D-Druck Gehäuses mit Elektronik.

Über das Anbringen eines kurzen Streifens Klett-Band an der Unterseite des Clips und an der Seite eines Headsets wird die Montage und variables An- und Abbauen am Kopf des Nutzers ermöglicht.

Entwicklung einer Kamerakomponente

Bei der Entwicklung einer Kamerakomponente steht das Kameramodul und vor allem der Sensor im Mittelpunkt. Hierbei sind Kameramodule in einem Standardmaß erhältlich, dieses beträgt 38 × 38mm. Der Sensor befindet sich dabei unter einem Objektivhalter mit M12x0,5mm Gewinde.

Sensorwahl

Der Sensor der Kamerakomponente muss eine höchstmögliche Auflösung bei einer höchstmöglichen Bildwiederholrate aufweisen. Verschiedene preiswerte Sensoren können hier eingesetzt werden:

OV2710: 1080p bei 30Hz, 720p bei 60Hz
OV4689: 1080p bei 60Hz, 720p bei 120Hz
SC200AI: 1080p bei 60Hz, 720p bei 60Hz

Entgültig habe ich den SC200AI Sensor (~28€) gewählt, da bei Modulen mit OV2710 teilweise bestimmte Funktionen, wie manuelle Belichtungseinstellung oder höhere Wiederholraten (>30Hz) nicht umgesetzt waren und Module mit OV4689 deutlich teurer sind.

38 x 38mm Kameramodul mit SC200AI Sensor

Quelle: Ausschnitt aus: AliExpress.com. 60fps USB Camera Module 1080P, 1920×1080, SC200AI. Verfügbar unter: https://www.aliexpress.com/item/1005004639483886.html, zuletzt aufgerufen am 26.01.2024.

Manche Kameramodule sind mit variabel zuschaltbaren Hochpassfiltern, Mikrofonen oder (infraroten) LEDs ausgestattet. Diese sind nicht zwingend geeignet.

Objektivwahl

Ein passendes Objektiv muss zu der Größe des Sensors passen. Durch die Brennweite lässt sich anschließend der DFOV (diagonal field of view) bestimmen, dieser muss später in opentrack eingetragen werden. Für die hohe Auflösung von 1080p kann ein Objektiv mit höherer DFOV gewählt werden. Dies erhöht wiederum den Bereich in dem das Headtracking stattfinden kann. Für das Modul oben habe ich ein 3mm Objektiv gewählt, was zu 90 DFOV führt. Durch Tests mit verschiedenen Brennweiten konnte ich feststellen, dass dies der optimale Wert ist, da dies circa 50cm Spielraum in alle Richtungen gibt, bevor Headtracking nicht mehr möglich ist.

Manche Objektive (die meisten, außer falls mit IR gekennzeichnet) besitzen einen Hochpassfilter, der mit einem UV Harz eingeklebt ist. Dieser lässt sich (meist) zerstörungsfrei entfernen, und muss auch entfernt werden, weil er Infrarotes Licht blockiert.

Optischer Tiefpassfilter

Der optische Hochpassfilter (falls vorhanden) wird mit einem optischen Tiefpassfilter ausgetauscht. Dieser blockiert anschließend sichtbares Licht.

700nm Tiefpassfilter mit Klebering

Quelle: Ausschnitt aus: AliExpress.com. 700NM Infrared Long Band Pass Filter. Verfügbar unter: https://www.aliexpress.com/item/1005005506599612.html, zuletzt aufgerufen am 26.01.2024.

Für M12 Objektive können dazu Tiefpassfilter mit einem Durchmesser von 11mm genutzt werden. Diese sind teilweise bereits mit einem Klebering ausgestattet, was die Montage stark vereinfacht. Geklebt auf die Sensorseite des Objektivs blockieren diese nun Wellenlängen kürzer als (in diesem Fall) 700nm. Die Wellenlänge muss möglichst so gewählt werden, dass viel Licht außerhalb des Spektrums der LEDs blockiert wird. Ein solcher Tiefpassfilter kostet circa 3€.

Kamera Halter

Die modifizierte Kamera muss monitierfähig auf Monitoren verschiedener Größe sein. Außerdem muss der Winkel, auf Grund der Höhendifferenz verschiedener Monitore mit der Mitte des Kopfes des Nutzers, anpassbar sein. Dazu habe ich einen mehrteiligen Halter konstruiert, der diese Vorraussetzungen erfüllt. Dieser ist inspiriert durch den Halter, der bei Logitech Webcams zu finden ist.

Kamera Halter für 38 x 38mm Kameramodule auf Monitoren bis 60mm dicke

Nach dem 3D Druck der vier Teile des Halters können diese durch 3 x M3x30mm Schrauben und 3 x M3 Muttern, sowie 4 M2 x 12mm Schrauben und 4 x M2 Muttern montiert werden. Auf die Kontaktflächen mit dem Monitor können anschließend noch Schaumstoffsteifen aufgeklebt werden. Dies verhindert ein Verkratzen des Monitors und erhöht die Reibhaftung an diesem.

Software

In opentrack muss die Kamera als Quelle ausgewählt werden. Nach Einstellung der Belichtung und kleineren Anpassungen nimmt die Kamera ein schwarzes Bild mit drei weißen Punkten, den drei LEDs, auf. Diese drei Punkte werden erkannt und die entsprechenden Drehkomponenten und Position errechnet.

Screenshot aus opentrack mit dem Headtracking System in Aktion

Diese Drehkomponenten und Positionsdaten werden an eine ausgewählte Software weitergegeben.


Ergebnis

Ein 1080p 60Hz Headtracking System mit hohen maximalen Drehkomponenten wurde geschaffen. Viele Einzelheiten deren Details für die erfolgreiche Umsetzung eines solchen Systems essentiell sind, wurden erstmalig an einem Ort dokumentiert und veröffentlicht.

Das System mit Gesamtkosten von ~50€ (~12€ für den Clip und ~38€ für die Kamerakomponente) ermöglicht preiswertes Headtracking mit sehr hoher Qualität.


Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Inhaltsverzeichnis