Description
Summary
The current implementation of the hardware_interface
does not seem to register any joint limit interfaces:
Universal_Robots_ROS_Driver/ur_robot_driver/src/ros/hardware_interface.cpp
Lines 289 to 325 in 289655e
It's unclear whether this is by design or an oversight.
Earlier issue in ur_modern_driver
: ros-industrial-attic/ur_modern_driver#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.