Crocoddyl
fwd.hpp
1 // BSD 3-Clause License
3 //
4 // Copyright (C) 2019-2025, 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/multibody/pch.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 // force
32 template <typename Scala>
33 struct ForceDataAbstractTpl;
34 
35 // contact
36 template <typename Scalar>
37 class ContactModelAbstractTpl;
38 template <typename Scalar>
39 struct ContactDataAbstractTpl;
40 
41 // action
42 template <typename Scalar>
43 class ActionModelImpulseFwdDynamicsTpl;
44 template <typename Scalar>
45 struct ActionDataImpulseFwdDynamicsTpl;
46 
47 // differential action
48 template <typename Scalar>
49 class DifferentialActionModelFreeFwdDynamicsTpl;
50 template <typename Scalar>
51 struct DifferentialActionDataFreeFwdDynamicsTpl;
52 
53 template <typename Scalar>
54 class DifferentialActionModelFreeInvDynamicsTpl;
55 template <typename Scalar>
56 struct DifferentialActionDataFreeInvDynamicsTpl;
57 
58 template <typename Scalar>
59 class DifferentialActionModelContactFwdDynamicsTpl;
60 template <typename Scalar>
61 struct DifferentialActionDataContactFwdDynamicsTpl;
62 
63 template <typename Scalar>
64 class DifferentialActionModelContactInvDynamicsTpl;
65 template <typename Scalar>
66 struct DifferentialActionDataContactInvDynamicsTpl;
67 
68 // numdiff
69 template <typename Scalar>
70 class CostModelNumDiffTpl;
71 template <typename Scalar>
72 struct CostDataNumDiffTpl;
73 
74 template <typename Scalar>
75 class ContactModelNumDiffTpl;
76 template <typename Scalar>
77 struct ContactDataNumDiffTpl;
78 
79 // residual
80 template <typename Scalar>
81 class ResidualModelCentroidalMomentumTpl;
82 template <typename Scalar>
83 struct ResidualDataCentroidalMomentumTpl;
84 
85 template <typename Scalar>
86 class ResidualModelCoMPositionTpl;
87 template <typename Scalar>
88 struct ResidualDataCoMPositionTpl;
89 
90 template <typename Scalar>
91 class ResidualModelContactForceTpl;
92 template <typename Scalar>
93 struct ResidualDataContactForceTpl;
94 
95 template <typename Scalar>
96 class ResidualModelContactFrictionConeTpl;
97 template <typename Scalar>
98 struct ResidualDataContactFrictionConeTpl;
99 
100 template <typename Scalar>
101 class ResidualModelContactCoPPositionTpl;
102 template <typename Scalar>
103 struct ResidualDataContactCoPPositionTpl;
104 
105 template <typename Scalar>
106 class ResidualModelContactWrenchConeTpl;
107 template <typename Scalar>
108 struct ResidualDataContactWrenchConeTpl;
109 
110 template <typename Scalar>
111 class ResidualModelContactControlGravTpl;
112 template <typename Scalar>
113 struct ResidualDataContactControlGravTpl;
114 
115 template <typename Scalar>
116 class ResidualModelControlGravTpl;
117 template <typename Scalar>
118 struct ResidualDataControlGravTpl;
119 
120 template <typename Scalar>
121 class ResidualModelFramePlacementTpl;
122 template <typename Scalar>
123 struct ResidualDataFramePlacementTpl;
124 
125 template <typename Scalar>
126 class ResidualModelFrameRotationTpl;
127 template <typename Scalar>
128 struct ResidualDataFrameRotationTpl;
129 
130 template <typename Scalar>
131 class ResidualModelFrameTranslationTpl;
132 template <typename Scalar>
133 struct ResidualDataFrameTranslationTpl;
134 
135 template <typename Scalar>
136 class ResidualModelFrameVelocityTpl;
137 template <typename Scalar>
138 struct ResidualDataFrameVelocityTpl;
139 
140 template <typename Scalar>
141 class ResidualModelImpulseCoMTpl;
142 template <typename Scalar>
143 struct ResidualDataImpulseCoMTpl;
144 
145 template <typename Scalar>
146 class ResidualModelStateTpl;
147 template <typename Scalar>
149 
150 #ifdef PINOCCHIO_WITH_HPP_FCL
151 template <typename Scalar>
152 class ResidualModelPairCollisionTpl;
153 template <typename Scalar>
154 struct ResidualDataPairCollisionTpl;
155 #endif
156 
157 // impulse
158 template <typename Scalar>
160 template <typename Scalar>
162 
163 // contact
164 template <typename Scalar>
165 struct ContactItemTpl;
166 template <typename Scalar>
168 template <typename Scalar>
170 
171 template <typename Scalar>
172 class ContactModel1DTpl;
173 template <typename Scalar>
174 struct ContactData1DTpl;
175 
176 template <typename Scalar>
177 class ContactModel2DTpl;
178 template <typename Scalar>
179 struct ContactData2DTpl;
180 
181 template <typename Scalar>
182 class ContactModel3DTpl;
183 template <typename Scalar>
184 struct ContactData3DTpl;
185 
186 template <typename Scalar>
187 class ContactModel6DTpl;
188 template <typename Scalar>
189 struct ContactData6DTpl;
190 
191 // friction
192 template <typename Scalar>
193 class FrictionConeTpl;
194 template <typename Scalar>
195 class WrenchConeTpl;
196 
197 // cop support
198 template <typename Scalar>
199 class CoPSupportTpl;
200 
201 // state
202 template <typename Scalar>
203 class StateMultibodyTpl;
204 
205 // data collector
206 template <typename Scalar>
208 
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 // impulse
234 template <typename Scalar>
235 class ImpulseModel6DTpl;
236 template <typename Scalar>
237 struct ImpulseData6DTpl;
238 
239 template <typename Scalar>
240 class ImpulseModel3DTpl;
241 template <typename Scalar>
242 struct ImpulseData3DTpl;
243 
244 template <typename Scalar>
245 struct ImpulseItemTpl;
246 template <typename Scalar>
248 template <typename Scalar>
250 
251 /**** Template Instantiation ****/
252 
258 
260 
263 
266 
283 
288 
292 
330 
331 #ifdef PINOCCHIO_WITH_HPP_FCL
332 typedef ResidualModelPairCollisionTpl<double> ResidualModelPairCollision;
333 typedef ResidualDataPairCollisionTpl<double> ResidualDataPairCollision;
334 #endif
335 
338 
339 enum ContactType {
340  ContactUndefined,
341  Contact1D,
342  Contact2D,
343  Contact3D,
344  Contact6D
345 };
346 enum ImpulseType { ImpulseUndefined, Impulse3D, Impulse6D };
347 
348 typedef ContactItemTpl<double> ContactItem;
349 typedef ContactModelMultipleTpl<double> ContactModelMultiple;
350 typedef ContactDataMultipleTpl<double> ContactDataMultiple;
351 typedef ContactModel1DTpl<double> ContactModel1D;
352 typedef ContactData1DTpl<double> ContactData1D;
353 typedef ContactModel2DTpl<double> ContactModel2D;
354 typedef ContactData2DTpl<double> ContactData2D;
355 typedef ContactModel3DTpl<double> ContactModel3D;
356 typedef ContactData3DTpl<double> ContactData3D;
357 typedef ContactModel6DTpl<double> ContactModel6D;
358 typedef ContactData6DTpl<double> ContactData6D;
359 
360 typedef StateMultibodyTpl<double> StateMultibody;
361 
362 typedef DataCollectorMultibodyTpl<double> DataCollectorMultibody;
363 typedef DataCollectorActMultibodyTpl<double> DataCollectorActMultibody;
364 typedef DataCollectorJointActMultibodyTpl<double>
365  DataCollectorJointActMultibody;
366 typedef DataCollectorContactTpl<double> DataCollectorContact;
367 typedef DataCollectorMultibodyInContactTpl<double>
368  DataCollectorMultibodyInContact;
369 typedef DataCollectorActMultibodyInContactTpl<double>
370  DataCollectorActMultibodyInContact;
371 typedef DataCollectorJointActMultibodyInContactTpl<double>
372  DataCollectorJointActMultibodyInContact;
373 typedef DataCollectorImpulseTpl<double> DataCollectorImpulse;
374 typedef DataCollectorMultibodyInImpulseTpl<double>
375  DataCollectorMultibodyInImpulse;
376 
377 typedef ImpulseModel6DTpl<double> ImpulseModel6D;
378 typedef ImpulseData6DTpl<double> ImpulseData6D;
379 typedef ImpulseModel3DTpl<double> ImpulseModel3D;
380 typedef ImpulseData3DTpl<double> ImpulseData3D;
381 typedef ImpulseItemTpl<double> ImpulseItem;
382 typedef ImpulseModelMultipleTpl<double> ImpulseModelMultiple;
383 typedef ImpulseDataMultipleTpl<double> ImpulseDataMultiple;
384 
385 } // namespace crocoddyl
386 
387 #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:31
This class encapsulates a center of pressure support of a 6d contact.
Definition: cop-support.hpp:27
Define a stack of contact models.
This class computes the numerical differentiation of a cost model.
Definition: cost.hpp:32
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:52
Differential action model for free inverse dynamics in multibody systems.
Definition: free-invdyn.hpp:40
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:34
This class encapsulates a wrench cone.
Definition: wrench-cone.hpp:32
Define the multi-contact data.
Define the multi-impulse data.