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 getNumDofs() const;
44 
46  const std::vector<std::string>& getDofNames() const;
47 
49  std::size_t getDofIndex(std::size_t ijoint, std::size_t ijointdof) const;
50 
52  std::size_t getDofIndex(const std::string& dofName) const;
53 
55  const Eigen::VectorXd& getPositionLowerLimits() const;
56 
58  const Eigen::VectorXd& getPositionUpperLimits() const;
59 
61  const Eigen::VectorXd& getVelocityLowerLimits() const;
62 
64  const Eigen::VectorXd& getVelocityUpperLimits() const;
65 
68  bool operator==(const Properties& otherProperties) const;
69 
72  bool operator!=(const Properties& otherProperties) const;
73 
74  protected:
76  std::string mName;
77 
79  std::size_t mNumDofs;
80 
82  std::vector<std::string> mDofNames;
83 
85  std::unordered_map<
86  std::pair<std::size_t, std::size_t>,
87  std::size_t,
90 
92  Eigen::VectorXd mPositionLowerLimits;
93 
95  Eigen::VectorXd mPositionUpperLimits;
96 
98  Eigen::VectorXd mVelocityLowerLimits;
99 
101  Eigen::VectorXd mVelocityUpperLimits;
102  };
103 
106 
110  explicit MetaSkeletonStateSpace(
111  const ::dart::dynamics::MetaSkeleton* metaskeleton);
112 
116  const Properties& getProperties() const;
117 
122  bool isCompatible(const ::dart::dynamics::MetaSkeleton* metaskeleton) const;
123 
129  void checkCompatibility(
130  const ::dart::dynamics::MetaSkeleton* metaskeleton) const;
131 
137  void checkIfContained(const ::dart::dynamics::Skeleton* skeleton) const;
138 
145  template <class Space = JointStateSpace>
146  std::shared_ptr<Space> getJointSpace(
147  const ::dart::dynamics::MetaSkeleton* _metaskeleton,
148  const ::dart::dynamics::Joint* _joint) const;
149 
155  template <class Space = JointStateSpace>
156  std::shared_ptr<const Space> getJointSpace(std::size_t _index) const;
157 
164  const Eigen::VectorXd& _positions, State* _state) const;
165 
172  const State* _state, Eigen::VectorXd& _positions) const;
173 
178  void getState(
179  const ::dart::dynamics::MetaSkeleton* _metaskeleton, State* _state) const;
180 
185  void setState(
186  ::dart::dynamics::MetaSkeleton* _metaskeleton, const State* _state) const;
187 
193  const ::dart::dynamics::MetaSkeleton* _metaskeleton) const;
194 
197  ::dart::dynamics::MetaSkeletonPtr getControlledMetaSkeleton(
198  const ::dart::dynamics::SkeletonPtr& _skeleton) const;
199 
200 private:
202 };
203 
204 } // namespace dart
205 } // namespace statespace
206 } // namespace aikido
207 
209 
210 #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:201
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:98
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::mNumDofs
std::size_t mNumDofs
Number of dofs in the MetaSkeleton.
Definition: MetaSkeletonStateSpace.hpp:79
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:95
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::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:89
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
JointStateSpace.hpp
aikido::statespace::dart::MetaSkeletonStateSpace::Properties::mPositionLowerLimits
Eigen::VectorXd mPositionLowerLimits
The metaskeleton's position lower limits.
Definition: MetaSkeletonStateSpace.hpp:92
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:76
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:101
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:82
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.