INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

2D-Interpolation



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

06.02.2014, 12:58
Beitrag #1

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
2D-Interpolation
Hallo,
ich steh' auf dem Schlauch...

Ein PSD (Position Sensing Detector) liefert jeweils ein X- und Y-Signal, abhängig von der Position, wo ein Laserstrahl die Sensoroberfläche trifft.

Es handelt sich um folgenden Sensor:
http://www.lasercomponents.com/fileadmin...5_su24.pdf

Die Position soll in der Einheit mm ermittelt werden, d.h. es muss eine Skalierung bezogen auf die physikalischen Sensorabmessungen (hier: 45x45 mm, d.h. +- 22,5 mm) erfolgen.

Über einen Vorverstärker liefert der Sensor jeweils für die X- und Y-Richtung ein Signal zwischen -10V und + 10V, welche mit einer DAQ-Karte erfasst werden. Soweit so gut...leider ist der Sensor nicht linear, insbesondere zum Rand hin wir das Signal "schlechter". Theoretisch sollte bei linearem Verlauf folgendes gelten:

Sensormitte: X= 0 V, Y= 0 V, d.h. Pos. X = Pos. Y = 0 mm
linker Rand, Mitte: X = -10 V, Y= 0 V, d.h. Pos X = -22,5 mm, Pos. Y = 0 mm
rechter Rand, Mitte: X = 10 V, Y = 0V
obere Kante, Mitte: X = 0 V, Y = 10 V
untere Kante, Mitte: X = 0 V, Y = -10 V
linkes oberes Eck: X = -10V, Y = 10 V
rechtes unteres Eck: X = 10V, Y = -10 V
usw. usw.

Weil das aber nicht linear verläuft, soll über eine Interpolation der konkreten X-Y-Spannungs-Messwerte anhand von zuvor erstellten "Look-Up-Tables" der Positionswert ermittelt werden. Dazu würde der bestrahlende Laser z.B. über eine genaue Positionierung um bekannte Werte entlang der X- bzw. Y-Richtung verschoben. Zu jedem Positionswert wäre dann ein Spannungswert verfügbar, wie folgende Tabellen beispielhaft zeigen:
   

Ich weiß, es gibt das Interpolate 2D.vi, aber ich steige da mit den vielen Ein-/Ausgängen nicht durch...Kann mir da jemand weiterhelfen? Wie bekomme ich für ein konkretes XY-Spannungswerte-Paar die entsprechenden mm-Werte...siehe das angehängte (fast leere) VI mit den oben gezeigten Werten?

12.0 .vi  Beispieldaten_fuer_Interpolation.vi (Größe: 12,36 KB / Downloads: 255)


Gruß
Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.02.2014, 14:30
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.419
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: 2D-Interpolation
Hallo Achim,

- Warum hast du für X- und Y-Positionen jeweils 2D-Arrays? Reicht da nicht ein 1D-Array aus?
Bsp.:
Du hast da ein 2D-Array mit X-Positionen, die aber zeilenweise gleich sind. Das zugehörige Array mit den X-Spannungswerten ist aber zeilenweise verschieden. Wie ist da die Abbildungsfunktion zu? Warum habe ich bei identischen X-Positionen unterschiedliche X-Spannungen? Welche Bedeutung hat der Zeilenindex bei beiden Arrays?
Bei den Y-Arrays das gleiche, nur spaltenweise…
- Was sind die erwarteten Ausgangswerte? Momentan steht im VI bei "Messwert in mm" nur der selbe Wert wie in "Messwert in V"…

Das Interpolate2D erwartet ein einzelnes Z-2D-Array und zwei zugehörige X-/Y-1D-Arrays. Kannst du aus den beiden X- und Y-Messwerten einen eineindeutigen Z-Wert generieren?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.02.2014, 19:43
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: 2D-Interpolation
Habe das schon mal gemacht, heute ist es aber zu spät und morgen habe ich keine Zeit. Also wenn Du etwas Geduld hast..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.02.2014, 08:41 (Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2014 08:42 von Achim.)
Beitrag #4

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
RE: 2D-Interpolation
(06.02.2014 14:30 )GerdW schrieb:  - Warum hast du für X- und Y-Positionen jeweils 2D-Arrays? Reicht da nicht ein 1D-Array aus?

Also...für jede beliebige Stelle auf dem PSD kann man zwei Werte messen, einen für die X-Position und einen für die Y-Position.
Wenn man jetzt der Breite nach (also entlang der X-Achse) wandert, kann man man "viele" X-Spannungen messen. Wenn man das vertikal erweitert, misst man z.B. an der Oberkante eine X-Spannung, in der Mitte eine X-Spannung und an der Unterkante eine X-Spannung. Beliebig feine Zwischenschritte sind möglich. Und für jeden Schritt gibt es halt nicht nur die X-Spannung, sondern auch die Y-Spannung...

Ich hab hier nochmal ne kleine Tabelle gebastelt, die die Positionen auf der Sensoroberfläche angibt. Die roten Zahlen kennzeichnen jeweils die Mitte von X- und Y-Achse, d.h. auf der X-Achse werden in Richtung des rechten Rands positive Spannungen gemessen, in Richtung des linken Rands werden negative Spannungen gemessen. Genauso verhält es sich auf der Y-Achse, hier eben oben negativ, unten positiv. Das ist aber prinzipiell egal, es könnte auch zwischen null und Endwert gehen. Die zur Veranschaulichung farbig hinterlegten Felder gehören zusammen, d.h. das ist physikalisch die gleiche Stelle auf der Sensorfläche. Konnte ich das jetzt rüber bringen?

   

Für jeden Punkt gibt es eben jeweils einen X-Spannung und eine Y-Spannung. Es ist aber leider so, dass die X-Spannungen nicht spaltenweise gleich sind, d.h. für jeden X-Position wird nicht über die gesamte Sensorhöhe (von Oberkante zu Unterkante) die gleiche Spannung gemessen. Und auch für jede Y-Position wird nicht über die gesamte Sensorbreite (von linkem zu rechtem Rand) die gleiche Spannung gemessen. Die Spannungen sind zwar pro Spalte bzw. pro Zeile recht nah beieinander, aber eben nicht gleich. Und wenn ich es richtig verstanden habe, erwartet das Interpolate2D.vi genau das...

Wobei ich in der Beschreibung schon nicht kapiere, was die "dependent variable" und die "independent variables" sind, und auch was im Z-Array stehen muss...


@Lucki: Es ist (noch) nicht so akut, ich würde mich aber freuen wenn du da noch Informationen für mich hättest..

