8#include "ui_jointitem.h"
23 ui->sliderPosTrajectory_Position->resetTarget();
24 ui->sliderMixedPosition->resetTarget();
35 velocityDirectTimer.stop();
37 else if(this->internalState ==
Pwm)
41 else if(this->internalState ==
Current)
45 else if(this->internalState ==
Torque)
60 velocityDirectTimer.stop();
62 else if(this->internalState ==
Pwm)
66 else if(this->internalState ==
Current)
70 else if(this->internalState ==
Torque)
85 velocityDirectTimer.stop();
87 else if(this->internalState ==
Pwm)
91 else if(this->internalState ==
Current)
95 else if(this->internalState ==
Torque)
191 output =
"Position Direct";
203 output =
"Velocity Direct";
220 output =
"Disconnected";
224 output =
"Hardware Fault";
228 output =
"Calibrating";
232 output =
"Not Configured";
236 output =
"Configured";
249void JointItem::updateTrajectoryPositionTarget(
double val)
251 ui->sliderPosTrajectory_Position->updateSliderTarget(val);
254void JointItem::updateMixedPositionTarget(
double val)
256 ui->sliderMixedPosition->updateSliderTarget(val);
268 connect(ui->comboMode,
SIGNAL(currentIndexChanged(
int)),
this,SLOT(onModeChanged(
int)));
269 connect(ui->comboInteraction,
SIGNAL(currentIndexChanged(
int)),
this,SLOT(onInteractionChanged(
int)));
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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()));
354 ui->groupBox->setTitle(QString(
"JOINT %1 (%2)").arg(index).arg(jointName));
360 comboStyle1 =
"QComboBox {"
361 "border: 1px solid gray;"
362 "border-radius: 3px;"
363 "padding: 1px 18px 1px 3px;"
365 "QComboBox:editable {"
367 "foreground: rgb(35, 38, 41);}"
368 "QComboBox::down-arrow {"
369 "image: url(:/images/downArrow.png);}";
372 comboStyle2 =
"QComboBox:on { "
374 "padding-left: 4px;}"
375 "QComboBox::drop-down {"
376 "subcontrol-origin: padding;"
377 "subcontrol-position: top right;"
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;}";
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);
394 ui->comboMode->setItemData( IDLE,
idleColor, Qt::BackgroundRole );
395 ui->comboMode->setItemData( POSITION,
positionColor, Qt::BackgroundRole );
397 ui->comboMode->setItemData( MIXED,
mixedColor, Qt::BackgroundRole );
398 ui->comboMode->setItemData( VELOCITY,
velocityColor, 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);
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 );
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);
424 setJointInternalState(IDLE);
426 ui->stackedWidget->widget(VELOCITY)->setEnabled(
false);
427 velocityTimer.setInterval(50);
428 velocityTimer.setSingleShot(
false);
429 connect(&velocityTimer,
SIGNAL(timeout()),
this,SLOT(onVelocityTimer()));
431 ui->stackedWidget->widget(VELOCITY_DIR)->setEnabled(
false);
432 velocityDirectTimer.setInterval(50);
433 velocityDirectTimer.setSingleShot(
false);
434 connect(&velocityDirectTimer,
SIGNAL(timeout()),
this,SLOT(onVelocityDirectTimer()));
436 ui->stackedWidget->widget(PWM)->setEnabled(
false);
437 pwmTimer.setInterval(50);
438 pwmTimer.setSingleShot(
false);
439 connect(&pwmTimer,
SIGNAL(timeout()),
this,SLOT(onPwmTimer()));
441 ui->stackedWidget->widget(CURRENT)->setEnabled(
false);
442 currentTimer.setInterval(50);
443 currentTimer.setSingleShot(
false);
444 connect(¤tTimer,
SIGNAL(timeout()),
this,SLOT(onCurrentTimer()));
446 ui->stackedWidget->widget(TORQUE)->setEnabled(
false);
447 torqueTimer.setInterval(50);
448 torqueTimer.setSingleShot(
false);
449 connect(&torqueTimer,
SIGNAL(timeout()),
this,SLOT(onTorqueTimer()));
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){
461 QSlider* slider =
nullptr;
463 if(obj == ui->sliderPosTrajectory_Position){
464 slider = ui->sliderPosTrajectory_Position;
465 if(keyEvent->type() == QEvent::KeyPress){
466 onSliderPosTrajectory_PositionPressed();
468 if(keyEvent->type() == QEvent::KeyRelease){
469 onSliderPosTrajectory_PositionReleased();
472 if(obj == ui->sliderPosTrajectory_Velocity){
473 slider = ui->sliderPosTrajectory_Velocity;
474 if (keyEvent->type() == QEvent::KeyPress){
475 onSliderPosTrajectory_VelocityPressed();
477 if (keyEvent->type() == QEvent::KeyRelease){
478 onSliderPosTrajectory_VelocityReleased();
481 if(obj == ui->sliderDirectPosition){
482 slider = ui->sliderDirectPosition;
483 if(keyEvent->type() == QEvent::KeyPress){
484 onSliderDirectPositionPressed();
486 if(keyEvent->type() == QEvent::KeyRelease){
487 onSliderDirectPositionReleased();
490 if(obj == ui->sliderMixedPosition){
491 slider = ui->sliderMixedPosition;
492 if(keyEvent->type() == QEvent::KeyPress){
493 onSliderMixedPositionPressed();
495 if(keyEvent->type() == QEvent::KeyRelease){
496 onSliderMixedPositionReleased();
499 if(obj == ui->sliderMixedVelocity){
500 slider = ui->sliderMixedVelocity;
502 if(obj == ui->sliderTorqueTorque){
503 slider = ui->sliderTorqueTorque;
504 if(keyEvent->type() == QEvent::KeyPress){
505 onSliderTorquePressed();
507 if(keyEvent->type() == QEvent::KeyRelease){
508 onSliderTorqueReleased();
511 if (obj == ui->sliderPWMOutput){
512 slider = ui->sliderPWMOutput;
513 if(keyEvent->type() == QEvent::KeyPress){
514 onSliderPWMPressed();
516 if(keyEvent->type() == QEvent::KeyRelease){
517 onSliderPWMReleased();
520 if (obj == ui->sliderCurrentOutput){
521 slider = ui->sliderCurrentOutput;
522 if (keyEvent->type() == QEvent::KeyPress){
523 onSliderCurrentPressed();
525 if (keyEvent->type() == QEvent::KeyRelease){
526 onSliderCurrentReleased();
529 if(obj == ui->sliderVelTrajectory_Velocity){
530 slider = ui->sliderVelTrajectory_Velocity;
531 if(keyEvent->type() == QEvent::KeyPress){
532 onSliderVelTrajectory_VelocityPressed();
534 if(keyEvent->type() == QEvent::KeyRelease){
535 onSliderVelTrajectory_VelocityReleased();
538 if(obj == ui->sliderVelTrajectory_Acceleration){
539 slider = ui->sliderVelTrajectory_Acceleration;
540 if(keyEvent->type() == QEvent::KeyPress){
541 onSliderVelTrajectory_AccelerationPressed();
543 if(keyEvent->type() == QEvent::KeyRelease){
544 onSliderVelTrajectory_AccelerationPressed();
548 if (slider ==
nullptr) {
553 if(keyEvent->type() == QEvent::KeyPress){
554 if(key == Qt::Key_Left || key == Qt::Key_Down){
555 slider->setValue(slider->value() - 1);
557 if(key == Qt::Key_Right || key == Qt::Key_Up){
558 slider->setValue(slider->value() + 1);
560 if(key == Qt::Key_PageUp){
561 slider->setValue(slider->value() + 10);
563 if(key == Qt::Key_PageDown){
564 slider->setValue(slider->value() - 10);
571 return QObject::eventFilter(obj, event);
575 return QObject::eventFilter(obj, event);
581 velocityModeEnabled = control;
582 ui->stackedWidget->widget(VELOCITY)->setEnabled(velocityModeEnabled);
583 if(ui->stackedWidget->currentIndex() == VELOCITY && velocityModeEnabled){
584 velocityTimer.start();
590 velocityDirectModeEnabled = control;
591 ui->stackedWidget->widget(VELOCITY_DIR)->setEnabled(velocityDirectModeEnabled);
592 if(ui->stackedWidget->currentIndex() == VELOCITY_DIR && velocityDirectModeEnabled){
593 velocityDirectTimer.start();
599 ui->stackedWidget->widget(MIXED)->setEnabled(control);
604 ui->stackedWidget->widget(POSITION_DIR)->setEnabled(control);
609 pwmModeEnabled = control;
610 ui->stackedWidget->widget(PWM)->setEnabled(pwmModeEnabled);
611 if(ui->stackedWidget->currentIndex() == PWM && pwmModeEnabled)
619 currentModeEnabled = control;
620 ui->stackedWidget->widget(CURRENT)->setEnabled(currentModeEnabled);
621 if(ui->stackedWidget->currentIndex() == CURRENT && currentModeEnabled)
623 currentTimer.start();
629 torqueModeEnabled = control;
630 ui->stackedWidget->widget(TORQUE)->setEnabled(torqueModeEnabled);
631 if(ui->stackedWidget->currentIndex() == TORQUE && torqueModeEnabled)
639 ui->sliderPosTrajectory_Position->enableViewTargetBox = visible;
640 ui->sliderMixedPosition->enableViewTargetBox = visible;
645 ui->sliderPosTrajectory_Position->enableViewTargetValue = visible;
646 ui->sliderMixedPosition->enableViewTargetValue = visible;
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");
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);
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);
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);
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);
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);
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);
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);
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);
754 yFatal(
"Unspecified joint type");
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);
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);
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);
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);
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);
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);
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);
864 joint_dutyVisible = visible;
869 ui->editTorqueDuty->setVisible(visible);
870 ui->editCurrentDuty->setVisible(visible);
883 ui->labelTorqueDuty->setVisible(visible);
884 ui->labelTorqueDutyUnits->setVisible(visible);
886 ui->labelCurrentDuty->setVisible(visible);
888 ui->labelCurrentDutyUnits->setVisible(visible);
909 ui->labelTorqueDuty->setMinimumHeight(0);
910 ui->labelTorqueDutyUnits->setMinimumHeight(0);
913 ui->labelCurrentDuty->setMinimumHeight(0);
914 ui->labelCurrentDutyUnits->setMinimumHeight(0);
925 ui->editTorqueDuty->setMinimumHeight(20);
927 ui->editCurrentDuty->setMinimumHeight(20);
936 ui->labelTorqueDuty->setMinimumHeight(20);
937 ui->labelTorqueDutyUnits->setMinimumHeight(20);
940 ui->labelCurrentDuty->setMinimumHeight(20);
941 ui->labelCurrentDutyUnits->setMinimumHeight(20);
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);
959 ui->editVelocityCurrent->setVisible(visible);
960 ui->editVelocityDirCurrent->setVisible(visible);
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);
974 ui->labelPWMCurrentUnits->setVisible(visible);
976 ui->labelVelocityCurrent->setVisible(visible);
977 ui->labelVelocityCurrentUnits->setVisible(visible);
978 ui->labelVelocityDirCurrent->setVisible(visible);
979 ui->labelVelocityDirCurrentUnits->setVisible(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);
989 ui->editVelocityCurrent->setMinimumHeight(0);
990 ui->editVelocityDirCurrent->setMinimumHeight(0);
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);
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);
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);
1019 ui->editVelocityCurrent->setMinimumHeight(20);
1020 ui->editVelocityDirCurrent->setMinimumHeight(20);
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);
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);
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);
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);
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);
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);
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);
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);
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();
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();
1174 if (fabs(m_max_position - m_min_position) < 1.0)
1176 yError(
"Unable to set integer position slider");
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();
1198 double velocitySliderStep = 1 / (fabs(-m_max_velocity - m_max_velocity) / 100.0);
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) {}
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) {}
1232 if (fabs(m_max_velocity) < 1.0)
1234 yError(
"Unable to set integer velocity slider");
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) {}
1254 double accelerationSliderStep = 1 / (fabs(-m_max_acceleration - m_max_acceleration) / 100.0);
1255 ui->sliderVelTrajectory_Acceleration->setSliderStep(accelerationSliderStep);
1256 ui->sliderVelTrajectory_Acceleration->setIsDouble(
true);
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) {}
1268 double accelerationSliderStep = 1 / value;
1269 ui->sliderVelTrajectory_Acceleration->setSliderStep(accelerationSliderStep);
1270 ui->sliderVelTrajectory_Acceleration->setIsDouble(
true);
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) {}
1282 if (fabs(m_max_acceleration) < 1.0)
1284 yError(
"Unable to set integer acceleration slider");
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) {}
1301 double torqueSliderStep = 1 / (fabs(-m_max_torque - m_max_torque) / 100.0);
1302 ui->sliderTorqueTorque->setSliderStep(torqueSliderStep);
1303 ui->sliderTorqueTorque->setIsDouble(
true);
1304 int sliderMin = -m_max_torque*torqueSliderStep;
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) {}
1315 double torqueSliderStep = 1 / value;
1316 ui->sliderTorqueTorque->setSliderStep(torqueSliderStep);
1317 ui->sliderTorqueTorque->setIsDouble(
true);
1318 int sliderMin = -m_max_torque*torqueSliderStep;
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) {}
1329 if (fabs(m_max_torque) < 1.0)
1331 yError(
"Unable to set integer torque slider");
1334 double torqueSliderStep = 1;
1335 ui->sliderTorqueTorque->setSliderStep(torqueSliderStep);
1336 ui->sliderTorqueTorque->setIsDouble(
false);
1337 int sliderMin = -m_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) {}
1348 double currentSliderStep = 1 / (fabs(-m_max_current - m_max_current) / 100.0);
1349 ui->sliderCurrentOutput->setSliderStep(currentSliderStep);
1350 ui->sliderCurrentOutput->setIsDouble(
true);
1351 int sliderMin = -m_max_current*currentSliderStep;
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) {}
1362 double currentSliderStep = 1 / value;
1363 ui->sliderCurrentOutput->setSliderStep(currentSliderStep);
1364 ui->sliderCurrentOutput->setIsDouble(
true);
1365 int sliderMin = -m_max_current*currentSliderStep;
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) {}
1376 if (fabs(m_max_velocity) < 1.0)
1378 yError(
"Unable to set integer velocity slider");
1381 double currentSliderStep = 1;
1382 ui->sliderCurrentOutput->setSliderStep(currentSliderStep);
1383 ui->sliderCurrentOutput->setIsDouble(
false);
1384 int sliderMin = -m_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) {}
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;
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;
1455 ui->sliderVelTrajectory_Acceleration->number_of_decimals = num;
1459 ui->sliderTorqueTorque->number_of_decimals = num;
1463 ui->sliderCurrentOutput->number_of_decimals = num;
1475 ui->buttonCalib->setEnabled(
false);
1478 connect(ui->stackedWidget,
SIGNAL(currentChanged(
int)),
this, SLOT(onStackedWidgetChanged(
int)));
1483 disconnect(ui->comboMode,
SIGNAL(currentIndexChanged(
int)),
this,SLOT(onModeChanged(
int)));
1484 disconnect(ui->comboInteraction,
SIGNAL(currentIndexChanged(
int)),
this,SLOT(onInteractionChanged(
int)));
1486 disconnect(ui->sliderPosTrajectory_Position,
SIGNAL(sliderPressed()),
this,SLOT(onSliderPosTrajectory_PositionPressed()));
1487 disconnect(ui->sliderPosTrajectory_Position,
SIGNAL(sliderReleased()),
this,SLOT(onSliderPosTrajectory_PositionReleased()));
1489 disconnect(ui->sliderPosTrajectory_Velocity,
SIGNAL(sliderPressed()),
this, SLOT(onSliderPosTrajectory_VelocityPressed()));
1490 disconnect(ui->sliderPosTrajectory_Velocity,
SIGNAL(sliderReleased()),
this, SLOT(onSliderPosTrajectory_VelocityReleased()));
1492 disconnect(ui->sliderVelTrajectory_Velocity,
SIGNAL(sliderPressed()),
this,SLOT(onSliderVelTrajectory_VelocityPressed()));
1493 disconnect(ui->sliderVelTrajectory_Velocity,
SIGNAL(sliderReleased()),
this,SLOT(onSliderVelTrajectory_VelocityReleased()));
1495 disconnect(ui->sliderVelTrajectory_Acceleration,
SIGNAL(sliderPressed()),
this, SLOT(onSliderVelTrajectory_AccelerationPressed()));
1496 disconnect(ui->sliderVelTrajectory_Acceleration,
SIGNAL(sliderReleased()),
this, SLOT(onSliderVelTrajectory_AccelerationReleased()));
1498 disconnect(ui->sliderTorqueTorque,
SIGNAL(sliderPressed()),
this,SLOT(onSliderTorquePressed()));
1499 disconnect(ui->sliderTorqueTorque,
SIGNAL(sliderReleased()),
this,SLOT(onSliderTorqueReleased()));
1501 disconnect(ui->sliderPWMOutput,
SIGNAL(sliderPressed()),
this, SLOT(onSliderPWMPressed()));
1502 disconnect(ui->sliderPWMOutput,
SIGNAL(sliderReleased()),
this, SLOT(onSliderPWMReleased()));
1504 disconnect(ui->sliderCurrentOutput,
SIGNAL(sliderPressed()),
this, SLOT(onSliderCurrentPressed()));
1505 disconnect(ui->sliderCurrentOutput,
SIGNAL(sliderReleased()),
this, SLOT(onSliderCurrentPressed()));
1507 disconnect(ui->sliderDirectPosition,
SIGNAL(sliderPressed()),
this, SLOT(onSliderDirectPositionPressed()));
1508 disconnect(ui->sliderDirectPosition,
SIGNAL(sliderReleased()),
this, SLOT(onSliderDirectPositionReleased()));
1510 disconnect(ui->sliderMixedPosition,
SIGNAL(sliderPressed()),
this,SLOT(onSliderMixedPositionPressed()));
1511 disconnect(ui->sliderMixedPosition,
SIGNAL(sliderReleased()),
this,SLOT(onSliderMixedPositionReleased()));
1513 disconnect(ui->sliderMixedVelocity,
SIGNAL(sliderPressed()),
this, SLOT(onSliderMixedVelocityPressed()));
1514 disconnect(ui->sliderMixedVelocity,
SIGNAL(sliderReleased()),
this, SLOT(onSliderMixedVelocityReleased()));
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()));
1529void JointItem::installFilter()
1532 filter->setParent(
this);
1533 ui->comboMode->installEventFilter(filter);
1534 ui->comboInteraction->installEventFilter(filter);
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);
1545void JointItem::onStackedWidgetChanged(
int index)
1547 if(index == VELOCITY)
1549 if(velocityModeEnabled)
1551 velocityTimer.start();
1554 else if(index == VELOCITY_DIR)
1556 if(velocityDirectModeEnabled)
1558 velocityDirectTimer.start();
1561 else if(index == PWM)
1568 else if(index == CURRENT)
1570 if(currentModeEnabled)
1572 currentTimer.start();
1575 else if(index == TORQUE)
1577 if(torqueModeEnabled)
1579 torqueTimer.start();
1584 if(velocityModeEnabled)
1586 velocityTimer.stop();
1588 updateSliderVelTrajectoryVelocity(0);
1590 if(velocityDirectModeEnabled)
1592 velocityDirectTimer.stop();
1593 lastVelocityDirect = 0;
1594 updateSliderVelocityDirect(0);
1602 if(currentModeEnabled)
1604 currentTimer.stop();
1606 updateSliderCurrent(0);
1608 if(torqueModeEnabled)
1612 updateSliderTorque(0);
1617void JointItem::onModeChanged(
int index)
1620 velocityTimer.stop();
1621 velocityDirectTimer.stop();
1623 currentTimer.stop();
1626 int mode = ui->comboMode->currentData(Qt::UserRole).toInt();
1631void JointItem::onInteractionChanged(
int index)
1646void JointItem::onSliderVelTrajectory_VelocityPressed()
1648 sliderVelTrajectory_VelocityPressed =
true;
1651void JointItem::onSliderVelTrajectory_VelocityReleased()
1653 lastVelocity = (double)ui->sliderVelTrajectory_Velocity->value() / ui->sliderVelTrajectory_Velocity->getSliderStep();
1654 sliderVelTrajectory_VelocityPressed =
false;
1657void JointItem::onSliderVelocityDirectPressed()
1659 sliderVelocityDirectPressed =
true;
1662void JointItem::onSliderVelocityDirectReleased()
1664 lastVelocityDirect = (double)ui->sliderVelocityDirectVelocityDirect->value() / ui->sliderVelocityDirectVelocityDirect->getSliderStep();
1665 sliderVelocityDirectPressed =
false;
1669void JointItem::onSliderMixedVelocityPressed()
1671 sliderMixedVelocityPressed =
true;
1674void JointItem::onSliderMixedVelocityReleased()
1676 lastVelocity = ui->sliderMixedVelocity->value();
1678 if (ui->sliderMixedVelocity->getIsDouble())
1680 double val = ui->sliderMixedVelocity->value();
1688 sliderMixedVelocityPressed =
false;
1692void JointItem::onVelocityTimer()
1694 if(velocityModeEnabled)
1700void JointItem::onVelocityDirectTimer()
1702 if(velocityDirectModeEnabled)
1708void JointItem::onPwmTimer()
1716void JointItem::onCurrentTimer()
1718 if(currentModeEnabled)
1724void JointItem::onTorqueTimer()
1726 if(torqueModeEnabled)
1732void JointItem::onSliderPosTrajectory_PositionPressed()
1734 sliderPosTrajectory_PositionPressed =
true;
1737void JointItem::onSliderPosTrajectory_PositionReleased()
1739 if (ui->sliderPosTrajectory_Position->getIsDouble())
1741 double val = ui->sliderPosTrajectory_Position->value();
1743 updateTrajectoryPositionTarget(val / ui->sliderPosTrajectory_Position->getSliderStep());
1747 double val = ui->sliderPosTrajectory_Position->value();
1749 updateTrajectoryPositionTarget(val);
1751 sliderPosTrajectory_PositionPressed =
false;
1755void JointItem::onSliderMixedPositionPressed()
1757 sliderMixedPositionPressed =
true;
1760void JointItem::onSliderMixedPositionReleased()
1762 if (ui->sliderMixedPosition->getIsDouble())
1764 double val = ui->sliderMixedPosition->value();
1766 updateMixedPositionTarget(val / ui->sliderMixedPosition->getSliderStep());
1770 double val = ui->sliderMixedPosition->value();
1772 updateMixedPositionTarget(val);
1775 sliderMixedPositionPressed =
false;
1779void JointItem::onSliderDirectPositionPressed()
1781 sliderDirectPositionPressed =
true;
1784void JointItem::onSliderDirectPositionReleased()
1786 double ref_direct_position = (double)ui->sliderDirectPosition->value() / ui->sliderDirectPosition->getSliderStep();
1788 sliderDirectPositionPressed =
false;
1792void JointItem::onSliderPosTrajectory_VelocityPressed()
1794 sliderPosTrajectory_VelocityPressed =
true;
1797void JointItem::onSliderPosTrajectory_VelocityReleased()
1799 m_ref_PosTrajectory_velocity = (double)ui->sliderPosTrajectory_Velocity->value() / ui->sliderPosTrajectory_Velocity->getSliderStep();
1801 sliderPosTrajectory_VelocityPressed =
false;
1804void JointItem::onSliderVelTrajectory_AccelerationPressed()
1806 sliderVelTrajectory_AccelerationPressed =
true;
1809void JointItem::onSliderVelTrajectory_AccelerationReleased()
1811 m_ref_VelTrajectory_acceleration = (double)ui->sliderVelTrajectory_Acceleration->value() / ui->sliderVelTrajectory_Acceleration->getSliderStep();
1813 sliderVelTrajectory_AccelerationPressed =
false;
1816void JointItem::onSliderPWMPressed()
1818 sliderPWMPressed =
true;
1821void JointItem::onSliderPWMReleased()
1823 lastPwm = (double)ui->sliderPWMOutput->value() / ui->sliderPWMOutput->getSliderStep();
1824 sliderPWMPressed =
false;
1827void JointItem::onSliderCurrentPressed()
1829 sliderCurrentPressed =
true;
1832void JointItem::onSliderCurrentReleased()
1834 lastCurrent = (double)ui->sliderCurrentOutput->value() / ui->sliderCurrentOutput->getSliderStep();
1835 sliderCurrentPressed =
false;
1838void JointItem::onSliderTorquePressed()
1840 sliderTorquePressed =
true;
1843void JointItem::onSliderTorqueReleased()
1845 lastTorque = (double)ui->sliderTorqueTorque->value() / ui->sliderTorqueTorque->getSliderStep();
1846 sliderTorquePressed =
false;
1853 double pos = (double)ui->sliderPosTrajectory_Position->value() / ui->sliderPosTrajectory_Position->getSliderStep();
1854 if (fabs(pos) < 1e-6) {
1863 double vel = (double)ui->sliderPosTrajectory_Velocity->value() / ui->sliderPosTrajectory_Velocity->getSliderStep();
1864 if (fabs(vel) < 1e-6) {
1872 ui->BrakeLabel->setText(brk ?
"Braked" :
"");
1874 ui->BrakeLabel->setStyleSheet(
"background-color: black; color: rgb(255, 38, 41); font-weight: bold;");
1875 ui->BrakeLabel->setAlignment(Qt::AlignCenter);
1877 ui->BrakeLabel->setStyleSheet(
"background-color: transparent; color: rgb(35, 38, 41); font-weight: normal;");
1878 ui->BrakeLabel->setAlignment(Qt::AlignCenter);
1885 int index = ui->stackedWidget->currentIndex();
1886 if (index == POSITION) {
1888 ui->editPositionJointPos->setStyleSheet(
"background-color: rgb(255, 38, 41); color: rgb(35, 38, 41);");
1890 ui->editPositionJointPos->setStyleSheet(
"background-color: rgb(255, 255, 255); color: rgb(35, 38, 41);");
1892 }
else if (index == POSITION_DIR) {
1894 ui->editPositionDirJointPos->setStyleSheet(
"background-color: rgb(255, 38, 41); color: rgb(35, 38, 41);");
1896 ui->editPositionDirJointPos->setStyleSheet(
"background-color: rgb(255, 255, 255); color: rgb(35, 38, 41);");
1898 }
else if (index == MIXED) {
1900 ui->editMixedJointPos->setStyleSheet(
"background-color: rgb(255, 38, 41); color: rgb(35, 38, 41);");
1902 ui->editMixedJointPos->setStyleSheet(
"background-color: rgb(255, 255, 255); color: rgb(35, 38, 41);");
1907void JointItem::updateSliderPosTrajectoryPosition(
double val)
1909 if(sliderPosTrajectory_PositionPressed)
1913 ui->sliderPosTrajectory_Position->setValue(val);
1916void JointItem::updateSliderPositionDirect(
double val)
1918 if(sliderDirectPositionPressed)
1922 ui->sliderDirectPosition->setValue(val);
1925void JointItem::updateSliderMixedPosition(
double val)
1927 if(sliderMixedPositionPressed)
1931 ui->sliderMixedPosition->setValue(val);
1934void JointItem::updateSliderPosTrajectoryVelocity(
double val)
1936 if (sliderPosTrajectory_VelocityPressed)
1940 ui->sliderPosTrajectory_Velocity->setValue(val);
1943void JointItem::updateSliderVelocityDirect(
double val)
1945 if (sliderVelocityDirectPressed)
1949 ui->sliderVelocityDirectVelocityDirect->setValue(val);
1952void JointItem::updateSliderPWM(
double val)
1954 if (sliderPWMPressed) {
1957 ui->sliderPWMOutput->setValue(val);
1960void JointItem::updateSliderCurrent(
double val)
1962 if (sliderCurrentPressed) {
1965 ui->sliderCurrentOutput->setValue(val);
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);
1977void JointItem::updateSliderTorque(
double val)
1979 if(sliderTorquePressed){
1982 ui->sliderTorqueTorque->setValue(val);
1985void JointItem::updateSliderVelTrajectoryVelocity(
double val)
1987 if (sliderVelTrajectory_VelocityPressed){
1990 ui->sliderVelTrajectory_Velocity->setValue(val);
1993void JointItem::updateSliderVelTrajectoryAcceleration(
double val)
1995 if (sliderVelTrajectory_AccelerationPressed){
1998 ui->sliderVelTrajectory_Acceleration->setValue(val);
2003 if(sliderPWMPressed){
2006 if(ui->stackedWidget->currentIndex() == PWM){
2007 updateSliderPWM(pwmValue);
2009 sVal = QString(
"%L1").arg(pwmValue, 0,
'f', 3);
2010 ui->editPWMDuty->setText(sVal);
2016 if (sliderCurrentPressed){
2019 if (ui->stackedWidget->currentIndex() == CURRENT){
2020 updateSliderCurrent(currentValue);
2022 sVal = QString(
"%L1").arg(currentValue, 0,
'f', 3);
2023 ui->editCurrentCurrent->setText(sVal);
2030 if (ui->sliderPosTrajectory_Position->getIsDouble())
2033 sVal = QString(
"%L1").arg(pos, 0,
'f', 3);
2037 double pos = floor(val * 10) / 10;
2038 sVal = QString(
"%1").arg(pos);
2041 if(ui->stackedWidget->currentIndex() == IDLE){
2042 ui->editIdleJointPos->setText(sVal);
2045 if (ui->stackedWidget->currentIndex() == HW_FAULT) {
2046 ui->editFaultJointPos->setText(sVal);
2049 if(ui->stackedWidget->currentIndex() == POSITION){
2050 ui->editPositionJointPos->setText(sVal);
2051 updateSliderPosTrajectoryPosition(val);
2054 if(ui->stackedWidget->currentIndex() == POSITION_DIR){
2055 ui->editPositionDirJointPos->setText(sVal);
2056 updateSliderPositionDirect(val);
2059 if(ui->stackedWidget->currentIndex() == MIXED){
2060 ui->editMixedJointPos->setText(sVal);
2061 updateSliderMixedPosition(val);
2064 if(ui->stackedWidget->currentIndex() == VELOCITY){
2065 ui->editVelocityJointPos->setText(sVal);
2067 if(ui->stackedWidget->currentIndex() == VELOCITY_DIR){
2068 ui->editVelocityDirJointPos->setText(sVal);
2070 if(ui->stackedWidget->currentIndex() == TORQUE){
2071 ui->editTorqueJointPos->setText(sVal);
2073 if(ui->stackedWidget->currentIndex() == PWM){
2074 ui->editPWMJointPos->setText(sVal);
2076 if (ui->stackedWidget->currentIndex() == CURRENT){
2077 ui->editCurrentJointPos->setText(sVal);
2084 if(ui->stackedWidget->currentIndex() == TORQUE){
2085 updateSliderTorque(val);
2092 if (ui->stackedWidget->currentIndex() == VELOCITY){
2093 updateSliderVelTrajectoryVelocity(val);
2100 if (ui->stackedWidget->currentIndex() == VELOCITY){
2101 updateSliderVelTrajectoryAcceleration(val);
2102 m_ref_VelTrajectory_acceleration = val;
2106 ui->groupBox_2->setStyleSheet(
"background-color:orange; color: rgb(35, 38, 41);");
2107 ui->groupBox_2->setTitle(
"Acceleration is ZERO!");
2111 ui->groupBox_2->setStyleSheet(
"background-color:transparent; color: rgb(35, 38, 41);");
2112 ui->groupBox_2->setTitle(
"Acceleration");
2118 if (ui->stackedWidget->currentIndex() == POSITION){
2119 updateSliderPosTrajectoryVelocity(val);
2120 m_ref_PosTrajectory_velocity = val;
2124 ui->groupBox_12->setStyleSheet(
"background-color:orange; color: rgb(35, 38, 41);");
2125 ui->groupBox_12->setTitle(
"Velocity is ZERO!");
2129 ui->groupBox_12->setStyleSheet(
"background-color:transparent; color: rgb(35, 38, 41);");
2130 ui->groupBox_12->setTitle(
"Velocity");
2137 if (ui->stackedWidget->currentIndex() == POSITION){
2138 updateTrajectoryPositionTarget(val);
2144 QString sVal = QString(
"%L1").arg(val,0,
'f',3);
2146 if(ui->stackedWidget->currentIndex() == IDLE){
2147 ui->editIdleTorque->setText(sVal);
2150 if(ui->stackedWidget->currentIndex() == POSITION){
2151 ui->editPositionTorque->setText(sVal);
2154 if(ui->stackedWidget->currentIndex() == POSITION_DIR){
2155 ui->editPositionDirTorque->setText(sVal);
2158 if(ui->stackedWidget->currentIndex() == MIXED){
2159 ui->editMixedTorque->setText(sVal);
2162 if(ui->stackedWidget->currentIndex() == VELOCITY){
2163 ui->editVelocityTorque->setText(sVal);
2165 if(ui->stackedWidget->currentIndex() == VELOCITY_DIR){
2166 ui->editVelocityDirTorque->setText(sVal);
2168 if(ui->stackedWidget->currentIndex() == TORQUE){
2169 ui->editTorqueTorque->setText(sVal);
2171 if(ui->stackedWidget->currentIndex() == PWM){
2172 ui->editPWMTorque->setText(sVal);
2174 if (ui->stackedWidget->currentIndex() == CURRENT){
2175 ui->editCurrentTorque->setText(sVal);
2181 if (!joint_motorPositionVisible){
2186 QString sVal = QString(
"%1").arg(mot, 0,
'f', 1);
2188 if (ui->stackedWidget->currentIndex() == HW_FAULT) {
2189 ui->editFaultMotorPos->setText(sVal);
2192 if (ui->stackedWidget->currentIndex() == IDLE){
2193 ui->editIdleMotorPos->setText(sVal);
2196 if (ui->stackedWidget->currentIndex() == POSITION){
2197 ui->editPositionMotorPos->setText(sVal);
2200 if (ui->stackedWidget->currentIndex() == POSITION_DIR) {
2201 ui->editPositionDirMotorPos->setText(sVal);
2204 if (ui->stackedWidget->currentIndex() == MIXED) {
2205 ui->editMixedMotorPos->setText(sVal);
2208 if (ui->stackedWidget->currentIndex() == VELOCITY) {
2209 ui->editVelocityMotorPos->setText(sVal);
2212 if (ui->stackedWidget->currentIndex() == VELOCITY_DIR) {
2213 ui->editVelocityDirMotorPos->setText(sVal);
2216 if (ui->stackedWidget->currentIndex() == TORQUE) {
2217 ui->editTorqueMotorPos->setText(sVal);
2220 if (ui->stackedWidget->currentIndex() == PWM) {
2221 ui->editPWMMotorPos->setText(sVal);
2224 if (ui->stackedWidget->currentIndex() == CURRENT) {
2225 ui->editCurrentMotorPos->setText(sVal);
2231 if (!joint_dutyVisible) {
2236 QString sVal = QString(
"%1").arg(mot, 0,
'f', 1);
2258 if (ui->stackedWidget->currentIndex() == TORQUE) {
2259 ui->editTorqueDuty->setText(sVal);
2262 if (ui->stackedWidget->currentIndex() == PWM) {
2263 ui->editPWMDuty->setText(sVal);
2266 if (ui->stackedWidget->currentIndex() == CURRENT) {
2267 ui->editCurrentDuty->setText(sVal);
2273 if (!joint_speedVisible){
2278 double speed = meas;
2279 QString sVal = QString(
"%1").arg(speed,0,
'f',1);
2281 if(ui->stackedWidget->currentIndex() == IDLE){
2282 ui->editIdleSpeed->setText(sVal);
2285 if(ui->stackedWidget->currentIndex() == POSITION){
2286 ui->editPositionSpeed->setText(sVal);
2289 if(ui->stackedWidget->currentIndex() == POSITION_DIR){
2290 ui->editPositionDirSpeed->setText(sVal);
2293 if(ui->stackedWidget->currentIndex() == MIXED){
2294 ui->editMixedSpeed->setText(sVal);
2297 if(ui->stackedWidget->currentIndex() == VELOCITY){
2298 if(!sliderVelTrajectory_VelocityPressed){
2299 ui->editVelocitySpeed->setText(sVal);
2304 if(ui->stackedWidget->currentIndex() == VELOCITY_DIR){
2305 if(!sliderVelocityDirectPressed){
2306 ui->editVelocityDirSpeed->setText(sVal);
2310 if(ui->stackedWidget->currentIndex() == TORQUE){
2311 ui->editTorqueSpeed->setText(sVal);
2314 if(ui->stackedWidget->currentIndex() == PWM){
2315 ui->editPWMSpeed->setText(sVal);
2317 if (ui->stackedWidget->currentIndex() == CURRENT){
2318 ui->editCurrentSpeed->setText(sVal);
2325 if (!joint_currentVisible) {
2330 double current = meas;
2331 QString sVal = QString(
"%1").arg(current, 0,
'f', 3);
2333 if (ui->stackedWidget->currentIndex() == IDLE) {
2334 ui->editIdleCurrent->setText(sVal);
2337 if (ui->stackedWidget->currentIndex() == POSITION) {
2338 ui->editPositionCurrent->setText(sVal);
2341 if (ui->stackedWidget->currentIndex() == POSITION_DIR) {
2342 ui->editPositionDirCurrent->setText(sVal);
2345 if (ui->stackedWidget->currentIndex() == MIXED) {
2346 ui->editMixedCurrent->setText(sVal);
2349 if (ui->stackedWidget->currentIndex() == VELOCITY) {
2350 ui->editVelocityCurrent->setText(sVal);
2352 if (ui->stackedWidget->currentIndex() == VELOCITY_DIR) {
2353 ui->editVelocityDirCurrent->setText(sVal);
2355 if (ui->stackedWidget->currentIndex() == TORQUE) {
2356 ui->editTorqueCurrent->setText(sVal);
2358 if (ui->stackedWidget->currentIndex() == PWM) {
2359 ui->editPWMCurrent->setText(sVal);
2361 if (ui->stackedWidget->currentIndex() == CURRENT) {
2362 ui->editCurrentCurrent->setText(sVal);
2370void JointItem::setJointInternalInteraction(
int interaction)
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)));
2377void JointItem::setJointInternalState(
int mode)
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)));
2383 ui->stackedWidget->setCurrentIndex(
mode);
2384 if(ui->stackedWidget->widget(
mode)){
2385 QVariant variant = ui->comboMode->itemData(
mode,Qt::BackgroundRole);
2387 switch(internalState)
2393 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - HARDWARE FAULT").arg(jointIndex).arg(jointName));
2395 ui->stackedWidget->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);
2415 c = variant.value<QColor>();
2416 if(ui->groupBox->title() != QString(
"JOINT %1 (%2)").arg(jointIndex).arg(jointName))
2418 ui->groupBox->setTitle(QString(
"JOINT %1 (%2)").arg(jointIndex).arg(jointName));
2420 ui->stackedWidget->setEnabled(
true);
2421 ui->buttonsContainer->setEnabled(
true);
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()));
2432 if(internalInteraction == interaction){
2436 internalInteraction = interaction;
2438 switch (internalInteraction) {
2440 setJointInternalInteraction(
STIFF);
2453 if(internalState == newState){
2457 internalState = newState;
2459 switch (internalState) {
2461 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - UNKNOWN").arg(jointIndex).arg(jointName));
2462 ui->stackedWidget->setEnabled(
false);
2463 ui->buttonsContainer->setEnabled(
false);
2465 int index = ui->stackedWidget->currentIndex();
2466 if(ui->stackedWidget->widget(index)){
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()));
2473 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - CONFIGURED").arg(jointIndex).arg(jointName));
2474 ui->stackedWidget->setEnabled(
true);
2475 ui->buttonsContainer->setEnabled(
true);
2477 int index = ui->stackedWidget->currentIndex();
2478 if(ui->stackedWidget->widget(index)){
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()));
2486 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - NOT CONFIGURED").arg(jointIndex).arg(jointName));
2487 ui->stackedWidget->setEnabled(
false);
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);
2504 ui->buttonsContainer->setEnabled(
false);
2507 int index = ui->stackedWidget->currentIndex();
2508 if(ui->stackedWidget->widget(index)){
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()));
2516 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - CALIBRATING DONE").arg(jointIndex).arg(jointName));
2517 ui->stackedWidget->setEnabled(
true);
2518 ui->buttonsContainer->setEnabled(
true);
2520 int index = ui->stackedWidget->currentIndex();
2521 if(ui->stackedWidget->widget(index)){
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()));
2528 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - CALIBRATING").arg(jointIndex).arg(jointName));
2529 ui->stackedWidget->setEnabled(
false);
2530 ui->buttonsContainer->setEnabled(
false);
2532 int index = ui->stackedWidget->currentIndex();
2533 if(ui->stackedWidget->widget(index)){
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()));
2540 setJointInternalState(HW_FAULT);
2544 ui->groupBox->setTitle(QString(
"JOINT %1 (%2) - DISCONNECTED").arg(jointIndex).arg(jointName));
2545 ui->stackedWidget->setEnabled(
false);
2546 ui->buttonsContainer->setEnabled(
false);
2548 int index = ui->stackedWidget->currentIndex();
2549 if(ui->stackedWidget->widget(index)){
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()));
2556 setJointInternalState(IDLE);
2560 setJointInternalState(POSITION);
2564 setJointInternalState(POSITION_DIR);
2568 setJointInternalState(MIXED);
2572 setJointInternalState(VELOCITY);
2576 setJointInternalState(VELOCITY_DIR);
2580 setJointInternalState(TORQUE);
2584 setJointInternalState(PWM);
2588 setJointInternalState(CURRENT);
2597void JointItem::enableAll()
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);
2605 ui->buttonCalib->setEnabled(
true);
2607 ui->buttonRun->setEnabled(
true);
2608 ui->comboMode->setEnabled(
true);
2609 ui->comboInteraction->setEnabled(
true);
2615 ui->sliderPWMOutput->setRange(min,max);
2622 m_min_current = min;
2623 m_max_current = max;
2629 ui->sliderCurrentOutput->setRange(min, max);
2638 m_min_position = min;
2639 m_max_position = max;
2649 m_min_velocity = -100;
2650 m_max_velocity = 100;
2653 m_min_velocity = min;
2654 m_max_velocity = max;
2664 m_min_acceleration = -100;
2665 m_max_acceleration = 100;
2668 m_min_acceleration = min;
2669 m_max_acceleration = max;
2690void JointItem::onCalibClicked()
2692 if (this->internalState ==
Velocity)
2694 velocityTimer.stop();
2698 velocityDirectTimer.stop();
2700 else if(this->internalState ==
Pwm)
2704 else if(this->internalState ==
Current)
2706 currentTimer.stop();
2708 else if(this->internalState ==
Torque)
2715void JointItem::onHomeClicked()
2720void JointItem::onIdleClicked()
2725void JointItem::onRunClicked()
2730void JointItem::onPidClicked()
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);
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);
2763 if (event->type() == QEvent::Wheel) {
2767 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 sliderVelocityDirectCommand(double val, int jointIndex)
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 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)
void setPWMRange(double min, double max)
void updateMotionDone(bool done)
void setRefCurrent(double ref)
void setNumberOfCurrentSliderDecimals(size_t num)
double getTrajectoryVelocityValue()
void setVelTrajectory_ReferenceSpeed(double ref)
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 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 disableVelocitySliderDouble()
void setPosTrajectory_ReferenceSpeed(double ref)
void updateBraked(bool brk)
void sliderVelTrajectoryVelocityCommand(double val, int jointIndex)
void setRefPWM(double ref)
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 changeMode(int mode, JointItem *joint)
void enableTorqueSliderDoubleAuto()
void setVelTrajectory_ReferenceAcceleration(double ref)
void setSpeedVisible(bool)
JointItem(int index, QWidget *parent=0)
void setNumberOfPositionSliderDecimals(size_t num)
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
@ VOCAB_JOINTTYPE_REVOLUTE
@ VOCAB_JOINTTYPE_PRISMATIC
const QColor velocityDirectColor
const QColor disconnectColor
const QColor hwFaultColor
const QColor positionColor
const QColor positionDirectColor
const QColor velocityColor
const QColor calibratingColor
const QColor currentColor