YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
jointitem.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-FileCopyrightText: 2006-2010 RobotCub Consortium
4 * SPDX-License-Identifier: LGPL-2.1-or-later
5 */
6
7#ifndef JOINTITEM_H
8#define JOINTITEM_H
9
10#include <QWidget>
11#include <QSlider>
12#include <QLabel>
13#include <QTimer>
15#include "sliderWithTarget.h"
16
17namespace Ui {
18class JointItem;
19}
20
22
23
24
25#define STIFF 0
26#define COMPLIANT 1
27
28class JointItem : public QWidget
29{
30 Q_OBJECT
31
32 public:
36 explicit JointItem(int index, QWidget *parent = 0);
37 ~JointItem();
38 void setJointInteraction(JointInteraction interaction);
40 void setPosition(double val);
41 void setTorque(double meas);
42 void setRefTorque(double ref);
43 void setVelTrajectory_ReferenceSpeed(double ref);
45 void setPosTrajectory_ReferenceSpeed(double ref);
47 void setSpeed(double val);
48 void setMotorPosition(double meas);
49 void setDutyCycles(double duty);
50 void setRefPWM(double ref);
51 void setCurrent(double meas);
52 void setRefCurrent(double ref);
53 void updateMotionDone(bool done);
54 void updateBraked(bool brk);
55 void updateJointFault(int i, std::string message);
56 void setJointName(QString name);
57 QString getJointName();
58 int getJointIndex();
59 void setPositionRange(double min, double max);
60 void setVelocityRange(double min, double max);
61 void setAccelerationRange(double min, double max);
62 void setPWMRange(double min, double max);
63 void setCurrentRange(double min, double max);
64 void setTorqueRange(double max);
69 bool enable_calib_all);
70
71 void setSpeedVisible(bool);
72 void setMotorPositionVisible(bool);
73 void setDutyVisible(bool);
74 void setCurrentsVisible(bool);
76 void viewPositionTargetBox(bool);
77 void viewPositionTargetValue(bool);
78 void enableControlVelocity(bool control);
79 void enableControlVelocityDirect(bool control);
80 void enableControlMixed(bool control);
81 void enableControlPositionDirect(bool control);
82 void enableControlPWM(bool control);
83 void enableControlCurrent(bool control);
84 void enableControlTorque(bool control);
85 void sequenceActivated();
86 void sequenceStopped();
87
88 void setNumberOfPositionSliderDecimals(size_t num);
89 void setNumberOfVelocitySliderDecimals(size_t num);
91 void setNumberOfTorqueSliderDecimals(size_t num);
92 void setNumberOfCurrentSliderDecimals(size_t num);
93
94 // valid for all position sliders
96 void enablePositionSliderDoubleValue(double value);
98
99 // valid for all velocity sliders
101 void enableVelocitySliderDoubleValue(double value);
103
105 void enableAccelerationSliderDoubleValue(double value);
107
109 void enableTorqueSliderDoubleValue(double value);
111
113 void enableCurrentSliderDoubleValue(double value);
115
116 void resetTarget();
117
118 void home();
119 void run();
120 void idle();
121 void showPID();
122
123 static QColor GetModeColor(JointState mode);
124 static QString GetModeString(JointState mode);
125
126protected:
127 bool eventFilter(QObject *obj, QEvent *event) override;
128
129private:
130 void enableAll();
131 void installFilter();
132 void setJointInternalState(int mode);
133 void setJointInternalInteraction(int interaction);
134
135 void updateSliderPosTrajectoryPosition (double val);
136 void updateSliderPosTrajectoryVelocity (double val);
137 void updateSliderVelTrajectoryVelocity (double val);
138 void updateSliderVelTrajectoryAcceleration (double val);
139 void updateSliderMixedPosition (double val);
140 void updateSliderPositionDirect (double val);
141 void updateSliderVelocityDirect (double val);
142 void updateSliderPWM (double val);
143 void updateSliderCurrent (double val);
144 void updateSliderTorque (double val);
145
146 void updateTrajectoryPositionTarget (double val);
147 void updateMixedPositionTarget (double val);
148
149private:
150 Ui::JointItem *ui;
151 QString comboStyle1;
152 QString comboStyle2;
153 int jointIndex;
154 QString jointName;
155 bool sliderVelocityDirectPressed = false;
156 bool sliderDirectPositionPressed = false;
157 bool sliderMixedPositionPressed = false;
158 bool sliderMixedVelocityPressed = false;
159 bool sliderVelTrajectory_VelocityPressed = false;
160 bool sliderVelTrajectory_AccelerationPressed = false;
161 bool sliderPosTrajectory_VelocityPressed = false;
162 bool sliderPosTrajectory_PositionPressed = false;
163 bool sliderTorquePressed = false;
164 bool sliderPWMPressed = false;
165 bool sliderCurrentPressed = false;
166 bool motionDone = true;
167 bool enableCalib = true;
168 bool joint_speedVisible = false;
169 bool joint_motorPositionVisible = false;
170 bool joint_currentVisible = false;
171 bool joint_dutyVisible = false;
172 QTimer velocityTimer;
173 QTimer velocityDirectTimer;
174 double lastVelocity = 0;
175 double lastVelocityDirect = 0;
176 bool velocityModeEnabled = false;
177 bool velocityDirectModeEnabled = false;
178 QTimer pwmTimer;
179 double lastPwm = 0;
180 bool pwmModeEnabled = false;
181 QTimer currentTimer;
182 double lastCurrent = 0;
183 bool currentModeEnabled = false;
184 QTimer torqueTimer;
185 double lastTorque = 0;
186 bool torqueModeEnabled = false;
187
188 int IDLE = 0;
189 int POSITION = 1;
190 int POSITION_DIR = 2;
191 int MIXED = 3;
192 int VELOCITY = 4;
193 int VELOCITY_DIR =5;
194 int TORQUE =6;
195 int PWM =7;
196 int CURRENT=8;
197 int HW_FAULT= 9;
198
199 int shiftPositions;
200
201 JointState internalState;
202 JointInteraction internalInteraction;
203
204 double m_max_current = 0;
205 double m_min_current = 0;
206 double m_max_torque = 0;
207 double m_min_torque = 0;
208 double m_max_position = 0;
209 double m_min_position = 0;
210 double m_max_velocity = 0;
211 double m_min_velocity = 0;
212 double m_max_acceleration = 0;
213 double m_min_acceleration = 0;
214
215 //double speed = 0;
216 double m_ref_speed = 0;
217 double m_ref_torque = 0;
218 double m_ref_pwm = 0;
219 double m_ref_current = 0;
220 double m_ref_PosTrajectory_velocity = 0;
221 double m_ref_VelTrajectory_acceleration = 0;
222
223
224
225private slots:
226 void onModeChanged(int index);
227 void onInteractionChanged(int index);
228
229 void onSliderPosTrajectory_PositionPressed();
230 void onSliderPosTrajectory_PositionReleased();
231
232 void onSliderDirectPositionPressed();
233 void onSliderDirectPositionReleased();
234
235 void onSliderMixedPositionPressed();
236 void onSliderMixedPositionReleased();
237
238 void onSliderPosTrajectory_VelocityReleased();
239 void onSliderPosTrajectory_VelocityPressed();
240
241 void onSliderVelTrajectory_AccelerationReleased();
242 void onSliderVelTrajectory_AccelerationPressed();
243
244 void onSliderMixedVelocityReleased();
245 void onSliderMixedVelocityPressed();
246
247 void onSliderTorquePressed();
248 void onSliderTorqueReleased();
249
250 void onSliderCurrentPressed();
251 void onSliderCurrentReleased();
252
253 void onSliderPWMPressed();
254 void onSliderPWMReleased();
255
256 void onSliderVelTrajectory_VelocityReleased();
257 void onSliderVelTrajectory_VelocityPressed();
258
259 void onSliderVelocityDirectReleased();
260 void onSliderVelocityDirectPressed();
261
262 void onCalibClicked();
263 void onHomeClicked();
264 void onIdleClicked();
265 void onRunClicked();
266 void onPidClicked();
267 void onVelocityTimer();
268 void onVelocityDirectTimer();
269 void onPwmTimer();
270 void onCurrentTimer();
271 void onTorqueTimer();
272 void onStackedWidgetChanged(int);
273
274signals:
276 void pidClicked(JointItem *joint);
277 void homeClicked(JointItem *joint);
278 void idleClicked(JointItem *joint);
279 void runClicked(JointItem *joint);
280 void changeMode(int mode,JointItem *joint);
281 void changeInteraction(int interaction,JointItem *joint);
282
283 void sliderPosTrajectoryPositionCommand(double val, int jointIndex);
284 void sliderPosTrajectoryVelocityCommand(double val, int jointIndex);
285
286 void sliderVelTrajectoryVelocityCommand(double val, int jointIndex);
287 void sliderVelTrajectoryAccelerationCommand(double val, int jointIndex);
288
289 void sliderMixedPositionCommand(double val, int jointIndex);
290 void sliderMixedVelocityCommand(double val, int jointIndex);
291 void sliderDirectPositionCommand(double val, int jointIndex);
292
293 void sliderTorqueCommand(double val, int jointIndex);
294 void sliderPWMCommand(double val, int jointIndex);
295 void sliderCurrentCommand(double val, int jointIndex);
296
297 void sliderVelocityDirectCommand(double val, int jointIndex);
298};
299
300
301class WheelEventFilter : public QObject
302{
303 Q_OBJECT
304
305
306protected:
307 bool eventFilter(QObject *obj, QEvent *event) override;
308};
309
310
311#endif // JOINTITEM_H
define control board standard interfaces
FeatureMode mode
void setMotorPosition(double meas)
void viewPositionTargetValue(bool)
void setVelocityRange(double min, double max)
void setDutyVisible(bool)
void sliderVelocityDirectCommand(double val, int jointIndex)
void sequenceActivated()
void updateJointFault(int i, std::string message)
void disableAccelerationSliderDouble()
void enableControlPositionDirect(bool control)
void enableVelocitySliderDoubleAuto()
void setCurrentsVisible(bool)
void setUnits(yarp::dev::JointTypeEnum t)
static QColor GetModeColor(JointState mode)
void setPositionRange(double min, double max)
void enableControlMixed(bool control)
void resetTarget()
Definition jointitem.cpp:21
void enablePositionSliderDoubleValue(double value)
void sliderVelTrajectoryAccelerationCommand(double val, int jointIndex)
void sliderCurrentCommand(double val, int jointIndex)
void enableAccelerationSliderDoubleValue(double value)
void enableCurrentSliderDoubleValue(double value)
void viewPositionTargetBox(bool)
void setJointState(JointState)
void sliderPosTrajectoryPositionCommand(double val, int jointIndex)
void enableControlPWM(bool control)
void disablePositionSliderDouble()
void setNumberOfAccelerationSliderDecimals(size_t num)
void disableCurrentSliderDouble()
void enableTorqueSliderDoubleValue(double value)
void homeClicked(JointItem *joint)
void setPosition(double val)
void sliderPWMCommand(double val, int jointIndex)
static QString GetModeString(JointState mode)
void enableControlVelocityDirect(bool control)
void setCurrentRange(double min, double max)
void setJointName(QString name)
void pidClicked(JointItem *joint)
QString getJointName()
void setPWMRange(double min, double max)
void updateMotionDone(bool done)
void setRefCurrent(double ref)
void setNumberOfCurrentSliderDecimals(size_t num)
@ InteractionStarting
Definition jointitem.h:35
double getTrajectoryVelocityValue()
void setVelTrajectory_ReferenceSpeed(double ref)
void setSpeed(double val)
void enableCurrentSliderDoubleAuto()
bool eventFilter(QObject *obj, QEvent *event) override
int getJointIndex()
void sliderMixedPositionCommand(double val, int jointIndex)
void sliderDirectPositionCommand(double val, int jointIndex)
void setJointInteraction(JointInteraction interaction)
void calibClicked(JointItem *joint)
void runClicked(JointItem *joint)
void setMotorPositionVisible(bool)
void enableControlVelocity(bool control)
void setNumberOfTorqueSliderDecimals(size_t num)
void setDutyCycles(double duty)
double getTrajectoryPositionValue()
void sliderPosTrajectoryVelocityCommand(double val, int jointIndex)
void setCurrent(double meas)
void idle()
Definition jointitem.cpp:77
void disableVelocitySliderDouble()
void setPosTrajectory_ReferenceSpeed(double ref)
void updateBraked(bool brk)
void sliderVelTrajectoryVelocityCommand(double val, int jointIndex)
void setRefPWM(double ref)
void run()
Definition jointitem.cpp:52
void sliderTorqueCommand(double val, int jointIndex)
void enableControlCurrent(bool control)
void setEnabledOptions(bool debug_param_enabled, bool speedview_param_enabled, bool enable_calib_all)
void setAccelerationRange(double min, double max)
void sequenceStopped()
void changeMode(int mode, JointItem *joint)
void enableTorqueSliderDoubleAuto()
void setVelTrajectory_ReferenceAcceleration(double ref)
void setSpeedVisible(bool)
void showPID()
void home()
Definition jointitem.cpp:27
void setNumberOfPositionSliderDecimals(size_t num)
@ PositionDirect
Definition jointitem.h:33
@ Disconnected
Definition jointitem.h:34
@ StateStarting
Definition jointitem.h:34
@ VelocityDirect
Definition jointitem.h:33
@ Calibrating
Definition jointitem.h:34
@ NotConfigured
Definition jointitem.h:34
void enableVelocitySliderDoubleValue(double value)
void enablePositionSliderDoubleAuto()
void disableTorqueSliderDouble()
void setPosTrajectory_ReferencePosition(double ref)
void enableAccelerationSliderDoubleAuto()
void enableControlTorque(bool control)
void setTorque(double meas)
void setNumberOfVelocitySliderDecimals(size_t num)
void sliderMixedVelocityCommand(double val, int jointIndex)
void idleClicked(JointItem *joint)
void setTorqueRange(double max)
void setRefTorque(double ref)
void changeInteraction(int interaction, JointItem *joint)
bool eventFilter(QObject *obj, QEvent *event) override
bool speedview_param_enabled
Definition main.cpp:35
bool debug_param_enabled
Definition main.cpp:34
bool enable_calib_all
Definition main.cpp:36
Definition aboutdlg.h:11