ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

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

asked 2020-08-12 02:01:46 -0500

Victor Wu gravatar image

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 flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
0

answered 2020-08-12 02:54:10 -0500

gvdhoorn gravatar image

updated 2020-08-12 03:52:04 -0500

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.

edit flag offensive delete link more

Comments

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

gvdhoorn gravatar image gvdhoorn  ( 2020-08-12 02:55:49 -0500 )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.

Victor Wu gravatar image Victor Wu  ( 2020-08-12 03:44:47 -0500 )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.

gvdhoorn gravatar image gvdhoorn  ( 2020-08-12 03:50:53 -0500 )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?

Victor Wu gravatar image Victor Wu  ( 2020-08-12 20:45:36 -0500 )edit

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

gvdhoorn gravatar image gvdhoorn  ( 2020-08-13 02:52:06 -0500 )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.

Victor Wu gravatar image Victor Wu  ( 2020-08-13 02:56:54 -0500 )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.

gvdhoorn gravatar image gvdhoorn  ( 2020-08-13 03:03:35 -0500 )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.

Victor Wu gravatar image Victor Wu  ( 2020-08-13 03:12:31 -0500 )edit

Question Tools

1 follower

Stats

Asked: 2020-08-12 02:01:46 -0500

Seen: 722 times

Last updated: Aug 12 '20