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-collision.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
aligator/core/unary-function.hpp
"
4
#include "
./fwd.hpp
"
5
6
#include <pinocchio/multibody/geometry.hpp>
7
#include <pinocchio/multibody/model.hpp>
8
#include <pinocchio/multibody/frame.hpp>
9
#include <pinocchio/algorithm/geometry.hpp>
10
11
#include "
aligator/third-party/polymorphic_cxx14.h
"
12
13
namespace
aligator
{
14
15
template
<
typename
Scalar>
struct
FrameCollisionDataTpl
;
16
17
template
<
typename
_Scalar>
18
struct
FrameCollisionResidualTpl
:
UnaryFunctionTpl
<_Scalar>,
frame_api
{
19
public
:
20
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
21
using
Scalar
= _Scalar;
22
ALIGATOR_DYNAMIC_TYPEDEFS
(
Scalar
);
23
ALIGATOR_UNARY_FUNCTION_INTERFACE
(
Scalar
);
24
using
BaseData
=
typename
Base::Data
;
25
using
Model
= pinocchio::ModelTpl<Scalar>;
26
using
SE3
= pinocchio::SE3Tpl<Scalar>;
27
using
Data
=
FrameCollisionDataTpl<Scalar>
;
28
using
GeometryModel
= pinocchio::GeometryModel;
29
30
Model
pin_model_
;
31
GeometryModel
geom_model_
;
32
33
FrameCollisionResidualTpl
(
const
int
ndx,
const
int
nu
,
const
Model
&model,
34
const
GeometryModel
&geom_model,
35
const
pinocchio::PairIndex frame_pair_id)
36
:
Base
(ndx,
nu
, 1)
37
,
pin_model_
(model)
38
,
geom_model_
(geom_model)
39
,
frame_pair_id_
(frame_pair_id) {
40
if
(frame_pair_id >=
geom_model_
.collisionPairs.size()) {
41
ALIGATOR_OUT_OF_RANGE_ERROR(
42
"Provided collision pair index {:d} is not valid "
43
"(geom model has {:d} pairs)."
,
44
frame_pair_id, geom_model.collisionPairs.size());
45
}
46
frame_id1_
=
47
geom_model
48
.geometryObjects[geom_model.collisionPairs[
frame_pair_id_
].first]
49
.parentFrame;
50
frame_id2_
=
51
geom_model
52
.geometryObjects[geom_model.collisionPairs[
frame_pair_id_
].second]
53
.parentFrame;
54
}
55
56
void
evaluate
(
const
ConstVectorRef &x,
BaseData
&data)
const
;
57
58
void
computeJacobians
(
const
ConstVectorRef &x,
BaseData
&data)
const
;
59
60
shared_ptr<BaseData>
createData
()
const
{
61
return
std::make_shared<Data>(*
this
);
62
}
63
64
protected
:
65
pinocchio::PairIndex
frame_pair_id_
;
66
pinocchio::FrameIndex
frame_id1_
;
67
pinocchio::FrameIndex
frame_id2_
;
68
};
69
70
template
<
typename
Scalar>
71
struct
FrameCollisionDataTpl
:
StageFunctionDataTpl
<Scalar> {
72
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
73
using
Base
=
StageFunctionDataTpl<Scalar>
;
74
using
typename Base::Matrix6Xs;
75
using
typename Base::Vector3s;
76
using
SE3
= pinocchio::SE3Tpl<Scalar>;
77
78
pinocchio::DataTpl<Scalar>
pin_data_
;
79
pinocchio::GeometryData
geom_data
;
81
Matrix6Xs
Jcol_
;
82
Matrix6Xs
Jcol2_
;
84
SE3
jointToP1_
;
85
SE3
jointToP2_
;
87
Vector3s
distance_
;
88
Vector3s
distance2_
;
89
90
FrameCollisionDataTpl
(
const
FrameCollisionResidualTpl<Scalar>
&model);
91
};
92
93
#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
94
extern
template
struct
FrameCollisionResidualTpl<context::Scalar>
;
95
extern
template
struct
FrameCollisionDataTpl<context::Scalar>
;
96
#endif
97
}
// namespace aligator
fwd.hpp
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
polymorphic_cxx14.h
aligator::FrameCollisionDataTpl
Definition
frame-collision.hpp:71
aligator::FrameCollisionDataTpl::geom_data
pinocchio::GeometryData geom_data
Definition
frame-collision.hpp:79
aligator::FrameCollisionDataTpl::FrameCollisionDataTpl
FrameCollisionDataTpl(const FrameCollisionResidualTpl< Scalar > &model)
aligator::FrameCollisionDataTpl::Jcol2_
Matrix6Xs Jcol2_
Definition
frame-collision.hpp:82
aligator::FrameCollisionDataTpl::pin_data_
pinocchio::DataTpl< Scalar > pin_data_
Definition
frame-collision.hpp:78
aligator::FrameCollisionDataTpl::SE3
pinocchio::SE3Tpl< Scalar > SE3
Definition
frame-collision.hpp:76
aligator::FrameCollisionDataTpl::Jcol_
Matrix6Xs Jcol_
Jacobian of the collision point.
Definition
frame-collision.hpp:81
aligator::FrameCollisionDataTpl::Base
StageFunctionDataTpl< Scalar > Base
Definition
frame-collision.hpp:73
aligator::FrameCollisionDataTpl::distance_
Vector3s distance_
Distance from nearest point to joint for each collision frame.
Definition
frame-collision.hpp:87
aligator::FrameCollisionDataTpl::jointToP2_
SE3 jointToP2_
Definition
frame-collision.hpp:85
aligator::FrameCollisionDataTpl::jointToP1_
SE3 jointToP1_
Placement of collision point to joint.
Definition
frame-collision.hpp:84
aligator::FrameCollisionDataTpl::distance2_
Vector3s distance2_
Definition
frame-collision.hpp:88
aligator::FrameCollisionResidualTpl
Definition
frame-collision.hpp:18
aligator::FrameCollisionResidualTpl::SE3
pinocchio::SE3Tpl< Scalar > SE3
Definition
frame-collision.hpp:26
aligator::FrameCollisionResidualTpl::frame_pair_id_
pinocchio::PairIndex frame_pair_id_
Definition
frame-collision.hpp:65
aligator::FrameCollisionResidualTpl::Scalar
_Scalar Scalar
Definition
frame-collision.hpp:21
aligator::FrameCollisionResidualTpl::createData
shared_ptr< BaseData > createData() const
Instantiate a Data object.
Definition
frame-collision.hpp:60
aligator::FrameCollisionResidualTpl::FrameCollisionResidualTpl
FrameCollisionResidualTpl(const int ndx, const int nu, const Model &model, const GeometryModel &geom_model, const pinocchio::PairIndex frame_pair_id)
Definition
frame-collision.hpp:33
aligator::FrameCollisionResidualTpl::geom_model_
GeometryModel geom_model_
Definition
frame-collision.hpp:31
aligator::FrameCollisionResidualTpl::computeJacobians
void computeJacobians(const ConstVectorRef &x, BaseData &data) const
aligator::FrameCollisionResidualTpl::ALIGATOR_UNARY_FUNCTION_INTERFACE
ALIGATOR_UNARY_FUNCTION_INTERFACE(Scalar)
aligator::FrameCollisionResidualTpl::frame_id1_
pinocchio::FrameIndex frame_id1_
Definition
frame-collision.hpp:66
aligator::FrameCollisionResidualTpl::BaseData
typename Base::Data BaseData
Definition
frame-collision.hpp:24
aligator::FrameCollisionResidualTpl::Model
pinocchio::ModelTpl< Scalar > Model
Definition
frame-collision.hpp:25
aligator::FrameCollisionResidualTpl::frame_id2_
pinocchio::FrameIndex frame_id2_
Definition
frame-collision.hpp:67
aligator::FrameCollisionResidualTpl::Data
FrameCollisionDataTpl< Scalar > Data
Definition
frame-collision.hpp:27
aligator::FrameCollisionResidualTpl::evaluate
void evaluate(const ConstVectorRef &x, BaseData &data) const
aligator::FrameCollisionResidualTpl::GeometryModel
pinocchio::GeometryModel GeometryModel
Definition
frame-collision.hpp:28
aligator::FrameCollisionResidualTpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::FrameCollisionResidualTpl::pin_model_
Model pin_model_
Definition
frame-collision.hpp:30
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::StageFunctionTpl< Scalar >::Data
StageFunctionDataTpl< Scalar > Data
Definition
function-abstract.hpp:16
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::frame_api
Definition
fwd.hpp:9
unary-function.hpp
include
aligator
modelling
multibody
frame-collision.hpp
Generated by
1.17.0