sot-core  4.11.8
Hierarchical task solver plug-in for dynamic-graph.
sot-loader.hh
Go to the documentation of this file.
1 /*
2  * Copyright 2016,
3  * Olivier Stasse,
4  *
5  * CNRS
6  *
7  */
8 /* -------------------------------------------------------------------------- */
9 /* --- INCLUDES ------------------------------------------------------------- */
10 /* -------------------------------------------------------------------------- */
11 
12 #ifndef _SOT_LOADER_HH_
13 #define _SOT_LOADER_HH_
14 
15 // STL includes
16 #include <map>
17 
18 // Dynamic Graph embeded python interpreter.
19 #include <dynamic-graph/python/interpreter.hh>
20 
21 // Sot Framework includes
23 #include <sot/core/debug.hh>
24 #include <sot/core/device.hh>
25 
26 namespace dynamicgraph {
27 namespace sot {
28 
47 class SotLoader {
48  protected:
51 
54 
58 
61 
63  python::Interpreter embeded_python_interpreter_;
64 
66  std::map<std::string, SensorValues> sensors_in_;
67 
69  std::map<std::string, ControlValues> control_values_;
70 
73  std::string device_name_;
74 
75  public:
80 
82  int parseOptions(int argc, char *argv[]);
83 
86 
88  void cleanUp();
89 
92 
94  inline void startDG() { dynamic_graph_stopped_ = false; }
95 
97  inline void stopDG() { dynamic_graph_stopped_ = true; }
98 
100  inline void setDynamicLibraryName(std::string &afilename) {
101  sot_dynamic_library_filename_ = afilename;
102  }
103 
105  void runPythonCommand(const std::string &command, std::string &result,
106  std::string &out, std::string &err);
107 
109  inline void runPythonFile(std::string ifilename, std::string &err) {
110  embeded_python_interpreter_.runPythonFile(ifilename, err);
111  }
112 
114  inline void runPythonFile(std::string ifilename) {
115  embeded_python_interpreter_.runPythonFile(ifilename);
116  }
117 
120  void oneIteration(std::map<std::string, SensorValues> &sensors_in,
121  std::map<std::string, ControlValues> &control_values);
122 
124  void loadDeviceInPython(const std::string &device_name);
125 };
126 
127 } /* namespace sot */
128 } /* namespace dynamicgraph */
129 
130 #endif /* _SOT_LOADER_HH_ */
Definition: abstract-sot-external-interface.hh:40
This class is loading the control part of the Stack-Of-Tasks.
Definition: sot-loader.hh:47
SotLoader()
Default constructor.
void runPythonCommand(const std::string &command, std::string &result, std::string &out, std::string &err)
Run a python command inside the embeded python interpreter.
AbstractSotExternalInterface * sot_external_interface_
The interface between the device and the robot driver.
Definition: sot-loader.hh:53
std::string sot_dynamic_library_filename_
Name of the dynamic library containing the dgs::AbstractSotExternalInterface object.
Definition: sot-loader.hh:57
int parseOptions(int argc, char *argv[])
Read user input to extract the path of the SoT dynamic library.
void setDynamicLibraryName(std::string &afilename)
Specify the name of the dynamic library.
Definition: sot-loader.hh:100
void runPythonFile(std::string ifilename, std::string &err)
Run a python script inside the embeded python interpreter.
Definition: sot-loader.hh:109
python::Interpreter embeded_python_interpreter_
Embeded python interpreter.
Definition: sot-loader.hh:63
~SotLoader()
Default destructor.
void cleanUp()
Unload the library which handles the robot device.
void loadDeviceInPython(const std::string &device_name)
Load the Device entity in the python global scope.
void runPythonFile(std::string ifilename)
Run a python script inside the embeded python interpreter.
Definition: sot-loader.hh:114
bool isDynamicGraphStopped()
Get Status of dg.
Definition: sot-loader.hh:91
void * sot_dynamic_library_
Handle on the SoT library.
Definition: sot-loader.hh:60
std::map< std::string, SensorValues > sensors_in_
Map of sensor readings.
Definition: sot-loader.hh:66
void startDG()
Get Status of dg.
Definition: sot-loader.hh:94
std::map< std::string, ControlValues > control_values_
Map of control values.
Definition: sot-loader.hh:69
std::string device_name_
Device entity created and loaded, so we deregister it as the Pool is not responsible for it's life ti...
Definition: sot-loader.hh:73
bool initialization()
Prepare the SoT framework.
bool dynamic_graph_stopped_
Check if the dynamic graph is running or not.
Definition: sot-loader.hh:50
void stopDG()
Get Status of dg.
Definition: sot-loader.hh:97
void oneIteration(std::map< std::string, SensorValues > &sensors_in, std::map< std::string, ControlValues > &control_values)
Compute one iteration of control. Basically executes fillSensors, the SoT and the readControl.
Definition: abstract-sot-external-interface.hh:17