Aikido
JointStateSpace.hpp
Go to the documentation of this file.
1 #ifndef AIKIDO_STATESPACE_DART_JOINTSTATESPACE_HPP_
2 #define AIKIDO_STATESPACE_DART_JOINTSTATESPACE_HPP_
3 
4 #include <dart/dynamics/dynamics.hpp>
5 
7 
8 namespace aikido {
9 namespace statespace {
10 namespace dart {
11 
20 class JointStateSpace : public virtual StateSpace
21 {
22 public:
25  class Properties
26  {
27  public:
31  explicit Properties(const ::dart::dynamics::Joint* joint);
32 
34  const std::string& getName() const;
35 
37  const std::string& getType() const;
38 
40  std::size_t getNumDofs() const;
41 
43  const std::vector<std::string>& getDofNames() const;
44 
46  bool hasPositionLimit(std::size_t index) const;
47 
49  bool isPositionLimited() const;
50 
52  const Eigen::VectorXd& getPositionLowerLimits() const;
53 
55  const Eigen::VectorXd& getPositionUpperLimits() const;
56 
58  const Eigen::VectorXd& getVelocityLowerLimits() const;
59 
61  const Eigen::VectorXd& getVelocityUpperLimits() const;
62 
65  bool operator==(const Properties& otherProperties) const;
66 
69  bool operator!=(const Properties& otherProperties) const;
70 
71  protected:
73  std::string mName;
74 
76  std::string mType;
77 
79  std::vector<std::string> mDofNames;
80 
82  Eigen::VectorXd mPositionLowerLimits;
83 
85  Eigen::VectorXd mPositionUpperLimits;
86 
88  Eigen::Matrix<bool, Eigen::Dynamic, 1> mPositionHasLimits;
89 
91  Eigen::VectorXd mVelocityLowerLimits;
92 
94  Eigen::VectorXd mVelocityUpperLimits;
95 
97  // TODO: why doesn't this exist in DART??
98  // Eigen::Matrix<bool, Eigen::Dynamic, 1> mVelocityHasLimits;
99  };
100 
104  explicit JointStateSpace(const ::dart::dynamics::Joint* joint);
105 
107  virtual ~JointStateSpace() = default;
108 
112  const Properties& getProperties() const;
113 
117  bool isCompatible(const ::dart::dynamics::Joint* joint) const;
118 
123  void checkCompatibility(const ::dart::dynamics::Joint* joint) const;
124 
130  virtual void convertPositionsToState(
131  const Eigen::VectorXd& positions, StateSpace::State* state) const = 0;
132 
138  virtual void convertStateToPositions(
139  const StateSpace::State* state, Eigen::VectorXd& positions) const = 0;
140 
145  virtual void getState(
146  const ::dart::dynamics::Joint* joint, StateSpace::State* state) const;
147 
152  virtual void setState(
153  ::dart::dynamics::Joint* joint, const StateSpace::State* state) const;
154 
155 protected:
157 };
158 
159 } // namespace dart
160 } // namespace statespace
161 } // namespace aikido
162 
163 #endif // ifndef AIKIDO_STATESPACE_DART_JOINTSTATESPACE_HPP_
aikido::statespace::dart::JointStateSpace::convertStateToPositions
virtual void convertStateToPositions(const StateSpace::State *state, Eigen::VectorXd &positions) const =0
Converts a State in this state space to DART Joint positions, e.g.
aikido::statespace::dart::JointStateSpace::Properties::getVelocityLowerLimits
const Eigen::VectorXd & getVelocityLowerLimits() const
Return the vector of velocity lower limits.
aikido::statespace::dart::JointStateSpace::isCompatible
bool isCompatible(const ::dart::dynamics::Joint *joint) const
Returns whether the Joint can be used with this state space.
aikido::statespace::dart::JointStateSpace::Properties::mDofNames
std::vector< std::string > mDofNames
Names of DOFs in the Joint.
Definition: JointStateSpace.hpp:79
aikido::statespace::dart::JointStateSpace::Properties::getType
const std::string & getType() const
Return the type of the joint.
aikido::statespace::dart::JointStateSpace::Properties::operator==
bool operator==(const Properties &otherProperties) const
Return whether two JointStateSpace::Properties are identical.
aikido::statespace::dart::JointStateSpace::getState
virtual void getState(const ::dart::dynamics::Joint *joint, StateSpace::State *state) const
Gets the positions of the joint and store them in state.
aikido
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
aikido::statespace::dart::JointStateSpace::Properties::getDofNames
const std::vector< std::string > & getDofNames() const
Return the names of DOFs in the joint.
aikido::statespace::dart::JointStateSpace::checkCompatibility
void checkCompatibility(const ::dart::dynamics::Joint *joint) const
Throws an error if the Joint cannot be used with this state space.
StateSpace.hpp
aikido::statespace::dart::JointStateSpace::mProperties
Properties mProperties
Definition: JointStateSpace.hpp:156
aikido::statespace::dart::JointStateSpace::Properties::mPositionLowerLimits
Eigen::VectorXd mPositionLowerLimits
The joint's position lower limits.
Definition: JointStateSpace.hpp:82
aikido::statespace::dart::JointStateSpace::Properties::getPositionLowerLimits
const Eigen::VectorXd & getPositionLowerLimits() const
Return the vector of position lower limits.
aikido::statespace::dart::JointStateSpace::Properties::mPositionHasLimits
Eigen::Matrix< bool, Eigen::Dynamic, 1 > mPositionHasLimits
The joint's position limits.
Definition: JointStateSpace.hpp:88
aikido::statespace::dart::JointStateSpace::setState
virtual void setState(::dart::dynamics::Joint *joint, const StateSpace::State *state) const
Sets the positions of the joint to state.
aikido::statespace::dart::JointStateSpace::getProperties
const Properties & getProperties() const
Gets the joint properties associated with this state space.
aikido::statespace::dart::JointStateSpace::Properties
Static properties from the DART Joint.
Definition: JointStateSpace.hpp:25
aikido::statespace::dart::JointStateSpace::Properties::getNumDofs
std::size_t getNumDofs() const
Return the number of DOFs in the joint.
aikido::statespace::dart::JointStateSpace::Properties::hasPositionLimit
bool hasPositionLimit(std::size_t index) const
Return whether the index DOF is position-limited.
aikido::statespace::dart::JointStateSpace::Properties::operator!=
bool operator!=(const Properties &otherProperties) const
Return whether two JointStateSpace::Properties are different.
aikido::statespace::dart::JointStateSpace::Properties::getPositionUpperLimits
const Eigen::VectorXd & getPositionUpperLimits() const
Return the vector of position upper limits.
aikido::statespace::StateSpace
Represents a Lie group and its associated Lie algebra, i.e.
Definition: StateSpace.hpp:33
aikido::statespace::dart::JointStateSpace::Properties::mType
std::string mType
Name of the joint type.
Definition: JointStateSpace.hpp:76
aikido::statespace::dart::JointStateSpace::Properties::mVelocityUpperLimits
Eigen::VectorXd mVelocityUpperLimits
The joint's velocity upper limits.
Definition: JointStateSpace.hpp:94
aikido::statespace::dart::JointStateSpace::~JointStateSpace
virtual ~JointStateSpace()=default
Destructor.
aikido::statespace::dart::JointStateSpace::Properties::mPositionUpperLimits
Eigen::VectorXd mPositionUpperLimits
The joint's position upper limits.
Definition: JointStateSpace.hpp:85
aikido::statespace::dart::JointStateSpace::Properties::getVelocityUpperLimits
const Eigen::VectorXd & getVelocityUpperLimits() const
Return the vector of velocity upper limits.
aikido::statespace::StateSpace::State
Definition: StateSpace.hpp:167
aikido::statespace::dart::JointStateSpace
StateSpace of a DART Joint.
Definition: JointStateSpace.hpp:20
aikido::statespace::dart::JointStateSpace::JointStateSpace
JointStateSpace(const ::dart::dynamics::Joint *joint)
Constructs a state space for joint.
dart
Definition: FrameMarker.hpp:11
aikido::statespace::dart::JointStateSpace::Properties::Properties
Properties(const ::dart::dynamics::Joint *joint)
Constructs the joint properties for joint.
aikido::statespace::dart::JointStateSpace::Properties::isPositionLimited
bool isPositionLimited() const
Return whether any DOF is position-limited.
aikido::statespace::dart::JointStateSpace::Properties::mVelocityLowerLimits
Eigen::VectorXd mVelocityLowerLimits
The joint's velocity lower limits.
Definition: JointStateSpace.hpp:91
aikido::statespace::dart::JointStateSpace::convertPositionsToState
virtual void convertPositionsToState(const Eigen::VectorXd &positions, StateSpace::State *state) const =0
Converts DART Joint positions, e.g.
aikido::statespace::dart::JointStateSpace::Properties::getName
const std::string & getName() const
Return the name of the joint.
aikido::statespace::dart::JointStateSpace::Properties::mName
std::string mName
Name of the joint.
Definition: JointStateSpace.hpp:73