Hallo Roboterprogrammierer,
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
Normalenvektor
- katler
- Erledigt
-
-
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.
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.573576Xnom, 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?
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 -
Hallo Urmel,
"Wenn du es selber machen willst, vielleicht hilft das hier
http://stackoverflow.com/quest…on-vector-to-euler-angles"
Das ist alles schön und gut, für diejenige die das verstehen. Ich konnte da nichts verstehen. Gibt es Programme oder normale Formeln mit Hilfe deren ich mein Problem lösen kann?
Vielen Dank -
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.
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
Aber ich weiß immer noch nicht was mit der Fläche im Roboter gemacht werden sollWerkobjekt reinlegen?
Punkte darauf abfahren?
Ein Glas darauf abstellen?
Oder soll sie geputzt werden?
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:
C
Alles anzeigen#include "stdafx.h" #include "Eigen\Dense" #include "Eigen\Geometry" using namespace Eigen; int _tmain(int argc, _TCHAR* argv[]) { // Orientierung eines der Punkte aus dem Posting Vector3d flaeche(-0.866025, 0.500000, 0.000000); // Die Z-Achse des Koordinatensystems Vector3d achse = Vector3d::UnitZ(); // Das Quaternion Quaterniond q = Quaterniond::FromTwoVectors(achse, flaeche); return 0; }
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.
-
Moin an Alle,
vielen Dank für Tipps.
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 -
Ok, ich gebs zu, auch das Putzen führt zum gleichen Problem.
Die Theorie habe ich ja geliefert, mangels ABB Kenntnissen müssen es andere umsetzten. Im Zweifelsfall die Quellen des oben verwendeten FromTwoVectors ansehen. Die in dem obigen Progrämmchen verwendete C++ Mathebibliothek gibt es hier:
http://eigen.tuxfamily.org/index.php?title=Main_Page -
Hallo katler,
aus meiner Mathe Kenntnisse :
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.
-
Warum willst du das alles auf Roboterebene umrechnen? Kannst du dir keine Daten aus einem aktuellen CAD-Programm besorgen?
Buschmann
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