PR2 / pr2_common

45 stars 79 forks source link

joint limits in urdf are not accurate (ros ticket #3774) #177

Open ahendrix opened 11 years ago

ahendrix commented 11 years ago

Some of the joint limits in the urdf are not accurate. The robot joints often exceed the specified joint limits:

e.g. [ERROR] 1264808171.989901000: joint: head_tilt_joint, high_limit: 1.296260, low_limit: -0.371200, value: -0.391297

trac data:

ahendrix commented 11 years ago

[watts] The joints occasionally overrun the normal limits. This can happen when a rubber bump stop compresses, or when a belt stretches during a hit. There is some question as to where we should set these limits, and I'm not sure what the answer is.

Changing the joint limits in the URDF wouldn't change anything in robot behavior, since the soft limits would be the same.

ahendrix commented 11 years ago

[watts] What do you think we should do about this one? Should we make the URDF more "real", or just say that the robot will occasionally record a reading greater than the URDF values.

ahendrix commented 11 years ago

[watts] Sachin, John and Wim:

I think the way to fix this would be to have an "outer limit" set for joints on the robot. We can add a PR2 specific URDF extension the PR2's defs to set this field for all non-continuous joints. The only applications for this field that I can think of:

Sachin, do you still care about this?

ahendrix commented 11 years ago

[sachinc] Yes, I do. I just ran into the problem again. Maybe this could be part of the calibration procedure - write out the joint limits into the urdf every time we calibrate.

ahendrix commented 11 years ago

[watts] I don't think it needs to be part of the calibration procedure. It can just be:

ahendrix commented 11 years ago

[wim] I understand what is causing this problem, but what is the usecase for adding extra information into the urdf? Do you need this for the planners?

ahendrix commented 11 years ago

[sachinc] Yes, I need it for the planners. We can get around it in a hackish way but it would be nice if the limits were more accurate than they are currently for each robot.

ahendrix commented 11 years ago

[wim] Sachin, could you explain the usecase in more detail? I'm reluctant to add pr2 specific limits to the urdf. This will make your planners depend on pr2 specific extensions, and there is no good way to define good values for these extra limits because they depend on the force applied on the rubber end stops.

ahendrix commented 11 years ago

[sachinc] I don't want to change the definition of the urdf and add something PR2 specific. I just want the numbers in there to better represent the individual robots. I think this could and should be a part of the calibration process - we rewrite a lot of other stuff during calibration.

ahendrix commented 11 years ago

[wim] Okay, I understand. So the question is how to calibrate that. When moving slowly, the safety controllers will prevent the arm from reaching the hard limits. So do we need to move the arm at high velocity into its limits?

Or it the case that the soft limits are in some cases specified incorrectly and lie outside the hard limits?

I'm still interested to understand your use case.