Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to correctly setup targets?
#1
Hello everyone,
This past days I've been struggling with some target positioning, I'm using Joint targets and sometimes I got "the right target" but with different joint positions...

As an example:
The target pose is:

[    -0.034879,     0.999392,     0.000174,    -5.676719 ;
     -0.087280,    -0.002872,    -0.996180,  -451.367472 ;
     -0.995573,    -0.034761,     0.087327,   635.845166 ;
      0.000000,     0.000000,     0.000000,     1.000000 ];

The joints of this target are:
-89.989952, -34.999973, 59.989895, 0.000053, -29.999769, 313.000275

Then when I go to the target I got the same values for the pose of the robot, but different joints:
-89.989952, -34.999973, 59.989895, 180.000053, 29.999769, 133.000275

I'm having this troubles both clicking (it doesn't happen when I double click) on the target and then pressing "move joints" and with python API.

What is the correct way to go to this target with the joints that I programmed previously?

Thanks in advance!

PS: Sometimes I have this trouble when I'm already in the desired target and start the python script, resulting in a weird twist to achieve the same position...
#2
Hi Nox,

It is important to understand the difference between a joint target and a Cartesian target:
  • Joint targets are defined in the joint space and when you move to a joint target using a joint motion (MoveJ) the robot will move to the location you programmed.
  • Cartesian targets are defined in the Cartesian space. A Cartesian target depends on the currently active tool and reference frame. The selected tool and reference frames are important when you teach the target and when you move to the target by simply clicking on it or moving to the target using a linear motion. This is why you see a set tool and set reference frame instructions added by default when you add a move instruction in a program.
When you create a target in RoboDK using the UI or the API it will be a Cartesian target by default (red targets). If you want a joint target you can call target.setAsJointTarget() and impose the robot Joints to force a specific robot position (absolute joints). The target will then be displayed as green.

In robotics we usually use a joint movement to joint targets to move between different areas and approach or get close to the area of interest. Then, we use linear movements to Cartesian targets for the manufacturing operation (for example welding). 

Cartesian targets allows you to perform small adjustments on the tool and the coordinate system without having to change your programmed toolpath.

This example shows how to remember the current robot position as a joint target:

Code:
target = RDK.AddTarget("Joint target")
target.setAsJointTarget()
target.setJoints(robot.Joints()


Albert
#3
I understand that, but I'm having problems with both cartesian and joint targets, sometimes the robots just make this weird movements instead of the "optimal" movement or even the "saved" movement.
I've seen that there's this option on each target called "Change configuration" (image). Is there a way to actually change this configuration? or even select one of this ids for each target?, I've realized that if I choose one of those configurations is not being saved anywhere and the robot keeps doing random movements...

[Image: 9jp6vd4.png]
#4
If you select a different configuration and you want to keep it as the new target you should right click your target and select Teach current position.

Using the API you can retrieve all possible inverse kinematics options by calling SolveIK_All.
  




Users browsing this thread:
1 Guest(s)