Hallo zusammen,
Ich benötige etwas Hilfe ob meine Überlegungen so passen.
Ich muss einen Roboter verschieben und verdrehen. Dieser wurde vor einiger Zeit zu seinen Roboter Kollegen eingemessen der mittlerweile jedoch verbaut wurde so das ein zueinander einmessen nicht mehr möglich ist. Nun würde ich gerne die Verschiebung des BaseFrames (BF) ermitteln indem ich jeweils vor und nach der Verschiebung ein festes Werkobjekt einmesse und die Verschiebung anhand von den Vektoren zurück rechnen so, dass nicht alles von neu geteacht werden muss. Ich habe sowas ähnliches schonmal gemacht hatte aber einen Fehler bezüglich meiner Winkelverschiebung festgestellt. Mein bisheriges Script sieht so aus:
Code
PROC Run_Roboterverschiebung()
VAR Pose Pose1; !Werkobjekt Drehtisch alt
VAR Pose Pose2; !Werkobjekt Drehtisch Neu
VAR Pose Pose3; !Werkobjekt BF verschiebung von BF_Alt zu BF neu
VAR Pose PosePos;
VAR Pose PoseRot;
VAR wobjdata BF_Versuch1;
VAR wobjdata BF_Versuch2;
!Routine mit schritt für Schritt anleitung für eine Roboter verschiebung
!
! Teache Wobj_alt
R2w_DrehTisch_alt;
!
!Roboter verschieben;
! Teache Wobj_neu
R2w_DrehTisch_neu;
Stop;
!Weg 1
Pose1:=wR2DrehTisch_alt.uframe;
Pose2:=wR2DrehTisch_neu.uframe;
Pose3:= PoseMult(pose1,poseinv(pose2));
!Neues BF errechnen
!WobjBF_Alt ist ursprüngliches Baseframe
PosePos:=PoseMult(WobjBF_Alt.uframe,Pose3);
PoseRot:=PoseMult(WobjBF_Alt.uframe,poseinv(Pose3));
!Erzeuge daten für neues BF
BF_Versuch1.uframe.trans:=PosePos.trans;
BF_Versuch1.uframe.rot:=PoseRot.rot;
!
TPErase;
TPWrite "neues BF_pos:" \Pos:=Bf_versuch1.uframe.trans;
TPWrite "neues BF_Orient:" \Orient:=Bf_versuch1.uframe.rot;
TPWrite "neues BF_Rot X:" \num:=(EulerZYX(\X , Bf_versuch1.uframe.rot));
TPWrite "neues BF_Rot Y:" \num:=(EulerZYX(\Y , Bf_versuch1.uframe.rot));
TPWrite "neues BF_Rot Z:" \num:=(EulerZYX(\Z , Bf_versuch1.uframe.rot));
!
Stop;
TPErase;
TPWrite "Die Verschiebung:" \Pos:=Pose3.trans;
TPWrite "Die Verschiebung:" \Orient:=Pose3.rot;
TPWrite "Verschiebung X:" \num:=(EulerZYX(\X ,Pose3.rot));
TPWrite "Verschiebung Y:" \num:=(EulerZYX(\Y ,Pose3.rot));
TPWrite "Verschiebung Z:" \num:=(EulerZYX(\Z ,Pose3.rot));
Stop;
EndprocMFG Mishak
Alles anzeigen