• 0 Vote(s) - 0 Average
• 1
• 2
• 3
• 4
• 5

# MoveC target reach error

Hi All.

I am having an issue with MoveC from the Python API. I have defined three Cartesian targets that sit on the circumference of the circle I wish the TCP to move around. However I get a target reach error every time I try to run the MoveC command.

If I click on the targets 1 (start point) and 2 (intermediate point) in the station tree, I can see the robot move between them as I expect. However, when I click on target 3 (end point), the robot moves into a different  configuration to reach the point, even though it is clear that the same configuration used for targets 1 and 2 is able to reach target 3. I have confirmed this by moving the robot closer to the point (in simulation) and then clicking on target 3 and it moves as expected.

What is the proper way to force RoboDK to use the same robot configuration for all three targets? - specifically, how do I prevent RoboDK from selecting a different configuration for target 3? Should I make all three joint targets? I would prefer not to do this unless it is the preferred option.
Can you share the RoboDK project so we can reproduce this issue?
Hi Albert.

I have attached a station file with the three targets and a small Python script containing the MoveC that is causing the issue. If you click on each of the Cartesian targets in the tree, you can see that the one with index _2 causes the robot to change configuration, even though each joint is in the middle of its range of movement.

Attached Files
The fact that each target individually is reachable does not mean you can't make a linear or a circular movement. You would have to change the configuration of the first point (performing a joint move to a joint target) to establish a valid configuration for the sequence of linear and joint movements.

In your example, the last point requires crossing a singularity (joint 5 crossing 0 deg). Robots can't cross singularities when performing linear or circular movements.

The first point of the circular movement is:
Code:
`Joints 1 = [-24.316706, -103.498708, -114.625700, -141.875592, -38.316706, -130.000000]`
And the second point, when changing to the closest configuration flips the sign for joint 5:
Code:
`Joints 2 = [-10.818051, -109.926215, -105.694284, -144.379501, 6.181949, -130.000000]`

The solution is to re-teach the first target to use a different configuration like this one:
Code:
`Starting Joints = [111.699990, -70.608134, -253.531245, -35.860621, 66.699990, -130.000000]`
Then, the movement can be completed. See the attached project file.

You could still bypass the singularity issue by changing this setting (however, this will probably not run on a real controller):
1. Select Tools-Options
2. Select the Motion tab
3. Set the Tolerance to avoid Wrist singularity to -1 deg.

Attached Files