cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mtsIntuitiveResearchKitArm.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-15
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 #ifndef _mtsIntuitiveResearchKitArm_h
20 #define _mtsIntuitiveResearchKitArm_h
21 
30 
32 #include <cisstRobot/robLSPB.h>
33 
34 #include <sawIntuitiveResearchKit/mtsIntuitiveResearchKitArmTypes.h>
35 
37 {
38  CMN_DECLARE_SERVICES(CMN_NO_DYNAMIC_CREATION, CMN_LOG_ALLOW_DEFAULT);
39 
40 public:
41  mtsIntuitiveResearchKitArm(const std::string & componentName, const double periodInSeconds);
43  virtual inline ~mtsIntuitiveResearchKitArm() {}
44 
45  void Configure(const std::string & filename);
46  void Startup(void);
47  void Run(void);
48  void Cleanup(void);
49 
50 protected:
51 
54  virtual void Init(void);
55 
59  virtual void SetState(const mtsIntuitiveResearchKitArmTypes::RobotStateType & newState) = 0;
60  virtual void SetRobotControlState(const std::string & state) = 0;
62  void GetRobotControlState(std::string & state) const;
63  bool CurrentStateIs(const mtsIntuitiveResearchKitArmTypes::RobotStateType & state);
64 
66  virtual void GetRobotData(void);
67 
69  virtual void RunHomingPower(void);
70 
72  virtual void RunHomingCalibrateArm(void) = 0;
73 
75  virtual void RunPositionJoint(void);
76  virtual void RunPositionGoalJoint(void);
77  virtual void RunPositionCartesian(void);
78  virtual void RunPositionGoalCartesian(void);
79 
81  inline virtual void RunArmSpecific(void) {};
82 
84  virtual void SetPositionJointLocal(const vctDoubleVec & newPosition);
85 
87  virtual void SetPositionJoint(const prmPositionJointSet & newPosition);
88  virtual void SetPositionGoalJoint(const prmPositionJointSet & newPosition);
89  virtual void SetPositionCartesian(const prmPositionCartesianSet & newPosition);
90  virtual void SetPositionGoalCartesian(const prmPositionCartesianSet & newPosition);
91 
93  virtual void SetBaseFrame(const prmPositionCartesianGet & newBaseFrame);
94 
96  virtual void JointLimitEventHandler(const vctBoolVec & flags);
97 
99  void ErrorEventHandler(const std::string & message);
100 
102  virtual size_t NumberOfAxes(void) const = 0; // used IO: ECM 4, PSM 7, MTM 8
103  virtual size_t NumberOfJoints(void) const = 0; // used PID: ECM 4, PSM 7, MTM 7
104  virtual size_t NumberOfJointsKinematics(void) const = 0; // used for inverse kinematics: ECM 4, PSM 6, MTM 7
105  virtual size_t NumberOfBrakes(void) const = 0; // ECM 3, PSM 0, MTM 0
106 
107  virtual bool UsePIDTrackingError(void) const = 0; // ECM true, PSM false, MTM false
108  inline virtual bool UsePotsForSafetyCheck(void) const {
109  return true;
110  }
111 
113  const vctFrm4x4 & cartesianGoal) = 0;
114 
115  // Interface to PID component
117  struct {
131  } PID;
132 
133  // Interface to IO component
149  } RobotIO;
150 
151  // Interface to SUJ component
153 
154  // Main provided interface
156 
157  // Functions for events
158  struct {
163  } MessageEvents;
164 
165  // Cache cartesian goal position
167  bool IsGoalSet;
168 
169  // internal kinematics
174 
175  // with base frame included
180 
181  // joints
187 
191 
193 
194  // Velocities
197 
200 
201  // Base frame
204 
205  mtsIntuitiveResearchKitArmTypes::RobotStateType RobotState;
206 
207  struct {
215  double EndTime; // time should be set to 0.0 if there is no on-going trajectory
216  mtsFunctionWrite GoalReachedEvent; // sends true if goal reached, false otherwise
217  } JointTrajectory;
218 
220 
221  // Home Action
222  double HomingTimer;
225 
226  unsigned int mCounter;
227 };
228 
230 
231 #endif // _mtsIntuitiveResearchKitArm_h
Definition: prmPositionJointGet.h:35
mtsFunctionRead GetPositionJoint
Definition: mtsIntuitiveResearchKitArm.h:119
bool HomingPowerRequested
Definition: mtsIntuitiveResearchKitArm.h:223
Definition: prmVelocityJointGet.h:39
vctFrm4x4 CartesianGetLocal
Definition: mtsIntuitiveResearchKitArm.h:171
mtsFunctionWrite SetPotsToEncodersTolerance
Definition: mtsIntuitiveResearchKitArm.h:146
Definition: robManipulator.h:34
mtsFunctionWrite EnableTorqueMode
Definition: mtsIntuitiveResearchKitArm.h:126
mtsInterfaceProvided * RobotInterface
Definition: mtsIntuitiveResearchKitArm.h:155
double HomingTimer
Definition: mtsIntuitiveResearchKitArm.h:222
virtual size_t NumberOfAxes(void) const =0
Definition: mtsFunctionRead.h:37
prmPositionCartesianGet CartesianGetLocalDesiredParam
Definition: mtsIntuitiveResearchKitArm.h:172
Definition: mtsIntuitiveResearchKitArm.h:135
robLSPB LSPB
Definition: mtsIntuitiveResearchKitArm.h:208
virtual size_t NumberOfJoints(void) const =0
mtsFunctionRead GetAnalogInputPosSI
Definition: mtsIntuitiveResearchKitArm.h:143
vctFrm4x4 BaseFrame
Definition: mtsIntuitiveResearchKitArm.h:202
virtual void RunHomingCalibrateArm(void)=0
vctDoubleVec JointVelocityGet
Definition: mtsIntuitiveResearchKitArm.h:190
bool HomingCalibrateArmStarted
Definition: mtsIntuitiveResearchKitArm.h:224
mtsFunctionVoid BiasEncoder
Definition: mtsIntuitiveResearchKitArm.h:141
prmVelocityCartesianGet CartesianVelocityGetParam
Definition: mtsIntuitiveResearchKitArm.h:196
mtsFunctionWrite SetPositionJoint
Definition: mtsIntuitiveResearchKitArm.h:123
prmPositionCartesianGet CartesianGetLocalParam
Definition: mtsIntuitiveResearchKitArm.h:170
mtsIntuitiveResearchKitArm(const std::string &componentName, const double periodInSeconds)
Definition: mtsIntuitiveResearchKitArm.h:36
Definition: mtsInterfaceRequired.h:85
void ErrorEventHandler(const std::string &message)
prmVelocityJointGet JointVelocityGetParam
robot current joint velocity
Definition: mtsIntuitiveResearchKitArm.h:189
void GetRobotControlState(std::string &state) const
vctDoubleVec GoalTolerance
Definition: mtsIntuitiveResearchKitArm.h:214
mtsFunctionWrite Error
Definition: mtsIntuitiveResearchKitArm.h:161
mtsFunctionWrite UsePotsForSafetyCheck
Definition: mtsIntuitiveResearchKitArm.h:145
prmStateJoint StateJointParam
Definition: mtsIntuitiveResearchKitArm.h:192
Definition: mtsTaskPeriodic.h:38
Definition: mtsFunctionVoid.h:36
CMN_DECLARE_SERVICES_INSTANTIATION(mtsIntuitiveResearchKitArm)
Errno
Definition: robManipulator.h:43
vctDoubleVec JointSet
Definition: mtsIntuitiveResearchKitArm.h:186
virtual void SetPositionJointLocal(const vctDoubleVec &newPosition)
virtual void JointLimitEventHandler(const vctBoolVec &flags)
prmPositionCartesianSet CartesianSetParam
Definition: mtsIntuitiveResearchKitArm.h:166
bool CurrentStateIs(const mtsIntuitiveResearchKitArmTypes::RobotStateType &state)
virtual void GetRobotData(void)
mtsFunctionWrite SetTrackingErrorTolerance
Definition: mtsIntuitiveResearchKitArm.h:130
Linear Segments with Parabolic Blends trajectory generator.
Definition: robLSPB.h:52
virtual bool UsePIDTrackingError(void) const =0
Definition: prmStateJoint.h:35
prmPositionCartesianGet CartesianGetParam
Definition: mtsIntuitiveResearchKitArm.h:176
mtsFunctionWrite Enable
Definition: mtsIntuitiveResearchKitArm.h:118
mtsFunctionWrite SetCheckJointLimit
Definition: mtsIntuitiveResearchKitArm.h:124
virtual void RunPositionGoalCartesian(void)
vctDoubleVec JointGet
Definition: mtsIntuitiveResearchKitArm.h:183
mtsFunctionRead GetStateJointDesired
Definition: mtsIntuitiveResearchKitArm.h:122
Cartesian Velocity move parameters.
mtsFunctionWrite Status
Definition: mtsIntuitiveResearchKitArm.h:159
virtual void SetPositionCartesian(const prmPositionCartesianSet &newPosition)
virtual void Init(void)
Definition: prmVelocityCartesianGet.h:38
mtsFunctionWrite Warning
Definition: mtsIntuitiveResearchKitArm.h:160
robManipulator Manipulator
Definition: mtsIntuitiveResearchKitArm.h:198
mtsFunctionWrite SetTorqueOffset
Definition: mtsIntuitiveResearchKitArm.h:128
vctDoubleVec JointGetDesired
Definition: mtsIntuitiveResearchKitArm.h:184
mtsFunctionVoid BrakeEngage
Definition: mtsIntuitiveResearchKitArm.h:148
vctFrm4x4 CartesianGetDesired
Definition: mtsIntuitiveResearchKitArm.h:179
vctFrm4x4 CartesianGetPrevious
Definition: mtsIntuitiveResearchKitArm.h:195
virtual void SetBaseFrame(const prmPositionCartesianGet &newBaseFrame)
virtual void RunPositionJoint(void)
struct mtsIntuitiveResearchKitArm::@182 PID
mtsFunctionWrite GoalReachedEvent
Definition: mtsIntuitiveResearchKitArm.h:216
prmStateJoint StateJointDesiredParam
Definition: mtsIntuitiveResearchKitArm.h:192
vctFrm4x4 CartesianGet
Definition: mtsIntuitiveResearchKitArm.h:177
vctDoubleVec GoalError
Definition: mtsIntuitiveResearchKitArm.h:213
virtual void RunHomingPower(void)
mtsFunctionRead GetPositionJointDesired
Definition: mtsIntuitiveResearchKitArm.h:120
Cartesian position move parameters.
bool IsGoalSet
Definition: mtsIntuitiveResearchKitArm.h:167
mtsFunctionVoid BrakeRelease
Definition: mtsIntuitiveResearchKitArm.h:147
virtual void SetPositionGoalCartesian(const prmPositionCartesianSet &newPosition)
mtsFunctionWrite SetTorqueJoint
Definition: mtsIntuitiveResearchKitArm.h:127
mtsFunctionRead GetVelocityJoint
Definition: mtsIntuitiveResearchKitArm.h:125
Joint velocity query parameters.
mtsFunctionRead GetActuatorAmpStatus
Definition: mtsIntuitiveResearchKitArm.h:139
Defines a periodic task.
virtual void RunPositionCartesian(void)
virtual void SetPositionGoalJoint(const prmPositionJointSet &newPosition)
Definition: mtsInterfaceProvided.h:96
mtsFunctionWrite SetActuatorCurrent
Definition: mtsIntuitiveResearchKitArm.h:144
vctDoubleVec Start
Definition: mtsIntuitiveResearchKitArm.h:211
void Configure(const std::string &filename)
vctFrm4x4 CartesianPositionFrm
Definition: mtsIntuitiveResearchKitArm.h:199
mtsInterfaceRequired * IOInterface
Definition: mtsIntuitiveResearchKitArm.h:134
struct mtsIntuitiveResearchKitArm::@183 MessageEvents
vctDoubleVec Acceleration
Definition: mtsIntuitiveResearchKitArm.h:210
bool BaseFrameValid
Definition: mtsIntuitiveResearchKitArm.h:203
struct mtsIntuitiveResearchKitArm::InterfaceRobotTorque RobotIO
virtual void RunArmSpecific(void)
Definition: mtsIntuitiveResearchKitArm.h:81
virtual ~mtsIntuitiveResearchKitArm()
Definition: mtsIntuitiveResearchKitArm.h:43
vctFrm4x4 CartesianGetLocalDesired
Definition: mtsIntuitiveResearchKitArm.h:173
mtsIntuitiveResearchKitArmTypes::RobotStateType RobotState
Definition: mtsIntuitiveResearchKitArm.h:205
vctDoubleVec Goal
Definition: mtsIntuitiveResearchKitArm.h:212
virtual bool UsePotsForSafetyCheck(void) const
Definition: mtsIntuitiveResearchKitArm.h:108
mtsFunctionVoid DisablePower
Definition: mtsIntuitiveResearchKitArm.h:138
prmPositionCartesianGet CartesianGetDesiredParam
Definition: mtsIntuitiveResearchKitArm.h:178
mtsInterfaceRequired * SUJInterface
Definition: mtsIntuitiveResearchKitArm.h:152
Joint position move parameters.
Definition: mtsFunctionWrite.h:37
Definition: mtsTaskPeriodic.h:80
mtsInterfaceRequired * PIDInterface
Definition: mtsIntuitiveResearchKitArm.h:116
mtsFunctionRead GetBrakeAmpStatus
Definition: mtsIntuitiveResearchKitArm.h:140
struct mtsIntuitiveResearchKitArm::@184 JointTrajectory
virtual size_t NumberOfBrakes(void) const =0
const int CMN_NO_DYNAMIC_CREATION
Definition: cmnClassRegisterMacros.h:328
vctDoubleVec Velocity
Definition: mtsIntuitiveResearchKitArm.h:209
vctDoubleVec PotsToEncodersTolerance
Definition: mtsIntuitiveResearchKitArm.h:219
mtsFunctionWrite RobotState
Definition: mtsIntuitiveResearchKitArm.h:162
unsigned int mCounter
Definition: mtsIntuitiveResearchKitArm.h:226
prmPositionJointSet JointSetParam
Definition: mtsIntuitiveResearchKitArm.h:185
prmPositionJointGet JointGetParam
Definition: mtsIntuitiveResearchKitArm.h:182
mtsFunctionWrite EnableTrackingError
Definition: mtsIntuitiveResearchKitArm.h:129
mtsFunctionRead GetStateJoint
Definition: mtsIntuitiveResearchKitArm.h:121
mtsFunctionVoid EnablePower
Definition: mtsIntuitiveResearchKitArm.h:137
virtual void SetState(const mtsIntuitiveResearchKitArmTypes::RobotStateType &newState)=0
virtual void SetRobotControlState(const std::string &state)=0
Definition: prmPositionCartesianSet.h:40
virtual size_t NumberOfJointsKinematics(void) const =0
virtual robManipulator::Errno InverseKinematics(vctDoubleVec &jointSet, const vctFrm4x4 &cartesianGoal)=0
mtsFunctionWrite ResetSingleEncoder
Definition: mtsIntuitiveResearchKitArm.h:142
#define CMN_LOG_ALLOW_DEFAULT
Definition: cmnLogLoD.h:76
double EndTime
Definition: mtsIntuitiveResearchKitArm.h:215
virtual void RunPositionGoalJoint(void)
Definition: prmPositionJointSet.h:37
mtsFunctionRead GetSerialNumber
Definition: mtsIntuitiveResearchKitArm.h:136
Definition: prmPositionCartesianGet.h:37