76 updateInfoTimer->start(50);
79 setLeftHandJointAngleUpdateTask->start();
82 leftHandName = leftHandUnitProxy->getHandName();
84 if (leftHandName ==
"Hand L" || leftHandName ==
"TCP L")
86 leftHandConversionFactor *=
M_PI / 2;
88 else if (leftHandName !=
"Hand_L_EEF")
90 ARMARX_WARNING <<
"Left hand with name \"" << leftHandName <<
"\" is not supported.";
94 SingleTypeVariantListPtr::dynamicCast(leftHandUnitProxy->getShapeNames());
95 QStringList leftHandList;
96 int leftHandPreshapeCount = leftHandPreshapeStrings->getSize();
98 for (
int i = 0; i < leftHandPreshapeCount; ++i)
100 std::string shape = ((leftHandPreshapeStrings->getVariant(i))->
get<std::string>());
102 leftHandList << QString::fromStdString(shape);
105 ui->comboLeftHandPreshapes->clear();
106 ui->comboLeftHandPreshapes->addItems(leftHandList);
108 setRightHandJointAngleUpdateTask->start();
111 rightHandName = rightHandUnitProxy->getHandName();
113 if (rightHandName ==
"Hand R" || rightHandName ==
"TCP R")
115 rightHandConversionFactor *=
M_PI / 2;
117 else if (rightHandName !=
"Hand_R_EEF")
119 ARMARX_WARNING <<
"Right hand with name \"" << rightHandName <<
"\" is not supported.";
123 SingleTypeVariantListPtr::dynamicCast(rightHandUnitProxy->getShapeNames());
124 QStringList rightHandList;
125 int rightHandPreshapeCount = rightHandPreshapeStrings->getSize();
127 for (
int i = 0; i < rightHandPreshapeCount; ++i)
129 std::string shape = ((rightHandPreshapeStrings->getVariant(i))->
get<std::string>());
131 rightHandList << QString::fromStdString(shape);
134 ui->comboRightHandPreshapes->clear();
135 ui->comboRightHandPreshapes->addItems(rightHandList);
139 displayJointAngleUpdateTask =
141 displayJointAngleUpdateTask->start();
221 if (!leftHandUnitProxy)
227 if (!setLeftHandJointAnglesFlag)
232 setLeftHandJointAnglesFlag =
false;
234 NameValueMap leftHandJa;
235 NameValueMap currentLeftHandJointValues = leftHandUnitProxy->getCurrentJointValues();
237 if (leftHandName ==
"Hand L" || leftHandName ==
"TCP L")
239 leftHandConversionFactor *=
M_PI / 2;
241 else if (leftHandName !=
"Hand_L_EEF")
243 ARMARX_WARNING <<
"Left hand with name \"" << leftHandName <<
"\" is not supported.";
247 for (
const auto& pair : currentLeftHandJointValues)
249 if (pair.first == currentLeftHandJoint)
251 value =
static_cast<float>(
ui->horizontalSliderLeftHandJointPos->value() *
252 leftHandConversionFactor);
254 leftHandJa[pair.first] = value;
260 ui->lcdNumberLeftHandJointValue->display(value / leftHandConversionFactor);
261 leftHandUnitProxy->setJointAngles(leftHandJa);
268 if (!rightHandUnitProxy)
274 if (!setRightHandJointAnglesFlag)
279 setRightHandJointAnglesFlag =
false;
281 NameValueMap rightHandJa;
282 NameValueMap currentRightHandJointValues = rightHandUnitProxy->getCurrentJointValues();
284 if (rightHandName ==
"Hand R" || rightHandName ==
"TCP R")
286 rightHandConversionFactor *=
M_PI / 2;
288 else if (rightHandName !=
"Hand_R_EEF")
290 ARMARX_WARNING <<
"Right hand with name \"" << rightHandName <<
"\" is not supported.";
294 for (
const auto& pair : currentRightHandJointValues)
296 if (pair.first == currentRightHandJoint)
298 value =
static_cast<float>(
ui->horizontalSliderRightHandJointPos->value() *
299 rightHandConversionFactor);
301 rightHandJa[pair.first] = value;
307 ui->lcdNumberRightHandJointValue->display(value / rightHandConversionFactor);
308 rightHandUnitProxy->setJointAngles(rightHandJa);
373 NameValueMap currentLeftHandJointValues = leftHandUnitProxy->getCurrentJointValues();
375 int frameLeftHandRowIdx = 0;
377 for (
const auto& pair : currentLeftHandJointValues)
380 QString name(pair.first.c_str());
381 QTableWidgetItem* newItem =
new QTableWidgetItem(QString::number(pair.second));
382 ui->tableWidgetLeftHand->setItem(frameLeftHandRowIdx, 1, newItem);
383 frameLeftHandRowIdx++;
387 NameValueMap currentRightHandJointValues = rightHandUnitProxy->getCurrentJointValues();
389 int frameRightHandRowIdx = 0;
391 for (
const auto& pair : currentRightHandJointValues)
394 QString name(pair.first.c_str());
395 QTableWidgetItem* newItem =
new QTableWidgetItem(QString::number(pair.second));
396 ui->tableWidgetRightHand->setItem(frameRightHandRowIdx, 1, newItem);
397 frameRightHandRowIdx++;
541 leftHandUnitProxyName =
542 settings->value(
"leftHandUnitProxyName", QString::fromStdString(leftHandUnitProxyName))
545 leftHandName = settings->value(
"leftHandName", QString::fromStdString(leftHandName))
548 rightHandUnitProxyName =
550 ->value(
"rightHandUnitProxyName", QString::fromStdString(rightHandUnitProxyName))
553 rightHandName = settings->value(
"rightHandName", QString::fromStdString(rightHandName))
573 NameValueMap currentLeftHandJointValues = leftHandUnitProxy->getCurrentJointValues();
575 int frameLeftHandRowIdx = 0;
577 connect(
ui->buttonPreshapeLeftHand,
581 Qt::UniqueConnection);
582 connect(
ui->buttonOpenLeftHand,
586 Qt::UniqueConnection);
587 connect(
ui->buttonCloseLeftHand,
591 Qt::UniqueConnection);
592 connect(
ui->buttonRelaxLeftHand,
596 Qt::UniqueConnection);
597 ui->horizontalSliderLeftHandJointPos->setMaximum(100);
598 ui->horizontalSliderLeftHandJointPos->setMinimum(0);
599 connect(
ui->horizontalSliderLeftHandJointPos,
600 SIGNAL(sliderMoved(
int)),
603 Qt::UniqueConnection);
604 connect(
ui->comboLeftHandJoints,
605 SIGNAL(currentIndexChanged(
int)),
608 Qt::UniqueConnection);
609 connect(
ui->leftExpertMode,
610 &QCheckBox::stateChanged,
611 [&](
int state) { setExpertMode(side::left, state); });
612 connect(
ui->leftTare,
613 &QPushButton::toggled,
614 [&](
bool checked) { tareHand(checked, side::left); });
615 connect(
ui->leftReboot, &QPushButton::clicked, [&] { rebootHand(side::left); });
617 ui->tableWidgetLeftHand->setRowCount(currentLeftHandJointValues.size());
618 ui->tableWidgetLeftHand->setColumnCount(2);
620 ui->comboLeftHandJoints->clear();
622 qRegisterMetaType<QVector<int>>(
"QVector<int>");
623 for (
const auto& pair : currentLeftHandJointValues)
626 QString name(pair.first.c_str());
627 QTableWidgetItem* newItem =
new QTableWidgetItem(name);
628 ui->tableWidgetLeftHand->setItem(frameLeftHandRowIdx, 0, newItem);
629 ui->comboLeftHandJoints->addItem(name);
630 frameLeftHandRowIdx++;
633 ui->comboLeftHandJoints->setCurrentIndex(-1);
636 NameValueMap currentRightHandJointValues = rightHandUnitProxy->getCurrentJointValues();
638 int frameRightHandRowIdx = 0;
640 connect(
ui->buttonPreshapeRightHand,
644 Qt::UniqueConnection);
645 connect(
ui->buttonOpenRightHand,
649 Qt::UniqueConnection);
650 connect(
ui->buttonCloseRightHand,
654 Qt::UniqueConnection);
655 connect(
ui->buttonRelaxRightHand,
659 Qt::UniqueConnection);
660 ui->horizontalSliderRightHandJointPos->setMaximum(100);
661 ui->horizontalSliderRightHandJointPos->setMinimum(0);
662 connect(
ui->horizontalSliderRightHandJointPos,
663 SIGNAL(sliderMoved(
int)),
666 Qt::UniqueConnection);
667 connect(
ui->comboRightHandJoints,
668 SIGNAL(currentIndexChanged(
int)),
671 Qt::UniqueConnection);
672 connect(
ui->rightExpertMode,
673 &QCheckBox::stateChanged,
674 [&](
int state) { setExpertMode(side::right, state); });
675 connect(
ui->rightTare,
676 &QPushButton::clicked,
677 [&](
bool checked) { tareHand(checked, side::right); });
678 connect(
ui->rightReboot, &QPushButton::clicked, [&] { rebootHand(side::right); });
680 ui->tableWidgetRightHand->setRowCount(currentRightHandJointValues.size());
681 ui->tableWidgetRightHand->setColumnCount(2);
683 ui->comboRightHandJoints->clear();
685 qRegisterMetaType<QVector<int>>(
"QVector<int>");
686 for (
const auto& pair : currentRightHandJointValues)
689 QString name(pair.first.c_str());
690 QTableWidgetItem* newItem =
new QTableWidgetItem(name);
691 ui->tableWidgetRightHand->setItem(frameRightHandRowIdx, 0, newItem);
692 ui->comboRightHandJoints->addItem(name);
693 frameRightHandRowIdx++;
696 ui->comboRightHandJoints->setCurrentIndex(-1);
700 connect(
ui->reloadPreshapesButton,
704 Qt::UniqueConnection);