I don’t think I was clear in my original post. Let me show my experiment.
T_ROB1:
PERS tasks task_list{2} := [[“T_ROB1”], [“T_ROB2”]];
VAR syncident sync1;
VAR syncident sync2;
PERS tooldata tPin_Rob1:=[TRUE,[[-0.367956,0.130794,64.0582],[1,0,0,0]],[0.1,[0,0,2],[1,0,0,0],0,0,0]];
PERS wobjdata wobjPin_Rob2:= [FALSE, FALSE, "ROB_2", [[0,0,0],[1,0,0,0]],[[-0.15426,0.134004,69.2849],[1,0,0,0]]];
PERS robtarget LineStart_1:=[[1000,0,500],[0.707107,0.707107,0,0],[-2,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PROC Report()
VAR robtarget curpos;
curpos:=CRobT(\TaskName:="T_ROB1"\Tool:=tPin_Rob1\WObj:=wobj0);
TPWrite "R1 Pin, wobj0: [" + NumToStr(curpos.trans.x,1) + ", " + NumToStr(curpos.trans.y,1) + ", " + NumToStr(curpos.trans.z,1) +"]" ;
ENDPROC
PROC MotionTest_1()
TPErase;
ConfL\Off;
WaitSyncTask sync1, task_list;
MoveL LineStart_1, v300, fine, tPin_Rob1;
waittime .5;
Report;
Stop;
WaitSyncTask sync2, task_list;
MoveL Offs(LineStart_1,-400,0,0), v300, fine, tPin_Rob1;
waittime .5;
Report;
Stop;
ENDPROC
T_ROB2:
PERS tasks task_list{2} := [["T_ROB1"], ["T_ROB2"]];
VAR syncident sync1;
VAR syncident sync2;
PERS tooldata tPin_Rob2:=[TRUE,[[-0.15426,0.134004,69.2849],[1,0,0,0]],[0.1,[0,0,2],[1,0,0,0],0,0,0]];
PERS wobjdata wobjPin_Rob1 := [FALSE, FALSE, "ROB_1", [[0,0,0],[1,0,0,0]],[[-0.367956,0.130794,64.0582],[1,0,0,0]]];
PERS robtarget LineStart_2:=[[1000,0,500],[0.707107,-0.707107,0,0],[-2,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PROC Report()
VAR robtarget curpos;
curpos:=CRobT(\TaskName:="T_ROB2"\Tool:=tPin_Rob2\WObj:=wobj0);
TPWrite "R2 Pin, wobj0: [" + NumToStr(curpos.trans.x,1) + ", " + NumToStr(curpos.trans.y,1) + ", " + NumToStr(curpos.trans.z,1) +"]" ;
curpos:=CRobT(\TaskName:="T_ROB2"\Tool:=tPin_Rob2\WObj:=wobjPin_Rob1);
TPWrite "R2 Pin, wobjPin_Rob1: [" + NumToStr(curpos.trans.x,1) + ", " + NumToStr(curpos.trans.y,1) + ", " + NumToStr(curpos.trans.z,1) +"]" ;
ENDPROC
PROC MotionTest_2()
ConfL\Off;
WaitSyncTask sync1, task_list;
MoveL LineStart_2, v300, fine, tPin_Rob2;
waittime .5;
Report;
Stop;
WaitSyncTask sync2, task_list;
MoveL Offs(LineStart_2,-400,0,0), v300, fine, tPin_Rob2;
waittime .5;
Report;
Stop;
ENDPROC
Here is what the TPWrites display when I run the experiment with Absolute Accuracy off:
R1 Pin, wobj0: [1000.0, 0.0, 500.0]
R2 Pin, wobj0: [1000.0, 0.0, 500.0]
R2 Pin, wobjPin_Rob1: [0.0, 0.0, 0.0]
R1 Pin, wobj0: [600.0, 0.0, 500.0]
R2 Pin, wobj0: [600.0, 0.0, 500.0]
R2 Pin, wobjPin_Rob1: [0.0, 0.0, 0.0]
When I view the Online Monitor in robot studio with AbsAcc off the two TCPs are shown perfectly touching.
Now when I run with Absolute Accuracy on:
R1 Pin, wobj0: [1000.0, 0.0, 500.0]
R2 Pin, wobj0: [1000.0, 0.0, 500.0]
R2 Pin, wobjPin_Rob1: [-0.3, -2.8, -0.4]
R1 Pin, wobj0: [600.0, 0.0, 500.0]
R2 Pin, wobj0: [600.0, 0.0, 500.0]
R2 Pin, wobjPin_Rob1: [-0.1, -3.3, -0.6]
Online Monitor in RobotStudio, AbsAcc on, TCPs not touching:
There is clearly some kind of communication issue here with Absolute Accuracy and Coordinated MultiMove.