Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00027
00029
00030 #ifndef JOINT_LIMITS_INTERFACE_JOINT_LIMITS_URDF_H
00031 #define JOINT_LIMITS_INTERFACE_JOINT_LIMITS_URDF_H
00032
00033 #include <ros/common.h>
00034 #if ROS_VERSION_MINIMUM(1, 9, 0) // TODO: Deprecate this conditional when Fuerte support is EOL'd
00035 #include <urdf_model/joint.h>
00036 #else
00037 #include <urdf_interface/joint.h>
00038 #endif
00039 #include <joint_limits_interface/joint_limits.h>
00040
00041 namespace joint_limits_interface
00042 {
00043
00051 bool getJointLimits(boost::shared_ptr<const urdf::Joint> urdf_joint, JointLimits& limits)
00052 {
00053 if (!urdf_joint || !urdf_joint->limits)
00054 {
00055 return false;
00056 }
00057
00058 limits.has_position_limits = urdf_joint->type == urdf::Joint::REVOLUTE || urdf_joint->type == urdf::Joint::PRISMATIC;
00059 if (limits.has_position_limits)
00060 {
00061 limits.min_position = urdf_joint->limits->lower;
00062 limits.max_position = urdf_joint->limits->upper;
00063 }
00064
00065 if (!limits.has_position_limits && urdf_joint->type == urdf::Joint::CONTINUOUS)
00066 {
00067 limits.angle_wraparound = true;
00068 }
00069
00070 limits.has_velocity_limits = true;
00071 limits.max_velocity = urdf_joint->limits->velocity;
00072
00073 limits.has_acceleration_limits = false;
00074
00075 limits.has_effort_limits = true;
00076 limits.max_effort = urdf_joint->limits->effort;
00077
00078 return true;
00079 }
00080
00087 bool getSoftJointLimits(boost::shared_ptr<const urdf::Joint> urdf_joint, SoftJointLimits& soft_limits)
00088 {
00089 if (!urdf_joint || !urdf_joint->safety)
00090 {
00091 return false;
00092 }
00093
00094 soft_limits.min_position = urdf_joint->safety->soft_lower_limit;
00095 soft_limits.max_position = urdf_joint->safety->soft_upper_limit;
00096 soft_limits.k_position = urdf_joint->safety->k_position;
00097 soft_limits.k_velocity = urdf_joint->safety->k_velocity;
00098
00099 return true;
00100 }
00101
00102 }
00103
00104 #endif