41 public yarp::dev::IControlLimits,
42 public yarp::dev::IControlMode,
43 public yarp::dev::IEncodersTimed,
44 public yarp::dev::IPositionControl,
45 public yarp::dev::IPositionDirect,
46 public yarp::dev::IVelocityControl,
47 public yarp::os::PeriodicThread,
51#if YARP_VERSION_COMPARE(>=, 4, 0, 0)
52 using return_t = yarp::dev::ReturnValue;
54 using return_t = bool;
61#if YARP_VERSION_COMPARE(>=, 4, 0, 0)
62 return_t getAxes(std::size_t & ax)
override;
64 return_t getAxes(
int * ax)
override;
66 return_t positionMove(
int j,
double ref)
override;
67 return_t positionMove(
const double * refs)
override;
68 return_t positionMove(
int n_joint,
const int * joints,
const double * refs)
override;
69 return_t relativeMove(
int j,
double delta)
override;
70 return_t relativeMove(
const double * deltas)
override;
71 return_t relativeMove(
int n_joint,
const int * joints,
const double * deltas)
override;
72#if YARP_VERSION_COMPARE(>=, 4, 0, 0)
73 return_t checkMotionDone(
int j,
bool & flag)
override;
74 return_t checkMotionDone(
bool & flag)
override;
75 return_t checkMotionDone(
const std::vector<int> & joints,
bool & flag)
override;
76 return_t setTrajSpeed(
int j,
double sp)
override;
77 return_t setTrajSpeeds(
const double * spds)
override;
78 return_t setTrajSpeeds(
int n_joint,
const int * joints,
const double * spds)
override;
79 return_t getTrajSpeed(
int j,
double * ref)
override;
80 return_t getTrajSpeeds(
double * spds)
override;
81 return_t getTrajSpeeds(
int n_joint,
const int * joints,
double * spds)
override;
82 return_t setTrajAcceleration(
int j,
double acc)
override;
83 return_t setTrajAccelerations(
const double * accs)
override;
84 return_t setTrajAccelerations(
int n_joint,
const int * joints,
const double * accs)
override;
85 return_t getTrajAcceleration(
int j,
double * acc)
override;
86 return_t getTrajAccelerations(
double * accs)
override;
87 return_t getTrajAccelerations(
int n_joint,
const int * joints,
double * accs)
override;
89 return_t checkMotionDone(
int j,
bool * flag)
override;
90 return_t checkMotionDone(
bool * flag)
override;
91 return_t checkMotionDone(
int n_joint,
const int * joints,
bool * flags)
override;
92 return_t setRefSpeed(
int j,
double sp)
override;
93 return_t setRefSpeeds(
const double * spds)
override;
94 return_t setRefSpeeds(
int n_joint,
const int * joints,
const double * spds)
override;
95 return_t getRefSpeed(
int j,
double * ref)
override;
96 return_t getRefSpeeds(
double * spds)
override;
97 return_t getRefSpeeds(
int n_joint,
const int * joints,
double * spds)
override;
98 return_t setRefAcceleration(
int j,
double acc)
override;
99 return_t setRefAccelerations(
const double * accs)
override;
100 return_t setRefAccelerations(
int n_joint,
const int * joints,
const double * accs)
override;
101 return_t getRefAcceleration(
int j,
double * acc)
override;
102 return_t getRefAccelerations(
double * accs)
override;
103 return_t getRefAccelerations(
int n_joint,
const int * joints,
double * accs)
override;
105 return_t stop(
int j)
override;
106 return_t stop()
override;
107 return_t stop(
int n_joint,
const int * joints)
override;
108 return_t getTargetPosition(
int joint,
double * ref)
override;
109 return_t getTargetPositions(
double * refs)
override;
110 return_t getTargetPositions(
int n_joint,
const int * joints,
double * refs)
override;
113 return_t setPosition(
int j,
double ref)
override;
114 return_t setPositions(
int n_joint,
const int * joints,
const double * refs)
override;
115 return_t setPositions(
const double * refs)
override;
116 return_t getRefPosition(
int joint,
double * ref)
override;
117 return_t getRefPositions(
double * refs)
override;
118 return_t getRefPositions(
int n_joint,
const int * joints,
double * refs)
override;
121 return_t resetEncoder(
int j)
override;
122 return_t resetEncoders()
override;
123 return_t setEncoder(
int j,
double val)
override;
124 return_t setEncoders(
const double * vals)
override;
125 return_t getEncoder(
int j,
double * v)
override;
126 return_t getEncoders(
double * encs)
override;
127 return_t getEncodersTimed(
double * encs,
double * time)
override;
128 return_t getEncoderTimed(
int j,
double * encs,
double * time)
override;
129 return_t getEncoderSpeed(
int j,
double * sp)
override;
130 return_t getEncoderSpeeds(
double * spds)
override;
131 return_t getEncoderAcceleration(
int j,
double * spds)
override;
132 return_t getEncoderAccelerations(
double * accs)
override;
135 return_t velocityMove(
int j,
double sp)
override;
136 return_t velocityMove(
const double * sp)
override;
137 return_t velocityMove(
int n_joint,
const int * joints,
const double * spds)
override;
138#if YARP_VERSION_COMPARE(>=, 4, 0, 0)
139 return_t getTargetVelocity(
int joint,
double * vel)
override;
140 return_t getTargetVelocities(
double * vels)
override;
141 return_t getTargetVelocities(
int n_joint,
const int * joints,
double * vels)
override;
143 return_t getRefVelocity(
int joint,
double * vel)
override;
144 return_t getRefVelocities(
double * vels)
override;
145 return_t getRefVelocities(
int n_joint,
const int * joints,
double * vels)
override;
149#if YARP_VERSION_COMPARE(>=, 4, 0, 0)
150 return_t setPosLimits(
int axis,
double min,
double max)
override;
151 return_t getPosLimits(
int axis,
double * min,
double * max)
override;
153 return_t setLimits(
int axis,
double min,
double max)
override;
154 return_t getLimits(
int axis,
double * min,
double * max)
override;
156 return_t setVelLimits(
int axis,
double min,
double max)
override;
157 return_t getVelLimits(
int axis,
double * min,
double * max)
override;
160#if YARP_VERSION_COMPARE(>=, 4, 0, 0)
161 return_t getAvailableControlModes(
int j, std::vector<yarp::dev::SelectableControlModeEnum> & avail)
override;
162 return_t getControlMode(
int j, yarp::dev::ControlModeEnum & mode)
override;
163 return_t getControlModes(std::vector<yarp::dev::ControlModeEnum> & modes)
override;
164 return_t getControlModes(
const std::vector<int> & joints, std::vector<yarp::dev::ControlModeEnum> & modes)
override;
165 return_t setControlMode(
int j, yarp::dev::SelectableControlModeEnum mode)
override;
166 return_t setControlModes(
const std::vector<int> & joints,
const std::vector<yarp::dev::SelectableControlModeEnum> & modes)
override;
167 return_t setControlModes(
const std::vector<yarp::dev::SelectableControlModeEnum> & modes)
override;
169 return_t getControlMode(
int j,
int * mode)
override;
170 return_t getControlModes(
int * modes)
override;
171 return_t getControlModes(
int n_joint,
const int * joints,
int * modes)
override;
172 return_t setControlMode(
int j,
const int mode)
override;
173 return_t setControlModes(
int n_joint,
const int * joints,
int * modes)
override;
174 return_t setControlModes(
int * modes)
override;
178 bool open(yarp::os::Searchable & config)
override;
179 bool close()
override;
182 bool threadInit()
override;
187 void setEncRaw(
const int index,
const double position);
188 void setEncsRaw(
const std::vector<double> & positions);
190 double getEncRaw(
const int index);
191 std::vector<double> getEncsRaw();
193 double getEncExposed(
const int index);
194 std::vector<double> getEncsExposed();
197 enum jmc_state { NOT_CONTROLLING, POSITION_MOVE, RELATIVE_MOVE, VELOCITY_MOVE };
199 yarp::conf::vocab32_t controlMode {0};
200 double lastTime {0.0};
202 std::mutex encRawMutex;
204 std::vector<jmc_state> jointStatus;
206 std::vector<double> encRaw;
207 std::vector<double> refAcc;
208 std::vector<double> targetExposed;
209 std::vector<double> velRaw;