Infrarot Stereotracking mit Arduino

irtracking_cover

Diese Projekt implementiert ein günstiges und simples infrarot Stereotrackingsystem mit Endbenutzerhardware. Die Ninendo Wii Fernbedienung beinhaltet eine sehr kleine infrarot Kamera mit hoher Bildrate (200Hz und mehr möglich). Die Kamera wird über I2C angeschlossen und implementiert bereits ein vier Punkt Blobtracking. Dies macht sie zur idealen Plattform für günstige und infrarot Trackinganwendungen. Für ein Stereotracking werden zwei Kameras benötigt. Der direkteste Weg besteht darin, die Kamera von Hand aus der Wiimote auszubauen. Das Kameramodul befindet sich in einem kleinen Metallgehäuse. Eine Möglichkeit besteht darin, das Gehäuse aufzubrechen und die Kontakte der Kamera neu zu verlöten. Alternativ kann das Gehäuse mit entfernt und auf einer neuen Platine untergebracht werden.

Two Pixart ir camera modules from Nintendo Wiimotes
Two Pixart ir camera modules from Nintendo Wiimotes

Die Kamera kann relativ leicht an ein Arduino Mikrocontrollerboard angeschlossen werden. Ein ~25MHz Oszillator wird als Taktgeber benötigt. Um mehrere Kameras parallel anzuschließen ist jedoch noch weitere Hardware notwendig. Alle Kameras verwenden die gleiche I2C Hardwareadresse und können daher nicht gleichzeitig am selben Bus betrieben werden. Es gibt I2C Multiplexer die eine große Anzahl an Geräten verwalten können. Für dieses Projekt mit zwei Kameras ist ein CD4053BCN analog Multiplexer ausreichend.

Arduino Mega with wiring to the cameras
Arduino Mega with wiring to the cameras

Für einen flexiblen Aufbau werden die Kameras über flexibles kabel angeschlossen und in einem Gehäuse aus PVC-Rohr gesichert. Endkappen für die Rohre werden verwendet, um die original Infrarotfilter der Wiimote weiterzuverwenden. Die Kameragehäuse sind mit Rohrschellen so an ein weiteres PVC-Rohr angeschlossen, dass sie im Betrieb gedreht werden können, um den überdeckten Bereich anzupassen.

Bisher wird der Arduino verwendet, um zwischen den Kameras umzuschalten und die Positionen der bis zu vier Blobs zu ermitteln. Die Kameradaten werden über die serielle Schnittstelle an eine Java Application übertragen von der die Kamerakalibrierung und das Tracking berechnet wird. Für die Kalibrierung ist die Berechnung der Epipolargeometrie mit Hilfe von 8 Punktkorrespondenzen ausreichend.

Das Projekt wurde pausiert, als Microsoft das Kinect Kamerasystem verfügbar gemacht hat. Zu einem zukünftigen Zeitpunkt soll die Hardware und Software erweitert und in einem neuen Projekt weiterverwendet werden. Aktuelle Pläne beinhalten die Erweiterung auf ein größeres Kamera-Array und die Berechnung von Kalibrierung und Tracking in Hardware.