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>
32 template<
typename LieGroupCollection>
42 template<
typename LieGroupCollection>
52 template<
typename LieGroupCollection>
54 Matrix<typename LieGroupCollection::Scalar, Eigen::Dynamic, 1, LieGroupCollection::Options>
65 template<
typename LieGroupCollection,
class ConfigIn_t,
class Tangent_t,
class ConfigOut_t>
68 const Eigen::MatrixBase<ConfigIn_t> & q,
69 const Eigen::MatrixBase<Tangent_t> & v,
70 const Eigen::MatrixBase<ConfigOut_t> &
qout);
72 template<
typename LieGroupCollection,
class Config_t>
76 template<
typename LieGroupCollection,
class Config_t>
80 template<
typename LieGroupCollection,
class Config_t>
83 const Eigen::MatrixBase<Config_t> &
qin,
84 const typename Config_t::Scalar &
prec =
85 Eigen::NumTraits<typename Config_t::Scalar>::dummy_precision());
87 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t>
90 const Eigen::MatrixBase<ConfigL_t> & q0,
91 const Eigen::MatrixBase<ConfigR_t> &
q1,
92 const typename ConfigL_t::Scalar &
prec);
94 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t>
97 const Eigen::MatrixBase<ConfigL_t> & q0,
98 const Eigen::MatrixBase<ConfigR_t> &
q1);
100 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t>
101 inline typename ConfigL_t::Scalar
distance(
103 const Eigen::MatrixBase<ConfigL_t> & q0,
104 const Eigen::MatrixBase<ConfigR_t> &
q1)
109 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t,
class Tangent_t>
111 const LieGroupGenericTpl<LieGroupCollection> & lg,
112 const Eigen::MatrixBase<ConfigL_t> & q0,
113 const Eigen::MatrixBase<ConfigR_t> & q1,
114 const Eigen::MatrixBase<Tangent_t> & v);
116 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t,
class ConfigOut_t>
118 const LieGroupGenericTpl<LieGroupCollection> & lg,
119 const Eigen::MatrixBase<ConfigL_t> & q0,
120 const Eigen::MatrixBase<ConfigR_t> & q1,
121 const Eigen::MatrixBase<ConfigOut_t> & qout);
123 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t,
class ConfigOut_t>
125 const LieGroupGenericTpl<LieGroupCollection> & lg,
126 const Eigen::MatrixBase<ConfigL_t> & q0,
127 const Eigen::MatrixBase<ConfigR_t> & q1,
128 const typename ConfigL_t::Scalar & u,
129 const Eigen::MatrixBase<ConfigOut_t> & qout);
131 template<
typename LieGroupCollection,
class Config_t,
class Tangent_t,
class JacobianOut_t>
133 const LieGroupGenericTpl<LieGroupCollection> & lg,
134 const Eigen::MatrixBase<Config_t> & q,
135 const Eigen::MatrixBase<Tangent_t> & v,
136 const Eigen::MatrixBase<JacobianOut_t> & J,
138 const AssignmentOperatorType op = SETTO);
141 typename LieGroupCollection,
147 const LieGroupGenericTpl<LieGroupCollection> & lg,
148 const Eigen::MatrixBase<Config_t> & q,
149 const Eigen::MatrixBase<Tangent_t> & v,
150 const Eigen::MatrixBase<JacobianIn_t> & J_in,
152 const Eigen::MatrixBase<JacobianOut_t> & J_out,
154 const AssignmentOperatorType op = SETTO);
157 typename LieGroupCollection,
163 const LieGroupGenericTpl<LieGroupCollection> & lg,
164 const Eigen::MatrixBase<Config_t> & q,
165 const Eigen::MatrixBase<Tangent_t> & v,
167 const Eigen::MatrixBase<JacobianIn_t> & J_in,
168 const Eigen::MatrixBase<JacobianOut_t> & J_out,
170 const AssignmentOperatorType op = SETTO);
172 template<
typename LieGroupCollection,
class ConfigL_t,
class ConfigR_t,
class JacobianOut_t>
174 const LieGroupGenericTpl<LieGroupCollection> & lg,
175 const Eigen::MatrixBase<ConfigL_t> & q0,
176 const Eigen::MatrixBase<ConfigR_t> & q1,
177 const Eigen::MatrixBase<JacobianOut_t> & J,
181 typename LieGroupCollection,
187 const LieGroupGenericTpl<LieGroupCollection> & lg,
188 const Eigen::MatrixBase<ConfigL_t> & q0,
189 const Eigen::MatrixBase<ConfigR_t> & q1,
190 const Eigen::MatrixBase<JacobianIn_t> & Jin,
192 const Eigen::MatrixBase<JacobianOut_t> & Jout,
196 typename LieGroupCollection,
202 const LieGroupGenericTpl<LieGroupCollection> & lg,
203 const Eigen::MatrixBase<ConfigL_t> & q0,
204 const Eigen::MatrixBase<ConfigR_t> & q1,
206 const Eigen::MatrixBase<JacobianIn_t> & Jin,
207 const Eigen::MatrixBase<JacobianOut_t> & Jout,
211 typename LieGroupCollection,
217 const LieGroupGenericTpl<LieGroupCollection> & lg,
218 const Eigen::MatrixBase<Config_t> & q,
219 const Eigen::MatrixBase<Tangent_t> & v,
220 const Eigen::MatrixBase<JacobianIn_t> & J_in,
221 const Eigen::MatrixBase<JacobianOut_t> & J_out,
224 template<
typename LieGroupCollection,
class Config_t,
class Tangent_t,
class JacobianOut_t>
226 const LieGroupGenericTpl<LieGroupCollection> & lg,
227 const Eigen::MatrixBase<Config_t> & q,
228 const Eigen::MatrixBase<Tangent_t> & v,
229 const Eigen::MatrixBase<JacobianOut_t> & J,
234#include "pinocchio/multibody/liegroup/liegroup-variant-visitors.hxx"
Main pinocchio namespace.
void neutral(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ReturnType > &qout)
Return the neutral configuration element related to the model configuration space.
int nv(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl through JointNvVisitor to get the dimension of the joint tangent space.
ArgumentPosition
Argument position. Used as template parameter to refer to an argument.
void normalize(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorType > &qout)
Normalize a configuration vector.
int nq(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl through JointNqVisitor to get the dimension of the joint configuration space.
void difference(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorIn1 > &q0, const Eigen::MatrixBase< ConfigVectorIn2 > &q1, const Eigen::MatrixBase< ReturnType > &dvout)
Compute the tangent vector that must be integrated during one unit time to go from q0 to q1.
std::string name(const LieGroupGenericTpl< LieGroupCollection > &lg)
Visit a LieGroupVariant to get the name of it.
void integrate(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorType > &q, const Eigen::MatrixBase< TangentVectorType > &v, const Eigen::MatrixBase< ReturnType > &qout)
Integrate a configuration vector for the specified model for a tangent vector during one unit time.
Scalar distance(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorIn1 > &q0, const Eigen::MatrixBase< ConfigVectorIn2 > &q1)
Distance between two configuration vectors, namely .
void dIntegrateTransport(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorType > &q, const Eigen::MatrixBase< TangentVectorType > &v, const Eigen::MatrixBase< JacobianMatrixType1 > &Jin, const Eigen::MatrixBase< JacobianMatrixType2 > &Jout, const ArgumentPosition arg)
Transport a matrix from the terminal to the initial tangent space of the integrate operation,...
void randomConfiguration(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorIn1 > &lowerLimits, const Eigen::MatrixBase< ConfigVectorIn2 > &upperLimits, const Eigen::MatrixBase< ReturnType > &qout)
Generate a configuration vector uniformly sampled among provided limits.
void interpolate(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorIn1 > &q0, const Eigen::MatrixBase< ConfigVectorIn2 > &q1, const Scalar &u, const Eigen::MatrixBase< ReturnType > &qout)
Interpolate two configurations for a given model.
bool isSameConfiguration(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorIn1 > &q1, const Eigen::MatrixBase< ConfigVectorIn2 > &q2, const Scalar &prec=Eigen::NumTraits< Scalar >::dummy_precision())
Return true if the given configurations are equivalents, within the given precision.
void dDifference(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVector1 > &q0, const Eigen::MatrixBase< ConfigVector2 > &q1, const Eigen::MatrixBase< JacobianMatrix > &J, const ArgumentPosition arg)
Computes the Jacobian of a small variation of the configuration vector into the tangent space at iden...
bool isNormalized(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorType > &q, const Scalar &prec=Eigen::NumTraits< Scalar >::dummy_precision())
Check whether a configuration vector is normalized within the given precision provided by prec.
void dIntegrate(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorType > &q, const Eigen::MatrixBase< TangentVectorType > &v, const Eigen::MatrixBase< JacobianMatrixType > &J, const ArgumentPosition arg, const AssignmentOperatorType op=SETTO)
Computes the Jacobian of a small variation of the configuration vector or the tangent vector into the...
void squaredDistance(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorIn1 > &q0, const Eigen::MatrixBase< ConfigVectorIn2 > &q1, const Eigen::MatrixBase< ReturnType > &out)
Squared distance between two configuration vectors.