Zitat von Langebua
! ## Wobj beschreiben ## !
Wobj_verschoben:=wobj_OP140;
Wieso geht der gleiche Befehl für Robtargets nicht? Habe es versucht quasi einen Schraube_10_verschoben punkt zu erstellen. Funktion nur für Wobj kommt als Syntax.
Was meinst du damit?
wobj_verschoben := wobj_OP140 => hier scheint die struktur zu passen
robt_verschoben:= wobj_OP140 => wenn du das so meinst, dann versuchst du vielleicht ein werkobjekt in ein robtarget zu schreiben?
wenn ja ginge das nur über
robt_verschoben.trans := wobj_OP140.oframe.trans
du musst halt darauf achten, dass die datentypen (strukturen) zueinander passen
wenn du von der kamera offsets bekommst, die passen ist das einfach.
für die kamera-referenzierung kannst du zum beispiel zwei marken nehmen:
marke1: auf ide fährst du mit deinem TCP
marke2: diese erkennt die kamera als koordinate
die beiden marken haben einen definierten abstand zueinander
entweder teilst du der kamera nun mit, dass ihr koordinatenursprung an marke1 ist (den abstand zu marke2 kennst du ja)
oder aber du verrechnest diesen abstand der beiden marken dann im roboter
angenommen die kamera macht das mit dem ursprung, hast du saubere offsets (auf die ausrichtung des koordinatensystems achten!)
und kannst simpel mit
PERS robtarget pTemp;
PERS wojbdata wTemp;
var num nOffsets{2};
nOffsets := [KameraOffs_x,KameraOffs_y];
pTemp := Schraube_10;
wTemp := wDeinWerkobj;
MoveL Offs(pTemp,nOffsets{1},nOffsets{2},0),v1000,fine,toolx\wobj:=wobj0;
und sofern die Ausrichtung aller Koordinatensysteme passt, solltest du den Punkt direkt anfahren können.
Tipp:
um nicht auf koordinatensystemausrichtungen achten zu müssen, benutze ich kerne den oframe des werkobjektes (verschiebe ich mit posemult) da die des Punktes und/oder des TCP meist um x 180 oder y 180 gedreht sein müssen. da wird es manchmal ätzend mit den vorzeichen.
Da würdest du dann entsprechend statt dem offs zusatz, den PoseMult Befehl nutzen.