cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mtsVFController.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): Paul Wilkening
6  Created on: 2014
7 
8  (C) Copyright 2014 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 #ifndef _mtsVFController_h
20 #define _mtsVFController_h
21 
23 
27 #include <sawConstraintController/mtsVFDataSensorCompliance.h>
29 #include <sawConstraintController/prmKinematicsState.h>
30 #include <sawConstraintController/prmSensorState.h>
31 #include <sawConstraintController/prmOffsetState.h>
36 #include <typeinfo>
37 
38 // Always include last!
40 
44 {
46 
47 protected:
48 
49  //map between string names and pointers to virtual fixtures
50  std::map<std::string, mtsVFBase *> VFMap;
51 
52  //map between string names and pointers to kinematics objects
53  std::map<std::string, prmKinematicsState *> Kinematics;
54 
55  //map between string names and pointers to sensor objects
56  std::map<std::string, prmSensorState *> Sensors;
57 
58  //robot joint state
59  prmJointState JointState;
60 
61  //control optimizer variables
63 
64  //Current mode of controller (what controllerOutput represents)
65  //The possible values of MODE refer to:
66  //1. Treating controllerOutput as an incremental joint position
67  //2. Treating controllerOutput as an incremental cartesian position
69 
70 public:
71 
75 
79  Optimizer(num_joints)
80  {
81  ControllerMode = cm;
82  }
83 
85  {
86  std::map<std::string,mtsVFBase *>::iterator itVF;
87  for(itVF = VFMap.begin(); itVF != VFMap.end(); itVF++)
88  {
89  delete itVF->second;
90  }
91 
92  std::map<std::string,prmKinematicsState *>::iterator itKin;
93  for(itKin = Kinematics.begin(); itKin != Kinematics.end(); itKin++)
94  {
95  delete itKin->second;
96  }
97 
98  std::map<std::string,prmSensorState *>::iterator itSens;
99  for(itSens = Sensors.begin(); itSens != Sensors.end(); itSens++)
100  {
101  delete itSens->second;
102  }
103  }
104 
106 
107 protected:
108 
110  void AddVFJointVelocity(const mtsVFDataBase & vf);
111 
113  void AddVFJointPosition(const mtsVFDataBase & vf);
114 
116  void AddVFCartesianTranslation(const mtsVFDataBase & vf);
117 
119  void AddVFCartesianOrientation(const mtsVFDataBase & vf);
120 
122  void AddVFSensorCompliance(const mtsVFDataSensorCompliance & vf);
123 
125  void AddVFPlane(const mtsVFDataPlane &vf);
126 
127  void AddVFFollowPath(const mtsVFDataBase & vf);
128 
130  void SetSensor(const prmSensorState & sen);
131 
133  void SetSensorOffset(const prmOffsetState & sen);
134 
136  void RemoveSensorFromMap(const std::string & senName);
137 
139  void SetMode(const mtsVFBase::CONTROLLERMODE & m);
140 
142  void LookupBaseData(void);
143 
145  void SetKinematics(const prmKinematicsState & kin);
146 
148  void RemoveKinematicsFromMap(const std::string & kinName);
149 
151  void UpdateOptimizer(double TickTime);
152 
155 
157  void IncrementUsers(const std::vector<std::string> kin_names, const std::vector<std::string> sensor_names);
158 
160  void DecrementUsers(const std::vector<std::string> kin_names, const std::vector<std::string> sensor_names);
161 
162  bool SetVFData(const mtsVFDataBase & data, const std::type_info & type);
163 
164  bool SetVFDataSensorCompliance(const mtsVFDataSensorCompliance & data, const std::type_info & type);
165 
166  bool SetVFDataPlane(const mtsVFDataPlane & data, const std::type_info & type);
167 
168 };
169 
171 
172 #endif // _mtsVFController_h
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
mtsVFController: A class that is responsible for managing the virtual fixtures, relevant state data...
Definition: mtsVFController.h:43
std::map< std::string, prmSensorState * > Sensors
Definition: mtsVFController.h:56
mtsVFController()
Definition: mtsVFController.h:74
nmrConstraintOptimizer: A class that makes using the constraint control algorithm more efficient ...
Definition: nmrConstraintOptimizer.h:34
Base class for high level objects.
Definition: cmnGenericObject.h:51
std::map< std::string, prmKinematicsState * > Kinematics
Definition: mtsVFController.h:53
#define CMN_LOG_LOD_RUN_VERBOSE
Definition: cmnLogLoD.h:95
mtsVFController(size_t num_joints, mtsVFBase::CONTROLLERMODE cm)
Definition: mtsVFController.h:78
mtsVFBase::CONTROLLERMODE ControllerMode
Definition: mtsVFController.h:68
#define CMN_DECLARE_SERVICES(hasDynamicCreation, lod)
Definition: cmnClassRegisterMacros.h:116
prmJointState JointState
Definition: mtsVFController.h:59
std::map< std::string, mtsVFBase * > VFMap
Definition: mtsVFController.h:50
~mtsVFController()
Definition: mtsVFController.h:84
nmrConstraintOptimizer GetOptimizer()
Definition: mtsVFController.h:105
CMN_DECLARE_SERVICES_INSTANTIATION(mtsVFController)
CONTROLLERMODE
Definition: mtsVFBase.h:39
STATUS
Definition: nmrConstraintOptimizer.h:77
const int CMN_NO_DYNAMIC_CREATION
Definition: cmnClassRegisterMacros.h:328
nmrConstraintOptimizer Optimizer
Definition: mtsVFController.h:62