virtual ~GenericTransformation ()
void reference (const Transform3s &reference)
Transform3s reference () const
Get desired relative orientation.
void joint1 (const JointConstPtr_t &joint)
Set joint 1.
JointConstPtr_t joint1 () const
Get joint 1.
void joint2 (const JointConstPtr_t &joint)
Set joint 2.
JointConstPtr_t joint2 () const
Get joint 2.
void frame1InJoint1 (const Transform3s &M)
Set position of frame 1 in joint 1.
const Transform3s & frame1InJoint1 () const
Get position of frame 1 in joint 1.
void frame2InJoint2 (const Transform3s &M)
Set position of frame 2 in joint 2.
const Transform3s & frame2InJoint2 () const
Get position of frame 2 in joint 2.
std::pair< JointConstPtr_t , JointConstPtr_t > dependsOnRelPoseBetween (DeviceConstPtr_t ) const
virtual std::ostream & print (std::ostream &o) const
Display object in a stream.
GenericTransformation (const std::string &name , const DevicePtr_t &robot, std::vector< bool > mask)
virtual ~DifferentiableFunction ()
LiegroupElement operator() (vectorIn_t argument) const
void value (LiegroupElementRef result, vectorIn_t argument) const
void jacobian (matrixOut_t jacobian, vectorIn_t argument) const
const ArrayXb & activeParameters () const
const ArrayXb & activeDerivativeParameters () const
size_type inputSize () const
Get dimension of input vector.
size_type inputDerivativeSize () const
LiegroupSpacePtr_t outputSpace () const
Get output space.
size_type outputSize () const
Get dimension of output vector.
size_type outputDerivativeSize () const
Get dimension of output derivative vector.
const std::string & name () const
Get function name.
std::string context () const
void context (const std::string &c)
void finiteDifferenceForward (matrixOut_t jacobian , vectorIn_t arg, DevicePtr_t robot=DevicePtr_t (), value_type eps=std::sqrt(Eigen::NumTraits< value_type >::epsilon())) const
void finiteDifferenceCentral (matrixOut_t jacobian , vectorIn_t arg, DevicePtr_t robot=DevicePtr_t (), value_type eps=std::sqrt(Eigen::NumTraits< value_type >::epsilon())) const
bool operator== (DifferentiableFunction const &other) const
bool operator!= (DifferentiableFunction const &b) const
static Ptr_t create (const std::string &name , const DevicePtr_t &robot, const JointConstPtr_t &joint2 , const Transform3s &reference , std::vector< bool > mask=std::vector< bool >(DerSize , true))
static Ptr_t create (const std::string &name , const DevicePtr_t &robot, const JointConstPtr_t &joint2 , const Transform3s &frame2, const Transform3s &frame1, std::vector< bool > mask=std::vector< bool >(DerSize , true))
static Ptr_t create (const std::string &name , const DevicePtr_t &robot, const JointConstPtr_t &joint1 , const JointConstPtr_t &joint2 , const Transform3s &reference , std::vector< bool > mask=std::vector< bool >(DerSize , true))
static Ptr_t create (const std::string &name , const DevicePtr_t &robot, const JointConstPtr_t &joint1 , const JointConstPtr_t &joint2 , const Transform3s &frame1, const Transform3s &frame2, std::vector< bool > mask=std::vector< bool >(DerSize , true))
void init (const WkPtr_t &self)
virtual void impl_compute (LiegroupElementRef result, ConfigurationIn_t argument) const
virtual void impl_jacobian (matrixOut_t jacobian , ConfigurationIn_t arg) const
bool isEqual (const DifferentiableFunction &other) const
DifferentiableFunction (size_type sizeInput, size_type sizeInputDerivative, size_type sizeOutput, std::string name =std::string())
Concrete class constructor should call this constructor.
DifferentiableFunction (size_type sizeInput, size_type sizeInputDerivative, const LiegroupSpacePtr_t &outputSpace , std::string name =std::string())
Concrete class constructor should call this constructor.
virtual void impl_compute (LiegroupElementRef result, vectorIn_t argument) const =0
User implementation of function evaluation.
virtual void impl_jacobian (matrixOut_t jacobian , vectorIn_t arg) const =0
DifferentiableFunction ()
template<int _Options>
class hpp::constraints::GenericTransformation< _Options >
GenericTransformation class encapsulates 10 possible differentiable functions: Position, Orientation, OrientationSO3, Transformation, TransformationR3xSO3 and their relative versions RelativeTransformationR3xSO3, RelativePosition, RelativeOrientation, RelativeOrientationSO3, RelativeTransformation.
These functions compute the position of frame GenericTransformation::frame2InJoint2 in joint GenericTransformation::joint2 frame, in the frame GenericTransformation::frame1InJoint1 in GenericTransformation::joint1 frame. For absolute functions, GenericTransformation::joint1 is NULL and joint1 frame is the world frame.
The value of the RelativeTransformation function is a 6-dimensional vector. The 3 first coordinates are the position of the center of the second frame expressed in the first frame. The 3 last coordinates are the log of the orientation of frame 2 in frame 1. The values of RelativePosition and RelativeOrientation are respectively the 3 first and the 3 last components of the above 6 dimensional vector.
The Jacobian is given by
For RelativeTransformationR3xSO3, OrientationSO3, the 3 last components are replaced by a quaternion.