robotoc
robotoc - efficient ROBOT Optimal Control solvers
Loading...
Searching...
No Matches
contact_dynamics_data.hxx
Go to the documentation of this file.
1#ifndef ROBOTOC_CONTACT_DYNAMICS_DATA_HXX_
2#define ROBOTOC_CONTACT_DYNAMICS_DATA_HXX_
3
5
6namespace robotoc {
7
8inline void ContactDynamicsData::setContactDimension(const int dimf) {
9 assert(dimf >= 0);
10 assert(dimf + dimv_ <= IDC_full_.size());
11 dimf_ = dimf;
12 dimvf_ = dimv_ + dimf_;
13}
14
15
17 assert(dims >= 0);
18 dims_ = dims;
19}
20
21
22inline int ContactDynamicsData::dimv() const {
23 return dimv_;
24}
25
26
27inline int ContactDynamicsData::dimu() const {
28 return dimu_;
29}
30
31
32inline int ContactDynamicsData::dimf() const {
33 return dimf_;
34}
35
36
37inline int ContactDynamicsData::dimvf() const {
38 return dimvf_;
39}
40
41
42inline int ContactDynamicsData::dims() const {
43 return dims_;
44}
45
46
48 return dim_passive_;
49}
50
51
53 return has_floating_base_;
54}
55
56
57inline Eigen::Block<Eigen::MatrixXd> ContactDynamicsData::dCda() {
58 return dCda_full_.topLeftCorner(dimf_, dimv_);
59}
60
61
62inline const Eigen::Block<const Eigen::MatrixXd>
64 return dCda_full_.topLeftCorner(dimf_, dimv_);
65}
66
67
68inline Eigen::Block<Eigen::MatrixXd> ContactDynamicsData::dIDCdqv() {
69 return dIDCdqv_full_.topLeftCorner(dimvf_, 2*dimv_);
70}
71
72
73inline const Eigen::Block<const Eigen::MatrixXd>
75 return dIDCdqv_full_.topLeftCorner(dimvf_, 2*dimv_);
76}
77
78
79inline Eigen::Block<Eigen::MatrixXd> ContactDynamicsData::dIDdq() {
80 return dIDCdqv_full_.topLeftCorner(dimv_, dimv_);
81}
82
83
84inline const Eigen::Block<const Eigen::MatrixXd>
86 return dIDCdqv_full_.topLeftCorner(dimv_, dimv_);
87}
88
89
90inline Eigen::Block<Eigen::MatrixXd> ContactDynamicsData::dIDdv() {
91 return dIDCdqv_full_.block(0, dimv_, dimv_, dimv_);
92}
93
94
95inline const Eigen::Block<const Eigen::MatrixXd>
97 return dIDCdqv_full_.block(0, dimv_, dimv_, dimv_);
98}
99
100
101inline Eigen::Block<Eigen::MatrixXd> ContactDynamicsData::dCdq() {
102 return dIDCdqv_full_.block(dimv_, 0, dimf_, dimv_);
103}
104
105
106inline const Eigen::Block<const Eigen::MatrixXd>
108 return dIDCdqv_full_.block(dimv_, 0, dimf_, dimv_);
109}
110
111
112inline Eigen::Block<Eigen::MatrixXd> ContactDynamicsData::dCdv() {
113 return dIDCdqv_full_.block(dimv_, dimv_, dimf_, dimv_);
114}
115
116
117inline const Eigen::Block<const Eigen::MatrixXd>
119 return dIDCdqv_full_.block(dimv_, dimv_, dimf_, dimv_);
120}
121
122
123inline Eigen::Block<Eigen::MatrixXd> ContactDynamicsData::MJtJinv() {
124 return MJtJinv_full_.topLeftCorner(dimvf_, dimvf_);
125}
126
127
128inline const Eigen::Block<const Eigen::MatrixXd>
130 return MJtJinv_full_.topLeftCorner(dimvf_, dimvf_);
131}
132
133
134inline Eigen::Block<Eigen::MatrixXd> ContactDynamicsData::MJtJinv_dIDCdqv() {
135 return MJtJinv_dIDCdqv_full_.topLeftCorner(dimvf_, 2*dimv_);
136}
137
138
139inline const Eigen::Block<const Eigen::MatrixXd>
141 return MJtJinv_dIDCdqv_full_.topLeftCorner(dimvf_, 2*dimv_);
142}
143
144
145inline Eigen::Block<Eigen::MatrixXd> ContactDynamicsData::Qafqv() {
146 return Qafqv_full_.topLeftCorner(dimvf_, 2*dimv_);
147}
148
149
150inline const Eigen::Block<const Eigen::MatrixXd>
152 return Qafqv_full_.topLeftCorner(dimvf_, 2*dimv_);
153}
154
155
156inline Eigen::Block<Eigen::MatrixXd> ContactDynamicsData::Qafu_full() {
157 return Qafu_full_full_.topLeftCorner(dimvf_, dimv_);
158}
159
160
161inline const Eigen::Block<const Eigen::MatrixXd>
163 return Qafu_full_full_.topLeftCorner(dimvf_, dimv_);
164}
165
166
167inline Eigen::Block<Eigen::MatrixXd> ContactDynamicsData::Qafu_passive() {
168 return Qafu_full_full_.topLeftCorner(dimvf_, dim_passive_);
169}
170
171
172inline const Eigen::Block<const Eigen::MatrixXd>
174 return Qafu_full_full_.topLeftCorner(dimvf_, dim_passive_);
175}
176
177
178inline Eigen::Block<Eigen::MatrixXd> ContactDynamicsData::Qafu() {
179 return Qafu_full_full_.block(0, dim_passive_, dimvf_, dimu_);
180}
181
182
183inline const Eigen::Block<const Eigen::MatrixXd>
185 return Qafu_full_full_.block(0, dim_passive_, dimvf_, dimu_);
186}
187
188
189inline Eigen::VectorBlock<Eigen::VectorXd> ContactDynamicsData::IDC() {
190 return IDC_full_.head(dimvf_);
191}
192
193
194inline const Eigen::VectorBlock<const Eigen::VectorXd>
196 return IDC_full_.head(dimvf_);
197}
198
199
200inline Eigen::VectorBlock<Eigen::VectorXd> ContactDynamicsData::ID_full() {
201 return IDC_full_.head(dimv_);
202}
203
204
205inline const Eigen::VectorBlock<const Eigen::VectorXd>
207 return IDC_full_.head(dimv_);
208}
209
210
211inline Eigen::VectorBlock<Eigen::VectorXd> ContactDynamicsData::ID_passive() {
212 return IDC_full_.head(dim_passive_);
213}
214
215
216inline const Eigen::VectorBlock<const Eigen::VectorXd>
218 return IDC_full_.head(dim_passive_);
219}
220
221
222inline Eigen::VectorBlock<Eigen::VectorXd> ContactDynamicsData::ID() {
223 return IDC_full_.segment(dim_passive_, dimu_);
224}
225
226
227inline const Eigen::VectorBlock<const Eigen::VectorXd>
229 return IDC_full_.segment(dim_passive_, dimu_);
230}
231
232
233inline Eigen::VectorBlock<Eigen::VectorXd> ContactDynamicsData::C() {
234 return IDC_full_.segment(dimv_, dimf_);
235}
236
237
238inline const Eigen::VectorBlock<const Eigen::VectorXd>
240 return IDC_full_.segment(dimv_, dimf_);
241}
242
243
244inline Eigen::VectorBlock<Eigen::VectorXd> ContactDynamicsData::MJtJinv_IDC() {
245 return MJtJinv_IDC_full_.head(dimvf_);
246}
247
248
249inline const Eigen::VectorBlock<const Eigen::VectorXd>
251 return MJtJinv_IDC_full_.head(dimvf_);
252}
253
254
255inline Eigen::Block<Eigen::MatrixXd> ContactDynamicsData::Phia() {
256 return Phia_full_.topLeftCorner(dims_, dimv_);
257}
258
259
260inline const Eigen::Block<const Eigen::MatrixXd> ContactDynamicsData::Phia() const {
261 return Phia_full_.topLeftCorner(dims_, dimv_);
262}
263
264
265inline Eigen::VectorBlock<Eigen::VectorXd> ContactDynamicsData::laf() {
266 return laf_full_.head(dimvf_);
267}
268
269
270inline const Eigen::VectorBlock<const Eigen::VectorXd>
272 return laf_full_.head(dimvf_);
273}
274
275
276inline Eigen::VectorBlock<Eigen::VectorXd> ContactDynamicsData::la() {
277 return laf_full_.head(dimv_);
278}
279
280
281inline const Eigen::VectorBlock<const Eigen::VectorXd>
283 return laf_full_.head(dimv_);
284}
285
286
287inline Eigen::VectorBlock<Eigen::VectorXd> ContactDynamicsData::lf() {
288 return laf_full_.segment(dimv_, dimf_);
289}
290
291
292inline const Eigen::VectorBlock<const Eigen::VectorXd>
294 return laf_full_.segment(dimv_, dimf_);
295}
296
297
298inline Eigen::VectorBlock<Eigen::VectorXd> ContactDynamicsData::haf() {
299 return haf_full_.head(dimvf_);
300}
301
302
303inline const Eigen::VectorBlock<const Eigen::VectorXd>
305 return haf_full_.head(dimvf_);
306}
307
308
309inline Eigen::VectorBlock<Eigen::VectorXd> ContactDynamicsData::ha() {
310 return haf_full_.head(dimv_);
311}
312
313
314inline const Eigen::VectorBlock<const Eigen::VectorXd>
316 return haf_full_.head(dimv_);
317}
318
319
320inline Eigen::VectorBlock<Eigen::VectorXd> ContactDynamicsData::hf() {
321 return haf_full_.segment(dimv_, dimf_);
322}
323
324
325inline const Eigen::VectorBlock<const Eigen::VectorXd>
327 return haf_full_.segment(dimv_, dimf_);
328}
329
330} // namespace robotoc
331
332#endif // ROBOTOC_CONTACT_DYNAMICS_DATA_HXX_
Eigen::VectorBlock< Eigen::VectorXd > ha()
Definition: contact_dynamics_data.hxx:309
Eigen::VectorBlock< Eigen::VectorXd > la()
Definition: contact_dynamics_data.hxx:276
Eigen::Block< Eigen::MatrixXd > MJtJinv()
Definition: contact_dynamics_data.hxx:123
int dimu() const
Definition: contact_dynamics_data.hxx:27
Eigen::VectorBlock< Eigen::VectorXd > hf()
Definition: contact_dynamics_data.hxx:320
int dimvf() const
Definition: contact_dynamics_data.hxx:37
void setSwitchingConstraintDimension(const int dims)
Definition: contact_dynamics_data.hxx:16
Eigen::Block< Eigen::MatrixXd > dIDdv()
Definition: contact_dynamics_data.hxx:90
Eigen::VectorBlock< Eigen::VectorXd > IDC()
Definition: contact_dynamics_data.hxx:189
Eigen::Block< Eigen::MatrixXd > Qafu_passive()
Definition: contact_dynamics_data.hxx:167
Eigen::Block< Eigen::MatrixXd > dCda()
Definition: contact_dynamics_data.hxx:57
Eigen::VectorBlock< Eigen::VectorXd > MJtJinv_IDC()
Definition: contact_dynamics_data.hxx:244
int dimv() const
Definition: contact_dynamics_data.hxx:22
Eigen::Block< Eigen::MatrixXd > dCdq()
Definition: contact_dynamics_data.hxx:101
int dim_passive() const
Definition: contact_dynamics_data.hxx:47
Eigen::VectorBlock< Eigen::VectorXd > ID()
Definition: contact_dynamics_data.hxx:222
Eigen::VectorBlock< Eigen::VectorXd > ID_passive()
Definition: contact_dynamics_data.hxx:211
void setContactDimension(const int dimf)
Definition: contact_dynamics_data.hxx:8
Eigen::VectorBlock< Eigen::VectorXd > laf()
Definition: contact_dynamics_data.hxx:265
Eigen::VectorBlock< Eigen::VectorXd > haf()
Definition: contact_dynamics_data.hxx:298
Eigen::Block< Eigen::MatrixXd > dIDdq()
Definition: contact_dynamics_data.hxx:79
int dims() const
Definition: contact_dynamics_data.hxx:42
Eigen::VectorBlock< Eigen::VectorXd > lf()
Definition: contact_dynamics_data.hxx:287
Eigen::Block< Eigen::MatrixXd > Phia()
Definition: contact_dynamics_data.hxx:255
Eigen::Block< Eigen::MatrixXd > Qafqv()
Definition: contact_dynamics_data.hxx:145
Eigen::Block< Eigen::MatrixXd > dCdv()
Definition: contact_dynamics_data.hxx:112
int dimf() const
Definition: contact_dynamics_data.hxx:32
Eigen::VectorBlock< Eigen::VectorXd > C()
Definition: contact_dynamics_data.hxx:233
bool hasFloatingBase() const
Definition: contact_dynamics_data.hxx:52
Eigen::VectorBlock< Eigen::VectorXd > ID_full()
Definition: contact_dynamics_data.hxx:200
Eigen::Block< Eigen::MatrixXd > MJtJinv_dIDCdqv()
Definition: contact_dynamics_data.hxx:134
Eigen::Block< Eigen::MatrixXd > Qafu()
Definition: contact_dynamics_data.hxx:178
Eigen::Block< Eigen::MatrixXd > Qafu_full()
Definition: contact_dynamics_data.hxx:156
Eigen::Block< Eigen::MatrixXd > dIDCdqv()
Definition: contact_dynamics_data.hxx:68
Definition: constraint_component_base.hpp:17