Normalenvektor

  • Hallo Roboterprogrammierer, :hilfe:
    ich habe eine Frage, kann man wenn nur ein Normalenvektor eingegeben ist, die Orientierung der Fläche ausrechnen?
    Wenn Ja nach welcher Methode?
    Vielen Dank

  • ANZEIGE
  • Was hat das mit Robotern zu tun?
    Was für ein Normalenvektor ist da wo eingegeben??


    Wenn ich mich recht erinnere, dann gibt doch genau der Normalenvektor die Orientierung/Lage der Fläche vor. Was soll da noch ausgerechnet werden?

  • Also ich kenne niemanden der Roboter mit Vektoren programmiert. Was hast Du denn da vor?


    Und ich gebe Hermann recht, der Vektor beschreibt schon die Orientierung der Fläche.

  • Ich könnte mir denken worum es geht, sowas kommt z.B. beim Import von CAD-Daten vor. Da gibt es ein Format wo Punkte als X,Y,Z und Richtungsvektor abgespeichert werden (irgendeine alte Norm vom Automobilverband). Daraus lassen sich keine vollständigen Roboterpositionen bilden, man hat zwar sechs Zahlen, aber es fehlt die Orientierung der 6. Achse des Roboters. Die muss man sich dann von einer bekannten Position klauen.

  • Guten Morgen an Alle und vielen Dank für schnelle Tipps. :danke:
    Allerdings ein Beispiel (3 Positionen, diese Flächen befinden sich in einem Koordinatensystem !):
    XNOM YNOM ZNOM UNOM VNOM WNOM
    -1.374094 39.270000 1.464611 -0.866025 0.500000 0.000000
    -1.374094 3.570000 1.948018 0.819152 0.000000 -0.573576
    -1.374094 1.190000 1.464611 -0.409576 -0.709406 -0.573576


    Xnom, Ynom un Znom stehen für Flächenschwerpunkt in mm, soweit ist klar.
    Aber Unom,Vnom und Wnom stehen für Normalenvektoren der Fläche. Aber welche Orientierungen haben diese Flächen wie kann ich diese in Quaternionen bzw. eulir. Winkeln umwandeln? :nocheck:
    Mehr sind keine weitere Angaben gegeben.
    Vielen Dank

  • Ja, das ist so ein ähnliches Format wie ich meine, jeweils ein Punkt und eine Orientierung.


    Manche Robotersimulationsprogramme können sowas importieren (EasyRob z.B.), das Format wird da z.B. als X,Y,Z,I,J,K bezeichnet. Für den Winkel, der sich nicht festlegen lässt, wird da meist ein beliebiger Wert angenommen. Die so erzeugten Positionen muss man dann noch nachbearbeiten.


    Wenn du es selber machen willst, vielleicht hilft das hier
    http://stackoverflow.com/quest…on-vector-to-euler-angles




    Also ich kenne niemanden der Roboter mit Vektoren programmiert. Was hast Du denn da vor?


    Z.B. diverse Automobilzulieferer
    http://de.wikipedia.org/wiki/VDA-FS

    Einmal editiert, zuletzt von Urmel ()


  • Gibt es Programme


    Wie gesagt, manche Offline Programmiersysteme können das.



    oder normale Formeln mit Hilfe deren ich mein Problem lösen kann?


    So in etwa wie bei dem C++ Fetzen in dem Link muss man da schon vorgehen.


    Man berechnet Winkel zwischen Koordinatensystemachsen und dem Richtungsvektor, daraus und den x,y,z Werten eine Transformationsmatrix, aus der dann eine Roboterposition.


    Mit Quaternionen und ABB-Positionen gibt es sicher noch einen direkteren Weg, aber weder mit Quaternionen noch mit ABB kenne ich mich so richtig gut aus.

  • Um Eulerwinkel in Quaternions umzurechnen gibt es bei ABB eine fertige Funktion: OrientZYX. Ist in der Doku gut beschrieben.
    Wie man jetzt allerdings von U V W auf die Winkel kommt kann ich auch nicht sagen oder sind das schon die Winkel? Sieht mir aber eher nach was normierten aus, weil alles kleiner 1. :denk:
    Vielleicht die Werte mit 360 multiplizieren. Ob das dann sinnvolle Werte sind mußt Du halt mal schauen.


    Gruß
    Stromer

  • Es ist ein Einheitsvektor (also mit Länge 1), der die Richtung im Bezugskoordinatensystem angibt.


    Als zusätzliche Vektoren nimmt man z.B. die Achsen dieses Koordinatensystems. Dann hat man mehrere Vektoren, zwischen denen man die Winkel berechnen kann. So kommt man dann zu Eulerwinkeln, man muss nur dabei aufpassen, was man tut, weil es ja mehrere Arten Eulerwinkel gibt.


    Aber kommt man nicht direkt vom Richtungsvektor und z.B. der Z-Achse des Koordinatensystems zu einem Quaternion ? Kreuzprodukt von Vektor und Z-Achse gibt die Drehachse und den Winkel zwischen beiden kann man auch bestimmen.

  • Vielleicht steh' ich voll auf dem Schlauch :kopfkratz:
    Aber ich weiß immer noch nicht was mit der Fläche im Roboter gemacht werden soll :huh:


    Werkobjekt reinlegen?
    Punkte darauf abfahren?
    Ein Glas darauf abstellen? :mrgreen:
    Oder soll sie geputzt werden? :mrgreen:
    Je nach Aufgabe wird es sicherlich etwas unterschiedliche Lösungsansätze geben.

  • Viel hat der Fragesteller ja nicht verraten. Aber, bis auf das Putzen der Fläche, führen alle möglichen Aufgaben zu dem gleichen Problem: Wie kann man dieses Punkt + Flächennormale Format in eine Roboterpositionen umwandeln.


    Sowas in der Art hatte ich jetzt schon mehrfach von Kunden, so in der Art "Der Roboter soll diese Punkte als Position anfahren". Auch nach Rücksprache mit den Entwicklern der Offline Software kamen wir zu der Erkenntnis, dass das nicht eindeutig ist. Was aber dem Kunden meist egal ist, weil "Das ist VDA-Standard".


    Was man machen kann, kann ich einfach in C++ zeigen:


    Man kann ein Quaternion (alternativ eine Rotationmatrix) aus dem Flächennormal und einer Koordinatenachse bilden. Damit und mit einer Ausgangsroboterposition kann man den TCP zu dem Punkt bringen, in der Orientierung des Normalenvectors (meist auch in die entgegengesetzte Richtung, also um 180 Grad verdreht, weil man ja mit der Werkzeugspitze an den Punkt will).


    Von welcher Koordinatenachse man ausgeht und welche Handstellung (6. Achse) man nimmt, ist beliebig. Die Lösung ist nicht eindeutig.

    Einmal editiert, zuletzt von Urmel ()

  • Moin an Alle,
    vielen Dank für Tipps. :danke:
    1. Wofür wird es angewendet? => Die Flächen sollen mit dem Roboter gepuzt werden.


    Also ein reales Model (galvanisches Modell) wird mit Camera vermessen, daraus ergeben sich folgende Punkten mit Flächenschwerpunkt und Flächennormale, die aufgelistet sind, später werden diese Punkte vom Roboter angefahren und geputzt.
    Aufgabe: Anhand dieser Liste wird ein automatisches Roboterprogramm erzeugt.


    Wer kann mir in Rapid ! Die Orientierung für den ersten Punkt berechnen. Bitte Bitte mit Beispiel und Erklärung wie für Dummis
    => XNOM = 0; YNOM = 28,559999; ZNOM = 1,471807; UNOM = -0,409576; VNOM = 0,709406; WNOM = -0,573576
    => Eulerische Winkel X = xx ° Y = yy ° Z = zz °

    Vielen Dank :danke:

  • Hallo katler,


    aus meiner Mathe Kenntnisse :genau: :


    aus der Definition vom Normalverktor ist es so, dass der Vektor zu der Fläche immer 90° hat, (zwei weiteren Werten =0°), d.h. wenn die Fläche in der Mitte der kart. Koordinatensystem liegt, hast du 3x0°. Wird die Fläche verdreht/verschoben, dann ist der Normalvektor immer noch zu der Fläche mit 1x90° und 2x0°, aber zum kart. Koordinatensystem gibt es dann anderen, als 3x0° Werten + Verschiebung in x,y,z.
    In deinem letzten Beispiel sind diese Werte für diese Verschiebung in mm/Verdrehung in ° bezogen auf ein System.
    Ich glaube, es ähnelt sich zu OFrame oder UFrame in RAPID. Diese Werte sind dafür da, um nur vorhandenes Programm räumlich anzupassen, oder?


    Ich hoffe, das kann dir helfen. :)

  • Anscheinend beschreiben diese Vektoren zusammen die Form einer Fläche, ungefähr nach diesem Prinzip:


    Stellt euch eine Kühlerhaube vom Auto vor, das ist ja eine gewölbte Fläche. Wenn man da jetzt gleichmäßig Sandkörner draufstreut, kann man die Form der Fläche durch die Lage der Sandkörner darstellen.


    Jedes Korn hat eine Position im Raum, das sind die X,Y,Z Koordinaten in dem Format oben. Außerdem liegen die Körner auf der gewölbten Fläche ja alle etwas anders gedreht. Dafür sind die Vektoren da, die zeigen für jedes Korn an, wo die Richtung senkrecht zur Fläche an dieser einen Stelle ist. So beschreiben die Punkte, die der Fragesteller hat, die Form der Fläche, die geputzt werden soll.


    Es geht also anscheinend darum, im Roboterprogramm diese Punkte zu lesen und daraus eine Bahn mit dem Roboterwerkzeug in der richtigen Orientierung zu bilden.


    Für Industrieroboter-Programmierung kein ganz triviales Problem. Ich würde den Umweg über einen Computer vorziehen, auch wenn ich nicht weiß, was auf dem ABB alles geht.

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden