Hintergrund
Johnny Lee demonstrierte verschiedene interessante Ideen (detailliert zB in diesem Video sowie auf dieser Seite ), die die Infrarotkamera einer Wii-Fernbedienung nutzen. Die IR-Kamera hat eine Auflösung von 1024 x 768 und wurde entwickelt, um die 4 hellsten infrarotbeleuchteten Punkte in ihrer Sicht bei 100 Hz zu positionieren. Jeder dieser 4 "Punkte" könnte eine sich bewegende Markierung in Form von z. B. einer Infrarot-LED sein - die Emission der LED wird von der Kamera erfasst, die wiederum bei 100 Hz die Positionsdaten des IR-"Blobs" ausgibt. beobachtet. Dies ermöglicht ein schnelles und kostengünstiges Do-it-yourself-Positionsverfolgungssystem.
Problem
Wenn im obigen Aufbau jede IR-LED nicht nur eingeschaltet, sondern auch irgendwie eindeutig IDENTIFIZIERBAR gemacht wird, ergeben sich viele interessante Möglichkeiten. Beispielsweise würde dies eine kontinuierliche Positionsverfolgung jeder Markierung im Raum eindeutig (dh mit Kenntnis darüber, welcher Blob welcher ist) ermöglichen. Da jede IR-LED-Markierung einzigartig ist, bedeutet dies außerdem, dass das Setup auf eine beliebige Anzahl von Punkten (z. B. 50 Markierungen) anstatt nur auf die 4 hellsten Punkte erweitert werden kann.
Die Frage ist: Angenommen, Sie beginnen damit, jeden IR-LED-Marker mit einem Mikrocontroller zu verbinden, was wäre der effektivste Weg, um das obige Setup so zu erweitern, dass jeder IR-LED-Marker eindeutig IDENTIFIZIERT wird? Ich beschreibe unten grob einen Ansatz – gibt es einen vielseitigeren oder einfacheren Ansatz als diesen, oder können vielleicht Verbesserungen daran vorgenommen werden?
Zuerst eine Methode, die NICHT vielversprechend ist: Da jede Infrarot-MarkerLED mit einem Mikrocontroller verbunden ist, könnten Sie jede MarkerLED in einem einzigartigen Muster blinken lassen. Aber die IR-Kamera hat nur eine Bildwiederholfrequenz von 100 Hz. Wenn es also 50 LEDs gäbe, wäre es schwierig, für jede ein einzigartiges Muster einzufügen, ohne dass die effektive Positionsverfolgung der Punkte durch die Kamera wirklich langsam wird.
Unten ist eine grobe Idee, die ich gerade überlege (verfolgt und identifiziert 50 IR-LED-Marker):
Beginnen Sie mit der Markierung eines einfachen IR-Detektors neben der IR-Kamera, deren beide Ausgänge synchron von einem gemeinsamen Mikrocontroller oder Computer gelesen/verfolgt werden.
Nehmen wir an, es gibt 50 Marker. Für jede MarkerLED/Microcontroller-Schaltung fügen Sie auch eine zweite IR-LED hinzu, die als IdentifierLED bezeichnet wird, sodass für jeden Marker ein Paar IR-LEDs vorhanden ist, die beide vom Mikrocontroller gesteuert werden.
Für eine gegebene Markierung wird die Markierungs-LED nur für genau ein spezifisches 20-Millisekunden-Fenster jeder Sekunde eingeschaltet, damit ihre Position verfolgt werden kann (jede Markierung hat ihr eigenes 20-ms-Fenster). Während desselben speziellen 20-ms-Fensters wird die entsprechende Identifier-LED in einer bestimmten Weise durch den Mikrocontroller mit einer hohen Frequenz (z. B. 38 kHz) gepulst, wodurch ein eindeutiges Muster/eine eindeutige ID für diese spezielle Markierung eingerichtet wird.
Und das gleiche für die verbleibenden 49 Marker nacheinander, jeder mit seinem eigenen unterschiedlichen 20-Millisekunden-Fenster und seinem eigenen hochfrequenten Erkennungsmuster. Das kümmert sich um die Seite der Marker.
Nun zur Sensorseite: Für jedes aufeinanderfolgende 20-Millisekunden-Fenster während einer Sekunde erkennt die IR-Kamera die Position eines bestimmten Markers (dessen 20-Millisekunden-Fenster es ist) über die entsprechende MarkerLed. Gleichzeitig erkennt der IR-Detektor anhand des detektierten Musters der entsprechenden IdentifierLED, UM WELCHEN Marker es sich handelt.
Und diese Positions- und Identifikationsverfolgung wird für alle fünfzig der 20-Millisekunden-Fenster innerhalb jeder Sekunde fortgesetzt.
Somit werden alle 50 Markierungen verfolgt, wobei der verfolgungsseitige Mikrocontroller in der Lage ist, die Daten jeder Markierung einmal pro Sekunde zu aktualisieren.
Anstatt den Markierungs-ID-Code von der Markierung zu einem zentralen Empfänger zu übertragen, wäre es vielleicht einfacher, den Markierungs-ID-Code von einem zentralen Sender zu der Markierung zu übertragen.
Der zentrale Sender (vielleicht ein 38-kHz-IR-Sender oder ein drahtloser Sender) würde tatsächlich "Marker Nummer 22, bitte für die nächsten 20 ms auf meiner Markierung einschalten: JETZT" senden. (Idealerweise sendet der zentrale Sender, während diese Markierung für diese 20 ms leuchtet, die ID der nächsten einzuschaltenden Markierung).
Da dieser eine zentrale Sender das Timing steuert, müssen Sie sich nicht mit Markern auseinandersetzen, die nicht mehr synchron sind und versehentlich gleichzeitig senden.
Hoffentlich können Sie diesen zentralen Sender nahe genug am Positionstracker platzieren, sodass, wenn ein Marker die vom zentralen Sender gesendeten Befehle nicht sehen kann, dieser Marker sowieso nicht im Sichtfeld des Positionstrackers ist.
Das gibt Ihnen auch die Flexibilität, die Daten, die Sie von Ihrem Positionstracker zurückerhalten, zu verwenden, um dynamisch anzupassen, welche Markierungen Sie auswählen:
Sie haben eine Art Initialisierungs-/Broadcast-Herzschlag vergessen, sonst würde der Marker nicht wissen, wann er aufleuchten soll. Je nachdem, wie gut Ihre Sensoren und LEDs sind, können Sie möglicherweise verschiedene Abschnitte des IR-Spektrums verwenden. So konnte man eine LED mit 300 µm Wellenlänge von einer mit 200 µm unterscheiden. Wenn Sie mehrere Kameras haben, können Sie verschiedene Optiken / Filter verwenden (ist machbar). Andernfalls investieren Sie in eine Kamera mit einer höheren Bildrate und lassen Sie jeden Marker in einem einzigartigen Muster blinken. Das Muster muss nicht nur ein/aus sein, sondern kann auch die Frequenzmodulation nutzen.
Ich nehme an, es gibt eine Art leistungsstarken Computer, der jedes Videobild verarbeitet und Dinge wie (ungefähr) die Helligkeit jeder IR-LED messen kann.
Modulieren Sie einfach die Helligkeit jeder IR-LED mit einer anderen Frequenz und lassen Sie den Computer die Frequenz jeder einzelnen erkennen.
Nehmen wir zuerst einen einfachen Fall: LED1 würde seine Helligkeit in einer 10-Hz-Sinuswelle von 50 % bis 100 % Helligkeit variieren. Der Computer kann nun die Helligkeit der LED verfolgen, sie durch einen Tiefpassfilter laufen lassen und Nulldurchgänge verwenden, um ihre Frequenz zu messen. LED2 würde beispielsweise bei 15 Hz variieren, und der PC könnte leicht zwischen ihnen unterscheiden.
Es konnte bis zu einer Sekunde dauern, bis der PC eine gute Frequenzsperre für beide hatte.
OK, aber das wird nicht für 50 LEDs funktionieren. Es ist schwer, so viele unterscheidbare Frequenzen zu haben, die von einer 100-Hz-Kamera in kurzer Zeit abgetastet werden können. Die Lösung ist die Verwendung von DTMF!
DTMF ist eine Methode, die auf altmodischen Telefonen verwendet wird, um Daten mit Tönen zu senden. 8 Töne sind definiert, und der Sender würde gleichzeitig zwei verschiedene Töne senden, und der Empfänger würde das Tonpaar in einem Raster nachschlagen, um eines von 16 Ergebnissen auszuwählen.
Jetzt könnten Sie einfach ein 7x7-Raster verwenden, um 49 verschiedene IR-LEDs zu haben. Der Computer sollte 14 Frequenzen unterscheiden können, wenn er die LEDs jeweils etwa 1 Sekunde lang sehen kann. Sie würden viel niedrigere Frequenzen als die DTMF-Frequenzen verwenden, sagen wir 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32 Hz.
Verwenden Sie alternativ nur 8 Frequenzen und wählen Sie zwei der 8 aus, um 56 (8x7) Kombinationen zu erhalten.
Suha
Brettbiss
hulkingtickets
Brettbiss