default_collisions_widget.h
Go to the documentation of this file.
1 /*********************************************************************
2  * Software License Agreement (BSD License)
3  *
4  * Copyright (c) 2012, Willow Garage, Inc.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * * Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * * Redistributions in binary form must reproduce the above
14  * copyright notice, this list of conditions and the following
15  * disclaimer in the documentation and/or other materials provided
16  * with the distribution.
17  * * Neither the name of Willow Garage nor the names of its
18  * contributors may be used to endorse or promote products derived
19  * from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32  * POSSIBILITY OF SUCH DAMAGE.
33  *********************************************************************/
34 
35 /* Author: Dave Coleman */
36 
37 #pragma once
38 #include <QThread>
39 class QAbstractItemModel;
40 class QAction;
41 class QButtonGroup;
42 class QCheckBox;
43 class QGroupBox;
44 class QHeaderView;
45 class QItemSelection;
46 class QItemSelectionModel;
47 class QLabel;
48 class QSpinBox;
49 class QLineEdit;
50 class QProgressBar;
51 class QPushButton;
52 class QRadioButton;
53 class QSlider;
54 class QSpinBox;
55 class QTableView;
56 class QVBoxLayout;
57 
58 #ifndef Q_MOC_RUN
59 #include <boost/thread/thread.hpp>
60 #include <boost/function/function_fwd.hpp>
63 #endif
64 
65 #include "setup_screen_widget.h" // a base class for screens in the setup assistant
66 
67 namespace moveit_setup_assistant
68 {
69 class MonitorThread;
70 
75 {
76  Q_OBJECT
77 
78 public:
79  enum ViewMode
80  {
83  };
84 
85  // ******************************************************************************************
86  // Public Functions
87  // ******************************************************************************************
88 
93  DefaultCollisionsWidget(QWidget* parent, const MoveItConfigDataPtr& config_data);
94  ~DefaultCollisionsWidget() override;
95 
96 private Q_SLOTS:
97 
98  // ******************************************************************************************
99  // Slot Event Functions
100  // ******************************************************************************************
101 
114 
119  void changeNumSamples(int value);
120 
124  void loadCollisionTable();
125 
129  void checkedFilterChanged();
130 
134  void collisionsChanged(const QModelIndex& index);
135 
139  void revertChanges();
140 
144  void previewSelectedMatrix(const QModelIndex& index);
145  void previewSelectedLinear(const QModelIndex& index);
146 
150  void focusGiven() override;
151 
155  bool focusLost() override;
156 
157  void showHeaderContextMenu(const QPoint& p);
158  void hideSections();
159  void hideOtherSections();
160  void showSections();
161 
162 private:
163  // ******************************************************************************************
164  // Qt Components
165  // ******************************************************************************************
166  QLabel* page_title_;
167  QTableView* collision_table_;
168  QAbstractItemModel* model_;
169  QItemSelectionModel* selection_model_;
170  QVBoxLayout* layout_;
171  QSpinBox* sample_spinbox_;
172  QSlider* sample_slider_;
173  QPushButton* btn_generate_;
174  QGroupBox* controls_box_;
175  QProgressBar* progress_bar_;
176  QPushButton* btn_interrupt_;
178  QLineEdit* link_name_filter_;
181  QSpinBox* fraction_spinbox_;
182  QPushButton* btn_revert_;
183  QButtonGroup* view_mode_buttons_;
184 
185  QList<QAction*> header_actions_; // context actions for header sections
186  Qt::Orientations clicked_headers_; // remember which header section activated context actions
187  int clicked_section_; // remember which header section activated context actions
188 
189  // ******************************************************************************************
190  // Variables
191  // ******************************************************************************************
193 
195  moveit_setup_assistant::MoveItConfigDataPtr config_data_;
198 
199  // ******************************************************************************************
200  // Private Functions
201  // ******************************************************************************************
202 
208  void generateCollisionTable(unsigned int* collision_progress);
209 
214  void disableControls(bool disable);
215 
217  bool eventFilter(QObject* object, QEvent* event) override;
218 
220  QList<int> selectedSections(QHeaderView*& header) const;
221 
223  void showSections(QHeaderView* header, const QList<int>& logicalIndexes);
224 
226  void setDefaults(bool enabled);
227 
229  void toggleSelection(QItemSelection selection);
230 };
231 
233 class MonitorThread : public QThread
234 {
235  Q_OBJECT
236 
237 public:
238  MonitorThread(const boost::function<void(unsigned int*)>& f, QProgressBar* progress_bar = nullptr);
239  void run() override;
240  void cancel()
241  {
242  canceled_ = true;
243  }
244  bool canceled() const
245  {
246  return canceled_;
247  }
248 
249 Q_SIGNALS:
250  void progress(int /*_t1*/);
251 
252 private:
253  boost::thread worker_;
254  unsigned int progress_;
255  bool canceled_;
256 };
257 } // namespace moveit_setup_assistant
moveit_setup_assistant::DefaultCollisionsWidget::setDefaults
void setDefaults(bool enabled)
Definition: default_collisions_widget.cpp:580
moveit_setup_assistant::DefaultCollisionsWidget::btn_generate_
QPushButton * btn_generate_
Definition: default_collisions_widget.h:173
moveit_setup_assistant::DefaultCollisionsWidget::~DefaultCollisionsWidget
~DefaultCollisionsWidget() override
Definition: default_collisions_widget.cpp:270
moveit_setup_assistant::DefaultCollisionsWidget::finishGeneratingCollisionTable
void finishGeneratingCollisionTable()
finish generating collision matrix after worker thread has finished
Definition: default_collisions_widget.cpp:310
moveit_setup_assistant::DefaultCollisionsWidget::changeNumSamples
void changeNumSamples(int value)
GUI func for showing number of samples. value will be rounded in 1000s.
Definition: default_collisions_widget.cpp:713
moveit_setup_assistant::DefaultCollisionsWidget::sample_spinbox_
QSpinBox * sample_spinbox_
Definition: default_collisions_widget.h:171
moveit_setup_assistant::DefaultCollisionsWidget::collision_checkbox_
QCheckBox * collision_checkbox_
Definition: default_collisions_widget.h:179
moveit_setup_assistant::DefaultCollisionsWidget::focusGiven
void focusGiven() override
Called when setup assistant navigation switches to this screen.
Definition: default_collisions_widget.cpp:812
moveit_setup_assistant::DefaultCollisionsWidget::selectedSections
QList< int > selectedSections(QHeaderView *&header) const
Definition: default_collisions_widget.cpp:507
moveit_setup_assistant::DefaultCollisionsWidget::LINEAR_MODE
@ LINEAR_MODE
Definition: default_collisions_widget.h:82
moveit_setup_assistant::DefaultCollisionsWidget::fraction_label_
QLabel * fraction_label_
Definition: default_collisions_widget.h:180
moveit_setup_assistant::DefaultCollisionsWidget::btn_interrupt_
QPushButton * btn_interrupt_
Definition: default_collisions_widget.h:176
moveit_setup_assistant::DefaultCollisionsWidget::view_mode_buttons_
QButtonGroup * view_mode_buttons_
Definition: default_collisions_widget.h:183
moveit_setup_assistant::DefaultCollisionsWidget::disableControls
void disableControls(bool disable)
Helper function to disable parts of GUI during computation.
Definition: default_collisions_widget.cpp:732
moveit_setup_assistant::MonitorThread::progress
void progress(int)
moveit_setup_assistant::DefaultCollisionsWidget::hideOtherSections
void hideOtherSections()
Definition: default_collisions_widget.cpp:540
moveit_setup_assistant::MonitorThread::progress_
unsigned int progress_
Definition: default_collisions_widget.h:254
moveit_setup_assistant::DefaultCollisionsWidget::toggleSelection
void toggleSelection(QItemSelection selection)
Definition: default_collisions_widget.cpp:661
moveit_setup_assistant::DefaultCollisionsWidget::generateCollisionTable
void generateCollisionTable(unsigned int *collision_progress)
The thread that is called to allow the GUI to update. Calls an external function to do calcs.
Definition: default_collisions_widget.cpp:329
moveit_setup_assistant::DefaultCollisionsWidget::selection_model_
QItemSelectionModel * selection_model_
Definition: default_collisions_widget.h:169
moveit_setup_assistant::DefaultCollisionsWidget::link_name_filter_
QLineEdit * link_name_filter_
Definition: default_collisions_widget.h:178
moveit_setup_assistant::DefaultCollisionsWidget::loadCollisionTable
void loadCollisionTable()
Update view and data model for the link_pairs data structure.
Definition: default_collisions_widget.cpp:358
moveit_config_data.h
moveit_setup_assistant::MonitorThread
Definition: default_collisions_widget.h:233
moveit_setup_assistant::DefaultCollisionsWidget::header_actions_
QList< QAction * > header_actions_
Definition: default_collisions_widget.h:185
moveit_setup_assistant::DefaultCollisionsWidget::clicked_headers_
Qt::Orientations clicked_headers_
Definition: default_collisions_widget.h:186
moveit_setup_assistant::MonitorThread::run
void run() override
Definition: default_collisions_widget.cpp:855
compute_default_collisions.h
moveit_setup_assistant::DefaultCollisionsWidget::DefaultCollisionsWidget
DefaultCollisionsWidget(QWidget *parent, const MoveItConfigDataPtr &config_data)
User interface for editing the default collision matrix list in an SRDF.
Definition: default_collisions_widget.cpp:99
moveit_setup_assistant::MonitorThread::MonitorThread
MonitorThread(const boost::function< void(unsigned int *)> &f, QProgressBar *progress_bar=nullptr)
Definition: default_collisions_widget.cpp:844
moveit_setup_assistant::DefaultCollisionsWidget::revertChanges
void revertChanges()
Revert current changes to collision matrix.
Definition: default_collisions_widget.cpp:630
moveit_setup_assistant::DefaultCollisionsWidget::page_title_
QLabel * page_title_
Definition: default_collisions_widget.h:166
moveit_setup_assistant::DefaultCollisionsWidget::collision_table_
QTableView * collision_table_
Definition: default_collisions_widget.h:167
moveit_setup_assistant::DefaultCollisionsWidget::worker_
MonitorThread * worker_
Definition: default_collisions_widget.h:192
moveit_setup_assistant::MonitorThread::canceled
bool canceled() const
Definition: default_collisions_widget.h:244
moveit_setup_assistant::DefaultCollisionsWidget::showSections
void showSections()
Definition: default_collisions_widget.cpp:550
moveit_setup_assistant::MonitorThread::worker_
boost::thread worker_
Definition: default_collisions_widget.h:253
moveit_setup_assistant::DefaultCollisionsWidget::MATRIX_MODE
@ MATRIX_MODE
Definition: default_collisions_widget.h:81
moveit_setup_assistant::DefaultCollisionsWidget::model_
QAbstractItemModel * model_
Definition: default_collisions_widget.h:168
moveit_setup_assistant::DefaultCollisionsWidget::previewSelectedMatrix
void previewSelectedMatrix(const QModelIndex &index)
Called when current row has changed.
Definition: default_collisions_widget.cpp:765
SetupScreenWidget
Definition: setup_screen_widget.h:44
moveit_setup_assistant::DefaultCollisionsWidget::interruptGeneratingCollisionTable
void interruptGeneratingCollisionTable()
interrupt generating collision matrix
Definition: default_collisions_widget.cpp:293
moveit_setup_assistant::DefaultCollisionsWidget
User interface for editing the default collision matrix list in an SRDF.
Definition: default_collisions_widget.h:74
moveit_setup_assistant::DefaultCollisionsWidget::clicked_section_
int clicked_section_
Definition: default_collisions_widget.h:187
moveit_setup_assistant::DefaultCollisionsWidget::config_data_
moveit_setup_assistant::MoveItConfigDataPtr config_data_
Contains all the configuration data for the setup assistant.
Definition: default_collisions_widget.h:195
moveit_setup_assistant
Definition: compute_default_collisions.h:46
moveit_setup_assistant::DefaultCollisionsWidget::showHeaderContextMenu
void showHeaderContextMenu(const QPoint &p)
Definition: default_collisions_widget.cpp:474
moveit_setup_assistant::DefaultCollisionsWidget::sample_slider_
QSlider * sample_slider_
Definition: default_collisions_widget.h:172
moveit_setup_assistant::MonitorThread::cancel
void cancel()
Definition: default_collisions_widget.h:240
moveit_setup_assistant::DefaultCollisionsWidget::layout_
QVBoxLayout * layout_
Definition: default_collisions_widget.h:170
moveit_setup_assistant::MonitorThread::canceled_
bool canceled_
Definition: default_collisions_widget.h:255
moveit_setup_assistant::DefaultCollisionsWidget::progress_label_
QLabel * progress_label_
Definition: default_collisions_widget.h:177
moveit_setup_assistant::DefaultCollisionsWidget::wip_srdf_
srdf::SRDFWriterPtr wip_srdf_
Working copy of SRDF config.
Definition: default_collisions_widget.h:197
f
f
moveit_setup_assistant::DefaultCollisionsWidget::hideSections
void hideSections()
Definition: default_collisions_widget.cpp:531
moveit_setup_assistant::DefaultCollisionsWidget::previewSelectedLinear
void previewSelectedLinear(const QModelIndex &index)
Definition: default_collisions_widget.cpp:791
moveit_setup_assistant::DefaultCollisionsWidget::collisionsChanged
void collisionsChanged(const QModelIndex &index)
Collision model changed.
Definition: default_collisions_widget.cpp:454
moveit_setup_assistant::DefaultCollisionsWidget::focusLost
bool focusLost() override
Called when setup assistant navigation switches away from this screen.
Definition: default_collisions_widget.cpp:825
moveit_setup_assistant::DefaultCollisionsWidget::startGeneratingCollisionTable
void startGeneratingCollisionTable()
start generating collision matrix in a worker thread
Definition: default_collisions_widget.cpp:278
setup_screen_widget.h
moveit_setup_assistant::DefaultCollisionsWidget::ViewMode
ViewMode
Definition: default_collisions_widget.h:79
moveit_setup_assistant::DefaultCollisionsWidget::btn_revert_
QPushButton * btn_revert_
Definition: default_collisions_widget.h:182
moveit_setup_assistant::DefaultCollisionsWidget::progress_bar_
QProgressBar * progress_bar_
Definition: default_collisions_widget.h:175
moveit_setup_assistant::DefaultCollisionsWidget::eventFilter
bool eventFilter(QObject *object, QEvent *event) override
Definition: default_collisions_widget.cpp:637
moveit_setup_assistant::DefaultCollisionsWidget::controls_box_
QGroupBox * controls_box_
Definition: default_collisions_widget.h:174
moveit_setup_assistant::DefaultCollisionsWidget::fraction_spinbox_
QSpinBox * fraction_spinbox_
Definition: default_collisions_widget.h:181
moveit_setup_assistant::DefaultCollisionsWidget::checkedFilterChanged
void checkedFilterChanged()
Change filter settings to show/hide enabled collisions.
Definition: default_collisions_widget.cpp:756
srdf::SRDFWriterPtr
std::shared_ptr< SRDFWriter > SRDFWriterPtr


moveit_setup_assistant
Author(s): Dave Coleman
autogenerated on Sat May 3 2025 02:28:04