designer.hpp
Go to the documentation of this file.
1 #ifndef SOBEC_DESIGNER
2 #define SOBEC_DESIGNER
3 
4 #include <pinocchio/fwd.hpp>
5 // Include pinocchio first
6 #include <Eigen/Dense>
7 #include <pinocchio/algorithm/model.hpp>
8 #include <pinocchio/spatial/se3.hpp>
9 #include <string>
10 #include <vector>
11 
12 #include "pinocchio/multibody/data.hpp"
13 #include "pinocchio/multibody/model.hpp"
14 
15 namespace sobec {
16 
18  public:
19  std::string urdfPath = "";
20  std::string srdfPath = "";
21  std::string robotDescription = "";
22  std::vector<std::string> controlledJointsNames;
23 
24  std::string leftFootName = "";
25  std::string rightFootName = "";
26 };
27 
29  private:
30  RobotDesignerSettings settings_;
31 
32  std::vector<unsigned long> controlled_joints_id_;
33  unsigned long leftFootId_, rightFootId_, rootId_, EndEffectorId_;
34 
35  pinocchio::Model rModelComplete_, rModel_;
36  pinocchio::Data rDataComplete_, rData_;
37  // std::vector<pinocchio::JointIndex> pinocchioControlledJoints_;
38 
39  Eigen::VectorXd q0Complete_, q0_;
40  Eigen::VectorXd v0Complete_, v0_;
41  Eigen::VectorXd x0_;
42 
43  Eigen::Vector3d com_position_;
44  Eigen::Vector3d LF_position_;
45  Eigen::Vector3d RF_position_;
46  pinocchio::FrameIndex toeLeftId_, toeRightId_, heelLeftId_, heelRightId_;
47 
48  // Memori allocations
49  double mass_ = 0;
50 
51  public:
52  RobotDesigner();
53  RobotDesigner(const RobotDesignerSettings &settings);
54  void initialize(const RobotDesignerSettings &settings);
55  bool initialized_ = false;
56 
57  void updateReducedModel(const Eigen::VectorXd &x);
58  void updateCompleteModel(const Eigen::VectorXd &x);
59  void addToeAndHeel(const double &heel_translation,
60  const double &toe_translation);
61  void set_q0(const Eigen::VectorXd &q0);
62 
63  void addEndEffectorFrame(std::string endEffectorName, std::string parentName,
64  pinocchio::SE3 endEffectorPlacement);
65 
66  const pinocchio::SE3 &get_LF_frame();
67  const pinocchio::SE3 &get_RF_frame();
68  const pinocchio::SE3 &get_root_frame();
69  const pinocchio::SE3 &get_EndEff_frame();
70 
71  double getRobotMass();
72 
73  const pinocchio::Model &get_rModel() { return rModel_; }
74  const pinocchio::Model &get_rModelComplete() { return rModelComplete_; }
75  const pinocchio::Data &get_rData() { return rData_; }
76  const pinocchio::Data &get_rDataComplete() { return rDataComplete_; }
77  const Eigen::VectorXd &get_q0() { return q0_; }
78  const Eigen::VectorXd &get_v0() { return v0_; }
79  const Eigen::VectorXd &get_q0Complete() { return q0Complete_; }
80  const Eigen::VectorXd &get_v0Complete() { return v0Complete_; }
81  const Eigen::VectorXd &get_x0() { return x0_; }
82 
83  const std::string &get_LF_name() { return settings_.leftFootName; }
84  const std::string &get_RF_name() { return settings_.rightFootName; }
85  const pinocchio::FrameIndex &get_root_id() { return rootId_; }
86  const pinocchio::FrameIndex &get_LF_id() { return leftFootId_; }
87  const pinocchio::FrameIndex &get_RF_id() { return rightFootId_; }
88  const pinocchio::FrameIndex &get_LF_heel_id() { return heelLeftId_; }
89  const pinocchio::FrameIndex &get_RF_heel_id() { return heelRightId_; }
90  const pinocchio::FrameIndex &get_LF_toe_id() { return toeLeftId_; }
91  const pinocchio::FrameIndex &get_RF_toe_id() { return toeRightId_; }
92  const pinocchio::FrameIndex &get_EndEff_id() { return EndEffectorId_; }
93  const RobotDesignerSettings &get_settings() { return settings_; }
94  const std::vector<unsigned long> &get_controlledJointsIDs() {
95  return controlled_joints_id_;
96  }
97 
98  const Eigen::Vector3d &get_LF_position() { return LF_position_; }
99  const Eigen::Vector3d &get_RF_position() { return RF_position_; }
100  const Eigen::Vector3d &get_com_position() { return com_position_; }
101 
102  void changeInertia(const size_t &i, const double &offset);
103 };
104 
105 } // namespace sobec
106 #endif // SOBEC_DESIGNER
sobec::RobotDesigner::get_x0
const Eigen::VectorXd & get_x0()
Definition: designer.hpp:81
sobec::RobotDesignerSettings::srdfPath
std::string srdfPath
Definition: designer.hpp:20
sobec::RobotDesigner::getRobotMass
double getRobotMass()
Definition: designer.cpp:201
sobec::RobotDesigner::get_LF_frame
const pinocchio::SE3 & get_LF_frame()
Definition: designer.cpp:186
sobec::RobotDesigner::get_LF_toe_id
const pinocchio::FrameIndex & get_LF_toe_id()
Definition: designer.hpp:90
sobec::RobotDesigner::get_RF_toe_id
const pinocchio::FrameIndex & get_RF_toe_id()
Definition: designer.hpp:91
sobec::RobotDesigner::initialized_
bool initialized_
Definition: designer.hpp:55
sobec::RobotDesigner::get_controlledJointsIDs
const std::vector< unsigned long > & get_controlledJointsIDs()
Definition: designer.hpp:94
sobec::RobotDesigner::get_EndEff_id
const pinocchio::FrameIndex & get_EndEff_id()
Definition: designer.hpp:92
sobec::RobotDesigner::get_rModel
const pinocchio::Model & get_rModel()
Definition: designer.hpp:73
sobec::RobotDesigner::get_com_position
const Eigen::Vector3d & get_com_position()
Definition: designer.hpp:100
sobec::RobotDesignerSettings
Definition: designer.hpp:17
sobec::RobotDesignerSettings::leftFootName
std::string leftFootName
Definition: designer.hpp:24
sobec::RobotDesigner::get_RF_id
const pinocchio::FrameIndex & get_RF_id()
Definition: designer.hpp:87
sobec::RobotDesigner
Definition: designer.hpp:28
sobec::RobotDesigner::get_root_id
const pinocchio::FrameIndex & get_root_id()
Definition: designer.hpp:85
sobec::RobotDesigner::addToeAndHeel
void addToeAndHeel(const double &heel_translation, const double &toe_translation)
Definition: designer.cpp:106
sobec::RobotDesigner::get_EndEff_frame
const pinocchio::SE3 & get_EndEff_frame()
Definition: designer.cpp:197
sobec::RobotDesignerSettings::rightFootName
std::string rightFootName
Definition: designer.hpp:25
sobec::RobotDesigner::updateReducedModel
void updateReducedModel(const Eigen::VectorXd &x)
Definition: designer.cpp:149
sobec::RobotDesignerSettings::controlledJointsNames
std::vector< std::string > controlledJointsNames
Definition: designer.hpp:22
sobec::RobotDesigner::get_LF_position
const Eigen::Vector3d & get_LF_position()
Definition: designer.hpp:98
sobec::RobotDesignerSettings::urdfPath
std::string urdfPath
Definition: designer.hpp:19
sobec::RobotDesigner::changeInertia
void changeInertia(const size_t &i, const double &offset)
Definition: designer.cpp:207
sobec::RobotDesigner::updateCompleteModel
void updateCompleteModel(const Eigen::VectorXd &x)
Definition: designer.cpp:160
sobec
Definition: activation-quad-ref.hpp:19
sobec::RobotDesigner::set_q0
void set_q0(const Eigen::VectorXd &q0)
Definition: designer.cpp:143
sobec::RobotDesigner::get_settings
const RobotDesignerSettings & get_settings()
Definition: designer.hpp:93
sobec::RobotDesigner::addEndEffectorFrame
void addEndEffectorFrame(std::string endEffectorName, std::string parentName, pinocchio::SE3 endEffectorPlacement)
Definition: designer.cpp:172
sobec::RobotDesigner::get_rDataComplete
const pinocchio::Data & get_rDataComplete()
Definition: designer.hpp:76
sobec::RobotDesigner::get_rModelComplete
const pinocchio::Model & get_rModelComplete()
Definition: designer.hpp:74
sobec::RobotDesigner::get_rData
const pinocchio::Data & get_rData()
Definition: designer.hpp:75
sobec::RobotDesigner::get_LF_id
const pinocchio::FrameIndex & get_LF_id()
Definition: designer.hpp:86
sobec::newcontacts::x
@ x
Definition: contact1d.hpp:26
sobec::RobotDesigner::get_LF_name
const std::string & get_LF_name()
Definition: designer.hpp:83
sobec::RobotDesigner::get_root_frame
const pinocchio::SE3 & get_root_frame()
Definition: designer.cpp:194
sobec::RobotDesigner::get_q0
const Eigen::VectorXd & get_q0()
Definition: designer.hpp:77
sobec::RobotDesignerSettings::robotDescription
std::string robotDescription
Definition: designer.hpp:21
sobec::RobotDesigner::get_RF_frame
const pinocchio::SE3 & get_RF_frame()
Definition: designer.cpp:190
sobec::RobotDesigner::get_RF_heel_id
const pinocchio::FrameIndex & get_RF_heel_id()
Definition: designer.hpp:89
sobec::RobotDesigner::get_v0
const Eigen::VectorXd & get_v0()
Definition: designer.hpp:78
sobec::RobotDesigner::get_v0Complete
const Eigen::VectorXd & get_v0Complete()
Definition: designer.hpp:80
sobec::RobotDesigner::get_LF_heel_id
const pinocchio::FrameIndex & get_LF_heel_id()
Definition: designer.hpp:88
sobec::RobotDesigner::RobotDesigner
RobotDesigner()
Definition: designer.cpp:10
sobec::RobotDesigner::get_q0Complete
const Eigen::VectorXd & get_q0Complete()
Definition: designer.hpp:79
sobec::RobotDesigner::get_RF_name
const std::string & get_RF_name()
Definition: designer.hpp:84
sobec::RobotDesigner::initialize
void initialize(const RobotDesignerSettings &settings)
Definition: designer.cpp:16
sobec::RobotDesigner::get_RF_position
const Eigen::Vector3d & get_RF_position()
Definition: designer.hpp:99