cisst-saw
Loading...
Searching...
No Matches
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-2022 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
25#include <sawConstraintController/mtsVFDataSensorCompliance.h>
27#include <sawConstraintController/prmKinematicsState.h>
28#include <sawConstraintController/prmSensorState.h>
29#include <sawConstraintController/prmOffsetState.h>
34#include <typeinfo>
37#include <sawConstraintController/mtsVFDataJointLimits.h>
39#include <sawConstraintController/mtsVFDataRCM.h>
45
46// Always include last!
48
52{
54
55public:
56
57 //Current mode of controller (what controllerOutput represents)
58 //The possible values of MODE refer to:
59 //1. Treating controllerOutput as an incremental joint position
60 //2. Treating controllerOutput as an incremental cartesian position
62
66
70 Optimizer(num_joints)
71 {
72 ControllerMode = cm;
73 }
74
76 {
77 std::map<std::string,mtsVFBase *>::iterator itVF;
78 for(itVF = VFMap.begin(); itVF != VFMap.end(); itVF++)
79 {
80 delete itVF->second;
81 }
82
83 std::map<std::string,prmKinematicsState *>::iterator itKin;
84 for(itKin = Kinematics.begin(); itKin != Kinematics.end(); itKin++)
85 {
86 delete itKin->second;
87 }
88
89 std::map<std::string,prmSensorState *>::iterator itSens;
90 for(itSens = Sensors.begin(); itSens != Sensors.end(); itSens++)
91 {
92 delete itSens->second;
93 }
94 }
95
97
98 bool ActivateVF(const std::string & s);
99
101
103 void AddVFJointVelocity(const mtsVFDataBase & vf);
104
106 void AddVFJointPosition(const mtsVFDataBase & vf);
107
109 void AddVFCartesianTranslation(const mtsVFDataBase & vf);
110
112 void AddVFCartesianOrientation(const mtsVFDataBase & vf);
113
115 void AddVFSensorCompliance(mtsVFDataSensorCompliance & vf);
116
118 void AddVFPlane(mtsVFDataPlane &vf);
119
120 void AddVFFollow(mtsVFDataBase & vf);
121
122 void AddVFCylinder(mtsVFDataCylinder & vf);
123
124 void AddVFRCM(const mtsVFDataRCM & vf);
125
126 void AddVFLimits(mtsVFDataJointLimits & vf);
127
128 void AddVFCartesianLimits(const mtsVFDataJointLimits & vf);
129
131 void SetSensor(const prmSensorState & sen);
132
134 void SetSensorOffset(const prmOffsetState & sen);
135
137 void RemoveSensorFromMap(const std::string & senName);
138
140 void LookupBaseData(void);
141
143 void SetKinematics(const prmKinematicsState & kin);
144
146 void RemoveKinematicsFromMap(const std::string & kinName);
147
149 void UpdateOptimizer(double TickTime);
150
153
154 //map between string names and pointers to virtual fixtures
155 std::map<std::string, mtsVFBase *> VFMap;
156
157 //map between string names and pointers to kinematics objects
158 std::map<std::string, prmKinematicsState *> Kinematics;
159
160 //map between string names and pointers to sensor objects
161 std::map<std::string, prmSensorState *> Sensors;
162
163 //robot joint state
165
166 //control optimizer variables
168
169 bool SetVFData(const mtsVFDataBase & data);
170
171private:
172 // round vector to 6 decimal places
173 inline void round6(vctDoubleVec & dq){
174 for (auto it = dq.begin(); it != dq.end(); it ++){
175 *it = std::round(*it*1E6)/1E6;
176 }
177 }
178
179};
180
182
183#endif // _mtsVFController_h
Base class for high level objects.
Definition cmnGenericObject.h:53
CONTROLLERMODE
Definition mtsVFBase.h:39
mtsVFController: A class that is responsible for managing the virtual fixtures, relevant state data,...
Definition mtsVFController.h:52
void AddVFLimits(mtsVFDataJointLimits &vf)
void AddVFSensorCompliance(mtsVFDataSensorCompliance &vf)
Adds/Updates a vf data object.
void AddVFCartesianLimits(const mtsVFDataJointLimits &vf)
nmrConstraintOptimizer GetOptimizer()
Definition mtsVFController.h:96
void AddVFFollow(mtsVFDataBase &vf)
void RemoveSensorFromMap(const std::string &senName)
Removes a sensor from the map.
nmrConstraintOptimizer Optimizer
Definition mtsVFController.h:167
void AddVFJointPosition(const mtsVFDataBase &vf)
Adds/Updates a vf data object.
mtsVFController()
Definition mtsVFController.h:65
void SetSensor(const prmSensorState &sen)
Adds/Updates a sensor to the map.
void AddVFCartesianTranslation(const mtsVFDataBase &vf)
Adds/Updates a vf data object.
prmStateJoint JointState
Definition mtsVFController.h:164
void AddVFRCM(const mtsVFDataRCM &vf)
mtsVFController(size_t num_joints, mtsVFBase::CONTROLLERMODE cm)
Definition mtsVFController.h:69
void DeactivateAll()
void RemoveKinematicsFromMap(const std::string &kinName)
Removes a kinematics object from the map.
void AddVFPlane(mtsVFDataPlane &vf)
Adds/Updates a vf plane object.
void SetSensorOffset(const prmOffsetState &sen)
Adds/Updates a sensor to the map.
void LookupBaseData(void)
Finds the "base" object for kinematics and sensor data that has an offset.
nmrConstraintOptimizer::STATUS Solve(vctDoubleVec &dq)
Solves the constraint optimization problem and fills the result into the parameter.
~mtsVFController()
Definition mtsVFController.h:75
bool SetVFData(const mtsVFDataBase &data)
void UpdateOptimizer(double TickTime)
Updates the robot state data and control optimizer.
bool ActivateVF(const std::string &s)
std::map< std::string, prmSensorState * > Sensors
Definition mtsVFController.h:161
void AddVFCartesianOrientation(const mtsVFDataBase &vf)
Adds/Updates a vf data object.
void AddVFCylinder(mtsVFDataCylinder &vf)
std::map< std::string, mtsVFBase * > VFMap
Definition mtsVFController.h:155
mtsVFBase::CONTROLLERMODE ControllerMode
Definition mtsVFController.h:61
void AddVFJointVelocity(const mtsVFDataBase &vf)
Adds/Updates a vf data object.
std::map< std::string, prmKinematicsState * > Kinematics
Definition mtsVFController.h:158
void SetKinematics(const prmKinematicsState &kin)
Adds/Updates a kinematics object to the map.
nmrConstraintOptimizer: A class that makes using the constraint control algorithm more efficient
Definition nmrConstraintOptimizer.h:35
STATUS
Definition nmrConstraintOptimizer.h:78
Definition prmStateJoint.h:35
#define CMN_DECLARE_SERVICES_INSTANTIATION(className)
Definition cmnClassRegisterMacros.h:199
const int CMN_NO_DYNAMIC_CREATION
Definition cmnClassRegisterMacros.h:325
#define CMN_DECLARE_SERVICES(hasDynamicCreation, lod)
Definition cmnClassRegisterMacros.h:113
#define CISST_EXPORT
Definition cmnExportMacros.h:50
#define CMN_LOG_LOD_RUN_VERBOSE
Definition cmnLogLoD.h:95
vctDynamicVector< double > vctDoubleVec
Definition vctDynamicVectorTypes.h:37