Can someone share some code to compute distances in RAPID?
I need to compute the distance from the present robot position to a target - say “jointtargetHome”.
Case:
Depending on where the robot is and what tool it is carrying, I need to perform different motions depending on the distance to a target. Something like pseudo:
num DistToTarget(CurrentTool, Target T);
Distance() - Distance between two pointsUsage: Distance is used to calculate the distance between two points in the space.
Example:
VAR num dist;
CONST pos p1 := [4,0,4];
CONST pos p2 := [-4,4,4];
…
dist := Distance(p1, p2);
FUNC bool CurrentPos(
robtarget ComparePos,
INOUT tooldata Tool,
num Accuracy
INOUT wobjdata Wobj)
VAR num Counter:=0;
VAR robtarget ActualPos;
IF Present(Wobj) THEN
ActualPos:=CRobT(Tool:=ToolWObj:=Wobj);
ELSE
ActualPos:=CRobT(Tool:=ToolWObj:=wobj0);
ENDIF
IF ActualPos.trans.x>ComparePos.trans.x-Accuracy AND ActualPos.trans.x<ComparePos.trans.x+Accuracy Counter:=Counter+1;
IF ActualPos.trans.y>ComparePos.trans.y-Accuracy AND ActualPos.trans.y<ComparePos.trans.y+Accuracy Counter:=Counter+1;
IF ActualPos.trans.z>ComparePos.trans.z-Accuracy AND ActualPos.trans.z<ComparePos.trans.z+Accuracy Counter:=Counter+1;
IF ActualPos.rot.q1>ComparePos.rot.q1-0.1 AND ActualPos.rot.q1<ComparePos.rot.q1+0.1 Counter:=Counter+1;
IF ActualPos.rot.q2>ComparePos.rot.q2-0.1 AND ActualPos.rot.q2<ComparePos.rot.q2+0.1 Counter:=Counter+1;
IF ActualPos.rot.q3>ComparePos.rot.q3-0.1 AND ActualPos.rot.q3<ComparePos.rot.q3+0.1 Counter:=Counter+1;
IF ActualPos.rot.q4>ComparePos.rot.q4-0.1 AND ActualPos.rot.q4<ComparePos.rot.q4+0.1 Counter:=Counter+1;
RETURN Counter=7;
ENDFUNC