13 namespace task_dynamics
20 template<
class TD,
class TDImpl =
typename TD::Impl>
29 template<
class FFProvider,
class FFSignal,
typename... Args>
31 const Eigen::VectorXd & (FFProvider::*method)()
const,
34 : TD(
std::forward<Args>(args)...)
36 feedForward_ = [provider, method]() ->
const Eigen::VectorXd & {
return ((provider.get())->*method)(); };
38 impl.addInputDependency(TDImpl::Update::UpdateValue, provider, signal);
49 template<
typename... Args>
52 const Eigen::VectorXd & rhs,
56 : TDImpl(f, t, rhs,
std::forward<Args>(args)...), feedForward_(ff)
58 if(feedForward_().size() != this->
function().size())
60 throw std::runtime_error(
61 "[task_dynamics::FeedForward] Feed forward term does not have the same size as the provided function");
70 TDImpl::updateValue();
71 this->value_ += feedForward_();
83 const Eigen::VectorXd & rhs)
const override
#define COMPOSABLE_TASK_DYNAMICS_DERIVED_FACTORY(T,...)
Definition: TaskDynamics.h:82
Definition: FeedForward.h:45
Impl(FunctionPtr f, constraint::Type t, const Eigen::VectorXd &rhs, const getFeedForwardT &ff, const addProviderDependencyT &addPD, Args &&... args)
Definition: FeedForward.h:50
void updateValue() override
Definition: FeedForward.h:68
Definition: FeedForward.h:22
~FeedForward() override=default
addProviderDependencyT addProviderDependency_
Definition: FeedForward.h:80
std::function< void(Impl &)> addProviderDependencyT
Definition: FeedForward.h:27
getFeedForwardT feedForward_
Definition: FeedForward.h:79
std::function< const Eigen::VectorXd &()> getFeedForwardT
Definition: FeedForward.h:26
std::unique_ptr< abstract::TaskDynamicsImpl > impl_(FunctionPtr f, constraint::Type t, const Eigen::VectorXd &rhs) const override
Definition: FeedForward.h:81
FeedForward(std::shared_ptr< FFProvider > provider, const Eigen::VectorXd &(FFProvider::*method)() const, FFSignal signal, Args &&... args)
Definition: FeedForward.h:30
Type
Definition: enums.h:15
std::shared_ptr< function::abstract::Function > FunctionPtr
Definition: defs.h:57