33 #ifndef DART_DYNAMICS_FREEJOINT_HPP_ 34 #define DART_DYNAMICS_FREEJOINT_HPP_ 38 #include <Eigen/Dense> 40 #include "dart/common/Deprecated.hpp" 41 #include "dart/dynamics/GenericJoint.hpp" 56 DART_DEFINE_ALIGNED_SHARED_OBJECT_CREATOR(
Properties)
58 Properties(
const Base::Properties& properties = Base::Properties());
72 const std::string& getType()
const override;
78 bool isCyclic(std::size_t _index)
const override;
90 const Eigen::Vector6d& _positions);
100 const Eigen::Isometry3d& tf,
101 const Frame* withRespectTo = Frame::World());
108 const Eigen::Isometry3d& tf,
109 const Frame* withRespectTo = Frame::World());
119 const Eigen::Isometry3d& tf,
120 const Frame* withRespectTo = Frame::World());
127 const Eigen::Isometry3d& tf,
128 const Frame* withRespectTo = Frame::World());
139 const Eigen::Isometry3d& tf,
140 const Frame* withRespectTo = Frame::World(),
141 bool applyToAllRootBodies =
true);
149 const Eigen::Isometry3d& tf,
150 const Frame* withRespectTo = Frame::World(),
151 bool applyToAllRootBodies =
true);
180 const Eigen::Isometry3d* newTransform,
181 const Frame* withRespectTo,
182 const Eigen::Vector6d* newSpatialVelocity,
183 const Frame* velRelativeTo,
184 const Frame* velInCoordinatesOf,
185 const Eigen::Vector6d* newSpatialAcceleration,
186 const Frame* accRelativeTo,
187 const Frame* accInCoordinatesOf);
197 const Eigen::Isometry3d& newTransform,
198 const Frame* withRespectTo = Frame::World());
213 const Eigen::Vector6d& newSpatialVelocity,
const Frame* inCoordinatesOf);
222 const Eigen::Vector6d& newSpatialVelocity,
223 const Frame* relativeTo,
224 const Frame* inCoordinatesOf);
236 const Eigen::Vector3d& newLinearVelocity,
237 const Frame* relativeTo = Frame::World(),
238 const Frame* inCoordinatesOf = Frame::World());
250 const Eigen::Vector3d& newAngularVelocity,
251 const Frame* relativeTo = Frame::World(),
252 const Frame* inCoordinatesOf = Frame::World());
260 const Eigen::Vector6d& newSpatialAcceleration);
269 const Eigen::Vector6d& newSpatialAcceleration,
270 const Frame* inCoordinatesOf);
280 const Eigen::Vector6d& newSpatialAcceleration,
281 const Frame* relativeTo,
282 const Frame* inCoordinatesOf);
294 const Eigen::Vector3d& newLinearAcceleration,
295 const Frame* relativeTo = Frame::World(),
296 const Frame* inCoordinatesOf = Frame::World());
309 const Eigen::Vector3d& newAngularAcceleration,
310 const Frame* relativeTo = Frame::World(),
311 const Frame* inCoordinatesOf = Frame::World());
315 const Eigen::Vector6d& _positions)
const override;
318 Eigen::Vector6d getPositionDifferencesStatic(
319 const Eigen::Vector6d& _q2,
const Eigen::Vector6d& _q1)
const override;
326 Joint* clone()
const override;
331 void integratePositions(
double _dt)
override;
334 void updateDegreeOfFreedomNames()
override;
337 void updateRelativeTransform()
const override;
340 void updateRelativeJacobian(
bool _mandatory =
true)
const override;
343 void updateRelativeJacobianTimeDeriv()
const override;
347 const Eigen::Isometry3d&
getQ()
const;
352 mutable Eigen::Isometry3d
mQ;
356 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
362 #endif // DART_DYNAMICS_FREEJOINT_HPP_ void setAngularVelocity(const Eigen::Vector3d &newAngularVelocity, const Frame *relativeTo=Frame::World(), const Frame *inCoordinatesOf=Frame::World())
Set the angular portion of classical velocity of the child BodyNode relative to an arbitrary Frame...
Definition: FreeJoint.cpp:320
void setRelativeSpatialAcceleration(const Eigen::Vector6d &newSpatialAcceleration)
Set the spatial acceleration of the child BodyNode relative to the parent BodyNode.
Definition: FreeJoint.cpp:357
class Joint
Definition: Joint.hpp:57
The Frame class serves as the backbone of DART's kinematic tree structure.
Definition: Frame.hpp:57
void setRelativeSpatialVelocity(const Eigen::Vector6d &newSpatialVelocity)
Set the spatial velocity of the child BodyNode relative to the parent BodyNode.
Definition: FreeJoint.cpp:205
void setLinearAcceleration(const Eigen::Vector3d &newLinearAcceleration, const Frame *relativeTo=Frame::World(), const Frame *inCoordinatesOf=Frame::World())
Set the linear portion of classical acceleration of the child BodyNode relative to an arbitrary Frame...
Definition: FreeJoint.cpp:455
void setLinearVelocity(const Eigen::Vector3d &newLinearVelocity, const Frame *relativeTo=Frame::World(), const Frame *inCoordinatesOf=Frame::World())
Set the linear portion of classical velocity of the child BodyNode relative to an arbitrary Frame...
Definition: FreeJoint.cpp:283
void setAngularAcceleration(const Eigen::Vector3d &newAngularAcceleration, const Frame *relativeTo=Frame::World(), const Frame *inCoordinatesOf=Frame::World())
Set the angular portion of classical acceleration of the child BodyNode relative to an arbitrary Fram...
Definition: FreeJoint.cpp:496
Properties getFreeJointProperties() const
Get the Properties of this FreeJoint.
Definition: FreeJoint.cpp:58
Definition: Aspect.cpp:40
void setSpatialAcceleration(const Eigen::Vector6d &newSpatialAcceleration, const Frame *relativeTo, const Frame *inCoordinatesOf)
Set the spatial acceleration of the child BodyNode relative to an arbitrary Frame.
Definition: FreeJoint.cpp:386
static const std::string & getStaticType()
Get joint type for this class.
Definition: FreeJoint.cpp:576
static void setTransformOf(Joint *joint, const Eigen::Isometry3d &tf, const Frame *withRespectTo=Frame::World())
If the given joint is a FreeJoint, then set the transform of the given Joint's child BodyNode so that...
Definition: FreeJoint.cpp:90
const GenericJoint< math::SE3Space >::JacobianMatrix & getRelativeJacobianStatic() const
Fixed-size version of getRelativeJacobian()
Definition: GenericJoint.hpp:1570
Eigen::Isometry3d mQ
Transformation matrix dependent on generalized coordinates.
Definition: FreeJoint.hpp:352
void setRelativeTransform(const Eigen::Isometry3d &newTransform)
Set the transform of the child BodyNode relative to the parent BodyNode.
Definition: FreeJoint.cpp:186
BodyNode class represents a single node of the skeleton.
Definition: BodyNode.hpp:74
void setSpatialMotion(const Eigen::Isometry3d *newTransform, const Frame *withRespectTo, const Eigen::Vector6d *newSpatialVelocity, const Frame *velRelativeTo, const Frame *velInCoordinatesOf, const Eigen::Vector6d *newSpatialAcceleration, const Frame *accRelativeTo, const Frame *accInCoordinatesOf)
Set the transform, spatial velocity, and spatial acceleration of the child BodyNode relative to an ar...
Definition: FreeJoint.cpp:162
Definition: GenericJointAspect.hpp:45
static Eigen::Isometry3d convertToTransform(const Eigen::Vector6d &_positions)
Convert a FreeJoint-style 6D vector into a transform.
Definition: FreeJoint.cpp:73
class FreeJoint
Definition: FreeJoint.hpp:47
static void setTransform(Joint *joint, const Eigen::Isometry3d &tf, const Frame *withRespectTo=Frame::World())
If the given joint is a FreeJoint, then set the transform of the given Joint's child BodyNode so that...
Definition: FreeJoint.cpp:83
static Eigen::Vector6d convertToPositions(const Eigen::Isometry3d &_tf)
Convert a transform into a 6D vector that can be used to set the positions of a FreeJoint.
Definition: FreeJoint.cpp:64
void setSpatialVelocity(const Eigen::Vector6d &newSpatialVelocity, const Frame *relativeTo, const Frame *inCoordinatesOf)
Set the spatial velocity of the child BodyNode relative to an arbitrary Frame.
Definition: FreeJoint.cpp:230
class Skeleton
Definition: Skeleton.hpp:55
virtual ~FreeJoint()
Destructor.
Definition: FreeJoint.cpp:52
const Eigen::Isometry3d & getQ() const
Access mQ, which is an auto-updating variable.
Definition: FreeJoint.cpp:641
Definition: FreeJoint.hpp:54