29 FeatureGeneric::FeatureGeneric(
const string &pointName)
32 errorSIN(NULL,
"sotFeatureGeneric(" +
name +
")::input(vector)::errorIN"),
34 "sotFeatureGeneric(" +
name +
")::input(matrix)::jacobianIN")
48 assert(SP::isReferenceSet());
54 assert(SP::isReferenceSet());
83 unsigned int curr = 0;
85 if (err.size() < dim) {
88 "Error: dimension uncompatible with des->errorIN size." 89 " (while considering feature <%s>).",
94 sotDEBUG(25) <<
"Dim = " << dim << endl;
99 if (errDes.size() < dim) {
102 "Error: dimension uncompatible with des->errorIN size." 103 " (while considering feature <%s>).",
107 for (
int i = 0;
i < err.size(); ++
i)
109 if (fl(
i)) res(curr++) = err(
i) - errDes(
i);
111 for (
int i = 0;
i < err.size(); ++
i)
112 if (fl(
i)) res(curr++) = err(
i);
125 unsigned int curr = 0;
126 res.resize(dim, Jac.cols());
128 for (
unsigned int i = 0; curr < dim; ++
i)
130 for (
int j = 0; j < Jac.cols(); ++j) res(curr, j) = Jac(
i, j);
143 os <<
"Generic <" <<
name <<
">: " << std::endl;
virtual void removeDependenciesFromReference(void)=0
SignalTimeDependent< dynamicgraph::Vector, int > errordotSOUT
Derivative of the error with respect to time: .
virtual dynamicgraph::Vector & computeError(dynamicgraph::Vector &res, int time)
Compute the error between the desired value and the value itself.
SignalPtr< Flags, int > selectionSIN
This vector specifies which dimension are used to perform the computation. For instance let us assume...
SignalTimeDependent< unsigned int, int > dimensionSOUT
Returns the dimension of the feature as an output signal.
void signalRegistration(const SignalArray< int > &signals)
#define sotDEBUGOUT(level)
virtual bool isReferenceSet(void) const
dynamicgraph::SignalPtr< dynamicgraph::Matrix, int > jacobianSIN
Input for the Jacobian.
#define sotDEBUGIN(level)
SignalTimeDependent< dynamicgraph::Matrix, int > jacobianSOUT
Jacobian of the error wrt the robot state: .
unsigned int getDimension(void) const
Shortest method.
SignalPtr< dynamicgraph::Vector, int > errordotSIN
Derivative of the reference value.
virtual const T & access(const Time &t)
virtual void removeDependency(const SignalBase< Time > &signal)
virtual void addDependency(const SignalBase< Time > &signal)
virtual const T & accessCopy() const
dynamicgraph::Vector::Index dimensionDefault
This class gives the abstract definition of a feature.
const std::string & getName() const
DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN(FeatureGeneric, "FeatureGeneric")
virtual void addDependenciesFromReference(void)=0
virtual const char * what() const
FeatureGeneric * getReference(void)
virtual void display(std::ostream &os) const
Display the information related to this generic implementation.
virtual dynamicgraph::Matrix & computeJacobian(dynamicgraph::Matrix &res, int time)
Compute the Jacobian of the value according to the robot state..
dynamicgraph::SignalPtr< dynamicgraph::Vector, int > errorSIN
Input for the error.
SignalTimeDependent< dynamicgraph::Vector, int > errorSOUT
This signal returns the error between the desired value and the current value : . ...
Class that defines a generic implementation of the abstract interface for features.