aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
frame-equality.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
aligator/modelling/multibody/fwd.hpp
"
4
#include "
aligator/core/unary-function.hpp
"
5
6
#include <pinocchio/multibody/model.hpp>
7
#include <pinocchio/multibody/frame.hpp>
8
9
#include "
aligator/third-party/polymorphic_cxx14.h
"
10
11
namespace
aligator
{
12
13
template
<
typename
Scalar>
struct
FrameEqualityDataTpl
;
14
30
template
<
typename
_Scalar>
31
struct
FrameEqualityResidualTpl
:
UnaryFunctionTpl
<_Scalar> {
32
public
:
33
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
34
using
Scalar
= _Scalar;
35
ALIGATOR_DYNAMIC_TYPEDEFS
(
Scalar
);
36
ALIGATOR_UNARY_FUNCTION_INTERFACE
(
Scalar
);
37
using
BaseData
=
StageFunctionDataTpl<Scalar>
;
38
using
Model
= pinocchio::ModelTpl<Scalar>;
39
using
PolyManifold
= xyz::polymorphic<ManifoldAbstractTpl<Scalar>>;
40
using
SE3
= pinocchio::SE3Tpl<Scalar>;
41
using
Data
=
FrameEqualityDataTpl<Scalar>
;
42
43
Model
pin_model_
;
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
72
protected
:
73
pinocchio::FrameIndex
pin_frame_id1_
;
74
pinocchio::FrameIndex
pin_frame_id2_
;
75
SE3
f1MR_ref_
;
76
};
77
78
template
<
typename
Scalar>
79
struct
FrameEqualityDataTpl
:
StageFunctionDataTpl
<Scalar> {
80
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
81
using
Base
=
StageFunctionDataTpl<Scalar>
;
82
using
PinData
= pinocchio::DataTpl<Scalar>;
83
using
SE3
= pinocchio::SE3Tpl<Scalar>;
84
86
PinData
pin_data_
;
88
SE3
RMf2_
;
90
typename
math_types<Scalar>::Matrix6s
RJlog6f2_
;
92
typename
math_types<Scalar>::Matrix6Xs
wJf1_
;
94
typename
math_types<Scalar>::Matrix6Xs
wJf2_
;
95
96
FrameEqualityDataTpl
(
const
FrameEqualityResidualTpl<Scalar>
&model);
97
};
98
99
#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
100
extern
template
struct
FrameEqualityResidualTpl<context::Scalar>
;
101
extern
template
struct
FrameEqualityDataTpl<context::Scalar>
;
102
#endif
103
}
// namespace aligator
fwd.hpp
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
polymorphic_cxx14.h
aligator::FrameEqualityDataTpl
Definition
frame-equality.hpp:79
aligator::FrameEqualityDataTpl::PinData
pinocchio::DataTpl< Scalar > PinData
Definition
frame-equality.hpp:82
aligator::FrameEqualityDataTpl::wJf1_
math_types< Scalar >::Matrix6Xs wJf1_
Jacobian of frame 1 expressed in WORLD.
Definition
frame-equality.hpp:92
aligator::FrameEqualityDataTpl::Base
StageFunctionDataTpl< Scalar > Base
Definition
frame-equality.hpp:81
aligator::FrameEqualityDataTpl::SE3
pinocchio::SE3Tpl< Scalar > SE3
Definition
frame-equality.hpp:83
aligator::FrameEqualityDataTpl::RMf2_
SE3 RMf2_
Equality error between the frames.
Definition
frame-equality.hpp:88
aligator::FrameEqualityDataTpl::RJlog6f2_
math_types< Scalar >::Matrix6s RJlog6f2_
Jacobian of the error (log6).
Definition
frame-equality.hpp:90
aligator::FrameEqualityDataTpl::FrameEqualityDataTpl
FrameEqualityDataTpl(const FrameEqualityResidualTpl< Scalar > &model)
aligator::FrameEqualityDataTpl::wJf2_
math_types< Scalar >::Matrix6Xs wJf2_
Jacobian of frame 2 expressed in WORLD.
Definition
frame-equality.hpp:94
aligator::FrameEqualityDataTpl::pin_data_
PinData pin_data_
Pinocchio data object.
Definition
frame-equality.hpp:86
aligator::FrameEqualityResidualTpl
Residual enforcing equality between two Pinocchio frames.
Definition
frame-equality.hpp:31
aligator::FrameEqualityResidualTpl::Scalar
_Scalar Scalar
Definition
frame-equality.hpp:34
aligator::FrameEqualityResidualTpl::setFrame1Id
void setFrame1Id(const std::size_t id)
Definition
frame-equality.hpp:57
aligator::FrameEqualityResidualTpl::Model
pinocchio::ModelTpl< Scalar > Model
Definition
frame-equality.hpp:38
aligator::FrameEqualityResidualTpl::Data
FrameEqualityDataTpl< Scalar > Data
Definition
frame-equality.hpp:41
aligator::FrameEqualityResidualTpl::pin_model_
Model pin_model_
Definition
frame-equality.hpp:43
aligator::FrameEqualityResidualTpl::f1MR_ref_
SE3 f1MR_ref_
Definition
frame-equality.hpp:75
aligator::FrameEqualityResidualTpl::pin_frame_id1_
pinocchio::FrameIndex pin_frame_id1_
Definition
frame-equality.hpp:73
aligator::FrameEqualityResidualTpl::ALIGATOR_UNARY_FUNCTION_INTERFACE
ALIGATOR_UNARY_FUNCTION_INTERFACE(Scalar)
aligator::FrameEqualityResidualTpl::setReference
void setReference(const SE3 &f1Mf2_ref)
Definition
frame-equality.hpp:62
aligator::FrameEqualityResidualTpl::PolyManifold
xyz::polymorphic< ManifoldAbstractTpl< Scalar > > PolyManifold
Definition
frame-equality.hpp:39
aligator::FrameEqualityResidualTpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::FrameEqualityResidualTpl::FrameEqualityResidualTpl
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())
Definition
frame-equality.hpp:45
aligator::FrameEqualityResidualTpl::getReference
const SE3 & getReference() const
Definition
frame-equality.hpp:61
aligator::FrameEqualityResidualTpl::setFrame2Id
void setFrame2Id(const std::size_t id)
Definition
frame-equality.hpp:59
aligator::FrameEqualityResidualTpl::getFrame2Id
pinocchio::FrameIndex getFrame2Id() const
Definition
frame-equality.hpp:58
aligator::FrameEqualityResidualTpl::createData
shared_ptr< BaseData > createData() const
Instantiate a Data object.
Definition
frame-equality.hpp:68
aligator::FrameEqualityResidualTpl::pin_frame_id2_
pinocchio::FrameIndex pin_frame_id2_
Definition
frame-equality.hpp:74
aligator::FrameEqualityResidualTpl::evaluate
void evaluate(const ConstVectorRef &x, BaseData &data) const
aligator::FrameEqualityResidualTpl::BaseData
StageFunctionDataTpl< Scalar > BaseData
Definition
frame-equality.hpp:37
aligator::FrameEqualityResidualTpl::getFrame1Id
pinocchio::FrameIndex getFrame1Id() const
Definition
frame-equality.hpp:56
aligator::FrameEqualityResidualTpl::computeJacobians
void computeJacobians(const ConstVectorRef &x, BaseData &data) const
aligator::FrameEqualityResidualTpl::SE3
pinocchio::SE3Tpl< Scalar > SE3
Definition
frame-equality.hpp:40
aligator::StageFunctionDataTpl
Base struct for function data.
Definition
function-abstract.hpp:73
aligator::StageFunctionDataTpl< Scalar >::StageFunctionDataTpl
StageFunctionDataTpl(const int ndx, const int nu, const int nr)
aligator::StageFunctionTpl::nu
const int nu
Control dimension.
Definition
function-abstract.hpp:21
aligator::UnaryFunctionTpl
Represents unary functions of the form , with no control (or next-state) arguments.
Definition
unary-function.hpp:12
aligator::UnaryFunctionTpl::Base
StageFunctionTpl< Scalar > Base
Definition
unary-function.hpp:15
aligator::math_types
Typedefs for math (Eigen vectors, matrices) depending on scalar type.
Definition
math.hpp:123
unary-function.hpp
include
aligator
modelling
multibody
frame-equality.hpp
Generated by
1.17.0