mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Berechnung von x,y,z Koordinaten (bei 3D Scanner)


Autor: Malte (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist schon ein fehler drin:

z=l*sin(phi) statt z=r*sin(phi)

grüße

Autor: Malte (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, dürfte ich einen Fehler gemacht haben:

die Höhe z ist ja nicht von Deinem beta abhängig (also auch nicht von
phi)

sonst dürfte es aber stimmen

Autor: Malte (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.