Gruß
Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.02.2014, 08:53 (Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2014 08:55 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.419
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: 2D-Interpolation
Hallo Achim,

was ist denn das für ein schei** Sensor? Smile

Nun, dann halt von Hand:
- Anhand deiner X-/Y-Spannungsmesswerte kannst du auf alle Fälle schon mal die in Frage kommenden Zeilen und Spalten für die Interpolation eingrenzen.
- Du solltest jetzt 4 Werte haben, je zweimal einen Index für X- und Y-Richtung (die um den Messwert herum liegenden Stützpunkte).
- Damit dann eine einfache bilineare Interpolation "von Hand" durchführen, um jeweils X- und Y-Richtung zu verfeinern
- jetzt hast du jeweils eine Indexangabe (inkl. Nachkommastellen), mit denen du dank Interpolate1DArray auf die X-/Y-Position schließen kannst.

Hab gerade kein LV2013 zur Hand - und keine Lust, das jetzt ohne deine VI-Vorlage zu programmieren…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.02.2014, 11:48
Beitrag #6

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: 2D-Interpolation
Habe jetzt mal, ohne groß nachzudenken, Dein vorbildlich aufbereitetes VI verdrahtet. Schau mal nach wie es läuft, vielleicht habe ich schon im ersten Durchlauf einen Glückstreffer gelandet. Big Grin
Gruß Ludwig

13.0 .vi  Beispieldaten_fuer_Interpolation-1.vi (Größe: 16,3 KB / Downloads: 239)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.02.2014, 12:35
Beitrag #7

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
RE: 2D-Interpolation
Hi Lucki,
ich komme leider erst frühestens morgen dazu, das anzuschauen...Danke aber schon mal für deine Hilfe!

Ich melde mich wieder...

Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.02.2014, 15:18 (Dieser Beitrag wurde zuletzt bearbeitet: 10.02.2014 15:37 von Lucki.)
Beitrag #8

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: 2D-Interpolation
Habe mir die Daten noch mal angeschaut. Die OPs zur Positionsmessung haben einen Offsetfehler: Die Endspannungen betragen nicht -5V/+5V, sondern eher -4.99V/5.01V. Berücksichtigt man das, dann ist der maximale Fehler der Positionsspannung nicht mehr als 0.01V. (Entspr. Linearitätsfehler 0.1%, bezogen auf die Spanne). Um einen Fehler in dieser Preislage zu korrigieren, hätten die Spannungen in den Tabellen auf drei Stellen nach dem Komma gemessen werden müssen. So wie jetzt können die gelegentlichen 0.01V Abweichung ebenso Messfehler sein, über die Linearität sagt das nichts mehr aus. So wie die Datenlage jetzt ist macht es überhaupt keinen Sinn, mit einem großen Instrumentarium den Linearitätsfehler korrigieren zu wollen. Die Positionen ließen sich auf 0.02mm genau einfach mit dieser Formel berechnen:
   
Wenn Dir das aber nicht reicht, dann müßtest Du die Tabellen noch mal mit höherer Genauigkeit erstellen.

PS: Seit mehr als 8 Jahren beim LVF dabei und Auto immer noch kaputt wie am ersten Tag - was soll nur mal aus Dir werden? Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.02.2014, 11:57 (Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2014 12:00 von Achim.)
Beitrag #9

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
RE: 2D-Interpolation
(10.02.2014 15:18 )Lucki schrieb:  Die Positionen ließen sich auf 0.02mm genau einfach mit dieser Formel berechnen:
...
Wenn Dir das aber nicht reicht, dann müßtest Du die Tabellen noch mal mit höherer Genauigkeit erstellen.

Ouhouhou...immer langsam!

Wie ich schon im ersten Post erwähnt habe, sind das "Beispieldaten"...die haben mit den realen Messwerten "nichts" zu tun! Ich habe die programmatisch mit nem addierten Zufallsgenerator erzeugt! Ich habe keine realen Daten, weil wir die noch nicht mit ner steuerbaren Positionierung des Lasers erzeugen können! Das ist momentan ein Gedankenspiel, es muss noch einiges geklärt werden...insbesondere wer die Kosten für den ganzen "Aufriss" trägtConfused

Es ging mir nur darum, eine "allgemein gültige" Methode zu haben, wie die Daten für eine Koordinate (X bzw. Y) zu behandeln sind. Wir haben uns jetzt auch nochmal selber was überlegt...irgendwie habe ich da auch ein bisschen was durcheinander geworfen. Ich habe ja X- und Y-Daten...die sind aber quasi unabhängig voneinander zu behandeln. Das X-2D-Array bildet sozusagen eine "Fläche" ab, ebenso das Y-Array. Aber diese beiden Flächen liegen irgendwo "im Raum", und haben nichts miteinander zu tun. D.h. jede Fläche kann getrennt betrachtet werden, die Interpolation eines X-Zwischenpunkts, der irgendwo zwischen den X-Stützpunkten der Fläche liegt, ist völlig unabhängig von den Y-Stützpunkten.

Leider ist es so, dass das "Interpolate 2D.vi" davon ausgeht, dass die X-Stützpunkte pro Spalte (Y-Stützpunkte pro Zeile) immer gleich sind, d.h. die "Fläche" jeweils durch eine Schar paralleler Kurven gebildet wird, die allle identisch aussehen, d.h. für jede X-Position bzw. jede Y-Position über die gesamte Breite (X) bzw. Höhe (Y) des Sensors den gleichen Verlauf haben.

Beispiel:
Kurve X=1...Y1 = 1,00 / Y2 = 1,10 / Y3 = 1,11 / Y4 = 0,99 / etc.
Kurve X=2...Y1 = 1,00 / Y2 = 1,10 / Y3 = 1,11 / Y4 = 0,99 / etc.
Kurve X=3...Y1 = 1,00 / Y2 = 1,10 / Y3 = 1,11 / Y4 = 0,99 / etc.

Bei uns ist es aber so, dass die Kurven natürlich auch parallel laufen, aber unterschiedliche Verläufe (Beträge pro Position) haben.

Beispiel (keine realen Daten!):
Kurve X=1...Y1 = 1,00 / Y2 = 1,10 / Y3 = 1,11 / Y4 = 0,99 / etc.
Kurve X=2...Y1 = 1,10 / Y2 = 1,00 / Y3 = 0,99 / Y4 = 1,10 / etc.
Kurve X=3...Y1 = 0,99 / Y2 = 0,99 / Y3 = 0,97 / Y4 = 1,15 / etc.


Wie verhackstückt man jetzt also diese Fläche mit nem fertigen Interpolations-VI? Ich hab keine Ahnung...

Was wir uns überlegt haben ist folgendes...erläutert am Beispiel der X-Daten: Wir interpolieren die Daten jeder X-Position-Spalte (also jeweils ein 1D-Array) mit dem "Polynomial Interpolation.vi". Damit kriegen wir dann jeweils pro Spalte einen Interpolierten Positionswert entsprechend der gemessenen Spannung. Über die gleichzeitige Kenntnis des Y-Spannungswerts kann man dann herausfiltern, zwischen welchen beiden Spalten bzw. zwischen welchen der interpolierten X-Werte der gesuchte Zwischenwert liegt. Jetzt kann man noch schauen, an welcher Y-Stützstelle der gemessene Y-Wert näher im Verhältnis liegt, und kann so die beiden gefundenen X-Werte entsprechend prozentual gewichten und die Summe der gewichteten Werte dann durch zwei teilen. Soweit die Theorie...ob das "klug", "vernünftig" oder "sinnvoll" ist? Hm...ich könnte mir aber vorstellen, dass da was "hübsches" rauskommt, und das es dann auch mal genug ist mit der "Näherung". Es werden in diesem Versuch für die praktische Anwendung sowieso schon einige Annahmen beim Versuchsaufbau gemacht, die selbst eine recht große Ungenauigkeit verursachen, die keiner irgendwie mathematisch berücksichtigt.


(10.02.2014 15:18 )Lucki schrieb:  PS: Seit mehr als 8 Jahren beim LVF dabei und Auto immer noch kaputt wie am ersten Tag - was soll nur mal aus Dir werden? Big Grin
BlinkBeerBlink

Gruß
Achim

PS: Ich schau mir jetzt mal dein VI vom letzten Post an...

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.02.2014, 12:32
Beitrag #10

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
RE: 2D-Interpolation
(08.02.2014 11:48 )Lucki schrieb:  Habe jetzt mal, ohne groß nachzudenken, Dein vorbildlich aufbereitetes VI verdrahtet. Schau mal nach wie es läuft, vielleicht habe ich schon im ersten Durchlauf einen Glückstreffer gelandet. Big Grin

Hm...ich weiß nicht...wie ich schon geschrieben habe, setzt das VI voraus, dass jeweils alle Spalten bzw. Zeilen für die Interpolation gleich aussehen. Das ist aber nicht der Fall! Bei ungleichen Zeilen bzw. Spalten benutzt das VI jeweils nur die erste Spalte und Zeile, d.h. die folgenden werden gleichgesetzt.

Wenn man nämlich anstelle von "Interpolate 2D.vi (2D X, Y)" (dein Beispiel) die "Interpolate 2D.vi (1D X, Y)"-Variante wählt und nur die erste Zeile der X-Spannungen und die erste Spalte der Y-Spannungen anschließt, kommt das gleiche Ergebnis raus...

Es bleibt also die Frage, wie mit ungleichen Spannungszeilen bzw. Spannungsspalten umzugehen ist.

Gruß
Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  2D Interpolation LabViewPete 3 3.601 18.08.2015 15:40
Letzter Beitrag: GerdW
  Spline Interpolation LabViewPete 1 3.326 18.08.2015 11:21
Letzter Beitrag: GerdW
  Kennlinie Abfahren mittels Linearer Interpolation David_Lab 15 11.468 24.02.2014 12:18
Letzter Beitrag: jg
Sad 2d Scattered Interpolation mufifinA 3 3.582 30.11.2012 09:09
Letzter Beitrag: GerdW
  Interpolation 1d einfache Werte Maxens 5 6.296 14.10.2011 08:03
Letzter Beitrag: GerdW
  Numerische - Interpolation Theo-Technic 5 4.937 13.09.2011 13:44
Letzter Beitrag: GerdW

Gehe zu: