DART  6.6.2
Joint.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2018, 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_JOINT_HPP_
34 #define DART_DYNAMICS_JOINT_HPP_
35 
36 #include <string>
37 #include <vector>
38 #include <memory>
39 
41 #include "dart/common/Subject.hpp"
44 #include "dart/math/MathTypes.hpp"
47 
48 namespace dart {
49 namespace dynamics {
50 
51 class BodyNode;
52 class Skeleton;
53 class DegreeOfFreedom;
54 
56 class Joint : public virtual common::Subject,
57  public virtual common::VersionCounter,
58  public common::EmbedProperties<Joint, detail::JointProperties>
59 {
60 public:
61 
64 
66  static constexpr ActuatorType FORCE = detail::FORCE;
67  static constexpr ActuatorType PASSIVE = detail::PASSIVE;
68  static constexpr ActuatorType SERVO = detail::SERVO;
71  static constexpr ActuatorType LOCKED = detail::LOCKED;
72 
74 
76  {
79  const Properties& standardProperties = Properties(),
80  const CompositeProperties& aspectProperties = CompositeProperties());
81 
84  Properties&& standardProperties,
85  CompositeProperties&& aspectProperties);
86 
89  };
90 
93 
94  Joint(const Joint&) = delete;
95 
97  virtual ~Joint();
98 
100  void setProperties(const Properties& properties);
101 
104 
106  const Properties& getJointProperties() const;
107 
109  void copy(const Joint& _otherJoint);
110 
112  void copy(const Joint* _otherJoint);
113 
115  Joint& operator=(const Joint& _otherJoint);
116 
123  const std::string& setName(const std::string& _name,
124  bool _renameDofs = true);
125 
127  const std::string& getName() const;
128 
130  virtual const std::string& getType() const = 0;
131 
133  void setActuatorType(ActuatorType _actuatorType);
134 
137 
144  bool isKinematic() const;
145 
147  bool isDynamic() const;
148 
151 
153  const BodyNode* getChildBodyNode() const;
154 
157 
159  const BodyNode* getParentBodyNode() const;
160 
163 
165  std::shared_ptr<const Skeleton> getSkeleton() const;
166 
168  virtual void setTransformFromParentBodyNode(const Eigen::Isometry3d& _T);
169 
171  virtual void setTransformFromChildBodyNode(const Eigen::Isometry3d& _T);
172 
174  const Eigen::Isometry3d& getTransformFromParentBodyNode() const;
175 
177  const Eigen::Isometry3d& getTransformFromChildBodyNode() const;
178 
185  void setPositionLimitEnforced(bool _isPositionLimitEnforced);
186 
193  bool isPositionLimitEnforced() const;
194 
196  virtual std::size_t getIndexInSkeleton(std::size_t _index) const = 0;
197 
200  virtual std::size_t getIndexInTree(std::size_t _index) const = 0;
201 
203  std::size_t getJointIndexInSkeleton() const;
204 
206  std::size_t getJointIndexInTree() const;
207 
209  std::size_t getTreeIndex() const;
210 
213  virtual DegreeOfFreedom* getDof(std::size_t _index) = 0;
214 
217  virtual const DegreeOfFreedom* getDof(std::size_t _index) const = 0;
218 
220  virtual const std::string& setDofName(std::size_t _index,
221  const std::string& _name,
222  bool _preserveName=true) = 0;
223 
225  virtual void preserveDofName(std::size_t _index, bool _preserve) = 0;
226 
228  virtual bool isDofNamePreserved(std::size_t _index) const = 0;
229 
231  virtual const std::string& getDofName(std::size_t _index) const = 0;
232 
234  virtual std::size_t getNumDofs() const = 0;
235 
236  //----------------------------------------------------------------------------
238  //----------------------------------------------------------------------------
239 
241  virtual void setCommand(std::size_t _index, double _command) = 0;
242 
244  virtual double getCommand(std::size_t _index) const = 0;
245 
247  virtual void setCommands(const Eigen::VectorXd& _commands) = 0;
248 
250  virtual Eigen::VectorXd getCommands() const = 0;
251 
253  virtual void resetCommands() = 0;
254 
256 
257  //----------------------------------------------------------------------------
259  //----------------------------------------------------------------------------
260 
262  virtual void setPosition(std::size_t _index, double _position) = 0;
263 
265  virtual double getPosition(std::size_t _index) const = 0;
266 
268  virtual void setPositions(const Eigen::VectorXd& _positions) = 0;
269 
271  virtual Eigen::VectorXd getPositions() const = 0;
272 
274  virtual void setPositionLowerLimit(std::size_t _index, double _position) = 0;
275 
277  virtual double getPositionLowerLimit(std::size_t _index) const = 0;
278 
280  virtual void setPositionLowerLimits(const Eigen::VectorXd& lowerLimits) = 0;
281 
283  virtual Eigen::VectorXd getPositionLowerLimits() const = 0;
284 
286  virtual void setPositionUpperLimit(std::size_t _index, double _position) = 0;
287 
289  virtual double getPositionUpperLimit(std::size_t _index) const = 0;
290 
292  virtual void setPositionUpperLimits(const Eigen::VectorXd& upperLimits) = 0;
293 
295  virtual Eigen::VectorXd getPositionUpperLimits() const = 0;
296 
302  virtual bool isCyclic(std::size_t _index) const = 0;
303 
305  virtual bool hasPositionLimit(std::size_t _index) const = 0;
306 
308  virtual void resetPosition(std::size_t _index) = 0;
309 
312  virtual void resetPositions() = 0;
313 
315  virtual void setInitialPosition(std::size_t _index, double _initial) = 0;
316 
318  virtual double getInitialPosition(std::size_t _index) const = 0;
319 
322  virtual void setInitialPositions(const Eigen::VectorXd& _initial) = 0;
323 
326  virtual Eigen::VectorXd getInitialPositions() const = 0;
327 
329 
330  //----------------------------------------------------------------------------
332  //----------------------------------------------------------------------------
333 
335  virtual void setVelocity(std::size_t _index, double _velocity) = 0;
336 
338  virtual double getVelocity(std::size_t _index) const = 0;
339 
341  virtual void setVelocities(const Eigen::VectorXd& _velocities) = 0;
342 
344  virtual Eigen::VectorXd getVelocities() const = 0;
345 
347  virtual void setVelocityLowerLimit(std::size_t _index, double _velocity) = 0;
348 
350  virtual double getVelocityLowerLimit(std::size_t _index) const = 0;
351 
353  virtual void setVelocityLowerLimits(const Eigen::VectorXd& lowerLimits) = 0;
354 
356  virtual Eigen::VectorXd getVelocityLowerLimits() const = 0;
357 
359  virtual void setVelocityUpperLimit(std::size_t _index, double _velocity) = 0;
360 
362  virtual double getVelocityUpperLimit(std::size_t _index) const = 0;
363 
365  virtual void setVelocityUpperLimits(const Eigen::VectorXd& upperLimits) = 0;
366 
368  virtual Eigen::VectorXd getVelocityUpperLimits() const = 0;
369 
372  virtual void resetVelocity(std::size_t _index) = 0;
373 
376  virtual void resetVelocities() = 0;
377 
379  virtual void setInitialVelocity(std::size_t _index, double _initial) = 0;
380 
382  virtual double getInitialVelocity(std::size_t _index) const = 0;
383 
386  virtual void setInitialVelocities(const Eigen::VectorXd& _initial) = 0;
387 
390  virtual Eigen::VectorXd getInitialVelocities() const = 0;
391 
393 
394  //----------------------------------------------------------------------------
396  //----------------------------------------------------------------------------
397 
399  virtual void setAcceleration(std::size_t _index, double _acceleration) = 0;
400 
402  virtual double getAcceleration(std::size_t _index) const = 0;
403 
405  virtual void setAccelerations(const Eigen::VectorXd& _accelerations) = 0;
406 
408  virtual Eigen::VectorXd getAccelerations() const = 0;
409 
411  virtual void resetAccelerations() = 0;
412 
414  virtual void setAccelerationLowerLimit(std::size_t _index, double _acceleration) = 0;
415 
417  virtual double getAccelerationLowerLimit(std::size_t _index) const = 0;
418 
420  virtual void setAccelerationLowerLimits(const Eigen::VectorXd& lowerLimits) = 0;
421 
423  virtual Eigen::VectorXd getAccelerationLowerLimits() const = 0;
424 
426  virtual void setAccelerationUpperLimit(std::size_t _index, double _acceleration) = 0;
427 
429  virtual double getAccelerationUpperLimit(std::size_t _index) const = 0;
430 
432  virtual void setAccelerationUpperLimits(const Eigen::VectorXd& upperLimits) = 0;
433 
435  virtual Eigen::VectorXd getAccelerationUpperLimits() const = 0;
436 
438 
439  //----------------------------------------------------------------------------
441  //----------------------------------------------------------------------------
442 
444  virtual void setForce(std::size_t _index, double _force) = 0;
445 
447  virtual double getForce(std::size_t _index) const = 0;
448 
450  virtual void setForces(const Eigen::VectorXd& _forces) = 0;
451 
453  virtual Eigen::VectorXd getForces() const = 0;
454 
456  virtual void resetForces() = 0;
457 
459  virtual void setForceLowerLimit(std::size_t _index, double _force) = 0;
460 
462  virtual double getForceLowerLimit(std::size_t _index) const = 0;
463 
465  virtual void setForceLowerLimits(const Eigen::VectorXd& lowerLimits) = 0;
466 
468  virtual Eigen::VectorXd getForceLowerLimits() const = 0;
469 
471  virtual void setForceUpperLimit(std::size_t _index, double _force) = 0;
472 
474  virtual double getForceUpperLimit(std::size_t _index) const = 0;
475 
477  virtual void setForceUpperLimits(const Eigen::VectorXd& upperLimits) = 0;
478 
480  virtual Eigen::VectorXd getForceUpperLimits() const = 0;
481 
483 
484  //----------------------------------------------------------------------------
486  //----------------------------------------------------------------------------
487 
490  // TODO: Consider extending this to a more comprehensive sanity check
491  bool checkSanity(bool _printWarnings = true) const;
492 
493  //----------------------------------------------------------------------------
495  //----------------------------------------------------------------------------
496 
498  virtual void setVelocityChange(std::size_t _index, double _velocityChange) = 0;
499 
501  virtual double getVelocityChange(std::size_t _index) const = 0;
502 
504  virtual void resetVelocityChanges() = 0;
505 
507 
508  //----------------------------------------------------------------------------
510  //----------------------------------------------------------------------------
511 
513  virtual void setConstraintImpulse(std::size_t _index, double _impulse) = 0;
514 
516  virtual double getConstraintImpulse(std::size_t _index) const = 0;
517 
519  virtual void resetConstraintImpulses() = 0;
520 
522 
523  //----------------------------------------------------------------------------
525  //----------------------------------------------------------------------------
526 
528  virtual void integratePositions(double _dt) = 0;
529 
531  virtual void integrateVelocities(double _dt) = 0;
532 
535  virtual Eigen::VectorXd getPositionDifferences(
536  const Eigen::VectorXd& _q2, const Eigen::VectorXd& _q1) const = 0;
537 
539 
540  //----------------------------------------------------------------------------
542  //----------------------------------------------------------------------------
543 
547  virtual void setSpringStiffness(std::size_t _index, double _k) = 0;
548 
551  virtual double getSpringStiffness(std::size_t _index) const = 0;
552 
556  virtual void setRestPosition(std::size_t _index, double _q0) = 0;
557 
561  virtual double getRestPosition(std::size_t _index) const = 0;
562 
566  virtual void setDampingCoefficient(std::size_t _index, double _coeff) = 0;
567 
570  virtual double getDampingCoefficient(std::size_t _index) const = 0;
571 
575  virtual void setCoulombFriction(std::size_t _index, double _friction) = 0;
576 
579  virtual double getCoulombFriction(std::size_t _index) const = 0;
580 
582 
583  //----------------------------------------------------------------------------
584 
586  DART_DEPRECATED(6.1)
587  double getPotentialEnergy() const;
588 
590  virtual double computePotentialEnergy() const = 0;
591 
592  //----------------------------------------------------------------------------
593 
595  DART_DEPRECATED(6.0)
596  const Eigen::Isometry3d& getLocalTransform() const;
597 
599  DART_DEPRECATED(6.0)
600  const Eigen::Vector6d& getLocalSpatialVelocity() const;
601 
603  DART_DEPRECATED(6.0)
605 
607  DART_DEPRECATED(6.0)
609 
611  DART_DEPRECATED(6.0)
612  const math::Jacobian getLocalJacobian() const;
613 
615  DART_DEPRECATED(6.0)
616  math::Jacobian getLocalJacobian(const Eigen::VectorXd& positions) const;
617 
619  DART_DEPRECATED(6.0)
620  const math::Jacobian getLocalJacobianTimeDeriv() const;
621 
624  const Eigen::Isometry3d& getRelativeTransform() const;
625 
628  const Eigen::Vector6d& getRelativeSpatialVelocity() const;
629 
633 
636 
639  virtual const math::Jacobian getRelativeJacobian() const = 0;
640 
644  const Eigen::VectorXd& positions) const = 0;
645 
648  virtual const math::Jacobian getRelativeJacobianTimeDeriv() const = 0;
649 
651  virtual Eigen::Vector6d getBodyConstraintWrench() const = 0;
652  // TODO: Need more informative name.
653 
667 // Eigen::VectorXd getSpringForces(double _timeStep) const;
668 
679 // Eigen::VectorXd getDampingForces() const;
680 
681 
682  //----------------------------------------------------------------------------
684  //----------------------------------------------------------------------------
685 
687  DART_DEPRECATED(6.2)
688  void notifyPositionUpdate();
689 
691  void notifyPositionUpdated();
692 
694  DART_DEPRECATED(6.2)
695  void notifyVelocityUpdate();
696 
698  void notifyVelocityUpdated();
699 
701  DART_DEPRECATED(6.2)
703 
706 
708 
709  //----------------------------------------------------------------------------
710  // Friendship
711  //----------------------------------------------------------------------------
712 
713  friend class BodyNode;
714  friend class SoftBodyNode;
715  friend class Skeleton;
716 
717 protected:
718 
720  Joint();
721 
724  virtual Joint* clone() const = 0;
725 
727  virtual void registerDofs() = 0;
728 
737  DegreeOfFreedom* createDofPointer(std::size_t _indexInJoint);
738 
741  virtual void updateDegreeOfFreedomNames() = 0;
742 
743  //----------------------------------------------------------------------------
745  //----------------------------------------------------------------------------
746 
748  DART_DEPRECATED(6.0)
749  void updateLocalTransform() const;
750 
752  DART_DEPRECATED(6.0)
753  void updateLocalSpatialVelocity() const;
754 
756  DART_DEPRECATED(6.0)
757  void updateLocalSpatialAcceleration() const;
758 
760  DART_DEPRECATED(6.0)
761  void updateLocalPrimaryAcceleration() const;
762 
764  DART_DEPRECATED(6.0)
765  void updateLocalJacobian(bool mandatory = true) const;
766 
768  DART_DEPRECATED(6.0)
769  void updateLocalJacobianTimeDeriv() const;
770 
773  virtual void updateRelativeTransform() const = 0;
774 
777  virtual void updateRelativeSpatialVelocity() const = 0;
778 
781  virtual void updateRelativeSpatialAcceleration() const = 0;
782 
784  virtual void updateRelativePrimaryAcceleration() const = 0;
785 
793  virtual void updateRelativeJacobian(bool mandatory = true) const = 0;
794 
800  virtual void updateRelativeJacobianTimeDeriv() const = 0;
801 
803  void updateArticulatedInertia() const;
804 
806  virtual void addVelocityTo(Eigen::Vector6d& _vel) = 0;
807 
810  Eigen::Vector6d& _partialAcceleration,
811  const Eigen::Vector6d& _childVelocity) = 0;
812  // TODO(JS): Rename with more informative name
813 
815  virtual void addAccelerationTo(Eigen::Vector6d& _acc) = 0;
816 
818  virtual void addVelocityChangeTo(Eigen::Vector6d& _velocityChange) = 0;
819 
821  virtual void addChildArtInertiaTo(
822  Eigen::Matrix6d& _parentArtInertia,
823  const Eigen::Matrix6d& _childArtInertia) = 0;
824 
827  Eigen::Matrix6d& _parentArtInertiaImplicit,
828  const Eigen::Matrix6d& _childArtInertiaImplicit) = 0;
829  // TODO(JS): rename to updateAInertiaChildAInertia()
830 
832  virtual void updateInvProjArtInertia(const Eigen::Matrix6d& _artInertia) = 0;
833 
836  const Eigen::Matrix6d& _artInertia,
837  double _timeStep) = 0;
838  // TODO(JS): rename to updateAInertiaPsi()
839 
841  virtual void addChildBiasForceTo(
842  Eigen::Vector6d& _parentBiasForce,
843  const Eigen::Matrix6d& _childArtInertia,
844  const Eigen::Vector6d& _childBiasForce,
845  const Eigen::Vector6d& _childPartialAcc) = 0;
846 
848  virtual void addChildBiasImpulseTo(
849  Eigen::Vector6d& _parentBiasImpulse,
850  const Eigen::Matrix6d& _childArtInertia,
851  const Eigen::Vector6d& _childBiasImpulse) = 0;
852 
854  virtual void updateTotalForce(const Eigen::Vector6d& _bodyForce,
855  double _timeStep) = 0;
856  // TODO: rename
857 
859  virtual void updateTotalImpulse(const Eigen::Vector6d& _bodyImpulse) = 0;
860  // TODO: rename
861 
863  virtual void resetTotalImpulses() = 0;
864 
866  virtual void updateAcceleration(const Eigen::Matrix6d& _artInertia,
867  const Eigen::Vector6d& _spatialAcc) = 0;
868 
872  virtual void updateVelocityChange(
873  const Eigen::Matrix6d& _artInertia,
874  const Eigen::Vector6d& _velocityChange) = 0;
875 
880  virtual void updateForceID(const Eigen::Vector6d& _bodyForce,
881  double _timeStep,
882  bool _withDampingForces,
883  bool _withSpringForces) = 0;
884 
889  virtual void updateForceFD(const Eigen::Vector6d& _bodyForce,
890  double _timeStep,
891  bool _withDampingForcese,
892  bool _withSpringForces) = 0;
893 
895  virtual void updateImpulseID(const Eigen::Vector6d& _bodyImpulse) = 0;
896 
898  virtual void updateImpulseFD(const Eigen::Vector6d& _bodyImpulse) = 0;
899 
901  virtual void updateConstrainedTerms(double _timeStep) = 0;
902 
904 
905  //----------------------------------------------------------------------------
907  //----------------------------------------------------------------------------
908 
911  Eigen::Vector6d& _parentBiasForce,
912  const Eigen::Matrix6d& _childArtInertia,
913  const Eigen::Vector6d& _childBiasForce) = 0;
914 
917  Eigen::Vector6d& _parentBiasForce,
918  const Eigen::Matrix6d& _childArtInertia,
919  const Eigen::Vector6d& _childBiasForce) = 0;
920 
923  const Eigen::Vector6d& _bodyForce) = 0;
924 
926  virtual void getInvMassMatrixSegment(Eigen::MatrixXd& _invMassMat,
927  const std::size_t _col,
928  const Eigen::Matrix6d& _artInertia,
929  const Eigen::Vector6d& _spatialAcc) = 0;
930 
932  virtual void getInvAugMassMatrixSegment(Eigen::MatrixXd& _invMassMat,
933  const std::size_t _col,
934  const Eigen::Matrix6d& _artInertia,
935  const Eigen::Vector6d& _spatialAcc) = 0;
936 
938  virtual void addInvMassMatrixSegmentTo(Eigen::Vector6d& _acc) = 0;
939 
941  virtual Eigen::VectorXd getSpatialToGeneralized(
942  const Eigen::Vector6d& _spatial) = 0;
943 
945 
946 protected:
947 
950 
955  mutable Eigen::Isometry3d mT;
956 
962 
968 
973 
976  mutable bool mNeedTransformUpdate;
977  // TODO(JS): Rename this to mIsTransformDirty in DART 7
978 
982  // TODO(JS): Rename this to mIsSpatialVelocityDirty in DART 7
983 
987  // TODO(JS): Rename this to mIsSpatialAccelerationDirty in DART 7
988 
992  // TODO(JS): Rename this to mIsPrimaryAccelerationDirty in DART 7
993 
997 
1001 
1002 public:
1003 
1004  // To get byte-aligned Eigen vectors
1005  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
1006 };
1007 
1008 } // namespace dynamics
1009 } // namespace dart
1010 
1011 #endif // DART_DYNAMICS_JOINT_HPP_
#define DART_DEPRECATED(version)
Definition: Deprecated.hpp:51
BodyPropPtr properties
Definition: SdfParser.cpp:80
detail::CompositeProperties Properties
Definition: Composite.hpp:56
Inherit this class to embed Properties into your Composite object.
Definition: EmbeddedAspect.hpp:210
typename Aspect::Properties AspectProperties
Definition: EmbeddedAspect.hpp:215
This is the implementation of a standard embedded-properties Aspect.
Definition: EmbeddedAspect.hpp:169
The Subject class is a base class for any object that wants to report when it gets destroyed.
Definition: Subject.hpp:58
VersionCounter is an interface for objects that count their versions.
Definition: VersionCounter.hpp:43
Definition: CompositeData.hpp:104
BodyNode class represents a single node of the skeleton.
Definition: BodyNode.hpp:78
DegreeOfFreedom class is a proxy class for accessing single degrees of freedom (aka generalized coord...
Definition: DegreeOfFreedom.hpp:53
class Joint
Definition: Joint.hpp:59
virtual void updateInvProjArtInertia(const Eigen::Matrix6d &_artInertia)=0
Update inverse of projected articulated body inertia.
bool mNeedSpatialAccelerationUpdate
True iff this joint's position, velocity, or acceleration has changed since the last call to getRelat...
Definition: Joint.hpp:986
virtual double getVelocityLowerLimit(std::size_t _index) const =0
Get lower limit for velocity.
virtual void updateForceID(const Eigen::Vector6d &_bodyForce, double _timeStep, bool _withDampingForces, bool _withSpringForces)=0
Update joint force for inverse dynamics.
virtual void updateTotalForceForInvMassMatrix(const Eigen::Vector6d &_bodyForce)=0
virtual double getDampingCoefficient(std::size_t _index) const =0
Get coefficient of joint damping (viscous friction) force.
virtual double getInitialPosition(std::size_t _index) const =0
Get the position that resetPosition() will give to this coordinate.
virtual void setTransformFromChildBodyNode(const Eigen::Isometry3d &_T)
Set transformation from child body node to this joint.
Definition: Joint.cpp:448
virtual void updateImpulseFD(const Eigen::Vector6d &_bodyImpulse)=0
Update joint impulses for forward dynamics.
virtual Eigen::VectorXd getForces() const =0
Get the forces of all generalized coordinates in this Joint.
virtual Eigen::VectorXd getSpatialToGeneralized(const Eigen::Vector6d &_spatial)=0
virtual void updateTotalImpulse(const Eigen::Vector6d &_bodyImpulse)=0
Update joint total impulse.
virtual double getVelocityUpperLimit(std::size_t _index) const =0
Get upper limit for velocity.
void setActuatorType(ActuatorType _actuatorType)
Set actuator type.
Definition: Joint.cpp:186
virtual void updateForceFD(const Eigen::Vector6d &_bodyForce, double _timeStep, bool _withDampingForcese, bool _withSpringForces)=0
Update joint force for forward dynamics.
Eigen::Vector6d mPrimaryAcceleration
J * q_dd.
Definition: Joint.hpp:972
virtual double getAccelerationUpperLimit(std::size_t _index) const =0
Get upper limit for acceleration.
virtual void addChildBiasForceForInvMassMatrix(Eigen::Vector6d &_parentBiasForce, const Eigen::Matrix6d &_childArtInertia, const Eigen::Vector6d &_childBiasForce)=0
Add child's bias force to parent's one.
virtual void setPositions(const Eigen::VectorXd &_positions)=0
Set the positions of all generalized coordinates in this Joint.
virtual void resetPosition(std::size_t _index)=0
Set the position of this generalized coordinate to its initial position.
virtual void setForceUpperLimit(std::size_t _index, double _force)=0
Set upper limit for force.
virtual void resetConstraintImpulses()=0
Set zero all the constraint impulses.
virtual std::size_t getNumDofs() const =0
Get number of generalized coordinates.
virtual void setCommand(std::size_t _index, double _command)=0
Set a single command.
const Eigen::Vector6d & getRelativePrimaryAcceleration() const
Get J * \ddot{q} of this joint.
Definition: Joint.cpp:342
detail::ActuatorType ActuatorType
Definition: Joint.hpp:65
virtual void resetAccelerations()=0
Set the accelerations of all generalized coordinates in this Joint to zero.
virtual double getForceUpperLimit(std::size_t _index) const =0
Get upper limit for force.
virtual void setInitialVelocity(std::size_t _index, double _initial)=0
Change the velocity that resetVelocity() will give to this coordinate.
virtual void updateInvProjArtInertiaImplicit(const Eigen::Matrix6d &_artInertia, double _timeStep)=0
Forward dynamics routine.
virtual void updateRelativeJacobianTimeDeriv() const =0
Update time derivative of spatial Jacobian of the child BodyNode relative to the parent BodyNode expr...
virtual void updateRelativeJacobian(bool mandatory=true) const =0
Update spatial Jacobian of the child BodyNode relative to the parent BodyNode expressed in the child ...
const Eigen::Vector6d & getLocalSpatialVelocity() const
Deprecated. Use getLocalSpatialVelocity() instead.
Definition: Joint.cpp:270
bool mNeedPrimaryAccelerationUpdate
True iff this joint's position, velocity, or acceleration has changed since the last call to getRelat...
Definition: Joint.hpp:991
virtual Eigen::VectorXd getPositionUpperLimits() const =0
Get the position upper limits of all the generalized coordinates.
virtual double getConstraintImpulse(std::size_t _index) const =0
Get a single constraint impulse.
virtual void updateDegreeOfFreedomNames()=0
Update the names of the joint's degrees of freedom.
static constexpr ActuatorType PASSIVE
Definition: Joint.hpp:67
virtual void setVelocity(std::size_t _index, double _velocity)=0
Set the velocity of a single generalized coordinate.
virtual double computePotentialEnergy() const =0
Compute and return the potential energy.
virtual void setForces(const Eigen::VectorXd &_forces)=0
Set the forces of all generalized coordinates in this Joint.
virtual void getInvAugMassMatrixSegment(Eigen::MatrixXd &_invMassMat, const std::size_t _col, const Eigen::Matrix6d &_artInertia, const Eigen::Vector6d &_spatialAcc)=0
std::size_t getJointIndexInSkeleton() const
Get the index of this Joint within its Skeleton.
Definition: Joint.cpp:366
virtual double getForceLowerLimit(std::size_t _index) const =0
Get lower limit for force.
virtual void setInitialVelocities(const Eigen::VectorXd &_initial)=0
Change the velocities that resetVelocities() will give to this Joint's coordinates.
virtual void resetVelocityChanges()=0
Set zero all the velocity change.
virtual void setAccelerationLowerLimit(std::size_t _index, double _acceleration)=0
Set lower limit for acceleration.
const std::string & getName() const
Get joint name.
Definition: Joint.cpp:180
const Eigen::Vector6d & getLocalSpatialAcceleration() const
Deprecated. Use getLocalSpatialAcceleration() instead.
Definition: Joint.cpp:276
bool mNeedSpatialVelocityUpdate
True iff this joint's position or velocity has changed since the last call to getRelativeSpatialVeloc...
Definition: Joint.hpp:981
bool checkSanity(bool _printWarnings=true) const
Returns false if the initial position or initial velocity are outside of limits.
Definition: Joint.cpp:384
const Eigen::Isometry3d & getLocalTransform() const
Deprecated. Use getRelativeTransform() instead.
Definition: Joint.cpp:264
virtual void setVelocityUpperLimits(const Eigen::VectorXd &upperLimits)=0
Set the velocity upper limits of all the generalized coordinates.
static constexpr ActuatorType SERVO
Definition: Joint.hpp:68
virtual DegreeOfFreedom * getDof(std::size_t _index)=0
Get an object to access the _index-th degree of freedom (generalized coordinate) of this Joint.
virtual void integratePositions(double _dt)=0
Integrate positions using Euler method.
virtual void setForceUpperLimits(const Eigen::VectorXd &upperLimits)=0
Set the force upper limits of all the generalized coordinates.
virtual double getVelocityChange(std::size_t _index) const =0
Get a single velocity change.
virtual Eigen::VectorXd getPositionDifferences(const Eigen::VectorXd &_q2, const Eigen::VectorXd &_q1) const =0
Return the difference of two generalized coordinates which are measured in the configuration space of...
BodyNode * getParentBodyNode()
Get the parent BodyNode of this Joint.
Definition: Joint.cpp:237
virtual double getSpringStiffness(std::size_t _index) const =0
Get stiffness of joint spring force.
static constexpr ActuatorType ACCELERATION
Definition: Joint.hpp:69
Eigen::Vector6d mSpatialAcceleration
Relative spatial acceleration from parent BodyNode to child BodyNode where the acceleration is expres...
Definition: Joint.hpp:967
virtual void updateVelocityChange(const Eigen::Matrix6d &_artInertia, const Eigen::Vector6d &_velocityChange)=0
Update joint velocity change.
virtual void addChildBiasImpulseTo(Eigen::Vector6d &_parentBiasImpulse, const Eigen::Matrix6d &_childArtInertia, const Eigen::Vector6d &_childBiasImpulse)=0
Add child's bias impulse to parent's one.
virtual void resetForces()=0
Set the forces of all generalized coordinates in this Joint to zero.
virtual void setTransformFromParentBodyNode(const Eigen::Isometry3d &_T)
Set transformation from parent body node to this joint.
Definition: Joint.cpp:440
virtual double getVelocity(std::size_t _index) const =0
Get the velocity of a single generalized coordinate.
virtual double getAcceleration(std::size_t _index) const =0
Get the acceleration of a single generalized coordinate.
virtual void updateRelativeSpatialVelocity() const =0
Update spatial velocity of the child BodyNode relative to the parent BodyNode expressed in the child ...
void updateArticulatedInertia() const
Tells the Skeleton to update the articulated inertia if it needs updating.
Definition: Joint.cpp:528
bool mNeedTransformUpdate
True iff this joint's position has changed since the last call to getRelativeTransform()
Definition: Joint.hpp:976
detail::JointProperties Properties
Definition: Joint.hpp:63
DegreeOfFreedom * createDofPointer(std::size_t _indexInJoint)
Create a DegreeOfFreedom pointer.
Definition: Joint.cpp:486
void updateLocalSpatialVelocity() const
Deprecated. Use updateRelativeSpatialVelocity() instead.
Definition: Joint.cpp:498
void notifyAccelerationUpdate()
Notify that an acceleration has updated.
Definition: Joint.cpp:617
static constexpr ActuatorType LOCKED
Definition: Joint.hpp:71
virtual double getCommand(std::size_t _index) const =0
Get a single command.
void notifyVelocityUpdated()
Notify that a velocity has updated.
Definition: Joint.cpp:602
void copy(const Joint &_otherJoint)
Copy the properties of another Joint.
Definition: Joint.cpp:125
Eigen::Vector6d mSpatialVelocity
Relative spatial velocity from parent BodyNode to child BodyNode where the velocity is expressed in c...
Definition: Joint.hpp:961
void notifyPositionUpdate()
Notify that a position has updated.
Definition: Joint.cpp:562
virtual void setPositionLowerLimit(std::size_t _index, double _position)=0
Set lower limit for position.
virtual void addAccelerationTo(Eigen::Vector6d &_acc)=0
Add joint acceleration to _acc.
virtual void preserveDofName(std::size_t _index, bool _preserve)=0
Alternative to DegreeOfFreedom::preserveName()
virtual Eigen::VectorXd getVelocityUpperLimits() const =0
Get the velocity upper limits of all the generalized coordinates.
virtual void setInitialPosition(std::size_t _index, double _initial)=0
Change the position that resetPositions() will give to this coordinate.
virtual Eigen::VectorXd getInitialVelocities() const =0
Get the velocities that resetVelocities() will give to this Joint's coordinates.
const std::string & setName(const std::string &_name, bool _renameDofs=true)
Set joint name and return the name.
Definition: Joint.cpp:150
virtual Eigen::VectorXd getVelocityLowerLimits() const =0
Get the velocity lower limits of all the generalized coordinates.
virtual Eigen::VectorXd getInitialPositions() const =0
Get the positions that resetPositions() will give to this Joint's coordinates.
virtual void resetPositions()=0
Set the positions of all generalized coordinates in this Joint to their initial positions.
BodyNode * mChildBodyNode
Child BodyNode pointer that this Joint belongs to.
Definition: Joint.hpp:949
bool isKinematic() const
Return true if this joint is kinematic joint.
Definition: Joint.cpp:198
void setAspectProperties(const AspectProperties &properties)
Set the AspectProperties of this Joint.
Definition: Joint.cpp:109
const Properties & getJointProperties() const
Get the Properties of this Joint.
Definition: Joint.cpp:119
virtual std::size_t getIndexInTree(std::size_t _index) const =0
Get a unique index in the kinematic tree of a generalized coordinate in this Joint.
virtual Joint * clone() const =0
Create a clone of this Joint.
virtual void setConstraintImpulse(std::size_t _index, double _impulse)=0
Set a single constraint impulse.
virtual Eigen::VectorXd getCommands() const =0
Get all commands for this Joint.
virtual void setForce(std::size_t _index, double _force)=0
Set the force of a single generalized coordinate.
ActuatorType getActuatorType() const
Get actuator type.
Definition: Joint.cpp:192
virtual double getRestPosition(std::size_t _index) const =0
Get rest position of spring force.
virtual bool hasPositionLimit(std::size_t _index) const =0
Get whether the position of a generalized coordinate has limits.
const Eigen::Isometry3d & getRelativeTransform() const
Get transform of the child BodyNode relative to the parent BodyNode expressed in the child BodyNode f...
Definition: Joint.cpp:306
virtual void setAccelerations(const Eigen::VectorXd &_accelerations)=0
Set the accelerations of all generalized coordinates in this Joint.
virtual void addInvMassMatrixSegmentTo(Eigen::Vector6d &_acc)=0
virtual void setVelocityLowerLimits(const Eigen::VectorXd &lowerLimits)=0
Set the velocity lower limits of all the generalized coordinates.
const Eigen::Vector6d & getRelativeSpatialAcceleration() const
Get spatial acceleration of the child BodyNode relative to the parent BodyNode expressed in the child...
Definition: Joint.cpp:330
void notifyVelocityUpdate()
Notify that a velocity has updated.
Definition: Joint.cpp:596
virtual void updateRelativePrimaryAcceleration() const =0
Update J * \ddot{q} of this joint.
virtual void setPositionUpperLimit(std::size_t _index, double _position)=0
Set upper limit for position.
virtual void resetVelocities()=0
Set the velocities of all generalized coordinates in this Joint to their initial velocities.
virtual double getAccelerationLowerLimit(std::size_t _index) const =0
Get lower limit for acceleration.
virtual void setForceLowerLimits(const Eigen::VectorXd &lowerLimits)=0
Set the force upper limits of all the generalized coordinates.
virtual Eigen::VectorXd getAccelerations() const =0
Get the accelerations of all generalized coordinates in this Joint.
virtual void setDampingCoefficient(std::size_t _index, double _coeff)=0
Set coefficient of joint damping (viscous friction) force.
virtual void setVelocityChange(std::size_t _index, double _velocityChange)=0
Set a single velocity change.
virtual void resetVelocity(std::size_t _index)=0
Set the velocity of a generalized coordinate in this Joint to its initial velocity.
virtual void setSpringStiffness(std::size_t _index, double _k)=0
Set stiffness of joint spring force.
SkeletonPtr getSkeleton()
Get the Skeleton that this Joint belongs to.
Definition: Joint.cpp:252
static constexpr ActuatorType FORCE
Definition: Joint.hpp:66
virtual void setAcceleration(std::size_t _index, double _acceleration)=0
Set the acceleration of a single generalized coordinate.
void updateLocalSpatialAcceleration() const
Deprecated. Use updateRelativeSpatialAcceleration() instead.
Definition: Joint.cpp:504
virtual void registerDofs()=0
Called by the Skeleton class.
virtual Eigen::VectorXd getForceLowerLimits() const =0
Get the force upper limits of all the generalized coordinates.
virtual void setRestPosition(std::size_t _index, double _q0)=0
Set rest position of spring force.
virtual void getInvMassMatrixSegment(Eigen::MatrixXd &_invMassMat, const std::size_t _col, const Eigen::Matrix6d &_artInertia, const Eigen::Vector6d &_spatialAcc)=0
Joint(const Joint &)=delete
virtual const DegreeOfFreedom * getDof(std::size_t _index) const =0
Get an object to access the _index-th degree of freedom (generalized coordinate) of this Joint.
void notifyAccelerationUpdated()
Notify that an acceleration has updated.
Definition: Joint.cpp:623
Joint & operator=(const Joint &_otherJoint)
Same as copy(const Joint&)
Definition: Joint.cpp:143
virtual void setPositionUpperLimits(const Eigen::VectorXd &upperLimits)=0
Set the position upper limits of all the generalized coordinates.
virtual void addChildArtInertiaImplicitTo(Eigen::Matrix6d &_parentArtInertiaImplicit, const Eigen::Matrix6d &_childArtInertiaImplicit)=0
Add child's articulated inertia to parent's one. Forward dynamics routine.
virtual void setPositionLowerLimits(const Eigen::VectorXd &lowerLimits)=0
Set the position lower limits of all the generalized coordinates.
virtual void setAccelerationLowerLimits(const Eigen::VectorXd &lowerLimits)=0
Set the acceleration upper limits of all the generalized coordinates.
bool isPositionLimitEnforced() const
Get whether enforcing joint position limit.
Definition: Joint.cpp:360
static const ActuatorType DefaultActuatorType
Default actuator type.
Definition: Joint.hpp:92
virtual void setForceLowerLimit(std::size_t _index, double _force)=0
Set lower limit for force.
virtual double getForce(std::size_t _index) const =0
Get the force of a single generalized coordinate.
virtual void setVelocities(const Eigen::VectorXd &_velocities)=0
Set the velocities of all generalized coordinates in this Joint.
std::size_t getTreeIndex() const
Get the index of the tree that this Joint belongs to.
Definition: Joint.cpp:378
void updateLocalPrimaryAcceleration() const
Deprecated. Use updateRelativePrimaryAcceleration() instead.
Definition: Joint.cpp:510
virtual Eigen::VectorXd getForceUpperLimits() const =0
Get the force upper limits of all the generalized coordinates.
virtual Eigen::VectorXd getAccelerationLowerLimits() const =0
Get the acceleration upper limits of all the generalized coordinates.
virtual void updateConstrainedTerms(double _timeStep)=0
Update constrained terms for forward dynamics.
void updateLocalTransform() const
Deprecated. Use updateRelativeTransform() instead.
Definition: Joint.cpp:492
void notifyPositionUpdated()
Notify that a position has updated.
Definition: Joint.cpp:568
virtual double getInitialVelocity(std::size_t _index) const =0
Get the velocity that resetVelocity() will give to this coordinate.
virtual const std::string & getDofName(std::size_t _index) const =0
Alternative to DegreeOfFreedom::getName()
virtual void resetCommands()=0
Set all the commands for this Joint to zero.
virtual void addVelocityChangeTo(Eigen::Vector6d &_velocityChange)=0
Add joint velocity change to _velocityChange.
virtual const math::Jacobian getRelativeJacobianTimeDeriv() const =0
Get time derivative of spatial Jacobian of the child BodyNode relative to the parent BodyNode express...
const Eigen::Isometry3d & getTransformFromParentBodyNode() const
Get transformation from parent body node to this joint.
Definition: Joint.cpp:457
virtual void setPartialAccelerationTo(Eigen::Vector6d &_partialAcceleration, const Eigen::Vector6d &_childVelocity)=0
Set joint partial acceleration to _partialAcceleration.
virtual double getPositionLowerLimit(std::size_t _index) const =0
Get lower limit for position.
virtual void updateRelativeTransform() const =0
Update transform of the child BodyNode relative to the parent BodyNode expressed in the child BodyNod...
virtual double getPosition(std::size_t _index) const =0
Get the position of a single generalized coordinate.
virtual Eigen::VectorXd getPositions() const =0
Get the positions of all generalized coordinates in this Joint.
virtual void addChildBiasForceTo(Eigen::Vector6d &_parentBiasForce, const Eigen::Matrix6d &_childArtInertia, const Eigen::Vector6d &_childBiasForce, const Eigen::Vector6d &_childPartialAcc)=0
Add child's bias force to parent's one.
void setPositionLimitEnforced(bool _isPositionLimitEnforced)
Set to enforce joint position limit.
Definition: Joint.cpp:354
virtual double getCoulombFriction(std::size_t _index) const =0
Get joint Coulomb friction froce.
virtual void addChildArtInertiaTo(Eigen::Matrix6d &_parentArtInertia, const Eigen::Matrix6d &_childArtInertia)=0
Add child's articulated inertia to parent's one.
bool mIsRelativeJacobianTimeDerivDirty
True iff this joint's relative Jacobian time derivative has not been updated since the last position ...
Definition: Joint.hpp:1000
virtual void addChildBiasForceForInvAugMassMatrix(Eigen::Vector6d &_parentBiasForce, const Eigen::Matrix6d &_childArtInertia, const Eigen::Vector6d &_childBiasForce)=0
Add child's bias force to parent's one.
virtual const std::string & setDofName(std::size_t _index, const std::string &_name, bool _preserveName=true)=0
Alternative to DegreeOfFreedom::setName()
Eigen::Isometry3d mT
Relative transformation of the child BodyNode relative to the parent BodyNode expressed in the child ...
Definition: Joint.hpp:955
void updateLocalJacobianTimeDeriv() const
Deprecated. Use updateRelativeJacobianTimeDeriv() instead.
Definition: Joint.cpp:522
const Eigen::Vector6d & getRelativeSpatialVelocity() const
Get spatial velocity of the child BodyNode relative to the parent BodyNode expressed in the child Bod...
Definition: Joint.cpp:318
virtual void setCoulombFriction(std::size_t _index, double _friction)=0
Set joint Coulomb friction froce.
virtual void setCommands(const Eigen::VectorXd &_commands)=0
Set all commands for this Joint.
const math::Jacobian getLocalJacobianTimeDeriv() const
Deprecated. Use getRelativeJacobianTimeDeriv() instead.
Definition: Joint.cpp:300
virtual const math::Jacobian getRelativeJacobian() const =0
Get spatial Jacobian of the child BodyNode relative to the parent BodyNode expressed in the child Bod...
virtual void setVelocityUpperLimit(std::size_t _index, double _velocity)=0
Set upper limit for velocity.
double getPotentialEnergy() const
Get potential energy.
Definition: Joint.cpp:434
const Eigen::Isometry3d & getTransformFromChildBodyNode() const
Get transformation from child body node to this joint.
Definition: Joint.cpp:463
virtual void updateTotalForce(const Eigen::Vector6d &_bodyForce, double _timeStep)=0
Update joint total force.
virtual double getPositionUpperLimit(std::size_t _index) const =0
Get upper limit for position.
BodyNode * getChildBodyNode()
Get the child BodyNode of this Joint.
Definition: Joint.cpp:225
virtual void setInitialPositions(const Eigen::VectorXd &_initial)=0
Change the positions that resetPositions() will give to this Joint's coordinates.
virtual const std::string & getType() const =0
Gets a string representing the joint type.
bool mIsRelativeJacobianDirty
True iff this joint's relative Jacobian has not been updated since the last position change.
Definition: Joint.hpp:996
void updateLocalJacobian(bool mandatory=true) const
Deprecated. Use updateRelativeJacobian() instead.
Definition: Joint.cpp:516
virtual Eigen::VectorXd getAccelerationUpperLimits() const =0
Get the acceleration upper limits of all the generalized coordinates.
virtual Eigen::VectorXd getPositionLowerLimits() const =0
Get the position lower limits of all the generalized coordinates.
virtual void updateAcceleration(const Eigen::Matrix6d &_artInertia, const Eigen::Vector6d &_spatialAcc)=0
Update joint acceleration.
virtual void resetTotalImpulses()=0
Set total impulses to zero.
virtual void updateImpulseID(const Eigen::Vector6d &_bodyImpulse)=0
Update joint impulses for inverse dynamics.
virtual void setVelocityLowerLimit(std::size_t _index, double _velocity)=0
Set lower limit for velocity.
virtual void setPosition(std::size_t _index, double _position)=0
Set the position of a single generalized coordinate.
void setProperties(const Properties &properties)
Set the Properties of this Joint.
Definition: Joint.cpp:103
bool isDynamic() const
Return true if this joint is dynamic joint.
Definition: Joint.cpp:219
virtual bool isDofNamePreserved(std::size_t _index) const =0
Alternative to DegreeOfFreedom::isNamePreserved()
virtual void addVelocityTo(Eigen::Vector6d &_vel)=0
Add joint velocity to _vel.
virtual Eigen::VectorXd getVelocities() const =0
Get the velocities of all generalized coordinates in this Joint.
common::Composite::Properties CompositeProperties
Definition: Joint.hpp:62
virtual void integrateVelocities(double _dt)=0
Integrate velocities using Euler method.
static constexpr ActuatorType VELOCITY
Definition: Joint.hpp:70
const Eigen::Vector6d & getLocalPrimaryAcceleration() const
Deprecated. Use getLocalPrimaryAcceleration() instead.
Definition: Joint.cpp:282
std::size_t getJointIndexInTree() const
Get the index of this Joint within its tree.
Definition: Joint.cpp:372
virtual void updateRelativeSpatialAcceleration() const =0
Update spatial acceleration of the child BodyNode relative to the parent BodyNode expressed in the ch...
virtual ~Joint()
Destructor.
Definition: Joint.cpp:97
virtual void setAccelerationUpperLimits(const Eigen::VectorXd &upperLimits)=0
Set the acceleration upper limits of all the generalized coordinates.
const math::Jacobian getLocalJacobian() const
Deprecated. Use getRelativeJacobian() instead.
Definition: Joint.cpp:288
virtual std::size_t getIndexInSkeleton(std::size_t _index) const =0
Get a unique index in skeleton of a generalized coordinate in this Joint.
virtual bool isCyclic(std::size_t _index) const =0
Get whether a generalized coordinate is cyclic.
virtual Eigen::Vector6d getBodyConstraintWrench() const =0
Get constraint wrench expressed in body node frame.
virtual void setAccelerationUpperLimit(std::size_t _index, double _acceleration)=0
Set upper limit for acceleration.
class Skeleton
Definition: Skeleton.hpp:59
SoftBodyNode represent a soft body that has one deformable skin.
Definition: SoftBodyNode.hpp:46
#define DART_BAKE_SPECIALIZED_ASPECT_IRREGULAR(TypeName, AspectName)
Definition: Composite.hpp:164
Definition: MathTypes.hpp:47
Matrix< double, 6, 1 > Vector6d
Definition: MathTypes.hpp:49
Matrix< double, 6, 6 > Matrix6d
Definition: MathTypes.hpp:50
ActuatorType
Actuator type.
Definition: JointAspect.hpp:59
@ PASSIVE
Passive joint doesn't take any command input, and the output is joint acceleration.
Definition: JointAspect.hpp:72
@ FORCE
Command input is joint force, and the output is joint acceleration.
Definition: JointAspect.hpp:65
@ VELOCITY
Command input is joint velocity, and the output is joint force.
Definition: JointAspect.hpp:91
@ ACCELERATION
Command input is joint acceleration, and the output is joint force.
Definition: JointAspect.hpp:84
@ SERVO
Command input is desired velocity, and the output is joint acceleration.
Definition: JointAspect.hpp:78
@ LOCKED
Locked joint always set the velocity and acceleration to zero so that the joint dosen't move at all (...
Definition: JointAspect.hpp:98
std::shared_ptr< Skeleton > SkeletonPtr
Definition: SmartPointer.hpp:60
Eigen::Matrix< double, 6, Eigen::Dynamic > Jacobian
Definition: MathTypes.hpp:108
Definition: BulletCollisionDetector.cpp:63
Definition: SharedLibraryManager.hpp:43
CompositeProperties mCompositeProperties
Properties of all the Aspects attached to this Joint.
Definition: Joint.hpp:88
Definition: JointAspect.hpp:104