41 #include <QApplication>
43 #include <QFormLayout>
47 #include <QVBoxLayout>
58 QVBoxLayout* layout =
new QVBoxLayout();
59 layout->setAlignment(Qt::AlignTop);
64 new HeaderWidget(
"Setup 3D Perception Sensors",
65 "Configure your 3D sensors to work with MoveIt "
67 "href='http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/perception_pipeline/"
68 "perception_pipeline_tutorial.html'>Perception Documentation</a> "
71 layout->addWidget(header);
74 QSpacerItem* blank_space =
new QSpacerItem(1, 8);
75 layout->addSpacerItem(blank_space);
78 QLabel* plugin_field_title =
new QLabel(
this);
79 plugin_field_title->setText(
"Optionally choose a type of 3D sensor plugin to configure:");
80 layout->addWidget(plugin_field_title);
82 sensor_plugin_field_ =
new QComboBox(
this);
83 sensor_plugin_field_->setEditable(
false);
84 sensor_plugin_field_->setMaximumWidth(600);
85 connect(sensor_plugin_field_, SIGNAL(currentIndexChanged(
int)),
this, SLOT(sensorPluginChanged(
int)));
86 layout->addWidget(sensor_plugin_field_);
89 point_cloud_group_ =
new QGroupBox(
"Point Cloud");
91 QFormLayout* point_cloud_form_layout =
new QFormLayout();
92 point_cloud_form_layout->setContentsMargins(0, 15, 0, 15);
95 point_cloud_topic_field_ =
new QLineEdit(
this);
96 point_cloud_topic_field_->setMaximumWidth(400);
97 point_cloud_form_layout->addRow(
"Point Cloud Topic:", point_cloud_topic_field_);
100 max_range_field_ =
new QLineEdit(
this);
101 max_range_field_->setMaximumWidth(400);
102 point_cloud_form_layout->addRow(
"Max Range:", max_range_field_);
105 point_subsample_field_ =
new QLineEdit(
this);
106 point_subsample_field_->setMaximumWidth(400);
107 point_cloud_form_layout->addRow(
"Point Subsample:", point_subsample_field_);
110 padding_offset_field_ =
new QLineEdit(
this);
111 padding_offset_field_->setMaximumWidth(400);
112 point_cloud_form_layout->addRow(
"Padding Offset:", padding_offset_field_);
115 padding_scale_field_ =
new QLineEdit(
this);
116 padding_scale_field_->setMaximumWidth(400);
117 point_cloud_form_layout->addRow(
"Padding Scale:", padding_scale_field_);
120 filtered_cloud_topic_field_ =
new QLineEdit(
this);
121 filtered_cloud_topic_field_->setMaximumWidth(400);
122 point_cloud_form_layout->addRow(
"Filtered Cloud Topic:", filtered_cloud_topic_field_);
125 max_update_rate_field_ =
new QLineEdit(
this);
126 max_update_rate_field_->setMaximumWidth(400);
127 point_cloud_form_layout->addRow(
"Max Update Rate:", max_update_rate_field_);
130 point_cloud_group_->setLayout(point_cloud_form_layout);
131 layout->addWidget(point_cloud_group_);
134 depth_map_group_ =
new QGroupBox(
"Depth Map");
137 QFormLayout* depth_map_form_layout =
new QFormLayout();
138 depth_map_form_layout->setContentsMargins(0, 15, 0, 15);
141 image_topic_field_ =
new QLineEdit(
this);
142 image_topic_field_->setMaximumWidth(400);
143 depth_map_form_layout->addRow(
"Image Topic:", image_topic_field_);
146 queue_size_field_ =
new QLineEdit(
this);
147 queue_size_field_->setMaximumWidth(400);
148 depth_map_form_layout->addRow(
"Queue Size:", queue_size_field_);
151 near_clipping_field_ =
new QLineEdit(
this);
152 near_clipping_field_->setMaximumWidth(400);
153 depth_map_form_layout->addRow(
"Near Clipping Plane Distance:", near_clipping_field_);
156 far_clipping_field_ =
new QLineEdit(
this);
157 far_clipping_field_->setMaximumWidth(400);
158 depth_map_form_layout->addRow(
"Far Clipping Plane Distance:", far_clipping_field_);
161 shadow_threshold_field_ =
new QLineEdit(
this);
162 shadow_threshold_field_->setMaximumWidth(400);
163 depth_map_form_layout->addRow(
"Shadow Threshold:", shadow_threshold_field_);
166 depth_padding_offset_field_ =
new QLineEdit(
this);
167 depth_padding_offset_field_->setMaximumWidth(400);
168 depth_map_form_layout->addRow(
"Padding Offset:", depth_padding_offset_field_);
171 depth_padding_scale_field_ =
new QLineEdit(
this);
172 depth_padding_scale_field_->setMaximumWidth(400);
173 depth_map_form_layout->addRow(
"Padding Scale:", depth_padding_scale_field_);
176 depth_filtered_cloud_topic_field_ =
new QLineEdit(
this);
177 depth_filtered_cloud_topic_field_->setMaximumWidth(400);
178 depth_map_form_layout->addRow(
"Filtered Cloud Topic:", depth_filtered_cloud_topic_field_);
181 depth_max_update_rate_field_ =
new QLineEdit(
this);
182 depth_max_update_rate_field_->setMaximumWidth(400);
183 depth_map_form_layout->addRow(
"Max Update Rate:", depth_max_update_rate_field_);
185 depth_map_group_->setLayout(depth_map_form_layout);
186 layout->addWidget(depth_map_group_);
188 layout->setAlignment(Qt::AlignTop);
191 this->setLayout(layout);
213 config_data_->addGenericParameterToSensorPluginConfig(
"sensor_plugin",
"occupancy_map_monitor/"
214 "PointCloudOctomapUpdater");
215 config_data_->addGenericParameterToSensorPluginConfig(
"point_cloud_topic",
218 config_data_->addGenericParameterToSensorPluginConfig(
"point_subsample",
220 config_data_->addGenericParameterToSensorPluginConfig(
"padding_offset",
222 config_data_->addGenericParameterToSensorPluginConfig(
"padding_scale",
224 config_data_->addGenericParameterToSensorPluginConfig(
"max_update_rate",
226 config_data_->addGenericParameterToSensorPluginConfig(
"filtered_cloud_topic",
236 config_data_->addGenericParameterToSensorPluginConfig(
"sensor_plugin",
"occupancy_map_monitor/"
237 "DepthImageOctomapUpdater");
238 config_data_->addGenericParameterToSensorPluginConfig(
"image_topic",
240 config_data_->addGenericParameterToSensorPluginConfig(
"queue_size",
242 config_data_->addGenericParameterToSensorPluginConfig(
"near_clipping_plane_distance",
244 config_data_->addGenericParameterToSensorPluginConfig(
"far_clipping_plane_distance",
246 config_data_->addGenericParameterToSensorPluginConfig(
"shadow_threshold",
248 config_data_->addGenericParameterToSensorPluginConfig(
"padding_scale",
250 config_data_->addGenericParameterToSensorPluginConfig(
"padding_offset",
254 config_data_->addGenericParameterToSensorPluginConfig(
"max_update_rate",
292 if (sensor_plugin_config[
"sensor_plugin"].getValue() ==
"occupancy_map_monitor/PointCloudOctomapUpdater")
295 max_range_field_->setText(QString(sensor_plugin_config[
"max_range"].getValue().c_str()));
298 padding_scale_field_->setText(QString(sensor_plugin_config[
"padding_scale"].getValue().c_str()));
303 else if (sensor_plugin_config[
"sensor_plugin"].getValue() ==
"occupancy_map_monitor/DepthImageOctomapUpdater")
305 image_topic_field_->setText(QString(sensor_plugin_config[
"image_topic"].getValue().c_str()));
306 queue_size_field_->setText(QString(sensor_plugin_config[
"queue_size"].getValue().c_str()));
307 near_clipping_field_->setText(QString(sensor_plugin_config[
"near_clipping_plane_distance"].getValue().c_str()));
308 far_clipping_field_->setText(QString(sensor_plugin_config[
"far_clipping_plane_distance"].getValue().c_str()));
322 static bool has_loaded =
false;
337 config_data_->setup_assistant_path_ +
"/templates/moveit_config_pkg_template/config/sensors_3d.yaml");
338 for (
const auto& sensor_plugin_config : default_config)
343 for (
const auto& sensor_plugin_config :
config_data_->getSensorPluginConfig())