43 #include <QFormLayout>
45 #include <QMessageBox>
46 #include <QTableWidget>
57 QVBoxLayout* layout =
new QVBoxLayout();
61 HeaderWidget*
header =
new HeaderWidget(
"Define Passive Joints",
62 "Specify the set of passive joints (not actuated). Joint "
63 "state is not expected to be published for these joints.",
65 layout->addWidget(header);
68 joints_widget_ =
new DoubleListWidget(
this, config_data_,
"Joint Collection",
"Joint",
false);
69 connect(joints_widget_, SIGNAL(selectionUpdated()),
this, SLOT(selectionUpdated()));
70 connect(joints_widget_, SIGNAL(previewSelected(std::vector<std::string>)),
this,
71 SLOT(previewSelectedJoints(std::vector<std::string>)));
74 joints_widget_->title_->setText(
"");
76 joints_widget_->setColumnNames(
"Active Joints",
"Passive Joints");
78 layout->addWidget(joints_widget_);
81 this->setLayout(layout);
92 const moveit::core::RobotModelConstPtr& model =
config_data_->getRobotModel();
95 const std::vector<std::string>& joints = model->getJointModelNames();
99 QMessageBox::critical(
this,
"Error Loading",
"No joints found for robot model");
102 std::vector<std::string> active_joints;
103 for (
const std::string& joint : joints)
104 if (model->getJointModel(joint)->getVariableCount() > 0)
105 active_joints.push_back(joint);
110 std::vector<std::string> passive_joints;
112 passive_joints.push_back(passive_joint.
name_);
139 for (
const std::string& joint : joints)