3 #include <VirtualRobot/RobotNodeSet.h>
11 while ((item = layout->takeAt(0)))
16 delete item->layout();
20 delete item->widget();
57 connect(
ui.pushButtonNullspaceUpdateJoints,
58 &QPushButton::clicked,
60 &T::on_pushButtonNullspaceUpdateJoints_clicked);
61 connect(
ui.pushButtonNullspaceSend,
62 &QPushButton::clicked,
64 &T::on_pushButtonNullspaceSend_clicked);
65 connect(
ui.pushButtonSettingsSend,
66 &QPushButton::clicked,
68 &T::on_pushButtonSettingsSend_clicked);
73 const QString& prefix)
77 settings->beginGroup(prefix);
88 const QString& prefix)
92 settings->beginGroup(
"layer");
101 NJointTaskSpaceImpedanceControlConfigPtr
107 NJointTaskSpaceImpedanceControlConfigPtr cfg =
new NJointTaskSpaceImpedanceControlConfig;
108 cfg->nodeSetName = _rns->getName();
110 cfg->desiredPosition = targPos;
111 cfg->desiredOrientation = targOri;
119 cfg->desiredJointPositions = joint;
123 cfg->torqueLimit =
ui.doubleSpinBoxTorqueLim->value();
127 NJointTaskSpaceImpedanceControlRuntimeConfig
132 NJointTaskSpaceImpedanceControlRuntimeConfig cfg;
140 cfg.desiredJointPositions = joint;
144 cfg.torqueLimit =
ui.doubleSpinBoxTorqueLim->value();
148 std::tuple<Eigen::VectorXf, Eigen::VectorXf, Eigen::VectorXf>
166 _controller->setNullspaceConfig(joint, knull, dnull);
193 const NJointTaskSpaceImpedanceControlInterfacePrx& prx)
203 auto lay =
ui.gridLayoutNullspace;
205 lay->addWidget(
new QLabel{
"Joint"}, 0, 0);
206 lay->addWidget(
new QLabel{
"Target"}, 0, 1);
207 lay->addWidget(
new QLabel{
"Knull"}, 0, 2);
208 lay->addWidget(
new QLabel{
"Dnull"}, 0, 3);
219 for (
const auto& rn : _rns->getAllRobotNodes())
222 const auto&& n = rn->getName();
223 lay->addWidget(
new QLabel{QString::fromStdString(n)}, i, 0);
225 auto b =
new QDoubleSpinBox;
227 lay->addWidget(b, i, 1);
228 const auto lo = rn->getJointLimitLow();
229 const auto hi = rn->getJointLimitHigh();
232 b->setValue((
lo +
hi) / 2);
235 auto b =
new QDoubleSpinBox;
237 lay->addWidget(b, i, 2);
243 auto b =
new QDoubleSpinBox;
245 lay->addWidget(b, i, 3);