33 #ifndef DART_DYNAMICS_METASKELETON_HPP_ 34 #define DART_DYNAMICS_METASKELETON_HPP_ 39 #include <Eigen/Dense> 41 #include "dart/common/LockableReference.hpp" 42 #include "dart/common/Signal.hpp" 43 #include "dart/common/Subject.hpp" 44 #include "dart/dynamics/Frame.hpp" 45 #include "dart/dynamics/InvalidIndex.hpp" 46 #include "dart/math/Geometry.hpp" 55 class DegreeOfFreedom;
65 std::shared_ptr<const MetaSkeleton> _skeleton,
66 const std::string& _oldName,
67 const std::string& _newName)>;
76 const std::string& cloneName)
const = 0;
94 virtual const std::string&
setName(
const std::string& _name) = 0;
97 virtual const std::string&
getName()
const = 0;
127 virtual const std::vector<BodyNode*>&
getBodyNodes() = 0;
130 virtual const std::vector<const BodyNode*>&
getBodyNodes()
const = 0;
135 virtual std::vector<BodyNode*>
getBodyNodes(
const std::string& name) = 0;
141 const std::string& name)
const = 0;
151 const BodyNode* _bn,
bool _warning =
true)
const = 0;
170 virtual const Joint*
getJoint(
const std::string& name)
const = 0;
173 virtual std::vector<Joint*>
getJoints() = 0;
176 virtual std::vector<const Joint*>
getJoints()
const = 0;
185 virtual std::vector<Joint*>
getJoints(
const std::string& name) = 0;
194 virtual std::vector<const Joint*>
getJoints(
195 const std::string& name)
const = 0;
205 const Joint* _joint,
bool _warning =
true)
const = 0;
217 virtual const std::vector<DegreeOfFreedom*>&
getDofs() = 0;
220 virtual std::vector<const DegreeOfFreedom*>
getDofs()
const = 0;
236 void setCommand(std::size_t _index,
double _command);
242 void setCommands(
const Eigen::VectorXd& _commands);
246 const std::vector<std::size_t>& _indices,
247 const Eigen::VectorXd& _commands);
253 Eigen::VectorXd
getCommands(
const std::vector<std::size_t>& _indices)
const;
265 void setPosition(std::size_t index,
double _position);
275 const std::vector<std::size_t>& _indices,
276 const Eigen::VectorXd& _positions);
282 Eigen::VectorXd
getPositions(
const std::vector<std::size_t>& _indices)
const;
295 const std::vector<std::size_t>& indices,
296 const Eigen::VectorXd& positions);
306 const std::vector<std::size_t>& indices)
const;
316 const std::vector<std::size_t>& indices,
317 const Eigen::VectorXd& positions);
327 const std::vector<std::size_t>& indices)
const;
336 void setVelocity(std::size_t _index,
double _velocity);
346 const std::vector<std::size_t>& _indices,
347 const Eigen::VectorXd& _velocities);
353 Eigen::VectorXd
getVelocities(
const std::vector<std::size_t>& _indices)
const;
367 const std::vector<std::size_t>& indices,
368 const Eigen::VectorXd& velocities);
379 const std::vector<std::size_t>& indices)
const;
390 const std::vector<std::size_t>& indices,
391 const Eigen::VectorXd& velocities);
402 const std::vector<std::size_t>& indices)
const;
421 const std::vector<std::size_t>& _indices,
422 const Eigen::VectorXd& _accelerations);
429 const std::vector<std::size_t>& _indices)
const;
443 const std::vector<std::size_t>& indices,
444 const Eigen::VectorXd& accelerations);
455 const std::vector<std::size_t>& indices)
const;
466 const std::vector<std::size_t>& indices,
467 const Eigen::VectorXd& accelerations);
478 const std::vector<std::size_t>& indices)
const;
487 void setForce(std::size_t _index,
double _force);
490 double getForce(std::size_t _index)
const;
493 void setForces(
const Eigen::VectorXd& _forces);
497 const std::vector<std::size_t>& _index,
const Eigen::VectorXd& _forces);
503 Eigen::VectorXd
getForces(
const std::vector<std::size_t>& _indices)
const;
516 const std::vector<std::size_t>& indices,
const Eigen::VectorXd& forces);
526 const std::vector<std::size_t>& indices)
const;
536 const std::vector<std::size_t>& indices,
const Eigen::VectorXd& forces);
546 const std::vector<std::size_t>& indices)
const;
586 const Frame* _inCoordinatesOf)
const;
592 const JacobianNode* _node,
const Eigen::Vector3d& _localOffset)
const = 0;
599 const Eigen::Vector3d& _localOffset,
600 const Frame* _inCoordinatesOf)
const = 0;
608 const Eigen::Vector3d& _localOffset,
610 const Frame* _inCoordinatesOf)
const;
620 const JacobianNode* _node,
const Eigen::Vector3d& _localOffset)
const = 0;
626 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
633 const Eigen::Vector3d& _localOffset,
634 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
642 const Frame* _inCoordinatesOf = Frame::World())
const;
650 const Eigen::Vector3d& _localOffset,
652 const Frame* _inCoordinatesOf = Frame::World())
const;
664 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
672 const Frame* _inCoordinatesOf = Frame::World())
const;
688 const JacobianNode* _node,
const Eigen::Vector3d& _localOffset)
const = 0;
695 const Eigen::Vector3d& _localOffset,
696 const Frame* _inCoordinatesOf)
const = 0;
704 const Frame* _inCoordinatesOf)
const;
712 const Eigen::Vector3d& _localOffset,
714 const Frame* _inCoordinatesOf)
const;
732 const Eigen::Vector3d& _localOffset,
733 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
739 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
746 const Eigen::Vector3d& _localOffset,
747 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
753 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
764 virtual double getMass()
const = 0;
832 virtual Eigen::Vector3d
getCOM(
833 const Frame* _withRespectTo = Frame::World())
const = 0;
838 const Frame* _relativeTo = Frame::World(),
839 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
844 const Frame* _relativeTo = Frame::World(),
845 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
850 const Frame* _relativeTo = Frame::World(),
851 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
856 const Frame* _relativeTo = Frame::World(),
857 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
862 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
867 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
876 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
885 const Frame* _inCoordinatesOf = Frame::World())
const = 0;
908 #endif // DART_DYNAMICS_METASKELETON_HPP_
The Subject class is a base class for any object that wants to report when it gets destroyed...
Definition: Subject.hpp:57
class Joint
Definition: Joint.hpp:57
The Frame class serves as the backbone of DART's kinematic tree structure.
Definition: Frame.hpp:57
Definition: Aspect.cpp:40
The JacobianNode class serves as a common interface for BodyNodes and EndEffectors to both be used as...
Definition: JacobianNode.hpp:54
BodyNode class represents a single node of the skeleton.
Definition: BodyNode.hpp:74
DegreeOfFreedom class is a proxy class for accessing single degrees of freedom (aka generalized coord...
Definition: DegreeOfFreedom.hpp:54
SlotRegister can be used as a public member for connecting slots to a private Signal member...
Definition: Signal.hpp:228