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.
#5
I think I have this problem, can you explain how to solve this problem as if I were 5 years old?

https://www.youtube.com/watch?v=Dgzf858ImIk
#6
Hi Julian_UK,

Can you join you RoboDK station (.rdk)?
I would like to take a look really quickly.

Jeremy
#7
Hello Jeremy,
I sent you an email through the forum on Tuesday with a download link from DropBox,
Please tell me if I received it,
#8
Hi Julian,

For 7-axis robot you need to activate the iterative kinematic.
"Robot panel"->"Parameters"->"Inverse Kinematic"->"Options"->"Use iterative kinematics".
You need to note that an iterative kinematic won't give you perfect results, if you want to have a perfect kinematic, you can create this robot as a 6-axis robot with J3 locked at 0 deg.

Jeremy
#9
Hello Jeremy,

Could you give me a copy of the robot that I sent you with the appropriate configuration? at the moment I am working with the trial version and I cannot access the robot parameters,

This seventh axis helps us a lot, the project is to clean the inside of contaminated boxes through a hole, the precision is not very important ± 1mm we can assume it

I have carried out a small test with Mastercam and the result is interesting for us if we improve the precision for this project, at this moment we have 2 Roboguide licenses, 4 Mastercam licenses, two of them with Robotmaster,

Obviously I don't have much knowledge about RoboDK but I think this project is the gateway to RoboDK,

Thanks

Julian
#10
Hi Julian, 

There it is:


Jeremy


Attached Files
.rdk   Kinova_002_Out.rdk (Size: 7.37 MB / Downloads: 592)
  




Users browsing this thread:
1 Guest(s)