Choreonoid  1.5
VirtualRobotRTC.h
Go to the documentation of this file.
1 
6 #ifndef CNOID_OPENRTM_PLUGIN_VIRTUAL_ROBOT_RTC_H_INCLUDED
7 #define CNOID_OPENRTM_PLUGIN_VIRTUAL_ROBOT_RTC_H_INCLUDED
8 
9 #include <set>
10 #include <string>
11 #include <rtm/RTObject.h>
12 #include <rtm/Manager.h>
13 #include <rtm/DataFlowComponentBase.h>
14 #include <cnoid/Body>
15 
17 
18 
19 namespace cnoid {
20 
21 class VirtualRobotRTC : public RTC::DataFlowComponentBase
22 {
23 public:
24  static void registerFactory(RTC::Manager* manager, const char* componentTypeName);
25 
26  VirtualRobotRTC(RTC::Manager* manager);
28 
29  RTC::ReturnCode_t onInitialize();
30  void createPorts(BridgeConf* bridgeConf);
31 
32  PortHandlerPtr getOutPortHandler(const std::string& name);
33  PortHandlerPtr getInPortHandler(const std::string& name);
34 
35  RTC::RTCList* getConnectedRtcs();
36 
37  void inputDataFromSimulator(BodyRTCItem* bodyRTC);
38  void outputDataToSimulator(const BodyPtr& body);
39 
40  void writeDataToOutPorts(double controlTime, double controlTimeStep);
41  void readDataFromInPorts();
42  void stop();
43  bool checkOutPortStepTime(double controlTimeStep);
44  void initialize(Body* simulationBody);
45 
46 private:
47  typedef std::map<std::string, OutPortHandlerPtr> OutPortHandlerMap;
48  OutPortHandlerMap outPortHandlers;
49 
50  typedef std::map<std::string, InPortHandlerPtr> InPortHandlerMap;
51  InPortHandlerMap inPortHandlers;
52 
53 
54  bool createOutPortHandler(PortInfo& portInfo);
55  bool createInPortHandler(PortInfo& portInfo);
56 
57  template <class TOutPortHandler>
58  bool registerOutPortHandler(TOutPortHandler* handler) {
59  const std::string& name = handler->portName;
60  if(!getOutPortHandler(name)){
61  if (!addOutPort(name.c_str(), handler->outPort)) return false;
62  outPortHandlers.insert(std::make_pair(name, OutPortHandlerPtr(handler)));
63  }
64  return true;
65  }
66 
67  template <class TOutPortHandler>
68  bool unregisterOutPortHandler(TOutPortHandler* handler) {
69  if (deleteOutPort(handler->outPort))
70  return true;
71  return false;
72  }
73 
74  template <class TInPortHandler>
75  bool registerInPortHandler(TInPortHandler* handler) {
76  const std::string& name = handler->portName;
77  if(!getInPortHandler(name)){
78  if (!addInPort(name.c_str(), handler->inPort)) return false;
79  inPortHandlers.insert(std::make_pair(name, InPortHandlerPtr(handler)));
80  }
81  return true;
82  }
83 
84  void updatePortObjectRefs();
85 
86  void addConnectedRtcs(RTC::PortService_ptr portRef, RTC::RTCList& rtcList, std::set<std::string>& foundRtcNames);
87 };
88 }
89 
90 #endif
PortHandlerPtr getOutPortHandler(const std::string &name)
Definition: VirtualRobotRTC.cpp:217
Definition: Body.h:28
RTC::ReturnCode_t onInitialize()
Definition: VirtualRobotRTC.cpp:62
boost::shared_ptr< OutPortHandler > OutPortHandlerPtr
Definition: VirtualRobotPortHandler.h:66
static void registerFactory(RTC::Manager *manager, const char *componentTypeName)
Definition: VirtualRobotRTC.cpp:24
VirtualRobotRTC(RTC::Manager *manager)
Definition: VirtualRobotRTC.cpp:54
void inputDataFromSimulator(BodyRTCItem *bodyRTC)
Definition: VirtualRobotRTC.cpp:353
Definition: VirtualRobotRTC.h:21
void stop()
Definition: VirtualRobotRTC.cpp:407
void writeDataToOutPorts(double controlTime, double controlTimeStep)
Definition: VirtualRobotRTC.cpp:382
bool checkOutPortStepTime(double controlTimeStep)
Definition: VirtualRobotRTC.cpp:412
~VirtualRobotRTC()
Definition: VirtualRobotRTC.cpp:68
void readDataFromInPorts()
Definition: VirtualRobotRTC.cpp:400
boost::shared_ptr< InPortHandler > InPortHandlerPtr
Definition: VirtualRobotPortHandler.h:77
RTC::RTCList * getConnectedRtcs()
Definition: VirtualRobotRTC.cpp:280
boost::shared_ptr< PortHandler > PortHandlerPtr
Definition: VirtualRobotPortHandler.h:43
void outputDataToSimulator(const BodyPtr &body)
Definition: VirtualRobotRTC.cpp:374
Definition: BodyRTCItem.h:24
void createPorts(BridgeConf *bridgeConf)
Definition: VirtualRobotRTC.cpp:75
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
void initialize(Body *simulationBody)
Definition: VirtualRobotRTC.cpp:425
Definition: BridgeConf.h:92
Definition: BridgeConf.h:60
PortHandlerPtr getInPortHandler(const std::string &name)
Definition: VirtualRobotRTC.cpp:233