DART 6.7.3
Loading...
Searching...
No Matches
SoftBodyNode.hpp
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011-2019, The DART development contributors
3 * All rights reserved.
4 *
5 * The list of contributors can be found at:
6 * https://github.com/dartsim/dart/blob/master/LICENSE
7 *
8 * This file is provided under the following "BSD-style" License:
9 * Redistribution and use in source and binary forms, with or
10 * without modification, are permitted provided that the following
11 * conditions are met:
12 * * Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * * Redistributions in binary form must reproduce the above
15 * copyright notice, this list of conditions and the following
16 * disclaimer in the documentation and/or other materials provided
17 * with the distribution.
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
19 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
20 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 * POSSIBILITY OF SUCH DAMAGE.
31 */
32
33#ifndef DART_DYNAMICS_SOFTBODYNODE_HPP_
34#define DART_DYNAMICS_SOFTBODYNODE_HPP_
35
37
38namespace dart {
39namespace dynamics {
40
46{
47public:
48
52
53 friend class Skeleton;
54 friend class PointMass;
55 friend class PointMassNotifier;
56
58
59
60 virtual ~SoftBodyNode();
61
62 // Documentation inherited
63 SoftBodyNode* asSoftBodyNode() override;
64
65 // Documentation inherited
66 const SoftBodyNode* asSoftBodyNode() const override;
67
69 void setProperties(const Properties& _properties);
70
72 void setProperties(const UniqueProperties& _properties);
73
75 void setAspectState(const AspectState& state);
76
79
81
84
86 void copy(const SoftBodyNode& _otherSoftBodyNode);
87
89 void copy(const SoftBodyNode* _otherSoftBodyNode);
90
92 SoftBodyNode& operator=(const SoftBodyNode& _otherSoftBodyNode);
93
96
98 const PointMassNotifier* getNotifier() const;
99
101 double getMass() const;
102
104 void setVertexSpringStiffness(double _kv);
105
107 double getVertexSpringStiffness() const;
108
110 void setEdgeSpringStiffness(double _ke);
111
113 double getEdgeSpringStiffness() const;
114
116 void setDampingCoefficient(double _damp);
117
119 double getDampingCoefficient() const;
120
123
125 PointMass* addPointMass(const PointMass::Properties& _properties);
126
128 std::size_t getNumPointMasses() const;
129
131 PointMass* getPointMass(std::size_t _idx);
132
134 const PointMass* getPointMass(std::size_t _idx) const;
135
137 const std::vector<PointMass*>& getPointMasses() const;
138
140 void connectPointMasses(std::size_t _idx1, std::size_t _idx2);
141
143 void addFace(const Eigen::Vector3i& _face);
144
146 const Eigen::Vector3i& getFace(std::size_t _idx) const;
147
149 std::size_t getNumFaces() const;
150
151 // Documentation inherited.
152 void clearConstraintImpulse() override;
153
154protected:
155
157 SoftBodyNode(BodyNode* _parentBodyNode, Joint* _parentJoint,
158 const Properties& _properties);
159
162 BodyNode* clone(BodyNode* _parentBodyNode, Joint* _parentJoint,
163 bool cloneNodes) const override;
164
167 void configurePointMasses(ShapeNode* softNode);
168
169 //--------------------------------------------------------------------------
170 // Sub-functions for Recursive Kinematics Algorithms
171 //--------------------------------------------------------------------------
172 // Documentation inherited.
173 void init(const SkeletonPtr& _skeleton) override;
174
175 // Documentation inherited.
176// virtual void aggregateGenCoords(std::vector<GenCoord*>* _genCoords);
177
178 // Documentation inherited.
179// virtual void aggregatePointMassGenCoords(std::vector<GenCoord*>* _genCoords);
180
181 //----------------------------------------------------------------------------
183 //----------------------------------------------------------------------------
184
187
188 // Documentation inherited.
189 void updateTransform() override;
190
191 // Documentation inherited.
192 void updateVelocity() override;
193
194 // Documentation inherited.
195 void updatePartialAcceleration() const override;
196
197 // Documentation inherited.
198 void updateArtInertia(double _timeStep) const override;
199
200 // Documentation inherited.
201 void updateBiasForce(const Eigen::Vector3d& _gravity,
202 double _timeStep) override;
203
204 // Documentation inherited.
205 void updateBiasImpulse() override;
206
207 // Documentation inherited.
208 void updateAccelerationID() override;
209
210 // Documentation inherited.
211 void updateAccelerationFD() override;
212
213 // Documentation inherited.
214 void updateVelocityChangeFD() override;
215
216 // Documentation inherited.
218 const Eigen::Vector3d& _gravity,
219 bool _withExternalForces = false) override;
220
221 // Documentation inherited.
222 void updateTransmittedForceFD() override;
223
224 // Documentation inherited.
225 void updateTransmittedImpulse() override;
226
227 // Documentation inherited.
228 void updateJointForceID(double _timeStep,
229 bool _withDampingForces,
230 bool _withSpringForces) override;
231
232 // Documentation inherited.
233 void updateJointForceFD(double _timeStep,
234 bool _withDampingForces,
235 bool _withSpringForces) override;
236
237 // Documentation inherited.
238 void updateJointImpulseFD() override;
239
240 // Documentation inherited.
241 void updateConstrainedTerms(double _timeStep) override;
242
244
245 //----------------------------------------------------------------------------
247 //----------------------------------------------------------------------------
248
249 // Documentation inherited.
250 void updateMassMatrix() override;
251
252 // Documentation inherited.
253 void aggregateMassMatrix(Eigen::MatrixXd& _MCol, std::size_t _col) override;
254
255 // Documentation inherited.
256 void aggregateAugMassMatrix(Eigen::MatrixXd& _MCol, std::size_t _col,
257 double _timeStep) override;
258
259 // Documentation inherited.
260 void updateInvMassMatrix() override;
261
262 // Documentation inherited.
263 void updateInvAugMassMatrix() override;
264
265 // Documentation inherited.
266 void aggregateInvMassMatrix(Eigen::MatrixXd& _InvMCol, std::size_t _col) override;
267
268 // Documentation inherited.
269 void aggregateInvAugMassMatrix(Eigen::MatrixXd& _InvMCol, std::size_t _col,
270 double _timeStep) override;
271
272 // Documentation inherited.
273 // TODO(JS): Not implemented yet.
274 void aggregateCoriolisForceVector(Eigen::VectorXd& _C) override;
275
276 // Documentation inherited.
277 void aggregateGravityForceVector(Eigen::VectorXd& _g,
278 const Eigen::Vector3d& _gravity) override;
279
280 // Documentation inherited.
281 void updateCombinedVector() override;
282
283 // Documentation inherited.
284 void aggregateCombinedVector(Eigen::VectorXd& _Cg,
285 const Eigen::Vector3d& _gravity) override;
286
287 // Documentation inherited.
288 void aggregateExternalForces(Eigen::VectorXd& _Fext) override;
289
291
292 // Documentation inherited.
293 void clearExternalForces() override;
294
295 void clearInternalForces() override;
296
297protected:
298
300 std::vector<PointMass*> mPointMasses;
301
304
307
310
313
316
317private:
319 void _addPiToArtInertia(const Eigen::Vector3d& _p, double _Pi) const;
320
322 void _addPiToArtInertiaImplicit(const Eigen::Vector3d& _p,
323 double _ImplicitPi) const;
324
327};
328
330{
331public:
332
336 const Eigen::Vector3d& _size,
337 const Eigen::Isometry3d& _localTransform,
338 double _totalMass,
339 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
340 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
341 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
342
345 static void setBox(SoftBodyNode* _softBodyNode,
346 const Eigen::Vector3d& _size,
347 const Eigen::Isometry3d& _localTransform,
348 double _totalMass,
349 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
350 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
351 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
352
358 const Eigen::Vector3d& _size,
359 const Eigen::Isometry3d& _localTransform,
360 const Eigen::Vector3i& _frags,
361 double _totalMass,
362 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
363 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
364 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
365
371 // TODO: The component of _frags should allow 2.
372 static void setBox(SoftBodyNode* _softBodyNode,
373 const Eigen::Vector3d& _size,
374 const Eigen::Isometry3d& _localTransform,
375 const Eigen::Vector3i& _frags,
376 double _totalMass,
377 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
378 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
379 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
380
383 double _totalMass,
384 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
385 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
386 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
387
390 static void setSinglePointMass(
391 SoftBodyNode* _softBodyNode,
392 double _totalMass,
393 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
394 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
395 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
396
399 double _radius,
400 std::size_t _nSlices,
401 std::size_t _nStacks,
402 double _totalMass,
403 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
404 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
405 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
406
409 const Eigen::Vector3d& _size,
410 std::size_t _nSlices,
411 std::size_t _nStacks,
412 double _totalMass,
413 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
414 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
415 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
416
419 static void setEllipsoid(SoftBodyNode* _softBodyNode,
420 const Eigen::Vector3d& _size,
421 std::size_t _nSlices,
422 std::size_t _nStacks,
423 double _totalMass,
424 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
425 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
426 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
427
430 double _radius,
431 double _height,
432 std::size_t _nSlices,
433 std::size_t _nStacks,
434 std::size_t _nRings,
435 double _totalMass,
436 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
437 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
438 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
439
442 static void setCylinder(SoftBodyNode* _softBodyNode,
443 double _radius,
444 double _height,
445 std::size_t _nSlices,
446 std::size_t _nStacks,
447 std::size_t _nRings,
448 double _totalMass,
449 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
450 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
451 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
452};
453
454} // namespace dynamics
455} // namespace dart
456
457#endif // DART_DYNAMICS_SOFTBODYNODE_HPP_
BodyPropPtr properties
Definition SdfParser.cpp:80
This is an alternative to EmbedStateAndProperties which allows your class to also inherit other Compo...
Definition EmbeddedAspect.hpp:438
typename Impl::AspectState AspectState
Definition EmbeddedAspect.hpp:444
typename Impl::Aspect Aspect
Definition EmbeddedAspect.hpp:447
typename Impl::AspectProperties AspectProperties
Definition EmbeddedAspect.hpp:446
BodyNode class represents a single node of the skeleton.
Definition BodyNode.hpp:78
class Joint
Definition Joint.hpp:59
Definition PointMass.hpp:673
Definition PointMass.hpp:51
Definition ShapeNode.hpp:49
std::shared_ptr< Skeleton > getSkeleton()
Return the Skeleton this BodyNode belongs to.
Definition BodyNode.cpp:149
class Skeleton
Definition Skeleton.hpp:59
Definition SoftBodyNode.hpp:330
static void setCylinder(SoftBodyNode *_softBodyNode, double _radius, double _height, std::size_t _nSlices, std::size_t _nStacks, std::size_t _nRings, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
This should be called before SoftBodyNode::init() is called.
Definition SoftBodyNode.cpp:3049
static void setSinglePointMass(SoftBodyNode *_softBodyNode, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
This should be called before SoftBodyNode::init() is called.
Definition SoftBodyNode.cpp:2499
static SoftBodyNode::UniqueProperties makeEllipsoidProperties(const Eigen::Vector3d &_size, std::size_t _nSlices, std::size_t _nStacks, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
Create a Properties struct for an Ellipsoid-shaped SoftBodyNode.
Definition SoftBodyNode.cpp:2534
static void setBox(SoftBodyNode *_softBodyNode, const Eigen::Vector3d &_size, const Eigen::Isometry3d &_localTransform, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
This should be called before SoftBodyNode::init() is called.
Definition SoftBodyNode.cpp:1358
static SoftBodyNode::UniqueProperties makeBoxProperties(const Eigen::Vector3d &_size, const Eigen::Isometry3d &_localTransform, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
Create a Properties struct for a box-shaped SoftBodyNode with 8 PointMasses.
Definition SoftBodyNode.cpp:1266
static SoftBodyNode::UniqueProperties makeSinglePointMassProperties(double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
Create a Properties struct for a SoftBodyNode with a single PointMass.
Definition SoftBodyNode.cpp:2465
static SoftBodyNode::UniqueProperties makeCylinderProperties(double _radius, double _height, std::size_t _nSlices, std::size_t _nStacks, std::size_t _nRings, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
Create a Properties struct for a cylinder-shaped SoftBodyNode.
Definition SoftBodyNode.cpp:2715
static SoftBodyNode::UniqueProperties makeSphereProperties(double _radius, std::size_t _nSlices, std::size_t _nStacks, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
Create a Properties struct for an Sphere-shaped SoftBodyNode.
Definition SoftBodyNode.cpp:2514
static void setEllipsoid(SoftBodyNode *_softBodyNode, const Eigen::Vector3d &_size, std::size_t _nSlices, std::size_t _nStacks, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
This should be called before SoftBodyNode::init() is called.
Definition SoftBodyNode.cpp:2695
SoftBodyNode represent a soft body that has one deformable skin.
Definition SoftBodyNode.hpp:46
PointMassNotifier * mNotifier
An Entity which tracks when the point masses need to be updated.
Definition SoftBodyNode.hpp:303
void copy(const SoftBodyNode &_otherSoftBodyNode)
Copy the Properties of another SoftBodyNode.
Definition SoftBodyNode.cpp:190
void _addPiToArtInertia(const Eigen::Vector3d &_p, double _Pi) const
Definition SoftBodyNode.cpp:1222
void updateTransmittedForceFD() override
Definition SoftBodyNode.cpp:766
void updateArtInertia(double _timeStep) const override
Definition SoftBodyNode.cpp:660
Properties getSoftBodyNodeProperties() const
Get the Properties of this SoftBodyNode.
Definition SoftBodyNode.cpp:184
void updateJointImpulseFD() override
Definition SoftBodyNode.cpp:654
void aggregateGravityForceVector(Eigen::VectorXd &_g, const Eigen::Vector3d &_gravity) override
Definition SoftBodyNode.cpp:1078
void updateMassMatrix() override
Definition SoftBodyNode.cpp:834
void setAspectProperties(const AspectProperties &properties)
Set the AspectProperties of this SoftBodyNode.
Definition SoftBodyNode.cpp:168
void updatePartialAcceleration() const override
Definition SoftBodyNode.cpp:556
PointMass * addPointMass(const PointMass::Properties &_properties)
Definition SoftBodyNode.cpp:475
void updateAccelerationFD() override
Definition SoftBodyNode.cpp:755
std::vector< PointMass * > mPointMasses
List of point masses composing deformable mesh.
Definition SoftBodyNode.hpp:300
BodyNode * clone(BodyNode *_parentBodyNode, Joint *_parentJoint, bool cloneNodes) const override
Create a clone of this SoftBodyNode.
Definition SoftBodyNode.cpp:267
void updateBiasImpulse() override
Definition SoftBodyNode.cpp:775
void aggregateInvMassMatrix(Eigen::MatrixXd &_InvMCol, std::size_t _col) override
Definition SoftBodyNode.cpp:1007
void setAspectState(const AspectState &state)
Set the AspectState of this SoftBodyNode.
Definition SoftBodyNode.cpp:158
WeakShapeNodePtr mSoftShapeNode
Soft mesh shape belonging to this node.
Definition SoftBodyNode.hpp:306
void updateJointForceID(double _timeStep, bool _withDampingForces, bool _withSpringForces) override
Definition SoftBodyNode.cpp:629
std::size_t getNumFaces() const
Definition SoftBodyNode.cpp:511
void clearConstraintImpulse() override
Definition SoftBodyNode.cpp:517
double getEdgeSpringStiffness() const
Definition SoftBodyNode.cpp:442
math::Inertia mArtInertia2
Definition SoftBodyNode.hpp:312
void aggregateAugMassMatrix(Eigen::MatrixXd &_MCol, std::size_t _col, double _timeStep) override
Definition SoftBodyNode.cpp:887
void setVertexSpringStiffness(double _kv)
Definition SoftBodyNode.cpp:412
void connectPointMasses(std::size_t _idx1, std::size_t _idx2)
Definition SoftBodyNode.cpp:486
void updateVelocity() override
Definition SoftBodyNode.cpp:545
void removeAllPointMasses()
Definition SoftBodyNode.cpp:466
const std::vector< PointMass * > & getPointMasses() const
Return all the point masses in this SoftBodyNode.
Definition SoftBodyNode.cpp:237
void aggregateCombinedVector(Eigen::VectorXd &_Cg, const Eigen::Vector3d &_gravity) override
Definition SoftBodyNode.cpp:1126
void updateConstrainedTerms(double _timeStep) override
Definition SoftBodyNode.cpp:825
void aggregateCoriolisForceVector(Eigen::VectorXd &_C) override
Definition SoftBodyNode.cpp:1072
void addFace(const Eigen::Vector3i &_face)
Definition SoftBodyNode.cpp:497
void updateBiasForce(const Eigen::Vector3d &_gravity, double _timeStep) override
Definition SoftBodyNode.cpp:705
math::Inertia mI2
Generalized inertia with point masses.
Definition SoftBodyNode.hpp:309
void setProperties(const Properties &_properties)
Set the Properties of this SoftBodyNode.
Definition SoftBodyNode.cpp:143
double getMass() const
Get mass.
Definition SoftBodyNode.cpp:401
void updateInertiaWithPointMass()
Definition SoftBodyNode.cpp:1251
void updateInvAugMassMatrix() override
Definition SoftBodyNode.cpp:971
std::size_t getNumPointMasses() const
Definition SoftBodyNode.cpp:215
void init(const SkeletonPtr &_skeleton) override
Definition SoftBodyNode.cpp:343
void updateJointForceFD(double _timeStep, bool _withDampingForces, bool _withSpringForces) override
Definition SoftBodyNode.cpp:644
void aggregateMassMatrix(Eigen::MatrixXd &_MCol, std::size_t _col) override
Definition SoftBodyNode.cpp:843
void setDampingCoefficient(double _damp)
Definition SoftBodyNode.cpp:448
void configurePointMasses(ShapeNode *softNode)
Used by SoftBodyAspect to have this SoftBodyNode reconstruct its SoftMeshShape.
Definition SoftBodyNode.cpp:282
void updateTransform() override
Definition SoftBodyNode.cpp:534
void updateVelocityChangeFD() override
Definition SoftBodyNode.cpp:807
PointMass * getPointMass(std::size_t _idx)
Definition SoftBodyNode.cpp:221
void clearInternalForces() override
Definition SoftBodyNode.cpp:1213
SoftBodyNode & operator=(const SoftBodyNode &_otherSoftBodyNode)
Copy the Properties of another SoftBodyNode.
Definition SoftBodyNode.cpp:208
void _addPiToArtInertiaImplicit(const Eigen::Vector3d &_p, double _ImplicitPi) const
Definition SoftBodyNode.cpp:1236
void clearExternalForces() override
Definition SoftBodyNode.cpp:1204
virtual ~SoftBodyNode()
Definition SoftBodyNode.cpp:122
void updateTransmittedForceID(const Eigen::Vector3d &_gravity, bool _withExternalForces=false) override
Definition SoftBodyNode.cpp:578
void aggregateExternalForces(Eigen::VectorXd &_Fext) override
Definition SoftBodyNode.cpp:1170
void aggregateInvAugMassMatrix(Eigen::MatrixXd &_InvMCol, std::size_t _col, double _timeStep) override
Definition SoftBodyNode.cpp:1038
math::Inertia mArtInertiaImplicit2
Definition SoftBodyNode.hpp:315
void updateInvMassMatrix() override
Definition SoftBodyNode.cpp:937
void updateCombinedVector() override
Definition SoftBodyNode.cpp:1117
void checkArticulatedInertiaUpdate() const
Update articulated inertia if necessary.
Definition SoftBodyNode.cpp:526
PointMassNotifier * getNotifier()
Get the update notifier for the PointMasses of this SoftBodyNode.
Definition SoftBodyNode.cpp:389
double getVertexSpringStiffness() const
Definition SoftBodyNode.cpp:424
SoftBodyNode * asSoftBodyNode() override
Definition SoftBodyNode.cpp:131
double getDampingCoefficient() const
Definition SoftBodyNode.cpp:460
void updateTransmittedImpulse() override
Definition SoftBodyNode.cpp:816
void setEdgeSpringStiffness(double _ke)
Definition SoftBodyNode.cpp:430
const Eigen::Vector3i & getFace(std::size_t _idx) const
Definition SoftBodyNode.cpp:504
void updateAccelerationID() override
Definition SoftBodyNode.cpp:567
#define DART_BAKE_SPECIALIZED_ASPECT_IRREGULAR(TypeName, AspectName)
Definition Composite.hpp:164
common::EmbedStateAndPropertiesOnTopOf< SoftBodyNode, SoftBodyNodeUniqueState, SoftBodyNodeUniqueProperties, BodyNode > SoftBodyNodeBase
Definition SoftBodyNodeAspect.hpp:123
const double DART_DEFAULT_DAMPING_COEFF
Definition SoftBodyNodeAspect.hpp:45
const double DART_DEFAULT_VERTEX_STIFFNESS
Definition SoftBodyNodeAspect.hpp:43
std::shared_ptr< Skeleton > SkeletonPtr
Definition SmartPointer.hpp:60
const double DART_DEFAULT_EDGE_STIFNESS
Definition SoftBodyNodeAspect.hpp:44
Eigen::Matrix6d Inertia
Definition MathTypes.hpp:105
Definition BulletCollisionDetector.cpp:63
Properties for each PointMass.
Definition PointMass.hpp:83
Definition SoftBodyNodeAspect.hpp:109
Definition SoftBodyNodeAspect.hpp:66