8#include "ui_jointitem.h"
23 ui->sliderTrajectoryPosition->resetTarget();
24 ui->sliderMixedPosition->resetTarget();
33 else if(this->internalState ==
Pwm)
37 else if(this->internalState ==
Current)
41 else if(this->internalState ==
Torque)
54 else if(this->internalState ==
Pwm)
58 else if(this->internalState ==
Current)
62 else if(this->internalState ==
Torque)
75 else if(this->internalState ==
Pwm)
79 else if(this->internalState ==
Current)
83 else if(this->internalState ==
Torque)
175 output =
"Position Direct";
200 output =
"Disconnected";
204 output =
"Hardware Fault";
208 output =
"Calibrating";
212 output =
"Not Configured";
216 output =
"Configured";
229void JointItem::updateTrajectoryPositionTarget(
double val)
231 ui->sliderTrajectoryPosition->updateSliderTarget(val);
234void JointItem::updateMixedPositionTarget(
double val)
236 ui->sliderMixedPosition->updateSliderTarget(val);
247 sliderDirectPositionPressed =
false;
248 sliderMixedPositionPressed =
false;
249 sliderMixedVelocityPressed =
false;
250 sliderTrajectoryPositionPressed =
false;
251 sliderTrajectoryVelocityPressed =
false;
252 sliderTorquePressed =
false;
253 sliderPWMPressed =
false;
254 sliderCurrentPressed =
false;
255 sliderVelocityPressed =
false;
257 joint_speedVisible =
false;
258 joint_motorPositionVisible =
false;
259 joint_currentVisible =
false;
260 joint_dutyVisible =
false;
262 velocityModeEnabled =
false;
264 pwmModeEnabled =
false;
266 currentModeEnabled =
false;
268 torqueModeEnabled =
false;
275 max_trajectory_velocity = 0;
296 connect(ui->comboMode,
SIGNAL(currentIndexChanged(
int)),
this,SLOT(onModeChanged(
int)));
297 connect(ui->comboInteraction,
SIGNAL(currentIndexChanged(
int)),
this,SLOT(onInteractionChanged(
int)));
299 ui->sliderTrajectoryPosition->installEventFilter(
this);
300 connect(ui->sliderTrajectoryPosition,
SIGNAL(sliderPressed()),
this,SLOT(onSliderTrajectoryPositionPressed()));
301 connect(ui->sliderTrajectoryPosition,
SIGNAL(sliderReleased()),
this, SLOT(onSliderTrajectoryPositionReleased()));
302 ui->sliderTrajectoryPosition->disableClickOutOfHandle=
true;
303 ui->sliderTrajectoryPosition->enableViewTargetBox =
true;
304 ui->sliderTrajectoryPosition->enableViewTargetValue =
false;
306 ui->sliderTorqueTorque->installEventFilter(
this);
307 connect(ui->sliderTorqueTorque,
SIGNAL(sliderPressed()),
this,SLOT(onSliderTorquePressed()));
308 connect(ui->sliderTorqueTorque,
SIGNAL(sliderReleased()),
this,SLOT(onSliderTorqueReleased()));
309 ui->sliderTorqueTorque->disableClickOutOfHandle =
true;
310 ui->sliderTorqueTorque->enableViewTargetBox =
false;
311 ui->sliderTorqueTorque->enableViewTargetValue =
false;
313 ui->sliderPWMOutput->installEventFilter(
this);
314 connect(ui->sliderPWMOutput,
SIGNAL(sliderPressed()),
this, SLOT(onSliderPWMPressed()));
315 connect(ui->sliderPWMOutput,
SIGNAL(sliderReleased()),
this, SLOT(onSliderPWMReleased()));
316 ui->sliderPWMOutput->disableClickOutOfHandle =
true;
317 ui->sliderPWMOutput->enableViewTargetBox =
false;
318 ui->sliderPWMOutput->enableViewTargetValue =
false;
320 ui->sliderCurrentOutput->installEventFilter(
this);
321 connect(ui->sliderCurrentOutput,
SIGNAL(sliderPressed()),
this, SLOT(onSliderCurrentPressed()));
322 connect(ui->sliderCurrentOutput,
SIGNAL(sliderReleased()),
this, SLOT(onSliderCurrentReleased()));
323 ui->sliderCurrentOutput->disableClickOutOfHandle =
true;
324 ui->sliderCurrentOutput->enableViewTargetBox =
false;
325 ui->sliderCurrentOutput->enableViewTargetValue =
false;
327 ui->sliderDirectPosition->installEventFilter(
this);
328 connect(ui->sliderDirectPosition,
SIGNAL(sliderPressed()),
this, SLOT(onSliderDirectPositionPressed()));
329 connect(ui->sliderDirectPosition,
SIGNAL(sliderReleased()),
this, SLOT(onSliderDirectPositionReleased()));
330 ui->sliderDirectPosition->disableClickOutOfHandle =
true;
331 ui->sliderDirectPosition->enableViewTargetBox =
false;
332 ui->sliderDirectPosition->enableViewTargetValue =
false;
334 ui->sliderMixedPosition->installEventFilter(
this);
335 connect(ui->sliderMixedPosition,
SIGNAL(sliderPressed()),
this, SLOT(onSliderMixedPositionPressed()));
336 connect(ui->sliderMixedPosition,
SIGNAL(sliderReleased()),
this, SLOT(onSliderMixedPositionReleased()));
337 ui->sliderMixedPosition->disableClickOutOfHandle =
true;
338 ui->sliderMixedPosition->enableViewTargetBox =
true;
339 ui->sliderMixedPosition->enableViewTargetValue =
false;
341 ui->sliderVelocityVelocity->installEventFilter(
this);
342 connect(ui->sliderVelocityVelocity,
SIGNAL(sliderPressed()),
this,SLOT(onSliderVelocityPressed()));
343 connect(ui->sliderVelocityVelocity,
SIGNAL(sliderReleased()),
this,SLOT(onSliderVelocityReleased()));
344 ui->sliderVelocityVelocity->disableClickOutOfHandle =
true;
345 ui->sliderVelocityVelocity->enableViewTargetBox =
false;
346 ui->sliderVelocityVelocity->enableViewTargetValue =
false;
348 ui->sliderTrajectoryVelocity->installEventFilter(
this);
349 connect(ui->sliderTrajectoryVelocity,
SIGNAL(sliderPressed()),
this, SLOT(onSliderTrajectoryVelocityPressed()));
350 connect(ui->sliderTrajectoryVelocity,
SIGNAL(sliderReleased()),
this, SLOT(onSliderTrajectoryVelocityReleased()));
351 ui->sliderTrajectoryVelocity->disableClickOutOfHandle =
true;
352 ui->sliderTrajectoryVelocity->enableViewTargetBox =
false;
353 ui->sliderTrajectoryVelocity->enableViewTargetValue =
false;
355 ui->sliderMixedVelocity->installEventFilter(
this);
356 connect(ui->sliderMixedVelocity,
SIGNAL(sliderPressed()),
this, SLOT(onSliderMixedVelocityPressed()));
357 connect(ui->sliderMixedVelocity,
SIGNAL(sliderReleased()),
this, SLOT(onSliderMixedVelocityReleased()));
358 ui->sliderMixedVelocity->disableClickOutOfHandle =
true;
359 ui->sliderMixedVelocity->enableViewTargetBox =
false;
360 ui->sliderMixedVelocity->enableViewTargetValue =
false;
362 connect(ui->buttonHome,
SIGNAL(clicked()),
this,SLOT(onHomeClicked()));
363 connect(ui->buttonIdle,
SIGNAL(clicked()),
this,SLOT(onIdleClicked()));
364 connect(ui->buttonRun,
SIGNAL(clicked()),
this,SLOT(onRunClicked()));
365 connect(ui->buttonPid,
SIGNAL(clicked()),
this,SLOT(onPidClicked()));
366 connect(ui->buttonCalib,
SIGNAL(clicked()),
this,SLOT(onCalibClicked()));
368 ui->groupBox->setTitle(QString(
"JOINT %1 (%2)").arg(index).arg(jointName));
374 comboStyle1 =
"QComboBox {"
375 "border: 1px solid gray;"
376 "border-radius: 3px;"
377 "padding: 1px 18px 1px 3px;"
379 "QComboBox:editable {"
381 "foreground: rgb(35, 38, 41);}"
382 "QComboBox::down-arrow {"
383 "image: url(:/images/downArrow.png);}";
386 comboStyle2 =
"QComboBox:on { "
388 "padding-left: 4px;}"
389 "QComboBox::drop-down {"
390 "subcontrol-origin: padding;"
391 "subcontrol-position: top right;"
393 "border-left-width: 1px;"
394 "border-left-color: darkgray;"
395 "border-left-style: solid; "
396 "border-top-right-radius: 3px; "
397 "border-bottom-right-radius: 3px;"
398 "background-color: darkgray;}";
404 ui->comboInteraction->setItemData(0,QColor(Qt::darkGray), Qt::BackgroundRole);
405 ui->comboInteraction->setItemData(1,QColor(0,80,255), Qt::BackgroundRole);
406 ui->comboInteraction->setItemData(1,QColor(35, 38, 41), Qt::ForegroundRole);
408 ui->comboMode->setItemData( IDLE,
idleColor, Qt::BackgroundRole );
409 ui->comboMode->setItemData( POSITION,
positionColor, Qt::BackgroundRole );
411 ui->comboMode->setItemData( MIXED,
mixedColor, Qt::BackgroundRole );
412 ui->comboMode->setItemData( VELOCITY,
velocityColor, Qt::BackgroundRole );
413 ui->comboMode->setItemData( TORQUE,
torqueColor, Qt::BackgroundRole );
414 ui->comboMode->setItemData( PWM,
pwmColor, Qt::BackgroundRole );
415 ui->comboMode->setItemData( CURRENT,
currentColor, Qt::BackgroundRole);
417 ui->comboMode->setItemData( IDLE, QColor(35, 38, 41), Qt::ForegroundRole );
418 ui->comboMode->setItemData( POSITION, QColor(35, 38, 41), Qt::ForegroundRole );
419 ui->comboMode->setItemData( POSITION_DIR, QColor(35, 38, 41), Qt::ForegroundRole );
420 ui->comboMode->setItemData( MIXED, QColor(35, 38, 41), Qt::ForegroundRole );
421 ui->comboMode->setItemData( VELOCITY, QColor(35, 38, 41), Qt::ForegroundRole );
422 ui->comboMode->setItemData( TORQUE, QColor(35, 38, 41), Qt::ForegroundRole );
423 ui->comboMode->setItemData( PWM, QColor(35, 38, 41), Qt::ForegroundRole );
424 ui->comboMode->setItemData( CURRENT, QColor(35, 38, 41), Qt::ForegroundRole );
426 ui->comboMode->setItemData( IDLE,
Idle, Qt::UserRole);
427 ui->comboMode->setItemData( POSITION,
Position, Qt::UserRole );
428 ui->comboMode->setItemData( POSITION_DIR,
PositionDirect, Qt::UserRole );
429 ui->comboMode->setItemData( MIXED,
Mixed, Qt::UserRole );
430 ui->comboMode->setItemData( VELOCITY,
Velocity, Qt::UserRole );
431 ui->comboMode->setItemData( TORQUE,
Torque, Qt::UserRole );
432 ui->comboMode->setItemData( PWM,
Pwm, Qt::UserRole);
433 ui->comboMode->setItemData( CURRENT,
Current, Qt::UserRole);
435 setJointInternalState(IDLE);
437 ui->stackedWidget->widget(VELOCITY)->setEnabled(
false);
438 velocityTimer.setInterval(50);
439 velocityTimer.setSingleShot(
false);
440 connect(&velocityTimer,
SIGNAL(timeout()),
this,SLOT(onVelocityTimer()));
442 ui->stackedWidget->widget(PWM)->setEnabled(
false);
443 pwmTimer.setInterval(50);
444 pwmTimer.setSingleShot(
false);
445 connect(&pwmTimer,
SIGNAL(timeout()),
this,SLOT(onPwmTimer()));
447 ui->stackedWidget->widget(CURRENT)->setEnabled(
false);
448 currentTimer.setInterval(50);
449 currentTimer.setSingleShot(
false);
450 connect(¤tTimer,
SIGNAL(timeout()),
this,SLOT(onCurrentTimer()));
452 ui->stackedWidget->widget(TORQUE)->setEnabled(
false);
453 torqueTimer.setInterval(50);
454 torqueTimer.setSingleShot(
false);
455 connect(&torqueTimer,
SIGNAL(timeout()),
this,SLOT(onTorqueTimer()));
460 if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
461 auto* keyEvent =
static_cast<QKeyEvent *
>(event);
462 int key = keyEvent->key();
463 if(key == Qt::Key_Left || key == Qt::Key_Right || key == Qt::Key_Up ||
464 key == Qt::Key_Down || key == Qt::Key_PageUp || key == Qt::Key_PageDown){
467 QSlider* slider =
nullptr;
469 if(obj == ui->sliderTrajectoryPosition){
470 slider = ui->sliderTrajectoryPosition;
471 if(keyEvent->type() == QEvent::KeyPress){
472 onSliderTrajectoryPositionPressed();
474 if(keyEvent->type() == QEvent::KeyRelease){
475 onSliderTrajectoryPositionReleased();
478 if(obj == ui->sliderTrajectoryVelocity){
479 slider = ui->sliderTrajectoryVelocity;
480 if (keyEvent->type() == QEvent::KeyPress){
481 onSliderTrajectoryVelocityPressed();
483 if (keyEvent->type() == QEvent::KeyRelease){
484 onSliderTrajectoryVelocityReleased();
487 if(obj == ui->sliderDirectPosition){
488 slider = ui->sliderDirectPosition;
489 if(keyEvent->type() == QEvent::KeyPress){
490 onSliderDirectPositionPressed();
492 if(keyEvent->type() == QEvent::KeyRelease){
493 onSliderDirectPositionReleased();
496 if(obj == ui->sliderMixedPosition){
497 slider = ui->sliderMixedPosition;
498 if(keyEvent->type() == QEvent::KeyPress){
499 onSliderMixedPositionPressed();
501 if(keyEvent->type() == QEvent::KeyRelease){
502 onSliderMixedPositionReleased();
505 if(obj == ui->sliderMixedVelocity){
506 slider = ui->sliderMixedVelocity;
508 if(obj == ui->sliderTorqueTorque){
509 slider = ui->sliderTorqueTorque;
510 if(keyEvent->type() == QEvent::KeyPress){
511 onSliderTorquePressed();
513 if(keyEvent->type() == QEvent::KeyRelease){
514 onSliderTorqueReleased();
517 if (obj == ui->sliderPWMOutput){
518 slider = ui->sliderPWMOutput;
519 if(keyEvent->type() == QEvent::KeyPress){
520 onSliderPWMPressed();
522 if(keyEvent->type() == QEvent::KeyRelease){
523 onSliderPWMReleased();
526 if (obj == ui->sliderCurrentOutput){
527 slider = ui->sliderCurrentOutput;
528 if (keyEvent->type() == QEvent::KeyPress){
529 onSliderCurrentPressed();
531 if (keyEvent->type() == QEvent::KeyRelease){
532 onSliderCurrentReleased();
535 if(obj == ui->sliderVelocityVelocity){
536 slider = ui->sliderVelocityVelocity;
537 if(keyEvent->type() == QEvent::KeyPress){
538 onSliderVelocityPressed();
540 if(keyEvent->type() == QEvent::KeyRelease){
541 onSliderVelocityReleased();
545 if (slider ==
nullptr) {
550 if(keyEvent->type() == QEvent::KeyPress){
551 if(key == Qt::Key_Left || key == Qt::Key_Down){
552 slider->setValue(slider->value() - 1);
554 if(key == Qt::Key_Right || key == Qt::Key_Up){
555 slider->setValue(slider->value() + 1);
557 if(key == Qt::Key_PageUp){
558 slider->setValue(slider->value() + 10);
560 if(key == Qt::Key_PageDown){
561 slider->setValue(slider->value() - 10);
568 return QObject::eventFilter(obj, event);
572 return QObject::eventFilter(obj, event);
578 velocityModeEnabled = control;
579 ui->stackedWidget->widget(VELOCITY)->setEnabled(velocityModeEnabled);
580 if(ui->stackedWidget->currentIndex() == VELOCITY && velocityModeEnabled){
581 velocityTimer.start();
587 ui->stackedWidget->widget(MIXED)->setEnabled(control);
592 ui->stackedWidget->widget(POSITION_DIR)->setEnabled(control);
597 pwmModeEnabled = control;
598 ui->stackedWidget->widget(PWM)->setEnabled(pwmModeEnabled);
599 if(ui->stackedWidget->currentIndex() == PWM && pwmModeEnabled)
607 currentModeEnabled = control;
608 ui->stackedWidget->widget(CURRENT)->setEnabled(currentModeEnabled);
609 if(ui->stackedWidget->currentIndex() == CURRENT && currentModeEnabled)
611 currentTimer.start();
617 torqueModeEnabled = control;
618 ui->stackedWidget->widget(TORQUE)->setEnabled(torqueModeEnabled);
619 if(ui->stackedWidget->currentIndex() == TORQUE && torqueModeEnabled)
627 ui->sliderTrajectoryPosition->enableViewTargetBox = visible;
628 ui->sliderMixedPosition->enableViewTargetBox = visible;
633 ui->sliderTrajectoryPosition->enableViewTargetValue = visible;
634 ui->sliderMixedPosition->enableViewTargetValue = visible;
639 QString pos_metric_revolute(
"deg");
640 QString trq_metric_revolute(
"Nm");
641 QString trq_metric_revolute_title(
"Torque:");
642 QString vel_metric_revolute(
"deg/s");
643 QString pos_metric_prism(
"m");
644 QString trq_metric_prism(
"N");
645 QString trq_metric_prism_title(
"Force:");
646 QString vel_metric_prism(
"m/s");
650 ui->labelIdlevelUnits->setText(vel_metric_revolute);
651 ui->labelPositionvelUnits->setText(vel_metric_revolute);
652 ui->labelPositionDirvelUnits->setText(vel_metric_revolute);
653 ui->labelMixedvelUnits->setText(vel_metric_revolute);
654 ui->labelTorquevelUnits->setText(vel_metric_revolute);
655 ui->labelPWMvelUnits->setText(vel_metric_revolute);
656 ui->labelCurrentvelUnits->setText(vel_metric_revolute);
657 ui->labelVelocityvelUnits->setText(vel_metric_revolute);
659 ui->labelIdleTorque->setText(trq_metric_revolute_title);
660 ui->labelPositionTorque->setText(trq_metric_revolute_title);
661 ui->labelPositionDirTorque->setText(trq_metric_revolute_title);
662 ui->labelMixedTorque->setText(trq_metric_revolute_title);
663 ui->labelTorqueTorque->setText(trq_metric_revolute_title);
664 ui->labelPWMTorque->setText(trq_metric_revolute_title);
665 ui->labelCurrentTorque->setText(trq_metric_revolute_title);
666 ui->labelVelocityTorque->setText(trq_metric_revolute_title);
668 ui->labelIdleposUnits->setText(pos_metric_revolute);
669 ui->labelPositionposUnits->setText(pos_metric_revolute);
670 ui->labelPositionDirposUnits->setText(pos_metric_revolute);
671 ui->labelMixedposUnits->setText(pos_metric_revolute);
672 ui->labelTorqueposUnits->setText(pos_metric_revolute);
673 ui->labelPWMposUnits->setText(pos_metric_revolute);
674 ui->labelCurrentposUnits->setText(pos_metric_revolute);
675 ui->labelVelocityposUnits->setText(pos_metric_revolute);
676 ui->labelFaultposUnits->setText(pos_metric_revolute);
681 ui->labelIdletrqUnits->setText(trq_metric_revolute);
682 ui->labelPositiontrqUnits->setText(trq_metric_revolute);
683 ui->labelPositionDirtrqUnits->setText(trq_metric_revolute);
684 ui->labelMixedtrqUnits->setText(trq_metric_revolute);
685 ui->labelTorquetrqUnits->setText(trq_metric_revolute);
686 ui->labelPWMtrqUnits->setText(trq_metric_revolute);
687 ui->labelCurrenttrqUnits->setText(pos_metric_revolute);
688 ui->labelVelocitytrqUnits->setText(trq_metric_revolute);
692 ui->labelIdlevelUnits->setText(vel_metric_prism);
693 ui->labelPositionvelUnits->setText(vel_metric_prism);
694 ui->labelPositionDirvelUnits->setText(vel_metric_prism);
695 ui->labelMixedvelUnits->setText(vel_metric_prism);
696 ui->labelTorquevelUnits->setText(vel_metric_prism);
697 ui->labelPWMvelUnits->setText(vel_metric_prism);
698 ui->labelCurrentvelUnits->setText(vel_metric_prism);
699 ui->labelVelocityvelUnits->setText(vel_metric_prism);
701 ui->labelIdleTorque->setText(trq_metric_prism_title);
702 ui->labelPositionTorque->setText(trq_metric_prism_title);
703 ui->labelPositionDirTorque->setText(trq_metric_prism_title);
704 ui->labelMixedTorque->setText(trq_metric_prism_title);
705 ui->labelTorqueTorque->setText(trq_metric_prism_title);
706 ui->labelPWMTorque->setText(trq_metric_prism_title);
707 ui->labelCurrentTorque->setText(trq_metric_prism_title);
708 ui->labelVelocityTorque->setText(trq_metric_prism_title);
710 ui->labelIdleposUnits->setText(pos_metric_prism);
711 ui->labelPositionposUnits->setText(pos_metric_prism);
712 ui->labelPositionDirposUnits->setText(pos_metric_prism);
713 ui->labelMixedposUnits->setText(pos_metric_prism);
714 ui->labelTorqueposUnits->setText(pos_metric_prism);
715 ui->labelPWMposUnits->setText(pos_metric_prism);
716 ui->labelCurrentposUnits->setText(pos_metric_prism);
717 ui->labelVelocityposUnits->setText(pos_metric_prism);
718 ui->labelFaultposUnits->setText(pos_metric_prism);
723 ui->labelIdletrqUnits->setText(trq_metric_prism);
724 ui->labelPositiontrqUnits->setText(trq_metric_prism);
725 ui->labelPositionDirtrqUnits->setText(trq_metric_prism);
726 ui->labelMixedtrqUnits->setText(trq_metric_prism);
727 ui->labelTorquetrqUnits->setText(trq_metric_prism);
728 ui->labelPWMtrqUnits->setText(trq_metric_prism);
729 ui->labelCurrenttrqUnits->setText(trq_metric_prism);
730 ui->labelVelocitytrqUnits->setText(trq_metric_prism);
734 yFatal(
"Unspecified joint type");
740 joint_motorPositionVisible = visible;
741 ui->editIdleMotorPos->setVisible(visible);
742 ui->editPositionMotorPos->setVisible(visible);
743 ui->editPositionDirMotorPos->setVisible(visible);
744 ui->editMixedMotorPos->setVisible(visible);
745 ui->editTorqueMotorPos->setVisible(visible);
746 ui->editPWMMotorPos->setVisible(visible);
747 ui->editCurrentMotorPos->setVisible(visible);
748 ui->editVelocityMotorPos->setVisible(visible);
749 ui->editFaultMotorPos->setVisible(visible);
751 ui->labelIdleMotorPos->setVisible(visible);
752 ui->labelPositionMotorPos->setVisible(visible);
753 ui->labelPositionDirMotorPos->setVisible(visible);
754 ui->labelMixedMotorPos->setVisible(visible);
755 ui->labelTorqueMotorPos->setVisible(visible);
756 ui->labelPWMMotorPos->setVisible(visible);
757 ui->labelCurrentMotorPos->setVisible(visible);
758 ui->labelVelocityMotorPos->setVisible(visible);
759 ui->labelFaultMotorPos->setVisible(visible);
761 ui->labelIdleMotorPosUnits->setVisible(visible);
762 ui->labelPositionMotorPosUnits->setVisible(visible);
763 ui->labelPositionDirMotorPosUnits->setVisible(visible);
764 ui->labelMixedMotorPosUnits->setVisible(visible);
765 ui->labelTorqueMotorPosUnits->setVisible(visible);
766 ui->labelPWMMotorPosUnits->setVisible(visible);
767 ui->labelCurrentMotorPosUnits->setVisible(visible);
768 ui->labelVelocityMotorPosUnits->setVisible(visible);
769 ui->labelFaultMotorPosUnits->setVisible(visible);
772 ui->editIdleMotorPos->setMinimumHeight(0);
773 ui->editPositionMotorPos->setMinimumHeight(0);
774 ui->editPositionDirMotorPos->setMinimumHeight(0);
775 ui->editMixedMotorPos->setMinimumHeight(0);
776 ui->editTorqueMotorPos->setMinimumHeight(0);
777 ui->editPWMMotorPos->setMinimumHeight(0);
778 ui->editCurrentMotorPos->setMinimumHeight(0);
779 ui->editVelocityMotorPos->setMinimumHeight(0);
780 ui->editFaultMotorPos->setMinimumHeight(0);
782 ui->labelPositionMotorPos->setMinimumHeight(0);
783 ui->labelPositionMotorPosUnits->setMinimumHeight(0);
784 ui->labelPositionDirMotorPos->setMinimumHeight(0);
785 ui->labelPositionDirMotorPosUnits->setMinimumHeight(0);
786 ui->labelMixedMotorPos->setMinimumHeight(0);
787 ui->labelMixedMotorPosUnits->setMinimumHeight(0);
788 ui->labelTorqueMotorPos->setMinimumHeight(0);
789 ui->labelTorqueMotorPosUnits->setMinimumHeight(0);
790 ui->labelPWMMotorPos->setMinimumHeight(0);
791 ui->labelPWMMotorPosUnits->setMinimumHeight(0);
792 ui->labelCurrentMotorPos->setMinimumHeight(0);
793 ui->labelCurrentMotorPosUnits->setMinimumHeight(0);
794 ui->labelVelocityMotorPos->setMinimumHeight(0);
795 ui->labelVelocityMotorPosUnits->setMinimumHeight(0);
796 ui->labelIdleMotorPos->setMinimumHeight(0);
797 ui->labelIdleMotorPosUnits->setMinimumHeight(0);
798 ui->labelFaultMotorPos->setMinimumHeight(0);
799 ui->labelFaultMotorPosUnits->setMinimumHeight(0);
802 ui->editIdleMotorPos->setMinimumHeight(20);
803 ui->editPositionMotorPos->setMinimumHeight(20);
804 ui->editPositionDirMotorPos->setMinimumHeight(20);
805 ui->editMixedMotorPos->setMinimumHeight(20);
806 ui->editTorqueMotorPos->setMinimumHeight(20);
807 ui->editPWMMotorPos->setMinimumHeight(20);
808 ui->editCurrentMotorPos->setMinimumHeight(20);
809 ui->editVelocityMotorPos->setMinimumHeight(20);
810 ui->editFaultMotorPos->setMinimumHeight(20);
812 ui->labelPositionMotorPos->setMinimumHeight(20);
813 ui->labelPositionMotorPosUnits->setMinimumHeight(20);
814 ui->labelPositionDirMotorPos->setMinimumHeight(20);
815 ui->labelPositionDirMotorPosUnits->setMinimumHeight(20);
816 ui->labelMixedMotorPos->setMinimumHeight(20);
817 ui->labelMixedMotorPosUnits->setMinimumHeight(20);
818 ui->labelTorqueMotorPos->setMinimumHeight(20);
819 ui->labelTorqueMotorPosUnits->setMinimumHeight(20);
820 ui->labelPWMMotorPos->setMinimumHeight(20);
821 ui->labelPWMMotorPosUnits->setMinimumHeight(20);
822 ui->labelCurrentMotorPos->setMinimumHeight(20);
823 ui->labelCurrentMotorPosUnits->setMinimumHeight(20);
824 ui->labelVelocityMotorPos->setMinimumHeight(20);
825 ui->labelVelocityMotorPosUnits->setMinimumHeight(20);
826 ui->labelIdleMotorPos->setMinimumHeight(20);
827 ui->labelIdleMotorPosUnits->setMinimumHeight(20);
828 ui->labelFaultMotorPos->setMinimumHeight(20);
829 ui->labelFaultMotorPosUnits->setMinimumHeight(20);
835 joint_dutyVisible = visible;
840 ui->editTorqueDuty->setVisible(visible);
841 ui->editCurrentDuty->setVisible(visible);
854 ui->labelTorqueDuty->setVisible(visible);
855 ui->labelTorqueDutyUnits->setVisible(visible);
857 ui->labelCurrentDuty->setVisible(visible);
859 ui->labelCurrentDutyUnits->setVisible(visible);
880 ui->labelTorqueDuty->setMinimumHeight(0);
881 ui->labelTorqueDutyUnits->setMinimumHeight(0);
884 ui->labelCurrentDuty->setMinimumHeight(0);
885 ui->labelCurrentDutyUnits->setMinimumHeight(0);
896 ui->editTorqueDuty->setMinimumHeight(20);
898 ui->editCurrentDuty->setMinimumHeight(20);
907 ui->labelTorqueDuty->setMinimumHeight(20);
908 ui->labelTorqueDutyUnits->setMinimumHeight(20);
911 ui->labelCurrentDuty->setMinimumHeight(20);
912 ui->labelCurrentDutyUnits->setMinimumHeight(20);
922 joint_currentVisible = visible;
923 ui->editIdleCurrent->setVisible(visible);
924 ui->editPositionCurrent->setVisible(visible);
925 ui->editPositionDirCurrent->setVisible(visible);
926 ui->editMixedCurrent->setVisible(visible);
927 ui->editTorqueCurrent->setVisible(visible);
928 ui->editPWMCurrent->setVisible(visible);
930 ui->editVelocityCurrent->setVisible(visible);
932 ui->labelIdleCurrent->setVisible(visible);
933 ui->labelIdleCurrentUnits->setVisible(visible);
934 ui->labelPositionCurrent->setVisible(visible);
935 ui->labelPositionCurrentUnits->setVisible(visible);
936 ui->labelPositionDirCurrent->setVisible(visible);
937 ui->labelPositionDirCurrentUnits->setVisible(visible);
938 ui->labelMixedCurrent->setVisible(visible);
939 ui->labelMixedCurrentUnits->setVisible(visible);
940 ui->labelTorqueCurrent->setVisible(visible);
941 ui->labelTorqueCurrentUnits->setVisible(visible);
942 ui->labelPWMCurrent->setVisible(visible);
944 ui->labelPWMCurrentUnits->setVisible(visible);
946 ui->labelVelocityCurrent->setVisible(visible);
947 ui->labelVelocityCurrentUnits->setVisible(visible);
951 ui->editIdleCurrent->setMinimumHeight(0);
952 ui->editPositionCurrent->setMinimumHeight(0);
953 ui->editPositionDirCurrent->setMinimumHeight(0);
954 ui->editMixedCurrent->setMinimumHeight(0);
955 ui->editTorqueCurrent->setMinimumHeight(0);
956 ui->editPWMCurrent->setMinimumHeight(0);
958 ui->editVelocityCurrent->setMinimumHeight(0);
960 ui->labelPositionCurrent->setMinimumHeight(0);
961 ui->labelPositionCurrentUnits->setMinimumHeight(0);
962 ui->labelPositionDirCurrent->setMinimumHeight(0);
963 ui->labelPositionDirCurrentUnits->setMinimumHeight(0);
964 ui->labelMixedCurrent->setMinimumHeight(0);
965 ui->labelMixedCurrentUnits->setMinimumHeight(0);
966 ui->labelTorqueCurrent->setMinimumHeight(0);
967 ui->labelTorqueCurrentUnits->setMinimumHeight(0);
968 ui->labelPWMCurrent->setMinimumHeight(0);
969 ui->labelPWMCurrentUnits->setMinimumHeight(0);
972 ui->labelVelocityCurrent->setMinimumHeight(0);
973 ui->labelVelocityCurrentUnits->setMinimumHeight(0);
974 ui->labelIdleCurrent->setMinimumHeight(0);
975 ui->labelIdleCurrentUnits->setMinimumHeight(0);
978 ui->editIdleCurrent->setMinimumHeight(20);
979 ui->editPositionCurrent->setMinimumHeight(20);
980 ui->editPositionDirCurrent->setMinimumHeight(20);
981 ui->editMixedCurrent->setMinimumHeight(20);
982 ui->editTorqueCurrent->setMinimumHeight(20);
983 ui->editPWMCurrent->setMinimumHeight(20);
985 ui->editVelocityCurrent->setMinimumHeight(20);
987 ui->labelPositionCurrent->setMinimumHeight(20);
988 ui->labelPositionCurrentUnits->setMinimumHeight(20);
989 ui->labelPositionDirCurrent->setMinimumHeight(20);
990 ui->labelPositionDirCurrentUnits->setMinimumHeight(20);
991 ui->labelMixedCurrent->setMinimumHeight(20);
992 ui->labelMixedCurrentUnits->setMinimumHeight(20);
993 ui->labelTorqueCurrent->setMinimumHeight(20);
994 ui->labelTorqueCurrentUnits->setMinimumHeight(20);
995 ui->labelPWMCurrent->setMinimumHeight(20);
996 ui->labelPWMCurrentUnits->setMinimumHeight(20);
999 ui->labelVelocityCurrent->setMinimumHeight(20);
1000 ui->labelVelocityCurrentUnits->setMinimumHeight(20);
1001 ui->labelIdleCurrent->setMinimumHeight(20);
1002 ui->labelIdleCurrentUnits->setMinimumHeight(20);
1008 joint_speedVisible = visible;
1009 ui->editIdleSpeed->setVisible(visible);
1010 ui->editPositionSpeed->setVisible(visible);
1011 ui->editPositionDirSpeed->setVisible(visible);
1012 ui->editMixedSpeed->setVisible(visible);
1013 ui->editTorqueSpeed->setVisible(visible);
1014 ui->editPWMSpeed->setVisible(visible);
1015 ui->editCurrentSpeed->setVisible(visible);
1016 ui->editVelocitySpeed->setVisible(visible);
1018 ui->labelIdleSpeed->setVisible(visible);
1019 ui->labelIdlevelUnits->setVisible(visible);
1020 ui->labelPositionSpeed->setVisible(visible);
1021 ui->labelPositionvelUnits->setVisible(visible);
1022 ui->labelPositionDirSpeed->setVisible(visible);
1023 ui->labelPositionDirvelUnits->setVisible(visible);
1024 ui->labelMixedSpeed->setVisible(visible);
1025 ui->labelMixedvelUnits->setVisible(visible);
1026 ui->labelTorqueSpeed->setVisible(visible);
1027 ui->labelTorquevelUnits->setVisible(visible);
1028 ui->labelPWMSpeed->setVisible(visible);
1029 ui->labelCurrentSpeed->setVisible(visible);
1030 ui->labelPWMvelUnits->setVisible(visible);
1031 ui->labelCurrentvelUnits->setVisible(visible);
1032 ui->labelVelocitySpeed->setVisible(visible);
1033 ui->labelVelocityvelUnits->setVisible(visible);
1037 ui->editIdleSpeed->setMinimumHeight(0);
1038 ui->editPositionSpeed->setMinimumHeight(0);
1039 ui->editPositionDirSpeed->setMinimumHeight(0);
1040 ui->editMixedSpeed->setMinimumHeight(0);
1041 ui->editTorqueSpeed->setMinimumHeight(0);
1042 ui->editPWMSpeed->setMinimumHeight(0);
1043 ui->editCurrentSpeed->setMinimumHeight(0);
1044 ui->editVelocitySpeed->setMinimumHeight(0);
1046 ui->labelPositionSpeed->setMinimumHeight(0);
1047 ui->labelPositionvelUnits->setMinimumHeight(0);
1048 ui->labelPositionDirSpeed->setMinimumHeight(0);
1049 ui->labelPositionDirvelUnits->setMinimumHeight(0);
1050 ui->labelMixedSpeed->setMinimumHeight(0);
1051 ui->labelMixedvelUnits->setMinimumHeight(0);
1052 ui->labelTorqueSpeed->setMinimumHeight(0);
1053 ui->labelTorquevelUnits->setMinimumHeight(0);
1054 ui->labelPWMSpeed->setMinimumHeight(0);
1055 ui->labelPWMvelUnits->setMinimumHeight(0);
1056 ui->labelCurrentSpeed->setMinimumHeight(0);
1057 ui->labelCurrentvelUnits->setMinimumHeight(0);
1058 ui->labelVelocitySpeed->setMinimumHeight(0);
1059 ui->labelVelocityvelUnits->setMinimumHeight(0);
1060 ui->labelIdleSpeed->setMinimumHeight(0);
1061 ui->labelIdlevelUnits->setMinimumHeight(0);
1063 ui->editIdleSpeed->setMinimumHeight(20);
1064 ui->editPositionSpeed->setMinimumHeight(20);
1065 ui->editPositionDirSpeed->setMinimumHeight(20);
1066 ui->editMixedSpeed->setMinimumHeight(20);
1067 ui->editTorqueSpeed->setMinimumHeight(20);
1068 ui->editPWMSpeed->setMinimumHeight(20);
1069 ui->editCurrentSpeed->setMinimumHeight(20);
1070 ui->editVelocitySpeed->setMinimumHeight(20);
1072 ui->labelPositionSpeed->setMinimumHeight(20);
1073 ui->labelPositionvelUnits->setMinimumHeight(20);
1074 ui->labelPositionDirSpeed->setMinimumHeight(20);
1075 ui->labelPositionDirvelUnits->setMinimumHeight(20);
1076 ui->labelMixedSpeed->setMinimumHeight(20);
1077 ui->labelMixedvelUnits->setMinimumHeight(20);
1078 ui->labelTorqueSpeed->setMinimumHeight(20);
1079 ui->labelTorquevelUnits->setMinimumHeight(20);
1080 ui->labelPWMSpeed->setMinimumHeight(20);
1081 ui->labelPWMvelUnits->setMinimumHeight(20);
1082 ui->labelCurrentSpeed->setMinimumHeight(20);
1083 ui->labelCurrentvelUnits->setMinimumHeight(20);
1084 ui->labelVelocitySpeed->setMinimumHeight(20);
1085 ui->labelVelocityvelUnits->setMinimumHeight(20);
1086 ui->labelIdleSpeed->setMinimumHeight(20);
1087 ui->labelIdlevelUnits->setMinimumHeight(20);
1093 double positionSliderStep = 1 / (fabs(min_position - max_position) / 100.0);
1094 ui->sliderMixedPosition->setSliderStep(positionSliderStep);
1095 ui->sliderTrajectoryPosition->setSliderStep(positionSliderStep);
1096 ui->sliderDirectPosition->setSliderStep(positionSliderStep);
1097 ui->sliderMixedPosition->setIsDouble(
true);
1098 ui->sliderTrajectoryPosition->setIsDouble(
true);
1099 ui->sliderDirectPosition->setIsDouble(
true);
1100 int sliderMin = min_position*positionSliderStep;
1101 int sliderMax = max_position*positionSliderStep;
1102 ui->sliderMixedPosition->setRange(sliderMin, sliderMax);
1103 ui->sliderTrajectoryPosition->setRange(sliderMin, sliderMax);
1104 ui->sliderDirectPosition->setRange(sliderMin, sliderMax);
1105 ui->sliderMixedPosition->resetTarget();
1106 ui->sliderTrajectoryPosition->resetTarget();
1107 ui->sliderDirectPosition->resetTarget();
1112 double positionSliderStep = 1 / value;
1113 ui->sliderMixedPosition->setSliderStep(positionSliderStep);
1114 ui->sliderTrajectoryPosition->setSliderStep(positionSliderStep);
1115 ui->sliderDirectPosition->setSliderStep(positionSliderStep);
1116 ui->sliderMixedPosition->setIsDouble(
true);
1117 ui->sliderTrajectoryPosition->setIsDouble(
true);
1118 ui->sliderDirectPosition->setIsDouble(
true);
1119 int sliderMin = min_position*positionSliderStep;
1120 int sliderMax = max_position*positionSliderStep;
1121 ui->sliderMixedPosition->setRange(sliderMin, sliderMax);
1122 ui->sliderTrajectoryPosition->setRange(sliderMin, sliderMax);
1123 ui->sliderDirectPosition->setRange(sliderMin, sliderMax);
1124 ui->sliderMixedPosition->resetTarget();
1125 ui->sliderTrajectoryPosition->resetTarget();
1126 ui->sliderDirectPosition->resetTarget();
1131 ui->sliderMixedPosition->number_of_decimals=num;
1132 ui->sliderTrajectoryPosition->number_of_decimals = num;
1133 ui->sliderDirectPosition->number_of_decimals = num;
1134 ui->sliderMixedPosition->number_of_decimals = num;
1135 ui->sliderTrajectoryPosition->number_of_decimals = num;
1136 ui->sliderDirectPosition->number_of_decimals = num;
1141 if (fabs(max_position - min_position) < 1.0)
1143 yError(
"Unable to set integer position slider");
1146 double positionSliderStep = 1;
1147 ui->sliderMixedPosition->setSliderStep(positionSliderStep);
1148 ui->sliderTrajectoryPosition->setSliderStep(positionSliderStep);
1149 ui->sliderDirectPosition->setSliderStep(positionSliderStep);
1150 ui->sliderMixedPosition->setIsDouble(
false);
1151 ui->sliderTrajectoryPosition->setIsDouble(
false);
1152 ui->sliderDirectPosition->setIsDouble(
false);
1153 int sliderMin = min_position;
1154 int sliderMax = max_position;
1155 ui->sliderMixedPosition->setRange(sliderMin, sliderMax);
1156 ui->sliderTrajectoryPosition->setRange(sliderMin, sliderMax);
1157 ui->sliderDirectPosition->setRange(sliderMin, sliderMax);
1158 ui->sliderMixedPosition->resetTarget();
1159 ui->sliderTrajectoryPosition->resetTarget();
1160 ui->sliderDirectPosition->resetTarget();
1165 double velocitySliderStep = 1 / (fabs(-max_velocity - max_velocity) / 100.0);
1166 ui->sliderVelocityVelocity->setSliderStep(velocitySliderStep);
1167 ui->sliderVelocityVelocity->setIsDouble(
true);
1168 int sliderMin = -max_velocity*velocitySliderStep;
1169 int sliderMax = max_velocity*velocitySliderStep;
1170 ui->sliderVelocityVelocity->setRange(sliderMin, sliderMax);
1171 int v = ui->sliderVelocityVelocity->value();
1172 if (v > sliderMax) {}
1173 if (v < sliderMin) {}
1179 double velocitySliderStep = 1 / value;
1180 ui->sliderVelocityVelocity->setSliderStep(velocitySliderStep);
1181 ui->sliderVelocityVelocity->setIsDouble(
true);
1182 int sliderMin = -max_velocity*velocitySliderStep;
1183 int sliderMax = max_velocity*velocitySliderStep;
1184 ui->sliderVelocityVelocity->setRange(sliderMin, sliderMax);
1185 int v = ui->sliderVelocityVelocity->value();
1186 if (v > sliderMax) {}
1187 if (v < sliderMin) {}
1193 if (fabs(max_velocity) < 1.0)
1195 yError(
"Unable to set integer velocity slider");
1198 double velocitySliderStep = 1;
1199 ui->sliderVelocityVelocity->setSliderStep(velocitySliderStep);
1200 ui->sliderVelocityVelocity->setIsDouble(
false);
1201 int sliderMin = -max_velocity;
1202 int sliderMax = max_velocity;
1203 ui->sliderVelocityVelocity->setRange(sliderMin, sliderMax);
1204 int v = ui->sliderVelocityVelocity->value();
1205 if (v > sliderMax) {}
1206 if (v < sliderMin) {}
1212 double torqueSliderStep = 1 / (fabs(-max_torque - max_torque) / 100.0);
1213 ui->sliderTorqueTorque->setSliderStep(torqueSliderStep);
1214 ui->sliderTorqueTorque->setIsDouble(
true);
1215 int sliderMin = -max_torque*torqueSliderStep;
1216 int sliderMax = max_torque*torqueSliderStep;
1217 ui->sliderTorqueTorque->setRange(sliderMin, sliderMax);
1218 int v = ui->sliderTorqueTorque->value();
1219 if (v > sliderMax) {}
1220 if (v < sliderMin) {}
1226 double torqueSliderStep = 1 / value;
1227 ui->sliderTorqueTorque->setSliderStep(torqueSliderStep);
1228 ui->sliderTorqueTorque->setIsDouble(
true);
1229 int sliderMin = -max_torque*torqueSliderStep;
1230 int sliderMax = max_torque*torqueSliderStep;
1231 ui->sliderTorqueTorque->setRange(sliderMin, sliderMax);
1232 int v = ui->sliderTorqueTorque->value();
1233 if (v > sliderMax) {}
1234 if (v < sliderMin) {}
1240 if (fabs(max_torque) < 1.0)
1242 yError(
"Unable to set integer torque slider");
1245 double torqueSliderStep = 1;
1246 ui->sliderTorqueTorque->setSliderStep(torqueSliderStep);
1247 ui->sliderTorqueTorque->setIsDouble(
false);
1248 int sliderMin = -max_torque;
1249 int sliderMax = max_torque;
1250 ui->sliderTorqueTorque->setRange(sliderMin, sliderMax);
1251 int v = ui->sliderTorqueTorque->value();
1252 if (v > sliderMax) {}
1253 if (v < sliderMin) {}
1259 double currentSliderStep = 1 / (fabs(-max_current - max_current) / 100.0);
1260 ui->sliderCurrentOutput->setSliderStep(currentSliderStep);
1261 ui->sliderCurrentOutput->setIsDouble(
true);
1262 int sliderMin = -max_current*currentSliderStep;
1263 int sliderMax = max_current*currentSliderStep;
1264 ui->sliderCurrentOutput->setRange(sliderMin, sliderMax);
1265 int v = ui->sliderCurrentOutput->value();
1266 if (v > sliderMax) {}
1267 if (v < sliderMin) {}
1273 double currentSliderStep = 1 / value;
1274 ui->sliderCurrentOutput->setSliderStep(currentSliderStep);
1275 ui->sliderCurrentOutput->setIsDouble(
true);
1276 int sliderMin = -max_current*currentSliderStep;
1277 int sliderMax = max_current*currentSliderStep;
1278 ui->sliderCurrentOutput->setRange(sliderMin, sliderMax);
1279 int v = ui->sliderCurrentOutput->value();
1280 if (v > sliderMax) {}
1281 if (v < sliderMin) {}
1287 if (fabs(max_velocity) < 1.0)
1289 yError(
"Unable to set integer velocity slider");
1292 double currentSliderStep = 1;
1293 ui->sliderCurrentOutput->setSliderStep(currentSliderStep);
1294 ui->sliderCurrentOutput->setIsDouble(
false);
1295 int sliderMin = -max_current;
1296 int sliderMax = max_current;
1297 ui->sliderCurrentOutput->setRange(sliderMin, sliderMax);
1298 int v = ui->sliderCurrentOutput->value();
1299 if (v > sliderMax) {}
1300 if (v < sliderMin) {}
1306 double trajectoryVelocitySliderStep = 1 / (fabs(0 - max_trajectory_velocity) / 100.0);
1307 ui->sliderTrajectoryVelocity->setSliderStep(trajectoryVelocitySliderStep);
1308 ui->sliderTrajectoryVelocity->setIsDouble(
true);
1309 int sliderMin = 0 * trajectoryVelocitySliderStep;
1310 int sliderMax = max_trajectory_velocity*trajectoryVelocitySliderStep;
1311 ui->sliderTrajectoryVelocity->setRange(sliderMin, sliderMax);
1312 int v = ui->sliderTrajectoryVelocity->value();
1313 if (v > sliderMax) {}
1314 if (v < sliderMin) {}
1320 double trajectoryVelocitySliderStep = 1 / value;
1321 ui->sliderTrajectoryVelocity->setSliderStep(trajectoryVelocitySliderStep);
1322 ui->sliderTrajectoryVelocity->setIsDouble(
true);
1323 int sliderMin = 0 * trajectoryVelocitySliderStep;
1324 int sliderMax = max_trajectory_velocity*trajectoryVelocitySliderStep;
1325 ui->sliderTrajectoryVelocity->setRange(sliderMin, sliderMax);
1326 int v = ui->sliderTrajectoryVelocity->value();
1327 if (v > sliderMax) {}
1328 if (v < sliderMin) {}
1335 int sliderMax = max_trajectory_velocity;
1336 double trajectoryVelocitySliderStep = 1;
1337 ui->sliderTrajectoryVelocity->setSliderStep(trajectoryVelocitySliderStep);
1338 ui->sliderTrajectoryVelocity->setRange(sliderMin, sliderMax);
1339 ui->sliderTrajectoryVelocity->setIsDouble(
false);
1340 int v = ui->sliderTrajectoryVelocity->value();
1341 if (v > sliderMax) {}
1342 if (v < sliderMin) {}
1355 ui->buttonCalib->setEnabled(
false);
1358 connect(ui->stackedWidget,
SIGNAL(currentChanged(
int)),
this, SLOT(onStackedWidgetChanged(
int)));
1363 disconnect(ui->comboMode,
SIGNAL(currentIndexChanged(
int)),
this,SLOT(onModeChanged(
int)));
1364 disconnect(ui->comboInteraction,
SIGNAL(currentIndexChanged(
int)),
this,SLOT(onInteractionChanged(
int)));
1366 disconnect(ui->sliderTrajectoryPosition,
SIGNAL(sliderPressed()),
this,SLOT(onSliderTrajectoryPositionPressed()));
1367 disconnect(ui->sliderTrajectoryPosition,
SIGNAL(sliderReleased()),
this,SLOT(onSliderTrajectoryPositionReleased()));
1369 disconnect(ui->sliderTorqueTorque,
SIGNAL(sliderPressed()),
this,SLOT(onSliderTorquePressed()));
1370 disconnect(ui->sliderTorqueTorque,
SIGNAL(sliderReleased()),
this,SLOT(onSliderTorqueReleased()));
1372 disconnect(ui->sliderPWMOutput,
SIGNAL(sliderPressed()),
this, SLOT(onSliderPWMPressed()));
1373 disconnect(ui->sliderPWMOutput,
SIGNAL(sliderReleased()),
this, SLOT(onSliderPWMReleased()));
1375 disconnect(ui->sliderCurrentOutput,
SIGNAL(sliderPressed()),
this, SLOT(onSliderCurrentPressed()));
1376 disconnect(ui->sliderCurrentOutput,
SIGNAL(sliderReleased()),
this, SLOT(onSliderCurrentPressed()));
1378 disconnect(ui->sliderDirectPosition,
SIGNAL(sliderPressed()),
this, SLOT(onSliderDirectPositionPressed()));
1379 disconnect(ui->sliderDirectPosition,
SIGNAL(sliderReleased()),
this, SLOT(onSliderDirectPositionReleased()));
1381 disconnect(ui->sliderMixedPosition,
SIGNAL(sliderPressed()),
this,SLOT(onSliderMixedPositionPressed()));
1382 disconnect(ui->sliderMixedPosition,
SIGNAL(sliderReleased()),
this,SLOT(onSliderMixedPositionReleased()));
1384 disconnect(ui->sliderTrajectoryVelocity,
SIGNAL(sliderPressed()),
this, SLOT(onSliderTrajectoryVelocityPressed()));
1385 disconnect(ui->sliderMixedVelocity,
SIGNAL(sliderReleased()),
this, SLOT(onSliderMixedVelocityReleased()));
1387 disconnect(ui->buttonHome,
SIGNAL(clicked()),
this,SLOT(onHomeClicked()));
1388 disconnect(ui->buttonIdle,
SIGNAL(clicked()),
this,SLOT(onIdleClicked()));
1389 disconnect(ui->buttonRun,
SIGNAL(clicked()),
this,SLOT(onRunClicked()));
1390 disconnect(ui->buttonPid,
SIGNAL(clicked()),
this,SLOT(onPidClicked()));
1391 disconnect(ui->buttonCalib,
SIGNAL(clicked()),
this,SLOT(onCalibClicked()));
1400void JointItem::installFilter()
1403 filter->setParent(
this);
1404 ui->comboMode->installEventFilter(filter);
1405 ui->comboInteraction->installEventFilter(filter);
1407 ui->sliderMixedPosition->installEventFilter(filter);
1408 ui->sliderMixedVelocity->installEventFilter(filter);
1409 ui->sliderDirectPosition->installEventFilter(filter);
1410 ui->sliderTrajectoryPosition->installEventFilter(filter);
1411 ui->sliderTrajectoryVelocity->installEventFilter(filter);
1412 ui->sliderTorqueTorque->installEventFilter(filter);
1416void JointItem::onStackedWidgetChanged(
int index)
1418 if(index == VELOCITY)
1420 if(velocityModeEnabled)
1422 velocityTimer.start();
1425 else if(index == PWM)
1432 else if(index == CURRENT)
1434 if(currentModeEnabled)
1436 currentTimer.start();
1439 else if(index == TORQUE)
1441 if(torqueModeEnabled)
1443 torqueTimer.start();
1448 if(velocityModeEnabled)
1450 velocityTimer.stop();
1452 updateSliderVelocity(0);
1460 if(currentModeEnabled)
1462 currentTimer.stop();
1464 updateSliderCurrent(0);
1466 if(torqueModeEnabled)
1470 updateSliderTorque(0);
1475void JointItem::onModeChanged(
int index)
1478 velocityTimer.stop();
1480 currentTimer.stop();
1483 int mode = ui->comboMode->currentData(Qt::UserRole).toInt();
1488void JointItem::onInteractionChanged(
int index)
1503void JointItem::onSliderVelocityPressed()
1505 sliderVelocityPressed =
true;
1508void JointItem::onSliderVelocityReleased()
1510 lastVelocity = (double)ui->sliderVelocityVelocity->value() / ui->sliderVelocityVelocity->getSliderStep();
1511 sliderVelocityPressed =
false;
1514void JointItem::onSliderMixedVelocityPressed()
1516 sliderMixedVelocityPressed =
true;
1519void JointItem::onSliderMixedVelocityReleased()
1521 lastVelocity = ui->sliderMixedVelocity->value();
1523 if (ui->sliderMixedVelocity->getIsDouble())
1525 double val = ui->sliderMixedVelocity->value();
1533 sliderMixedVelocityPressed =
false;
1537void JointItem::onVelocityTimer()
1539 if(velocityModeEnabled)
1545void JointItem::onPwmTimer()
1553void JointItem::onCurrentTimer()
1555 if(currentModeEnabled)
1561void JointItem::onTorqueTimer()
1563 if(torqueModeEnabled)
1569void JointItem::onSliderTrajectoryPositionPressed()
1571 sliderTrajectoryPositionPressed =
true;
1574void JointItem::onSliderTrajectoryPositionReleased()
1576 if (ui->sliderTrajectoryPosition->getIsDouble())
1578 double val = ui->sliderTrajectoryPosition->value();
1580 updateTrajectoryPositionTarget(val / ui->sliderTrajectoryPosition->getSliderStep());
1584 double val = ui->sliderTrajectoryPosition->value();
1586 updateTrajectoryPositionTarget(val);
1588 sliderTrajectoryPositionPressed =
false;
1592void JointItem::onSliderMixedPositionPressed()
1594 sliderMixedPositionPressed =
true;
1597void JointItem::onSliderMixedPositionReleased()
1599 if (ui->sliderMixedPosition->getIsDouble())
1601 double val = ui->sliderMixedPosition->value();
1603 updateMixedPositionTarget(val / ui->sliderMixedPosition->getSliderStep());
1607 double val = ui->sliderMixedPosition->value();
1609 updateMixedPositionTarget(val);
1612 sliderMixedPositionPressed =
false;
1616void JointItem::onSliderDirectPositionPressed()
1618 sliderDirectPositionPressed =
true;
1621void JointItem::onSliderDirectPositionReleased()
1623 double ref_direct_position = (double)ui->sliderDirectPosition->value() / ui->sliderDirectPosition->getSliderStep();
1625 sliderDirectPositionPressed =
false;
1629void JointItem::onSliderTrajectoryVelocityPressed()
1631 sliderTrajectoryVelocityPressed =
true;
1634void JointItem::onSliderTrajectoryVelocityReleased()
1636 ref_trajectory_velocity = (double)ui->sliderTrajectoryVelocity->value() / ui->sliderTrajectoryVelocity->getSliderStep();
1638 sliderTrajectoryVelocityPressed =
false;
1641void JointItem::onSliderPWMPressed()
1643 sliderPWMPressed =
true;
1646void JointItem::onSliderPWMReleased()
1648 lastPwm = (double)ui->sliderPWMOutput->value() / ui->sliderPWMOutput->getSliderStep();
1649 sliderPWMPressed =
false;
1652void JointItem::onSliderCurrentPressed()
1654 sliderCurrentPressed =
true;
1657void JointItem::onSliderCurrentReleased()
1659 lastCurrent = (double)ui->sliderCurrentOutput->value() / ui->sliderCurrentOutput->getSliderStep();
1660 sliderCurrentPressed =
false;
1663void JointItem::onSliderTorquePressed()
1665 sliderTorquePressed =
true;
1668void JointItem::onSliderTorqueReleased()
1670 lastTorque = (double)ui->sliderTorqueTorque->value() / ui->sliderTorqueTorque->getSliderStep();
1671 sliderTorquePressed =
false;
1678 double pos = (double)ui->sliderTrajectoryPosition->value() / ui->sliderTrajectoryPosition->getSliderStep();
1679 if (fabs(pos) < 1e-6) {
1688 double vel = (double)ui->sliderTrajectoryVelocity->value() / ui->sliderTrajectoryVelocity->getSliderStep();
1689 if (fabs(vel) < 1e-6) {
1698 int index = ui->stackedWidget->currentIndex();
1699 if (index == POSITION) {
1701 ui->editPositionJointPos->setStyleSheet(
"background-color: rgb(255, 38, 41); color: rgb(35, 38, 41);");
1703 ui->editPositionJointPos->setStyleSheet(
"background-color: rgb(255, 255, 255); color: rgb(35, 38, 41);");
1705 }
else if (index == POSITION_DIR) {
1707 ui->editPositionDirJointPos->setStyleSheet(
"background-color: rgb(255, 38, 41); color: rgb(35, 38, 41);");
1709 ui->editPositionDirJointPos->setStyleSheet(
"background-color: rgb(255, 255, 255); color: rgb(35, 38, 41);");
1711 }
else if (index == MIXED) {
1713 ui->editMixedJointPos->setStyleSheet(
"background-color: rgb(255, 38, 41); color: rgb(35, 38, 41);");
1715 ui->editMixedJointPos->setStyleSheet(
"background-color: rgb(255, 255, 255); color: rgb(35, 38, 41);");
1722 if(sliderTrajectoryPositionPressed ||
1723 sliderMixedPositionPressed ||
1724 sliderDirectPositionPressed)
1738void JointItem::updateSliderVelocity(
double val)
1740 if (sliderVelocityPressed)
1744 ui->sliderVelocityVelocity->setValue(val);
1747void JointItem::updateSliderPWM(
double val)
1749 if (sliderPWMPressed) {
1752 ui->sliderPWMOutput->setValue(val);
1755void JointItem::updateSliderCurrent(
double val)
1757 if (sliderCurrentPressed) {
1760 ui->sliderCurrentOutput->setValue(val);
1765 ui->labelFaultCodeEntry->setText(QString::fromStdString(std::to_string(i)));
1766 ui->labelFaultMessageEntry->setText(QString::fromStdString(message));
1769void JointItem::updateSliderTorque(
double val)
1771 if(sliderTorquePressed){
1774 ui->sliderTorqueTorque->setValue(val);
1777void JointItem::updateSliderTrajectoryVelocity(
double val)
1779 if (sliderTrajectoryVelocityPressed){
1782 ui->sliderTrajectoryVelocity->setValue(val);
1787 if(sliderPWMPressed){
1790 if(ui->stackedWidget->currentIndex() == PWM){
1791 updateSliderPWM(pwmValue);
1793 sVal = QString(
"%L1").arg(pwmValue, 0,
'f', 3);
1794 ui->editPWMDuty->setText(sVal);
1800 if (sliderCurrentPressed){
1803 if (ui->stackedWidget->currentIndex() == CURRENT){
1804 updateSliderCurrent(currentValue);
1806 sVal = QString(
"%L1").arg(currentValue, 0,
'f', 3);
1807 ui->editCurrentCurrent->setText(sVal);
1814 if (ui->sliderTrajectoryPosition->getIsDouble())
1817 sVal = QString(
"%L1").arg(pos, 0,
'f', 3);
1821 double pos = floor(val * 10) / 10;
1822 sVal = QString(
"%1").arg(pos);
1825 if(ui->stackedWidget->currentIndex() == IDLE){
1826 ui->editIdleJointPos->setText(sVal);
1829 if (ui->stackedWidget->currentIndex() == HW_FAULT) {
1830 ui->editFaultJointPos->setText(sVal);
1833 if(ui->stackedWidget->currentIndex() == POSITION){
1834 ui->editPositionJointPos->setText(sVal);
1835 updateSliderPosition(ui->sliderTrajectoryPosition, val);
1838 if(ui->stackedWidget->currentIndex() == POSITION_DIR){
1839 ui->editPositionDirJointPos->setText(sVal);
1840 updateSliderPosition(ui->sliderDirectPosition, val);
1843 if(ui->stackedWidget->currentIndex() == MIXED){
1844 ui->editMixedJointPos->setText(sVal);
1845 updateSliderPosition(ui->sliderMixedPosition, val);
1848 if(ui->stackedWidget->currentIndex() == VELOCITY){
1849 ui->editVelocityJointPos->setText(sVal);
1852 if(ui->stackedWidget->currentIndex() == TORQUE){
1853 ui->editTorqueJointPos->setText(sVal);
1855 if(ui->stackedWidget->currentIndex() == PWM){
1856 ui->editPWMJointPos->setText(sVal);
1858 if (ui->stackedWidget->currentIndex() == CURRENT){
1859 ui->editCurrentJointPos->setText(sVal);
1866 if(ui->stackedWidget->currentIndex() == TORQUE){
1867 updateSliderTorque(val);
1874 if (ui->stackedWidget->currentIndex() == VELOCITY){
1875 updateSliderVelocity(val);
1882 if (ui->stackedWidget->currentIndex() == POSITION){
1883 updateSliderTrajectoryVelocity(val);
1884 ref_trajectory_velocity = val;
1888 ui->groupBox_12->setStyleSheet(
"background-color:orange; color: rgb(35, 38, 41);");
1889 ui->groupBox_12->setTitle(
"Velocity is ZERO!");
1893 ui->groupBox_12->setStyleSheet(
"background-color:transparent; color: rgb(35, 38, 41);");
1894 ui->groupBox_12->setTitle(
"Velocity");
1901 if (ui->stackedWidget->currentIndex() == POSITION){
1902 updateTrajectoryPositionTarget(val);
1908 QString sVal = QString(
"%L1").arg(val,0,
'f',3);
1910 if(ui->stackedWidget->currentIndex() == IDLE){
1911 ui->editIdleTorque->setText(sVal);
1914 if(ui->stackedWidget->currentIndex() == POSITION){
1915 ui->editPositionTorque->setText(sVal);
1918 if(ui->stackedWidget->currentIndex() == POSITION_DIR){
1919 ui->editPositionDirTorque->setText(sVal);
1922 if(ui->stackedWidget->currentIndex() == MIXED){
1923 ui->editMixedTorque->setText(sVal);
1926 if(ui->stackedWidget->currentIndex() == VELOCITY){
1927 ui->editVelocityTorque->setText(sVal);
1929 if(ui->stackedWidget->currentIndex() == TORQUE){
1930 ui->editTorqueTorque->setText(sVal);
1932 if(ui->stackedWidget->currentIndex() == PWM){
1933 ui->editPWMTorque->setText(sVal);
1935 if (ui->stackedWidget->currentIndex() == CURRENT){
1936 ui->editCurrentTorque->setText(sVal);
1942 if (!joint_motorPositionVisible){
1947 QString sVal = QString(
"%1").arg(mot, 0,
'f', 1);
1949 if (ui->stackedWidget->currentIndex() == HW_FAULT) {
1950 ui->editFaultMotorPos->setText(sVal);
1953 if (ui->stackedWidget->currentIndex() == IDLE){
1954 ui->editIdleMotorPos->setText(sVal);
1957 if (ui->stackedWidget->currentIndex() == POSITION){
1958 ui->editPositionMotorPos->setText(sVal);
1961 if (ui->stackedWidget->currentIndex() == POSITION_DIR) {
1962 ui->editPositionDirMotorPos->setText(sVal);
1965 if (ui->stackedWidget->currentIndex() == MIXED) {
1966 ui->editMixedMotorPos->setText(sVal);
1969 if (ui->stackedWidget->currentIndex() == VELOCITY) {
1970 ui->editVelocityMotorPos->setText(sVal);
1973 if (ui->stackedWidget->currentIndex() == TORQUE) {
1974 ui->editTorqueMotorPos->setText(sVal);
1977 if (ui->stackedWidget->currentIndex() == PWM) {
1978 ui->editPWMMotorPos->setText(sVal);
1981 if (ui->stackedWidget->currentIndex() == CURRENT) {
1982 ui->editCurrentMotorPos->setText(sVal);
1988 if (!joint_dutyVisible) {
1993 QString sVal = QString(
"%1").arg(mot, 0,
'f', 1);
2015 if (ui->stackedWidget->currentIndex() == TORQUE) {
2016 ui->editTorqueDuty->setText(sVal);
2019 if (ui->stackedWidget->currentIndex() == PWM) {
2020 ui->editPWMDuty->setText(sVal);
2023 if (ui->stackedWidget->currentIndex() == CURRENT) {
2024 ui->editCurrentDuty->setText(sVal);
2030 if (!joint_speedVisible){
2035 double speed = meas;
2036 QString sVal = QString(
"%1").arg(speed,0,
'f',1);
2038 if(ui->stackedWidget->currentIndex() == IDLE){
2039 ui->editIdleSpeed->setText(sVal);
2042 if(ui->stackedWidget->currentIndex() == POSITION){
2043 ui->editPositionSpeed->setText(sVal);
2046 if(ui->stackedWidget->currentIndex() == POSITION_DIR){
2047 ui->editPositionDirSpeed->setText(sVal);
2050 if(ui->stackedWidget->currentIndex() == MIXED){
2051 ui->editMixedSpeed->setText(sVal);
2054 if(ui->stackedWidget->currentIndex() == VELOCITY){
2055 if(!sliderVelocityPressed){
2056 ui->editVelocitySpeed->setText(sVal);
2060 if(ui->stackedWidget->currentIndex() == TORQUE){
2061 ui->editTorqueSpeed->setText(sVal);
2064 if(ui->stackedWidget->currentIndex() == PWM){
2065 ui->editPWMSpeed->setText(sVal);
2067 if (ui->stackedWidget->currentIndex() == CURRENT){
2068 ui->editCurrentSpeed->setText(sVal);
2075 if (!joint_currentVisible) {
2080 double current = meas;
2081 QString sVal = QString(
"%1").arg(current, 0,
'f', 3);
2083 if (ui->stackedWidget->currentIndex() == IDLE) {
2084 ui->editIdleCurrent->setText(sVal);
2087 if (ui->stackedWidget->currentIndex() == POSITION) {
2088 ui->editPositionCurrent->setText(sVal);
2091 if (ui->stackedWidget->currentIndex() == POSITION_DIR) {
2092 ui->editPositionDirCurrent->setText(sVal);
2095 if (ui->stackedWidget->currentIndex() == MIXED) {
2096 ui->editMixedCurrent->setText(sVal);
2099 if (ui->stackedWidget->currentIndex() == VELOCITY) {
2100 ui->editVelocityCurrent->setText(sVal);
2102 if (ui->stackedWidget->currentIndex() == TORQUE) {
2103 ui->editTorqueCurrent->setText(sVal);
2105 if (ui->stackedWidget->currentIndex() == PWM) {
2106 ui->editPWMCurrent->setText(sVal);
2108 if (ui->stackedWidget->currentIndex() == CURRENT) {
2109 ui->editCurrentCurrent->setText(sVal);
2117void JointItem::setJointInternalInteraction(
int interaction)
2119 disconnect(ui->comboInteraction,
SIGNAL(currentIndexChanged(
int)),
this,SLOT(onInteractionChanged(
int)));
2120 ui->comboInteraction->setCurrentIndex(interaction);
2121 connect(ui->comboInteraction,
SIGNAL(currentIndexChanged(
int)),
this,SLOT(onInteractionChanged(
int)));
2124void JointItem::setJointInternalState(
int mode)
2126 disconnect(ui->comboMode,
SIGNAL(currentIndexChanged(
int)),
this,SLOT(onModeChanged(
int)));
2127 ui->comboMode->setCurrentIndex(mode);
2128 connect(ui->comboMode,
SIGNAL(currentIndexChanged(
int)),
this,SLOT(onModeChanged(
int)));
2130 ui->stackedWidget->setCurrentIndex(mode);
2131 if(ui->stackedWidget->widget(mode)){
2132 QVariant variant = ui->comboMode->itemData(mode,Qt::BackgroundRole);
2134 switch(internalState)
2140 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - HARDWARE FAULT").arg(jointIndex).arg(jointName));
2141 ui->stackedWidget->setEnabled(
false);
2143 ui->buttonHome->setEnabled(
false);
2144 ui->buttonCalib->setEnabled(
false);
2145 ui->buttonRun->setEnabled(
false);
2146 ui->comboMode->setEnabled(
false);
2147 ui->comboInteraction->setEnabled(
false);
2148 ui->buttonIdle->setEnabled(
true);
2149 ui->buttonPid->setEnabled(
true);
2162 c = variant.value<QColor>();
2163 if(ui->groupBox->title() != QString(
"JOINT %1 (%2)").arg(jointIndex).arg(jointName))
2165 ui->groupBox->setTitle(QString(
"JOINT %1 (%2)").arg(jointIndex).arg(jointName));
2167 ui->stackedWidget->setEnabled(
true);
2168 ui->buttonsContainer->setEnabled(
true);
2173 setStyleSheet(QString(
"font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2179 if(internalInteraction == interaction){
2183 internalInteraction = interaction;
2185 switch (internalInteraction) {
2187 setJointInternalInteraction(
STIFF);
2200 if(internalState == newState){
2204 internalState = newState;
2206 switch (internalState) {
2208 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - UNKNOWN").arg(jointIndex).arg(jointName));
2209 ui->stackedWidget->setEnabled(
false);
2210 ui->buttonsContainer->setEnabled(
false);
2212 int index = ui->stackedWidget->currentIndex();
2213 if(ui->stackedWidget->widget(index)){
2215 setStyleSheet(QString(
"font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2220 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - CONFIGURED").arg(jointIndex).arg(jointName));
2221 ui->stackedWidget->setEnabled(
true);
2222 ui->buttonsContainer->setEnabled(
true);
2224 int index = ui->stackedWidget->currentIndex();
2225 if(ui->stackedWidget->widget(index)){
2227 setStyleSheet(QString(
"font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2233 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - NOT CONFIGURED").arg(jointIndex).arg(jointName));
2234 ui->stackedWidget->setEnabled(
false);
2239 ui->buttonsContainer->setEnabled(
true);
2240 ui->buttonIdle->setEnabled(
false);
2241 ui->buttonPid->setEnabled(
true);
2242 ui->buttonHome->setEnabled(
false);
2243 ui->buttonCalib->setEnabled(
true);
2244 ui->buttonRun->setEnabled(
false);
2245 ui->comboMode->setEnabled(
false);
2246 ui->comboInteraction->setEnabled(
false);
2251 ui->buttonsContainer->setEnabled(
false);
2254 int index = ui->stackedWidget->currentIndex();
2255 if(ui->stackedWidget->widget(index)){
2257 setStyleSheet(QString(
"font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2263 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - CALIBRATING DONE").arg(jointIndex).arg(jointName));
2264 ui->stackedWidget->setEnabled(
true);
2265 ui->buttonsContainer->setEnabled(
true);
2267 int index = ui->stackedWidget->currentIndex();
2268 if(ui->stackedWidget->widget(index)){
2270 setStyleSheet(QString(
"font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2275 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - CALIBRATING").arg(jointIndex).arg(jointName));
2276 ui->stackedWidget->setEnabled(
false);
2277 ui->buttonsContainer->setEnabled(
false);
2279 int index = ui->stackedWidget->currentIndex();
2280 if(ui->stackedWidget->widget(index)){
2282 setStyleSheet(QString(
"font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2287 setJointInternalState(HW_FAULT);
2291 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - DISCONNECTED").arg(jointIndex).arg(jointName));
2292 ui->stackedWidget->setEnabled(
false);
2293 ui->buttonsContainer->setEnabled(
false);
2295 int index = ui->stackedWidget->currentIndex();
2296 if(ui->stackedWidget->widget(index)){
2298 setStyleSheet(QString(
"font: 8pt; background-color: rgb(%1,%2,%3); color: rgb(35, 38, 41);").arg(c.red()).arg(c.green()).arg(c.blue()));
2303 setJointInternalState(IDLE);
2307 setJointInternalState(POSITION);
2311 setJointInternalState(POSITION_DIR);
2315 setJointInternalState(MIXED);
2319 setJointInternalState(VELOCITY);
2323 setJointInternalState(TORQUE);
2327 setJointInternalState(PWM);
2331 setJointInternalState(CURRENT);
2340void JointItem::enableAll()
2342 ui->stackedWidget->setEnabled(
true);
2343 ui->buttonsContainer->setEnabled(
true);
2344 ui->buttonIdle->setEnabled(
true);
2345 ui->buttonPid->setEnabled(
true);
2346 ui->buttonHome->setEnabled(
true);
2348 ui->buttonCalib->setEnabled(
true);
2350 ui->buttonRun->setEnabled(
true);
2351 ui->comboMode->setEnabled(
true);
2352 ui->comboInteraction->setEnabled(
true);
2358 ui->sliderPWMOutput->setRange(min,max);
2372 ui->sliderCurrentOutput->setRange(min, max);
2392 min_velocity = -100;
2407 max_trajectory_velocity = 100;
2410 max_trajectory_velocity = max;
2431void JointItem::onCalibClicked()
2433 if (this->internalState ==
Velocity)
2435 velocityTimer.stop();
2437 else if(this->internalState ==
Pwm)
2441 else if(this->internalState ==
Current)
2443 currentTimer.stop();
2445 else if(this->internalState ==
Torque)
2452void JointItem::onHomeClicked()
2457void JointItem::onIdleClicked()
2462void JointItem::onRunClicked()
2467void JointItem::onPidClicked()
2474 ui->sliderMixedPosition->setEnabled(
false);
2475 ui->sliderMixedVelocity->setEnabled(
false);
2476 ui->sliderPWMOutput->setEnabled(
false);
2477 ui->sliderCurrentOutput->setEnabled(
false);
2478 ui->sliderDirectPosition->setEnabled(
false);
2479 ui->sliderTrajectoryPosition->setEnabled(
false);
2480 ui->sliderTrajectoryVelocity->setEnabled(
false);
2481 ui->sliderTorqueTorque->setEnabled(
false);
2487 ui->sliderMixedPosition->setEnabled(
true);
2488 ui->sliderMixedVelocity->setEnabled(
true);
2489 ui->sliderPWMOutput->setEnabled(
true);
2490 ui->sliderCurrentOutput->setEnabled(
true);
2491 ui->sliderDirectPosition->setEnabled(
true);
2492 ui->sliderTrajectoryPosition->setEnabled(
true);
2493 ui->sliderTrajectoryVelocity->setEnabled(
true);
2494 ui->sliderTorqueTorque->setEnabled(
true);
2500 if (event->type() == QEvent::Wheel) {
2504 return QObject::eventFilter(obj, event);
int SIGNAL(int pid, int signum)
void setMotorPosition(double meas)
void viewPositionTargetValue(bool)
void setVelocityRange(double min, double max)
void setDutyVisible(bool)
void enableTrajectoryVelocitySliderDoubleAuto()
void updateJointFault(int i, std::string message)
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 setRefTrajectoryPosition(double ref)
void sliderVelocityCommand(double val, int jointIndex)
void enablePositionSliderDoubleValue(double value)
void sliderCurrentCommand(double val, int jointIndex)
void enableCurrentSliderDoubleValue(double value)
void viewPositionTargetBox(bool)
void setJointState(JointState)
void enableControlPWM(bool control)
void disablePositionSliderDouble()
void disableCurrentSliderDouble()
void enableTorqueSliderDoubleValue(double value)
void homeClicked(JointItem *joint)
void setPosition(double val)
void sliderPWMCommand(double val, int jointIndex)
void setRefVelocitySpeed(double ref)
static QString GetModeString(JointState mode)
void sliderTrajectoryPositionCommand(double val, int jointIndex)
void setCurrentRange(double min, double max)
void setJointName(QString name)
void pidClicked(JointItem *joint)
void setPWMRange(double min, double max)
void updateMotionDone(bool done)
void setRefCurrent(double ref)
double getTrajectoryVelocityValue()
void setTrajectoryVelocityRange(double max)
void setSpeed(double val)
void enableCurrentSliderDoubleAuto()
bool eventFilter(QObject *obj, QEvent *event) override
void sliderMixedPositionCommand(double val, int jointIndex)
void sliderDirectPositionCommand(double val, int jointIndex)
void disableTrajectoryVelocitySliderDouble()
void setJointInteraction(JointInteraction interaction)
void calibClicked(JointItem *joint)
void runClicked(JointItem *joint)
void setMotorPositionVisible(bool)
void enableControlVelocity(bool control)
void setDutyCycles(double duty)
double getTrajectoryPositionValue()
void setCurrent(double meas)
void setRefTrajectorySpeed(double ref)
void disableVelocitySliderDouble()
void sliderTrajectoryVelocityCommand(double val, int jointIndex)
void setRefPWM(double ref)
void sliderTorqueCommand(double val, int jointIndex)
void enableControlCurrent(bool control)
void enableTrajectoryVelocitySliderDoubleValue(double value)
void setEnabledOptions(bool debug_param_enabled, bool speedview_param_enabled, bool enable_calib_all)
void changeMode(int mode, JointItem *joint)
void enableTorqueSliderDoubleAuto()
void setSpeedVisible(bool)
JointItem(int index, QWidget *parent=0)
void setNumberOfPositionSliderDecimals(size_t num)
void enableVelocitySliderDoubleValue(double value)
void enablePositionSliderDoubleAuto()
void disableTorqueSliderDouble()
void enableControlTorque(bool control)
void setTorque(double meas)
void sliderMixedVelocityCommand(double val, int jointIndex)
void idleClicked(JointItem *joint)
void setTorqueRange(double max)
void setRefTorque(double ref)
void changeInteraction(int interaction, JointItem *joint)
void setValue(double val)
bool eventFilter(QObject *obj, QEvent *event) override
bool speedview_param_enabled
@ VOCAB_JOINTTYPE_REVOLUTE
@ VOCAB_JOINTTYPE_PRISMATIC
const QColor disconnectColor
const QColor hwFaultColor
const QColor positionColor
const QColor positionDirectColor
const QColor velocityColor
const QColor calibratingColor
const QColor currentColor