Parameters for Joint Safety Controllers. More...
#include <joint.h>
Public Member Functions | |
void | clear () |
bool | initXml (TiXmlElement *config) |
JointSafety () | |
clear variables on construction | |
Public Attributes | |
double | k_position |
double | k_velocity |
double | soft_lower_limit |
double | soft_upper_limit |
Parameters for Joint Safety Controllers.
Definition at line 85 of file joint.h.
urdf::JointSafety::JointSafety | ( | ) | [inline] |
IMPORTANT: The safety controller support is very much PR2 specific, not intended for generic usage.
Basic safety controller operation is as follows
current safety controllers will take effect on joints outside the position range below:
position range: [JointSafety::soft_lower_limit + JointLimits::velocity / JointSafety::k_position, JointSafety::soft_uppper_limit - JointLimits::velocity / JointSafety::k_position]
if (joint_position is outside of the position range above) velocity_limit_min = -JointLimitsvelocity + JointSafety::k_position * (joint_position - JointSafety::soft_lower_limit) velocity_limit_max = JointLimits::velocity + JointSafety::k_position * (joint_position - JointSafety::soft_upper_limit) else velocity_limit_min = -JointLimitsvelocity velocity_limit_max = JointLimits::velocity
velocity range: [velocity_limit_min + JointLimits::effort / JointSafety::k_velocity, velocity_limit_max - JointLimits::effort / JointSafety::k_velocity]
if (joint_velocity is outside of the velocity range above) effort_limit_min = -JointLimitseffort + JointSafety::k_velocity * (joint_velocity - velocity_limit_min) effort_limit_max = JointLimits::effort + JointSafety::k_velocity * (joint_velocity - velocity_limit_max) else effort_limit_min = -JointLimitseffort effort_limit_max = JointLimits::effort
Final effort command sent to the joint is saturated by [effort_limit_min,effort_limit_max]
Please see wiki for more details: http://www.ros.org/wiki/pr2_controller_manager/safety_limits