33 #ifndef DART_DYNAMICS_GENERICJOINT_HPP_
34 #define DART_DYNAMICS_GENERICJOINT_HPP_
43 class DegreeOfFreedom;
45 template <
class ConfigSpaceT>
52 static constexpr std::size_t
NumDofs = ConfigSpaceT::NumDofs;
57 using Point =
typename ConfigSpaceT::Point;
59 using Vector =
typename ConfigSpaceT::Vector;
61 using Matrix =
typename ConfigSpaceT::Matrix;
441 const
Eigen::VectorXd& q2, const
Eigen::VectorXd& q1) const override;
504 const
Eigen::VectorXd& _positions) const override;
508 const
Vector& positions) const = 0;
574 const
Eigen::
Matrix6d& artInertia,
double timeStep) override;
591 double timeStep) override;
611 bool withDampingForces,
612 bool withSpringForces) override;
617 bool withDampingForcese,
618 bool withSpringForces) override;
826 #include "dart/dynamics/detail/GenericJoint.hpp"
BodyPropPtr properties
Definition: SdfParser.cpp:80
std::string * name
Definition: SkelParser.cpp:1642
bool * preserveName
Definition: SkelParser.cpp:1641
Eigen::VectorXd velocity
Definition: SkelParser.cpp:108
Eigen::VectorXd force
Definition: SkelParser.cpp:110
std::size_t index
Definition: SkelParser.cpp:1617
Eigen::VectorXd acceleration
Definition: SkelParser.cpp:109
double * friction
Definition: SkelParser.cpp:1639
Eigen::VectorXd position
Definition: SkelParser.cpp:107
Terminator for the variadic template.
Definition: CompositeJoiner.hpp:45
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
DegreeOfFreedom class is a proxy class for accessing single degrees of freedom (aka generalized coord...
Definition: DegreeOfFreedom.hpp:53
Definition: GenericJoint.hpp:49
void setAspectState(const AspectState &state)
Set the AspectState of this GenericJoint.
Definition: GenericJoint.hpp:114
void setForceLowerLimits(const Eigen::VectorXd &lowerLimits) override
Definition: GenericJoint.hpp:1246
double getCommand(std::size_t index) const override
Definition: GenericJoint.hpp:391
typename ConfigSpaceT::Matrix Matrix
Definition: GenericJoint.hpp:61
void addChildArtInertiaImplicitToKinematic(Eigen::Matrix6d &parentArtInertia, const Eigen::Matrix6d &childArtInertia)
Definition: GenericJoint.hpp:1872
Eigen::VectorXd getCommands() const override
Definition: GenericJoint.hpp:473
void resetVelocities() override
Definition: GenericJoint.hpp:946
const Vector & getPositionsStatic() const
Fixed-size version of getPositions()
Definition: GenericJoint.hpp:732
void setAccelerationsStatic(const Vector &accels)
Fixed-size version of setAccelerations()
Definition: GenericJoint.hpp:759
void copy(const ThisClass &otherJoint)
Copy the Properties of another GenericJoint.
Definition: GenericJoint.hpp:159
void setForceUpperLimits(const Eigen::VectorXd &upperLimits) override
Definition: GenericJoint.hpp:1294
void updateTotalImpulseKinematic(const Eigen::Vector6d &bodyImpulse)
Definition: GenericJoint.hpp:2248
void setCoulombFriction(std::size_t index, double friction) override
Definition: GenericJoint.hpp:1536
const JacobianMatrix & getRelativeJacobianTimeDerivStatic() const
Fixed-size version of getRelativeJacobianTimeDeriv()
Definition: GenericJoint.hpp:1618
void setRestPosition(std::size_t index, double q0) override
Definition: GenericJoint.hpp:1469
Vector mTotalForce
Total force projected on joint space.
Definition: GenericJoint.hpp:718
void setAccelerations(const Eigen::VectorXd &accelerations) override
Definition: GenericJoint.hpp:1036
Vector mInvM_a
Definition: GenericJoint.hpp:728
void updateTotalImpulse(const Eigen::Vector6d &bodyImpulse) override
Definition: GenericJoint.hpp:2214
void updateForceFD(const Eigen::Vector6d &bodyForce, double timeStep, bool withDampingForcese, bool withSpringForces) override
Definition: GenericJoint.hpp:2393
const Matrix & getInvProjArtInertiaImplicit() const
Get the inverse of projected articulated inertia for implicit joint damping and spring forces.
Definition: GenericJoint.hpp:1761
Eigen::VectorXd getPositionUpperLimits() const override
Definition: GenericJoint.hpp:631
Vector mVelocityChanges
Change of generalized velocity.
Definition: GenericJoint.hpp:682
void setVelocityUpperLimits(const Eigen::VectorXd &upperLimits) override
Definition: GenericJoint.hpp:912
void updateForceID(const Eigen::Vector6d &bodyForce, double timeStep, bool withDampingForces, bool withSpringForces) override
Definition: GenericJoint.hpp:2362
Eigen::VectorXd getAccelerationUpperLimits() const override
Definition: GenericJoint.hpp:1153
void updateAccelerationKinematic(const Eigen::Matrix6d &artInertia, const Eigen::Vector6d &spatialAcc)
Definition: GenericJoint.hpp:2303
void updateVelocityChangeDynamic(const Eigen::Matrix6d &artInertia, const Eigen::Vector6d &velocityChange)
Definition: GenericJoint.hpp:2337
Eigen::VectorXd getVelocityLowerLimits() const override
Definition: GenericJoint.hpp:877
void updateInvProjArtInertiaImplicit(const Eigen::Matrix6d &artInertia, double timeStep) override
Definition: GenericJoint.hpp:1932
void setVelocityLowerLimits(const Eigen::VectorXd &lowerLimits) override
Definition: GenericJoint.hpp:863
void updateConstrainedTermsDynamic(double timeStep)
Definition: GenericJoint.hpp:2473
void setPositionLowerLimit(std::size_t index, double position) override
Definition: GenericJoint.hpp:542
const GenericJoint< ConfigSpaceT >::JacobianMatrix & getRelativeJacobianStatic() const
Fixed-size version of getRelativeJacobian()
Definition: GenericJoint.hpp:1588
void addChildArtInertiaToDynamic(Eigen::Matrix6d &parentArtInertia, const Eigen::Matrix6d &childArtInertia)
Definition: GenericJoint.hpp:1797
const math::Jacobian getRelativeJacobianTimeDeriv() const override
Definition: GenericJoint.hpp:1610
void setVelocities(const Eigen::VectorXd &velocities) override
Definition: GenericJoint.hpp:812
void addChildBiasImpulseToKinematic(Eigen::Vector6d &parentBiasImpulse, const Eigen::Matrix6d &childArtInertia, const Eigen::Vector6d &childBiasImpulse)
Definition: GenericJoint.hpp:2128
void addChildArtInertiaImplicitTo(Eigen::Matrix6d &parentArtInertiaImplicit, const Eigen::Matrix6d &childArtInertiaImplicit) override
Definition: GenericJoint.hpp:1827
void setPosition(std::size_t index, double position) override
Definition: GenericJoint.hpp:487
void updateVelocityChange(const Eigen::Matrix6d &artInertia, const Eigen::Vector6d &velocityChange) override
Definition: GenericJoint.hpp:2312
void setCommand(std::size_t index, double command) override
Definition: GenericJoint.hpp:326
std::array< DegreeOfFreedom *, NumDofs > mDofs
Array of DegreeOfFreedom objects.
Definition: GenericJoint.hpp:675
void setInitialPosition(std::size_t index, double initial) override
Definition: GenericJoint.hpp:672
Eigen::VectorXd getForces() const override
Definition: GenericJoint.hpp:1212
void resetCommands() override
Definition: GenericJoint.hpp:480
void setVelocityChange(std::size_t index, double velocityChange) override
Definition: GenericJoint.hpp:1325
void setAccelerationUpperLimits(const Eigen::VectorXd &upperLimits) override
Definition: GenericJoint.hpp:1139
void setPartialAccelerationTo(Eigen::Vector6d &partialAcceleration, const Eigen::Vector6d &childVelocity) override
Definition: GenericJoint.hpp:1712
double getVelocity(std::size_t index) const override
Definition: GenericJoint.hpp:799
Eigen::Vector6d getBodyConstraintWrench() const override
Definition: GenericJoint.hpp:1667
void addAccelerationTo(Eigen::Vector6d &acc) override
Definition: GenericJoint.hpp:1726
void updateTotalImpulseDynamic(const Eigen::Vector6d &bodyImpulse)
Definition: GenericJoint.hpp:2238
void setForce(std::size_t index, double force) override
Definition: GenericJoint.hpp:1167
Vector mConstraintImpulses
Generalized constraint impulse.
Definition: GenericJoint.hpp:688
void setInitialVelocity(std::size_t index, double initial) override
Definition: GenericJoint.hpp:953
double getForce(std::size_t index) const override
Definition: GenericJoint.hpp:1183
void setInitialVelocities(const Eigen::VectorXd &initial) override
Definition: GenericJoint.hpp:980
void updateInvProjArtInertiaDynamic(const Eigen::Matrix6d &artInertia)
Definition: GenericJoint.hpp:1908
DegreeOfFreedom * getDof(std::size_t index) override
void setPositionUpperLimit(std::size_t index, double position) override
Definition: GenericJoint.hpp:590
void updateInvProjArtInertiaImplicitKinematic(const Eigen::Matrix6d &artInertia, double timeStep)
Definition: GenericJoint.hpp:1980
const math::Jacobian getRelativeJacobian() const override
Definition: GenericJoint.hpp:1580
std::size_t getNumDofs() const override
Definition: GenericJoint.hpp:215
void resetForces() override
Definition: GenericJoint.hpp:1315
void addChildArtInertiaTo(Eigen::Matrix6d &parentArtInertia, const Eigen::Matrix6d &childArtInertia) override
Definition: GenericJoint.hpp:1770
Eigen::VectorXd getPositionLowerLimits() const override
Definition: GenericJoint.hpp:583
bool isDofNamePreserved(size_t index) const override
Definition: GenericJoint.hpp:269
void addVelocityTo(Eigen::Vector6d &vel) override
Definition: GenericJoint.hpp:1701
void preserveDofName(size_t index, bool preserve) override
Definition: GenericJoint.hpp:256
double getVelocityUpperLimit(std::size_t index) const override
Definition: GenericJoint.hpp:898
double getVelocityChange(std::size_t index) const override
Definition: GenericJoint.hpp:1339
Vector mTotalImpulse
Total impluse projected on joint space.
Definition: GenericJoint.hpp:721
void updateTotalForce(const Eigen::Vector6d &bodyForce, double timeStep) override
Definition: GenericJoint.hpp:2140
void resetConstraintImpulses() override
Definition: GenericJoint.hpp:1386
virtual Vector getPositionDifferencesStatic(const Vector &q2, const Vector &q1) const
Fixed-size version of getPositionDifferences()
Definition: GenericJoint.hpp:1432
void setVelocity(std::size_t index, double velocity) override
Definition: GenericJoint.hpp:778
double getRestPosition(std::size_t index) const override
Definition: GenericJoint.hpp:1494
void updateConstrainedTerms(double timeStep) override
Definition: GenericJoint.hpp:2450
void integrateVelocities(double dt) override
Definition: GenericJoint.hpp:1404
Eigen::VectorXd getPositions() const override
Definition: GenericJoint.hpp:535
void addChildBiasImpulseToDynamic(Eigen::Vector6d &parentBiasImpulse, const Eigen::Matrix6d &childArtInertia, const Eigen::Vector6d &childBiasImpulse)
Definition: GenericJoint.hpp:2107
double getAcceleration(std::size_t index) const override
Definition: GenericJoint.hpp:1023
Eigen::VectorXd getVelocities() const override
Definition: GenericJoint.hpp:829
Eigen::VectorXd getInitialPositions() const override
Definition: GenericJoint.hpp:713
Eigen::VectorXd getPositionDifferences(const Eigen::VectorXd &q2, const Eigen::VectorXd &q1) const override
Definition: GenericJoint.hpp:1413
void setPositionLowerLimits(const Eigen::VectorXd &lowerLimits) override
Definition: GenericJoint.hpp:569
double getAccelerationUpperLimit(std::size_t index) const override
Definition: GenericJoint.hpp:1125
Matrix mInvProjArtInertia
Inverse of projected articulated inertia.
Definition: GenericJoint.hpp:708
void setForceLowerLimit(size_t index, double force) override
Definition: GenericJoint.hpp:1219
void setSpringStiffness(std::size_t index, double k) override
Definition: GenericJoint.hpp:1441
void updateRelativePrimaryAcceleration() const override
Definition: GenericJoint.hpp:1693
void setProperties(const Properties &properties)
Set the Properties of this GenericJoint.
Definition: GenericJoint.hpp:98
double getForceLowerLimit(std::size_t index) const override
Definition: GenericJoint.hpp:1232
static constexpr std::size_t NumDofs
Definition: GenericJoint.hpp:52
const Vector & getVelocitiesStatic() const
Fixed-size version of getVelocities()
Definition: GenericJoint.hpp:752
double getPositionUpperLimit(std::size_t index) const override
Definition: GenericJoint.hpp:604
const std::string & getDofName(size_t index) const override
Definition: GenericJoint.hpp:282
double computePotentialEnergy() const override
Definition: GenericJoint.hpp:1565
double getSpringStiffness(std::size_t index) const override
Definition: GenericJoint.hpp:1456
void setDampingCoefficient(std::size_t index, double coeff) override
Definition: GenericJoint.hpp:1507
void updateInvProjArtInertia(const Eigen::Matrix6d &artInertia) override
Definition: GenericJoint.hpp:1884
void resetVelocity(std::size_t index) override
Definition: GenericJoint.hpp:933
JacobianMatrix mJacobianDeriv
Time derivative of spatial Jacobian expressed in the child body frame.
Definition: GenericJoint.hpp:703
void setPositionsStatic(const Vector &positions)
Fixed-size version of setPositions()
Definition: GenericJoint.hpp:720
void addChildBiasForceForInvAugMassMatrix(Eigen::Vector6d &parentBiasForce, const Eigen::Matrix6d &childArtInertia, const Eigen::Vector6d &childBiasForce) override
Definition: GenericJoint.hpp:2515
void updateConstrainedTermsKinematic(double timeStep)
Definition: GenericJoint.hpp:2487
void setAccelerationLowerLimits(const Eigen::VectorXd &lowerLimits) override
Definition: GenericJoint.hpp:1089
void setAspectProperties(const AspectProperties &properties)
Set the AspectProperties of this GenericJoint.
Definition: GenericJoint.hpp:125
Eigen::VectorXd getForceUpperLimits() const override
Definition: GenericJoint.hpp:1308
void updateImpulseFD(const Eigen::Vector6d &bodyImpulse) override
Definition: GenericJoint.hpp:2427
void updateInvProjArtInertiaImplicitDynamic(const Eigen::Matrix6d &artInertia, double timeStep)
Definition: GenericJoint.hpp:1958
void updateTotalForceKinematic(const Eigen::Vector6d &bodyForce, double timeStep)
Definition: GenericJoint.hpp:2205
void resetTotalImpulses() override
Definition: GenericJoint.hpp:2256
void integratePositions(double dt) override
Definition: GenericJoint.hpp:1393
void setPositions(const Eigen::VectorXd &positions) override
Definition: GenericJoint.hpp:521
void addChildBiasForceToDynamic(Eigen::Vector6d &parentBiasForce, const Eigen::Matrix6d &childArtInertia, const Eigen::Vector6d &childBiasForce, const Eigen::Vector6d &childPartialAcc)
Definition: GenericJoint.hpp:2021
Eigen::VectorXd getForceLowerLimits() const override
Definition: GenericJoint.hpp:1260
double getInitialVelocity(std::size_t index) const override
Definition: GenericJoint.hpp:967
Eigen::VectorXd getAccelerations() const override
Definition: GenericJoint.hpp:1053
typename ConfigSpaceT::Vector Vector
Definition: GenericJoint.hpp:59
void updateVelocityChangeKinematic(const Eigen::Matrix6d &artInertia, const Eigen::Vector6d &velocityChange)
Definition: GenericJoint.hpp:2353
const Vector & getAccelerationsStatic() const
Fixed-size version of getAccelerations()
Definition: GenericJoint.hpp:771
Eigen::VectorXd getInitialVelocities() const override
Definition: GenericJoint.hpp:994
void setCommands(const Eigen::VectorXd &commands) override
Definition: GenericJoint.hpp:404
Eigen::VectorXd getSpatialToGeneralized(const Eigen::Vector6d &spatial) override
Definition: GenericJoint.hpp:2602
typename ConfigSpaceT::JacobianMatrix JacobianMatrix
Definition: GenericJoint.hpp:60
void getInvAugMassMatrixSegment(Eigen::MatrixXd &invMassMat, const size_t col, const Eigen::Matrix6d &artInertia, const Eigen::Vector6d &spatialAcc) override
Definition: GenericJoint.hpp:2569
double getVelocityLowerLimit(std::size_t index) const override
Definition: GenericJoint.hpp:850
void updateImpulseID(const Eigen::Vector6d &bodyImpulse) override
Definition: GenericJoint.hpp:2419
void setVelocityLowerLimit(std::size_t index, double velocity) override
Definition: GenericJoint.hpp:836
double getInitialPosition(std::size_t index) const override
Definition: GenericJoint.hpp:686
void updateAcceleration(const Eigen::Matrix6d &artInertia, const Eigen::Vector6d &spatialAcc) override
Definition: GenericJoint.hpp:2263
Vector mInvMassMatrixSegment
Definition: GenericJoint.hpp:731
void addChildBiasForceToKinematic(Eigen::Vector6d &parentBiasForce, const Eigen::Matrix6d &childArtInertia, const Eigen::Vector6d &childBiasForce, const Eigen::Vector6d &childPartialAcc)
Definition: GenericJoint.hpp:2050
void setVelocityUpperLimit(std::size_t index, double velocity) override
Definition: GenericJoint.hpp:884
typename ConfigSpaceT::Point Point
Definition: GenericJoint.hpp:57
void updateInvProjArtInertiaKinematic(const Eigen::Matrix6d &artInertia)
Definition: GenericJoint.hpp:1924
bool hasPositionLimit(std::size_t index) const override
Definition: GenericJoint.hpp:638
JacobianMatrix mJacobian
Spatial Jacobian expressed in the child body frame.
Definition: GenericJoint.hpp:697
void setInitialPositions(const Eigen::VectorXd &initial) override
Definition: GenericJoint.hpp:699
void addChildBiasForceTo(Eigen::Vector6d &parentBiasForce, const Eigen::Matrix6d &childArtInertia, const Eigen::Vector6d &childBiasForce, const Eigen::Vector6d &childPartialAcc) override
Definition: GenericJoint.hpp:1988
double getCoulombFriction(std::size_t index) const override
Definition: GenericJoint.hpp:1552
void addInvMassMatrixSegmentTo(Eigen::Vector6d &acc) override
Definition: GenericJoint.hpp:2593
Vector mImpulses
Generalized impulse.
Definition: GenericJoint.hpp:685
void setConstraintImpulse(std::size_t index, double impulse) override
Definition: GenericJoint.hpp:1359
void resetPosition(std::size_t index) override
Definition: GenericJoint.hpp:652
double getForceUpperLimit(size_t index) const override
Definition: GenericJoint.hpp:1280
void registerDofs() override
Definition: GenericJoint.hpp:1653
void addVelocityChangeTo(Eigen::Vector6d &velocityChange) override
Definition: GenericJoint.hpp:1738
const std::string & setDofName(std::size_t index, const std::string &name, bool preserveName=true) override
Definition: GenericJoint.hpp:222
void setAccelerationUpperLimit(std::size_t index, double acceleration) override
Definition: GenericJoint.hpp:1110
double getDampingCoefficient(std::size_t index) const override
Definition: GenericJoint.hpp:1523
Matrix mInvProjArtInertiaImplicit
Inverse of projected articulated inertia for implicit joint damping and spring forces.
Definition: GenericJoint.hpp:715
void setPositionUpperLimits(const Eigen::VectorXd &upperLimits) override
Definition: GenericJoint.hpp:617
Eigen::VectorXd getAccelerationLowerLimits() const override
Definition: GenericJoint.hpp:1103
void updateTotalForceDynamic(const Eigen::Vector6d &bodyForce, double timeStep)
Definition: GenericJoint.hpp:2180
void setVelocitiesStatic(const Vector &velocities)
Fixed-size version of setVelocities()
Definition: GenericJoint.hpp:739
void updateRelativeSpatialAcceleration() const override
Definition: GenericJoint.hpp:1684
void updateRelativeSpatialVelocity() const override
Definition: GenericJoint.hpp:1676
void setForceUpperLimit(size_t index, double force) override
Definition: GenericJoint.hpp:1267
size_t getIndexInTree(size_t index) const override
Definition: GenericJoint.hpp:313
Eigen::VectorXd getVelocityUpperLimits() const override
Definition: GenericJoint.hpp:926
void setAccelerationLowerLimit(size_t index, double acceleration) override
Definition: GenericJoint.hpp:1060
double getPosition(std::size_t index) const override
Definition: GenericJoint.hpp:508
void addChildArtInertiaImplicitToDynamic(Eigen::Matrix6d &parentArtInertia, const Eigen::Matrix6d &childArtInertia)
Definition: GenericJoint.hpp:1854
double getAccelerationLowerLimit(std::size_t index) const override
Definition: GenericJoint.hpp:1075
void addChildBiasImpulseTo(Eigen::Vector6d &parentBiasImpulse, const Eigen::Matrix6d &childArtInertia, const Eigen::Vector6d &childBiasImpulse) override
Definition: GenericJoint.hpp:2077
double getPositionLowerLimit(std::size_t index) const override
Definition: GenericJoint.hpp:556
void updateAccelerationDynamic(const Eigen::Matrix6d &artInertia, const Eigen::Vector6d &spatialAcc)
Definition: GenericJoint.hpp:2288
void resetPositions() override
Definition: GenericJoint.hpp:665
void addChildBiasForceForInvMassMatrix(Eigen::Vector6d &parentBiasForce, const Eigen::Matrix6d &childArtInertia, const Eigen::Vector6d &childBiasForce) override
Definition: GenericJoint.hpp:2495
void getInvMassMatrixSegment(Eigen::MatrixXd &invMassMat, const size_t col, const Eigen::Matrix6d &artInertia, const Eigen::Vector6d &spatialAcc) override
Definition: GenericJoint.hpp:2545
typename ConfigSpaceT::EuclideanPoint EuclideanPoint
Definition: GenericJoint.hpp:58
Properties getGenericJointProperties() const
Get the Properties of this GenericJoint.
Definition: GenericJoint.hpp:151
const Matrix & getInvProjArtInertia() const
Get the inverse of the projected articulated inertia.
Definition: GenericJoint.hpp:1751
void setForces(const Eigen::VectorXd &forces) override
Definition: GenericJoint.hpp:1196
void updateTotalForceForInvMassMatrix(const Eigen::Vector6d &bodyForce) override
Definition: GenericJoint.hpp:2535
void resetAccelerations() override
Definition: GenericJoint.hpp:1160
void setAcceleration(std::size_t index, double acceleration) override
Definition: GenericJoint.hpp:1001
void addChildArtInertiaToKinematic(Eigen::Matrix6d &parentArtInertia, const Eigen::Matrix6d &childArtInertia)
Definition: GenericJoint.hpp:1815
double getConstraintImpulse(std::size_t index) const override
Definition: GenericJoint.hpp:1373
size_t getIndexInSkeleton(size_t index) const override
Definition: GenericJoint.hpp:300
void resetVelocityChanges() override
Definition: GenericJoint.hpp:1352
#define DART_BAKE_SPECIALIZED_ASPECT_IRREGULAR(TypeName, AspectName)
Definition: Composite.hpp:164
Definition: Random-impl.hpp:92
Matrix< double, 6, 1 > Vector6d
Definition: MathTypes.hpp:49
Matrix< double, 6, 6 > Matrix6d
Definition: MathTypes.hpp:50
Eigen::Matrix< double, 6, Eigen::Dynamic > Jacobian
Definition: MathTypes.hpp:108
Definition: BulletCollisionDetector.cpp:63
Definition: SharedLibraryManager.hpp:43
Definition: GenericJointAspect.hpp:178
Definition: GenericJointAspect.hpp:87