# How to ensure position limits in EffortJointInterface

I have a robot arm defined in URDF file as:

<limit lower="${-2.0 * pi}" upper="${2.0 * pi}" effort="150.0" velocity="\${pi}"/>


Robot transmission is defined as:

<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>


I use torque to control the joints of the robot.

In Gazebo, I see that joints can pass the lower or upper limits (probably also velocity limits). Violation of the limits breaks something in a way that some joints seem to become locked (not always, occasionally). Appears very fishy to me.

Ideally, I would like the about-to-violate joint to stop moving in the direction of violation, however, the opposite motion should be possible. Is it implemented in Gazebo? Is my understanding about the way the limits should work is wrong?

edit retag close merge delete