KRC4
KSS 8.5.7
KR60-3 Robot with DKP 400-40 2 axis positioner
Hi Everyone,
I have a question about using INV_POS to find the coordinates of a point (under a specific condition). Currently in our setup, we use a custom CAM software to generate robot motions, all in the BASE[0] ($ROBROOT) coordinate system. These motions include movements of the two external axes with our DKP 400 positioner. For example, we might:
move to Position A,
LIN { X 1722.087, Y -173.815, Z 1108.022, A -45.0000, B 90.0000, C 0.0000, S 'B10', T 'B100011' }
tilt the positioner arm (E1) 10 degrees and rotate the positioner plate (E2) 360 degrees,
(this is a custom function that wraps this as E1, E2, speed (rad/s)
OrientPlate (10.603515, 360.0, 0.165153)
move to Position B.
LIN { X 1722.094, Y -173.815, Z 1109.722, A -45.0000, B 90.0000, C 0.0000, S 'B10', T 'B100011' }
We create a visualization of the part afterwards by logging the current robot position ($POS_ACT_MES). You can imagine that if I am reading the current position in $ROBROOT, rotating the plate 360 degrees shows up as the robot not moving, when in reality, (in the reference frame of the part) we created a circle. So I'd like to read out the current position of the robot (X,Y,Z,A,B,C) in the positioner frame (this is set up as BASE_DATA[17] ). I tried using
E6POS_ExtAxFrame=INV_POS(BASE_DATA[17]):$BASE_C:$POS_ACT_MES
However, this doesn't actually update as the positioner moves. It just offsets the position by the definition of the frame.
I'd rather not work out my own IK of the position based on the E1 and E2 angles, but if that's my only option, well...so be it.
Does anyone have any suggestions? I've seen some great knowledge around this forum in relation to external positioners, INV_POS and the geometric operator, but I couldn't work out the best way to do this.
(I'll add that for ABB robots, you can use the "CRobT" function to read the current robot position, and simply specify the work object you'd like to reference. So I guess I'm looking to force the same functionality out of KUKA) pos:=CRobT(\WObj:=ext_axis);
Thanks,
Dave