Controller_impl.h
Go to the documentation of this file.
1 // -*- mode: c++; indent-tabs-mode: t; tab-width: 4; c-basic-offset: 4; -*-
2 /*
3  * Copyright (c) 2008, AIST, the University of Tokyo and General Robotix Inc.
4  * All rights reserved. This program is made available under the terms of the
5  * Eclipse Public License v1.0 which accompanies this distribution, and is
6  * available at http://www.eclipse.org/legal/epl-v10.html
7  * Contributors:
8  * National Institute of Advanced Industrial Science and Technology (AIST)
9  * General Robotix Inc.
10  */
16 #ifndef OPENHRP_CONTROLLER_BRIDGE_CONTROLLER_IMPL_H_INCLUDED
17 #define OPENHRP_CONTROLLER_BRIDGE_CONTROLLER_IMPL_H_INCLUDED
18 
19 #include <string>
20 #include <map>
21 #include <rtm/RTC.h>
22 #include <rtm/RTObject.h>
23 #include <rtm/CorbaNaming.h>
24 #include <rtm/idl/RTCStub.h>
25 
26 #include <hrpCorba/Controller.hh>
27 #include <hrpCorba/ViewSimulator.hh>
28 #include <hrpCorba/DynamicsSimulator.hh>
29 
30 #include "BridgeConf.h"
31 
32 #include "config.h"
33 
34 using namespace OpenHRP;
35 
36 class BridgeConf;
37 class VirtualRobotRTC;
38 
40  : virtual public POA_OpenHRP::Controller
41 {
42 public:
43  Controller_impl(RTC::Manager* rtcManager, BridgeConf* bridgeConf);
44  ~Controller_impl();
45 
46  SensorState& getCurrentSensorState();
47  DblSequence* getLinkDataFromSimulator
48  (const std::string& linkName, DynamicsSimulator::LinkDataType linkDataType);
49  DblSequence* getSensorDataFromSimulator(const std::string& sensorName);
50  ImageData* getCameraImageFromSimulator(int cameraId);
51  DblSequence& getJointDataSeqRef(DynamicsSimulator::LinkDataType linkDataType);
52  void flushJointDataSeqToSimulator(DynamicsSimulator::LinkDataType linkDataType);
53  void flushLinkDataToSimulator(const std::string& linkName,
54  DynamicsSimulator::LinkDataType linkDataType,
55  const DblSequence& linkData);
56 
57  virtual void setDynamicsSimulator(DynamicsSimulator_ptr dynamicsSimulator);
58  virtual void setViewSimulator(ViewSimulator_ptr viewSimulator);
59  void setTimeStep(CORBA::Double _timeStep){
60  timeStep = _timeStep;
61  }
62  double getTimeStep(){
63  return timeStep;
64  }
65 
66  virtual void start();
67  virtual void control();
68  virtual void input();
69  virtual void output();
70  virtual void stop();
71  virtual void destroy();
72 
73  virtual void shutdown();
74  virtual omniObjRef* _do_get_interface(){return _this();}
75  virtual void setModelName(const char* localModelName){ modelName = localModelName;}
76  virtual void initialize();
77  double controlTime;
78 
79 private:
81  RTC::Manager* rtcManager;
82 
83  std::string modelName;
85 
86  typedef std::map<std::string, Port_Service_Var_Type> PortMap;
87 
88  struct RtcInfo
89  {
90  RTC::RTObject_var rtcRef;
93  double timeRate;
95  };
96  typedef boost::shared_ptr<RtcInfo> RtcInfoPtr;
97 
98  typedef std::map<std::string, RtcInfoPtr> RtcInfoMap;
100  typedef std::vector<RtcInfoPtr> RtcInfoVector;
102 
103  RTC::CorbaNaming* naming;
104 
105  DynamicsSimulator_var dynamicsSimulator;
106  ViewSimulator_var viewSimulator;
107 
108  SensorState_var sensorState;
110 
112  bool flushed;
113  DblSequence values;
114  };
115 
116  typedef std::map<DynamicsSimulator::LinkDataType, JointValueSeqInfo> JointValueSeqInfoMap;
118 
119  CameraSequence_var cameras;
120  Camera::CameraParameter_var cparam;
121 
122  void detectRtcs();
123  void makePortMap(RtcInfoPtr& rtcInfo);
124  Controller_impl::RtcInfoPtr addRtcVectorWithConnection(RTC::RTObject_var rtcRef);
125  void setupRtcConnections();
126  int connectPorts(Port_Service_Ptr_Type outPort, Port_Service_Ptr_Type inPort);
127 
128  void activeComponents();
129  void deactiveComponents();
130  void disconnectRtcConnections(PortMap& refPortMap);
131  double timeStep;
132  bool bRestart;
133  void restart();
134 };
135 
136 #endif
VirtualRobotRTC
Definition: VirtualRobotRTC.h:28
Controller_impl::getTimeStep
double getTimeStep()
Definition: Controller_impl.h:62
Controller_impl::controlTime
double controlTime
Definition: Controller_impl.h:77
Controller_impl::naming
RTC::CorbaNaming * naming
Definition: Controller_impl.h:103
Controller_impl::sensorState
SensorState_var sensorState
Definition: Controller_impl.h:108
Controller_impl::_do_get_interface
virtual omniObjRef * _do_get_interface()
Definition: Controller_impl.h:74
Controller_impl::RtcInfo::timeRate
double timeRate
Definition: Controller_impl.h:93
Controller_impl::modelName
std::string modelName
Definition: Controller_impl.h:83
Controller_impl::rtcManager
RTC::Manager * rtcManager
Definition: Controller_impl.h:81
Controller_impl::RtcInfoPtr
boost::shared_ptr< RtcInfo > RtcInfoPtr
Definition: Controller_impl.h:96
Controller_impl::JointValueSeqInfo::flushed
bool flushed
Definition: Controller_impl.h:112
Controller_impl::sensorStateUpdated
bool sensorStateUpdated
Definition: Controller_impl.h:109
Controller_impl::RtcInfo::execContext
ExtTrigExecutionContextService_Var_Type execContext
Definition: Controller_impl.h:92
BridgeConf.h
Controller_impl::rtcInfoMap
RtcInfoMap rtcInfoMap
Definition: Controller_impl.h:99
Controller_impl::JointValueSeqInfo::values
DblSequence values
Definition: Controller_impl.h:113
start
png_size_t start
Definition: png.h:1493
Controller_impl::cparam
Camera::CameraParameter_var cparam
Definition: Controller_impl.h:120
Controller_impl::virtualRobotRTC
VirtualRobotRTC * virtualRobotRTC
Definition: Controller_impl.h:84
config.h
destroy
int destroy(gz_stream *s)
Definition: gzio.c:355
Controller_impl::RtcInfo::rtcRef
RTC::RTObject_var rtcRef
Definition: Controller_impl.h:90
Controller_impl::timeStep
double timeStep
Definition: Controller_impl.h:131
Controller_impl::bridgeConf
BridgeConf * bridgeConf
Definition: Controller_impl.h:80
OpenHRP
Definition: ConstraintForceSolver.h:19
Controller_impl::bRestart
bool bRestart
Definition: Controller_impl.h:132
Controller_impl::dynamicsSimulator
DynamicsSimulator_var dynamicsSimulator
Definition: Controller_impl.h:105
Controller_impl::outputJointValueSeqInfos
JointValueSeqInfoMap outputJointValueSeqInfos
Definition: Controller_impl.h:117
Controller_impl::JointValueSeqInfo
Definition: Controller_impl.h:111
output
output(gif_dest_ptr dinfo, int code)
Definition: wrgif.c:105
Controller_impl::RtcInfo::timeRateCounter
double timeRateCounter
Definition: Controller_impl.h:94
Controller_impl::RtcInfoMap
std::map< std::string, RtcInfoPtr > RtcInfoMap
Definition: Controller_impl.h:98
Controller_impl::RtcInfoVector
std::vector< RtcInfoPtr > RtcInfoVector
Definition: Controller_impl.h:100
Controller_impl::rtcInfoVector
RtcInfoVector rtcInfoVector
Definition: Controller_impl.h:101
Controller_impl::RtcInfo::portMap
PortMap portMap
Definition: Controller_impl.h:91
Controller_impl::JointValueSeqInfoMap
std::map< DynamicsSimulator::LinkDataType, JointValueSeqInfo > JointValueSeqInfoMap
Definition: Controller_impl.h:116
Controller_impl
Definition: Controller_impl.h:39
Controller_impl::setTimeStep
void setTimeStep(CORBA::Double _timeStep)
Definition: Controller_impl.h:59
Controller_impl::cameras
CameraSequence_var cameras
Definition: Controller_impl.h:119
BridgeConf
Definition: BridgeConf.h:87
Controller_impl::setModelName
virtual void setModelName(const char *localModelName)
Definition: Controller_impl.h:75
Port_Service_Ptr_Type
RTC::PortService_ptr Port_Service_Ptr_Type
Definition: server/ControllerBridge/config.h:29
Controller_impl::RtcInfo
Definition: Controller_impl.h:88
Controller_impl::PortMap
std::map< std::string, Port_Service_Var_Type > PortMap
Definition: Controller_impl.h:86
Controller_impl::viewSimulator
ViewSimulator_var viewSimulator
Definition: Controller_impl.h:106
ExtTrigExecutionContextService_Var_Type
OpenRTM::ExtTrigExecutionContextService_var ExtTrigExecutionContextService_Var_Type
Definition: server/ControllerBridge/config.h:31


openhrp3
Author(s): AIST, General Robotix Inc., Nakamura Lab of Dept. of Mechano Informatics at University of Tokyo
autogenerated on Wed Sep 7 2022 02:51:02