Aikido
MetaSkeletonStateSpace.hpp
Go to the documentation of this file.
1 #ifndef AIKIDO_STATESPACE_DART_METASKELETONSTATESPACE_HPP_
2 #define AIKIDO_STATESPACE_DART_METASKELETONSTATESPACE_HPP_
3 
4 #include <unordered_map>
5 
6 #include <dart/dynamics/dynamics.hpp>
7 
8 #include "aikido/common/pair.hpp"
12 
13 namespace aikido {
14 namespace statespace {
15 namespace dart {
16 
18 
27 {
28 public:
31  class Properties
32  {
33  public:
37  explicit Properties(const ::dart::dynamics::MetaSkeleton* metaskeleton);
38 
40  const std::string& getName() const;
41 
43  std::size_t getNumJoints() const;
44 
46  std::size_t getNumDofs() const;
47 
49  const std::vector<std::string>& getDofNames() const;
50 
52  std::size_t getDofIndex(std::size_t ijoint, std::size_t ijointdof) const;
53 
55  std::size_t getDofIndex(const std::string& dofName) const;
56 
58  const Eigen::VectorXd& getPositionLowerLimits() const;
59 
61  const Eigen::VectorXd& getPositionUpperLimits() const;
62 
64  const Eigen::VectorXd& getVelocityLowerLimits() const;
65 
67  const Eigen::VectorXd& getVelocityUpperLimits() const;
68 
71  bool operator==(const Properties& otherProperties) const;
72 
75  bool operator!=(const Properties& otherProperties) const;
76 
77  protected:
79  std::string mName;
80 
82  std::size_t mNumJoints;
83 
85  std::vector<std::string> mDofNames;
86 
88  std::unordered_map<
89  std::pair<std::size_t, std::size_t>,
90  std::size_t,
93 
95  Eigen::VectorXd mPositionLowerLimits;
96 
98  Eigen::VectorXd mPositionUpperLimits;
99 
101  Eigen::VectorXd mVelocityLowerLimits;
102 
104  Eigen::VectorXd mVelocityUpperLimits;
105  };
106 
109 
113  explicit MetaSkeletonStateSpace(
114  const ::dart::dynamics::MetaSkeleton* metaskeleton);
115 
119  const Properties& getProperties() const;
120 
125  bool isCompatible(const ::dart::dynamics::MetaSkeleton* metaskeleton) const;
126 
132  void checkCompatibility(
133  const ::dart::dynamics::MetaSkeleton* metaskeleton) const;
134 
140  void checkIfContained(const ::dart::dynamics::Skeleton* skeleton) const;
141 
148  template <class Space = JointStateSpace>
149  std::shared_ptr<Space> getJointSpace(
150  const ::dart::dynamics::MetaSkeleton* _metaskeleton,
151  const ::dart::dynamics::Joint* _joint) const;
152 
158  template <class Space = JointStateSpace>
159  std::shared_ptr<const Space> getJointSpace(std::size_t _index) const;
160 
167  const Eigen::VectorXd& _positions, State* _state) const;
168 
175  const State* _state, Eigen::VectorXd& _positions) const;
176 
181  void getState(
182  const ::dart::dynamics::MetaSkeleton* _metaskeleton, State* _state) const;
183 
188  void setState(
189  ::dart::dynamics::MetaSkeleton* _metaskeleton, const State* _state) const;
190 
196  const ::dart::dynamics::MetaSkeleton* _metaskeleton) const;
197 
200  ::dart::dynamics::MetaSkeletonPtr getControlledMetaSkeleton(
201  const ::dart::dynamics::SkeletonPtr& _skeleton) const;
202 
203 private:
205 };
206 
207 } // namespace dart
208 } // namespace statespace
209 } // namespace aikido
210 
212 
213 #endif // ifndef AIKIDO_STATESPACE_DART_METASKELETONSTATESPACE_HPP_
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::getDofIndex
std::size_t getDofIndex(std::size_t ijoint, std::size_t ijointdof) const
Return the MetaSkeleton DOF index.
aikido::statespace::dart::MetaSkeletonStateSpace::isCompatible
bool isCompatible(const ::dart::dynamics::MetaSkeleton *metaskeleton) const
Returns whether the MetaSkeleton can be used with this state space.
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::operator==
bool operator==(const Properties &otherProperties) const
Return whether two MetaSkeletonStateSpace::Properties are identical.
aikido::statespace::dart::MetaSkeletonStateSpace::mProperties
Properties mProperties
Definition: MetaSkeletonStateSpace.hpp:204
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::getVelocityLowerLimits
const Eigen::VectorXd & getVelocityLowerLimits() const
Return the vector of velocity lower limits.
aikido
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::operator!=
bool operator!=(const Properties &otherProperties) const
Return whether two MetaSkeletonStateSpace::Properties are different.
aikido::statespace::dart::MetaSkeletonStateSpace::checkIfContained
void checkIfContained(const ::dart::dynamics::Skeleton *skeleton) const
Checks whether this skeleton contains all dofs defined in this state space.
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::mVelocityLowerLimits
Eigen::VectorXd mVelocityLowerLimits
The metaskeleton's velocity lower limits.
Definition: MetaSkeletonStateSpace.hpp:101
aikido::statespace::CartesianProduct::ScopedState
statespace::ScopedState< StateHandle > ScopedState
Definition: CartesianProduct.hpp:28
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::mPositionUpperLimits
Eigen::VectorXd mPositionUpperLimits
The metaskeleton's position upper limits.
Definition: MetaSkeletonStateSpace.hpp:98
aikido::statespace::dart::MetaSkeletonStateSpace::getJointSpace
std::shared_ptr< Space > getJointSpace(const ::dart::dynamics::MetaSkeleton *_metaskeleton, const ::dart::dynamics::Joint *_joint) const
Gets the subspace corresponding to _joint in _metaskeleton.
Definition: MetaSkeletonStateSpace-impl.hpp:7
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::mNumJoints
std::size_t mNumJoints
Number of joints in the MetaSkeleton.
Definition: MetaSkeletonStateSpace.hpp:82
aikido::statespace::dart::MetaSkeletonStateSpace::convertPositionsToState
void convertPositionsToState(const Eigen::VectorXd &_positions, State *_state) const
Converts DART MetaSkeleton positions, e.g.
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::mIndexMap
std::unordered_map< std::pair< std::size_t, std::size_t >, std::size_t, aikido::common::PairHash > mIndexMap
Mapping from Joint index and Joint DOF index to MetaSkeleton DOF index.
Definition: MetaSkeletonStateSpace.hpp:92
aikido::statespace::dart::MetaSkeletonStateSpace::MetaSkeletonStateSpace
MetaSkeletonStateSpace(const ::dart::dynamics::MetaSkeleton *metaskeleton)
Constructs a state space for a DART MetaSkeleton.
CartesianProduct.hpp
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::getName
const std::string & getName() const
Return the name of the MetaSkeleton.
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::getNumDofs
std::size_t getNumDofs() const
Return the number of DOFs in the MetaSkeleton.
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::Properties
Properties(const ::dart::dynamics::MetaSkeleton *metaskeleton)
Constructs the MetaSkeleton properties for _metaskeleton.
aikido::statespace::dart::MetaSkeletonStateSpace
StateSpace of a DART MetaSkeleton.
Definition: MetaSkeletonStateSpace.hpp:26
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::getNumJoints
std::size_t getNumJoints() const
Return the number of joints in the MetaSkeleton.
JointStateSpace.hpp
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::mPositionLowerLimits
Eigen::VectorXd mPositionLowerLimits
The metaskeleton's position lower limits.
Definition: MetaSkeletonStateSpace.hpp:95
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::getPositionLowerLimits
const Eigen::VectorXd & getPositionLowerLimits() const
Return the vector of position lower limits.
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::mName
std::string mName
Name of the MetaSkeleton.
Definition: MetaSkeletonStateSpace.hpp:79
aikido::statespace::dart::MetaSkeletonStateSpace::checkCompatibility
void checkCompatibility(const ::dart::dynamics::MetaSkeleton *metaskeleton) const
Throws an error if the MetaSkeleton cannot be used with this state space.
pointers.hpp
MetaSkeletonStateSpace-impl.hpp
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::mVelocityUpperLimits
Eigen::VectorXd mVelocityUpperLimits
The metaskeleton's velocity upper limits.
Definition: MetaSkeletonStateSpace.hpp:104
aikido::statespace::dart::MetaSkeletonStateSpace::convertStateToPositions
void convertStateToPositions(const State *_state, Eigen::VectorXd &_positions) const
Converts a State in this state space to DART MetaSkeleton positions, e.g.
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::getVelocityUpperLimits
const Eigen::VectorXd & getVelocityUpperLimits() const
Return the vector of velocity upper limits.
aikido::statespace::ScopedState< StateHandle >
aikido::statespace::dart::MetaSkeletonStateSpace::setState
void setState(::dart::dynamics::MetaSkeleton *_metaskeleton, const State *_state) const
Sets the positions of the _metaskeleton to _state.
aikido::statespace::CartesianProduct::State
A tuple of states where the i-th state is from the i-th subspace.
Definition: CartesianProduct.hpp:162
aikido::common::PairHash
Implements a hash function for pairs of std::hash-able types.
Definition: pair.hpp:8
aikido::statespace::dart::MetaSkeletonStateSpace::getScopedStateFromMetaSkeleton
ScopedState getScopedStateFromMetaSkeleton(const ::dart::dynamics::MetaSkeleton *_metaskeleton) const
Wrapper for getStateFromMetaSkeleton that returns a ScopedState.
aikido::statespace::dart::MetaSkeletonStateSpace::getControlledMetaSkeleton
::dart::dynamics::MetaSkeletonPtr getControlledMetaSkeleton(const ::dart::dynamics::SkeletonPtr &_skeleton) const
Returns MetaSkeleton this space operates on.
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::getPositionUpperLimits
const Eigen::VectorXd & getPositionUpperLimits() const
Return the vector of position upper limits.
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::mDofNames
std::vector< std::string > mDofNames
Names of DOFs in the MetaSkeleton.
Definition: MetaSkeletonStateSpace.hpp:85
dart
Definition: FrameMarker.hpp:11
pair.hpp
aikido::statespace::dart::MetaSkeletonStateSpace::getState
void getState(const ::dart::dynamics::MetaSkeleton *_metaskeleton, State *_state) const
Gets the positions of the _metaskeleton and store them in _state.
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::getDofNames
const std::vector< std::string > & getDofNames() const
Return the names of DOFs in the MetaSkeleton.
aikido::statespace::dart::MetaSkeletonStateSpace::Properties
Static properties from the DART MetaSkeleton.
Definition: MetaSkeletonStateSpace.hpp:31
AIKIDO_DECLARE_POINTERS
#define AIKIDO_DECLARE_POINTERS(X)
Definition: pointers.hpp:21
aikido::statespace::CartesianProduct
Represents the Cartesian product of other StateSpaces.
Definition: CartesianProduct.hpp:18
aikido::statespace::dart::MetaSkeletonStateSpace::getProperties
const Properties & getProperties() const
Gets the MetaSkeleton properties associated with this state space.