ocra-recipes
Doxygen documentation for the ocra-recipes repository
FullState.h
Go to the documentation of this file.
1 #ifndef _OCRA_FULLSTATE_H_
2 #define _OCRA_FULLSTATE_H_
3 
5 #include <ocra/util/Macros.h>
6 #include <Eigen/Core>
7 #include <boost/shared_ptr.hpp>
8 
9 namespace ocra
10 {
11  class Model;
12 }
13 
14 namespace ocra
15 {
16  class FullState
17  : public NamedInstance
18  {
20  public:
21  enum
22  {
26  };
27 
28  public:
29  FullState(const std::string& name, const Model& model, int whichPart);
30  virtual ~FullState() = 0;
31 
32  const Model& getModel() const;
33  int getSize() const;
34  const Eigen::MatrixXd& getJacobian() const;
35 
36  virtual const Eigen::MatrixXd& getInertiaMatrix() const = 0;
37  virtual const Eigen::MatrixXd& getInertiaMatrixInverse() const = 0;
38  virtual const Eigen::VectorXd& q() const = 0;
39  virtual const Eigen::VectorXd& qdot() const = 0;
40  virtual const Eigen::VectorXd& qddot() const = 0;
41  virtual const Eigen::VectorXd& tau() const = 0;
42 
43  protected:
44  int whichPart() const;
45 
46  private:
47  struct Pimpl;
48  boost::shared_ptr<Pimpl> pimpl;
49  };
50 
51 
52  class FullModelState : public FullState
53  {
55 
56  public:
57  FullModelState(const std::string& name, const Model& model, int whichPart);
58 
59  const Eigen::MatrixXd& getInertiaMatrix() const;
60  const Eigen::MatrixXd& getInertiaMatrixInverse() const;
61  const Eigen::VectorXd& q() const;
62  const Eigen::VectorXd& qdot() const;
63  const Eigen::VectorXd& qddot() const;
64  const Eigen::VectorXd& tau() const;
65 
66  private:
67  struct Pimpl;
68  boost::shared_ptr<Pimpl> pimpl;
69  };
70 
71 
72  class FullTargetState : public FullState
73  {
75 
76  public:
77  FullTargetState(const std::string& name, const Model& model, int whichPart);
78 
79  const Eigen::MatrixXd& getInertiaMatrix() const;
80  const Eigen::MatrixXd& getInertiaMatrixInverse() const;
81  const Eigen::VectorXd& q() const;
82  const Eigen::VectorXd& qdot() const;
83  const Eigen::VectorXd& qddot() const;
84  const Eigen::VectorXd& tau() const;
85 
86  void set_q(const Eigen::VectorXd& q);
87  void set_qdot(const Eigen::VectorXd& qdot);
88  void set_qddot(const Eigen::VectorXd& qddot);
89  void set_tau(const Eigen::VectorXd& tau);
90 
91  private:
92  struct Pimpl;
93  boost::shared_ptr<Pimpl> pimpl;
94  };
95 }
96 
97 #endif
98 
99 // cmake:sourcegroup=Api
const Model & getModel() const
Definition: FullState.cpp:51
virtual const Eigen::MatrixXd & getInertiaMatrixInverse() const =0
const Eigen::MatrixXd & getJacobian() const
Definition: FullState.cpp:61
Model class.
Definition: Model.h:38
#define DEFINE_CLASS_POINTER_TYPEDEFS(Class)
Definition: Macros.h:8
Optimization-based Robot Controller namespace. a library of classes to write and solve optimization p...
virtual const Eigen::VectorXd & q() const =0
virtual const Eigen::VectorXd & qdot() const =0
virtual ~FullState()=0
Definition: FullState.cpp:47
int whichPart() const
Definition: FullState.cpp:66
int getSize() const
Definition: FullState.cpp:56
FullState(const std::string &name, const Model &model, int whichPart)
Definition: FullState.cpp:41
virtual const Eigen::MatrixXd & getInertiaMatrix() const =0
virtual const Eigen::VectorXd & qddot() const =0
virtual const Eigen::VectorXd & tau() const =0