10 #include <mpark/variant.hpp>
17 namespace task_dynamics
27 using Gain = mpark::variant<double, Eigen::VectorXd, Eigen::MatrixXd>;
38 std::pair<const Gain &, const Gain &>
gains()
const;
50 void gains(
double kp,
double kv);
51 void gains(
const Eigen::VectorXd & kp,
const Eigen::VectorXd & kv);
52 void gains(
const Eigen::MatrixXd & kp,
const Eigen::MatrixXd & kv);
53 void gains(
double kp,
const Eigen::VectorXd & kv);
54 void gains(
double kp,
const Eigen::MatrixXd & kv);
55 void gains(
const Eigen::VectorXd & kp,
double kv);
56 void gains(
const Eigen::VectorXd & kp,
const Eigen::MatrixXd & kv);
57 void gains(
const Eigen::MatrixXd & kp,
double kv);
58 void gains(
const Eigen::MatrixXd & kp,
const Eigen::VectorXd & kv);
70 void gains(
const Eigen::VectorXd & kp);
79 void gains(
const Eigen::MatrixXd & kp);
82 const Gain &
kp()
const {
return kp_; }
89 {
return mpark::get<T>(kp_); }
103 {
return mpark::get<T>(kp_); }
113 {
return mpark::get<T>(kv_); }
127 {
return mpark::get<T>(kv_); }
130 void checkGainSize(
double k)
const;
131 void checkGainSize(
const Eigen::VectorXd & k)
const;
132 void checkGainSize(
const Eigen::MatrixXd & k)
const;
133 template<
typename T,
typename U>
134 void gains_(
const T & kp,
const U & kv);
187 const Eigen::VectorXd & rhs)
const override;
200 template<
typename T,
typename U>
201 inline void ProportionalDerivative::Impl::gains_(
const T & kp,
const U & kv)
#define TASK_DYNAMICS_DERIVED_FACTORY(...)
Definition: TaskDynamics.h:62
#define TVM_DLLAPI
Definition: api.h:35
Definition: ProportionalDerivative.h:30
void gains(const Eigen::MatrixXd &kp)
T & kp()
Definition: ProportionalDerivative.h:102
const Gain & kp() const
Definition: ProportionalDerivative.h:82
void gains(double kp, const Eigen::MatrixXd &kv)
T & kv()
Definition: ProportionalDerivative.h:126
std::pair< const Gain &, const Gain & > gains() const
Impl(FunctionPtr f, constraint::Type t, const Eigen::VectorXd &rhs, const Gain &kp, const Gain &kv)
Gain & kp()
Definition: ProportionalDerivative.h:94
void gains(const Eigen::VectorXd &kp)
const T & kp() const
Definition: ProportionalDerivative.h:88
void gains(const Eigen::MatrixXd &kp, const Eigen::VectorXd &kv)
const T & kv() const
Definition: ProportionalDerivative.h:112
void gains(double kp, const Eigen::VectorXd &kv)
void gains(const Eigen::VectorXd &kp, const Eigen::MatrixXd &kv)
void gains(const Eigen::VectorXd &kp, const Eigen::VectorXd &kv)
void gains(const Eigen::MatrixXd &kp, const Eigen::MatrixXd &kv)
void gains(const Eigen::MatrixXd &kp, double kv)
const Gain & kv() const
Definition: ProportionalDerivative.h:106
Gain & kv()
Definition: ProportionalDerivative.h:118
void gains(double kp, double kv)
void updateValue() override
void gains(const Eigen::VectorXd &kp, double kv)
Definition: ProportionalDerivative.h:25
ProportionalDerivative(const Eigen::MatrixXd &kp, double kv)
ProportionalDerivative(double kp, double kv)
ProportionalDerivative(const Eigen::MatrixXd &kp, const Eigen::VectorXd &kv)
ProportionalDerivative(double kp)
ProportionalDerivative(const Eigen::VectorXd &kp, const Eigen::MatrixXd &kv)
ProportionalDerivative(double kp, const Eigen::VectorXd &kv)
~ProportionalDerivative() override=default
Order order_() const override
ProportionalDerivative(const Eigen::VectorXd &kp, const Eigen::VectorXd &kv)
ProportionalDerivative(const Eigen::VectorXd &kp)
mpark::variant< double, Eigen::VectorXd, Eigen::MatrixXd > Gain
Definition: ProportionalDerivative.h:27
std::unique_ptr< abstract::TaskDynamicsImpl > impl_(FunctionPtr f, constraint::Type t, const Eigen::VectorXd &rhs) const override
ProportionalDerivative(double kp, const Eigen::MatrixXd &kv)
ProportionalDerivative(const Eigen::MatrixXd &kp, const Eigen::MatrixXd &kv)
ProportionalDerivative(const Eigen::MatrixXd &kp)
ProportionalDerivative(const Eigen::VectorXd &kp, double kv)
Definition: TaskDynamicsImpl.h:33
Definition: TaskDynamics.h:37
Type
Definition: enums.h:15
Order
Definition: enums.h:14
std::shared_ptr< function::abstract::Function > FunctionPtr
Definition: defs.h:57