CartesianNaturalPositionControllerWidgetController.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * \package RobotAPI::gui-plugins::CartesianNaturalPositionControllerWidgetController
17  * \author armar-user ( armar-user at kit dot edu )
18  * \date 2020
19  * \copyright http://www.gnu.org/licenses/gpl-2.0.txt
20  * GNU General Public License
21  */
22 
24 
25 #include <string>
26 
27 #include <VirtualRobot/math/Helpers.h>
28 
30 
31 namespace armarx
32 {
35  {
36  std::lock_guard g{_allMutex};
37  _ui.setupUi(getWidget());
38 
39  connect(this,
40  SIGNAL(invokeConnectComponentQt()),
41  this,
42  SLOT(onConnectComponentQt()),
43  Qt::QueuedConnection);
44  connect(this,
46  this,
47  SLOT(onDisconnectComponentQt()),
48  Qt::QueuedConnection);
49 
50 
51  //connect(_ui.pushButtonStop, SIGNAL(clicked()), this, SLOT(on_pushButtonStop_clicked()));
52  //connect(_ui.pushButtonExecute, SIGNAL(clicked()), this, SLOT(on_pushButtonExecute_clicked()));
53  //connect(_ui.pushButtonZeroFT, SIGNAL(clicked()), this, SLOT(on_pushButtonZeroFT_clicked()));
54  //connect(_ui.pushButtonSendSettings, SIGNAL(clicked()), this, SLOT(on_pushButtonSendSettings_clicked()));
55  connect(_ui.pushButtonCreateController,
56  SIGNAL(clicked()),
57  this,
59  connect(
60  _ui.sliderKpElbow, SIGNAL(valueChanged(int)), this, SLOT(on_sliders_valueChanged(int)));
61  connect(
62  _ui.sliderKpJla, SIGNAL(valueChanged(int)), this, SLOT(on_sliders_valueChanged(int)));
63  connect(_ui.checkBoxAutoKp,
64  SIGNAL(stateChanged(int)),
65  this,
67  connect(_ui.checkBoxSetOri,
68  SIGNAL(stateChanged(int)),
69  this,
71  connect(_ui.sliderPosVel,
72  SIGNAL(valueChanged(int)),
73  this,
75 
76  auto addBtn =
77  [&](QPushButton* btn, float px, float py, float pz, float rx, float ry, float rz)
78  {
79  _deltaMapPos[btn] = {px, py, pz};
80  _deltaMapOri[btn] = {rx, ry, rz};
81  //ARMARX_IMPORTANT << "connect";
82  //ARMARX_IMPORTANT << btn->text().toStdString();
83  connect(btn, SIGNAL(clicked()), this, SLOT(on_anyDeltaPushButton_clicked()));
84  };
85  addBtn(_ui.pushButtonPxp, +1, 0, 0, 0, 0, 0);
86  addBtn(_ui.pushButtonPxn, -1, 0, 0, 0, 0, 0);
87  addBtn(_ui.pushButtonPyp, 0, +1, 0, 0, 0, 0);
88  addBtn(_ui.pushButtonPyn, 0, -1, 0, 0, 0, 0);
89  addBtn(_ui.pushButtonPzp, 0, 0, +1, 0, 0, 0);
90  addBtn(_ui.pushButtonPzn, 0, 0, -1, 0, 0, 0);
91 
92  addBtn(_ui.pushButtonRxp, 0, 0, 0, +1, 0, 0);
93  addBtn(_ui.pushButtonRxn, 0, 0, 0, -1, 0, 0);
94  addBtn(_ui.pushButtonRyp, 0, 0, 0, 0, +1, 0);
95  addBtn(_ui.pushButtonRyn, 0, 0, 0, 0, -1, 0);
96  addBtn(_ui.pushButtonRzp, 0, 0, 0, 0, 0, +1);
97  addBtn(_ui.pushButtonRzn, 0, 0, 0, 0, 0, -1);
98 
99  //_ui.widgetSpacer->setVisible(false);
100  _timer = startTimer(100);
101  }
102 
103 
106  {
107  killTimer(_timer);
108  }
109 
110 
111  void
113  {
114  std::lock_guard g{_allMutex};
115  _robotStateComponentName =
116  settings->value("rsc", "Armar6StateComponent").toString().toStdString();
117  _robotUnitName = settings->value("ru", "Armar6Unit").toString().toStdString();
118  }
119 
120  void
122  {
123  std::lock_guard g{_allMutex};
124  settings->setValue("rsc", QString::fromStdString(_robotStateComponentName));
125  settings->setValue("ru", QString::fromStdString(_robotUnitName));
126  }
127 
128 
129  void
131  {
132  std::lock_guard g{_allMutex};
133  usingProxy(_robotStateComponentName);
134  usingProxy(_robotUnitName);
135  }
136 
137 
138  void
140  {
141  std::lock_guard g{_allMutex};
142  //proxies
143  {
144  _robotStateComponent =
145  getProxy<RobotStateComponentInterfacePrx>(_robotStateComponentName);
146  _robotUnit = getProxy<RobotUnitInterfacePrx>(_robotUnitName);
147  }
148  //robot
149  {
150  _robot = RemoteRobot::createLocalCloneFromFile(_robotStateComponent,
151  VirtualRobot::RobotIO::eStructure);
152  }
153 
154  _controller.reset();
156  }
157  void
159  {
160  _ui.comboBoxSide->addItem("Right");
161  _ui.comboBoxSide->addItem("Left");
162  _ui.comboBoxSide->setCurrentIndex(0);
163  }
164  void
166  {
167  std::lock_guard g{_allMutex};
168  deleteOldController();
169  _robotStateComponent = nullptr;
170  }
171  void
173  {
174  std::lock_guard g{_allMutex};
175  deleteOldController();
176 
177  std::string side = _ui.comboBoxSide->currentText().toStdString();
178 
179  VirtualRobot::RobotNodeSetPtr rns = _robot->getRobotNodeSet(side + "Arm");
180 
181  _ui.gridLayoutNullspaceTargets->removeWidget(_ui.checkBoxExampleJoint1);
182  _ui.gridLayoutNullspaceTargets->removeWidget(_ui.labelExampleJoint1);
183  _ui.gridLayoutNullspaceTargets->removeWidget(_ui.horizontalSliderExampleJoint1);
184 
185  for (size_t i = 0; i < rns->getSize(); i++)
186  {
187  QCheckBox* checkBox = new QCheckBox(QString::fromStdString(rns->getNode(i)->getName()));
188  QSlider* slider = new QSlider(Qt::Orientation::Horizontal);
189  slider->setMinimum(rns->getNode(i)->getJointLimitLo() / M_PI * 180);
190  slider->setMaximum(rns->getNode(i)->getJointLimitHi() / M_PI * 180);
191  slider->setValue(rns->getNode(i)->getJointValue() / M_PI * 180);
192  QLabel* label = new QLabel(QString::number(slider->value()));
193  _ui.gridLayoutNullspaceTargets->addWidget(checkBox, i, 0);
194  _ui.gridLayoutNullspaceTargets->addWidget(slider, i, 1);
195  _ui.gridLayoutNullspaceTargets->addWidget(label, i, 2);
196  connect(checkBox,
197  SIGNAL(stateChanged(int)),
198  this,
200  connect(slider,
201  SIGNAL(valueChanged(int)),
202  this,
204  NullspaceTarget nt;
205  nt.checkBox = checkBox;
206  nt.slider = slider;
207  nt.label = label;
208  nt.i = i;
209  _nullspaceTargets.emplace_back(nt);
210  }
211 
212 
213  VirtualRobot::RobotNodePtr cla = rns->getNode(0);
214  VirtualRobot::RobotNodePtr sho1 = rns->getNode(1);
215  ARMARX_IMPORTANT << VAROUT(cla->getJointValue());
216  cla->setJointValue(0);
217  Eigen::Vector3f shoulder = sho1->getPositionInRootFrame();
218  VirtualRobot::RobotNodePtr elb = rns->getNode(4);
219  VirtualRobot::RobotNodePtr wri1 = rns->getNode(6);
220  VirtualRobot::RobotNodePtr tcp = rns->getTCP();
222 
223  arm.rns = rns;
224  arm.shoulder = sho1;
225  arm.elbow = elb;
226  arm.tcp = tcp;
227 
228  std::vector<float> jointCosts = std::vector<float>(rns->getSize(), 1);
229  jointCosts.at(0) = 4;
230 
231 
232  armarx::RemoteRobot::synchronizeLocalClone(_robot, _robotStateComponent);
233  _tcpTarget = rns->getTCP()->getPoseInRootFrame();
234 
235  NaturalIK ik(side, shoulder, 1.3f);
236  float upper_arm_length =
237  (sho1->getPositionInRootFrame() - elb->getPositionInRootFrame()).norm();
238  float lower_arm_length =
239  (elb->getPositionInRootFrame() - wri1->getPositionInRootFrame()).norm() +
240  (wri1->getPositionInRootFrame() - tcp->getPositionInRootFrame()).norm();
241  ik.setUpperArmLength(upper_arm_length);
242  ik.setLowerArmLength(lower_arm_length);
243  NJointCartesianNaturalPositionControllerConfigPtr config =
244  CartesianNaturalPositionControllerProxy::MakeConfig(rns->getName(), elb->getName());
245  config->runCfg.jointCosts = jointCosts;
246  CartesianNaturalPositionControllerConfig runCfg = config->runCfg;
247  updateKpSliders(runCfg);
248  //config->runCfg = runCfg;
249  _controller.reset(new CartesianNaturalPositionControllerProxy(
250  ik, arm, _robotUnit, side + "NaturalPosition", config));
251  _controller->init();
252  }
253 
254  void
256  {
257  Eigen::Matrix4f newTarget = _tcpTarget;
258  ARMARX_IMPORTANT << "on_anyDeltaPushButton_clicked";
259  std::lock_guard g{_allMutex};
260  Eigen::Vector3f deltaPos = _deltaMapPos.at(QObject::sender());
261  Eigen::Vector3f deltaOri = _deltaMapOri.at(QObject::sender());
262  newTarget = math::Helpers::TranslatePose(newTarget, deltaPos * _ui.spinBoxDpos->value());
263  if (deltaOri.norm() > 0)
264  {
265  deltaOri = deltaOri * _ui.spinBoxDori->value() / 180 * M_PI;
266  Eigen::AngleAxisf aa(deltaOri.norm(), deltaOri.normalized());
267  math::Helpers::Orientation(newTarget) =
268  aa.toRotationMatrix() * math::Helpers::Orientation(newTarget);
269  }
270  updateTarget(newTarget);
271  }
272  void
273  CartesianNaturalPositionControllerWidgetController::updateTarget(
274  const Eigen::Matrix4f& newTarget)
275  {
276  if (!_controller->setTarget(
278  {
279  return;
280  }
281  _tcpTarget = newTarget;
282  if (_controller->getDynamicKp().enabled)
283  {
284  updateKpSliders(_controller->getRuntimeConfig());
285  }
286  }
287 
288  void
289  CartesianNaturalPositionControllerWidgetController::readRunCfgFromUi(
290  CartesianNaturalPositionControllerConfig& runCfg)
291  {
292  runCfg.elbowKp = _ui.sliderKpElbow->value() * 0.01f;
293  runCfg.jointLimitAvoidanceKp = _ui.sliderKpJla->value() * 0.01f;
294  }
295  void
296  CartesianNaturalPositionControllerWidgetController::updateKpSliderLabels(
297  const CartesianNaturalPositionControllerConfig& runCfg)
298  {
299  _ui.labelKpElbow->setText(QString::number(runCfg.elbowKp, 'f', 2));
300  _ui.labelKpJla->setText(QString::number(runCfg.jointLimitAvoidanceKp, 'f', 2));
301  }
302  void
303  CartesianNaturalPositionControllerWidgetController::updateKpSliders(
304  const CartesianNaturalPositionControllerConfig& runCfg)
305  {
306  const QSignalBlocker blockKpElb(_ui.sliderKpElbow);
307  const QSignalBlocker blockKpJla(_ui.sliderKpJla);
308  _ui.sliderKpElbow->setValue(runCfg.elbowKp * 100);
309  _ui.sliderKpJla->setValue(runCfg.jointLimitAvoidanceKp * 100);
310  updateKpSliderLabels(runCfg);
311  ARMARX_IMPORTANT << VAROUT(runCfg.elbowKp) << VAROUT(runCfg.jointLimitAvoidanceKp);
312  }
313 
314  void
316  {
317  CartesianNaturalPositionControllerConfig runCfg = _controller->getRuntimeConfig();
318  //ARMARX_IMPORTANT << VAROUT(_runCfg.elbowKp) << VAROUT(_runCfg.jointLimitAvoidanceKp);
319  readRunCfgFromUi(runCfg);
320  updateKpSliderLabels(runCfg);
321  _controller->setRuntimeConfig(runCfg);
322  _controller->updateBaseKpValues(runCfg);
323  }
324 
325  void
327  {
329  dynamicKp.enabled = _ui.checkBoxAutoKp->isChecked();
330  _controller->setDynamicKp(dynamicKp);
331  if (_controller->getDynamicKp().enabled)
332  {
333  updateKpSliders(_controller->getRuntimeConfig());
334  }
335  }
336 
337  void
339  {
340  _setOri = _ui.checkBoxSetOri->isChecked();
341  updateTarget(_tcpTarget);
342  }
343 
344  void
345  CartesianNaturalPositionControllerWidgetController::updateNullspaceTargets()
346  {
347  std::vector<float> nsTargets;
348  for (const NullspaceTarget& nt : _nullspaceTargets)
349  {
350  nsTargets.push_back(nt.checkBox->isChecked() ? nt.slider->value() * M_PI / 180
351  : std::nanf(""));
352  nt.label->setText(QString::number(nt.slider->value()));
353  }
354  _controller->setNullspaceTarget(nsTargets);
355  }
356 
357  void
359  {
360  updateNullspaceTargets();
361  }
362 
363  void
365  {
366  updateNullspaceTargets();
367  }
368 
369  void
371  {
372  _ui.labelPosVel->setText(QString::number(_ui.sliderPosVel->value()));
373  float posVel = _ui.sliderPosVel->value();
374  _controller->setMaxVelocities(posVel);
375  //_runCfg = _controller->getRuntimeConfig();
376  }
377 
378  //void CartesianNaturalPositionControllerWidgetController::on_pushButtonSendSettings_clicked()
379  //{
380  // std::lock_guard g{_allMutex};
381  // if (_controller)
382  // {
383  // ARMARX_IMPORTANT << "sending new config to " << _controllerName;
384  // _controller->setConfig(readRunCfg());
385  // }
386  //}
387 
388 
389  QPointer<QDialog>
391  {
392  std::lock_guard g{_allMutex};
393  if (!_dialog)
394  {
395  _dialog = new SimpleConfigDialog(parent);
396  _dialog->addProxyFinder<RobotUnitInterfacePrx>({"ru", "Robot Unit", "*Unit"});
397  _dialog->addProxyFinder<RobotStateComponentInterfacePrx>(
398  {"rsc", "Robot State Component", "*Component"});
399  }
400  return qobject_cast<SimpleConfigDialog*>(_dialog);
401  }
402 
403  void
405  {
406  std::lock_guard g{_allMutex};
407  _robotStateComponentName = _dialog->getProxyName("rsc");
408  _robotUnitName = _dialog->getProxyName("ru");
409  }
410 
411  /*NJointCartesianWaypointControllerRuntimeConfig CartesianWaypointControlGuiWidgetController::readRunCfg() const
412  {
413  std::lock_guard g{_allMutex};
414  NJointCartesianWaypointControllerRuntimeConfig cfg;
415 
416  cfg.wpCfg.maxPositionAcceleration = static_cast<float>(_ui.doubleSpinBoxMaxAccPos->value());
417  cfg.wpCfg.maxOrientationAcceleration = static_cast<float>(_ui.doubleSpinBoxMaxAccOri->value());
418  cfg.wpCfg.maxNullspaceAcceleration = static_cast<float>(_ui.doubleSpinBoxMaxAccNull->value());
419 
420  cfg.wpCfg.kpJointLimitAvoidance = static_cast<float>(_ui.doubleSpinBoxLimitAvoidKP->value());
421  cfg.wpCfg.jointLimitAvoidanceScale = static_cast<float>(_ui.doubleSpinBoxLimitAvoidScale->value());
422 
423  cfg.wpCfg.thresholdOrientationNear = static_cast<float>(_ui.doubleSpinBoxOriNear->value());
424  cfg.wpCfg.thresholdOrientationReached = static_cast<float>(_ui.doubleSpinBoxOriReached->value());
425  cfg.wpCfg.thresholdPositionNear = static_cast<float>(_ui.doubleSpinBoxPosNear->value());
426  cfg.wpCfg.thresholdPositionReached = static_cast<float>(_ui.doubleSpinBoxPosReached->value());
427 
428  cfg.wpCfg.maxOriVel = static_cast<float>(_ui.doubleSpinBoxOriMaxVel->value());
429  cfg.wpCfg.maxPosVel = static_cast<float>(_ui.doubleSpinBoxPosMaxVel->value());
430  cfg.wpCfg.kpOri = static_cast<float>(_ui.doubleSpinBoxOriKP->value());
431  cfg.wpCfg.kpPos = static_cast<float>(_ui.doubleSpinBoxPosKP->value());
432 
433  cfg.forceThreshold = static_cast<float>(_ui.doubleSpinBoxFTLimit->value());
434  cfg.optimizeNullspaceIfTargetWasReached = _ui.checkBoxKeepOptimizing->isChecked();
435  cfg.forceThresholdInRobotRootZ = _ui.checkBoxLimitinZ->isChecked();
436 
437  return cfg;
438  }*/
439 
440  void
441  CartesianNaturalPositionControllerWidgetController::deleteOldController()
442  {
443  std::lock_guard g{_allMutex};
444  if (_controller)
445  {
446  _controller->cleanup();
447  }
448  }
449 
450  void
451  CartesianNaturalPositionControllerWidgetController::timerEvent(QTimerEvent*)
452  {
453  std::lock_guard g{_allMutex};
454  if (!_robot || !_robotStateComponent)
455  {
456  return;
457  }
458  RemoteRobot::synchronizeLocalClone(_robot, _robotStateComponent);
459  if (_controller)
460  {
461  ARMARX_INFO << deactivateSpam() << "setting visu gp to:\n" << _robot->getGlobalPose();
462  _controller->getInternalController()->setVisualizationRobotGlobalPose(
463  _robot->getGlobalPose());
464  }
465  }
466 
467 
468 } // namespace armarx
RemoteRobot.h
armarx::CartesianNaturalPositionControllerProxy
Definition: CartesianNaturalPositionControllerProxy.h:38
armarx::CartesianNaturalPositionControllerWidgetController::~CartesianNaturalPositionControllerWidgetController
virtual ~CartesianNaturalPositionControllerWidgetController()
Controller destructor.
Definition: CartesianNaturalPositionControllerWidgetController.cpp:105
armarx::CartesianNaturalPositionControllerWidgetController::NullspaceTarget::i
size_t i
Definition: CartesianNaturalPositionControllerWidgetController.h:71
armarx::NaturalDiffIK::Mode::All
@ All
armarx::CartesianNaturalPositionControllerWidgetController::onConnectComponentQt
void onConnectComponentQt()
Definition: CartesianNaturalPositionControllerWidgetController.cpp:158
ARMARX_IMPORTANT
#define ARMARX_IMPORTANT
Definition: Logging.h:183
GfxTL::Orientation
ScalarT Orientation(const VectorXD< 2, ScalarT > &p1, const VectorXD< 2, ScalarT > &p2, const VectorXD< 2, ScalarT > &c)
Definition: Orientation.h:9
armarx::NaturalDiffIK::Mode::Position
@ Position
armarx::NaturalIK::ArmJoints::shoulder
VirtualRobot::RobotNodePtr shoulder
Definition: NaturalIK.h:63
armarx::NaturalIK::ArmJoints::tcp
VirtualRobot::RobotNodePtr tcp
Definition: NaturalIK.h:64
armarx::RemoteRobot::synchronizeLocalClone
static bool synchronizeLocalClone(VirtualRobot::RobotPtr robot, RobotStateComponentInterfacePrx robotStatePrx)
Definition: RemoteRobot.cpp:448
armarx::RemoteRobot::createLocalCloneFromFile
static VirtualRobot::RobotPtr createLocalCloneFromFile(RobotStateComponentInterfacePrx robotStatePrx, VirtualRobot::RobotIO::RobotDescription loadMode=VirtualRobot::RobotIO::eFull)
This is a convenience function for createLocalClone, which automatically gets the filename from the R...
Definition: RemoteRobot.cpp:441
armarx::CartesianNaturalPositionControllerWidgetController::loadSettings
void loadSettings(QSettings *settings) override
Definition: CartesianNaturalPositionControllerWidgetController.cpp:112
armarx::NaturalIK::ArmJoints::elbow
VirtualRobot::RobotNodePtr elbow
Definition: NaturalIK.h:62
armarx::CartesianNaturalPositionControllerWidgetController::configured
void configured() override
This function must be implemented by the user, if he supplies a config dialog.
Definition: CartesianNaturalPositionControllerWidgetController.cpp:404
armarx::NaturalIK::ArmJoints
Definition: NaturalIK.h:59
armarx::CartesianNaturalPositionControllerProxy::DynamicKp
Definition: CartesianNaturalPositionControllerProxy.h:41
armarx::NaturalIK::setLowerArmLength
void setLowerArmLength(float value)
Definition: NaturalIK.cpp:214
armarx::CartesianNaturalPositionControllerWidgetController::getConfigDialog
QPointer< QDialog > getConfigDialog(QWidget *parent) override
getConfigDialog returns a pointer to the a configuration widget of this controller.
Definition: CartesianNaturalPositionControllerWidgetController.cpp:390
armarx::NaturalIK
The NaturalIK class.
Definition: NaturalIK.h:49
armarx::NaturalIK::setUpperArmLength
void setUpperArmLength(float value)
Definition: NaturalIK.cpp:204
armarx::CartesianNaturalPositionControllerWidgetController::NullspaceTarget::checkBox
QCheckBox * checkBox
Definition: CartesianNaturalPositionControllerWidgetController.h:68
M_PI
#define M_PI
Definition: MathTools.h:17
armarx::CartesianNaturalPositionControllerWidgetController::invokeDisconnectComponentQt
void invokeDisconnectComponentQt()
armarx::CartesianNaturalPositionControllerWidgetController::NullspaceTarget::slider
QSlider * slider
Definition: CartesianNaturalPositionControllerWidgetController.h:69
armarx::CartesianNaturalPositionControllerWidgetController::onInitComponent
void onInitComponent() override
Pure virtual hook for the subclass.
Definition: CartesianNaturalPositionControllerWidgetController.cpp:130
armarx::CartesianNaturalPositionControllerWidgetController::saveSettings
void saveSettings(QSettings *settings) override
Definition: CartesianNaturalPositionControllerWidgetController.cpp:121
armarx::CartesianNaturalPositionControllerWidgetController::onDisconnectComponent
void onDisconnectComponent() override
Hook for subclass.
Definition: CartesianNaturalPositionControllerWidgetController.cpp:165
armarx::CartesianNaturalPositionControllerWidgetController::NullspaceTarget::label
QLabel * label
Definition: CartesianNaturalPositionControllerWidgetController.h:70
armarx::CartesianNaturalPositionControllerWidgetController::on_checkBoxAutoKp_stateChanged
void on_checkBoxAutoKp_stateChanged(int)
Definition: CartesianNaturalPositionControllerWidgetController.cpp:326
armarx::CartesianNaturalPositionControllerWidgetController::onConnectComponent
void onConnectComponent() override
Pure virtual hook for the subclass.
Definition: CartesianNaturalPositionControllerWidgetController.cpp:139
armarx::NaturalIK::ArmJoints::rns
VirtualRobot::RobotNodeSetPtr rns
Definition: NaturalIK.h:61
armarx::CartesianNaturalPositionControllerWidgetController::CartesianNaturalPositionControllerWidgetController
CartesianNaturalPositionControllerWidgetController()
Controller Constructor.
Definition: CartesianNaturalPositionControllerWidgetController.cpp:34
armarx::CartesianNaturalPositionControllerWidgetController::NullspaceTarget
Definition: CartesianNaturalPositionControllerWidgetController.h:66
armarx::CartesianNaturalPositionControllerWidgetController::on_pushButtonCreateController_clicked
void on_pushButtonCreateController_clicked()
Definition: CartesianNaturalPositionControllerWidgetController.cpp:172
armarx::CartesianNaturalPositionControllerProxy::DynamicKp::enabled
bool enabled
Definition: CartesianNaturalPositionControllerProxy.h:43
armarx::CartesianNaturalPositionControllerWidgetController::invokeConnectComponentQt
void invokeConnectComponentQt()
armarx::CartesianNaturalPositionControllerWidgetController::on_sliders_valueChanged
void on_sliders_valueChanged(int)
Definition: CartesianNaturalPositionControllerWidgetController.cpp:315
armarx::CartesianNaturalPositionControllerProxy::MakeConfig
static NJointCartesianNaturalPositionControllerConfigPtr MakeConfig(const std::string &rns, const std::string &elbowNode)
Definition: CartesianNaturalPositionControllerProxy.cpp:68
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:601
armarx::CartesianNaturalPositionControllerWidgetController::on_checkBoxSetOri_stateChanged
void on_checkBoxSetOri_stateChanged(int)
Definition: CartesianNaturalPositionControllerWidgetController.cpp:338
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:174
VAROUT
#define VAROUT(x)
Definition: StringHelpers.h:182
armarx::CartesianNaturalPositionControllerWidgetController::on_anyNullspaceCheckbox_stateChanged
void on_anyNullspaceCheckbox_stateChanged(int)
Definition: CartesianNaturalPositionControllerWidgetController.cpp:358
IceInternal::ProxyHandle<::IceProxy::armarx::RobotUnitInterface >
armarx::Logging::deactivateSpam
SpamFilterDataPtr deactivateSpam(float deactivationDurationSec=10.0f, const std::string &identifier="", bool deactivate=true) const
disables the logging for the current line for the given amount of seconds.
Definition: Logging.cpp:92
armarx::ArmarXWidgetController::getWidget
virtual QPointer< QWidget > getWidget()
getWidget returns a pointer to the a widget of this controller.
Definition: ArmarXWidgetController.cpp:54
armarx::CartesianNaturalPositionControllerWidgetController::on_horizontalSliderPosVel_valueChanged
void on_horizontalSliderPosVel_valueChanged(int)
Definition: CartesianNaturalPositionControllerWidgetController.cpp:370
armarx::CartesianNaturalPositionControllerWidgetController::on_anyNullspaceSlider_valueChanged
void on_anyNullspaceSlider_valueChanged(int)
Definition: CartesianNaturalPositionControllerWidgetController.cpp:364
CartesianNaturalPositionControllerWidgetController.h
armarx::CartesianNaturalPositionControllerWidgetController::on_anyDeltaPushButton_clicked
void on_anyDeltaPushButton_clicked()
Definition: CartesianNaturalPositionControllerWidgetController.cpp:255
armarx::ManagedIceObject::usingProxy
bool usingProxy(const std::string &name, const std::string &endpoints="")
Registers a proxy for retrieval after initialization and adds it to the dependency list.
Definition: ManagedIceObject.cpp:151
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:28
armarx::SimpleConfigDialog
A config-dialog containing one (or multiple) proxy finders.
Definition: SimpleConfigDialog.h:84
norm
double norm(const Point &a)
Definition: point.hpp:94