ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Adding joint limits to a URDF is only the specification part. For these limits to be taken into account, you need an implementation that enforces them.

As you have already noticed, not all URDF-parsing implementations take the complete specification into account. The joint_state_publisher, for instance, takes joint names, types and position limits into account for publishing sensor_msgs/JointState messages, but does not not consider joint velocity limits. Also, there are certain specifications, like the maximum joint effort, that cannot be enforced with a kinematic-only implementation. So, the important thing is to understand the scope and limitations of an implementation, and a package's documentation should help here. I went ahead and added to the joint_state_publisher ROS wiki entry a comment to this effect.

As @lucasw mentions, you could consider using the ros_control framework for setting up your robot and move it with controllers that are aware of the complete URDF joint limits spec. You might find the joint_limits_interface package of particular interest. A more general discussion can be found on 24:14 of this video. Note that the overhead of setting up ros_control for your robot will be higher than setting up the joint_state_publisher, there's no free lunch.