Choreonoid  1.5
PoseProvider.h
Go to the documentation of this file.
1 
6 #ifndef CNOID_BODY_POSE_PROVIDER_H_INCLUDED
7 #define CNOID_BODY_POSE_PROVIDER_H_INCLUDED
8 
9 #include "Body.h"
10 #include <vector>
11 #include <boost/optional.hpp>
12 #include <cnoid/EigenTypes>
13 
14 namespace cnoid {
15 
17 {
18 public:
19  virtual ~PoseProvider() { };
20  virtual Body* body() const = 0;
21  virtual double beginningTime() const = 0;
22  virtual double endingTime() const = 0;
23  virtual bool seek(double time) = 0;
24  virtual bool seek(double time, int waistLinkIndex, const Vector3& waistTranslation) = 0;
25  virtual int baseLinkIndex() const = 0;
26  virtual bool getBaseLinkPosition(Position& out_T) const = 0;
27  virtual void getJointPositions(std::vector< boost::optional<double> >& out_q) const = 0;
28  virtual boost::optional<Vector3> ZMP() const = 0;
29 
30 #ifdef CNOID_BACKWARD_COMPATIBILITY
31  bool getBaseLinkPosition(Vector3& out_p, Matrix3& out_R) const {
32  Position T;
33  if(getBaseLinkPosition(T)){
34  out_p = T.translation();
35  out_R = T.linear();
36  return true;
37  }
38  return false;
39  }
40 #endif
41 };
42 }
43 
44 #endif
virtual bool seek(double time)=0
Definition: Body.h:28
virtual int baseLinkIndex() const =0
virtual double endingTime() const =0
virtual double beginningTime() const =0
Definition: PoseProvider.h:16
virtual ~PoseProvider()
Definition: PoseProvider.h:19
virtual boost::optional< Vector3 > ZMP() const =0
Eigen::Transform< double, 3, Eigen::AffineCompact > Position
Definition: EigenTypes.h:73
virtual void getJointPositions(std::vector< boost::optional< double > > &out_q) const =0
virtual Body * body() const =0
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
Eigen::Vector3d Vector3
Definition: EigenTypes.h:58
Eigen::Matrix3d Matrix3
Definition: EigenTypes.h:57
virtual bool getBaseLinkPosition(Position &out_T) const =0