Universal_Robots_ROS_Driver icon indicating copy to clipboard operation
Universal_Robots_ROS_Driver copied to clipboard

Add support for ros_control joint limits?

Open gavanderhoorn opened this issue 4 years ago • 6 comments

Summary

The current implementation of the hardware_interface does not seem to register any joint limit interfaces:

https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/blob/289655e24ca640c8aa1a6acbfaf6f5fc593dbe2c/ur_robot_driver/src/ros/hardware_interface.cpp#L289-L325

It's unclear whether this is by design or an oversight.

Earlier issue in ur_modern_driver: https://github.com/ros-industrial/ur_modern_driver/issues/249.

Versions

All versions.

Impact

Currently nothing for me personally. But a user expecting to be able to set more conservative limits on their robot motions by setting the appropriate values on the ROS parameter server will not be able to affect motion execution, as the driver doesn't load nor enforce them.

Issue details

As the robot controller itself already adheres to the relevant safety standards, not having limits enforced in the driver is not really a safety risk (and even if it were: ros_control is not safety-rated).

At this point it affects user experience more than anything I believe.

Steps to Reproduce

  • update the .launch file to load joint limits on the parameter server
  • start the driver
  • try to command motion clearly violating a specific (ie: more conservative) limit

Expected Behavior

As ros_control implements saturation mostly, saturated velocity profiles (fi).

Actual Behavior

No limiting.

Workaround Suggestion

Reducing the slider on the TP, but that does not allow individual limits to be set, nor does it support any units. It's just a percentage of maximum performance.

Alternative: configuring reduced limits on the UR controller, but this is invisible to the ROS side.

gavanderhoorn avatar Jun 16 '20 11:06 gavanderhoorn

I noticed this as I was working on aligning the joint limits files in the new ur_description (like this one) with the ros_control/MoveIt style.

Doing that would allow reuse of those limits files, instead of needing to maintain a few separate ones.

gavanderhoorn avatar Jun 16 '20 11:06 gavanderhoorn

Yes, this was never prioritized enough to tackle this. I fully agree

fmauch avatar Jun 16 '20 11:06 fmauch

Related: https://github.com/ros-industrial/universal_robot/issues/510.

gavanderhoorn avatar Jun 16 '20 11:06 gavanderhoorn

@fmauch could you please assign this to me?

hsd-dev avatar Jul 07 '20 08:07 hsd-dev

HardwareInterface class doesn't use urdf::Model object at the moment. Is that left out on purpose? I can read the limits only from the joint_limits.yaml and ignore the ones from URDF file altogether if that's the case. In any case, the values in yaml file will override the ones in URDF.

hsd-dev avatar Jul 07 '20 11:07 hsd-dev

[WIP] https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/pull/223

hsd-dev avatar Jul 07 '20 13:07 hsd-dev