Choreonoid  1.5
ControllerItem.h
Go to the documentation of this file.
1 
6 #ifndef CNOID_BODY_PLUGIN_CONTROLLER_ITEM_H
7 #define CNOID_BODY_PLUGIN_CONTROLLER_ITEM_H
8 
9 #include "SimulatorItem.h"
10 #include "exportdecl.h"
11 
12 namespace cnoid {
13 
14 class Body;
15 
17 {
18 public:
19  virtual Body* body() = 0;
20  virtual double timeStep() const = 0;
21  virtual double currentTime() const = 0;
22  virtual std::string optionString() const = 0;
23 
25  virtual double worldTimeStep() const;
26 };
27 
29 {
30 public:
31  // for the backward compatibility
33 
35  ControllerItem(const ControllerItem& org);
36  virtual ~ControllerItem();
37 
38  bool isActive() const;
39  bool isImmediateMode() const { return isImmediateMode_; }
40  void setImmediateMode(bool on);
41 
42  const std::string& optionString() const { return optionString_; }
43  bool splitOptionString(const std::string& optionString, std::vector<std::string>& out_options) const;
44 
53  virtual bool initialize(ControllerItemIO* io);
54 
58  virtual bool start();
59 
61  virtual bool start(ControllerItemIO* io);
62 
63  virtual double timeStep() const = 0;
64 
68  virtual void input() = 0;
69 
70  /*
71  @return false to request stopping
72  @note The body oject given in the initalized function() must not be accessed
73  in this function. The access should be done in input() and output().
74  @note This function is called from the simulation thread.
75  */
76  virtual bool control() = 0;
77 
81  virtual void output() = 0;
82 
86  virtual void stop();
87 
89  std::string getMessage();
90 
91 #ifdef ENABLE_SIMULATION_PROFILING
92  virtual void getProfilingNames(std::vector<std::string>& profilingNames);
93  virtual void getProfilingTimes(std::vector<double>& profilingTimes);
94 #endif
95 
96 protected:
97  void putMessage(const std::string& message);
98 
99  virtual void doPutProperties(PutPropertyFunction& putProperty);
100  virtual bool store(Archive& archive);
101  virtual bool restore(const Archive& archive);
102 
103 private:
104  SimulatorItemPtr simulatorItem_;
105  bool isImmediateMode_;
106  std::string message_;
108  std::string optionString_;
109 
110  friend class SimulatorItemImpl;
111 
112  void setSimulatorItem(SimulatorItem* item) {
113  simulatorItem_ = item;
114  }
115 };
116 
118 
119 }
120 
121 #endif
Definition: SimulatorItem.h:80
Definition: Body.h:28
Definition: Archive.h:21
virtual double timeStep() const =0
ref_ptr< ControllerItem > ControllerItemPtr
Definition: ControllerItem.h:117
virtual double worldTimeStep() const
Definition: ControllerItem.cpp:16
bool isImmediateMode() const
Definition: ControllerItem.h:39
Definition: PutPropertyFunction.h:35
virtual Body * body()=0
Definition: Item.h:38
virtual double currentTime() const =0
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
virtual std::string optionString() const =0
Definition: ControllerItem.h:28
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
Definition: Signal.h:380
const std::string & optionString() const
Definition: ControllerItem.h:42
ControllerItemIO Target
Definition: ControllerItem.h:32
Definition: ControllerItem.h:16