Joint 6 encoder gives conflicting joint positions

We have experienced problems with the last joints encoder of our UR3 (software version: 3.5.4.10845)

During training sessions, we rely on fixed joint configurations,
so we save them once and execute a movej to get there before every new session.

However, when we restart the robot we get different joint values for the joint 6.

In the same configuration, we sometimes get a value of x or x + 2R.
When we boot the robot and initialize by loading our config file first and then start the robot, we would get the x value
and if we started first (by accident), stopped, loaded config file and started again, it would be in the x+2R position.

And because the first case happened more reliably, we chose to focus on the x value.

But now, we end up with the x+2R value no matter of we initialized the robot.

I don’t know how the encoders work here but from our experience I thought that after initialization the value is taken between 0 and 360 and then it is tracked and returned in absolute values.

But how come we get different initial values after boot no matter how we setup the robot? And what do we have to do to get the same configuration at every startup? We need reliable values.

Hi @raphael,

It’s not entirely clear what is happening from your explanation. Recommend that you contact the UR partner that you purchased the robot from for technical support regarding this issue as this seems to be related to the robot system itself more than your URCap development.

did you try to use a different joint firmware?

Okay thank you.

Just to clarify:
Sometimes when we boot the robot we have a 6th joint value of, lets say, 5 and sometimes a value of 725
without having changed anything in the software or setup.

@m.birkholz No I did not.

Updating to the latest firmware is a good precautionary measure. Assume you’re shutting the robot down correctly and not just pulling the power?

1 Like

yes no we always just shut it down properly.

How does the encoder work for the last joint?
Does it just initialize to a value (e.g. between 0 and 360) and than tracks when going over or under?
Or is it truly absolutely encoding the joint position?

The sensor is absolute within one revolution and then increments in software beyond that. I don’t see a specific known solution for this so please contact your supplier for more in depth troubleshooting.

1 Like