6 #ifndef __sot_torque_control_control_manager_H__
7 #define __sot_torque_control_control_manager_H__
14 #if defined(__sot_torque_control_control_manager_H__)
15 #define SOTCONTROLMANAGER_EXPORT __declspec(dllexport)
17 #define SOTCONTROLMANAGER_EXPORT __declspec(dllimport)
20 #define SOTCONTROLMANAGER_EXPORT
27 #include <pinocchio/fwd.hpp>
31 #include <dynamic-graph/signal-helper.h>
34 #include <pinocchio/multibody/model.hpp>
35 #include <pinocchio/parsers/urdf.hpp>
36 #include <sot/core/matrix-geometry.hh>
37 #include <sot/core/robot-utils.hh>
39 #include <tsid/robots/robot-wrapper.hpp>
41 #include "boost/assign.hpp"
52 #define CTRL_MODE_TRANSITION_TIME_STEP 1000.0
64 os << s.
id <<
"_" << s.
name;
70 DYNAMIC_GRAPH_ENTITY_DECL();
79 void init(
const double& dt,
const std::string& urdfFile,
80 const std::string& robotRef);
83 std::vector<dynamicgraph::SignalPtr<dynamicgraph::Vector, int>*>
85 std::vector<dynamicgraph::SignalPtr<bool, int>*>
87 std::vector<dynamicgraph::Signal<dynamicgraph::Vector, int>*>
91 DECLARE_SIGNAL_IN(i_measured, dynamicgraph::Vector);
93 tau, dynamicgraph::Vector);
97 dynamicgraph::Vector);
99 i_max, dynamicgraph::Vector);
103 dynamicgraph::Vector);
104 DECLARE_SIGNAL_IN(tau_max,
106 dynamicgraph::Vector);
109 DECLARE_SIGNAL_OUT(u, dynamicgraph::Vector);
112 dynamicgraph::Vector);
117 void addCtrlMode(
const std::string& name);
119 void getCtrlMode(
const std::string& jointName);
120 void setCtrlMode(
const std::string& jointName,
const std::string& ctrlMode);
121 void setCtrlMode(
const int jid,
const CtrlMode& cm);
123 void resetProfiler();
126 void setNameToId(
const std::string& jointName,
const double& jointId);
127 void setJointLimitsFromId(
const double& jointId,
const double& lq,
131 void setForceLimitsFromId(
const double& jointId,
132 const dynamicgraph::Vector& lq,
133 const dynamicgraph::Vector& uq);
134 void setForceNameToForceId(
const std::string& forceName,
135 const double& forceId);
138 void setRightFootSoleXYZ(
const dynamicgraph::Vector&);
139 void setRightFootForceSensorXYZ(
const dynamicgraph::Vector&);
140 void setFootFrameName(
const std::string&,
const std::string&);
141 void setImuJointName(
const std::string&);
142 void displayRobotUtil();
145 void setHandFrameName(
const std::string&,
const std::string&);
148 void setJoints(
const dynamicgraph::Vector&);
150 void setStreamPrintPeriod(
const double& s);
151 void setSleepTime(
const double& seconds);
152 void addEmergencyStopSIN(
const std::string& name);
155 virtual void display(std::ostream& os)
const;
157 void sendMsg(
const std::string& msg, MsgType t = MSG_TYPE_INFO,
158 const char* =
"",
int = 0) {
159 logger_.stream(t) << (
"[ControlManager-" + name +
"] " + msg) <<
'\n';
169 bool m_is_first_iter;
177 std::vector<CtrlMode>
179 std::vector<CtrlMode>
185 bool convertStringToCtrlMode(
const std::string& name,
CtrlMode& cm);
186 bool convertJointNameToJointId(
const std::string& name,
unsigned int&
id);
187 bool isJointInRange(
unsigned int id,
double q);
188 void updateJointCtrlModesOutputSignal();
196 #endif // #ifndef __sot_torque_control_control_manager_H__