Hallo,
hier mal eine kurze Frage:
Ich habe ein Koordinatensystem eingerichtet und einige Positionen darauf geteacht. Ich möchte nun das ganze System um den Nullpunkt verschieben und verdrehen.
Mit Mframe geht das generell, aber man benötigt 3 komplette Koordinatenpunkte (ORG, XX,XY). Ich möchte aber gerne das Koordinatensystem um den Punkt ORG verschieben und verdrehen.
Ich bekomme zum Beispiel aus Halcon Verschiebewerte im Format X,Y,Z-Winkel A,B,C. Und diese beziehen sich immer auf den Nulpunkt des Koordinatensystems
Hat da einer schon Erfahrung mit gemacht?
Mir freundlichen Gruß
Fallon
HP20 mit NX100, Koordinaten / Nestverschiebung
- fallon
- Erledigt
-
-
Hallo,
das habe ich soeben selber programmieren müssen.
Ist eigentlich kein großes Problem.Du bekommst ja die Daten von einer Kamera oder so.
Diese schreibst du in eine P-Var. Also der ORG Wert
Jetzt legst du 2 weitere P-Vars an. Der XX und der XY WertJetzt schreibst du noch 2 andere P-Vars. Eine Differenz für XX und eine für XY.
In der XX ist nur der Wert 100 in X enthalten.
In der XY ist nur der Wert 100 in Y enthalten.Jetzt schreibst du zunächst den XX Wert auf den ORG Wert und machst das auch für den XY Wert.
Jetzt hast du 3 gleiche P-Vars.
Nun rechnest du per MULMAT auf den XX P-Var die Diff XX P-Var.
Nun rechnest du per MULMAT auf den XY P-Var die Diff XY P-Var.
Jetzt hast du deine ORG / XX / XY P-Vars mit dem Versatz.
Mit MFRAME erzeugst du jetzt dein U-FRAME.
Deine Positionen / Programme kannst du dann um das U-FRAME shiften!
FERTIG !Anbei mein Code:
P041=ORG
P042=XX
P043=XY
P016= Diff XY
P017= Diff XX
P044= Zielpos'Userframe erstellen
SET P042 P041
SET P043 P041
MULMAT P042 P041 P016
MULMAT P043 P041 P017
'Userframe 4 (Bolzen) berechnen
'im Bezug zu den Basiskoordinaten
MFRAME UF#(4) PX041 PX042 PX043...
SFTON P044 UF#(4)
SFTOFF
...Viel Glück !!!
-
Hallo,
danke für die Antwort, aber irgendwie habe ich da noch einige Verständnisprobleme:
Gehen wir davon aus das ich eine Verschiebung von x=10, Y=25 und rx 90 Grad habe.
Du legtst zuerst 3 P-Variablen (ORG,XX,XY) mit den selben Inhalt ( 10,25,0,90,0,0) an. Danach eine P-Variable X-Diff(100,0,0,0,0,0) und Y-Diff (0,100,0,0,0,0) an.
Wenn ich es richtig verstehe rechnest du danach :
MULMAT P_XX (10,25,0,90,0,0) P_ORG (10,25,0,90,0,0) X-Diff (100,0,0,0,0,0)Als Ergebniss kommt neu P_XX ( 110,25,0,180,0,0) raus, analog für P_YY ( 10,125,0,180,0,0)
Gehe ich davon aus, das mein Uhrsprung bei 0,0,0,0,0,0 ist müssten die 3 Punkte an folgenden Stellen liegen:ORG 10,25,0,n,n,n
XX 10,125,0,n,n,n
XY -90,25,0,n,n,nAber irgendwie passt das nicht, habe ich da was falsch verstanden?
Gruß
Fallon -
Hallo,
mach das mal ohne einen Winkel zur Probe. Wie sieht das dann aus ?
Du drehst ja dein System um den Rx Winkel um 90Grad.
Dann ist auch dein Y-Wert nach oben gerichtet , nicht mehr zur Seite !
Und dein Z-Wert ist zur Seite gerichtet, nicht mehr nach oben !
Warum drehst du denn um Rx???
Normalerweise sind doch die Bases nur um Rz gedreht oder auch mal um Ry gekippt.
Und deine Werte für ORG sind eigentlich die Shiftwerte !
Die Daten für das ORG kommen im Normalfall im Bezug zum Basissystem. -
Hallo,
erstmal sorry, du hast mit dem Winkel rech, meinte natürlich Rx, das heist die Verschiebung beträgt ( 10,25,0,0,0,90), war ein Schreibfehler die unsere Applikation etwas anders ausgibt.Nur Verschiebungen ist kein Problem, dann kann ich auch die Punkte als Block mit den Shift-Befehl verschieben. Die Probleme treten nur bei Winkeländerungen auf.
Es gibt System (zb Mitsubishi) die erstellen ein Koordinatensystem mit dem Ursprung (x,y,z) und geben mit den Winkelstellungen (wx,wy,wz) die Ausrichtung des Systemes an. Hier ist ja die Schwierigkeit, das Motoman anscheinend Koordinatensysteme ausschliesslich über 3 XYZ-Koordinaten deklariert.
Wir hätten zwar die Möglichkeit, die neuen Absolutpunkte extern zu berechnen, verkompliziert aber die Gesamtanwendung. -
Hi.
Wenn du das so machst wie ich unten beschrieben habe funktioniert das auch.
Du machst dein Base über einen Punkt der von der Kamera kommt.
Der Rest wird dann berechnet. Das können alle Roboter Systeme.
Läuft gerade bei mir ohne Probleme. Und wir vershiften alle 6 Werte!Kannst ja mal deinen Code posten oder senden per PM.
-
Hallo,
danke für die Antworten.Du hast Recht, im Normalfall ist deine Lösung schon ziemlich passend.
Wenn ich das so mache wie du beschreibst und ich im Base-System bin, klappt das auch. Ich komme aber aus einem anderen User-System, da kommen noch einige Schwierigkeiten dazu. Ich habe damit die Hotline von Yaskawa 2 Tage beschäftigt.
Zum einen muss die Verschiebung von meinem Ursprung ins Base convertiert werden. Nach Berechnung der neuen Koordinatenpunkte ist die Lage des Koordinatensystem auf dem Kopf. Die Positionen der Punkte sind an der richtigen Stelle. Deswegen muss man noch die Werte von RX auf 180 setzen, dann passt es.
Hier mal mein Code und Lösung für die Allgemeinheit:NOP
SET LP001 P000
CNVRT LPX001 LPX001 BF -->Konvertierung User2 auf Base
SET LP002 LP001
SUB LP002 LP002
SET LP003 LP001
SUB LP003 LP003
SETE LP002 (1) 100000
SETE LP003 (2) 100000
'Punkt ORG
SET LP004 LP001
GETE LD000 LP004 (4)
ADD LD000 18000 -->RX auf 180 Grad setzten
SETE LP004 (4) LD000
'Punkt XX
MULMAT LP005 LP001 LP002
GETE LD000 LP005 (4)
ADD LD000 18000 -->RX auf 180 Grad setzten
SETE LP005 (4) LD000
'Punkt XY
MULMAT LP006 LP001 LP003
GETE LD000 LP006 (4)
ADD LD000 18000 -->RX auf 180 Grad setzten
SETE LP006 (4) LD000
MFRAME UF#(5) LPX004 LPX005 LPX006
ENDP000 ist die Verschiebung. Wichtig hierbei ist, die Variable für das Ursprungskoordinatensystem (bei mir User2) zu deklarieren.
@Roboboss
ich habe gesehen, das du dich mit fast den identischen Problem an das Forum gewendet hast. Dort hast du aber die Steuerung DX100 angegeben.
Die Steuerung verarbeitet die Befehle ein bischen anders.Für alle was ganz wichtiges:
Werden Punkte errechnet, die der Roboter theoretisch nicht anfahren kann, wirft die NX-Steuerung sofort einen Fehler raus. Bei der DX-Steuerung wir er errechnet und kann bearbeitet werden. Erst wenn ein Fahrbefehl auf so einen Punkt kommt, macht sie einen Fehler.Viele Grüße
Fallon
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