The following code has pose1 and pose3 being offset by 1 to 2 mm, but with matching orientations.
Is this code incorrect to produce the desired equivalent targets?
Is this a 24 bit precision issue? If so, can I get CRobT or poseinv to work in dnum?
Is something funny happening in CRobT?
I have motions that must reliably position to 1.3mm spaced objects, so calculation error on this order of magnitude needs to be fixed. For reference, the base frame of the robot is not at [0,0,0],[1,0,0,0], so that’s why the target can be at this location.
Hopefully it’s just a problem between the keyboard and chair.
PERS tooldata tool0_not_held:=[FALSE,[[0,0,0],[1,0,0,0]],[0.001,[0,0,0.001],[1,0,0,0],0,0,0]];
PERS wobjdata wobj0_held:=[TRUE, TRUE, "",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]];
PERS pose pose1:=[[0.000420381,-0.000173362,-0.00047082],[6.84647E-8,-2.61491E-8,-1,4.38235E-7]];
PERS pose pose2:=[[0.0335204,-0.362375,1.27074],[6.84647E-8,2.61491E-8,1,-4.38235E-7]];
PERS pose pose3:=[[0.0335206,0.362376,1.27074],[6.84647E-8,-2.61491E-8,-1,4.38235E-7]];
PROC main ()
pose1 := target_TO_POSE(CRobT(\Tool:= tool0, \WObj:=wobj0));
pose2 := target_TO_POSE(CRobT(\Tool:= tool0_not_held, \WObj:=wobj0_held));
pose3 := poseinv(pose2);
ENDPROC
FUNC pose target_TO_POSE (robtarget target)
RETURN [target.trans, target.rot];
ENDFUNC