9 while ((item = layout->takeAt(0)))
14 delete item->layout();
18 delete item->widget();
55 connect(
ui.pushButtonNullspaceUpdateJoints,
56 &QPushButton::clicked,
58 &T::on_pushButtonNullspaceUpdateJoints_clicked);
59 connect(
ui.pushButtonNullspaceSend,
60 &QPushButton::clicked,
62 &T::on_pushButtonNullspaceSend_clicked);
63 connect(
ui.pushButtonSettingsSend,
64 &QPushButton::clicked,
66 &T::on_pushButtonSettingsSend_clicked);
71 const QString& prefix)
75 settings->beginGroup(prefix);
86 const QString& prefix)
90 settings->beginGroup(
"layer");
99 NJointTaskSpaceImpedanceControlConfigPtr
105 NJointTaskSpaceImpedanceControlConfigPtr cfg =
new NJointTaskSpaceImpedanceControlConfig;
106 cfg->nodeSetName = _rns->getName();
108 cfg->desiredPosition = targPos;
109 cfg->desiredOrientation = targOri;
117 cfg->desiredJointPositions = joint;
121 cfg->torqueLimit =
ui.doubleSpinBoxTorqueLim->value();
124 NJointTaskSpaceImpedanceControlRuntimeConfig
129 NJointTaskSpaceImpedanceControlRuntimeConfig cfg;
137 cfg.desiredJointPositions = joint;
141 cfg.torqueLimit =
ui.doubleSpinBoxTorqueLim->value();
144 std::tuple<Eigen::VectorXf, Eigen::VectorXf, Eigen::VectorXf>
163 _controller->setNullspaceConfig(joint, knull, dnull);
190 const NJointTaskSpaceImpedanceControlInterfacePrx& prx)
199 auto lay =
ui.gridLayoutNullspace;
201 lay->addWidget(
new QLabel{
"Joint"}, 0, 0);
202 lay->addWidget(
new QLabel{
"Target"}, 0, 1);
203 lay->addWidget(
new QLabel{
"Knull"}, 0, 2);
204 lay->addWidget(
new QLabel{
"Dnull"}, 0, 3);
215 for (
const auto& rn : _rns->getAllRobotNodes())
218 const auto&& n = rn->getName();
219 lay->addWidget(
new QLabel{QString::fromStdString(n)}, i, 0);
221 auto b =
new QDoubleSpinBox;
223 lay->addWidget(b, i, 1);
224 const auto lo = rn->getJointLimitLow();
225 const auto hi = rn->getJointLimitHigh();
228 b->setValue((
lo +
hi) / 2);
231 auto b =
new QDoubleSpinBox;
233 lay->addWidget(b, i, 2);
239 auto b =
new QDoubleSpinBox;
241 lay->addWidget(b, i, 3);