Forum: Mikrocontroller und Digitale Elektronik 3D Kamera Lichtlaufzeitmessung


von malek j. (soprano1983)


Lesenswert?

Hallo zusammen ,

ich versuche seit Tage den Lichtlaufzeit verfahren zu verstehen , bis 
ich auf diesen Artikel gestoßen bin , aber irrgendwie verstehe ich die 
Funktionsweise  nicht ganz .

http://de.wikipedia.org/wiki/TOF-Kamera

wie berechnet man durch den puls die zeit ?
warum wird 2 pulslichte gesendet ?
warum verzögert sich den reflektierten Licht ?
..
könnte mir vielleicht jemanden helfen?

Mit freundlichem Gruß

von Karl H. (kbuchegg)


Lesenswert?

Die Funktionsweise wird dann klarer, wenn du dir klar machst, dass du in 
eine derartige Kamera mit 200*200 Pixel keine 40000 hochpräzise Uhren 
einbauen kannst, die die Laufzeit des jeweiligen Lichtstrahls vom der 
Lampe bis zum Photodetektor am EmpfangsChip messen.

Wie aber kann man dann die Laufzeit messen.
Der Trick besteht darin, dass man ein Speicherelement hat, in dem man 
eine Größe summieren kann. Ich würde mal annehmen, dass es sich dabei um 
Kondensatoren handelt. Sobald der Photodetektor den zurückkommenden 
Lichtpuls das erste mal sieht, schliesst er einen Schalter zu diesem 
Kondensator. Mit dem Ende des Lichtpulses wird der Schalter wieder 
geöffnet. Die im Kondensator danach vorliegende Ladungsmenge ist damit 
ein Mass für die Zeitdifferenz und damit für die Laufzeit des Lichts von 
der Lampe zum Objekt und wieder zurück.

Im Wikipedia Artikel ist eine kleine Grafik, die die Verhältnisse zeigt.

von loonquawl (Gast)


Lesenswert?

Im Grunde schickt man einen Lichtblitz los, und betrachtet die Szene mit 
einer Kamera. Jedes Pixel der Kamera merkt sich, wann der Lichtblitz(der 
an den Objekten in der Szene reflektiert wird)ankommt. Wenn das Licht 
frueh ankommt hat es nur einen kurzen Weg vom Blitzlicht zur Kamera 
gehabt, kommt es spaet war der Weg entsprechend weiter.

von Amateur (Gast)


Lesenswert?

@ loonquawl

Schön wär's.
In dem Zeitbereich würde ich sagen: Spar schon mal.

von Felix P. (fixxl)


Lesenswert?

Bei den ToF-Kameras steckt hinter jedem Pixel ein PMD 
(Photo-Misch-Detektor oder Photonic-Mixing-Device, wenn man es englisch 
lieber mag).

Die Funktionsweise ist die von Karl-Heinz beschriebene: Die Kamera 
sendet moduliertes Licht, wobei die Modulationsfrequenz von der zu 
erfassenden Distanz abhängig ist. Die Modulationsspannung wird 
gleichzeitig zur Steuerung der beiden Schalter genutzt, die das 
Photoelement mit einem der beiden Speicherkondensatoren verbinden. Weil 
das Licht von der Kamera zum reflektierenden Objekt und wieder zurück 
zur Kamera eine gewisse Zeit braucht, ergibt sich ein laufzeit- und 
damit distanzabhängiger Ladungsunterschied der beiden Kondensatoren.

von Florian R. (Firma: TU Wien) (frist)


Lesenswert?

Solltest Du so einen Kamera brauchen, ich hab eine oder zwei Swiss 
Ranger 4000 (auch im Wikipedia Artikel erwähnt) übrig.

cu
Flo

PS: Die neu Kinetik enthält übrigens auch eine TOF Kamera. Blöderweise 
ist das SDK immer noch nicht frei verfügbar.

von malek j. (soprano1983)


Lesenswert?

Super , bis jetzt alles kapiert .

aber wir berechnet man t0 bei der Formel D = (c.t0/2). S2/(S1+S2) ?

von Karl H. (kbuchegg)


Lesenswert?

Du hast aber schon den Artikel und das dort angegebene Diagramm 
studiert?
http://commons.wikimedia.org/wiki/File:TOF-Kamera-Prinzip.jpg

