5 #ifndef __pinocchio_lie_group_variant_visitor_hpp__
6 #define __pinocchio_lie_group_variant_visitor_hpp__
8 #include "pinocchio/multibody/liegroup/fwd.hpp"
21 template<
typename LieGroupCollection>
22 inline int nq(
const LieGroupGenericTpl<LieGroupCollection> & lg);
32 template<
typename LieGroupCollection>
33 inline int nv(
const LieGroupGenericTpl<LieGroupCollection> & lg);
42 template<
typename LieGroupCollection>
43 inline std::string
name(
const LieGroupGenericTpl<LieGroupCollection> & lg);
52 template<
typename LieGroupCollection>
53 inline Eigen::Matrix<typename LieGroupCollection::Scalar,Eigen::Dynamic,1,LieGroupCollection::Options>
54 neutral(
const LieGroupGenericTpl<LieGroupCollection> & lg);
64 template<
typename LieGroupCollection,
class ConfigIn_t,
class Tangent_t,
class ConfigOut_t>
65 inline void integrate(
const LieGroupGenericTpl<LieGroupCollection> & lg,
66 const Eigen::MatrixBase<ConfigIn_t> & q,
67 const Eigen::MatrixBase<Tangent_t> & v,
68 const Eigen::MatrixBase<ConfigOut_t>& qout);
70 template<
typename LieGroupCollection,
class Config_t>
71 inline void random(
const LieGroupGenericTpl<LieGroupCollection> & lg,
72 const Eigen::MatrixBase<Config_t> & qout);
74 template<
typename LieGroupCollection,
class Config_t>
75 inline void normalize(
const LieGroupGenericTpl<LieGroupCollection> & lg,
76 const Eigen::MatrixBase<Config_t> & qout);
78 template<
typename LieGroupCollection,
class Config_t>
79 inline bool isNormalized(
const LieGroupGenericTpl<LieGroupCollection> & lg,
80 const Eigen::MatrixBase<Config_t> & qin,
81 const typename Config_t::Scalar& prec = Eigen::NumTraits<typename Config_t::Scalar>::dummy_precision());
83 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t>
85 const Eigen::MatrixBase<ConfigL_t> & q0,
86 const Eigen::MatrixBase<ConfigR_t> & q1,
87 const typename ConfigL_t::Scalar& prec);
89 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t>
90 inline typename ConfigL_t::Scalar
92 const Eigen::MatrixBase<ConfigL_t> & q0,
93 const Eigen::MatrixBase<ConfigR_t> & q1);
95 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t>
96 inline typename ConfigL_t::Scalar
97 distance(
const LieGroupGenericTpl<LieGroupCollection> & lg,
98 const Eigen::MatrixBase<ConfigL_t> & q0,
99 const Eigen::MatrixBase<ConfigR_t> & q1)
104 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t,
class Tangent_t>
105 inline void difference(
const LieGroupGenericTpl<LieGroupCollection> & lg,
106 const Eigen::MatrixBase<ConfigL_t> & q0,
107 const Eigen::MatrixBase<ConfigR_t> & q1,
108 const Eigen::MatrixBase<Tangent_t> & v);
110 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t,
class ConfigOut_t>
112 const Eigen::MatrixBase<ConfigL_t> & q0,
113 const Eigen::MatrixBase<ConfigR_t> & q1,
114 const Eigen::MatrixBase<ConfigOut_t> & qout);
116 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t,
class ConfigOut_t>
117 inline void interpolate(
const LieGroupGenericTpl<LieGroupCollection> & lg,
118 const Eigen::MatrixBase<ConfigL_t> & q0,
119 const Eigen::MatrixBase<ConfigR_t> & q1,
120 const typename ConfigL_t::Scalar& u,
121 const Eigen::MatrixBase<ConfigOut_t> & qout);
123 template<
typename LieGroupCollection,
class Config_t,
class Tangent_t,
class JacobianOut_t>
124 void dIntegrate(
const LieGroupGenericTpl<LieGroupCollection> & lg,
125 const Eigen::MatrixBase<Config_t > & q,
126 const Eigen::MatrixBase<Tangent_t> & v,
127 const Eigen::MatrixBase<JacobianOut_t> & J,
129 const AssignmentOperatorType op = SETTO);
131 template<
typename LieGroupCollection,
class Config_t,
class Tangent_t,
class JacobianIn_t,
class JacobianOut_t>
132 void dIntegrate(
const LieGroupGenericTpl<LieGroupCollection> & lg,
133 const Eigen::MatrixBase<Config_t > & q,
134 const Eigen::MatrixBase<Tangent_t> & v,
135 const Eigen::MatrixBase<JacobianIn_t> & J_in,
137 const Eigen::MatrixBase<JacobianOut_t> & J_out,
139 const AssignmentOperatorType op = SETTO);
141 template<
typename LieGroupCollection,
class Config_t,
class Tangent_t,
class JacobianIn_t,
class JacobianOut_t>
142 void dIntegrate(
const LieGroupGenericTpl<LieGroupCollection> & lg,
143 const Eigen::MatrixBase<Config_t > & q,
144 const Eigen::MatrixBase<Tangent_t> & v,
146 const Eigen::MatrixBase<JacobianIn_t> & J_in,
147 const Eigen::MatrixBase<JacobianOut_t> & J_out,
149 const AssignmentOperatorType op = SETTO);
151 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t,
class JacobianOut_t>
152 void dDifference(
const LieGroupGenericTpl<LieGroupCollection> & lg,
153 const Eigen::MatrixBase<ConfigL_t> & q0,
154 const Eigen::MatrixBase<ConfigR_t> & q1,
155 const Eigen::MatrixBase<JacobianOut_t> & J,
158 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t,
class JacobianIn_t,
class JacobianOut_t>
159 void dDifference(
const LieGroupGenericTpl<LieGroupCollection> & lg,
160 const Eigen::MatrixBase<ConfigL_t> & q0,
161 const Eigen::MatrixBase<ConfigR_t> & q1,
162 const Eigen::MatrixBase<JacobianIn_t> & Jin,
164 const Eigen::MatrixBase<JacobianOut_t> & Jout,
167 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t,
class JacobianIn_t,
class JacobianOut_t>
168 void dDifference(
const LieGroupGenericTpl<LieGroupCollection> & lg,
169 const Eigen::MatrixBase<ConfigL_t> & q0,
170 const Eigen::MatrixBase<ConfigR_t> & q1,
172 const Eigen::MatrixBase<JacobianIn_t> & Jin,
173 const Eigen::MatrixBase<JacobianOut_t> & Jout,
176 template<
typename LieGroupCollection,
class Config_t,
class Tangent_t,
class JacobianIn_t,
class JacobianOut_t>
178 const Eigen::MatrixBase<Config_t > & q,
179 const Eigen::MatrixBase<Tangent_t> & v,
180 const Eigen::MatrixBase<JacobianIn_t> & J_in,
181 const Eigen::MatrixBase<JacobianOut_t> & J_out,
184 template<
typename LieGroupCollection,
class Config_t,
class Tangent_t,
class JacobianOut_t>
186 const Eigen::MatrixBase<Config_t > & q,
187 const Eigen::MatrixBase<Tangent_t> & v,
188 const Eigen::MatrixBase<JacobianOut_t> & J,
193 #include "pinocchio/multibody/liegroup/liegroup-variant-visitors.hxx"
195 #endif // ifndef __pinocchio_lie_group_variant_visitor_hpp__