How to ensure position limits in EffortJointInterface

asked 2019-01-14 08:35:14 -0500

ivan gravatar image

updated 2019-01-15 00:04:52 -0500

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

Comments

Can you post a working example? In the mean time, can you make sure there is no conflicting limits specified in the controller's configuration yaml file? This might also be useful https://github.com/ros-controls/ros_c...

azeey gravatar imageazeey ( 2019-01-16 18:33:44 -0500 )edit

Sorry for a late reply. The project is rather big so before stripping off to a minimal example, I wonder how lower and upper position limits are handled by EffortJointInterface? Note that I use ODE physics engine for simulation.

ivan gravatar imageivan ( 2019-01-22 06:51:18 -0500 )edit