t0 ist die Pulslänge, die der Sender (die Lichtquelle) erzeugt. Und die 
kennst du a priori.

von Karl H. (kbuchegg)


Lesenswert?

Karl Heinz schrieb:


> Kondensatoren handelt. Sobald der Photodetektor den zurückkommenden
> Lichtpuls das erste mal sieht, schliesst er einen Schalter zu diesem
> Kondensator. Mit dem Ende des Lichtpulses wird der Schalter wieder
> geöffnet. Die im Kondensator danach vorliegende Ladungsmenge ist damit
> ein Mass für die Zeitdifferenz und damit für die Laufzeit des Lichts von
> der Lampe zum Objekt und wieder zurück.

Das war im übrigen Quatsch.
Das funktioniert anders.
1
In der Beispielskizze arbeitet das Pixel mit 2 Schaltern (G1 und G2)
2
und Speicherelementen (S1 und S2). Die Schalter werden mit einem
3
Pulssignal mit der gleichen Länge wie der Lichtpuls angesteuert,
4
wobei das Steuersignal für G2 um eine Pulslänge verschoben ist.
5
Trifft nun das reflektierte Licht verzögert auf das Pixel auf,
6
so gelangt nur ein Teil des Signals in das Speicherelement S1,
7
der andere Teil wird in S2 gesammelt. Je nach Distanz verändert
8
sich also das Verhältnis von S1 und S2, wie es in der zweiten Grafik
9
dargestellt ist.

Eigentlich recht einfach.
Der Speicher S1 integriert solange die Ladung, solange der Puls 
generiert wird. Der SPeicher S2 macht dasselbe für eine Pulslänge, 
nachdem der Puls komplett draussen ist.

Das Verhältnis der in diesem Zeiträumen gesammelten Ladungen in S1 und 
S2 ist dann ein Mass dafür, wie stark verzögert der Puls zurück gekommen 
ist. Und damit ist das ein Mass für die Entfernung, da ja die Laufzeit 
und der dabei zurückgelegte Weg über die Lichtgeschwindigkeit 
zusammenhängen.

von malek j. (soprano1983)


Lesenswert?

danke :)
Hat kinect ein TOF Kamera ?

von John D. (Gast)


Lesenswert?

Die jetzige: ja. Die frühere: nein (die hatte eine Art Muster auf die 
Szenerie projeziert und mit einer normalen, hochauflösenden Kamera 
betrachtet. Daraus wurde das 3D-Bild berechnet).

von malek j. (soprano1983)


Lesenswert?

meinst du mit jetzige kinect 2 oder kinect für Windows?

von malek j. (soprano1983)


Lesenswert?

könnt ihr den letzen Diagramm(Signalstärken über die Distanz ) erklären 
,und wie wie kommt dass D = S2/(S1+S2) ?

von Karl H. (kbuchegg)


Lesenswert?

Setup
1
Taktgeber -+->   L                 O
2
           |     E
3
           |
4
           +-->  S1 0
5
           +-->  S2 0
6
7
8
L  ... Lichtquelle
9
E  ... Empfänger ("Photozelle")
10
O  ... Objekt, zu dem die Distanz bestimmt werden soll
11
S1, S2  ... die Integrierer, die die empfangene Lichtmenge aufsummieren
12
13
14
Der Taktgeber steuert L, S1 und S2 an. Der Taktgeber erzeugt jeweils
15
einen Puls. Der Puls geht direkt zur Lichtquelle und sorgt dafür, dass
16
ein Lichtstrahl mit genau dieser Pulslänge erzeugt wird.
17
Gleichzeitig geht derselbe Puls an S1. Nur solange der Puls an seinem
18
Eingang anliegt, summiert S1 die Lichtmenge, die der Empfänger sieht.
19
Ein genau gleicher Puls, nur um eine Pulslänge verschoben, geht an S2. 
20
Wieder: S2 summiert nur dann die vom Empfänger gemeldete Lichtmenge auf,
21
wenn sein Puls vom Taktgeber anliegt.

der Taktgeber startet das ganze, in dem er mit dem Puls beginnt. 
Gleichzeitig starten daher S1 mit der Summierung dessen, was der 
Empfänger wahrnimmt und der Lichtstrahl macht sich auf den Weg
1
Taktgeber -+->   L *               O
2
  Puls     |     E
3
           |
4
           +-->  S1 0
