7#include <pinocchio/multibody/liegroup/liegroup-base.hpp>
8#include <pinocchio/algorithm/joint-configuration.hpp>
12namespace pin = pinocchio;
22template <
typename LieGroup_>
27 using Scalar =
typename LieGroup::Scalar;
41 :
Base(lg.nq(), lg.nv())
46 template <
typename... Args>
49 ,
lg_(std::forward<Args>(args)...) {
60 return lg_.isNormalized(x);
67 VectorRef out)
const {
68 lg_.integrate(x, v, out);
72 VectorRef vout)
const {
73 lg_.difference(x0, x1, vout);
77 MatrixRef Jout,
int arg)
const {
80 lg_.dIntegrate_dq(x, v, Jout);
83 lg_.dIntegrate_dv(x, v, Jout);
89 const ConstVectorRef &v, MatrixRef Jout,
91 lg_.dIntegrateTransport(x, v, Jout, pin::ArgumentPosition(arg));
95 MatrixRef Jout,
int arg)
const {
98 lg_.dDifference(x0, x1, Jout, pin::ARG0);
101 lg_.dDifference(x0, x1, Jout, pin::ARG1);
107 const ConstVectorRef &x1,
const Scalar &u,
108 VectorRef out)
const {
109 lg_.interpolate(x0, x1, u, out);
119template <
int D,
typename Scalar>
122template <
int D,
typename Scalar>
constexpr bool is_pinocchio_lie_group_v
PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > > SETpl
constexpr bool is_tpl_base_of_v
PinocchioLieGroup(const G &) -> PinocchioLieGroup< G >
PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > > SOTpl
ManifoldAbstractTpl(int nx, int ndx)
Wrap a Pinocchio Lie group into a ManifoldAbstractTpl object.
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
PinocchioLieGroup(PinocchioLieGroup &&lg)=default
LieGroup lieGroup() const
void Jintegrate_impl(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
PinocchioLieGroup(Args &&...args)
virtual void rand_impl(VectorRef out) const
ManifoldAbstractTpl< Scalar > Base
void difference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef vout) const
Implementation of the manifold retraction operation.
PinocchioLieGroup(const PinocchioLieGroup &lg)=default
typename LieGroup::Scalar Scalar
void JintegrateTransport_impl(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
void integrate_impl(const ConstVectorRef &x, const ConstVectorRef &v, VectorRef out) const
Perform the manifold integration operation.
virtual void neutral_impl(VectorRef out) const
PinocchioLieGroup(const LieGroup &lg)
void Jdifference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, MatrixRef Jout, int arg) const
bool isNormalized(const ConstVectorRef &x) const
Check if the input vector x is a viable element of the manifold.
virtual void interpolate_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u, VectorRef out) const