sot-talos-balance  2.0.5
Collection of dynamic-graph entities aimed at implementing balance control on talos.
admittance-controller-end-effector.hh
Go to the documentation of this file.
1 /*
2  * Copyright 2019
3  *
4  * LAAS-CNRS
5  *
6  * Fanny Risbourg
7  * This file is part of sot-talos-balance.
8  * See license file.
9  */
10 
11 #ifndef __sot_talos_balance_admittance_controller_end_effector_H__
12 #define __sot_talos_balance_admittance_controller_end_effector_H__
13 
14 /* --------------------------------------------------------------------- */
15 /* --- API ------------------------------------------------------------- */
16 /* --------------------------------------------------------------------- */
17 
18 #if defined(WIN32)
19 #if defined(admittance_controller_end_effector_EXPORTS)
20 #define ADMITTANCECONTROLLERENDEFFECTOR_EXPORT __declspec(dllexport)
21 #else
22 #define ADMITTANCECONTROLLERENDEFFECTOR_EXPORT __declspec(dllimport)
23 #endif
24 #else
25 #define ADMITTANCECONTROLLERENDEFFECTOR_EXPORT
26 #endif
27 
28 /* --------------------------------------------------------------------- */
29 /* --- INCLUDE --------------------------------------------------------- */
30 /* --------------------------------------------------------------------- */
31 
32 #include <pinocchio/fwd.hpp>
33 // include pinocchio first
34 #include <dynamic-graph/signal-helper.h>
35 
36 #include <map>
37 #include <pinocchio/algorithm/center-of-mass.hpp>
38 #include <pinocchio/algorithm/frames.hpp>
39 #include <pinocchio/algorithm/kinematics.hpp>
40 #include <pinocchio/multibody/model.hpp>
41 #include <pinocchio/parsers/urdf.hpp>
42 #include <sot/core/robot-utils.hh>
43 
44 #include "boost/assign.hpp"
45 #include "pinocchio/spatial/motion.hpp"
46 #include "pinocchio/spatial/se3.hpp"
47 
48 namespace dynamicgraph {
49 namespace sot {
50 namespace talos_balance {
51 
52 /* --------------------------------------------------------------------- */
53 /* --- CLASS ----------------------------------------------------------- */
54 /* --------------------------------------------------------------------- */
55 
66  : public ::dynamicgraph::Entity {
67  DYNAMIC_GRAPH_ENTITY_DECL();
68 
69  public:
70  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
71 
72  /* --- CONSTRUCTOR ---- */
73  AdmittanceControllerEndEffector(const std::string &name);
74 
75  /* --- SIGNALS --- */
77  DECLARE_SIGNAL_IN(Kp, dynamicgraph::Vector);
79  DECLARE_SIGNAL_IN(Kd, dynamicgraph::Vector);
81  DECLARE_SIGNAL_IN(dqSaturation, dynamicgraph::Vector);
83  DECLARE_SIGNAL_IN(force, dynamicgraph::Vector);
85  DECLARE_SIGNAL_IN(w_forceDes, dynamicgraph::Vector);
87  DECLARE_SIGNAL_IN(q, dynamicgraph::Vector);
88 
90  DECLARE_SIGNAL_INNER(w_force, dynamicgraph::Vector);
92  DECLARE_SIGNAL_INNER(w_dq, dynamicgraph::Vector);
93 
95  DECLARE_SIGNAL_OUT(dq, dynamicgraph::Vector);
96 
97  /* --- COMMANDS --- */
106  void init(const double &dt, const std::string &sensorFrameName,
107  const std::string &endeffectorName);
108 
112  void resetDq();
113 
114  /* --- ENTITY INHERITANCE --- */
115  virtual void display(std::ostream &os) const;
116 
117  protected:
119  int m_n;
125  double m_dt;
126  // Weight of the end-effector
127  double m_mass;
128 
130  RobotUtilShrPtr m_robot_util;
132  pinocchio::Model m_model;
134  pinocchio::Data *m_data;
136  pinocchio::FrameIndex m_sensorFrameId;
138  pinocchio::JointIndex m_endEffectorId;
139 
140 }; // class AdmittanceControllerEndEffector
141 
142 } // namespace talos_balance
143 } // namespace sot
144 } // namespace dynamicgraph
145 
146 #endif // #ifndef __sot_talos_balance_admittance_controller_end_effector_H__
sot_talos_balance.test.appli_admittance_end_effector.q
list q
Definition: appli_admittance_end_effector.py:30
sot_talos_balance.test.appli_admittance_end_effector.sot
sot
Definition: appli_admittance_end_effector.py:117
dynamicgraph
Definition: treeview.dox:24
dynamicgraph::sot::talos_balance::AdmittanceControllerEndEffector::m_sensorFrameId
pinocchio::FrameIndex m_sensorFrameId
Id of the force sensor frame.
Definition: admittance-controller-end-effector.hh:136
dynamicgraph::sot::talos_balance::AdmittanceControllerEndEffector::m_dt
double m_dt
Time step of the control.
Definition: admittance-controller-end-effector.hh:125
dynamicgraph::sot::talos_balance::AdmittanceControllerEndEffector::m_mass
double m_mass
Definition: admittance-controller-end-effector.hh:127
dynamicgraph::sot::talos_balance::AdmittanceControllerEndEffector::m_robot_util
RobotUtilShrPtr m_robot_util
Robot Util instance to get the sensor frame.
Definition: admittance-controller-end-effector.hh:130
dynamicgraph::sot::talos_balance::AdmittanceControllerEndEffector::m_w_dq
dynamicgraph::Vector m_w_dq
Internal state.
Definition: admittance-controller-end-effector.hh:123
dynamicgraph::sot::talos_balance::AdmittanceControllerEndEffector::m_model
pinocchio::Model m_model
Pinocchio robot model.
Definition: admittance-controller-end-effector.hh:132
ADMITTANCECONTROLLERENDEFFECTOR_EXPORT
#define ADMITTANCECONTROLLERENDEFFECTOR_EXPORT
Definition: admittance-controller-end-effector.hh:25
dynamicgraph::sot::talos_balance::AdmittanceControllerEndEffector::m_endEffectorId
pinocchio::JointIndex m_endEffectorId
Id of the joint of the end-effector.
Definition: admittance-controller-end-effector.hh:138
sot_talos_balance.test.appli_admittance_single_joint.Kp
list Kp
Definition: appli_admittance_single_joint.py:33
dynamicgraph::sot::talos_balance::math::Vector
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > Vector
Definition: fwd.hh:36
sot_talos_balance.test.appli_admittance_single_joint.dt
dt
Definition: appli_admittance_single_joint.py:17
dynamicgraph::sot::talos_balance::AdmittanceControllerEndEffector::m_data
pinocchio::Data * m_data
Pinocchio robot data.
Definition: admittance-controller-end-effector.hh:134
dynamicgraph::sot::talos_balance::AdmittanceControllerEndEffector
Admittance controller for an upper body end-effector (right or left wrist)
Definition: admittance-controller-end-effector.hh:65
dynamicgraph::sot::talos_balance::AdmittanceControllerEndEffector::m_n
int m_n
Dimension of the force signals and of the output.
Definition: admittance-controller-end-effector.hh:119
sot_talos_balance.test.appli_dcm_zmp_control.name
name
Definition: appli_dcm_zmp_control.py:298
dynamicgraph::sot::talos_balance::AdmittanceControllerEndEffector::m_initSucceeded
bool m_initSucceeded
True if the entity has been successfully initialized.
Definition: admittance-controller-end-effector.hh:121