4#include <pinocchio/multibody/model.hpp>
5#include <pinocchio/algorithm/joint-configuration.hpp>
16template <
typename _Scalar>
35 return pinocchio::isNormalized(
model_, x);
48 VectorRef xout)
const {
49 pinocchio::integrate(
model_, x, v, xout);
53 MatrixRef Jout,
int arg)
const {
56 pinocchio::dIntegrate(
model_, x, v, Jout, pinocchio::ARG0);
59 pinocchio::dIntegrate(
model_, x, v, Jout, pinocchio::ARG1);
65 const ConstVectorRef &v, MatrixRef Jout,
69 pinocchio::dIntegrateTransport(
model_, x, v, Jout, pinocchio::ARG0);
72 pinocchio::dIntegrateTransport(
model_, x, v, Jout, pinocchio::ARG1);
80 VectorRef vout)
const {
81 pinocchio::difference(
model_, x0, x1, vout);
85 MatrixRef Jout,
int arg)
const {
88 pinocchio::dDifference(
model_, x0, x1, Jout, pinocchio::ARG0);
91 pinocchio::dDifference(
model_, x0, x1, Jout, pinocchio::ARG1);
97 const Scalar &u, VectorRef out)
const {
98 pinocchio::interpolate(
model_, x0, x1, u, out);
104 pinocchio::randomConfiguration(
model_,
model_.lowerPositionLimit,
105 model_.upperPositionLimit, out);
117template <
typename Scalar>
Base class for manifolds, to use in cost funcs, solvers...
Multibody configuration group , defined using the Pinocchio library.
MultibodyConfiguration(const MultibodyConfiguration &)=default
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
void Jintegrate_impl(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
int nx() const
Get manifold representation dimension.
void difference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef vout) const
Implementation of the manifold retraction operation.
MultibodyConfiguration< Scalar > Self
int ndx() const
Get manifold tangent space dimension.
void Jdifference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, MatrixRef Jout, int arg) const
MultibodyConfiguration & operator=(MultibodyConfiguration &&)=default
const ModelType & getModel() const
void interpolate_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u, VectorRef out) const
Interpolation operation.
void neutral_impl(VectorRef out) const
void integrate_impl(const ConstVectorRef &x, const ConstVectorRef &v, VectorRef xout) const
Perform the manifold integration operation.
MultibodyConfiguration & operator=(const MultibodyConfiguration &)=default
MultibodyConfiguration(const ModelType &model)
ManifoldAbstractTpl< Scalar > Base
pinocchio::ModelTpl< Scalar > ModelType
bool isNormalized(const ConstVectorRef &x) const
Check if the input vector x is a viable element of the manifold.
void JintegrateTransport_impl(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
MultibodyConfiguration(MultibodyConfiguration &&)=default
void rand_impl(VectorRef out) const
MultibodyPhaseSpace(const ModelType &model)
typename ConfigSpace::ModelType ModelType
const ModelType & getModel() const
MultibodyConfiguration< Scalar > ConfigSpace
MultibodyPhaseSpace(MultibodyPhaseSpace &&)=default
MultibodyPhaseSpace & operator=(const MultibodyPhaseSpace &)=default
MultibodyPhaseSpace(const MultibodyPhaseSpace &)=default
MultibodyPhaseSpace & operator=(MultibodyPhaseSpace &&)=default
TangentBundleTpl(MultibodyConfiguration< Scalar > base)
MultibodyConfiguration< Scalar > base_