5
           +-->  S2 0
da der Empfänger noch nichts detektiert, bleibt der Wert von S1 bei 0. 
Der Puls ist (noch lange) nicht zu Ende, die Lichtquelle leuchtet nach 
wie vor.
1
Taktgeber -+->   L **              O
2
  Puls     |     E
3
           |
4
           +-->  S1 0
5
           +-->  S2 0
1
Taktgeber -+->   L ***             O
2
  Puls     |     E
3
           |
4
           +-->  S1 0
5
           +-->  S2 0

Ich überspring jetzt ein paar Zeitschritte im Pico-Sekunden Bereich. Der 
Lichtstrahl ist immer länger geworden ....
1
Taktgeber -+->   L ****************O
2
  Puls     |     E
3
           |
4
           +-->  S1 0
5
           +-->  S2 0

... und trifft irgendwann auf das Objekt, von dem er reflektiert wird
1
Taktgeber -+->   L ****************O
2
  Puls     |     E                *
3
           |
4
           +-->  S1 0
5
           +-->  S2 0
1
Taktgeber -+->   L ****************O
2
  Puls     |     E               **
3
           |
4
           +-->  S1 0
5
           +-->  S2 0

Wieder lasse ich jetzt ein bischen Zeit aus. Der Lichtstrahl (die Lampe 
leuchtet immer noch), ist bereits auf dem Rückweg ...
1
Taktgeber -+->   L ****************O
2
  Puls     |     E         ********
3
           |
4
           +-->  S1 0
5
           +-->  S2 0

und erreicht irgendwann den Empfänger (die Lampe leuchtet immer noch!)
1
Taktgeber -+->   L ****************O
2
  Puls     |     E ****************
3
           |
4
           +-->  S1 0
5
           +-->  S2 0

Jetzt sieht der Empfänger das erste mal Licht. Da S1 immer noch scharf 
ist und der Empfänger etwas sieht, beginnt S1 damit, das zu summieren
1
Taktgeber -+->   L ****************O
2
  Puls     |     E ****************
3
           |
4
           +-->  S1 1
5
           +-->  S2 0
1
Taktgeber -+->   L ****************O
2
  Puls     |     E ****************
3
           |
4
           +-->  S1 2
5
           +-->  S2 0
1
Taktgeber -+->   L ****************O
2
  Puls     |     E ****************
3
           |
4
           +-->  S1 3
5
           +-->  S2 0
1
Taktgeber -+->   L ****************O
2
  Puls     |     E ****************
3
           |
4
           +-->  S1 4
5
           +-->  S2 0

... (Zeit übersprungen)
1
Taktgeber -+->   L ****************O
2
  Puls     |     E ****************
3
           |
4
           +-->  S1 228
5
           +-->  S2 0

Irgendwann ist für den Taktgeber der Puls fertig und er erklärt den 
ersten Puls für beendet. Dadurch passiert
* die Lichtquelle wird ausgeschaltet
* S1 hört mit summieren auf
* dafür klinkt sich S2 ein und beginnt zu zählen
1
Taktgeber -+->   L  ***************O
2
           |     E ****************
3
           |
4
           +-->  S1 228
5
           +-->  S2 1
1
Taktgeber -+->   L   **************O
2
           |     E ****************
3
           |
4
           +-->  S1 228
5
           +-->  S2 2
1
Taktgeber -+->   L    *************O
2
           |     E ****************
3
           |
4
           +-->  S1 228
5
           +-->  S2 3
1
Taktgeber -+->   L     ************O
2
           |     E ****************
3
           |
4
           +-->  S1 228
5
           +-->  S2 4

.... (Zeit übersprungen)
1
Taktgeber -+->   L            *****O
2
           |     E ****************
3
           |
4
           +-->  S1 228
5
           +-->  S2 56

.... (Zeit übersprungen)
1
Taktgeber -+->   L                *O
2
           |     E ****************
3
           |
4
           +-->  S1 228
5
           +-->  S2 137

.... (Zeit übersprungen)
1
Taktgeber -+->   L                 O
2
           |     E ************
3
           |
4
           +-->  S1 228
5
           +-->  S2 176

.... (Zeit übersprungen)
1
Taktgeber -+->   L                 O
2
           |     E *****
3
           |
4
           +-->  S1 228
5
           +-->  S2 230

