Crocoddyl
fwd.hpp
1 // BSD 3-Clause License
3 //
4 // Copyright (C) 2019-2024, LAAS-CNRS, University of Edinburgh, INRIA
5 // Heriot-Watt University
6 // Copyright note valid unless otherwise stated in individual files.
7 // All rights reserved.
9 
10 #ifndef CROCODDYL_MULTIBODY_FWD_HPP_
11 #define CROCODDYL_MULTIBODY_FWD_HPP_
12 
13 #include "crocoddyl/core/costs/residual.hpp"
14 #include "crocoddyl/core/utils/deprecate.hpp"
15 
16 namespace crocoddyl {
17 
18 // actuation
19 template <typename Scalar>
20 class ActuationModelFloatingBaseTpl;
21 
22 template <typename Scalar>
23 class ActuationModelFullTpl;
24 
25 template <typename Scalar>
26 struct ThrusterTpl;
27 
28 template <typename Scalar>
29 class ActuationModelFloatingBaseThrustersTpl;
30 
31 template <typename Scalar>
32 class ActuationModelMultiCopterBaseTpl;
33 
34 // force
35 template <typename Scala>
36 struct ForceDataAbstractTpl;
37 
38 // contact
39 template <typename Scalar>
40 class ContactModelAbstractTpl;
41 template <typename Scalar>
42 struct ContactDataAbstractTpl;
43 
44 // action
45 template <typename Scalar>
46 class ActionModelImpulseFwdDynamicsTpl;
47 template <typename Scalar>
48 struct ActionDataImpulseFwdDynamicsTpl;
49 
50 // differential action
51 template <typename Scalar>
52 class DifferentialActionModelFreeFwdDynamicsTpl;
53 template <typename Scalar>
54 struct DifferentialActionDataFreeFwdDynamicsTpl;
55 
56 template <typename Scalar>
57 class DifferentialActionModelFreeInvDynamicsTpl;
58 template <typename Scalar>
59 struct DifferentialActionDataFreeInvDynamicsTpl;
60 
61 template <typename Scalar>
62 class DifferentialActionModelContactFwdDynamicsTpl;
63 template <typename Scalar>
64 struct DifferentialActionDataContactFwdDynamicsTpl;
65 
66 template <typename Scalar>
67 class DifferentialActionModelContactInvDynamicsTpl;
68 template <typename Scalar>
69 struct DifferentialActionDataContactInvDynamicsTpl;
70 
71 // numdiff
72 template <typename Scalar>
73 class CostModelNumDiffTpl;
74 template <typename Scalar>
75 struct CostDataNumDiffTpl;
76 
77 template <typename Scalar>
78 class ContactModelNumDiffTpl;
79 template <typename Scalar>
80 struct ContactDataNumDiffTpl;
81 
82 // residual
83 template <typename Scalar>
84 class ResidualModelCentroidalMomentumTpl;
85 template <typename Scalar>
86 struct ResidualDataCentroidalMomentumTpl;
87 
88 template <typename Scalar>
89 class ResidualModelCoMPositionTpl;
90 template <typename Scalar>
91 struct ResidualDataCoMPositionTpl;
92 
93 template <typename Scalar>
94 class ResidualModelContactForceTpl;
95 template <typename Scalar>
96 struct ResidualDataContactForceTpl;
97 
98 template <typename Scalar>
99 class ResidualModelContactFrictionConeTpl;
100 template <typename Scalar>
101 struct ResidualDataContactFrictionConeTpl;
102 
103 template <typename Scalar>
104 class ResidualModelContactCoPPositionTpl;
105 template <typename Scalar>
106 struct ResidualDataContactCoPPositionTpl;
107 
108 template <typename Scalar>
109 class ResidualModelContactWrenchConeTpl;
110 template <typename Scalar>
111 struct ResidualDataContactWrenchConeTpl;
112 
113 template <typename Scalar>
114 class ResidualModelContactControlGravTpl;
115 template <typename Scalar>
116 struct ResidualDataContactControlGravTpl;
117 
118 template <typename Scalar>
119 class ResidualModelControlGravTpl;
120 template <typename Scalar>
121 struct ResidualDataControlGravTpl;
122 
123 template <typename Scalar>
124 class ResidualModelFramePlacementTpl;
125 template <typename Scalar>
126 struct ResidualDataFramePlacementTpl;
127 
128 template <typename Scalar>
129 class ResidualModelFrameRotationTpl;
130 template <typename Scalar>
131 struct ResidualDataFrameRotationTpl;
132 
133 template <typename Scalar>
134 class ResidualModelFrameTranslationTpl;
135 template <typename Scalar>
136 struct ResidualDataFrameTranslationTpl;
137 
138 template <typename Scalar>
139 class ResidualModelFrameVelocityTpl;
140 template <typename Scalar>
141 struct ResidualDataFrameVelocityTpl;
142 
143 template <typename Scalar>
144 class ResidualModelImpulseCoMTpl;
145 template <typename Scalar>
146 struct ResidualDataImpulseCoMTpl;
147 
148 template <typename Scalar>
149 class ResidualModelStateTpl;
150 template <typename Scalar>
152 
153 #ifdef PINOCCHIO_WITH_HPP_FCL
154 template <typename Scalar>
155 class ResidualModelPairCollisionTpl;
156 template <typename Scalar>
157 struct ResidualDataPairCollisionTpl;
158 #endif
159 
160 // impulse
161 template <typename Scalar>
163 template <typename Scalar>
165 
166 // contact
167 template <typename Scalar>
168 struct ContactItemTpl;
169 template <typename Scalar>
171 template <typename Scalar>
173 
174 template <typename Scalar>
175 class ContactModel1DTpl;
176 template <typename Scalar>
177 struct ContactData1DTpl;
178 
179 template <typename Scalar>
180 class ContactModel2DTpl;
181 template <typename Scalar>
182 struct ContactData2DTpl;
183 
184 template <typename Scalar>
185 class ContactModel3DTpl;
186 template <typename Scalar>
187 struct ContactData3DTpl;
188 
189 template <typename Scalar>
190 class ContactModel6DTpl;
191 template <typename Scalar>
192 struct ContactData6DTpl;
193 
194 // friction
195 template <typename Scalar>
196 class FrictionConeTpl;
197 template <typename Scalar>
198 class WrenchConeTpl;
199 
200 // cop support
201 template <typename Scalar>
202 class CoPSupportTpl;
203 
204 // state
205 template <typename Scalar>
206 class StateMultibodyTpl;
207 
208 // data collector
209 template <typename Scalar>
211 
212 template <typename Scalar>
214 
215 template <typename Scalar>
217 
218 template <typename Scalar>
220 
221 template <typename Scalar>
223 
224 template <typename Scalar>
226 
227 template <typename Scalar>
229 
230 template <typename Scalar>
232 
233 template <typename Scalar>
235 
236 // impulse
237 template <typename Scalar>
238 class ImpulseModel6DTpl;
239 template <typename Scalar>
240 struct ImpulseData6DTpl;
241 
242 template <typename Scalar>
243 class ImpulseModel3DTpl;
244 template <typename Scalar>
245 struct ImpulseData3DTpl;
246 
247 template <typename Scalar>
248 struct ImpulseItemTpl;
249 template <typename Scalar>
251 template <typename Scalar>
253 
254 /**** Template Instantiation ****/
255 
261 DEPRECATED("Use ActuationModelFloatingBaseThrustersTpl",
263  ActuationModelMultiCopterBase;)
264 
265 typedef ForceDataAbstractTpl<double> ForceDataAbstract;
266 
269 
272 
289 
294 
298 
336 
337 #ifdef PINOCCHIO_WITH_HPP_FCL
338 typedef ResidualModelPairCollisionTpl<double> ResidualModelPairCollision;
339 typedef ResidualDataPairCollisionTpl<double> ResidualDataPairCollision;
340 #endif
341 
344 
345 enum ContactType {
346  ContactUndefined,
347  Contact1D,
348  Contact2D,
349  Contact3D,
350  Contact6D
351 };
352 enum ImpulseType { ImpulseUndefined, Impulse3D, Impulse6D };
353 
354 typedef ContactItemTpl<double> ContactItem;
355 typedef ContactModelMultipleTpl<double> ContactModelMultiple;
356 typedef ContactDataMultipleTpl<double> ContactDataMultiple;
357 typedef ContactModel1DTpl<double> ContactModel1D;
358 typedef ContactData1DTpl<double> ContactData1D;
359 typedef ContactModel2DTpl<double> ContactModel2D;
360 typedef ContactData2DTpl<double> ContactData2D;
361 typedef ContactModel3DTpl<double> ContactModel3D;
362 typedef ContactData3DTpl<double> ContactData3D;
363 typedef ContactModel6DTpl<double> ContactModel6D;
364 typedef ContactData6DTpl<double> ContactData6D;
365 
366 typedef StateMultibodyTpl<double> StateMultibody;
367 
368 typedef DataCollectorMultibodyTpl<double> DataCollectorMultibody;
369 typedef DataCollectorActMultibodyTpl<double> DataCollectorActMultibody;
370 typedef DataCollectorJointActMultibodyTpl<double>
371  DataCollectorJointActMultibody;
372 typedef DataCollectorContactTpl<double> DataCollectorContact;
373 typedef DataCollectorMultibodyInContactTpl<double>
374  DataCollectorMultibodyInContact;
375 typedef DataCollectorActMultibodyInContactTpl<double>
376  DataCollectorActMultibodyInContact;
377 typedef DataCollectorJointActMultibodyInContactTpl<double>
378  DataCollectorJointActMultibodyInContact;
379 typedef DataCollectorImpulseTpl<double> DataCollectorImpulse;
380 typedef DataCollectorMultibodyInImpulseTpl<double>
381  DataCollectorMultibodyInImpulse;
382 
383 typedef ImpulseModel6DTpl<double> ImpulseModel6D;
384 typedef ImpulseData6DTpl<double> ImpulseData6D;
385 typedef ImpulseModel3DTpl<double> ImpulseModel3D;
386 typedef ImpulseData3DTpl<double> ImpulseData3D;
387 typedef ImpulseItemTpl<double> ImpulseItem;
388 typedef ImpulseModelMultipleTpl<double> ImpulseModelMultiple;
389 typedef ImpulseDataMultipleTpl<double> ImpulseDataMultiple;
390 
391 } // namespace crocoddyl
392 
393 #endif // CROCODDYL_MULTIBODY_FWD_HPP_
Action model for impulse forward dynamics in multibody systems.
Actuation models for floating base systems actuated with thrusters.
Floating-base actuation model.
Full actuation model.
Definition: full.hpp:30
This class encapsulates a center of pressure support of a 6d contact.
Definition: cop-support.hpp:26
Define a stack of contact models.
This class computes the numerical differentiation of a cost model.
Definition: cost.hpp:34
Differential action model for contact forward dynamics in multibody systems.
Differential action model for contact inverse dynamics in multibody systems.
Differential action model for free forward dynamics in multibody systems.
Definition: free-fwddyn.hpp:60
Differential action model for free inverse dynamics in multibody systems.
Definition: free-invdyn.hpp:43
This class encapsulates a friction cone.
Define a stack of impulse models.
Center of pressure residual function.
Control gravity residual under contact.
Define a contact force residual function.
Contact wrench cone residual function.
State multibody representation.
Definition: multibody.hpp:35
This class encapsulates a wrench cone.
Definition: wrench-cone.hpp:32
Define the multi-contact data.
Define the multi-impulse data.