YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
jointitem.cpp
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#include "jointitem.h"
8#include "ui_jointitem.h"
9
10#include "log.h"
11#include "yarpmotorgui.h"
12
13#include <cmath>
14
15#include <yarp/os/Log.h>
16#include <yarp/os/LogStream.h>
17
18#include <QDebug>
19#include <QKeyEvent>
20
22{
23 ui->sliderPosTrajectory_Position->resetTarget();
24 ui->sliderMixedPosition->resetTarget();
25}
26
28{
29 if (this->internalState == Velocity)
30 {
31 velocityTimer.stop();
32 }
33 else if (this->internalState == VelocityDirect)
34 {
35 velocityDirectTimer.stop();
36 }
37 else if(this->internalState == Pwm)
38 {
39 pwmTimer.stop();
40 }
41 else if(this->internalState == Current)
42 {
43 currentTimer.stop();
44 }
45 else if(this->internalState == Torque)
46 {
47 torqueTimer.stop();
48 }
49 emit homeClicked(this);
50}
51
53{
54 if (this->internalState == Velocity)
55 {
56 velocityTimer.stop();
57 }
58 else if (this->internalState == VelocityDirect)
59 {
60 velocityDirectTimer.stop();
61 }
62 else if(this->internalState == Pwm)
63 {
64 pwmTimer.stop();
65 }
66 else if(this->internalState == Current)
67 {
68 currentTimer.stop();
69 }
70 else if(this->internalState == Torque)
71 {
72 torqueTimer.stop();
73 }
74 emit runClicked(this);
75}
76
78{
79 if (this->internalState == Velocity)
80 {
81 velocityTimer.stop();
82 }
83 else if (this->internalState == VelocityDirect)
84 {
85 velocityDirectTimer.stop();
86 }
87 else if(this->internalState == Pwm)
88 {
89 pwmTimer.stop();
90 }
91 else if(this->internalState == Current)
92 {
93 currentTimer.stop();
94 }
95 else if(this->internalState == Torque)
96 {
97 torqueTimer.stop();
98 }
99 emit idleClicked(this);
100}
101
103{
104 emit pidClicked(this);
105}
106
108{
109 QColor output;
110 switch (mode) {
111 case JointItem::Idle:{
112 output = idleColor;
113 break;
114 }
116 output = positionColor;
117 break;
118 }
120 output = positionDirectColor;
121 break;
122 }
123 case JointItem::Mixed:{
124 output = mixedColor;
125 break;
126 }
128 output = velocityColor;
129 break;
130 }
132 output = velocityDirectColor;
133 break;
134 }
135 case JointItem::Torque:{
136 output = torqueColor;
137 break;
138 }
139 case JointItem::Pwm:{
140 output = pwmColor;
141 break;
142 }
143 case JointItem::Current:{
144 output = currentColor;
145 break;
146 }
147
149 output = disconnectColor;
150 break;
151 }
152 case JointItem::HwFault:{
153 output = hwFaultColor;
154 break;
155 }
157 output = calibratingColor;
158 break;
159 }
161 output = calibratingColor;
162 break;
163 }
165 output = calibratingColor;
166 break;
167 }
168
169 default:
170 output = calibratingColor;
171 break;
172 }
173
174 return output;
175
176}
177
179{
180 QString output;
181 switch (mode) {
182 case JointItem::Idle:{
183 output = "Idle";
184 break;
185 }
187 output = "Position";
188 break;
189 }
191 output = "Position Direct";
192 break;
193 }
194 case JointItem::Mixed:{
195 output = "Mixed";
196 break;
197 }
199 output = "Velocity";
200 break;
201 }
203 output = "Velocity Direct";
204 break;
205 }
206 case JointItem::Torque:{
207 output = "Torque";
208 break;
209 }
210 case JointItem::Pwm:{
211 output = "PWM";
212 break;
213 }
214 case JointItem::Current:{
215 output = "Current";
216 break;
217 }
218
220 output = "Disconnected";
221 break;
222 }
223 case JointItem::HwFault:{
224 output = "Hardware Fault";
225 break;
226 }
228 output = "Calibrating";
229 break;
230 }
232 output = "Not Configured";
233 break;
234 }
236 output = "Configured";
237 break;
238 }
239
240 default:
241 output = "Unknown";
242 break;
243 }
244
245 return output;
246
247}
248
249void JointItem::updateTrajectoryPositionTarget(double val)
250{
251 ui->sliderPosTrajectory_Position->updateSliderTarget(val);
252}
253
254void JointItem::updateMixedPositionTarget(double val)
255{
256 ui->sliderMixedPosition->updateSliderTarget(val);
257}
258
259JointItem::JointItem(int index,QWidget *parent) :
260 QWidget(parent),
261 ui(new Ui::JointItem)
262{
263 ui->setupUi(this);
264 internalState = StateStarting;
265 internalInteraction = InteractionStarting;
266 jointIndex = index;
267
268 connect(ui->comboMode,SIGNAL(currentIndexChanged(int)),this,SLOT(onModeChanged(int)));
269 connect(ui->comboInteraction,SIGNAL(currentIndexChanged(int)),this,SLOT(onInteractionChanged(int)));
270
271 ui->sliderPosTrajectory_Position->installEventFilter(this);
272 connect(ui->sliderPosTrajectory_Position,SIGNAL(sliderPressed()),this,SLOT(onSliderPosTrajectory_PositionPressed()));
273 connect(ui->sliderPosTrajectory_Position, SIGNAL(sliderReleased()), this, SLOT(onSliderPosTrajectory_PositionReleased()));
274 ui->sliderPosTrajectory_Position->disableClickOutOfHandle=true;
275 ui->sliderPosTrajectory_Position->enableViewTargetBox = true;
276 ui->sliderPosTrajectory_Position->enableViewTargetValue = false;
277
278 ui->sliderTorqueTorque->installEventFilter(this);
279 connect(ui->sliderTorqueTorque,SIGNAL(sliderPressed()),this,SLOT(onSliderTorquePressed()));
280 connect(ui->sliderTorqueTorque,SIGNAL(sliderReleased()),this,SLOT(onSliderTorqueReleased()));
281 ui->sliderTorqueTorque->disableClickOutOfHandle = true;
282 ui->sliderTorqueTorque->enableViewTargetBox = false;
283 ui->sliderTorqueTorque->enableViewTargetValue = false;
284
285 ui->sliderPWMOutput->installEventFilter(this);
286 connect(ui->sliderPWMOutput, SIGNAL(sliderPressed()), this, SLOT(onSliderPWMPressed()));
287 connect(ui->sliderPWMOutput, SIGNAL(sliderReleased()), this, SLOT(onSliderPWMReleased()));
288 ui->sliderPWMOutput->disableClickOutOfHandle = true;
289 ui->sliderPWMOutput->enableViewTargetBox = false;
290 ui->sliderPWMOutput->enableViewTargetValue = false;
291
292 ui->sliderCurrentOutput->installEventFilter(this);
293 connect(ui->sliderCurrentOutput, SIGNAL(sliderPressed()), this, SLOT(onSliderCurrentPressed()));
294 connect(ui->sliderCurrentOutput, SIGNAL(sliderReleased()), this, SLOT(onSliderCurrentReleased()));
295 ui->sliderCurrentOutput->disableClickOutOfHandle = true;
296 ui->sliderCurrentOutput->enableViewTargetBox = false;
297 ui->sliderCurrentOutput->enableViewTargetValue = false;
298
299 ui->sliderDirectPosition->installEventFilter(this);
300 connect(ui->sliderDirectPosition, SIGNAL(sliderPressed()), this, SLOT(onSliderDirectPositionPressed()));
301 connect(ui->sliderDirectPosition, SIGNAL(sliderReleased()), this, SLOT(onSliderDirectPositionReleased()));
302 ui->sliderDirectPosition->disableClickOutOfHandle = true;
303 ui->sliderDirectPosition->enableViewTargetBox = false;
304 ui->sliderDirectPosition->enableViewTargetValue = false;
305
306 ui->sliderVelocityDirectVelocityDirect->installEventFilter(this);
307 connect(ui->sliderVelocityDirectVelocityDirect, SIGNAL(sliderPressed()), this, SLOT(onSliderVelocityDirectPressed()));
308 connect(ui->sliderVelocityDirectVelocityDirect, SIGNAL(sliderReleased()), this, SLOT(onSliderVelocityDirectReleased()));
309 ui->sliderVelocityDirectVelocityDirect->disableClickOutOfHandle = true;
310 ui->sliderVelocityDirectVelocityDirect->enableViewTargetBox = false;
311 ui->sliderVelocityDirectVelocityDirect->enableViewTargetValue = false;
312
313 ui->sliderMixedPosition->installEventFilter(this);
314 connect(ui->sliderMixedPosition, SIGNAL(sliderPressed()), this, SLOT(onSliderMixedPositionPressed()));
315 connect(ui->sliderMixedPosition, SIGNAL(sliderReleased()), this, SLOT(onSliderMixedPositionReleased()));
316 ui->sliderMixedPosition->disableClickOutOfHandle = true;
317 ui->sliderMixedPosition->enableViewTargetBox = true;
318 ui->sliderMixedPosition->enableViewTargetValue = false;
319
320 ui->sliderVelTrajectory_Velocity->installEventFilter(this);
321 connect(ui->sliderVelTrajectory_Velocity,SIGNAL(sliderPressed()),this,SLOT(onSliderVelTrajectory_VelocityPressed()));
322 connect(ui->sliderVelTrajectory_Velocity,SIGNAL(sliderReleased()),this,SLOT(onSliderVelTrajectory_VelocityReleased()));
323 ui->sliderVelTrajectory_Velocity->disableClickOutOfHandle = true;
324 ui->sliderVelTrajectory_Velocity->enableViewTargetBox = false;
325 ui->sliderVelTrajectory_Velocity->enableViewTargetValue = false;
326
327 ui->sliderPosTrajectory_Velocity->installEventFilter(this);
328 connect(ui->sliderPosTrajectory_Velocity, SIGNAL(sliderPressed()), this, SLOT(onSliderPosTrajectory_VelocityPressed()));
329 connect(ui->sliderPosTrajectory_Velocity, SIGNAL(sliderReleased()), this, SLOT(onSliderPosTrajectory_VelocityReleased()));
330 ui->sliderPosTrajectory_Velocity->disableClickOutOfHandle = true;
331 ui->sliderPosTrajectory_Velocity->enableViewTargetBox = false;
332 ui->sliderPosTrajectory_Velocity->enableViewTargetValue = false;
333
334 ui->sliderVelTrajectory_Acceleration->installEventFilter(this);
335 connect(ui->sliderVelTrajectory_Acceleration, SIGNAL(sliderPressed()), this, SLOT(onSliderVelTrajectory_AccelerationPressed()));
336 connect(ui->sliderVelTrajectory_Acceleration, SIGNAL(sliderReleased()), this, SLOT(onSliderVelTrajectory_AccelerationReleased()));
337 ui->sliderVelTrajectory_Acceleration->disableClickOutOfHandle = true;
338 ui->sliderVelTrajectory_Acceleration->enableViewTargetBox = false;
339 ui->sliderVelTrajectory_Acceleration->enableViewTargetValue = false;
340
341 ui->sliderMixedVelocity->installEventFilter(this);
342 connect(ui->sliderMixedVelocity, SIGNAL(sliderPressed()), this, SLOT(onSliderMixedVelocityPressed()));
343 connect(ui->sliderMixedVelocity, SIGNAL(sliderReleased()), this, SLOT(onSliderMixedVelocityReleased()));
344 ui->sliderMixedVelocity->disableClickOutOfHandle = true;
345 ui->sliderMixedVelocity->enableViewTargetBox = false;
346 ui->sliderMixedVelocity->enableViewTargetValue = false;
347
348 connect(ui->buttonHome,SIGNAL(clicked()),this,SLOT(onHomeClicked()));
349 connect(ui->buttonIdle,SIGNAL(clicked()),this,SLOT(onIdleClicked()));
350 connect(ui->buttonRun,SIGNAL(clicked()),this,SLOT(onRunClicked()));
351 connect(ui->buttonPid,SIGNAL(clicked()),this,SLOT(onPidClicked()));
352 connect(ui->buttonCalib,SIGNAL(clicked()),this,SLOT(onCalibClicked()));
353
354 ui->groupBox->setTitle(QString("JOINT %1 (%2)").arg(index).arg(jointName));
355 // ui->groupBox->setAlignment(Qt::AlignHCenter);
356
357
358
359
360 comboStyle1 = "QComboBox {"
361 "border: 1px solid gray;"
362 "border-radius: 3px;"
363 "padding: 1px 18px 1px 3px;"
364 "min-width: 6em;}"
365 "QComboBox:editable {"
366 "background: white;"
367 "foreground: rgb(35, 38, 41);}"
368 "QComboBox::down-arrow {"
369 "image: url(:/images/downArrow.png);}";
370
371
372 comboStyle2 = "QComboBox:on { "
373 "padding-top: 3px;"
374 "padding-left: 4px;}"
375 "QComboBox::drop-down {"
376 "subcontrol-origin: padding;"
377 "subcontrol-position: top right;"
378 "width: 15px;"
379 "border-left-width: 1px;"
380 "border-left-color: darkgray;"
381 "border-left-style: solid; "
382 "border-top-right-radius: 3px; "
383 "border-bottom-right-radius: 3px;"
384 "background-color: darkgray;}";
385
386
387
388 installFilter();
389
390 ui->comboInteraction->setItemData(0,QColor(Qt::darkGray), Qt::BackgroundRole);
391 ui->comboInteraction->setItemData(1,QColor(0,80,255), Qt::BackgroundRole);
392 ui->comboInteraction->setItemData(1,QColor(35, 38, 41), Qt::ForegroundRole);
393
394 ui->comboMode->setItemData( IDLE, idleColor, Qt::BackgroundRole );
395 ui->comboMode->setItemData( POSITION, positionColor, Qt::BackgroundRole );
396 ui->comboMode->setItemData( POSITION_DIR, positionDirectColor, Qt::BackgroundRole );
397 ui->comboMode->setItemData( MIXED, mixedColor, Qt::BackgroundRole );
398 ui->comboMode->setItemData( VELOCITY, velocityColor, Qt::BackgroundRole );
399 ui->comboMode->setItemData( VELOCITY_DIR, velocityDirectColor, Qt::BackgroundRole );
400 ui->comboMode->setItemData( TORQUE, torqueColor, Qt::BackgroundRole );
401 ui->comboMode->setItemData( PWM, pwmColor, Qt::BackgroundRole );
402 ui->comboMode->setItemData( CURRENT, currentColor, Qt::BackgroundRole);
403
404 ui->comboMode->setItemData( IDLE, QColor(35, 38, 41), Qt::ForegroundRole );
405 ui->comboMode->setItemData( POSITION, QColor(35, 38, 41), Qt::ForegroundRole );
406 ui->comboMode->setItemData( POSITION_DIR, QColor(35, 38, 41), Qt::ForegroundRole );
407 ui->comboMode->setItemData( MIXED, QColor(35, 38, 41), Qt::ForegroundRole );
408 ui->comboMode->setItemData( VELOCITY, QColor(35, 38, 41), Qt::ForegroundRole );
409 ui->comboMode->setItemData( VELOCITY_DIR, QColor(35, 38, 41), Qt::ForegroundRole );
410 ui->comboMode->setItemData( TORQUE, QColor(35, 38, 41), Qt::ForegroundRole );
411 ui->comboMode->setItemData( PWM, QColor(35, 38, 41), Qt::ForegroundRole );
412 ui->comboMode->setItemData( CURRENT, QColor(35, 38, 41), Qt::ForegroundRole );
413
414 ui->comboMode->setItemData( IDLE, Idle, Qt::UserRole);
415 ui->comboMode->setItemData( POSITION, Position, Qt::UserRole );
416 ui->comboMode->setItemData( POSITION_DIR, PositionDirect, Qt::UserRole );
417 ui->comboMode->setItemData( MIXED, Mixed, Qt::UserRole );
418 ui->comboMode->setItemData( VELOCITY, Velocity, Qt::UserRole );
419 ui->comboMode->setItemData( VELOCITY_DIR, VelocityDirect, Qt::UserRole );
420 ui->comboMode->setItemData( TORQUE, Torque, Qt::UserRole );
421 ui->comboMode->setItemData( PWM, Pwm, Qt::UserRole);
422 ui->comboMode->setItemData( CURRENT, Current, Qt::UserRole);
423
424 setJointInternalState(IDLE);
425
426 ui->stackedWidget->widget(VELOCITY)->setEnabled(false);
427 velocityTimer.setInterval(50);
428 velocityTimer.setSingleShot(false);
429 connect(&velocityTimer,SIGNAL(timeout()),this,SLOT(onVelocityTimer()));
430
431 ui->stackedWidget->widget(VELOCITY_DIR)->setEnabled(false);
432 velocityDirectTimer.setInterval(50);
433 velocityDirectTimer.setSingleShot(false);
434 connect(&velocityDirectTimer,SIGNAL(timeout()),this,SLOT(onVelocityDirectTimer()));
435
436 ui->stackedWidget->widget(PWM)->setEnabled(false);
437 pwmTimer.setInterval(50);
438 pwmTimer.setSingleShot(false);
439 connect(&pwmTimer,SIGNAL(timeout()),this,SLOT(onPwmTimer()));
440
441 ui->stackedWidget->widget(CURRENT)->setEnabled(false);
442 currentTimer.setInterval(50);
443 currentTimer.setSingleShot(false);
444 connect(&currentTimer,SIGNAL(timeout()),this,SLOT(onCurrentTimer()));
445
446 ui->stackedWidget->widget(TORQUE)->setEnabled(false);
447 torqueTimer.setInterval(50);
448 torqueTimer.setSingleShot(false);
449 connect(&torqueTimer,SIGNAL(timeout()),this,SLOT(onTorqueTimer()));
450}
451
452bool JointItem::eventFilter(QObject *obj, QEvent *event)
453{
454 if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
455 auto* keyEvent = static_cast<QKeyEvent *>(event);
456 int key = keyEvent->key();
457 if(key == Qt::Key_Left || key == Qt::Key_Right || key == Qt::Key_Up ||
458 key == Qt::Key_Down || key == Qt::Key_PageUp || key == Qt::Key_PageDown){
459
460 //SliderWithTarget *slider=0;
461 QSlider* slider = nullptr;
462
463 if(obj == ui->sliderPosTrajectory_Position){
464 slider = ui->sliderPosTrajectory_Position;
465 if(keyEvent->type() == QEvent::KeyPress){
466 onSliderPosTrajectory_PositionPressed();
467 }
468 if(keyEvent->type() == QEvent::KeyRelease){
469 onSliderPosTrajectory_PositionReleased();
470 }
471 }
472 if(obj == ui->sliderPosTrajectory_Velocity){
473 slider = ui->sliderPosTrajectory_Velocity;
474 if (keyEvent->type() == QEvent::KeyPress){
475 onSliderPosTrajectory_VelocityPressed();
476 }
477 if (keyEvent->type() == QEvent::KeyRelease){
478 onSliderPosTrajectory_VelocityReleased();
479 }
480 }
481 if(obj == ui->sliderDirectPosition){
482 slider = ui->sliderDirectPosition;
483 if(keyEvent->type() == QEvent::KeyPress){
484 onSliderDirectPositionPressed();
485 }
486 if(keyEvent->type() == QEvent::KeyRelease){
487 onSliderDirectPositionReleased();
488 }
489 }
490 if(obj == ui->sliderMixedPosition){
491 slider = ui->sliderMixedPosition;
492 if(keyEvent->type() == QEvent::KeyPress){
493 onSliderMixedPositionPressed();
494 }
495 if(keyEvent->type() == QEvent::KeyRelease){
496 onSliderMixedPositionReleased();
497 }
498 }
499 if(obj == ui->sliderMixedVelocity){
500 slider = ui->sliderMixedVelocity;
501 }
502 if(obj == ui->sliderTorqueTorque){
503 slider = ui->sliderTorqueTorque;
504 if(keyEvent->type() == QEvent::KeyPress){
505 onSliderTorquePressed();
506 }
507 if(keyEvent->type() == QEvent::KeyRelease){
508 onSliderTorqueReleased();
509 }
510 }
511 if (obj == ui->sliderPWMOutput){
512 slider = ui->sliderPWMOutput;
513 if(keyEvent->type() == QEvent::KeyPress){
514 onSliderPWMPressed();
515 }
516 if(keyEvent->type() == QEvent::KeyRelease){
517 onSliderPWMReleased();
518 }
519 }
520 if (obj == ui->sliderCurrentOutput){
521 slider = ui->sliderCurrentOutput;
522 if (keyEvent->type() == QEvent::KeyPress){
523 onSliderCurrentPressed();
524 }
525 if (keyEvent->type() == QEvent::KeyRelease){
526 onSliderCurrentReleased();
527 }
528 }
529 if(obj == ui->sliderVelTrajectory_Velocity){
530 slider = ui->sliderVelTrajectory_Velocity;
531 if(keyEvent->type() == QEvent::KeyPress){
532 onSliderVelTrajectory_VelocityPressed();
533 }
534 if(keyEvent->type() == QEvent::KeyRelease){
535 onSliderVelTrajectory_VelocityReleased();
536 }
537 }
538 if(obj == ui->sliderVelTrajectory_Acceleration){
539 slider = ui->sliderVelTrajectory_Acceleration;
540 if(keyEvent->type() == QEvent::KeyPress){
541 onSliderVelTrajectory_AccelerationPressed();
542 }
543 if(keyEvent->type() == QEvent::KeyRelease){
544 onSliderVelTrajectory_AccelerationPressed();
545 }
546 }
547
548 if (slider == nullptr) {
549 return false;
550 }
551
552
553 if(keyEvent->type() == QEvent::KeyPress){
554 if(key == Qt::Key_Left || key == Qt::Key_Down){
555 slider->setValue(slider->value() - 1);
556 }
557 if(key == Qt::Key_Right || key == Qt::Key_Up){
558 slider->setValue(slider->value() + 1);
559 }
560 if(key == Qt::Key_PageUp){
561 slider->setValue(slider->value() + 10);
562 }
563 if(key == Qt::Key_PageDown){
564 slider->setValue(slider->value() - 10);
565 }
566 }
567
568
569 return true;
570 }
571 return QObject::eventFilter(obj, event);
572
573 } else {
574 // standard event processing
575 return QObject::eventFilter(obj, event);
576 }
577}
578
580{
581 velocityModeEnabled = control;
582 ui->stackedWidget->widget(VELOCITY)->setEnabled(velocityModeEnabled);
583 if(ui->stackedWidget->currentIndex() == VELOCITY && velocityModeEnabled){
584 velocityTimer.start();
585 }
586}
587
589{
590 velocityDirectModeEnabled = control;
591 ui->stackedWidget->widget(VELOCITY_DIR)->setEnabled(velocityDirectModeEnabled);
592 if(ui->stackedWidget->currentIndex() == VELOCITY_DIR && velocityDirectModeEnabled){
593 velocityDirectTimer.start();
594 }
595}
596
598{
599 ui->stackedWidget->widget(MIXED)->setEnabled(control);
600}
601
603{
604 ui->stackedWidget->widget(POSITION_DIR)->setEnabled(control);
605}
606
608{
609 pwmModeEnabled = control;
610 ui->stackedWidget->widget(PWM)->setEnabled(pwmModeEnabled);
611 if(ui->stackedWidget->currentIndex() == PWM && pwmModeEnabled)
612 {
613 pwmTimer.start();
614 }
615}
616
618{
619 currentModeEnabled = control;
620 ui->stackedWidget->widget(CURRENT)->setEnabled(currentModeEnabled);
621 if(ui->stackedWidget->currentIndex() == CURRENT && currentModeEnabled)
622 {
623 currentTimer.start();
624 }
625}
626
628{
629 torqueModeEnabled = control;
630 ui->stackedWidget->widget(TORQUE)->setEnabled(torqueModeEnabled);
631 if(ui->stackedWidget->currentIndex() == TORQUE && torqueModeEnabled)
632 {
633 torqueTimer.start();
634 }
635}
636
638{
639 ui->sliderPosTrajectory_Position->enableViewTargetBox = visible;
640 ui->sliderMixedPosition->enableViewTargetBox = visible;
641}
642
644{
645 ui->sliderPosTrajectory_Position->enableViewTargetValue = visible;
646 ui->sliderMixedPosition->enableViewTargetValue = visible;
647}
648
650{
651 QString pos_metric_revolute("deg");
652 QString trq_metric_revolute("Nm");
653 QString trq_metric_revolute_title("Torque:");
654 QString vel_metric_revolute("deg/s");
655 QString pos_metric_prism("m");
656 QString trq_metric_prism("N");
657 QString trq_metric_prism_title("Force:");
658 QString vel_metric_prism("m/s");
659
661 {
662 ui->labelIdlevelUnits->setText(vel_metric_revolute);
663 ui->labelPositionvelUnits->setText(vel_metric_revolute);
664 ui->labelPositionDirvelUnits->setText(vel_metric_revolute);
665 ui->labelMixedvelUnits->setText(vel_metric_revolute);
666 ui->labelTorquevelUnits->setText(vel_metric_revolute);
667 ui->labelPWMvelUnits->setText(vel_metric_revolute);
668 ui->labelCurrentvelUnits->setText(vel_metric_revolute);
669 ui->labelVelocityvelUnits->setText(vel_metric_revolute);
670 ui->labelVelocityDirvelUnits->setText(vel_metric_revolute);
671
672 ui->labelIdleTorque->setText(trq_metric_revolute_title);
673 ui->labelPositionTorque->setText(trq_metric_revolute_title);
674 ui->labelPositionDirTorque->setText(trq_metric_revolute_title);
675 ui->labelMixedTorque->setText(trq_metric_revolute_title);
676 ui->labelTorqueTorque->setText(trq_metric_revolute_title);
677 ui->labelPWMTorque->setText(trq_metric_revolute_title);
678 ui->labelCurrentTorque->setText(trq_metric_revolute_title);
679 ui->labelVelocityTorque->setText(trq_metric_revolute_title);
680 ui->labelVelocityDirTorque->setText(trq_metric_revolute_title);
681
682 ui->labelIdleposUnits->setText(pos_metric_revolute);
683 ui->labelPositionposUnits->setText(pos_metric_revolute);
684 ui->labelPositionDirposUnits->setText(pos_metric_revolute);
685 ui->labelMixedposUnits->setText(pos_metric_revolute);
686 ui->labelTorqueposUnits->setText(pos_metric_revolute);
687 ui->labelPWMposUnits->setText(pos_metric_revolute);
688 ui->labelCurrentposUnits->setText(pos_metric_revolute);
689 ui->labelVelocityposUnits->setText(pos_metric_revolute);
690 ui->labelVelocityDirposUnits->setText(pos_metric_revolute);
691 ui->labelFaultposUnits->setText(pos_metric_revolute);
692
693 //ui->labelIdleMotorPosUnits->setText(pos_metric_revolute);
694 //ui->labelFaultMotorPosUnits->setText(pos_metric_revolute);
695
696 ui->labelIdletrqUnits->setText(trq_metric_revolute);
697 ui->labelPositiontrqUnits->setText(trq_metric_revolute);
698 ui->labelPositionDirtrqUnits->setText(trq_metric_revolute);
699 ui->labelMixedtrqUnits->setText(trq_metric_revolute);
700 ui->labelTorquetrqUnits->setText(trq_metric_revolute);
701 ui->labelPWMtrqUnits->setText(trq_metric_revolute);
702 ui->labelCurrenttrqUnits->setText(pos_metric_revolute);
703 ui->labelVelocitytrqUnits->setText(trq_metric_revolute);
704 ui->labelVelocityDirtrqUnits->setText(trq_metric_revolute);
705 }
707 {
708 ui->labelIdlevelUnits->setText(vel_metric_prism);
709 ui->labelPositionvelUnits->setText(vel_metric_prism);
710 ui->labelPositionDirvelUnits->setText(vel_metric_prism);
711 ui->labelMixedvelUnits->setText(vel_metric_prism);
712 ui->labelTorquevelUnits->setText(vel_metric_prism);
713 ui->labelPWMvelUnits->setText(vel_metric_prism);
714 ui->labelCurrentvelUnits->setText(vel_metric_prism);
715 ui->labelVelocityvelUnits->setText(vel_metric_prism);
716 ui->labelVelocityDirvelUnits->setText(vel_metric_prism);
717
718 ui->labelIdleTorque->setText(trq_metric_prism_title);
719 ui->labelPositionTorque->setText(trq_metric_prism_title);
720 ui->labelPositionDirTorque->setText(trq_metric_prism_title);
721 ui->labelMixedTorque->setText(trq_metric_prism_title);
722 ui->labelTorqueTorque->setText(trq_metric_prism_title);
723 ui->labelPWMTorque->setText(trq_metric_prism_title);
724 ui->labelCurrentTorque->setText(trq_metric_prism_title);
725 ui->labelVelocityTorque->setText(trq_metric_prism_title);
726 ui->labelVelocityDirTorque->setText(vel_metric_prism);
727
728 ui->labelIdleposUnits->setText(pos_metric_prism);
729 ui->labelPositionposUnits->setText(pos_metric_prism);
730 ui->labelPositionDirposUnits->setText(pos_metric_prism);
731 ui->labelMixedposUnits->setText(pos_metric_prism);
732 ui->labelTorqueposUnits->setText(pos_metric_prism);
733 ui->labelPWMposUnits->setText(pos_metric_prism);
734 ui->labelCurrentposUnits->setText(pos_metric_prism);
735 ui->labelVelocityposUnits->setText(pos_metric_prism);
736 ui->labelVelocityDirposUnits->setText(pos_metric_prism);
737 ui->labelFaultposUnits->setText(pos_metric_prism);
738
739 //ui->labelIdleMotorPosUnits->setText(pos_metric_prism);
740 //ui->labelFaultMotorPosUnits->setText(pos_metric_prism);
741
742 ui->labelIdletrqUnits->setText(trq_metric_prism);
743 ui->labelPositiontrqUnits->setText(trq_metric_prism);
744 ui->labelPositionDirtrqUnits->setText(trq_metric_prism);
745 ui->labelMixedtrqUnits->setText(trq_metric_prism);
746 ui->labelTorquetrqUnits->setText(trq_metric_prism);
747 ui->labelPWMtrqUnits->setText(trq_metric_prism);
748 ui->labelCurrenttrqUnits->setText(trq_metric_prism);
749 ui->labelVelocitytrqUnits->setText(trq_metric_prism);
750 ui->labelVelocityDirtrqUnits->setText(trq_metric_prism);
751 }
752 else
753 {
754 yFatal("Unspecified joint type");
755 }
756}
757
759{
760 joint_motorPositionVisible = visible;
761 ui->editIdleMotorPos->setVisible(visible);
762 ui->editPositionMotorPos->setVisible(visible);
763 ui->editPositionDirMotorPos->setVisible(visible);
764 ui->editMixedMotorPos->setVisible(visible);
765 ui->editTorqueMotorPos->setVisible(visible);
766 ui->editPWMMotorPos->setVisible(visible);
767 ui->editCurrentMotorPos->setVisible(visible);
768 ui->editVelocityMotorPos->setVisible(visible);
769 ui->editVelocityDirMotorPos->setVisible(visible);
770 ui->editFaultMotorPos->setVisible(visible);
771
772 ui->labelIdleMotorPos->setVisible(visible);
773 ui->labelPositionMotorPos->setVisible(visible);
774 ui->labelPositionDirMotorPos->setVisible(visible);
775 ui->labelMixedMotorPos->setVisible(visible);
776 ui->labelTorqueMotorPos->setVisible(visible);
777 ui->labelPWMMotorPos->setVisible(visible);
778 ui->labelCurrentMotorPos->setVisible(visible);
779 ui->labelVelocityMotorPos->setVisible(visible);
780 ui->labelVelocityDirMotorPos->setVisible(visible);
781 ui->labelFaultMotorPos->setVisible(visible);
782
783 ui->labelIdleMotorPosUnits->setVisible(visible);
784 ui->labelPositionMotorPosUnits->setVisible(visible);
785 ui->labelPositionDirMotorPosUnits->setVisible(visible);
786 ui->labelMixedMotorPosUnits->setVisible(visible);
787 ui->labelTorqueMotorPosUnits->setVisible(visible);
788 ui->labelPWMMotorPosUnits->setVisible(visible);
789 ui->labelCurrentMotorPosUnits->setVisible(visible);
790 ui->labelVelocityMotorPosUnits->setVisible(visible);
791 ui->labelVelocityDirMotorPosUnits->setVisible(visible);
792 ui->labelFaultMotorPosUnits->setVisible(visible);
793
794 if (!visible) {
795 ui->editIdleMotorPos->setMinimumHeight(0);
796 ui->editPositionMotorPos->setMinimumHeight(0);
797 ui->editPositionDirMotorPos->setMinimumHeight(0);
798 ui->editMixedMotorPos->setMinimumHeight(0);
799 ui->editTorqueMotorPos->setMinimumHeight(0);
800 ui->editPWMMotorPos->setMinimumHeight(0);
801 ui->editCurrentMotorPos->setMinimumHeight(0);
802 ui->editVelocityMotorPos->setMinimumHeight(0);
803 ui->editVelocityDirMotorPos->setMinimumHeight(0);
804 ui->editFaultMotorPos->setMinimumHeight(0);
805
806 ui->labelPositionMotorPos->setMinimumHeight(0);
807 ui->labelPositionMotorPosUnits->setMinimumHeight(0);
808 ui->labelPositionDirMotorPos->setMinimumHeight(0);
809 ui->labelPositionDirMotorPosUnits->setMinimumHeight(0);
810 ui->labelMixedMotorPos->setMinimumHeight(0);
811 ui->labelMixedMotorPosUnits->setMinimumHeight(0);
812 ui->labelTorqueMotorPos->setMinimumHeight(0);
813 ui->labelTorqueMotorPosUnits->setMinimumHeight(0);
814 ui->labelPWMMotorPos->setMinimumHeight(0);
815 ui->labelPWMMotorPosUnits->setMinimumHeight(0);
816 ui->labelCurrentMotorPos->setMinimumHeight(0);
817 ui->labelCurrentMotorPosUnits->setMinimumHeight(0);
818 ui->labelVelocityMotorPos->setMinimumHeight(0);
819 ui->labelVelocityMotorPosUnits->setMinimumHeight(0);
820 ui->labelVelocityDirMotorPos->setMinimumHeight(0);
821 ui->labelVelocityDirMotorPosUnits->setMinimumHeight(0);
822 ui->labelIdleMotorPos->setMinimumHeight(0);
823 ui->labelIdleMotorPosUnits->setMinimumHeight(0);
824 ui->labelFaultMotorPos->setMinimumHeight(0);
825 ui->labelFaultMotorPosUnits->setMinimumHeight(0);
826 }
827 else {
828 ui->editIdleMotorPos->setMinimumHeight(20);
829 ui->editPositionMotorPos->setMinimumHeight(20);
830 ui->editPositionDirMotorPos->setMinimumHeight(20);
831 ui->editMixedMotorPos->setMinimumHeight(20);
832 ui->editTorqueMotorPos->setMinimumHeight(20);
833 ui->editPWMMotorPos->setMinimumHeight(20);
834 ui->editCurrentMotorPos->setMinimumHeight(20);
835 ui->editVelocityMotorPos->setMinimumHeight(20);
836 ui->editVelocityDirMotorPos->setMinimumHeight(20);
837 ui->editFaultMotorPos->setMinimumHeight(20);
838
839 ui->labelPositionMotorPos->setMinimumHeight(20);
840 ui->labelPositionMotorPosUnits->setMinimumHeight(20);
841 ui->labelPositionDirMotorPos->setMinimumHeight(20);
842 ui->labelPositionDirMotorPosUnits->setMinimumHeight(20);
843 ui->labelMixedMotorPos->setMinimumHeight(20);
844 ui->labelMixedMotorPosUnits->setMinimumHeight(20);
845 ui->labelTorqueMotorPos->setMinimumHeight(20);
846 ui->labelTorqueMotorPosUnits->setMinimumHeight(20);
847 ui->labelPWMMotorPos->setMinimumHeight(20);
848 ui->labelPWMMotorPosUnits->setMinimumHeight(20);
849 ui->labelCurrentMotorPos->setMinimumHeight(20);
850 ui->labelCurrentMotorPosUnits->setMinimumHeight(20);
851 ui->labelVelocityMotorPos->setMinimumHeight(20);
852 ui->labelVelocityMotorPosUnits->setMinimumHeight(20);
853 ui->labelVelocityDirMotorPos->setMinimumHeight(20);
854 ui->labelVelocityDirMotorPosUnits->setMinimumHeight(20);
855 ui->labelIdleMotorPos->setMinimumHeight(20);
856 ui->labelIdleMotorPosUnits->setMinimumHeight(20);
857 ui->labelFaultMotorPos->setMinimumHeight(20);
858 ui->labelFaultMotorPosUnits->setMinimumHeight(20);
859 }
860}
861
863{
864 joint_dutyVisible = visible;
865 //ui->editIdleDuty->setVisible(visible);
866 //ui->editPositionDuty->setVisible(visible);
867 //ui->editPositionDirDuty->setVisible(visible);
868 // ui->editMixedDuty->setVisible(visible);
869 ui->editTorqueDuty->setVisible(visible);
870 ui->editCurrentDuty->setVisible(visible);
871 //ui->editPWMDuty->setVisible(visible);
872 //ui->editDutyDuty->setVisible(visible);
873 //ui->editVelocityDuty->setVisible(visible);
874
875 //ui->labelIdleDuty->setVisible(visible);
876 //ui->labelIdleDutyUnits->setVisible(visible);
877 //ui->labelPositionDuty->setVisible(visible);
878 //ui->labelPositionDutyUnits->setVisible(visible);
879 //ui->labelPositionDirDuty->setVisible(visible);
880 //ui->labelPositionDirDutyUnits->setVisible(visible);
881 //ui->labelMixedDuty->setVisible(visible);
882 //ui->labelMixedDutyUnits->setVisible(visible);
883 ui->labelTorqueDuty->setVisible(visible);
884 ui->labelTorqueDutyUnits->setVisible(visible);
885 //ui->labelPWMDuty->setVisible(visible);
886 ui->labelCurrentDuty->setVisible(visible);
887 //ui->labelPWMDutyUnits->setVisible(visible);
888 ui->labelCurrentDutyUnits->setVisible(visible);
889 //ui->labelVelocityDuty->setVisible(visible);
890 //ui->labelVelocityDutyUnits->setVisible(visible);
891
892
893 if (!visible) {
894 //ui->editIdleDuty->setMinimumHeight(0);
895 //ui->editPositionDuty->setMinimumHeight(0);
896 //ui->editPositionDirDuty->setMinimumHeight(0);
897 //ui->editMixedDuty->setMinimumHeight(0);
898 //ui->editTorqueDuty->setMinimumHeight(0);
899 //ui->editPWMDuty->setMinimumHeight(0);
900 //ui->editDutyDuty->setMinimumHeight(0);
901 //ui->editVelocityDuty->setMinimumHeight(0);
902
903 //ui->labelPositionDuty->setMinimumHeight(0);
904 //ui->labelPositionDutyUnits->setMinimumHeight(0);
905 //ui->labelPositionDirDuty->setMinimumHeight(0);
906 //ui->labelPositionDirDutyUnits->setMinimumHeight(0);
907 //ui->labelMixedDuty->setMinimumHeight(0);
908 //ui->labelMixedDutyUnits->setMinimumHeight(0);
909 ui->labelTorqueDuty->setMinimumHeight(0);
910 ui->labelTorqueDutyUnits->setMinimumHeight(0);
911 //ui->labelPWMDuty->setMinimumHeight(0);
912 //ui->labelPWMDutyUnits->setMinimumHeight(0);
913 ui->labelCurrentDuty->setMinimumHeight(0);
914 ui->labelCurrentDutyUnits->setMinimumHeight(0);
915 //ui->labelVelocityDuty->setMinimumHeight(0);
916 //ui->labelVelocityDutyUnits->setMinimumHeight(0);
917 //ui->labelIdleDuty->setMinimumHeight(0);
918 //ui->labelIdleDutyUnits->setMinimumHeight(0);
919 }
920 else {
921 //ui->editIdleDuty->setMinimumHeight(20);
922 //ui->editPositionDuty->setMinimumHeight(20);
923 //ui->editPositionDirDuty->setMinimumHeight(20);
924 //ui->editMixedDuty->setMinimumHeight(20);
925 ui->editTorqueDuty->setMinimumHeight(20);
926 //ui->editPWMDuty->setMinimumHeight(20);
927 ui->editCurrentDuty->setMinimumHeight(20);
928 //ui->editVelocityDuty->setMinimumHeight(20);
929
930 //ui->labelPositionDuty->setMinimumHeight(20);
931 //ui->labelPositionDutyUnits->setMinimumHeight(20);
932 //ui->labelPositionDirDuty->setMinimumHeight(20);
933 //ui->labelPositionDirDutyUnits->setMinimumHeight(20);
934 //ui->labelMixedDuty->setMinimumHeight(20);
935 //ui->labelMixedDutyUnits->setMinimumHeight(20);
936 ui->labelTorqueDuty->setMinimumHeight(20);
937 ui->labelTorqueDutyUnits->setMinimumHeight(20);
938 //ui->labelPWMDuty->setMinimumHeight(20);
939 //ui->labelPWMDutyUnits->setMinimumHeight(20);
940 ui->labelCurrentDuty->setMinimumHeight(20);
941 ui->labelCurrentDutyUnits->setMinimumHeight(20);
942 //ui->labelVelocityDuty->setMinimumHeight(20);
943 //ui->labelVelocityDutyUnits->setMinimumHeight(20);
944 //ui->labelIdleDuty->setMinimumHeight(20);
945 //ui->labelIdleDutyUnits->setMinimumHeight(20);
946 }
947}
948
950{
951 joint_currentVisible = visible;
952 ui->editIdleCurrent->setVisible(visible);
953 ui->editPositionCurrent->setVisible(visible);
954 ui->editPositionDirCurrent->setVisible(visible);
955 ui->editMixedCurrent->setVisible(visible);
956 ui->editTorqueCurrent->setVisible(visible);
957 ui->editPWMCurrent->setVisible(visible);
958 //ui->editCurrentCurrent->setVisible(visible);
959 ui->editVelocityCurrent->setVisible(visible);
960 ui->editVelocityDirCurrent->setVisible(visible);
961
962 ui->labelIdleCurrent->setVisible(visible);
963 ui->labelIdleCurrentUnits->setVisible(visible);
964 ui->labelPositionCurrent->setVisible(visible);
965 ui->labelPositionCurrentUnits->setVisible(visible);
966 ui->labelPositionDirCurrent->setVisible(visible);
967 ui->labelPositionDirCurrentUnits->setVisible(visible);
968 ui->labelMixedCurrent->setVisible(visible);
969 ui->labelMixedCurrentUnits->setVisible(visible);
970 ui->labelTorqueCurrent->setVisible(visible);
971 ui->labelTorqueCurrentUnits->setVisible(visible);
972 ui->labelPWMCurrent->setVisible(visible);
973 //ui->labelCurrentCurrent->setVisible(visible);
974 ui->labelPWMCurrentUnits->setVisible(visible);
975 //ui->labelCurrentCurrentUnits->setVisible(visible);
976 ui->labelVelocityCurrent->setVisible(visible);
977 ui->labelVelocityCurrentUnits->setVisible(visible);
978 ui->labelVelocityDirCurrent->setVisible(visible);
979 ui->labelVelocityDirCurrentUnits->setVisible(visible);
980
981 if (!visible) {
982 ui->editIdleCurrent->setMinimumHeight(0);
983 ui->editPositionCurrent->setMinimumHeight(0);
984 ui->editPositionDirCurrent->setMinimumHeight(0);
985 ui->editMixedCurrent->setMinimumHeight(0);
986 ui->editTorqueCurrent->setMinimumHeight(0);
987 ui->editPWMCurrent->setMinimumHeight(0);
988 //ui->editCurrentCurrent->setMinimumHeight(0);
989 ui->editVelocityCurrent->setMinimumHeight(0);
990 ui->editVelocityDirCurrent->setMinimumHeight(0);
991
992 ui->labelPositionCurrent->setMinimumHeight(0);
993 ui->labelPositionCurrentUnits->setMinimumHeight(0);
994 ui->labelPositionDirCurrent->setMinimumHeight(0);
995 ui->labelPositionDirCurrentUnits->setMinimumHeight(0);
996 ui->labelMixedCurrent->setMinimumHeight(0);
997 ui->labelMixedCurrentUnits->setMinimumHeight(0);
998 ui->labelTorqueCurrent->setMinimumHeight(0);
999 ui->labelTorqueCurrentUnits->setMinimumHeight(0);
1000 ui->labelPWMCurrent->setMinimumHeight(0);
1001 ui->labelPWMCurrentUnits->setMinimumHeight(0);
1002 //ui->labelCurrentCurrent->setMinimumHeight(0);
1003 //ui->labelCurrentCurrentUnits->setMinimumHeight(0);
1004 ui->labelVelocityCurrent->setMinimumHeight(0);
1005 ui->labelVelocityCurrentUnits->setMinimumHeight(0);
1006 ui->labelVelocityDirCurrent->setMinimumHeight(0);
1007 ui->labelVelocityDirCurrentUnits->setMinimumHeight(0);
1008 ui->labelIdleCurrent->setMinimumHeight(0);
1009 ui->labelIdleCurrentUnits->setMinimumHeight(0);
1010 }
1011 else {
1012 ui->editIdleCurrent->setMinimumHeight(20);
1013 ui->editPositionCurrent->setMinimumHeight(20);
1014 ui->editPositionDirCurrent->setMinimumHeight(20);
1015 ui->editMixedCurrent->setMinimumHeight(20);
1016 ui->editTorqueCurrent->setMinimumHeight(20);
1017 ui->editPWMCurrent->setMinimumHeight(20);
1018 //ui->editCurrentCurrent->setMinimumHeight(20);
1019 ui->editVelocityCurrent->setMinimumHeight(20);
1020 ui->editVelocityDirCurrent->setMinimumHeight(20);
1021
1022 ui->labelPositionCurrent->setMinimumHeight(20);
1023 ui->labelPositionCurrentUnits->setMinimumHeight(20);
1024 ui->labelPositionDirCurrent->setMinimumHeight(20);
1025 ui->labelPositionDirCurrentUnits->setMinimumHeight(20);
1026 ui->labelMixedCurrent->setMinimumHeight(20);
1027 ui->labelMixedCurrentUnits->setMinimumHeight(20);
1028 ui->labelTorqueCurrent->setMinimumHeight(20);
1029 ui->labelTorqueCurrentUnits->setMinimumHeight(20);
1030 ui->labelPWMCurrent->setMinimumHeight(20);
1031 ui->labelPWMCurrentUnits->setMinimumHeight(20);
1032 //ui->labelCurrentCurrent->setMinimumHeight(20);
1033 //ui->labelCurrentCurrentUnits->setMinimumHeight(20);
1034 ui->labelVelocityCurrent->setMinimumHeight(20);
1035 ui->labelVelocityCurrentUnits->setMinimumHeight(20);
1036 ui->labelVelocityDirCurrent->setMinimumHeight(20);
1037 ui->labelVelocityDirCurrentUnits->setMinimumHeight(20);
1038 ui->labelIdleCurrent->setMinimumHeight(20);
1039 ui->labelIdleCurrentUnits->setMinimumHeight(20);
1040 }
1041}
1042
1044{
1045 joint_speedVisible = visible;
1046 ui->editIdleSpeed->setVisible(visible);
1047 ui->editPositionSpeed->setVisible(visible);
1048 ui->editPositionDirSpeed->setVisible(visible);
1049 ui->editMixedSpeed->setVisible(visible);
1050 ui->editTorqueSpeed->setVisible(visible);
1051 ui->editPWMSpeed->setVisible(visible);
1052 ui->editCurrentSpeed->setVisible(visible);
1053 ui->editVelocitySpeed->setVisible(visible);
1054 ui->editVelocityDirSpeed->setVisible(visible);
1055
1056 ui->labelIdleSpeed->setVisible(visible);
1057 ui->labelIdlevelUnits->setVisible(visible);
1058 ui->labelPositionSpeed->setVisible(visible);
1059 ui->labelPositionvelUnits->setVisible(visible);
1060 ui->labelPositionDirSpeed->setVisible(visible);
1061 ui->labelPositionDirvelUnits->setVisible(visible);
1062 ui->labelMixedSpeed->setVisible(visible);
1063 ui->labelMixedvelUnits->setVisible(visible);
1064 ui->labelTorqueSpeed->setVisible(visible);
1065 ui->labelTorquevelUnits->setVisible(visible);
1066 ui->labelPWMSpeed->setVisible(visible);
1067 ui->labelCurrentSpeed->setVisible(visible);
1068 ui->labelPWMvelUnits->setVisible(visible);
1069 ui->labelCurrentvelUnits->setVisible(visible);
1070 ui->labelVelocitySpeed->setVisible(visible);
1071 ui->labelVelocityDirSpeed->setVisible(visible);
1072 ui->labelVelocityvelUnits->setVisible(visible);
1073 ui->labelVelocityDirvelUnits->setVisible(visible);
1074
1075 if(!visible){
1076 ui->editIdleSpeed->setMinimumHeight(0);
1077 ui->editPositionSpeed->setMinimumHeight(0);
1078 ui->editPositionDirSpeed->setMinimumHeight(0);
1079 ui->editMixedSpeed->setMinimumHeight(0);
1080 ui->editTorqueSpeed->setMinimumHeight(0);
1081 ui->editPWMSpeed->setMinimumHeight(0);
1082 ui->editCurrentSpeed->setMinimumHeight(0);
1083 ui->editVelocitySpeed->setMinimumHeight(0);
1084 ui->editVelocityDirSpeed->setMinimumHeight(0);
1085
1086 ui->labelPositionSpeed->setMinimumHeight(0);
1087 ui->labelPositionvelUnits->setMinimumHeight(0);
1088 ui->labelPositionDirSpeed->setMinimumHeight(0);
1089 ui->labelPositionDirvelUnits->setMinimumHeight(0);
1090 ui->labelMixedSpeed->setMinimumHeight(0);
1091 ui->labelMixedvelUnits->setMinimumHeight(0);
1092 ui->labelTorqueSpeed->setMinimumHeight(0);
1093 ui->labelTorquevelUnits->setMinimumHeight(0);
1094 ui->labelPWMSpeed->setMinimumHeight(0);
1095 ui->labelPWMvelUnits->setMinimumHeight(0);
1096 ui->labelCurrentSpeed->setMinimumHeight(0);
1097 ui->labelCurrentvelUnits->setMinimumHeight(0);
1098 ui->labelVelocitySpeed->setMinimumHeight(0);
1099 ui->labelVelocityvelUnits->setMinimumHeight(0);
1100 ui->labelIdleSpeed->setMinimumHeight(0);
1101 ui->labelIdlevelUnits->setMinimumHeight(0);
1102 }else{
1103 ui->editIdleSpeed->setMinimumHeight(20);
1104 ui->editPositionSpeed->setMinimumHeight(20);
1105 ui->editPositionDirSpeed->setMinimumHeight(20);
1106 ui->editMixedSpeed->setMinimumHeight(20);
1107 ui->editTorqueSpeed->setMinimumHeight(20);
1108 ui->editPWMSpeed->setMinimumHeight(20);
1109 ui->editCurrentSpeed->setMinimumHeight(20);
1110 ui->editVelocitySpeed->setMinimumHeight(20);
1111 ui->editVelocityDirSpeed->setMinimumHeight(20);
1112
1113 ui->labelPositionSpeed->setMinimumHeight(20);
1114 ui->labelPositionvelUnits->setMinimumHeight(20);
1115 ui->labelPositionDirSpeed->setMinimumHeight(20);
1116 ui->labelPositionDirvelUnits->setMinimumHeight(20);
1117 ui->labelMixedSpeed->setMinimumHeight(20);
1118 ui->labelMixedvelUnits->setMinimumHeight(20);
1119 ui->labelTorqueSpeed->setMinimumHeight(20);
1120 ui->labelTorquevelUnits->setMinimumHeight(20);
1121 ui->labelPWMSpeed->setMinimumHeight(20);
1122 ui->labelPWMvelUnits->setMinimumHeight(20);
1123 ui->labelCurrentSpeed->setMinimumHeight(20);
1124 ui->labelCurrentvelUnits->setMinimumHeight(20);
1125 ui->labelVelocitySpeed->setMinimumHeight(20);
1126 ui->labelVelocityDirSpeed->setMinimumHeight(20);
1127 ui->labelVelocityvelUnits->setMinimumHeight(20);
1128 ui->labelVelocityDirvelUnits->setMinimumHeight(20);
1129 ui->labelIdleSpeed->setMinimumHeight(20);
1130 ui->labelIdlevelUnits->setMinimumHeight(20);
1131 }
1132}
1133
1135{
1136 double positionSliderStep = 1 / (fabs(m_min_position - m_max_position) / 100.0);
1137 ui->sliderMixedPosition->setSliderStep(positionSliderStep);
1138 ui->sliderPosTrajectory_Position->setSliderStep(positionSliderStep);
1139 ui->sliderDirectPosition->setSliderStep(positionSliderStep);
1140 ui->sliderMixedPosition->setIsDouble(true);
1141 ui->sliderPosTrajectory_Position->setIsDouble(true);
1142 ui->sliderDirectPosition->setIsDouble(true);
1143 int sliderMin = m_min_position*positionSliderStep;
1144 int sliderMax = m_max_position*positionSliderStep;
1145 ui->sliderMixedPosition->setRange(sliderMin, sliderMax);
1146 ui->sliderPosTrajectory_Position->setRange(sliderMin, sliderMax);
1147 ui->sliderDirectPosition->setRange(sliderMin, sliderMax);
1148 ui->sliderMixedPosition->resetTarget();
1149 ui->sliderPosTrajectory_Position->resetTarget();
1150 ui->sliderDirectPosition->resetTarget();
1151}
1152
1154{
1155 double positionSliderStep = 1 / value;
1156 ui->sliderMixedPosition->setSliderStep(positionSliderStep);
1157 ui->sliderPosTrajectory_Position->setSliderStep(positionSliderStep);
1158 ui->sliderDirectPosition->setSliderStep(positionSliderStep);
1159 ui->sliderMixedPosition->setIsDouble(true);
1160 ui->sliderPosTrajectory_Position->setIsDouble(true);
1161 ui->sliderDirectPosition->setIsDouble(true);
1162 int sliderMin = m_min_position*positionSliderStep;
1163 int sliderMax = m_max_position*positionSliderStep;
1164 ui->sliderMixedPosition->setRange(sliderMin, sliderMax);
1165 ui->sliderPosTrajectory_Position->setRange(sliderMin, sliderMax);
1166 ui->sliderDirectPosition->setRange(sliderMin, sliderMax);
1167 ui->sliderMixedPosition->resetTarget();
1168 ui->sliderPosTrajectory_Position->resetTarget();
1169 ui->sliderDirectPosition->resetTarget();
1170}
1171
1173{
1174 if (fabs(m_max_position - m_min_position) < 1.0)
1175 {
1176 yError("Unable to set integer position slider");
1177 return;
1178 }
1179 double positionSliderStep = 1;
1180 ui->sliderMixedPosition->setSliderStep(positionSliderStep);
1181 ui->sliderPosTrajectory_Position->setSliderStep(positionSliderStep);
1182 ui->sliderDirectPosition->setSliderStep(positionSliderStep);
1183 ui->sliderMixedPosition->setIsDouble(false);
1184 ui->sliderPosTrajectory_Position->setIsDouble(false);
1185 ui->sliderDirectPosition->setIsDouble(false);
1186 int sliderMin = m_min_position;
1187 int sliderMax = m_max_position;
1188 ui->sliderMixedPosition->setRange(sliderMin, sliderMax);
1189 ui->sliderPosTrajectory_Position->setRange(sliderMin, sliderMax);
1190 ui->sliderDirectPosition->setRange(sliderMin, sliderMax);
1191 ui->sliderMixedPosition->resetTarget();
1192 ui->sliderPosTrajectory_Position->resetTarget();
1193 ui->sliderDirectPosition->resetTarget();
1194}
1195
1197{
1198 double velocitySliderStep = 1 / (fabs(-m_max_velocity - m_max_velocity) / 100.0); //note that we are using -max_velocity
1199 ui->sliderPosTrajectory_Velocity->setSliderStep(velocitySliderStep);
1200 ui->sliderPosTrajectory_Velocity->setIsDouble(true);
1201 ui->sliderVelTrajectory_Velocity->setSliderStep(velocitySliderStep);
1202 ui->sliderVelTrajectory_Velocity->setIsDouble(true);
1203 int sliderMin = -m_max_velocity*velocitySliderStep;
1204 int sliderMax = m_max_velocity*velocitySliderStep;
1205 ui->sliderPosTrajectory_Velocity->setRange(0, sliderMax);
1206 ui->sliderVelTrajectory_Velocity->setRange(sliderMin, sliderMax);
1207 int v = ui->sliderVelTrajectory_Velocity->value();
1208 if (v > sliderMax) {}
1209 if (v < sliderMin) {}
1211}
1212
1214{
1215 double velocitySliderStep = 1 / value;
1216 ui->sliderPosTrajectory_Velocity->setSliderStep(velocitySliderStep);
1217 ui->sliderPosTrajectory_Velocity->setIsDouble(true);
1218 ui->sliderVelTrajectory_Velocity->setSliderStep(velocitySliderStep);
1219 ui->sliderVelTrajectory_Velocity->setIsDouble(true);
1220 int sliderMin = -m_max_velocity*velocitySliderStep;
1221 int sliderMax = m_max_velocity*velocitySliderStep;
1222 ui->sliderPosTrajectory_Velocity->setRange(0, sliderMax);
1223 ui->sliderVelTrajectory_Velocity->setRange(sliderMin, sliderMax);
1224 int v = ui->sliderVelTrajectory_Velocity->value();
1225 if (v > sliderMax) {}
1226 if (v < sliderMin) {}
1228}
1229
1231{
1232 if (fabs(m_max_velocity) < 1.0)
1233 {
1234 yError("Unable to set integer velocity slider");
1235 return;
1236 }
1237 double velocitySliderStep = 1;
1238 ui->sliderPosTrajectory_Velocity->setSliderStep(velocitySliderStep);
1239 ui->sliderPosTrajectory_Velocity->setIsDouble(false);
1240 ui->sliderVelTrajectory_Velocity->setSliderStep(velocitySliderStep);
1241 ui->sliderVelTrajectory_Velocity->setIsDouble(false);
1242 int sliderMin = -m_max_velocity;
1243 int sliderMax = m_max_velocity;
1244 ui->sliderPosTrajectory_Velocity->setRange(0, sliderMax);
1245 ui->sliderVelTrajectory_Velocity->setRange(sliderMin, sliderMax);
1246 int v = ui->sliderVelTrajectory_Velocity->value();
1247 if (v > sliderMax) {}
1248 if (v < sliderMin) {}
1250}
1251
1253{
1254 double accelerationSliderStep = 1 / (fabs(-m_max_acceleration - m_max_acceleration) / 100.0); //note that we are using -max_velocity
1255 ui->sliderVelTrajectory_Acceleration->setSliderStep(accelerationSliderStep);
1256 ui->sliderVelTrajectory_Acceleration->setIsDouble(true);
1257 int sliderMin = 0;
1258 int sliderMax = m_max_acceleration*accelerationSliderStep;
1259 ui->sliderVelTrajectory_Acceleration->setRange(sliderMin, sliderMax);
1260 int v = ui->sliderVelTrajectory_Acceleration->value();
1261 if (v > sliderMax) {}
1262 if (v < sliderMin) {}
1263 setVelTrajectory_ReferenceAcceleration(m_ref_VelTrajectory_acceleration);
1264}
1265
1267{
1268 double accelerationSliderStep = 1 / value;
1269 ui->sliderVelTrajectory_Acceleration->setSliderStep(accelerationSliderStep);
1270 ui->sliderVelTrajectory_Acceleration->setIsDouble(true);
1271 int sliderMin = 0;
1272 int sliderMax = m_max_acceleration*accelerationSliderStep;
1273 ui->sliderVelTrajectory_Acceleration->setRange(0, sliderMax);
1274 int v = ui->sliderVelTrajectory_Acceleration->value();
1275 if (v > sliderMax) {}
1276 if (v < sliderMin) {}
1277 setVelTrajectory_ReferenceAcceleration(m_ref_VelTrajectory_acceleration);
1278}
1279
1281{
1282 if (fabs(m_max_acceleration) < 1.0)
1283 {
1284 yError("Unable to set integer acceleration slider");
1285 return;
1286 }
1287 double accelerationSliderStep = 1;
1288 ui->sliderVelTrajectory_Acceleration->setSliderStep(accelerationSliderStep);
1289 ui->sliderVelTrajectory_Acceleration->setIsDouble(false);
1290 int sliderMin = -m_max_acceleration;
1291 int sliderMax = m_max_acceleration;
1292 ui->sliderVelTrajectory_Velocity->setRange(0, sliderMax);
1293 int v = ui->sliderVelTrajectory_Acceleration->value();
1294 if (v > sliderMax) {}
1295 if (v < sliderMin) {}
1296 setVelTrajectory_ReferenceAcceleration(m_ref_VelTrajectory_acceleration);
1297}
1298
1300{
1301 double torqueSliderStep = 1 / (fabs(-m_max_torque - m_max_torque) / 100.0); //note that we are using -max_velocity
1302 ui->sliderTorqueTorque->setSliderStep(torqueSliderStep);
1303 ui->sliderTorqueTorque->setIsDouble(true);
1304 int sliderMin = -m_max_torque*torqueSliderStep; //note that we are using -max_torque
1305 int sliderMax = m_max_torque*torqueSliderStep;
1306 ui->sliderTorqueTorque->setRange(sliderMin, sliderMax);
1307 int v = ui->sliderTorqueTorque->value();
1308 if (v > sliderMax) {}
1309 if (v < sliderMin) {}
1310 setRefTorque(m_ref_torque);
1311}
1312
1314{
1315 double torqueSliderStep = 1 / value;
1316 ui->sliderTorqueTorque->setSliderStep(torqueSliderStep);
1317 ui->sliderTorqueTorque->setIsDouble(true);
1318 int sliderMin = -m_max_torque*torqueSliderStep; //note that we are using -max_torque
1319 int sliderMax = m_max_torque*torqueSliderStep;
1320 ui->sliderTorqueTorque->setRange(sliderMin, sliderMax);
1321 int v = ui->sliderTorqueTorque->value();
1322 if (v > sliderMax) {}
1323 if (v < sliderMin) {}
1324 setRefTorque(m_ref_torque);
1325}
1326
1328{
1329 if (fabs(m_max_torque) < 1.0)
1330 {
1331 yError("Unable to set integer torque slider");
1332 return;
1333 }
1334 double torqueSliderStep = 1;
1335 ui->sliderTorqueTorque->setSliderStep(torqueSliderStep);
1336 ui->sliderTorqueTorque->setIsDouble(false);
1337 int sliderMin = -m_max_torque; //note that we are using -max_torque
1338 int sliderMax = m_max_torque;
1339 ui->sliderTorqueTorque->setRange(sliderMin, sliderMax);
1340 int v = ui->sliderTorqueTorque->value();
1341 if (v > sliderMax) {}
1342 if (v < sliderMin) {}
1343 setRefTorque(m_ref_torque);
1344}
1345
1347{
1348 double currentSliderStep = 1 / (fabs(-m_max_current - m_max_current) / 100.0); //note that we are using -max_velocity
1349 ui->sliderCurrentOutput->setSliderStep(currentSliderStep);
1350 ui->sliderCurrentOutput->setIsDouble(true);
1351 int sliderMin = -m_max_current*currentSliderStep; //note that we are using -max_current
1352 int sliderMax = m_max_current*currentSliderStep;
1353 ui->sliderCurrentOutput->setRange(sliderMin, sliderMax);
1354 int v = ui->sliderCurrentOutput->value();
1355 if (v > sliderMax) {}
1356 if (v < sliderMin) {}
1357 setRefCurrent(m_ref_current);
1358}
1359
1361{
1362 double currentSliderStep = 1 / value;
1363 ui->sliderCurrentOutput->setSliderStep(currentSliderStep);
1364 ui->sliderCurrentOutput->setIsDouble(true);
1365 int sliderMin = -m_max_current*currentSliderStep; //note that we are using -max_current
1366 int sliderMax = m_max_current*currentSliderStep;
1367 ui->sliderCurrentOutput->setRange(sliderMin, sliderMax);
1368 int v = ui->sliderCurrentOutput->value();
1369 if (v > sliderMax) {}
1370 if (v < sliderMin) {}
1371 setRefCurrent(m_ref_current);
1372}
1373
1375{
1376 if (fabs(m_max_velocity) < 1.0)
1377 {
1378 yError("Unable to set integer velocity slider");
1379 return;
1380 }
1381 double currentSliderStep = 1;
1382 ui->sliderCurrentOutput->setSliderStep(currentSliderStep);
1383 ui->sliderCurrentOutput->setIsDouble(false);
1384 int sliderMin = -m_max_current; //note that we are using -max_current
1385 int sliderMax = m_max_current;
1386 ui->sliderCurrentOutput->setRange(sliderMin, sliderMax);
1387 int v = ui->sliderCurrentOutput->value();
1388 if (v > sliderMax) {}
1389 if (v < sliderMin) {}
1390 setRefCurrent(m_ref_current);
1391}
1392
1393/* void JointItem::enableTrajectoryVelocitySliderDoubleAuto()
1394{
1395 double trajectoryVelocitySliderStep = 1 / (fabs(0 - m_max_trajectory_velocity) / 100.0); //note that we are using 0
1396 ui->sliderPosTrajectory_Velocity->setSliderStep(trajectoryVelocitySliderStep);
1397 ui->sliderPosTrajectory_Velocity->setIsDouble(true);
1398 int sliderMin = 0 * trajectoryVelocitySliderStep; //note that we are using 0
1399 int sliderMax = m_max_trajectory_velocity*trajectoryVelocitySliderStep;
1400 ui->sliderPosTrajectory_Velocity->setRange(sliderMin, sliderMax);
1401 int v = ui->sliderPosTrajectory_Velocity->value();
1402 if (v > sliderMax) {}
1403 if (v < sliderMin) {}
1404 setPosTrajectory_ReferenceSpeed(ref_trajectory_velocity);
1405}
1406
1407void JointItem::enablePosTrajectoryVelocitySliderDoubleValue(double value)
1408{
1409 double trajectoryVelocitySliderStep = 1 / value;
1410 ui->sliderPosTrajectory_Velocity->setSliderStep(trajectoryVelocitySliderStep);
1411 ui->sliderPosTrajectory_Velocity->setIsDouble(true);
1412 int sliderMin = 0 * trajectoryVelocitySliderStep; //note that we are using 0
1413 int sliderMax = m_max_trajectory_velocity*trajectoryVelocitySliderStep;
1414 ui->sliderPosTrajectory_Velocity->setRange(sliderMin, sliderMax);
1415 int v = ui->sliderPosTrajectory_Velocity->value();
1416 if (v > sliderMax) {}
1417 if (v < sliderMin) {}
1418 setPosTrajectory_ReferenceSpeed(ref_trajectory_velocity);
1419}
1420
1421void JointItem::disableTrajectoryVelocitySliderDouble()
1422{
1423 int sliderMin = 0; //note that we are using 0
1424 int sliderMax = max_trajectory_velocity;
1425 double trajectoryVelocitySliderStep = 1;
1426 ui->sliderPosTrajectory_Velocity->setSliderStep(trajectoryVelocitySliderStep);
1427 ui->sliderPosTrajectory_Velocity->setRange(sliderMin, sliderMax);
1428 ui->sliderPosTrajectory_Velocity->setIsDouble(false);
1429 int v = ui->sliderPosTrajectory_Velocity->value();
1430 if (v > sliderMax) {}
1431 if (v < sliderMin) {}
1432 setPosTrajectory_ReferenceSpeed(m_ref_trajectory_velocity);
1433}
1434*/
1435
1436
1438{
1439 ui->sliderMixedPosition->number_of_decimals=num;
1440 ui->sliderPosTrajectory_Position->number_of_decimals = num;
1441 ui->sliderDirectPosition->number_of_decimals = num;
1442 ui->sliderMixedPosition->number_of_decimals = num;
1443 ui->sliderPosTrajectory_Position->number_of_decimals = num;
1444 ui->sliderDirectPosition->number_of_decimals = num;
1445}
1447{
1448 ui->sliderMixedVelocity->number_of_decimals=num;
1449 ui->sliderPosTrajectory_Velocity->number_of_decimals = num;
1450 ui->sliderVelTrajectory_Velocity->number_of_decimals = num;
1451 ui->sliderVelocityDirectVelocityDirect->number_of_decimals = num;
1452}
1454{
1455 ui->sliderVelTrajectory_Acceleration->number_of_decimals = num;
1456}
1458{
1459 ui->sliderTorqueTorque->number_of_decimals = num;
1460}
1462{
1463 ui->sliderCurrentOutput->number_of_decimals = num;
1464}
1465
1468 bool enable_calib_all)
1469{
1470 Q_UNUSED(debug_param_enabled);
1471 Q_UNUSED(speedview_param_enabled);
1472
1473 enableCalib = enable_calib_all;
1474 if (!enable_calib_all){
1475 ui->buttonCalib->setEnabled(false);
1476 }
1477
1478 connect(ui->stackedWidget, SIGNAL(currentChanged(int)), this, SLOT(onStackedWidgetChanged(int)));
1479}
1480
1482{
1483 disconnect(ui->comboMode,SIGNAL(currentIndexChanged(int)),this,SLOT(onModeChanged(int)));
1484 disconnect(ui->comboInteraction,SIGNAL(currentIndexChanged(int)),this,SLOT(onInteractionChanged(int)));
1485
1486 disconnect(ui->sliderPosTrajectory_Position,SIGNAL(sliderPressed()),this,SLOT(onSliderPosTrajectory_PositionPressed()));
1487 disconnect(ui->sliderPosTrajectory_Position,SIGNAL(sliderReleased()),this,SLOT(onSliderPosTrajectory_PositionReleased()));
1488
1489 disconnect(ui->sliderPosTrajectory_Velocity, SIGNAL(sliderPressed()), this, SLOT(onSliderPosTrajectory_VelocityPressed()));
1490 disconnect(ui->sliderPosTrajectory_Velocity, SIGNAL(sliderReleased()), this, SLOT(onSliderPosTrajectory_VelocityReleased()));
1491
1492 disconnect(ui->sliderVelTrajectory_Velocity,SIGNAL(sliderPressed()),this,SLOT(onSliderVelTrajectory_VelocityPressed()));
1493 disconnect(ui->sliderVelTrajectory_Velocity,SIGNAL(sliderReleased()),this,SLOT(onSliderVelTrajectory_VelocityReleased()));
1494
1495 disconnect(ui->sliderVelTrajectory_Acceleration, SIGNAL(sliderPressed()), this, SLOT(onSliderVelTrajectory_AccelerationPressed()));
1496 disconnect(ui->sliderVelTrajectory_Acceleration, SIGNAL(sliderReleased()), this, SLOT(onSliderVelTrajectory_AccelerationReleased()));
1497
1498 disconnect(ui->sliderTorqueTorque,SIGNAL(sliderPressed()),this,SLOT(onSliderTorquePressed()));
1499 disconnect(ui->sliderTorqueTorque,SIGNAL(sliderReleased()),this,SLOT(onSliderTorqueReleased()));
1500
1501 disconnect(ui->sliderPWMOutput, SIGNAL(sliderPressed()), this, SLOT(onSliderPWMPressed()));
1502 disconnect(ui->sliderPWMOutput, SIGNAL(sliderReleased()), this, SLOT(onSliderPWMReleased()));
1503
1504 disconnect(ui->sliderCurrentOutput, SIGNAL(sliderPressed()), this, SLOT(onSliderCurrentPressed()));
1505 disconnect(ui->sliderCurrentOutput, SIGNAL(sliderReleased()), this, SLOT(onSliderCurrentPressed()));
1506
1507 disconnect(ui->sliderDirectPosition, SIGNAL(sliderPressed()), this, SLOT(onSliderDirectPositionPressed()));
1508 disconnect(ui->sliderDirectPosition, SIGNAL(sliderReleased()), this, SLOT(onSliderDirectPositionReleased()));
1509
1510 disconnect(ui->sliderMixedPosition,SIGNAL(sliderPressed()),this,SLOT(onSliderMixedPositionPressed()));
1511 disconnect(ui->sliderMixedPosition,SIGNAL(sliderReleased()),this,SLOT(onSliderMixedPositionReleased()));
1512
1513 disconnect(ui->sliderMixedVelocity, SIGNAL(sliderPressed()), this, SLOT(onSliderMixedVelocityPressed()));
1514 disconnect(ui->sliderMixedVelocity, SIGNAL(sliderReleased()), this, SLOT(onSliderMixedVelocityReleased()));
1515
1516 disconnect(ui->buttonHome,SIGNAL(clicked()),this,SLOT(onHomeClicked()));
1517 disconnect(ui->buttonIdle,SIGNAL(clicked()),this,SLOT(onIdleClicked()));
1518 disconnect(ui->buttonRun,SIGNAL(clicked()),this,SLOT(onRunClicked()));
1519 disconnect(ui->buttonPid,SIGNAL(clicked()),this,SLOT(onPidClicked()));
1520 disconnect(ui->buttonCalib,SIGNAL(clicked()),this,SLOT(onCalibClicked()));
1521 delete ui;
1522}
1523
1525{
1526 return jointIndex;
1527}
1528
1529void JointItem::installFilter()
1530{
1531 auto* filter = new WheelEventFilter();
1532 filter->setParent(this);
1533 ui->comboMode->installEventFilter(filter);
1534 ui->comboInteraction->installEventFilter(filter);
1535
1536 ui->sliderMixedPosition->installEventFilter(filter);
1537 ui->sliderMixedVelocity->installEventFilter(filter);
1538 ui->sliderDirectPosition->installEventFilter(filter);
1539 ui->sliderPosTrajectory_Position->installEventFilter(filter);
1540 ui->sliderPosTrajectory_Velocity->installEventFilter(filter);
1541 ui->sliderTorqueTorque->installEventFilter(filter);
1542}
1543
1544
1545void JointItem::onStackedWidgetChanged(int index)
1546{
1547 if(index == VELOCITY)
1548 {
1549 if(velocityModeEnabled)
1550 {
1551 velocityTimer.start();
1552 }
1553 }
1554 else if(index == VELOCITY_DIR)
1555 {
1556 if(velocityDirectModeEnabled)
1557 {
1558 velocityDirectTimer.start();
1559 }
1560 }
1561 else if(index == PWM)
1562 {
1563 if(pwmModeEnabled)
1564 {
1565 pwmTimer.start();
1566 }
1567 }
1568 else if(index == CURRENT)
1569 {
1570 if(currentModeEnabled)
1571 {
1572 currentTimer.start();
1573 }
1574 }
1575 else if(index == TORQUE)
1576 {
1577 if(torqueModeEnabled)
1578 {
1579 torqueTimer.start();
1580 }
1581 }
1582 else
1583 {
1584 if(velocityModeEnabled)
1585 {
1586 velocityTimer.stop();
1587 lastVelocity = 0;
1588 updateSliderVelTrajectoryVelocity(0);
1589 }
1590 if(velocityDirectModeEnabled)
1591 {
1592 velocityDirectTimer.stop();
1593 lastVelocityDirect = 0;
1594 updateSliderVelocityDirect(0);
1595 }
1596 if(pwmModeEnabled)
1597 {
1598 pwmTimer.stop();
1599 lastPwm = 0;
1600 updateSliderPWM(0);
1601 }
1602 if(currentModeEnabled)
1603 {
1604 currentTimer.stop();
1605 lastCurrent = 0;
1606 updateSliderCurrent(0);
1607 }
1608 if(torqueModeEnabled)
1609 {
1610 torqueTimer.stop();
1611 lastTorque = 0;
1612 updateSliderTorque(0);
1613 }
1614 }
1615}
1616
1617void JointItem::onModeChanged(int index)
1618{
1619 // Stop all timers, the correct one will be enabled by onStackedWidgetChanged()
1620 velocityTimer.stop();
1621 velocityDirectTimer.stop();
1622 pwmTimer.stop();
1623 currentTimer.stop();
1624 torqueTimer.stop();
1625 Q_UNUSED(index);
1626 int mode = ui->comboMode->currentData(Qt::UserRole).toInt();
1627 emit changeMode(mode,this);
1628}
1629
1630
1631void JointItem::onInteractionChanged(int index)
1632{
1633 emit changeInteraction(index,this);
1634}
1635
1636void JointItem::setJointName(QString name)
1637{
1638 jointName = name;
1639}
1640
1642{
1643 return jointName;
1644}
1645
1646void JointItem::onSliderVelTrajectory_VelocityPressed()
1647{
1648 sliderVelTrajectory_VelocityPressed = true;
1649}
1650
1651void JointItem::onSliderVelTrajectory_VelocityReleased()
1652{
1653 lastVelocity = (double)ui->sliderVelTrajectory_Velocity->value() / ui->sliderVelTrajectory_Velocity->getSliderStep();
1654 sliderVelTrajectory_VelocityPressed = false;
1655}
1656
1657void JointItem::onSliderVelocityDirectPressed()
1658{
1659 sliderVelocityDirectPressed = true;
1660}
1661
1662void JointItem::onSliderVelocityDirectReleased()
1663{
1664 lastVelocityDirect = (double)ui->sliderVelocityDirectVelocityDirect->value() / ui->sliderVelocityDirectVelocityDirect->getSliderStep();
1665 sliderVelocityDirectPressed = false;
1666}
1667
1668
1669void JointItem::onSliderMixedVelocityPressed()
1670{
1671 sliderMixedVelocityPressed = true;
1672}
1673
1674void JointItem::onSliderMixedVelocityReleased()
1675{
1676 lastVelocity = ui->sliderMixedVelocity->value();
1677
1678 if (ui->sliderMixedVelocity->getIsDouble())
1679 {
1680 double val = ui->sliderMixedVelocity->value();
1681 emit sliderMixedVelocityCommand(val / ui->sliderMixedVelocity->getSliderStep(), jointIndex);
1682 }
1683 else
1684 {
1685 emit sliderMixedVelocityCommand(ui->sliderMixedVelocity->value(), jointIndex);
1686 }
1687
1688 sliderMixedVelocityPressed = false;
1689}
1690
1691
1692void JointItem::onVelocityTimer()
1693{
1694 if(velocityModeEnabled)
1695 {
1696 emit sliderVelTrajectoryVelocityCommand(lastVelocity,jointIndex);
1697 }
1698}
1699
1700void JointItem::onVelocityDirectTimer()
1701{
1702 if(velocityDirectModeEnabled)
1703 {
1704 emit sliderVelocityDirectCommand(lastVelocityDirect,jointIndex);
1705 }
1706}
1707
1708void JointItem::onPwmTimer()
1709{
1710 if(pwmModeEnabled)
1711 {
1712 emit sliderPWMCommand(lastPwm,jointIndex);
1713 }
1714}
1715
1716void JointItem::onCurrentTimer()
1717{
1718 if(currentModeEnabled)
1719 {
1720 emit sliderCurrentCommand(lastCurrent,jointIndex);
1721 }
1722}
1723
1724void JointItem::onTorqueTimer()
1725{
1726 if(torqueModeEnabled)
1727 {
1728 emit sliderTorqueCommand(lastTorque, jointIndex);
1729 }
1730}
1731
1732void JointItem::onSliderPosTrajectory_PositionPressed()
1733{
1734 sliderPosTrajectory_PositionPressed = true;
1735}
1736
1737void JointItem::onSliderPosTrajectory_PositionReleased()
1738{
1739 if (ui->sliderPosTrajectory_Position->getIsDouble())
1740 {
1741 double val = ui->sliderPosTrajectory_Position->value();
1742 emit sliderPosTrajectoryPositionCommand(val / ui->sliderPosTrajectory_Position->getSliderStep(), jointIndex);
1743 updateTrajectoryPositionTarget(val / ui->sliderPosTrajectory_Position->getSliderStep());
1744 }
1745 else
1746 {
1747 double val = ui->sliderPosTrajectory_Position->value();
1748 emit sliderPosTrajectoryPositionCommand(val, jointIndex);
1749 updateTrajectoryPositionTarget(val);
1750 }
1751 sliderPosTrajectory_PositionPressed = false;
1752 motionDone = false;
1753}
1754
1755void JointItem::onSliderMixedPositionPressed()
1756{
1757 sliderMixedPositionPressed = true;
1758}
1759
1760void JointItem::onSliderMixedPositionReleased()
1761{
1762 if (ui->sliderMixedPosition->getIsDouble())
1763 {
1764 double val = ui->sliderMixedPosition->value();
1765 emit sliderMixedPositionCommand(val / ui->sliderMixedPosition->getSliderStep(), jointIndex);
1766 updateMixedPositionTarget(val / ui->sliderMixedPosition->getSliderStep());
1767 }
1768 else
1769 {
1770 double val = ui->sliderMixedPosition->value();
1771 emit sliderMixedPositionCommand(val, jointIndex);
1772 updateMixedPositionTarget(val);
1773 }
1774
1775 sliderMixedPositionPressed = false;
1776 motionDone = false;
1777}
1778
1779void JointItem::onSliderDirectPositionPressed()
1780{
1781 sliderDirectPositionPressed = true;
1782}
1783
1784void JointItem::onSliderDirectPositionReleased()
1785{
1786 double ref_direct_position = (double)ui->sliderDirectPosition->value() / ui->sliderDirectPosition->getSliderStep();
1787 emit sliderDirectPositionCommand(ref_direct_position, jointIndex);
1788 sliderDirectPositionPressed = false;
1789 motionDone = false;
1790}
1791
1792void JointItem::onSliderPosTrajectory_VelocityPressed()
1793{
1794 sliderPosTrajectory_VelocityPressed = true;
1795}
1796
1797void JointItem::onSliderPosTrajectory_VelocityReleased()
1798{
1799 m_ref_PosTrajectory_velocity = (double)ui->sliderPosTrajectory_Velocity->value() / ui->sliderPosTrajectory_Velocity->getSliderStep();
1800 emit sliderPosTrajectoryVelocityCommand(m_ref_PosTrajectory_velocity, jointIndex);
1801 sliderPosTrajectory_VelocityPressed = false;
1802}
1803
1804void JointItem::onSliderVelTrajectory_AccelerationPressed()
1805{
1806 sliderVelTrajectory_AccelerationPressed = true;
1807}
1808
1809void JointItem::onSliderVelTrajectory_AccelerationReleased()
1810{
1811 m_ref_VelTrajectory_acceleration = (double)ui->sliderVelTrajectory_Acceleration->value() / ui->sliderVelTrajectory_Acceleration->getSliderStep();
1812 emit sliderVelTrajectoryAccelerationCommand(m_ref_VelTrajectory_acceleration, jointIndex);
1813 sliderVelTrajectory_AccelerationPressed = false;
1814}
1815
1816void JointItem::onSliderPWMPressed()
1817{
1818 sliderPWMPressed = true;
1819}
1820
1821void JointItem::onSliderPWMReleased()
1822{
1823 lastPwm = (double)ui->sliderPWMOutput->value() / ui->sliderPWMOutput->getSliderStep();
1824 sliderPWMPressed = false;
1825}
1826
1827void JointItem::onSliderCurrentPressed()
1828{
1829 sliderCurrentPressed = true;
1830}
1831
1832void JointItem::onSliderCurrentReleased()
1833{
1834 lastCurrent = (double)ui->sliderCurrentOutput->value() / ui->sliderCurrentOutput->getSliderStep();
1835 sliderCurrentPressed = false;
1836}
1837
1838void JointItem::onSliderTorquePressed()
1839{
1840 sliderTorquePressed = true;
1841}
1842
1843void JointItem::onSliderTorqueReleased()
1844{
1845 lastTorque = (double)ui->sliderTorqueTorque->value() / ui->sliderTorqueTorque->getSliderStep();
1846 sliderTorquePressed = false;
1847}
1848
1849
1851{
1852 //this function is mainly used used by the sequencer
1853 double pos = (double)ui->sliderPosTrajectory_Position->value() / ui->sliderPosTrajectory_Position->getSliderStep();
1854 if (fabs(pos) < 1e-6) {
1855 pos = 0;
1856 }
1857 return pos;
1858}
1859
1861{
1862 //this function is mainly used used by the sequencer
1863 double vel = (double)ui->sliderPosTrajectory_Velocity->value() / ui->sliderPosTrajectory_Velocity->getSliderStep();
1864 if (fabs(vel) < 1e-6) {
1865 vel = 0;
1866 }
1867 return vel;
1868}
1869
1871{
1872 ui->BrakeLabel->setText(brk ? "Braked" : "");
1873 if (brk) {
1874 ui->BrakeLabel->setStyleSheet("background-color: black; color: rgb(255, 38, 41); font-weight: bold;");
1875 ui->BrakeLabel->setAlignment(Qt::AlignCenter);
1876 } else {
1877 ui->BrakeLabel->setStyleSheet("background-color: transparent; color: rgb(35, 38, 41); font-weight: normal;");
1878 ui->BrakeLabel->setAlignment(Qt::AlignCenter);
1879 }
1880}
1881
1883{
1884 motionDone = done;
1885 int index = ui->stackedWidget->currentIndex();
1886 if (index == POSITION) {
1887 if(!done){
1888 ui->editPositionJointPos->setStyleSheet("background-color: rgb(255, 38, 41); color: rgb(35, 38, 41);");
1889 }else{
1890 ui->editPositionJointPos->setStyleSheet("background-color: rgb(255, 255, 255); color: rgb(35, 38, 41);");
1891 }
1892 } else if (index == POSITION_DIR) {
1893 if(!done){
1894 ui->editPositionDirJointPos->setStyleSheet("background-color: rgb(255, 38, 41); color: rgb(35, 38, 41);");
1895 }else{
1896 ui->editPositionDirJointPos->setStyleSheet("background-color: rgb(255, 255, 255); color: rgb(35, 38, 41);");
1897 }
1898 } else if (index == MIXED) {
1899 if(!done){
1900 ui->editMixedJointPos->setStyleSheet("background-color: rgb(255, 38, 41); color: rgb(35, 38, 41);");
1901 }else{
1902 ui->editMixedJointPos->setStyleSheet("background-color: rgb(255, 255, 255); color: rgb(35, 38, 41);");
1903 }
1904 }
1905}
1906
1907void JointItem::updateSliderPosTrajectoryPosition(double val)
1908{
1909 if(sliderPosTrajectory_PositionPressed)
1910 {
1911 return;
1912 }
1913 ui->sliderPosTrajectory_Position->setValue(val);
1914}
1915
1916void JointItem::updateSliderPositionDirect(double val)
1917{
1918 if(sliderDirectPositionPressed)
1919 {
1920 return;
1921 }
1922 ui->sliderDirectPosition->setValue(val);
1923}
1924
1925void JointItem::updateSliderMixedPosition(double val)
1926{
1927 if(sliderMixedPositionPressed)
1928 {
1929 return;
1930 }
1931 ui->sliderMixedPosition->setValue(val);
1932}
1933
1934void JointItem::updateSliderPosTrajectoryVelocity(double val)
1935{
1936 if (sliderPosTrajectory_VelocityPressed)
1937 {
1938 return;
1939 }
1940 ui->sliderPosTrajectory_Velocity->setValue(val);
1941}
1942
1943void JointItem::updateSliderVelocityDirect(double val)
1944{
1945 if (sliderVelocityDirectPressed)
1946 {
1947 return;
1948 }
1949 ui->sliderVelocityDirectVelocityDirect->setValue(val);
1950}
1951
1952void JointItem::updateSliderPWM(double val)
1953{
1954 if (sliderPWMPressed) {
1955 return;
1956 }
1957 ui->sliderPWMOutput->setValue(val);
1958}
1959
1960void JointItem::updateSliderCurrent(double val)
1961{
1962 if (sliderCurrentPressed) {
1963 return;
1964 }
1965 ui->sliderCurrentOutput->setValue(val);
1966}
1967
1968void JointItem::updateJointFault(int i, std::string message)
1969{
1970 std::string entryc = std::to_string(i);
1971 QString q1(entryc.c_str());
1972 QString q2(message.c_str());
1973 ui->labelFaultCodeEntry->setText(q1);
1974 ui->labelFaultMessageEntry->setText(q2);
1975}
1976
1977void JointItem::updateSliderTorque(double val)
1978{
1979 if(sliderTorquePressed){
1980 return;
1981 }
1982 ui->sliderTorqueTorque->setValue(val);
1983}
1984
1985void JointItem::updateSliderVelTrajectoryVelocity(double val)
1986{
1987 if (sliderVelTrajectory_VelocityPressed){
1988 return;
1989 }
1990 ui->sliderVelTrajectory_Velocity->setValue(val);
1991}
1992
1993void JointItem::updateSliderVelTrajectoryAcceleration(double val)
1994{
1995 if (sliderVelTrajectory_AccelerationPressed){
1996 return;
1997 }
1998 ui->sliderVelTrajectory_Acceleration->setValue(val);
1999}
2000
2001void JointItem::setRefPWM(double pwmValue)
2002{
2003 if(sliderPWMPressed){
2004 return;
2005 }
2006 if(ui->stackedWidget->currentIndex() == PWM){
2007 updateSliderPWM(pwmValue);
2008 QString sVal;
2009 sVal = QString("%L1").arg(pwmValue, 0, 'f', 3);
2010 ui->editPWMDuty->setText(sVal);
2011 }
2012}
2013
2014void JointItem::setRefCurrent(double currentValue)
2015{
2016 if (sliderCurrentPressed){
2017 return;
2018 }
2019 if (ui->stackedWidget->currentIndex() == CURRENT){
2020 updateSliderCurrent(currentValue);
2021 QString sVal;
2022 sVal = QString("%L1").arg(currentValue, 0, 'f', 3);
2023 ui->editCurrentCurrent->setText(sVal);
2024 }
2025}
2026
2028{
2029 QString sVal;
2030 if (ui->sliderPosTrajectory_Position->getIsDouble())
2031 {
2032 double pos = val;
2033 sVal = QString("%L1").arg(pos, 0, 'f', 3);
2034 }
2035 else
2036 {
2037 double pos = floor(val * 10) / 10;
2038 sVal = QString("%1").arg(pos);
2039 }
2040
2041 if(ui->stackedWidget->currentIndex() == IDLE){
2042 ui->editIdleJointPos->setText(sVal);
2043 }
2044
2045 if (ui->stackedWidget->currentIndex() == HW_FAULT) {
2046 ui->editFaultJointPos->setText(sVal);
2047 }
2048
2049 if(ui->stackedWidget->currentIndex() == POSITION){
2050 ui->editPositionJointPos->setText(sVal);
2051 updateSliderPosTrajectoryPosition(val);
2052 }
2053
2054 if(ui->stackedWidget->currentIndex() == POSITION_DIR){
2055 ui->editPositionDirJointPos->setText(sVal);
2056 updateSliderPositionDirect(val);
2057 }
2058
2059 if(ui->stackedWidget->currentIndex() == MIXED){
2060 ui->editMixedJointPos->setText(sVal);
2061 updateSliderMixedPosition(val);
2062 }
2063
2064 if(ui->stackedWidget->currentIndex() == VELOCITY){
2065 ui->editVelocityJointPos->setText(sVal);
2066 }
2067 if(ui->stackedWidget->currentIndex() == VELOCITY_DIR){
2068 ui->editVelocityDirJointPos->setText(sVal);
2069 }
2070 if(ui->stackedWidget->currentIndex() == TORQUE){
2071 ui->editTorqueJointPos->setText(sVal);
2072 }
2073 if(ui->stackedWidget->currentIndex() == PWM){
2074 ui->editPWMJointPos->setText(sVal);
2075 }
2076 if (ui->stackedWidget->currentIndex() == CURRENT){
2077 ui->editCurrentJointPos->setText(sVal);
2078 }
2079
2080}
2081
2083{
2084 if(ui->stackedWidget->currentIndex() == TORQUE){
2085 updateSliderTorque(val);
2086 m_ref_torque = val;
2087 }
2088}
2089
2091{
2092 if (ui->stackedWidget->currentIndex() == VELOCITY){
2093 updateSliderVelTrajectoryVelocity(val);
2094 m_ref_speed = val;
2095 }
2096}
2097
2099{
2100 if (ui->stackedWidget->currentIndex() == VELOCITY){
2101 updateSliderVelTrajectoryAcceleration(val);
2102 m_ref_VelTrajectory_acceleration = val;
2103
2104 if (val < 0.001)
2105 {
2106 ui->groupBox_2->setStyleSheet("background-color:orange; color: rgb(35, 38, 41);");
2107 ui->groupBox_2->setTitle("Acceleration is ZERO!");
2108 }
2109 else
2110 {
2111 ui->groupBox_2->setStyleSheet("background-color:transparent; color: rgb(35, 38, 41);");
2112 ui->groupBox_2->setTitle("Acceleration");
2113 }
2114 }
2115}
2117{
2118 if (ui->stackedWidget->currentIndex() == POSITION){
2119 updateSliderPosTrajectoryVelocity(val);
2120 m_ref_PosTrajectory_velocity = val;
2121
2122 if (val < 0.001)
2123 {
2124 ui->groupBox_12->setStyleSheet("background-color:orange; color: rgb(35, 38, 41);");
2125 ui->groupBox_12->setTitle("Velocity is ZERO!");
2126 }
2127 else
2128 {
2129 ui->groupBox_12->setStyleSheet("background-color:transparent; color: rgb(35, 38, 41);");
2130 ui->groupBox_12->setTitle("Velocity");
2131 }
2132 }
2133}
2134
2136{
2137 if (ui->stackedWidget->currentIndex() == POSITION){
2138 updateTrajectoryPositionTarget(val);
2139 }
2140}
2141
2142void JointItem::setTorque(double val)
2143{
2144 QString sVal = QString("%L1").arg(val,0,'f',3);
2145
2146 if(ui->stackedWidget->currentIndex() == IDLE){
2147 ui->editIdleTorque->setText(sVal);
2148 }
2149
2150 if(ui->stackedWidget->currentIndex() == POSITION){
2151 ui->editPositionTorque->setText(sVal);
2152 }
2153
2154 if(ui->stackedWidget->currentIndex() == POSITION_DIR){
2155 ui->editPositionDirTorque->setText(sVal);
2156 }
2157
2158 if(ui->stackedWidget->currentIndex() == MIXED){
2159 ui->editMixedTorque->setText(sVal);
2160 }
2161
2162 if(ui->stackedWidget->currentIndex() == VELOCITY){
2163 ui->editVelocityTorque->setText(sVal);
2164 }
2165 if(ui->stackedWidget->currentIndex() == VELOCITY_DIR){
2166 ui->editVelocityDirTorque->setText(sVal);
2167 }
2168 if(ui->stackedWidget->currentIndex() == TORQUE){
2169 ui->editTorqueTorque->setText(sVal);
2170 }
2171 if(ui->stackedWidget->currentIndex() == PWM){
2172 ui->editPWMTorque->setText(sVal);
2173 }
2174 if (ui->stackedWidget->currentIndex() == CURRENT){
2175 ui->editCurrentTorque->setText(sVal);
2176 }
2177}
2178
2180{
2181 if (!joint_motorPositionVisible){
2182 return;
2183 }
2184
2185 double mot = val;
2186 QString sVal = QString("%1").arg(mot, 0, 'f', 1);
2187
2188 if (ui->stackedWidget->currentIndex() == HW_FAULT) {
2189 ui->editFaultMotorPos->setText(sVal);
2190 }
2191
2192 if (ui->stackedWidget->currentIndex() == IDLE){
2193 ui->editIdleMotorPos->setText(sVal);
2194 }
2195
2196 if (ui->stackedWidget->currentIndex() == POSITION){
2197 ui->editPositionMotorPos->setText(sVal);
2198 }
2199
2200 if (ui->stackedWidget->currentIndex() == POSITION_DIR) {
2201 ui->editPositionDirMotorPos->setText(sVal);
2202 }
2203
2204 if (ui->stackedWidget->currentIndex() == MIXED) {
2205 ui->editMixedMotorPos->setText(sVal);
2206 }
2207
2208 if (ui->stackedWidget->currentIndex() == VELOCITY) {
2209 ui->editVelocityMotorPos->setText(sVal);
2210 }
2211
2212 if (ui->stackedWidget->currentIndex() == VELOCITY_DIR) {
2213 ui->editVelocityDirMotorPos->setText(sVal);
2214 }
2215
2216 if (ui->stackedWidget->currentIndex() == TORQUE) {
2217 ui->editTorqueMotorPos->setText(sVal);
2218 }
2219
2220 if (ui->stackedWidget->currentIndex() == PWM) {
2221 ui->editPWMMotorPos->setText(sVal);
2222 }
2223
2224 if (ui->stackedWidget->currentIndex() == CURRENT) {
2225 ui->editCurrentMotorPos->setText(sVal);
2226 }
2227}
2228
2230{
2231 if (!joint_dutyVisible) {
2232 return;
2233 }
2234
2235 double mot = val;
2236 QString sVal = QString("%1").arg(mot, 0, 'f', 1);
2237
2238 //if (ui->stackedWidget->currentIndex() == IDLE) {
2239 // ui->editIdleDuty->setText(sVal);
2240 //}
2241
2242 //if (ui->stackedWidget->currentIndex() == POSITION) {
2243 // ui->editPositionDuty->setText(sVal);
2244 //}
2245
2246 //if (ui->stackedWidget->currentIndex() == POSITION_DIR) {
2247 // ui->editPositionDirDuty->setText(sVal);
2248 //}
2249
2250 //if (ui->stackedWidget->currentIndex() == MIXED) {
2251 // ui->editMixedDuty->setText(sVal);
2252 //}
2253
2254 //if (ui->stackedWidget->currentIndex() == VELOCITY) {
2255 // ui->editVelocityDuty->setText(sVal);
2256 //}
2257
2258 if (ui->stackedWidget->currentIndex() == TORQUE) {
2259 ui->editTorqueDuty->setText(sVal);
2260 }
2261
2262 if (ui->stackedWidget->currentIndex() == PWM) {
2263 ui->editPWMDuty->setText(sVal);
2264 }
2265
2266 if (ui->stackedWidget->currentIndex() == CURRENT) {
2267 ui->editCurrentDuty->setText(sVal);
2268 }
2269}
2270
2271void JointItem::setSpeed(double meas)
2272{
2273 if (!joint_speedVisible){
2274 return;
2275 }
2276 //TODO
2277
2278 double speed = meas;
2279 QString sVal = QString("%1").arg(speed,0,'f',1);
2280
2281 if(ui->stackedWidget->currentIndex() == IDLE){
2282 ui->editIdleSpeed->setText(sVal);
2283 }
2284
2285 if(ui->stackedWidget->currentIndex() == POSITION){
2286 ui->editPositionSpeed->setText(sVal);
2287 }
2288
2289 if(ui->stackedWidget->currentIndex() == POSITION_DIR){
2290 ui->editPositionDirSpeed->setText(sVal);
2291 }
2292
2293 if(ui->stackedWidget->currentIndex() == MIXED){
2294 ui->editMixedSpeed->setText(sVal);
2295 }
2296
2297 if(ui->stackedWidget->currentIndex() == VELOCITY){
2298 if(!sliderVelTrajectory_VelocityPressed){
2299 ui->editVelocitySpeed->setText(sVal);
2300 //updateSlider(ui->sliderVelocityVelocity,ui->labelVelocityVelocity,val);
2301 }
2302 }
2303
2304 if(ui->stackedWidget->currentIndex() == VELOCITY_DIR){
2305 if(!sliderVelocityDirectPressed){
2306 ui->editVelocityDirSpeed->setText(sVal);
2307 //updateSlider(ui->sliderVelocityVelocity,ui->labelVelocityVelocity,val);
2308 }
2309 }
2310 if(ui->stackedWidget->currentIndex() == TORQUE){
2311 ui->editTorqueSpeed->setText(sVal);
2312 //updateSliderTorque(val);
2313 }
2314 if(ui->stackedWidget->currentIndex() == PWM){
2315 ui->editPWMSpeed->setText(sVal);
2316 }
2317 if (ui->stackedWidget->currentIndex() == CURRENT){
2318 ui->editCurrentSpeed->setText(sVal);
2319 }
2320
2321}
2322
2323void JointItem::setCurrent(double meas)
2324{
2325 if (!joint_currentVisible) {
2326 return;
2327 }
2328 //TODO
2329
2330 double current = meas;
2331 QString sVal = QString("%1").arg(current, 0, 'f', 3);
2332
2333 if (ui->stackedWidget->currentIndex() == IDLE) {
2334 ui->editIdleCurrent->setText(sVal);
2335 }
2336
2337 if (ui->stackedWidget->currentIndex() == POSITION) {
2338 ui->editPositionCurrent->setText(sVal);
2339 }
2340
2341 if (ui->stackedWidget->currentIndex() == POSITION_DIR) {
2342 ui->editPositionDirCurrent->setText(sVal);
2343 }
2344
2345 if (ui->stackedWidget->currentIndex() == MIXED) {
2346 ui->editMixedCurrent->setText(sVal);
2347 }
2348
2349 if (ui->stackedWidget->currentIndex() == VELOCITY) {
2350 ui->editVelocityCurrent->setText(sVal);
2351 }
2352 if (ui->stackedWidget->currentIndex() == VELOCITY_DIR) {
2353 ui->editVelocityDirCurrent->setText(sVal);
2354 }
2355 if (ui->stackedWidget->currentIndex() == TORQUE) {
2356 ui->editTorqueCurrent->setText(sVal);
2357 }
2358 if (ui->stackedWidget->currentIndex() == PWM) {
2359 ui->editPWMCurrent->setText(sVal);
2360 }
2361 if (ui->stackedWidget->currentIndex() == CURRENT) {
2362 ui->editCurrentCurrent->setText(sVal);
2363 }
2364
2365}
2366
2367
2368
2369
2370void JointItem::setJointInternalInteraction(int interaction)
2371{
2372 disconnect(ui->comboInteraction,SIGNAL(currentIndexChanged(int)),this,SLOT(onInteractionChanged(int)));
2373 ui->comboInteraction->setCurrentIndex(interaction);
2374 connect(ui->comboInteraction,SIGNAL(currentIndexChanged(int)),this,SLOT(onInteractionChanged(int)));
2375}
2376
2377void JointItem::setJointInternalState(int mode)
2378{
2379 disconnect(ui->comboMode,SIGNAL(currentIndexChanged(int)),this,SLOT(onModeChanged(int)));
2380 ui->comboMode->setCurrentIndex(mode);
2381 connect(ui->comboMode,SIGNAL(currentIndexChanged(int)),this,SLOT(onModeChanged(int)));
2382
2383 ui->stackedWidget->setCurrentIndex(mode);
2384 if(ui->stackedWidget->widget(mode)){
2385 QVariant variant = ui->comboMode->itemData(mode,Qt::BackgroundRole);
2386 QColor c;
2387 switch(internalState)
2388 {
2389 case Disconnected:
2390 c = disconnectColor;
2391 break;
2392 case HwFault:
2393 ui->groupBox->setTitle(QString("JOINT %1 (%2) - HARDWARE FAULT").arg(jointIndex).arg(jointName));
2394 c = hwFaultColor;
2395 ui->stackedWidget->setEnabled(false);
2396 //ui->buttonsContainer->setEnabled(false);
2397 ui->buttonHome->setEnabled(false);
2398 ui->buttonCalib->setEnabled(false);
2399 ui->buttonRun->setEnabled(false);
2400 ui->comboMode->setEnabled(false);
2401 ui->comboInteraction->setEnabled(false);
2402 ui->buttonIdle->setEnabled(true);
2403 ui->buttonPid->setEnabled(true);
2404 break;
2405 case Unknown:
2406 case NotConfigured:
2407 case Configured:
2408 case CalibDone:
2409 case Calibrating:
2410 c = calibratingColor;
2411 break;
2412
2413 default:{
2414 enableAll();
2415 c = variant.value<QColor>();
2416 if(ui->groupBox->title() != QString("JOINT %1 (%2)").arg(jointIndex).arg(jointName))
2417 {
2418 ui->groupBox->setTitle(QString("JOINT %1 (%2)").arg(jointIndex).arg(jointName));
2419 }
2420 ui->stackedWidget->setEnabled(true);
2421 ui->buttonsContainer->setEnabled(true);
2422 break;
2423 }
2424 }
2425
2426 setStyleSheet(QString("font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2427 }
2428}
2429
2431{
2432 if(internalInteraction == interaction){
2433 return;
2434 }
2435
2436 internalInteraction = interaction;
2437
2438 switch (internalInteraction) {
2439 case Stiff:
2440 setJointInternalInteraction(STIFF);
2441 break;
2442 case COMPLIANT:
2443 setJointInternalInteraction(COMPLIANT);
2444 break;
2445 default:
2446 break;
2447 }
2448}
2449
2450
2452{
2453 if(internalState == newState){
2454 return;
2455 }
2456
2457 internalState = newState;
2458
2459 switch (internalState) {
2460 case Unknown:{
2461 ui->groupBox->setTitle(QString("JOINT %1 (%2) - UNKNOWN").arg(jointIndex).arg(jointName));
2462 ui->stackedWidget->setEnabled(false);
2463 ui->buttonsContainer->setEnabled(false);
2464
2465 int index = ui->stackedWidget->currentIndex();
2466 if(ui->stackedWidget->widget(index)){
2467 QColor c = calibratingColor;
2468 setStyleSheet(QString("font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2469 }
2470 break;
2471 }
2472 case Configured:{
2473 ui->groupBox->setTitle(QString("JOINT %1 (%2) - CONFIGURED").arg(jointIndex).arg(jointName));
2474 ui->stackedWidget->setEnabled(true);
2475 ui->buttonsContainer->setEnabled(true);
2476
2477 int index = ui->stackedWidget->currentIndex();
2478 if(ui->stackedWidget->widget(index)){
2479 QColor c = calibratingColor;
2480 setStyleSheet(QString("font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2481 }
2482 break;
2483 }
2484
2485 case NotConfigured:{
2486 ui->groupBox->setTitle(QString("JOINT %1 (%2) - NOT CONFIGURED").arg(jointIndex).arg(jointName));
2487 ui->stackedWidget->setEnabled(false);
2488 //activating only calib button
2489 if(enableCalib)
2490 {
2491
2492 ui->buttonsContainer->setEnabled(true);
2493 ui->buttonIdle->setEnabled(false);
2494 ui->buttonPid->setEnabled(true);
2495 ui->buttonHome->setEnabled(false);
2496 ui->buttonCalib->setEnabled(true);
2497 ui->buttonRun->setEnabled(false);
2498 ui->comboMode->setEnabled(false);
2499 ui->comboInteraction->setEnabled(false);
2500 }
2501 //nothing must be activated
2502 else
2503 {
2504 ui->buttonsContainer->setEnabled(false);
2505 }
2506
2507 int index = ui->stackedWidget->currentIndex();
2508 if(ui->stackedWidget->widget(index)){
2509 QColor c = calibratingColor;
2510 setStyleSheet(QString("font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2511 }
2512 break;
2513 }
2514
2515 case CalibDone:{
2516 ui->groupBox->setTitle(QString("JOINT %1 (%2) - CALIBRATING DONE").arg(jointIndex).arg(jointName));
2517 ui->stackedWidget->setEnabled(true);
2518 ui->buttonsContainer->setEnabled(true);
2519
2520 int index = ui->stackedWidget->currentIndex();
2521 if(ui->stackedWidget->widget(index)){
2522 QColor c = calibratingColor;
2523 setStyleSheet(QString("font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2524 }
2525 break;
2526 }
2527 case Calibrating:{
2528 ui->groupBox->setTitle(QString("JOINT %1 (%2) - CALIBRATING").arg(jointIndex).arg(jointName));
2529 ui->stackedWidget->setEnabled(false);
2530 ui->buttonsContainer->setEnabled(false);
2531
2532 int index = ui->stackedWidget->currentIndex();
2533 if(ui->stackedWidget->widget(index)){
2534 QColor c = calibratingColor;
2535 setStyleSheet(QString("font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2536 }
2537 break;
2538 }
2539 case HwFault:{
2540 setJointInternalState(HW_FAULT);
2541 break;
2542 }
2543 case Disconnected:{
2544 ui->groupBox->setTitle(QString("JOINT %1 (%2) - DISCONNECTED").arg(jointIndex).arg(jointName));
2545 ui->stackedWidget->setEnabled(false);
2546 ui->buttonsContainer->setEnabled(false);
2547
2548 int index = ui->stackedWidget->currentIndex();
2549 if(ui->stackedWidget->widget(index)){
2550 QColor c = disconnectColor;
2551 setStyleSheet(QString("font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2552 }
2553 break;
2554 }
2555 case Idle:{
2556 setJointInternalState(IDLE);
2557 break;
2558 }
2559 case Position:{
2560 setJointInternalState(POSITION);
2561 break;
2562 }
2563 case PositionDirect:{
2564 setJointInternalState(POSITION_DIR);
2565 break;
2566 }
2567 case Mixed:{
2568 setJointInternalState(MIXED);
2569 break;
2570 }
2571 case Velocity:{
2572 setJointInternalState(VELOCITY);
2573 break;
2574 }
2575 case VelocityDirect:{
2576 setJointInternalState(VELOCITY_DIR);
2577 break;
2578 }
2579 case Torque:{
2580 setJointInternalState(TORQUE);
2581 break;
2582 }
2583 case Pwm:{
2584 setJointInternalState(PWM);
2585 break;
2586 }
2587 case Current:{
2588 setJointInternalState(CURRENT);
2589 break;
2590 }
2591 default:
2592 break;
2593 }
2594
2595}
2596
2597void JointItem::enableAll()
2598{
2599 ui->stackedWidget->setEnabled(true);
2600 ui->buttonsContainer->setEnabled(true);
2601 ui->buttonIdle->setEnabled(true);
2602 ui->buttonPid->setEnabled(true);
2603 ui->buttonHome->setEnabled(true);
2604 if(enableCalib){
2605 ui->buttonCalib->setEnabled(true);
2606 }
2607 ui->buttonRun->setEnabled(true);
2608 ui->comboMode->setEnabled(true);
2609 ui->comboInteraction->setEnabled(true);
2610
2611}
2612
2613void JointItem::setPWMRange(double min, double max)
2614{
2615 ui->sliderPWMOutput->setRange(min,max);
2616}
2617
2618void JointItem::setCurrentRange(double min, double max)
2619{
2620 if (min < max)
2621 {
2622 m_min_current = min;
2623 m_max_current = max;
2624 }
2625 else
2626 {
2627 //Error
2628 }
2629 ui->sliderCurrentOutput->setRange(min, max);
2630}
2631
2632void JointItem::setPositionRange(double min, double max)
2633{
2634 m_min_position = 1;
2635 m_max_position = 2;
2636 if(min < max)
2637 {
2638 m_min_position = min;
2639 m_max_position = max;
2640 }
2641 else
2642 {
2643 //Error
2644 }
2645}
2646
2647void JointItem::setVelocityRange(double min, double max)
2648{
2649 m_min_velocity = -100;
2650 m_max_velocity = 100;
2651 if (min < max)
2652 {
2653 m_min_velocity = min;
2654 m_max_velocity = max;
2655 }
2656 else
2657 {
2658 //Error
2659 }
2660}
2661
2662void JointItem::setAccelerationRange(double min, double max)
2663{
2664 m_min_acceleration = -100;
2665 m_max_acceleration = 100;
2666 if (min < max)
2667 {
2668 m_min_acceleration = min;
2669 m_max_acceleration = max;
2670 }
2671 else
2672 {
2673 //Error
2674 }
2675}
2676
2678{
2679 m_max_torque = 5;
2680 if (max >= 0)
2681 {
2682 m_max_torque = max;
2683 }
2684 else
2685 {
2686 //Error
2687 }
2688}
2689
2690void JointItem::onCalibClicked()
2691{
2692 if (this->internalState == Velocity)
2693 {
2694 velocityTimer.stop();
2695 }
2696 if (this->internalState == VelocityDirect)
2697 {
2698 velocityDirectTimer.stop();
2699 }
2700 else if(this->internalState == Pwm)
2701 {
2702 pwmTimer.stop();
2703 }
2704 else if(this->internalState == Current)
2705 {
2706 currentTimer.stop();
2707 }
2708 else if(this->internalState == Torque)
2709 {
2710 torqueTimer.stop();
2711 }
2712 emit calibClicked(this);
2713}
2714
2715void JointItem::onHomeClicked()
2716{
2717 home();
2718}
2719
2720void JointItem::onIdleClicked()
2721{
2722 idle();
2723}
2724
2725void JointItem::onRunClicked()
2726{
2727 run();
2728}
2729
2730void JointItem::onPidClicked()
2731{
2732 showPID();
2733}
2734
2736{
2737 ui->sliderMixedPosition->setEnabled(false);
2738 ui->sliderMixedVelocity->setEnabled(false);
2739 ui->sliderPWMOutput->setEnabled(false);
2740 ui->sliderCurrentOutput->setEnabled(false);
2741 ui->sliderDirectPosition->setEnabled(false);
2742 ui->sliderPosTrajectory_Position->setEnabled(false);
2743 ui->sliderPosTrajectory_Velocity->setEnabled(false);
2744 ui->sliderTorqueTorque->setEnabled(false);
2745
2746}
2747
2749{
2750 ui->sliderMixedPosition->setEnabled(true);
2751 ui->sliderMixedVelocity->setEnabled(true);
2752 ui->sliderPWMOutput->setEnabled(true);
2753 ui->sliderCurrentOutput->setEnabled(true);
2754 ui->sliderDirectPosition->setEnabled(true);
2755 ui->sliderPosTrajectory_Position->setEnabled(true);
2756 ui->sliderPosTrajectory_Velocity->setEnabled(true);
2757 ui->sliderTorqueTorque->setEnabled(true);
2758}
2759
2760
2761bool WheelEventFilter::eventFilter(QObject *obj, QEvent *event)
2762{
2763 if (event->type() == QEvent::Wheel) {
2764 return true;
2765 } else {
2766 // standard event processing
2767 return QObject::eventFilter(obj, event);
2768 }
2769}
FeatureMode mode
#define yError(...)
Definition Log.h:361
#define yFatal(...)
Definition Log.h:382
int SIGNAL(int pid, int signum)
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
JointItem(int index, QWidget *parent=0)
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
#define STIFF
Definition jointitem.h:25
#define COMPLIANT
Definition jointitem.h:26
Definition aboutdlg.h:11
@ VOCAB_JOINTTYPE_REVOLUTE
Definition IAxisInfo.h:24
@ VOCAB_JOINTTYPE_PRISMATIC
Definition IAxisInfo.h:25
const QColor velocityDirectColor
const QColor idleColor
const QColor disconnectColor
const QColor hwFaultColor
const QColor torqueColor
const QColor positionColor
const QColor pwmColor
const QColor positionDirectColor
const QColor mixedColor
const QColor velocityColor
const QColor calibratingColor
const QColor currentColor