3D Time-of-Flight Sensor Evaluation Module mit Matlab/Simulink: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 11: Zeile 11:
Die Lichtquelle wird mit einem Lichtpuls der Breite <math>\Delta t</math> angestrahlt. Am Sensor werden dabei in zwei Zeitfenster <math>C_1</math> und <math>C_2</math>, die Phasenverschoben sind, die Lichtenergie jeweils aufaddiert. Die jeweilige Energie ist im Sensor über die Ladungen <math>Q_1</math> und <math>Q_2</math> ermittelt. Mit der Formel  
Die Lichtquelle wird mit einem Lichtpuls der Breite <math>\Delta t</math> angestrahlt. Am Sensor werden dabei in zwei Zeitfenster <math>C_1</math> und <math>C_2</math>, die Phasenverschoben sind, die Lichtenergie jeweils aufaddiert. Die jeweilige Energie ist im Sensor über die Ladungen <math>Q_1</math> und <math>Q_2</math> ermittelt. Mit der Formel  


<math>d = \frac{1}{2} c  \Delta t \frac{Q_1}{Q_1 + Q_2}</math>
<math>d = \frac{1}{2}\, c  \Delta t \frac{Q_1}{Q_1 + Q_2}</math>


kann anschließend die Entfernung <math>d</math> berechnet weden.(CITE)(BILD)
kann anschließend die Entfernung <math>d</math> berechnet weden.(CITE)(BILD)

Version vom 3. Juli 2018, 23:09 Uhr

Sensor: TI Evaluation Module: OPT8241-CDK-EVM

Autor: Asaad Al-Suleihi

Beschreibung des Sensors

Bei dem betrachteten Sensor handelt es sich um ein Kamerasystem, das mit Hilfe des Time-of-Flight-Verfahrens ein 3D-Bild seiner Umgebung erstellen kann, kurz 3D ToF.

Funktionsweise 3D ToF

Ein 3D ToF-Sensor besteht hauptsächlich aus zwei Komponenten: ein Lichtsensor, z.B. ein CMOS-Lichtsensormatrix, und eine modulierte Lichtquelle, meist eine Laserdiode.(CITE) Die Umgebung wird von der Quelle mit Lichtpulsen angestrahlt. Diese Lichtstrahlen werden von Objekten in der Umgebung zurückreflektiert und vom Sensor erfasst. Durch die Berechnung der Phasenverschiebung zwischen abgestrahlten und aufgenommenen Lichtstrahl kann die Entfernung zum Reflektionspunkt ermittelt werden. Es wird also über die Flugdauer zum Objekt die Distanz ermittelt. Daher stammt der Name Time-of-Flight. (BILD)

Die Lichtquelle wird mit einem Lichtpuls der Breite angestrahlt. Am Sensor werden dabei in zwei Zeitfenster und , die Phasenverschoben sind, die Lichtenergie jeweils aufaddiert. Die jeweilige Energie ist im Sensor über die Ladungen und ermittelt. Mit der Formel

kann anschließend die Entfernung berechnet weden.(CITE)(BILD)

Aufbau der OPT8241 CDK

Inbetriebnahme des Sensors

Der betrachtete Sensor wird nicht von MATLAB unterstützt. Eine Verbindung mit MATLAB ist daher mit Verwendung der verfügbaren Support-Packages nicht möglich. Lediglich eine C++-SDK existiert, die Voxel SDK (LINK), mit deren Hilfe der Sensor in einem C++-Programm abgefragt werden kann. Unter diese Voraussetzung bestehen folgende Alternativen, den Sensor in MATLAB auszulesen:

  • C++-S-Function in MATLAB implementieren,
  • Sensordaten aus MATLAB über eine lokale Client/Server-Architektur (TCP oder UDP) vom C++-Programm zu MATLAB übertragen und
  • Übertragung der Sensordaten aus dem C++-Programm über den MATLAB-Engine.

Für die Betrachtung in Rahmen dieser Arbeit wurde letzteres aufgegriffen. Für die Lösung wurde ein C++-Programm auf Basis eines Beispiels aus der Voxel-SDK implementiert und darin eine Verbindung zu MATLAB über den MATLAB-Engine aufgebaut. Zur Ausführung müssen folgende Schritte durchlaufen werden:

  • MATLAB starten und dort das Skript "matlab_engine.m" aus der hierzugehörigen SVN-Repository ausführen. Alternativ genügt folgenden Befehl im Command Window einzugeben: "matlab.engine.shareEngine".
  • C++-Programm starten und Modus und Anzahl der gewünschten Frames eingeben.

Die aufgenommenen Daten werden daraufhin bei jedem Frame nach MATLAB übertragen und erscheinen dort im Workspace. Es ist möglich, Skripte einzubinden, die bei jedem Frame ausgeführt werden, um z.B. Berechnungen durchzuführen oder Daten zu visualisieren. Dabei ist zu beachten, dass diese in ihre Gesamtheit nur einen Zyklusdurchlauf darstellen sollten, da sie wie erwähnt bei jedem Frame erneut aufgerufen werden. Als Beispiel dienen die Skripte "processDepthData.m" und "processPointCloud.m", die bei jedem Durchlauf die Daten in einem geeigneten Plot ausgeben.

Systemanforderungen

  • Voxel SDK
  • Point Cloud Library PCL
  • MATLAB Computer Vision System Toolbox
  • Von MATLAB Engine unterstütztes Compiler

Messkette

Fehlerquellen

Möglich sind:

  • Fertigungsfehler bei Laserdioden und Lichtsensor
  • Fehlerhaft ausgegebene Laserstrahlen (Intensität, Frequenz)
  • Mechanische Fehler in Anbringung Laserdioden und Lichtsensor
  • Rauschen in Sensor
  • Lichtbrechung und sonstige Effekte
  • Drift usw. im Sensor
  • Temperatureffekte (Aufgrund von IR-Strahlen)
  • Reflektion / Absorbation

→ zurück zum Hauptartikel: Signalverarbeitende Systeme