cisst-saw
Loading...
Searching...
No Matches
robReflexxes.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, Zerui Wang
6 Created on: 2016-02-22
7
8 (C) Copyright 2016 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 _robReflexxes_h
20#define _robReflexxes_h
21
22// forward declarations for Reflexxes types
23class ReflexxesAPI;
24class RMLPositionInputParameters;
25class RMLPositionOutputParameters;
26class RMLPositionFlags;
27
29
30// Always include last
32
41
42public:
43 typedef enum {Reflexxes_NONE, Reflexxes_TIME, Reflexxes_PHASE} SynchronizationType;
46
47protected:
48 bool mIsSet;
49 size_t mDimension;
51
52 ReflexxesAPI * RML;
53 RMLPositionInputParameters * IP;
54 RMLPositionOutputParameters * OP;
55 RMLPositionFlags * mFlags;
57 double mTime;
59
60public:
62 robReflexxes(const vctDoubleVec & MaxVelocity,
63 const vctDoubleVec & MaxAcceleration,
64 const double CycleTime,
65 const SynchronizationType synchronization = Reflexxes_NONE);
66 robReflexxes(const vctDoubleVec & MaxVelocity,
67 const vctDoubleVec & MaxAcceleration,
68 const vctDoubleVec & MaxJerk,
69 const double CycleTime,
70 const SynchronizationType synchronization = Reflexxes_NONE);
71
73
74 void Init(void);
75
76 const ResultType & ResultValue(void) const;
77
79 double Duration(void) const;
80
81 const double & Time(void) const;
82 void SetTime(const double & time);
83
91 void Set(const vctDoubleVec & MaxVelocity,
92 const vctDoubleVec & MaxAcceleration,
93 const double CycleTime,
94 const SynchronizationType synchronization = Reflexxes_NONE);
95
96 void Set(const vctDoubleVec & MaxVelocity,
97 const vctDoubleVec & MaxAcceleration,
98 const vctDoubleVec & MaxJerk,
99 const double CycleTime,
100 const SynchronizationType synchronization = Reflexxes_NONE);
101
102 /*
103 \param current position
104 \param current velocity
105 \param target position
106 \param target velocities
107 */
108 void Evaluate(vctDoubleVec & CurrentPosition,
109 vctDoubleVec & CurrentVelocity,
110 const vctDoubleVec & TargetPosition,
111 const vctDoubleVec & TargetVelocity);
112};
113
114#endif // _robReflexxes_h
robReflexxes(const vctDoubleVec &MaxVelocity, const vctDoubleVec &MaxAcceleration, const vctDoubleVec &MaxJerk, const double CycleTime, const SynchronizationType synchronization=Reflexxes_NONE)
ResultType mResultValue
Definition robReflexxes.h:56
const double & Time(void) const
void SetTime(const double &time)
RMLPositionFlags * mFlags
Definition robReflexxes.h:55
ReflexxesAPI * RML
Definition robReflexxes.h:52
robReflexxes(void)
void Init(void)
robReflexxes(const vctDoubleVec &MaxVelocity, const vctDoubleVec &MaxAcceleration, const double CycleTime, const SynchronizationType synchronization=Reflexxes_NONE)
bool mIsSet
Definition robReflexxes.h:48
void Set(const vctDoubleVec &MaxVelocity, const vctDoubleVec &MaxAcceleration, const double CycleTime, const SynchronizationType synchronization=Reflexxes_NONE)
Set target positions and velocities as well as desired maximum velocities and accelerations....
SynchronizationType
Definition robReflexxes.h:43
@ Reflexxes_PHASE
Definition robReflexxes.h:43
@ Reflexxes_NONE
Definition robReflexxes.h:43
@ Reflexxes_TIME
Definition robReflexxes.h:43
void Evaluate(vctDoubleVec &CurrentPosition, vctDoubleVec &CurrentVelocity, const vctDoubleVec &TargetPosition, const vctDoubleVec &TargetVelocity)
ResultType
Definition robReflexxes.h:44
@ Reflexxes_WORKING
Definition robReflexxes.h:44
@ Reflexxes_UNDEFINDED
Definition robReflexxes.h:44
@ Reflexxes_ERROR
Definition robReflexxes.h:45
@ Reflexxes_FINAL_STATE_REACHED
Definition robReflexxes.h:45
size_t mDimension
Definition robReflexxes.h:49
SynchronizationType mSynchronization
Definition robReflexxes.h:50
vctDoubleVec mCurrentAcceleration
Definition robReflexxes.h:58
RMLPositionInputParameters * IP
Definition robReflexxes.h:53
RMLPositionOutputParameters * OP
Definition robReflexxes.h:54
double mTime
Definition robReflexxes.h:57
void Set(const vctDoubleVec &MaxVelocity, const vctDoubleVec &MaxAcceleration, const vctDoubleVec &MaxJerk, const double CycleTime, const SynchronizationType synchronization=Reflexxes_NONE)
double Duration(void) const
const ResultType & ResultValue(void) const
#define CISST_EXPORT
Definition cmnExportMacros.h:50
Typedef for dynamic vectors.
vctDynamicVector< double > vctDoubleVec
Definition vctDynamicVectorTypes.h:37