Go to the documentation of this file.
54 T
saturate(
const T val,
const T min_val,
const T max_val)
56 return std::min(std::max(val, min_val), max_val);
96 double min_pos, max_pos;
118 prev_cmd_ = std::numeric_limits<double>::quiet_NaN();
126 double prev_cmd_ = {std::numeric_limits<double>::quiet_NaN()};
175 "'. It has no velocity limits specification.");
190 assert(period.
toSec() > 0.0);
222 const double dt = period.
toSec();
223 double pos_low = pos + soft_min_vel * dt;
224 double pos_high = pos + soft_max_vel * dt;
247 prev_cmd_ = std::numeric_limits<double>::quiet_NaN();
255 double prev_cmd_ = {std::numeric_limits<double>::quiet_NaN()};
270 "'. It has no velocity limits specification.");
275 "'. It has no efforts limits specification.");
331 "'. It has no velocity limits specification.");
336 "'. It has no effort limits specification.");
414 "'. It has no velocity limits specification.");
435 assert(period.
toSec() > 0.0);
436 const double dt = period.
toSec();
492 double min_vel, max_vel;
511 const double delta_t = period.
toSec();
535 template <
class HandleType>
546 catch(
const std::logic_error& e)
559 resource_name_and_handle.second.enforceLimits(period);
575 resource_name_and_handle.second.reset();
591 resource_name_and_handle.second.reset();
void enforceLimits(const ros::Duration &period)
Enforce position, velocity, and acceleration limits for a velocity-controlled joint subject to soft l...
std::string getName() const
SoftJointLimits soft_limits_
A handle used to enforce position, velocity and effort limits of an effort-controlled joint.
void reset()
Reset state, in case of mode switch or e-stop.
void reset()
Reset all managed handles.
std::string getName() const
std::string getName() const
hardware_interface::JointHandle jh_
void reset()
Reset all managed handles.
SoftJointLimits soft_limits_
An exception related to a JointLimitsInterface.
void enforceLimits(const ros::Duration &period)
Enforce position and velocity limits for a joint subject to soft limits.
EffortJointSaturationHandle(const hardware_interface::JointHandle &jh, const JointLimits &limits)
void setCommand(double command)
PositionJointSaturationHandle(const hardware_interface::JointHandle &jh, const JointLimits &limits)
hardware_interface::JointHandle jh_
hardware_interface::JointHandle jh_
A handle used to enforce position and velocity limits of a position-controlled joint.
A handle used to enforce position and velocity limits of a position-controlled joint that does not ha...
std::string getName() const
EffortJointSoftLimitsHandle()=default
std::string getName() const
void enforceLimits(const ros::Duration &)
Enforce position, velocity and effort limits for a joint subject to soft limits.
std::string getName() const
double getCommand() const
A handle used to enforce velocity and acceleration limits of a velocity-controlled joint.
void enforceLimits(const ros::Duration &period)
Enforce joint velocity and acceleration limits.
void reset()
Reset state, in case of mode switch or e-stop.
void enforceLimits(const ros::Duration &period)
Enforce limits for all managed handles.
hardware_interface::JointHandle jh_
std::string getName() const
hardware_interface::JointHandle jh_
VelocityJointSoftLimitsHandle(const hardware_interface::JointHandle &jh, const JointLimits &limits, const SoftJointLimits &soft_limits)
A handle used to enforce position, velocity, and acceleration limits of a velocity-controlled joint.
ResourceHandle getHandle(const std::string &name)
double getVelocity() const
T saturate(const T val, const T min_val, const T max_val)
double getPosition() const
hardware_interface::JointHandle jh_
bool has_acceleration_limits
EffortJointSoftLimitsHandle(const hardware_interface::JointHandle &jh, const JointLimits &limits, const SoftJointLimits &soft_limits)
SoftJointLimits soft_limits_
void enforceLimits(const ros::Duration &period)
Enforce position and velocity limits for a joint that is not subject to soft limits.
HandleType getHandle(const std::string &name)
VelocityJointSaturationHandle(const hardware_interface::JointHandle &jh, const JointLimits &limits)
A handle used to enforce position, velocity, and effort limits of an effort-controlled joint that doe...
void enforceLimits(const ros::Duration &)
Enforce position, velocity, and effort limits for a joint that is not subject to soft limits.
ResourceMap resource_map_
Interface for enforcing joint limits.
PositionJointSoftLimitsHandle()=default
PositionJointSoftLimitsHandle(const hardware_interface::JointHandle &jh, const JointLimits &limits, const SoftJointLimits &soft_limits)
VelocityJointSaturationHandle()=default