lossi
21.10.2010, 21:18
Hallo,
ich habe ein Problem und hoffe, dass Ihr mir hier weiterhelfen könnt.
Ich habe an der Uni zur Aufgabe einen Roboter zu kalibrieren (es handelt sich dabei um einen µKRoS316 - Modell ist momentan aber erstmal nicht so wichtig).
Zur Kalibrierung des Roboters wurden Messungen durchgeführt, wo die Achswinkel aller 6 Achsen (in Inkrementen) und die Pose des Endeffektors gemessen wurden.
Eine Pose i in Achswinkel sieht bspw. so aus:
q_i =(187999 -353013 -362021 -29000 88599 -530023)
Die Pose liegt dabei in folgender Form vor: Die 0. Messung ist im KS des Messgeräts angegeben. Diese Pose wird als BasisKS verwendet. Alle weiteren Posen werden auf dieses BasisKS bezogen. Die Pose wird dabei als Zeilenvektor gespeichert. Die ersten 3 Elemente sind die x-, y- und z-Koordinaten der akutellen Pose vom BasisKS aus gemessen in mm. Die letzten 3 Elmente sind die Verdrehwinkel in °.
X_i=(1.1151996190 0.9325382534 0.1356250711 1.5027828958 0.1223602819 -13.1178048950)
Dazu sei noch angemerkt, dass die Pose in anderer Weise gemessen wird (als homogene Matrix mit Positionvektor im MessgerätKS und den drei Vektoren zur Beschreibung der Orientierung). Aus der o.g. Form soll die Kalibrierung allerdings ablaufen.
Nun sollen diese Soll- und Ist-Posen miteinander verknüpft werden. Ein Kollege hat vor einiger Zeit dazu in MATLAB ein kleines Skript geschrieben, mit dem die Koeffizienten eines Polynoms bestimmt werden sollen, mit dem aus den Achswinkeln die kalibrierte Pose berechnet werden kann (so hab ich das zumindest verstanden). Also X = f(q)
Das Skript besteht aus mehreren Teilen, der aber wohl entscheidende Teil (den ich auch nicht verstehe) macht dabei folgendes. Zunächst werden alle Achswinkel eingelesen. Das ist quasi eine Matrix mit 6 Spalten (für jeden Achswinkel eine) und n Zeilen für die n Messungen. Im Skript wird nun eine neue Spalte (ganz links) eingefügt, die nur aus Einsen besteht, alle anderen Spalten rücken eine Spalte nach rechts. Die Matrix nennen wir mal A.
Es wird nun folgendes berechnet:
A_temp = A^T * A > x = (A_temp)^-1 * A^T * X
X ist hierbei ein Vektor, der aus allen x-Elementen der Posen besteht (also von X_i oben die erste Spalte). Noch etwas zur Notation:
A^T = transponiert von A.
A^-1 ist die inverse von A.
Mein Problem ist nun: Ich weiß nicht so ganz, warum diese Operation durchgeführt wird. Das ist der Knackpunkt bei dem ganzen Skript und ohne das so richtig verstanden zu haben, bringt es mir irgendwie nichts.
Ich hoffe, Ihr versteht mein Problem (falls es Fragen gibt, immer raus damit) und das hier evtl ein Kalibrier-Profi ist, der mir weiterhelfen kann - bin noch relativ neu in der ganzen Thematik!
Besten Dank schonmal im voraus.
Gruß
lossi
P.S. Der Kollege ist leider nicht mehr vefrügbar, sonst hätte ich den schon gefragt. ;)
ich habe ein Problem und hoffe, dass Ihr mir hier weiterhelfen könnt.
Ich habe an der Uni zur Aufgabe einen Roboter zu kalibrieren (es handelt sich dabei um einen µKRoS316 - Modell ist momentan aber erstmal nicht so wichtig).
Zur Kalibrierung des Roboters wurden Messungen durchgeführt, wo die Achswinkel aller 6 Achsen (in Inkrementen) und die Pose des Endeffektors gemessen wurden.
Eine Pose i in Achswinkel sieht bspw. so aus:
q_i =(187999 -353013 -362021 -29000 88599 -530023)
Die Pose liegt dabei in folgender Form vor: Die 0. Messung ist im KS des Messgeräts angegeben. Diese Pose wird als BasisKS verwendet. Alle weiteren Posen werden auf dieses BasisKS bezogen. Die Pose wird dabei als Zeilenvektor gespeichert. Die ersten 3 Elemente sind die x-, y- und z-Koordinaten der akutellen Pose vom BasisKS aus gemessen in mm. Die letzten 3 Elmente sind die Verdrehwinkel in °.
X_i=(1.1151996190 0.9325382534 0.1356250711 1.5027828958 0.1223602819 -13.1178048950)
Dazu sei noch angemerkt, dass die Pose in anderer Weise gemessen wird (als homogene Matrix mit Positionvektor im MessgerätKS und den drei Vektoren zur Beschreibung der Orientierung). Aus der o.g. Form soll die Kalibrierung allerdings ablaufen.
Nun sollen diese Soll- und Ist-Posen miteinander verknüpft werden. Ein Kollege hat vor einiger Zeit dazu in MATLAB ein kleines Skript geschrieben, mit dem die Koeffizienten eines Polynoms bestimmt werden sollen, mit dem aus den Achswinkeln die kalibrierte Pose berechnet werden kann (so hab ich das zumindest verstanden). Also X = f(q)
Das Skript besteht aus mehreren Teilen, der aber wohl entscheidende Teil (den ich auch nicht verstehe) macht dabei folgendes. Zunächst werden alle Achswinkel eingelesen. Das ist quasi eine Matrix mit 6 Spalten (für jeden Achswinkel eine) und n Zeilen für die n Messungen. Im Skript wird nun eine neue Spalte (ganz links) eingefügt, die nur aus Einsen besteht, alle anderen Spalten rücken eine Spalte nach rechts. Die Matrix nennen wir mal A.
Es wird nun folgendes berechnet:
A_temp = A^T * A > x = (A_temp)^-1 * A^T * X
X ist hierbei ein Vektor, der aus allen x-Elementen der Posen besteht (also von X_i oben die erste Spalte). Noch etwas zur Notation:
A^T = transponiert von A.
A^-1 ist die inverse von A.
Mein Problem ist nun: Ich weiß nicht so ganz, warum diese Operation durchgeführt wird. Das ist der Knackpunkt bei dem ganzen Skript und ohne das so richtig verstanden zu haben, bringt es mir irgendwie nichts.
Ich hoffe, Ihr versteht mein Problem (falls es Fragen gibt, immer raus damit) und das hier evtl ein Kalibrier-Profi ist, der mir weiterhelfen kann - bin noch relativ neu in der ganzen Thematik!
Besten Dank schonmal im voraus.
Gruß
lossi
P.S. Der Kollege ist leider nicht mehr vefrügbar, sonst hätte ich den schon gefragt. ;)