aligator 0.16.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Loading...
Searching...
No Matches
frame-equality.hpp
Go to the documentation of this file.
1#pragma once
2
5
6#include <pinocchio/multibody/model.hpp>
7#include <pinocchio/multibody/frame.hpp>
8
10
11namespace aligator {
12
13template <typename Scalar> struct FrameEqualityDataTpl;
14
30template <typename _Scalar>
32public:
33 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
34 using Scalar = _Scalar;
38 using Model = pinocchio::ModelTpl<Scalar>;
39 using PolyManifold = xyz::polymorphic<ManifoldAbstractTpl<Scalar>>;
40 using SE3 = pinocchio::SE3Tpl<Scalar>;
42
44
45 FrameEqualityResidualTpl(const int ndx, const int nu, const Model &model,
46 const pinocchio::FrameIndex frame_id1,
47 const pinocchio::FrameIndex frame_id2,
48 const SE3 &f1Mf2_ref = SE3::Identity())
49 : Base(ndx, nu, 6)
50 , pin_model_(model)
51 , pin_frame_id1_(frame_id1)
52 , pin_frame_id2_(frame_id2)
53 , f1MR_ref_(f1Mf2_ref) {}
54
55 // Getters and setters
56 pinocchio::FrameIndex getFrame1Id() const { return pin_frame_id1_; }
57 void setFrame1Id(const std::size_t id) { pin_frame_id1_ = id; }
58 pinocchio::FrameIndex getFrame2Id() const { return pin_frame_id2_; }
59 void setFrame2Id(const std::size_t id) { pin_frame_id2_ = id; }
60
61 const SE3 &getReference() const { return f1MR_ref_; }
62 void setReference(const SE3 &f1Mf2_ref) { f1MR_ref_ = f1Mf2_ref; }
63
64 void evaluate(const ConstVectorRef &x, BaseData &data) const;
65
66 void computeJacobians(const ConstVectorRef &x, BaseData &data) const;
67
68 shared_ptr<BaseData> createData() const {
69 return std::make_shared<Data>(*this);
70 }
71
72protected:
73 pinocchio::FrameIndex pin_frame_id1_;
74 pinocchio::FrameIndex pin_frame_id2_;
76};
77
78template <typename Scalar>
80 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
82 using PinData = pinocchio::DataTpl<Scalar>;
83 using SE3 = pinocchio::SE3Tpl<Scalar>;
84
95
97};
98
99#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
100extern template struct FrameEqualityResidualTpl<context::Scalar>;
101extern template struct FrameEqualityDataTpl<context::Scalar>;
102#endif
103} // namespace aligator
Main package namespace.
pinocchio::DataTpl< Scalar > PinData
math_types< Scalar >::Matrix6Xs wJf1_
Jacobian of frame 1 expressed in WORLD.
StageFunctionDataTpl< Scalar > Base
pinocchio::SE3Tpl< Scalar > SE3
SE3 RMf2_
Equality error between the frames.
math_types< Scalar >::Matrix6s RJlog6f2_
Jacobian of the error (log6)
FrameEqualityDataTpl(const FrameEqualityResidualTpl< Scalar > &model)
math_types< Scalar >::Matrix6Xs wJf2_
Jacobian of frame 2 expressed in WORLD.
PinData pin_data_
Pinocchio data object.
Residual enforcing equality between two Pinocchio frames.
void setFrame1Id(const std::size_t id)
pinocchio::ModelTpl< Scalar > Model
FrameEqualityDataTpl< Scalar > Data
void setReference(const SE3 &f1Mf2_ref)
xyz::polymorphic< ManifoldAbstractTpl< Scalar > > PolyManifold
FrameEqualityResidualTpl(const int ndx, const int nu, const Model &model, const pinocchio::FrameIndex frame_id1, const pinocchio::FrameIndex frame_id2, const SE3 &f1Mf2_ref=SE3::Identity())
void setFrame2Id(const std::size_t id)
pinocchio::FrameIndex getFrame2Id() const
shared_ptr< BaseData > createData() const
Instantiate a Data object.
void evaluate(const ConstVectorRef &x, BaseData &data) const
StageFunctionDataTpl< Scalar > BaseData
pinocchio::FrameIndex getFrame1Id() const
void computeJacobians(const ConstVectorRef &x, BaseData &data) const
pinocchio::SE3Tpl< Scalar > SE3
Base struct for function data.
StageFunctionDataTpl(const int ndx, const int nu, const int nr)
const int nu
Control dimension.
Represents unary functions of the form , with no control (or next-state) arguments.
StageFunctionTpl< Scalar > Base
Typedefs for math (Eigen vectors, matrices) depending on scalar type.
Definition math.hpp:122