56 this->
storage = jointParameters;
88 throw std::out_of_range(
"A Gear Ratio of zero is not allowed");
92 throw std::out_of_range(
"Zero Encoder Ticks per Round are not allowed");
105 if (!((setpoint < upLimit) && (setpoint > lowLimit))) {
106 std::stringstream errorMessageStream;
107 errorMessageStream <<
"The setpoint angle for joint "<< this->
storage.
jointName <<
" is out of range. The valid range is between " << lowLimit.value() <<
" and " << upLimit.value() <<
" and it is: " << setpoint.value();
108 throw std::out_of_range(errorMessageStream.str());
124 if (!((setpoint < upLimit) && (setpoint > lowLimit))) {
125 std::stringstream errorMessageStream;
126 errorMessageStream <<
"The setpoint angle for joint "<< this->
storage.
jointName <<
" is out of range. The valid range is between " << lowLimit <<
" and " << upLimit <<
" and it is: " << setpoint;
127 throw std::out_of_range(errorMessageStream.str());
Output part from the EtherCat message of the youBot EtherCat slaves.
JointLimitMonitor(const YouBotJointStorage &jointParameters, const quantity< angular_acceleration > &jointAcceleration)
int calculateBrakingVelocity(const int actualPosition)
bool inverseMovementDirection
virtual ~JointLimitMonitor()
void checkLimitsEncoderPosition(const signed int &setpoint)
It monitors the joint position and will decelerate and stop the joint if it is close the limits...
void calculateBrakingDistance(const SlaveMessageInput &messageInput)
void checkLimitsProcessData(const SlaveMessageInput &messageInput, SlaveMessageOutput &messageOutput)
void checkLimitsPositionControl(const quantity< plane_angle > &setpoint)
unsigned int encoderTicksPerRound
YouBotJointStorage storage
double calculateDamping(const int actualPosition)
JointLimitMonitor & operator=(const JointLimitMonitor &source)
Stores YouBotJoint informations which are needed in the driver.
int velocityWhenReachedLimit