22 using TechnosoftIposBase::TechnosoftIposBase;
26 bool open(yarp::os::Searchable & config)
override;
27 bool close()
override;
36#if YARP_VERSION_COMPARE(>=, 4, 0, 0)
37 return_t getAvailableControlModesRaw(
int j, std::vector<yarp::dev::SelectableControlModeEnum> & avail)
override;
38 return_t getControlModeRaw(
int j, yarp::dev::ControlModeEnum & mode)
override;
39 return_t setControlModeRaw(
int j, yarp::dev::SelectableControlModeEnum mode)
override;
41 return_t getControlModeRaw(
int j,
int * mode)
override;
42 return_t setControlModeRaw(
int j,
int mode)
override;
47 return_t getImpedanceRaw(
int j,
double * stiffness,
double * damping)
override;
48 return_t setImpedanceRaw(
int j,
double stiffness,
double damping)
override;
49 return_t setImpedanceOffsetRaw(
int j,
double offset)
override;
50 return_t getImpedanceOffsetRaw(
int j,
double * offset)
override;
51 return_t getCurrentImpedanceLimitRaw(
int j,
double * min_stiff,
double * max_stiff,
double * min_damp,
double * max_damp)
override;
55#if YARP_VERSION_COMPARE(>=, 4, 0, 0)
56 return_t getInteractionModeRaw(
int axis, yarp::dev::InteractionModeEnum & mode)
override;
58 return_t getInteractionModeRaw(
int axis, yarp::dev::InteractionModeEnum * mode)
override;
60 return_t setInteractionModeRaw(
int axis, yarp::dev::InteractionModeEnum mode)
override;
64#if YARP_VERSION_COMPARE(>=, 4, 0, 0)
65 return_t getAvailablePidsRaw(
int j, std::vector<yarp::dev::PidControlTypeEnum> & avail)
override;
67 return_t setPidRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j,
const yarp::dev::Pid & pid)
override;
68 return_t setPidReferenceRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j,
double ref)
override;
69 return_t setPidErrorLimitRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j,
double limit)
override;
70 return_t getPidErrorRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j,
double * err)
override;
71 return_t getPidOutputRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j,
double * out)
override;
72 return_t getPidRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j, yarp::dev::Pid * pid)
override;
73#if YARP_VERSION_COMPARE(>=, 4, 0, 0)
74 return_t getPidOffsetRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j,
double & v)
override;
75 return_t getPidFeedforwardRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j,
double & v)
override;
76 return_t getPidExtraInfoRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j, yarp::dev::PidExtraInfo & info)
override;
77 return_t getPidExtraInfosRaw(
const yarp::dev::PidControlTypeEnum & pidtype, std::vector<yarp::dev::PidExtraInfo> & info)
override;
79 return_t getPidReferenceRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j,
double * ref)
override;
80 return_t getPidErrorLimitRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j,
double * limit)
override;
81 return_t resetPidRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j)
override;
82 return_t disablePidRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j)
override;
83 return_t enablePidRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j)
override;
84 return_t setPidOffsetRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j,
double v)
override;
85#if YARP_VERSION_COMPARE(>=, 4, 0, 0)
86 return_t setPidFeedforwardRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j,
double v)
override;
87 return_t isPidEnabledRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j,
bool & enabled)
override;
89 return_t isPidEnabledRaw(
const yarp::dev::PidControlTypeEnum & pidtype,
int j,
bool * enabled)
override;
94 return_t positionMoveRaw(
int j,
double ref)
override;
95 return_t relativeMoveRaw(
int j,
double delta)
override;
96#if YARP_VERSION_COMPARE(>=, 4, 0, 0)
97 return_t checkMotionDoneRaw(
int j,
bool & flag)
override;
98 return_t setTrajSpeedRaw(
int j,
double sp)
override;
99 return_t setTrajAccelerationRaw(
int j,
double acc)
override;
100 return_t getTrajSpeedRaw(
int j,
double * ref)
override;
101 return_t getTrajAccelerationRaw(
int j,
double * acc)
override;
103 return_t checkMotionDoneRaw(
int j,
bool * flag)
override;
104 return_t setRefSpeedRaw(
int j,
double sp)
override;
105 return_t setRefAccelerationRaw(
int j,
double acc)
override;
106 return_t getRefSpeedRaw(
int j,
double * ref)
override;
107 return_t getRefAccelerationRaw(
int j,
double * acc)
override;
109 return_t stopRaw(
int j)
override;
110 return_t getTargetPositionRaw(
int joint,
double * ref)
override;
114 return_t setPositionRaw(
int j,
double ref)
override;
115 return_t getRefPositionRaw(
int joint,
double * ref)
override;
119 return_t getRemoteVariableRaw(std::string key, yarp::os::Bottle & val)
override;
120 return_t setRemoteVariableRaw(std::string key,
const yarp::os::Bottle & val)
override;
121 return_t getRemoteVariablesListRaw(yarp::os::Bottle * listOfKeys)
override;
125 return_t velocityMoveRaw(
int j,
double sp)
override;
126#if YARP_VERSION_COMPARE(>=, 4, 0, 0)
127 return_t getTargetVelocityRaw(
int joint,
double * vel)
override;
129 return_t getRefVelocityRaw(
int joint,
double * vel)
override;
133 void interpretModesOfOperation(std::int8_t modesOfOperation)
override;
134 void onPositionLimitTriggered()
override;
135 void reset()
override;
137 yarp::conf::vocab32_t initialInteractionMode {0};
138 std::atomic<yarp::dev::InteractionModeEnum> actualInteractionMode {yarp::dev::InteractionModeEnum::VOCAB_IM_UNKNOWN};
142 yarp::dev::Pid * activePid {
nullptr};
143 yarp::dev::Pid positionPid;
144 yarp::dev::Pid impedancePid;
146 double positionReference {0.0};
147 double errorLimit {0.0};
148 double proportionalError {0.0};
149 double integralError {0.0};
153 std::atomic<bool> enableCsv {
false};