#include <MultiLoopController.h>
Classes | |
| struct | MultiLoopParams |
Public Member Functions | |
| double | currentLoop (double desiredCurrent, double actualVelocity, double busVoltage) |
| perform the current loop calculations | |
| const MultiLoopParams & | getMultiLoopParameters () const |
| MultiLoopController () | |
| MultiLoopController (const MultiLoopController &mlc_in) | |
| void | reset () |
| void | setCurrentLoopParameters (double minCurrent, double maxCurrent, double maxDutyCycle, bool bypass=false) |
| set the curent loop parameters | |
| void | setHardwareParameters (double motorViscousDampingCompensation, double motorInertia, double motorTorqueConstant, double motorPhaseResistance, double motorBackEMFConstant, double motorInductance, double motionRatio, double PWMFreq, double bridgeDeadTime, double bridgeSwitchTime) |
| set the hardware parameters | |
| void | setLoopRate (double loopRate) |
| set the loop rate to use for calculations | |
| void | setMultiLoopParameters (const MultiLoopParams &mlp_in) |
| void | setPositionLoopParameters (double minPosition, double maxPosition, double Kp, bool bypass=false) |
| set the position loop parameters | |
| void | setTorqueLoopParameters (double minTension, double maxTension, double Kp, double offset, bool bypass=false) |
| set the torque loop parameters | |
| void | setVelocityLoopParameters (double minVelocity, double maxVelocity, double Kp, double Ki, double integratorWindupLimit, bool bypass=false) |
| set the velocity loop parameters | |
| double | update (double desiredPosition, double actualPosition, double actualVelocity, double busVoltage, double &desiredVelocity) |
| update run through the multiloop controller based on the given inputs | |
| double | update (double desiredPosition, double kTendon, double actualPosition, double actualTension, double actualVelocity, double busVoltage, double &desiredVelocity) |
| update run through the multiloop controller based on the given inputs | |
| double | velocityLoop (double desiredVelocity, double actualVelocity, double busVoltage, double &limitedVelocity) |
| these loops are broken out and public for testing purposes, update should be the primary interface | |
| virtual | ~MultiLoopController () |
Private Attributes | |
| double | busVoltageRatio |
| MultiLoopParams | coeffs |
| bool | currentLoopSet |
| bool | hardwareSet |
| bool | loopRateSet |
| bool | positionLoopSet |
| double | previousDesiredCurrent |
| double | previousDesiredVelocity |
| bool | ready |
| bool | torqueLoopSet |
| double | velocityLoopIntegrator |
| bool | velocityLoopSet |
Definition at line 12 of file MultiLoopController.h.
Definition at line 5 of file MultiLoopController.cpp.
| MultiLoopController::MultiLoopController | ( | const MultiLoopController & | mlc_in | ) |
Definition at line 20 of file MultiLoopController.cpp.
| virtual MultiLoopController::~MultiLoopController | ( | ) | [inline, virtual] |
Definition at line 17 of file MultiLoopController.h.
| double MultiLoopController::currentLoop | ( | double | desiredCurrent, |
| double | actualVelocity, | ||
| double | busVoltage | ||
| ) |
perform the current loop calculations
| std::runtime_error | if busVoltage == 0 |
Current Loop
Limit dutyCycle
Definition at line 287 of file MultiLoopController.cpp.
| const MultiLoopParams& MultiLoopController::getMultiLoopParameters | ( | ) | const [inline] |
Definition at line 117 of file MultiLoopController.h.
| void MultiLoopController::reset | ( | ) | [inline] |
Definition at line 114 of file MultiLoopController.h.
| void MultiLoopController::setCurrentLoopParameters | ( | double | minCurrent, |
| double | maxCurrent, | ||
| double | maxDutyCycle, | ||
| bool | bypass = false |
||
| ) |
set the curent loop parameters
| std::runtime_error | if minCurrent > maxCurrent |
| std::runtime_error | if maxDutyCycle < 0 |
Definition at line 194 of file MultiLoopController.cpp.
| void MultiLoopController::setHardwareParameters | ( | double | motorViscousDampingCompensation, |
| double | motorInertia, | ||
| double | motorTorqueConstant, | ||
| double | motorPhaseResistance, | ||
| double | motorBackEMFConstant, | ||
| double | motorInductance, | ||
| double | motionRatio, | ||
| double | PWMFreq, | ||
| double | bridgeDeadTime, | ||
| double | bridgeSwitchTime | ||
| ) |
set the hardware parameters
| std::runtime_error | if motorTorqueConstant == 0 |
| std::runtime_error | if motionRatio == 0 |
| std::runtime_error | if (1. - 2. * PWMFreq * bridgeDeadTime) == 0. |
Definition at line 219 of file MultiLoopController.cpp.
| void MultiLoopController::setLoopRate | ( | double | loopRate | ) |
set the loop rate to use for calculations
| std::runtime_error | if looprate <= 0 |
Definition at line 115 of file MultiLoopController.cpp.
| void MultiLoopController::setMultiLoopParameters | ( | const MultiLoopParams & | mlp_in | ) |
Definition at line 104 of file MultiLoopController.cpp.
| void MultiLoopController::setPositionLoopParameters | ( | double | minPosition, |
| double | maxPosition, | ||
| double | Kp, | ||
| bool | bypass = false |
||
| ) |
set the position loop parameters
| std::runtime_error | if minPosition > maxPosition |
Definition at line 130 of file MultiLoopController.cpp.
| void MultiLoopController::setTorqueLoopParameters | ( | double | minTension, |
| double | maxTension, | ||
| double | Kp, | ||
| double | offset, | ||
| bool | bypass = false |
||
| ) |
set the torque loop parameters
| std::runtime_error | if minTension > maxTension |
Definition at line 148 of file MultiLoopController.cpp.
| void MultiLoopController::setVelocityLoopParameters | ( | double | minVelocity, |
| double | maxVelocity, | ||
| double | Kp, | ||
| double | Ki, | ||
| double | integratorWindupLimit, | ||
| bool | bypass = false |
||
| ) |
set the velocity loop parameters
| std::runtime_error | if minVelocity > maxVelocity |
| std::runtime_error | if integratorWindupLimit < 0 |
Definition at line 167 of file MultiLoopController.cpp.
| double MultiLoopController::update | ( | double | desiredPosition, |
| double | actualPosition, | ||
| double | actualVelocity, | ||
| double | busVoltage, | ||
| double & | desiredVelocity | ||
| ) |
update run through the multiloop controller based on the given inputs
| desiredPosition | in posUnits |
| actualPosition | in posUnits |
| actualVelocity | in velUnits |
| busVoltage | in volts |
| std::runtime_error | if parameters have not been set |
Force Control Loop
Position Loop
Velocity Loop
Definition at line 36 of file MultiLoopController.cpp.
| double MultiLoopController::update | ( | double | desiredPosition, |
| double | kTendon, | ||
| double | actualPosition, | ||
| double | actualTension, | ||
| double | actualVelocity, | ||
| double | busVoltage, | ||
| double & | desiredVelocity | ||
| ) |
update run through the multiloop controller based on the given inputs
| desiredPosition | in posUnits |
| kTendon | in posUnits per tensionUnit |
| actualPosition | in posUnits |
| actualTension | in tensionUnits |
| actualVelocity | in velUnits |
| busVoltage | in volts |
| std::runtime_error | if parameters have not been set |
Force Control Loop
Position Loop
Velocity Loop
Definition at line 67 of file MultiLoopController.cpp.
| double MultiLoopController::velocityLoop | ( | double | desiredVelocity, |
| double | actualVelocity, | ||
| double | busVoltage, | ||
| double & | limitedVelocity | ||
| ) |
these loops are broken out and public for testing purposes, update should be the primary interface
perform the velocity loop calculations; limitedVelocity is limited version of desiredVelocity
Velocity Loop
Current Loop
Definition at line 259 of file MultiLoopController.cpp.
double MultiLoopController::busVoltageRatio [private] |
Definition at line 169 of file MultiLoopController.h.
MultiLoopParams MultiLoopController::coeffs [private] |
Definition at line 168 of file MultiLoopController.h.
bool MultiLoopController::currentLoopSet [private] |
Definition at line 177 of file MultiLoopController.h.
bool MultiLoopController::hardwareSet [private] |
Definition at line 178 of file MultiLoopController.h.
bool MultiLoopController::loopRateSet [private] |
Definition at line 173 of file MultiLoopController.h.
bool MultiLoopController::positionLoopSet [private] |
Definition at line 174 of file MultiLoopController.h.
double MultiLoopController::previousDesiredCurrent [private] |
Definition at line 171 of file MultiLoopController.h.
double MultiLoopController::previousDesiredVelocity [private] |
Definition at line 172 of file MultiLoopController.h.
bool MultiLoopController::ready [private] |
Definition at line 179 of file MultiLoopController.h.
bool MultiLoopController::torqueLoopSet [private] |
Definition at line 175 of file MultiLoopController.h.
double MultiLoopController::velocityLoopIntegrator [private] |
Definition at line 170 of file MultiLoopController.h.
bool MultiLoopController::velocityLoopSet [private] |
Definition at line 176 of file MultiLoopController.h.