diff --git a/motor_controllerTypes.hpp b/motor_controllerTypes.hpp index 594277b..8f814bf 100644 --- a/motor_controllerTypes.hpp +++ b/motor_controllerTypes.hpp @@ -14,6 +14,9 @@ namespace motor_controller { /** Max allowed variation in input command in unit/s */ float ramp = base::infinity(); + + /** How the derivative is computed */ + DerivativeMode derivative_mode = Output; }; } diff --git a/tasks/PIDTask.cpp b/tasks/PIDTask.cpp index a92cdd7..9ebb1ad 100644 --- a/tasks/PIDTask.cpp +++ b/tasks/PIDTask.cpp @@ -54,6 +54,7 @@ bool PIDTask::startHook() for (size_t i = 0; i < mSettings.size(); ++i) { mPIDs[i].reset(); mPIDs[i].setPIDSettings(mSettings[i].pid); + mPIDs[i].setDerivativeMode(mSettings[i].derivative_mode); } return true; } @@ -68,6 +69,7 @@ bool PIDTask::setSettings(std::vector< ::motor_controller::ActuatorSettings > co mSettings = value; for (size_t i = 0; i < mSettings.size(); ++i) { mPIDs[i].setPIDSettings(mSettings[i].pid); + mPIDs[i].setDerivativeMode(mSettings[i].derivative_mode); } return motor_controller::PIDTaskBase::setSettings(value); }