.... (Zeit übersprungen)
1
Taktgeber -+->   L                 O
2
           |     E 
3
           |
4
           +-->  S1 228
5
           +-->  S2 272

In diesem Moment ist der Lichtstrahl komplett durch. Der Empfänger sieht 
nichts mehr, S2 hört ebenfalls mit zählen auf.

Bis dann irgendwann vom Taktgeber auch diese 2.te Messperiode als 
beendet erklärt wurde.


Die Lichtquelle war insgesamt 500 Einheiten lang eingeschaltet. Genau so 
lange war der Puls, der vom Taktgeber erzeugt wurde. Von diesen 500 
Einheiten wurden 228 von S1 detektiert und 272 von S2. Und aus diesem 
Verhältnis kann man errechnen, wie weit das Objekt entfernt ist. Ist es 
näher an der Lichtquelle, dann teilen sich die 500 so auf, dass mehr in 
S1 gezählt wird und weniger in S2 (weil ja der zurückkehrende Strahl 
viel früher bewirkt, dass S1 mit zählen anfängt; er hat ja den kürzeren 
Weg hin und zurück). Bzw. umgekehrt. Ist O weiter von L entfernt, dann 
beginnt S1 später mit zählen und erreicht daher einen kleineren Wert, 
während dafür S2 den größeren Wert registriert.
Wie auch immer - im Verhältnis von S1 zu S2, bzw. was gleichbedeutend 
ist: im Verhältnis von S1 zur Pulslänge, ist die Distanz enthalten und 
kann daraus errechnet werden.


Noch besser kann ich es nicht mit Worten erklären. Wenn du jetzt immer 
noch nicht verstanden hast, wie das funktioniert, dann muss ich passen, 
denn ich werde jetzt kein Simulationsprogramm schreiben, welches den 
ganzen Vorgang in einer Animation mit der Möglichkeit der 
Distanzvariation und dementsprechenden Laufzeitsimulationen/Animationen 
zeigt.

von Felix P. (fixxl)


Lesenswert?

malek jabir schrieb:
> könnt ihr den letzen Diagramm(Signalstärken über die Distanz ) erklären
> ,und wie wie kommt dass D = S2/(S1+S2) ?
Im Idealfall (keine Dämpfung über der Distanz) ist die Gesamtladung - 
also die Summe S1+S2 - immer gleich, die Verteilung aber je nach Distanz 
unterschiedlich.

Das Licht hat eine konstante Geschwindigkeit c, der Lichtpuls eine Länge 
t, das reflektierende Objekt ist D von der Kamera entfernt.

Ist die Zeit bis zum reflektierenden Objekt gleich Null (D = 0), kommt 
das Licht unmittelbar nach der Aussendung wieder am Sensor an und 
unmittelbar nach Ende des Lichtpulses kommt kein Licht mehr. In diesem 
Fall fließen also alle erzeugten Ladungsträger auf den Speicher S1, da 
in der Zeit, in der S2 gefüllt werden könnte, kein Licht erzeugt wird. 
=> S1 = 1, S2 = 0 => Rechnung: D = c*t/2 * 0/1 = 0

Ist die Zeit bis zum reflektierenden Objekt gleich einem Viertel der 
Pulsdauer (D = c*t/4), kommt das Licht, welches ja den Weg zweimal 
zurücklegen muss, genau zur Hälfte der Einschaltzeit von S1 an der 
Kamera an und der Lichpuls dauert bis zur Hälfte der Einschaltzeit von 
S2. Es fließen also gleich viele Ladungsträger auf S1 und S2 => S1 = S2 
= 0,5 => Rechnung: D = c*t/2 * 1/2 = c*t/4

Ist die Zeit bis zum reflektierenden Objekt gleich der halben Pulsdauer 
(D = c*t/2), kommt das Licht genau dann an der Kamera an, wenn der 
Speicher S2 mit der photoaktiven Schicht verbunden ist und alle 
Ladungsträger fließen auf S2. => S1 = 0, S2 = 1 => Rechnung: D = c*t/2 * 
1/1 = c*t/2

Für die Fälle dazwischen ergeben sich dann eben andere Verhältnisse 
S2/(S1+S2). Man erkennt an der Formel auch, dass Distanzen eindeutig nur 
im Bereich von 0 bis c*t/2 erfasst werden können, für größere Distanzen 
wiederholen sich die Messwerte.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.