BoxToGraspCandidatesWidgetController.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 ARCHES::gui-plugins::BoxToGraspCandidatesWidgetController
17  * \author Raphael Grimm ( raphael dot grimm 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 <SimoxUtility/math/convert/pos_mat3f_to_mat4f.h>
28 #include <SimoxUtility/math/convert/rpy_to_mat3f.h>
29 #include <SimoxUtility/math/distance/angle_between.h>
30 #include <SimoxUtility/math/project_to_plane.h>
31 #include <SimoxUtility/shapes/OrientedBox.h>
32 
36 
37 // configure
38 namespace armarx
39 {
40  void
42  {
44  settings->value("rsc", "Armar6StateComponent").toString().toStdString());
45  _gc_topic_name = settings->value("rsc", "GraspCandidatesTopic").toString().toStdString();
46  }
47 
48  void
50  {
51  settings->setValue(
52  "rsc",
53  QString::fromStdString(getRobotStateComponentPlugin().getRobotStateComponentName()));
54  settings->setValue("gct", QString::fromStdString(_gc_topic_name));
55  }
56 
57  QPointer<QDialog>
59  {
60  if (!_dialog)
61  {
62  _dialog = new SimpleConfigDialog(parent);
63  _dialog->addProxyFinder<RobotStateComponentInterfacePrx>(
64  "rsc", "Robot State Component", "*Component");
65  _dialog->addLineEdit("gct", "Grasp Candidates Topic", "GraspCandidatesTopic");
66  }
67  return qobject_cast<SimpleConfigDialog*>(_dialog);
68  }
69 
70  void
72  {
73  getRobotStateComponentPlugin().setRobotStateComponentName(_dialog->getProxyName("rsc"));
74  _gc_topic_name = _dialog->getLineEditText("gct");
75  }
76 } // namespace armarx
77 
78 namespace armarx
79 {
81  {
82  _ui.setupUi(getWidget());
83 
84  _box_pose.setXYZWidgets(
85  _ui.doubleSpinBoxBoxTX, _ui.doubleSpinBoxBoxTY, _ui.doubleSpinBoxBoxTZ);
86 
87  _box_pose.setRPYWidgets(
88  _ui.doubleSpinBoxBoxRX, _ui.doubleSpinBoxBoxRY, _ui.doubleSpinBoxBoxRZ);
89 
90  _box_extend.addWidget(_ui.doubleSpinBoxBoxSizeX);
91  _box_extend.addWidget(_ui.doubleSpinBoxBoxSizeY);
92  _box_extend.addWidget(_ui.doubleSpinBoxBoxSizeZ);
93 
94  _transversal_l.addWidget(_ui.doubleSpinBoxHandLTransvX);
95  _transversal_l.addWidget(_ui.doubleSpinBoxHandLTransvY);
96  _transversal_l.addWidget(_ui.doubleSpinBoxHandLTransvZ);
97 
98  _transversal_r.addWidget(_ui.doubleSpinBoxHandRTransvX);
99  _transversal_r.addWidget(_ui.doubleSpinBoxHandRTransvY);
100  _transversal_r.addWidget(_ui.doubleSpinBoxHandRTransvZ);
101 
102  _up_l.addWidget(_ui.doubleSpinBoxHandLUpX);
103  _up_l.addWidget(_ui.doubleSpinBoxHandLUpY);
104  _up_l.addWidget(_ui.doubleSpinBoxHandLUpZ);
105 
106  _up_r.addWidget(_ui.doubleSpinBoxHandRUpX);
107  _up_r.addWidget(_ui.doubleSpinBoxHandRUpY);
108  _up_r.addWidget(_ui.doubleSpinBoxHandRUpZ);
109 
110  _tcp_shift_l.addWidget(_ui.doubleSpinBoxTCPShiftLX);
111  _tcp_shift_l.addWidget(_ui.doubleSpinBoxTCPShiftLY);
112  _tcp_shift_l.addWidget(_ui.doubleSpinBoxTCPShiftLZ);
113 
114  _tcp_shift_r.addWidget(_ui.doubleSpinBoxTCPShiftRX);
115  _tcp_shift_r.addWidget(_ui.doubleSpinBoxTCPShiftRY);
116  _tcp_shift_r.addWidget(_ui.doubleSpinBoxTCPShiftRZ);
117 
118  const std::vector spinboxes{
119  _ui.doubleSpinBoxBoundTransvMax, _ui.doubleSpinBoxBoundTransvMin,
120  _ui.doubleSpinBoxBoundWidthMin, _ui.doubleSpinBoxBoundWidthMax,
121  _ui.doubleSpinBoxBoundDepthMin, _ui.doubleSpinBoxBoundDepthMax,
122 
123  _ui.doubleSpinBoxBoxTX, _ui.doubleSpinBoxBoxTY,
124  _ui.doubleSpinBoxBoxTZ, _ui.doubleSpinBoxBoxRX,
125  _ui.doubleSpinBoxBoxRY, _ui.doubleSpinBoxBoxRZ,
126  _ui.doubleSpinBoxBoxSizeX, _ui.doubleSpinBoxBoxSizeY,
127  _ui.doubleSpinBoxBoxSizeZ,
128 
129  _ui.doubleSpinBoxHandLTransvX, _ui.doubleSpinBoxHandLTransvY,
130  _ui.doubleSpinBoxHandLTransvZ, _ui.doubleSpinBoxHandRTransvX,
131  _ui.doubleSpinBoxHandRTransvY, _ui.doubleSpinBoxHandRTransvZ,
132 
133  _ui.doubleSpinBoxHandLUpX, _ui.doubleSpinBoxHandLUpY,
134  _ui.doubleSpinBoxHandLUpZ, _ui.doubleSpinBoxHandRUpX,
135  _ui.doubleSpinBoxHandRUpY, _ui.doubleSpinBoxHandRUpZ,
136 
137  _ui.doubleSpinBoxTCPShiftLX, _ui.doubleSpinBoxTCPShiftLY,
138  _ui.doubleSpinBoxTCPShiftLZ, _ui.doubleSpinBoxTCPShiftRX,
139  _ui.doubleSpinBoxTCPShiftRY, _ui.doubleSpinBoxTCPShiftRZ};
140  for (QDoubleSpinBox* ptr : spinboxes)
141  {
142  connect(ptr,
143  qOverload<double>(&QDoubleSpinBox::valueChanged),
144  this,
146  }
147 
148  const std::vector checkboxes{//Left
149  _ui.checkBoxGraspLPosXPosY,
150  _ui.checkBoxGraspLPosXPosZ,
151  _ui.checkBoxGraspLPosXNegY,
152  _ui.checkBoxGraspLPosXNegZ,
153 
154  _ui.checkBoxGraspLNegXPosY,
155  _ui.checkBoxGraspLNegXPosZ,
156  _ui.checkBoxGraspLNegXNegY,
157  _ui.checkBoxGraspLNegXNegZ,
158 
159  _ui.checkBoxGraspLPosYPosX,
160  _ui.checkBoxGraspLPosYPosZ,
161  _ui.checkBoxGraspLPosYNegX,
162  _ui.checkBoxGraspLPosYNegZ,
163 
164  _ui.checkBoxGraspLNegYPosX,
165  _ui.checkBoxGraspLNegYPosZ,
166  _ui.checkBoxGraspLNegYNegX,
167  _ui.checkBoxGraspLNegYNegZ,
168 
169  _ui.checkBoxGraspLPosZPosX,
170  _ui.checkBoxGraspLPosZPosY,
171  _ui.checkBoxGraspLPosZNegX,
172  _ui.checkBoxGraspLPosZNegY,
173 
174  _ui.checkBoxGraspLNegZPosX,
175  _ui.checkBoxGraspLNegZPosY,
176  _ui.checkBoxGraspLNegZNegX,
177  _ui.checkBoxGraspLNegZNegY,
178 
179  //Right
180  _ui.checkBoxGraspRPosXPosY,
181  _ui.checkBoxGraspRPosXPosZ,
182  _ui.checkBoxGraspRPosXNegY,
183  _ui.checkBoxGraspRPosXNegZ,
184 
185  _ui.checkBoxGraspRNegXPosY,
186  _ui.checkBoxGraspRNegXPosZ,
187  _ui.checkBoxGraspRNegXNegY,
188  _ui.checkBoxGraspRNegXNegZ,
189 
190  _ui.checkBoxGraspRPosYPosX,
191  _ui.checkBoxGraspRPosYPosZ,
192  _ui.checkBoxGraspRPosYNegX,
193  _ui.checkBoxGraspRPosYNegZ,
194 
195  _ui.checkBoxGraspRNegYPosX,
196  _ui.checkBoxGraspRNegYPosZ,
197  _ui.checkBoxGraspRNegYNegX,
198  _ui.checkBoxGraspRNegYNegZ,
199 
200  _ui.checkBoxGraspRPosZPosX,
201  _ui.checkBoxGraspRPosZPosY,
202  _ui.checkBoxGraspRPosZNegX,
203  _ui.checkBoxGraspRPosZNegY,
204 
205  _ui.checkBoxGraspRNegZPosX,
206  _ui.checkBoxGraspRNegZPosY,
207  _ui.checkBoxGraspRNegZNegX,
208  _ui.checkBoxGraspRNegZNegY};
209  for (QCheckBox* ptr : checkboxes)
210  {
211  ptr->setChecked(true);
212  connect(ptr, &QCheckBox::clicked, this, &BoxToGraspCandidatesWidgetController::update);
213  }
214  }
215 
216  void
218  {
219  {
220  std::lock_guard guard{_mutex};
221  _robot = addRobot("state robot", VirtualRobot::RobotIO::eStructure);
222  getTopic(_gc_topic, _gc_topic_name);
223  }
224  QMetaObject::invokeMethod(this, "update", Qt::QueuedConnection);
225  }
226 
227  void
229  {
230  ARMARX_TRACE;
231  std::lock_guard guard{_mutex};
232  if (!_robot)
233  {
234  return;
235  }
236  synchronizeLocalClone(_robot);
237  const simox::OrientedBox<float> box{_box_pose.getMat4(),
238  _box_extend.get<Eigen::Vector3f>()};
239 
240  grasp_candidate_drawer gc_draw{getRobotNameHelper(), _robot};
242  //sides
243  {
244  auto& l = b2gc.side("Left");
245  auto& r = b2gc.side("Right");
246 
247  l.hand_transverse = _transversal_l.get<Eigen::Vector3f>().normalized();
248  r.hand_transverse = _transversal_r.get<Eigen::Vector3f>().normalized();
249  l.hand_up = _up_l.get<Eigen::Vector3f>().normalized();
250  r.hand_up = _up_r.get<Eigen::Vector3f>().normalized();
251  l.tcp_shift = _tcp_shift_l.get<Eigen::Vector3f>().normalized();
252  r.tcp_shift = _tcp_shift_r.get<Eigen::Vector3f>().normalized();
253  }
255  {
256  lim.transverse_length_min = _ui.doubleSpinBoxBoundTransvMin->value();
257  lim.transverse_length_max = _ui.doubleSpinBoxBoundTransvMax->value();
258  lim.upward_length_min = _ui.doubleSpinBoxBoundDepthMin->value();
259  lim.upward_length_max = _ui.doubleSpinBoxBoundDepthMax->value();
260  lim.forward_length_min = _ui.doubleSpinBoxBoundWidthMin->value();
261  lim.forward_length_max = _ui.doubleSpinBoxBoundWidthMax->value();
262  }
264  {
266  side_enabled_l[ba::pos_x_pos_y] = _ui.checkBoxGraspLPosXPosY->isChecked();
267  side_enabled_l[ba::pos_x_pos_z] = _ui.checkBoxGraspLPosXPosZ->isChecked();
268  side_enabled_l[ba::pos_x_neg_y] = _ui.checkBoxGraspLPosXNegY->isChecked();
269  side_enabled_l[ba::pos_x_neg_z] = _ui.checkBoxGraspLPosXNegZ->isChecked();
270 
271  side_enabled_l[ba::neg_x_pos_y] = _ui.checkBoxGraspLNegXPosY->isChecked();
272  side_enabled_l[ba::neg_x_pos_z] = _ui.checkBoxGraspLNegXPosZ->isChecked();
273  side_enabled_l[ba::neg_x_neg_y] = _ui.checkBoxGraspLNegXNegY->isChecked();
274  side_enabled_l[ba::neg_x_neg_z] = _ui.checkBoxGraspLNegXNegZ->isChecked();
275 
276  side_enabled_l[ba::pos_y_pos_x] = _ui.checkBoxGraspLPosYPosX->isChecked();
277  side_enabled_l[ba::pos_y_pos_z] = _ui.checkBoxGraspLPosYPosZ->isChecked();
278  side_enabled_l[ba::pos_y_neg_x] = _ui.checkBoxGraspLPosYNegX->isChecked();
279  side_enabled_l[ba::pos_y_neg_z] = _ui.checkBoxGraspLPosYNegZ->isChecked();
280 
281  side_enabled_l[ba::neg_y_pos_x] = _ui.checkBoxGraspLNegYPosX->isChecked();
282  side_enabled_l[ba::neg_y_pos_z] = _ui.checkBoxGraspLNegYPosZ->isChecked();
283  side_enabled_l[ba::neg_y_neg_x] = _ui.checkBoxGraspLNegYNegX->isChecked();
284  side_enabled_l[ba::neg_y_neg_z] = _ui.checkBoxGraspLNegYNegZ->isChecked();
285 
286  side_enabled_l[ba::pos_z_pos_x] = _ui.checkBoxGraspLPosZPosX->isChecked();
287  side_enabled_l[ba::pos_z_pos_y] = _ui.checkBoxGraspLPosZPosY->isChecked();
288  side_enabled_l[ba::pos_z_neg_x] = _ui.checkBoxGraspLPosZNegX->isChecked();
289  side_enabled_l[ba::pos_z_neg_y] = _ui.checkBoxGraspLPosZNegY->isChecked();
290 
291  side_enabled_l[ba::neg_z_pos_x] = _ui.checkBoxGraspLNegZPosX->isChecked();
292  side_enabled_l[ba::neg_z_pos_y] = _ui.checkBoxGraspLNegZPosY->isChecked();
293  side_enabled_l[ba::neg_z_neg_x] = _ui.checkBoxGraspLNegZNegX->isChecked();
294  side_enabled_l[ba::neg_z_neg_y] = _ui.checkBoxGraspLNegZNegY->isChecked();
295  }
297  {
299  side_enabled_r[ba::pos_x_pos_y] = _ui.checkBoxGraspRPosXPosY->isChecked();
300  side_enabled_r[ba::pos_x_pos_z] = _ui.checkBoxGraspRPosXPosZ->isChecked();
301  side_enabled_r[ba::pos_x_neg_y] = _ui.checkBoxGraspRPosXNegY->isChecked();
302  side_enabled_r[ba::pos_x_neg_z] = _ui.checkBoxGraspRPosXNegZ->isChecked();
303 
304  side_enabled_r[ba::neg_x_pos_y] = _ui.checkBoxGraspRNegXPosY->isChecked();
305  side_enabled_r[ba::neg_x_pos_z] = _ui.checkBoxGraspRNegXPosZ->isChecked();
306  side_enabled_r[ba::neg_x_neg_y] = _ui.checkBoxGraspRNegXNegY->isChecked();
307  side_enabled_r[ba::neg_x_neg_z] = _ui.checkBoxGraspRNegXNegZ->isChecked();
308 
309  side_enabled_r[ba::pos_y_pos_x] = _ui.checkBoxGraspRPosYPosX->isChecked();
310  side_enabled_r[ba::pos_y_pos_z] = _ui.checkBoxGraspRPosYPosZ->isChecked();
311  side_enabled_r[ba::pos_y_neg_x] = _ui.checkBoxGraspRPosYNegX->isChecked();
312  side_enabled_r[ba::pos_y_neg_z] = _ui.checkBoxGraspRPosYNegZ->isChecked();
313 
314  side_enabled_r[ba::neg_y_pos_x] = _ui.checkBoxGraspRNegYPosX->isChecked();
315  side_enabled_r[ba::neg_y_pos_z] = _ui.checkBoxGraspRNegYPosZ->isChecked();
316  side_enabled_r[ba::neg_y_neg_x] = _ui.checkBoxGraspRNegYNegX->isChecked();
317  side_enabled_r[ba::neg_y_neg_z] = _ui.checkBoxGraspRNegYNegZ->isChecked();
318 
319  side_enabled_r[ba::pos_z_pos_x] = _ui.checkBoxGraspRPosZPosX->isChecked();
320  side_enabled_r[ba::pos_z_pos_y] = _ui.checkBoxGraspRPosZPosY->isChecked();
321  side_enabled_r[ba::pos_z_neg_x] = _ui.checkBoxGraspRPosZNegX->isChecked();
322  side_enabled_r[ba::pos_z_neg_y] = _ui.checkBoxGraspRPosZNegY->isChecked();
323 
324  side_enabled_r[ba::neg_z_pos_x] = _ui.checkBoxGraspRNegZPosX->isChecked();
325  side_enabled_r[ba::neg_z_pos_y] = _ui.checkBoxGraspRNegZPosY->isChecked();
326  side_enabled_r[ba::neg_z_neg_x] = _ui.checkBoxGraspRNegZNegX->isChecked();
327  side_enabled_r[ba::neg_z_neg_y] = _ui.checkBoxGraspRNegZNegY->isChecked();
328  }
329 
330  viz::Layer layer_l = arviz.layer("grasps_l");
331  viz::Layer layer_r = arviz.layer("grasps_r");
332  viz::Layer layer_hand_vec = arviz.layer("hand_vec");
333  viz::Layer layer_box = arviz.layer("box");
334  layer_box.add(viz::Box{"box"}.set(box).transformPose(_robot->getGlobalPose()));
335 
336  gc_draw.draw(b2gc.side("Left"), layer_hand_vec);
337  gc_draw.draw(b2gc.side("Right"), layer_hand_vec);
338 
339  grasping::GraspCandidateSeq graps;
340  const auto consume_l = [&](const auto& g)
341  {
342  graps.emplace_back(g.make_candidate(getName()));
343  gc_draw.draw(graps.back(), layer_l);
344  };
345  const auto consume_r = [&](const auto& g)
346  {
347  graps.emplace_back(g.make_candidate(getName()));
348  gc_draw.draw(graps.back(), layer_r);
349  };
350  b2gc.center_grasps(box, "Left", lim, consume_l, side_enabled_l);
351  b2gc.center_grasps(box, "Right", lim, consume_r, side_enabled_r);
352 
353  arviz.commit({layer_l, layer_r, layer_hand_vec, layer_box});
354 
355  _gc_topic->reportGraspCandidates(getName(), graps);
356  }
357 } // namespace armarx
armarx::viz::Client::commit
CommitResult commit(StagedCommit const &commit)
Definition: Client.cpp:89
armarx::SpinBoxToPose::setXYZWidgets
void setXYZWidgets(Qwid *x, Qwid *y, Qwid *z)
Definition: SpinBoxToPose.h:109
armarx::box_to_grasp_candidates::length_limit::upward_length_max
float upward_length_max
Definition: box_to_grasp_candidates.h:85
armarx::box_to_grasp_candidates::length_limit::transverse_length_max
float transverse_length_max
Definition: box_to_grasp_candidates.h:83
armarx::RobotStateComponentPluginUser::getRobotNameHelper
RobotNameHelperPtr getRobotNameHelper() const
Definition: RobotStateComponentPlugin.cpp:393
armarx::SpinBoxToPose::setRPYWidgets
void setRPYWidgets(Qwid *r, Qwid *p, Qwid *y)
Definition: SpinBoxToPose.h:117
armarx::SpinBoxToPose::getMat4
Eigen::Matrix4f getMat4() const
Definition: SpinBoxToPose.h:101
armarx::BoxToGraspCandidatesWidgetController::BoxToGraspCandidatesWidgetController
BoxToGraspCandidatesWidgetController()
Definition: BoxToGraspCandidatesWidgetController.cpp:80
armarx::SpinBoxToVector::get
void get(Eigen::Matrix< Scalar, Rows, Cols > &m) const
Definition: SpinBoxToVector.h:46
armarx::viz::Layer::add
void add(ElementT const &element)
Definition: Layer.h:31
armarx::plugins::RobotStateComponentPlugin::setRobotStateComponentName
void setRobotStateComponentName(const std::string &name)
Definition: RobotStateComponentPlugin.cpp:336
armarx::RobotStateComponentPluginUser::addRobot
VirtualRobot::RobotPtr addRobot(const std::string &id, const VirtualRobot::RobotPtr &robot, const VirtualRobot::RobotNodeSetPtr &rns={}, const VirtualRobot::RobotNodePtr &node={})
Definition: RobotStateComponentPlugin.cpp:405
armarx::RobotStateComponentPluginUser::synchronizeLocalClone
bool synchronizeLocalClone(const VirtualRobot::RobotPtr &robot) const
Definition: RobotStateComponentPlugin.cpp:470
GraspCandidateHelper.h
armarx::box_to_grasp_candidates::length_limit::upward_length_min
float upward_length_min
Definition: box_to_grasp_candidates.h:84
armarx::box_to_grasp_candidates::length_limit::transverse_length_min
float transverse_length_min
Definition: box_to_grasp_candidates.h:82
ARMARX_TRACE
#define ARMARX_TRACE
Definition: trace.h:77
armarx::box_to_grasp_candidates::length_limit
Definition: box_to_grasp_candidates.h:80
armarx::box_to_grasp_candidates::box_alignment
box_alignment
Definition: box_to_grasp_candidates.h:17
armarx::BoxToGraspCandidatesWidgetController::update
void update()
Definition: BoxToGraspCandidatesWidgetController.cpp:228
armarx::SpinBoxToVector::addWidget
void addWidget(Qwid *s)
Definition: SpinBoxToVector.h:153
armarx::RobotStateComponentPluginUser::getRobotStateComponentPlugin
const RobotStateComponentPlugin & getRobotStateComponentPlugin() const
Definition: RobotStateComponentPlugin.cpp:375
armarx::box_to_grasp_candidates::length_limit::forward_length_max
float forward_length_max
Definition: box_to_grasp_candidates.h:87
armarx::viz::Box
Definition: Elements.h:47
grasp_candidate_drawer.h
armarx::BoxToGraspCandidatesWidgetController::loadSettings
void loadSettings(QSettings *settings) override
Implement to load the settings that are part of the GUI configuration.
Definition: BoxToGraspCandidatesWidgetController.cpp:41
armarx::box_to_grasp_candidates
Definition: box_to_grasp_candidates.h:14
armarx::BoxToGraspCandidatesWidgetController::saveSettings
void saveSettings(QSettings *settings) override
Implement to save the settings as part of the GUI configuration.
Definition: BoxToGraspCandidatesWidgetController.cpp:49
armarx::ArVizComponentPluginUser::arviz
armarx::viz::Client arviz
Definition: ArVizComponentPlugin.h:42
armarx::ManagedIceObject::getTopic
TopicProxyType getTopic(const std::string &name)
Returns a proxy of the specified topic.
Definition: ManagedIceObject.h:480
simox::OrientedBox
Definition: ice_conversions.h:17
IceInternal::ProxyHandle<::IceProxy::armarx::RobotStateComponentInterface >
armarx::grasp_candidate_drawer
Definition: grasp_candidate_drawer.h:13
armarx::ArmarXWidgetController::getWidget
virtual QPointer< QWidget > getWidget()
getWidget returns a pointer to the a widget of this controller.
Definition: ArmarXWidgetController.cpp:54
armarx::ManagedIceObject::getName
std::string getName() const
Retrieve name of object.
Definition: ManagedIceObject.cpp:108
box_to_grasp_candidates.h
BoxToGraspCandidatesWidgetController.h
armarx::viz::Client::layer
Layer layer(std::string const &name) const
Definition: Client.cpp:80
armarx::box_to_grasp_candidates::side_enabled_map
Definition: box_to_grasp_candidates.h:50
armarx::box_to_grasp_candidates::length_limit::forward_length_min
float forward_length_min
Definition: box_to_grasp_candidates.h:86
armarx::BoxToGraspCandidatesWidgetController::configured
void configured() override
This function must be implemented by the user, if he supplies a config dialog.
Definition: BoxToGraspCandidatesWidgetController.cpp:71
armarx::viz::Layer
Definition: Layer.h:12
armarx::viz::Box::set
Box & set(const simox::OrientedBoxBase< float > &b)
Definition: Elements.cpp:79
armarx::BoxToGraspCandidatesWidgetController::onConnectComponent
void onConnectComponent() override
Pure virtual hook for the subclass.
Definition: BoxToGraspCandidatesWidgetController.cpp:217
armarx::BoxToGraspCandidatesWidgetController::getConfigDialog
QPointer< QDialog > getConfigDialog(QWidget *parent)
getConfigDialog returns a pointer to the a configuration widget of this controller.
Definition: BoxToGraspCandidatesWidgetController.cpp:58
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::SimpleConfigDialog
A config-dialog containing one (or multiple) proxy finders.
Definition: SimpleConfigDialog.h:84