26#include <VirtualRobot/XML/RobotIO.h>
35 ARMARX_INFO <<
"RobotTrajectoryDesigner: SettingController on init";
46 ARMARX_INFO <<
"RobotTrajectoryDesigner: SettingController on connect";
49 QObject::connect(guiSettingTab->getSettingTab()->robotSelectionButton,
52 SLOT(openRobotSelectionDialog()));
55 QObject::connect(guiSettingTab->getSettingTab()->shortcutButton,
58 SLOT(openShortcutDialog()));
61 QObject::connect(guiSettingTab->getSettingTab()->tcpComboBox,
62 SIGNAL(activated(
int)),
67 QObject::connect(guiSettingTab->getSettingTab()->newIKSolutionButton,
70 SLOT(newIKSolution()));
73 QObject::connect(guiSettingTab->getSettingTab()->collisionModelComboBox,
74 SIGNAL(activated(
int)),
76 SLOT(selectActiveCM(
int)));
79 QObject::connect(guiSettingTab->getSettingTab()->collisionModelList,
80 SIGNAL(itemChanged(QListWidgetItem*)),
82 SLOT(setCollisionModelList(QListWidgetItem*)));
85 QObject::connect(guiSettingTab->getSettingTab()->convertToMMMButton,
88 SLOT(convertToMMMSlot()));
91 QObject::connect(guiSettingTab->getSettingTab()->importButton,
94 SLOT(openImportDialog()));
100 ARMARX_INFO <<
"RobotTrajectoryDesigner: SettingController on disconnect";
106 ARMARX_INFO <<
"RobotTrajectoryDesigner: SettingController on exit";
118 return this->guiSettingTab;
124 if (guiSettingTab != NULL)
126 this->guiSettingTab = guiSettingTab;
131 SettingController::openRobotSelectionDialog()
137 SettingController::openShortcutDialog()
152 emit
changedTCP(this->guiSettingTab->getSettingTab()->tcpComboBox->currentText());
156 enableWidgets(
false);
163 QComboBox* combobox = guiSettingTab->getSettingTab()->tcpComboBox;
164 int index = combobox->findText(tcp);
169 combobox->setCurrentIndex(
index);
174 SettingController::selectActiveCM(
int index)
176 QListWidget* cmList = this->guiSettingTab->getSettingTab()->collisionModelList;
180 for (
int i = 0; i < cmList->count(); i++)
182 QListWidgetItem* item = cmList->item(i);
183 if (i == (
index - 1))
185 item->setFlags(item->flags() & ~Qt::ItemIsEnabled);
189 item->setFlags(item->flags() | Qt::ItemIsEnabled);
192 cmList->setEnabled(
true);
196 cmList->setEnabled(
false);
199 guiSettingTab->getSettingTab()->collisionModelComboBox->itemText(
index));
203 SettingController::setCollisionModelList(QListWidgetItem* item)
207 QComboBox* tcp = guiSettingTab->getSettingTab()->tcpComboBox;
208 QComboBox* cm = guiSettingTab->getSettingTab()->collisionModelComboBox;
211 if ((tcp->currentIndex() > 0) && (cm->currentIndex() > 0))
213 QListWidget* models = guiSettingTab->getSettingTab()->collisionModelList;
214 QStringList bodyCollisionModels;
217 for (
int i = 0; i < models->count(); i++)
219 if (models->item(i)->checkState() == Qt::Checked)
221 bodyCollisionModels.push_back(models->item(i)->text());
230 SettingController::exportTrajectorySlot()
236 SettingController::convertToMMMSlot()
242 SettingController::openImportDialog()
248 SettingController::setLanguage(
int index)
263 this->guiSettingTab->getSettingTab()->newIKSolutionButton->setEnabled(enable);
269 this->guiSettingTab->getSettingTab()->convertToMMMButton->setEnabled(enable);
276 this->guiSettingTab->getSettingTab()->collisionModelComboBox->setEnabled(enable);
277 this->guiSettingTab->getSettingTab()->collisionModelList->setEnabled(enable);
278 this->guiSettingTab->getSettingTab()->tcpComboBox->setEnabled(enable);
279 this->guiSettingTab->getSettingTab()->importButton->setEnabled(enable);
283 SettingController::newIKSolution()
287 VirtualRobot::RobotNodeSetPtr activeKinematicChain = robot->getRobotNodeSet(
288 guiSettingTab->getSettingTab()->tcpComboBox->currentText().toStdString());
289 std::vector<double> newJA =
290 kc->solveIK(activeKinematicChain,
291 PoseBasePtr(
new Pose(activeKinematicChain->getTCP()->getGlobalPose())),
292 VirtualRobot::IKSolver::CartesianSelection::All,
294 if (newJA.size() != 0)
296 activeKinematicChain->setJointValues(std::vector<float>(newJA.begin(), newJA.end()));
303 throw(
"not yet implemented");
309 guiSettingTab->getSettingTab()->robotSelectionButton->setEnabled(enable);
315 guiSettingTab->getSettingTab()->tcpComboBox->clear();
316 guiSettingTab->getSettingTab()->collisionModelComboBox->clear();
317 guiSettingTab->getSettingTab()->collisionModelList->clear();
318 this->environment = environment;
321 initTCPComboBox(robot);
322 initCMComboBox(robot);
330 SettingController::enableWidgets(
bool enable)
332 this->guiSettingTab->getSettingTab()->collisionModelComboBox->setEnabled(enable);
333 this->guiSettingTab->getSettingTab()->collisionModelList->setEnabled(enable);
341 QComboBox* tcpComboBox = this->guiSettingTab->getSettingTab()->tcpComboBox;
344 tcpComboBox->setFocusPolicy(Qt::StrongFocus);
345 tcpComboBox->installEventFilter(
new WheelEventFilter(
this));
349 tcpComboBox->clear();
352 tcpComboBox->insertItem(0, QString::fromStdString(
"- select -"));
354 auto robotNodeSets = robot->getRobotNodeSets();
357 for (VirtualRobot::RobotNodeSetPtr s : robotNodeSets)
359 if ((s->isKinematicChain()) && (s->getTCP() != NULL))
361 ARMARX_DEBUG <<
"Add item " << s->getName() <<
" to tcp combo box";
362 tcpComboBox->addItem(QString::fromStdString(s->getName()));
365 tcpComboBox->setEnabled(
true);
366 tcpComboBox->setCurrentIndex(0);
371 tcpComboBox->setEnabled(
false);
378 QComboBox* cmComboBox = this->guiSettingTab->getSettingTab()->collisionModelComboBox;
381 cmComboBox->setFocusPolicy(Qt::StrongFocus);
382 cmComboBox->installEventFilter(
new WheelEventFilter(
this));
389 cmComboBox->insertItem(0, QString::fromStdString(
"- select -"));
391 auto robotNodeSets = robot->getRobotNodeSets();
394 for (VirtualRobot::RobotNodeSetPtr s : robotNodeSets)
396 if (
s->isKinematicChain())
398 ARMARX_DEBUG <<
"Add item " <<
s->getName() <<
" to collision model combo box";
399 cmComboBox->addItem(QString::fromStdString(
s->getName()));
402 cmComboBox->setCurrentIndex(0);
407 cmComboBox->setEnabled(
false);
414 QListWidget* cmList = this->guiSettingTab->getSettingTab()->collisionModelList;
419 auto robotNodeSets = robot->getRobotNodeSets();
421 for (VirtualRobot::RobotNodeSetPtr s : robotNodeSets)
423 if (
s->isKinematicChain())
425 QListWidgetItem* item =
426 new QListWidgetItem(QString::fromStdString(
s->getName()));
427 item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
428 item->setCheckState(Qt::Unchecked);
429 ARMARX_DEBUG <<
"Add item " <<
s->getName() <<
" to collision model list";
430 cmList->addItem(item);
437 cmList->setEnabled(
false);
std::shared_ptr< SettingTab > SettingTabPtr
static std::shared_ptr< KinematicSolver > getInstance(VirtualRobot::ScenePtr scenario, VirtualRobot::RobotPtr robot)
SINGLETON-FEATURES///////////////////////////////////////////////////////////////////////////////////...
void environmentChanged(EnvironmentPtr environment)
Set the enviroment.
void onInitComponent() override
void setActiveColModelName(QString activeColModelName)
Sets the active collision model name.
void enableIKSolutionButton(bool enable)
Enables or disables the new IK solution button.
void enableImportTCPCollision(bool enable)
Enables or disables the import, tcp and collision buttons.
void retranslateGui()
Retranslates the guiSettingTab.
void changedTCP(QString tcp)
Notifies other controllers about a change of the current TCP.
void onDisconnectComponent() override
void enableExportButtons(bool enable)
Enables or disables the export buttons.
void openImport()
Notifies other controllers to open an import dialog.
void convertToMMM()
Notifies other controllers to convert all trajectories to MMM.
void exportTrajectory()
Notifies other controllers to export all trajectories to Trajectory.
SettingTabPtr getGuiSettingTab()
Getter for the SettingTab pointer to guiSettingTab.
void onConnectComponent() override
void enableSelectRobotButton(bool enable)
SettingController(SettingTabPtr guiSettingTab)
Creates a new SettingController and assigns a SettingTab to handle.
void setBodyColModelsNames(QStringList bodyColModelsNames)
Sets the body collision models names.
void setGuiSettingTab(SettingTabPtr guiSettingTab)
Setter for the SettingTab pointer to guiSettingTab.
void onExitComponent() override
void openRobotSelection()
Notifies other controllers to open a robot selection dialog.
void openShortcut()
Notifies other controllers to open a shortcut dialog.
void selectTCP(int index)
Changes the currently selected TCP.
#define ARMARX_INFO
The normal logging level.
#define ARMARX_DEBUG
The logging level for output that is only interesting while debugging.
std::shared_ptr< class Robot > RobotPtr
double s(double t, double s0, double v0, double a0, double j)
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::shared_ptr< KinematicSolver > KinematicSolverPtr
std::shared_ptr< Environment > EnvironmentPtr