17 #ifndef HPP_PINOCCHIO_LIEGROUP_SPACE_HH 18 # define HPP_PINOCCHIO_LIEGROUP_SPACE_HH 22 # include <pinocchio/fwd.hpp> 23 # include <boost/variant.hpp> 24 # include <pinocchio/multibody/liegroup/special-euclidean.hpp> 25 # include <pinocchio/multibody/liegroup/special-orthogonal.hpp> 26 # include <pinocchio/multibody/liegroup/vector-space.hpp> 35 #ifdef HPP_PINOCCHIO_PARSED_BY_DOXYGEN 48 typedef boost::variant <liegroup::VectorSpaceOperation
49 <Eigen::Dynamic,
false>,
50 liegroup::VectorSpaceOperation <1, true>,
51 liegroup::VectorSpaceOperation <1, false>,
52 liegroup::VectorSpaceOperation <2, false>,
53 liegroup::VectorSpaceOperation <3, false>,
54 liegroup::VectorSpaceOperation <3, true>,
55 liegroup::CartesianProductOperation<
56 liegroup::VectorSpaceOperation<3, false>,
57 liegroup::SpecialOrthogonalOperation<3> >,
58 liegroup::CartesianProductOperation<
59 liegroup::VectorSpaceOperation<2, false>,
60 liegroup::SpecialOrthogonalOperation<2> >,
61 liegroup::SpecialOrthogonalOperation <2>,
62 liegroup::SpecialOrthogonalOperation <3>,
63 liegroup::SpecialEuclideanOperation <2>,
64 liegroup::SpecialEuclideanOperation <3> >
95 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
170 return liegroupTypes_;
208 template <DerivativeProduct s
ide>
230 template <DerivativeProduct s
ide>
234 template <
bool ApplyOnTheLeft>
246 template <DerivativeProduct s
ide>
258 template <DerivativeProduct s
ide>
273 std::string
name ()
const;
297 void init (
const LiegroupSpaceWkPtr_t weak);
301 void computeNeutral ();
302 typedef std::vector <LiegroupType> LiegroupTypes;
303 LiegroupTypes liegroupTypes_;
309 LiegroupSpaceWkPtr_t weak_;
315 os << space.
name ();
return os;
337 #endif // HPP_PINOCCHIO_LIEGROUP_SPACE_HH void Jdifference(vectorIn_t q0, vectorIn_t q1, matrixOut_t J0, matrixOut_t J1) const
static LiegroupSpacePtr_t SE3()
Return .
static LiegroupSpacePtr_t R2()
Return as a Lie group.
bool isVectorSpace() const
LiegroupSpacePtr_t vectorSpacesMerged() const
static LiegroupSpacePtr_t Rn(const size_type &n)
Definition: liegroup-space.hh:322
static LiegroupSpacePtr_t SO3()
Return .
static LiegroupSpacePtr_t R1()
Return as a Lie group.
static LiegroupSpacePtr_t R3()
Return as a Lie group.
Eigen::Ref< vector_t > vectorOut_t
Definition: fwd.hh:81
LiegroupElement neutral() const
Return the neutral element as a vector.
LiegroupElementConstRef elementConstRef(vectorIn_t q) const
Create a LiegroupElementRef from a configuration.
static LiegroupSpacePtr_t SE2()
Return .
ABoostVariant LiegroupType
Definition: liegroup-space.hh:46
bool operator!=(const LiegroupSpace &other) const
void dIntegrate_dv(LiegroupElementConstRef q, vectorIn_t v, matrixOut_t Jv) const
static LiegroupSpacePtr_t empty()
Return empty Lie group.
matrix_t::Index size_type
Definition: fwd.hh:84
size_type nv() const
Dimension of the Lie group tangent space.
Definition: liegroup-space.hh:158
Eigen::Ref< matrix_t > matrixOut_t
Definition: fwd.hh:83
Definition: liegroup-space.hh:92
size_type nq() const
Dimension of the vector representation.
Definition: liegroup-space.hh:153
Definition: liegroup-space.hh:70
bool operator==(const LiegroupSpace &other) const
std::ostream & operator<<(std::ostream &os, const hpp::pinocchio::Device &device)
Definition: device.hh:344
Eigen::Matrix< value_type, Eigen::Dynamic, 1 > vector_t
Definition: fwd.hh:75
static LiegroupSpacePtr_t createCopy(const LiegroupSpaceConstPtr_t &other)
Create copy.
Definition: liegroup-space.hh:135
DerivativeProduct
Definition: liegroup-space.hh:68
boost::shared_ptr< const LiegroupSpace > LiegroupSpaceConstPtr_t
Definition: fwd.hh:135
static LiegroupSpacePtr_t create(const LiegroupType &type)
Create instance with one Elementary Lie group.
Definition: liegroup-space.hh:144
LiegroupElement element(vectorIn_t q) const
Create a LiegroupElement from a configuration.
static LiegroupSpacePtr_t R2xSO2()
Return .
LiegroupElementRef elementRef(vectorOut_t q) const
Create a LiegroupElementRef from a configuration.
double value_type
Definition: fwd.hh:40
static LiegroupSpacePtr_t R3xSO3()
Return .
LiegroupSpacePtr_t operator*=(const LiegroupSpaceConstPtr_t &other)
Eigen::Ref< const vector_t > vectorIn_t
Definition: fwd.hh:80
LiegroupElement exp(vectorIn_t v) const
Return exponential of a tangent vector.
void dIntegrate_dq(LiegroupElementConstRef q, vectorIn_t v, matrixOut_t Jq) const
void dDifference_dq0(vectorIn_t q0, vectorIn_t q1, matrixOut_t J0) const
static LiegroupSpacePtr_t SO2()
Return .
boost::shared_ptr< LiegroupSpace > LiegroupSpacePtr_t
Definition: fwd.hh:134
Definition: liegroup-space.hh:69
void dDifference_dq1(vectorIn_t q0, vectorIn_t q1, matrixOut_t J1) const
void interpolate(vectorIn_t q0, vectorIn_t q1, value_type u, vectorOut_t result) const
std::string name() const
Return name of Lie group.
hpp::pinocchio::LiegroupSpacePtr_t operator*(const hpp::pinocchio::LiegroupSpaceConstPtr_t &sp1, const hpp::pinocchio::LiegroupSpaceConstPtr_t &sp2)
Cartesian product between Lie groups.
static LiegroupSpacePtr_t create(const size_type &size)
Create instance of vector space of given size.
Definition: liegroup-space.hh:125
const std::vector< LiegroupType > & liegroupTypes() const
Get reference to vector of elementary types.
Definition: liegroup-space.hh:168