Berechnung von x,y,z Koordinaten (bei 3D Scanner)

Gast #162118
Lesenswert?

Hallo,
ich versuche schon eine Weile anhand der Position zweier Servomotoren,
welche einen Distanzsensor in zwei Ebenen drehen können, und dem
Entfernungswert(l) des Distanzsensors die x,y, und z Koordinaten im
Verhältnis zu dem Sensor zu berechnen.
Wenn beide Servos Mittelstellung haben, dann müssten x,y = 0 und z die
direkt vom Sensor gelesene Entfernung sein.
Die Servos lassen sich von -70° bis 70° drehen und mit Werten von 1 bis
255 Positionieren.
Die Winkel müssten sich so berechnen lassen:
alpha = (140°/254)*servo1-70°
beta = (140°/254)*servo2-70°
Mit nur einem Servo (2D) müsste sich z wie folgt ausrechen lassen:
z = cos(alpha)*l
Aber beim 3D Raum stehe ich irgendwie auf dem Schlauch.
Zur Veranschaulichung habe ich mal ein Bild als Anhang beigefügt.
Weiß jemand Rat?
Angehängte Dateien:
Gast #162119
Lesenswert?

Hallo,

hilft Dir das weiter?

relativer Abstand vom Sensor zum Objekt:

x^2+y^2+z^2 = l^2

x, y, z in Polarkoordinaten:

x=l*sin(theta)*cos(phi),
y=l*sin(theta)*sin(phi),
z=r*sin(phi),

wobei theta der Winkel gegenüber der z-achse ist und phi der winkel zur
x-Achse.

Jetzt musst Du noch eine Funktion für die Winkel in Abhängigkeit von
der Servostellung finden.

Hoffentlich stimmt's.

Grüße,
Peter
Gast #162121
Lesenswert?

Danke für deine Antwort.
>wobei theta der Winkel gegenüber der z-achse ist und phi der winkel
zur
>x-Achse.
Dies verstehe ich nicht so ganz. Theta ist demnach der Winkel zwischen
Servo 1 und der z Achse, das wäre dann mein als alpha angegebener
Winkel und demnach müsste dann phi der Winkel von Servo2 mit der
x-Achse angeben?
Aber wenn ich z=l*sin(phi) lese und z=l bei alpha und beta = 0° gilt,
so müsste demnach in phi beide Winkel irgendwie enthalten sein?
Angehängte Dateien:
Gast #162123
Lesenswert?

So, nachdem ich mir einen weiteren halben Tag trotz Hilfe von Peter den
Kopf darüber zerbrochen hatte ohne eine Lösung zu finden, habe ich es
mal mit Vektorrechnung versucht. Und siehe da nach zwei Stunden
rechnete der AVR die richigen Werte aus. :-D

Ich nehme erstmal z = 1 an. Da (tan alpha) = x/z und (tan beta) = y/z,
habe ich das dann in einen Vektor geschrieben (tan alpha;tan beta;1)
Daraus berechne ich dann den Einheitsvektor und multipliziere diesen
danach mit l. So ergeben sich dann x,y und z. Die berechneten x,y,z
Werte stimmen mit denen wenn ich mit dem Lineal nachmesse überein g

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren