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

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:


'''Autor:''' [[Benutzer:Suleihi| Asaad Al-Suleihi]]
'''Autor:''' [[Benutzer:Suleihi| 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 <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>
kann anschließend die Entfernung <math>d</math> berechnet weden.(CITE)(BILD)
===Aufbau der OPT8241 CDK===


==Inbetriebnahme des Sensors==
==Inbetriebnahme des Sensors==
Zeile 14: Zeile 29:
*C++-Programm starten und Modus und Anzahl der gewünschten Frames eingeben.
*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 zu starten, die  
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===
===Systemanforderungen===
Zeile 22: Zeile 37:
*Von MATLAB Engine unterstütztes Compiler
*Von MATLAB Engine unterstütztes Compiler


==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 <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>
kann anschließend die Entfernung <math>d</math> berechnet weden.(CITE)(BILD)
===Aufbau der OPT8241 CDK===


==Messkette==
==Messkette==

Version vom 3. Juli 2018, 23:06 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. Es existiert eine C++ SDK, 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