#include <EncoderStateCalculator.h>
Public Member Functions | |
EncoderStateCalculator (const double &jointGearRatio, const double &pwmFrequency, const double &pwmDeadTime, const double &busVoltage, const double &motorCurrentLimit, const double &phaseResistance, const double &backEmfConstant, const double &jointKinematicDirection, const double &encoderMountingDirection, const double &encoderGlitchScalar, const double &encoderVelocityBlendStop, const double &encoderVelocityBlendStart) | |
double | getPosition (const double &encoderPositionReference, const int32_t &incrementalEncoderReference, const int32_t &incrementalEncoderNow) |
Calculates joint position. | |
double | getVelocity (int32_t timer, const int32_t &timeout, const int32_t &encoderAccumulation, const double &measuredControlRateHz) |
Calculates motor velocity. User must divide by joint gear ratio to get joint velocity. | |
virtual | ~EncoderStateCalculator () |
Public Attributes | |
double | busVoltageRatio |
int32_t | encoderAccumulationPrevious |
double | encoderCountsPerMotorRevolution |
Values from calculations. | |
double | encoderCountsToJointRadians |
double | encoderPosition |
double | encoderRadiansPerCount |
double | encoderVelocityBlended |
double | encoderVelocityHighFrequency |
double | encoderVelocityLowFrequency |
double | encoderVelocityLowFrequencyPrevious |
double | gammaBlend |
double | gammaBlendDenominator |
double | maxEncoderVelocity |
Private Member Functions | |
double | applyLimits (const double &value, const double &lowerLimit, const double &upperLimit) |
Private Attributes | |
double | backEmfConstant |
double | backEmfConstantMinimum |
motor controller rate | |
double | busVoltage |
double | clockFrequency |
constant from motor controller | |
double | encoderGlitchScalar |
double | encoderMountingDirection |
double | encoderTickTimeout |
Values that are constant. | |
double | encoderVelocityBlendStart |
double | encoderVelocityBlendStop |
double | jointGearRatio |
Values from coefficient files. | |
double | jointKinematicDirection |
cannot be les than 1e-4 | |
double | motorCurrentLimit |
might be changed to brainstem value | |
double | phaseResistance |
double | pwmDeadTime |
double | pwmFrequency |
Definition at line 10 of file EncoderStateCalculator.h.
EncoderStateCalculator::EncoderStateCalculator | ( | const double & | jointGearRatio, |
const double & | pwmFrequency, | ||
const double & | pwmDeadTime, | ||
const double & | busVoltage, | ||
const double & | motorCurrentLimit, | ||
const double & | phaseResistance, | ||
const double & | backEmfConstant, | ||
const double & | jointKinematicDirection, | ||
const double & | encoderMountingDirection, | ||
const double & | encoderGlitchScalar, | ||
const double & | encoderVelocityBlendStop, | ||
const double & | encoderVelocityBlendStart | ||
) |
To prevent enormous max velocity, ensure backEmfConstant is large enough.
check to make sure start and stop are input correctly
Definition at line 3 of file EncoderStateCalculator.cpp.
EncoderStateCalculator::~EncoderStateCalculator | ( | ) | [virtual] |
Definition at line 52 of file EncoderStateCalculator.cpp.
double EncoderStateCalculator::applyLimits | ( | const double & | value, |
const double & | lowerLimit, | ||
const double & | upperLimit | ||
) | [private] |
Definition at line 131 of file EncoderStateCalculator.cpp.
double EncoderStateCalculator::getPosition | ( | const double & | encoderPositionReference, |
const int32_t & | incrementalEncoderReference, | ||
const int32_t & | incrementalEncoderNow | ||
) |
Calculates joint position.
Definition at line 59 of file EncoderStateCalculator.cpp.
double EncoderStateCalculator::getVelocity | ( | int32_t | timer, |
const int32_t & | timeout, | ||
const int32_t & | encoderAccumulation, | ||
const double & | measuredControlRateHz | ||
) |
Calculates motor velocity. User must divide by joint gear ratio to get joint velocity.
buff timer to timeout using 'signed magnitude'
Avoid divide by 0
If no ticks occur before encoderTickTimeout, velocity must be 0.
Use previous value if a glitch occurs
Definition at line 69 of file EncoderStateCalculator.cpp.
double EncoderStateCalculator::backEmfConstant [private] |
Definition at line 46 of file EncoderStateCalculator.h.
double EncoderStateCalculator::backEmfConstantMinimum [private] |
motor controller rate
Definition at line 56 of file EncoderStateCalculator.h.
double EncoderStateCalculator::busVoltage [private] |
Definition at line 43 of file EncoderStateCalculator.h.
Definition at line 25 of file EncoderStateCalculator.h.
double EncoderStateCalculator::clockFrequency [private] |
constant from motor controller
Definition at line 55 of file EncoderStateCalculator.h.
Definition at line 32 of file EncoderStateCalculator.h.
Values from calculations.
Definition at line 22 of file EncoderStateCalculator.h.
Definition at line 24 of file EncoderStateCalculator.h.
double EncoderStateCalculator::encoderGlitchScalar [private] |
Definition at line 49 of file EncoderStateCalculator.h.
double EncoderStateCalculator::encoderMountingDirection [private] |
Definition at line 48 of file EncoderStateCalculator.h.
Definition at line 31 of file EncoderStateCalculator.h.
Definition at line 23 of file EncoderStateCalculator.h.
double EncoderStateCalculator::encoderTickTimeout [private] |
Values that are constant.
Definition at line 54 of file EncoderStateCalculator.h.
Definition at line 30 of file EncoderStateCalculator.h.
double EncoderStateCalculator::encoderVelocityBlendStart [private] |
Definition at line 51 of file EncoderStateCalculator.h.
double EncoderStateCalculator::encoderVelocityBlendStop [private] |
Definition at line 50 of file EncoderStateCalculator.h.
Definition at line 29 of file EncoderStateCalculator.h.
Definition at line 27 of file EncoderStateCalculator.h.
Definition at line 28 of file EncoderStateCalculator.h.
Definition at line 33 of file EncoderStateCalculator.h.
Definition at line 34 of file EncoderStateCalculator.h.
double EncoderStateCalculator::jointGearRatio [private] |
Values from coefficient files.
Definition at line 40 of file EncoderStateCalculator.h.
double EncoderStateCalculator::jointKinematicDirection [private] |
cannot be les than 1e-4
Definition at line 47 of file EncoderStateCalculator.h.
Definition at line 26 of file EncoderStateCalculator.h.
double EncoderStateCalculator::motorCurrentLimit [private] |
might be changed to brainstem value
Definition at line 44 of file EncoderStateCalculator.h.
double EncoderStateCalculator::phaseResistance [private] |
Definition at line 45 of file EncoderStateCalculator.h.
double EncoderStateCalculator::pwmDeadTime [private] |
Definition at line 42 of file EncoderStateCalculator.h.
double EncoderStateCalculator::pwmFrequency [private] |
Definition at line 41 of file EncoderStateCalculator.h.