cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mtsIntuitiveResearchKitConsole.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3 
4 /*
5  Author(s): Anton Deguet
6  Created on: 2013-05-17
7 
8  (C) Copyright 2013-2015 Johns Hopkins University (JHU), All Rights Reserved.
9 
10 --- begin cisst license - do not edit ---
11 
12 This software is provided "as is" under an open source license, with
13 no warranty. The complete license can be found in license.txt and
14 http://www.cisst.org/cisst/license.txt.
15 
16 --- end cisst license ---
17 */
18 
19 
20 #ifndef _mtsIntuitiveResearchKitConsole_h
21 #define _mtsIntuitiveResearchKitConsole_h
22 
26 
27 namespace dvrk {
28  class console;
29 }
30 
32 {
33  CMN_DECLARE_SERVICES(CMN_NO_DYNAMIC_CREATION, CMN_LOG_ALLOW_DEFAULT);
34 
35 public:
37  friend class dvrk::console;
38 
39  class Arm {
40  public:
42 
45  friend class dvrk::console;
46 
47  Arm(const std::string & name,
48  const std::string & ioComponentName);
49 
53  void ConfigurePID(const std::string & configFile,
54  const double & periodInSeconds = 0.0 * cmn_ms);
55 
57  void ConfigureArm(const ArmType armType,
58  const std::string & configFile,
59  const double & periodInSeconds = 0.5 * cmn_ms,
60  mtsComponent * existingArm = 0);
61 
63  bool Connect(void);
64 
66  const std::string & Name(void) const;
67  const std::string & IOComponentName(void) const;
68  const std::string & PIDComponentName(void) const;
69 
70  protected:
71  std::string mName;
73 
74  // low level
75  std::string mIOComponentName;
76  std::string mIOConfigurationFile;
77  // PID
78  std::string mPIDComponentName;
79  std::string mPIDConfigurationFile;
80  // arm
81  std::string mArmConfigurationFile;
82  // base frame
85 
90 
91  // this is used only by PSMs and ECM
95 
97  if (button.Type() == prmEventButton::PRESSED) {
98  SUJClutch(true);
99  } else {
100  SUJClutch(false);
101  }
102  }
103  };
104 
105  class TeleopPSM {
106  public:
110  friend class dvrk::console;
111 
112  TeleopPSM(const std::string & name,
113  const std::string & masterName,
114  const std::string & slaveName,
115  const std::string & consoleName);
116 
118  void ConfigureTeleop(const TeleopPSMType type,
119  const vctMatRot3 & orientation,
120  const double & periodInSeconds = 2.0 * cmn_ms);
121 
123  bool Connect(void);
124 
126  const std::string & Name(void) const;
127 
128  protected:
129  std::string mName;
131  std::string mMasterName;
132  std::string mSlaveName;
133  std::string mConsoleName;
137  };
138 
139  mtsIntuitiveResearchKitConsole(const std::string & componentName);
141 
145  void Configure(const std::string & filename);
146 
150  const bool & Configured(void) const;
151 
152  void Startup(void);
153  void Run(void);
154  void Cleanup(void);
155 
156  bool AddArm(Arm * newArm);
157  bool AddArm(mtsComponent * genericArm, const Arm::ArmType armType);
158  std::string GetArmIOComponentName(const std::string & armName);
159 
160  // to be deprecated
161  bool AddTeleOperation(const std::string & name,
162  const std::string & masterName,
163  const std::string & slaveName);
164 
165  bool AddFootpedalInterfaces(void);
166  bool ConnectFootpedalInterfaces(void);
167 
168  bool Connect(void);
169 
170 protected:
172 
173  typedef std::map<std::string, Arm *> ArmList;
175 
176  typedef std::map<std::string, TeleopPSM *> TeleopList;
178 
180  bool ConfigureArmJSON(const Json::Value & jsonArm,
181  const std::string & ioComponentName,
182  const cmnPath & configPath);
183  bool AddArmInterfaces(Arm * arm);
184 
185  bool ConfigurePSMTeleopJSON(const Json::Value & jsonTeleop);
186  bool AddTeleopInterfaces(TeleopPSM * teleop);
187 
188 
189  void SetRobotsControlState(const std::string & newState);
190  void TeleopEnable(const bool & enable);
191 
193  void ClutchEventHandler(const prmEventButton & button);
194  void CameraEventHandler(const prmEventButton & button);
195  void OperatorPresentEventHandler(const prmEventButton & button);
196  struct {
200  } ConsoleEvents;
201  std::string mIOComponentName;
204 
205  // Functions for events
206  struct {
210  } MessageEvents;
211 
212  void ErrorEventHandler(const std::string & message);
213  void WarningEventHandler(const std::string & message);
214  void StatusEventHandler(const std::string & message);
215 
216  void ECMManipClutchEventHandler(const prmEventButton & button);
217 
218  // Getting position from ECM and ECM SUJ to create base frame event for all other SUJs
223  void SUJECMBaseFrameHandler(const prmPositionCartesianGet & baseFrameParam);
224 };
225 
227 
228 #endif // _mtsIntuitiveResearchKitConsole_h
TeleopPSMType mType
Definition: mtsIntuitiveResearchKitConsole.h:130
std::string mBaseFrameInterfaceName
Definition: mtsIntuitiveResearchKitConsole.h:84
mtsFunctionWrite mECMBaseFrameEvent
Definition: mtsIntuitiveResearchKitConsole.h:222
void StatusEventHandler(const std::string &message)
Definition: mtsIntuitiveResearchKitConsole.h:41
Definition: mtsFunctionRead.h:37
const std::string & Name(void) const
friend class dvrk::console
Definition: mtsIntuitiveResearchKitConsole.h:45
std::string mPIDComponentName
Definition: mtsIntuitiveResearchKitConsole.h:78
void CameraEventHandler(const prmEventButton &button)
std::string mMasterName
Definition: mtsIntuitiveResearchKitConsole.h:131
Defines a task with a Run method trigger by signals (any queued command or event).
Definition: mtsInterfaceRequired.h:85
std::string mBaseFrameComponentName
Definition: mtsIntuitiveResearchKitConsole.h:83
std::string mConsoleName
Definition: mtsIntuitiveResearchKitConsole.h:133
Search path to find a file. This class contains a list of directories used to locate a file...
Definition: cmnPath.h:68
std::string mSlaveName
Definition: mtsIntuitiveResearchKitConsole.h:132
void ConfigureTeleop(const TeleopPSMType type, const vctMatRot3 &orientation, const double &periodInSeconds=2.0 *cmn_ms)
struct mtsIntuitiveResearchKitConsole::@185 ConsoleEvents
bool ConfigureArmJSON(const Json::Value &jsonArm, const std::string &ioComponentName, const cmnPath &configPath)
Definition: mtsIntuitiveResearchKitConsole.h:41
std::string mIOComponentName
Definition: mtsIntuitiveResearchKitConsole.h:75
mtsInterfaceRequired * SUJInterfaceRequiredToSUJ
Definition: mtsIntuitiveResearchKitConsole.h:93
std::string mIOComponentName
Definition: mtsIntuitiveResearchKitConsole.h:201
std::string mPIDConfigurationFile
Definition: mtsIntuitiveResearchKitConsole.h:79
const std::string & PIDComponentName(void) const
bool AddTeleopInterfaces(TeleopPSM *teleop)
void WarningEventHandler(const std::string &message)
TeleopPSMType
Definition: mtsIntuitiveResearchKitConsole.h:107
mtsFunctionWrite Status
Definition: mtsIntuitiveResearchKitConsole.h:207
void SUJECMBaseFrameHandler(const prmPositionCartesianGet &baseFrameParam)
Definition: prmEventButton.h:37
friend class dvrk::console
Definition: mtsIntuitiveResearchKitConsole.h:37
Definition: mtsTaskFromSignal.h:40
std::string mArmConfigurationFile
Definition: mtsIntuitiveResearchKitConsole.h:81
void Configure(const std::string &filename)
void OperatorPresentEventHandler(const prmEventButton &button)
mtsFunctionWrite Camera
Definition: mtsIntuitiveResearchKitConsole.h:198
std::map< std::string, Arm * > ArmList
Definition: mtsIntuitiveResearchKitConsole.h:173
std::string mOperatorPresentInterface
Definition: mtsIntuitiveResearchKitConsole.h:203
mtsFunctionWrite Clutch
Definition: mtsIntuitiveResearchKitConsole.h:197
Definition: mtsIntuitiveResearchKitConsole.h:41
void SUJClutchEventHandlerFromIO(const prmEventButton &button)
Definition: mtsIntuitiveResearchKitConsole.h:96
Definition: mtsIntuitiveResearchKitConsole.h:41
Definition: prmEventButton.h:43
void ClutchEventHandler(const prmEventButton &button)
Definition: mtsIntuitiveResearchKitConsole.h:105
std::string mName
Definition: mtsIntuitiveResearchKitConsole.h:71
Definition: mtsComponent.h:150
mtsFunctionWrite Enable
Definition: mtsIntuitiveResearchKitConsole.h:134
bool ConfigurePSMTeleopJSON(const Json::Value &jsonTeleop)
mtsInterfaceRequired * mSUJECMInterfaceRequired
Definition: mtsIntuitiveResearchKitConsole.h:219
Definition: mtsIntuitiveResearchKitConsole.h:39
std::string GetArmIOComponentName(const std::string &armName)
TeleopPSM(const std::string &name, const std::string &masterName, const std::string &slaveName, const std::string &consoleName)
bool mConfigured
Definition: mtsIntuitiveResearchKitConsole.h:171
mtsInterfaceRequired * ArmInterfaceRequired
Definition: mtsIntuitiveResearchKitConsole.h:89
void ErrorEventHandler(const std::string &message)
std::string mOperatorPresentComponent
Definition: mtsIntuitiveResearchKitConsole.h:202
void ECMManipClutchEventHandler(const prmEventButton &button)
ArmType mType
Definition: mtsIntuitiveResearchKitConsole.h:72
void SetRobotsControlState(const std::string &newState)
const double cmn_ms
Definition: cmnUnits.h:190
mtsFunctionWrite ManipClutch
Definition: mtsIntuitiveResearchKitConsole.h:135
Definition: mtsIntuitiveResearchKitConsole.h:107
Definition: mtsInterfaceProvided.h:96
ArmType
Definition: mtsIntuitiveResearchKitConsole.h:41
struct mtsIntuitiveResearchKitConsole::@186 MessageEvents
bool mHasFootpedals
Definition: mtsIntuitiveResearchKitConsole.h:192
mtsInterfaceProvided * mECMBaseFrameInterfaceProvided
Definition: mtsIntuitiveResearchKitConsole.h:220
const std::string & Name(void) const
Definition: mtsIntuitiveResearchKitConsole.h:31
mtsFunctionWrite OperatorPresent
Definition: mtsIntuitiveResearchKitConsole.h:199
const std::string & IOComponentName(void) const
mtsInterfaceRequired * SUJInterfaceRequiredFromIO
Definition: mtsIntuitiveResearchKitConsole.h:92
mtsFunctionWrite Warning
Definition: mtsIntuitiveResearchKitConsole.h:208
Arm(const std::string &name, const std::string &ioComponentName)
void ConfigureArm(const ArmType armType, const std::string &configFile, const double &periodInSeconds=0.5 *cmn_ms, mtsComponent *existingArm=0)
mtsInterfaceRequired * InterfaceRequired
Definition: mtsIntuitiveResearchKitConsole.h:136
Definition: mtsIntuitiveResearchKitConsole.h:107
Definition: mtsIntuitiveResearchKitConsole.h:41
CMN_DECLARE_SERVICES_INSTANTIATION(mtsIntuitiveResearchKitConsole)
Button Event payload.
mtsFunctionWrite Error
Definition: mtsIntuitiveResearchKitConsole.h:209
mtsInterfaceRequired * PIDInterfaceRequired
Definition: mtsIntuitiveResearchKitConsole.h:88
Definition: mtsFunctionWrite.h:37
ArmList mArms
Definition: mtsIntuitiveResearchKitConsole.h:174
std::map< std::string, TeleopPSM * > TeleopList
Definition: mtsIntuitiveResearchKitConsole.h:176
friend class dvrk::console
Definition: mtsIntuitiveResearchKitConsole.h:110
mtsFunctionWrite SUJClutch
Definition: mtsIntuitiveResearchKitConsole.h:94
const int CMN_NO_DYNAMIC_CREATION
Definition: cmnClassRegisterMacros.h:328
void TeleopEnable(const bool &enable)
mtsInterfaceRequired * IOInterfaceRequired
Definition: mtsIntuitiveResearchKitConsole.h:87
mtsFunctionRead mGetPositionCartesianLocalFromECM
Definition: mtsIntuitiveResearchKitConsole.h:221
mtsIntuitiveResearchKitConsole(const std::string &componentName)
virtual ~mtsIntuitiveResearchKitConsole()
Definition: mtsIntuitiveResearchKitConsole.h:140
std::string mIOConfigurationFile
Definition: mtsIntuitiveResearchKitConsole.h:76
const bool & Configured(void) const
Definition: mtsIntuitiveResearchKitConsole.h:41
#define CMN_LOG_ALLOW_DEFAULT
Definition: cmnLogLoD.h:76
Definition: mtsIntuitiveResearchKitConsole.h:41
Definition: mtsIntuitiveResearchKitConsoleQt.h:29
Definition: mtsIntuitiveResearchKitConsole.h:41
TeleopList mTeleops
Definition: mtsIntuitiveResearchKitConsole.h:177
mtsFunctionWrite SetRobotControlState
Definition: mtsIntuitiveResearchKitConsole.h:86
std::string mName
Definition: mtsIntuitiveResearchKitConsole.h:129
Definition: mtsIntuitiveResearchKitConsole.h:41
void ConfigurePID(const std::string &configFile, const double &periodInSeconds=0.0 *cmn_ms)
Definition: prmPositionCartesianGet.h:37
bool AddTeleOperation(const std::string &name, const std::string &masterName, const std::string &slaveName)