# Does UR5, (or UR manipulators in general), still need to use the joint_limited version of the urdf's

When I was using the urdf for UR5, the ur5_robot.urdf.xacro as the top level urdf and the moveit setup assistant to generate the moveit_config for my manipulator, most of the "random valid" goal configurations in RViz cannot find a plan. I spent some time trying to find out why. Then I discovered that if I set the joint_limited parameter from "false" to "true" in the ur5_robot.urdf.xacro file and redo the moveit_config then most of the "random valid" goals configurations in RViz can find a plan. Then, I search in the internet and found "Elbow joint self-collisions break path planning when full joint space is used on UR5 #265". Gentlemen there discussed the topic on joint limits for UR5. That was October of 2016.

I wonder if the issue has been resolved and do we still need to use the joint limited versions of urdf when using Universal Robots and MoveIt at the same time.

Your help would be very much appreciated.

edit retag close merge delete

Sort by » oldest newest most voted

Then I discovered that if I set the joint_limited parameter from "false" to "true" in the ur5_robot.urdf.xacro file and redo the moveit_config then most of the "random valid" goals configurations in RViz can find a plan. Then, I search in the internet and found "Elbow joint self-collisions break path planning when full joint space is used on UR5 #265". [..] I wonder if the issue has been resolved [..]

Resolving is actually impossible: UR robots have +- 2pi position limits on all their joints. For the elbow, this means technically it's capable of rotation twice around its origin. However, due to the way the robot is constructed, the shoulder joint will always obstruct the wrist when the elbow passes through 0 degrees.

That's what causes the planning problems, as it's impossible to get from one "side" of the search space to another for the motion planner.

So a work-around remains, and that's in place in two ways:

1. in kinetic-devel, instantiating the macro with the joint_limited argument to the macro will reduce the position joint limits of the all joints to +- 1 pi (see here for the shoulder_pan_joint fi). This is more restrictive than needed, but guaranteed to work.
2. in melodic-devel-staging (which will become melodic-devel), the position joint limits for the elbow joint are always set to +- 1 pi, the other joints keep their +- 2 pi limits (see here).

So both versions of the macro implement a work-around to ros-industrial/universal_robot#265, the one in melodic-devel-staging is just a little more fine-grained.

do we still need to use the joint limited versions of urdf when using Universal Robots and MoveIt at the same time.

In essence, the answer to this question would be yes (see my earlier comments).

The difference will just be that in Kinetic, you'll need to load the joint limited version of the URDF yourself, while in Melodic (and Noetic), there is only a single URDF, and it will set reduce the limit for just the elbow joint.

Edit: just to clarify: the melodic-devel-staging changes have not yet been released, so users should probably still use kinetic-devel for now.

more

For all these changes, see ros-industrial/universal_robot#448 for context.

( 2020-08-12 02:55:49 -0600 )edit

@gvdhoorn thank you very much for all your help. Looking at the arrangements of the files seems like a completely new way and need some time to study them and put them together. Basically, different parts are descripted in yaml files and loaded into the main body.

( 2020-08-12 03:44:47 -0600 )edit

Yes, it's rather different. But I believe better, as we avoid a lot of duplication and make it easier for users to specify custom limits, custom meshes, etc.

Do note it's still in staging, so not released. The MoveIt configurations fi haven't been updated yet -- and in fact are currently broken.

( 2020-08-12 03:50:53 -0600 )edit

@gvdhoorn I have just spent a little time on it but I cannot find where to put the calibration file into the urdf. Can you please give me some idea? Or do I replace the default_kinematics.yaml with my_robot_calibration.yaml?

( 2020-08-12 20:45:36 -0600 )edit

I'm going to need a little more context. What is it you're trying to do? Also: why?

( 2020-08-13 02:52:06 -0600 )edit

@gvdhoorn I still want to generate an accurate IkFast MoveIt Plugin for my UR5. Before I can do that I need a URDF file.

( 2020-08-13 02:56:54 -0600 )edit

Didn't you already try this in #q359209? I don't expect melodic-devel-staging to work any better necessarily.

You're free to try of course.

( 2020-08-13 03:03:35 -0600 )edit

I can generate the IkFast Plugin from the melodic-devel ur_description urdf but I want to include the calibration into the urdf when generating it. As you are going to use the melodic-devel-staging to be the standard way of producing the urdf, for whatever purpose, then I would like to try using it to include the calibration and generate the IkFast. At the same time, I am trying to use the fmauch ur_description to do it at the moment, still no luck yet. I am also hand editing the joint limits in the ur5_joint_limited_robot.urdf.xacro to +/- 2pi for all the joints except keeping the elbow joint to +/- 1pi.

( 2020-08-13 03:12:31 -0600 )edit