Skip to content

Commit 7023795

Browse files
committed
Show current configuration in configuration space view
1 parent 34d147f commit 7023795

File tree

4 files changed

+34
-6
lines changed

4 files changed

+34
-6
lines changed

demos/rlPlanDemo/ConfigurationModel.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ ConfigurationModel::setData(const QModelIndex& index, const QVariant& value, int
151151
(*MainWindow::instance()->q)(index.row()) = value.value<rl::math::Real>();
152152
}
153153

154-
MainWindow::instance()->viewer->drawConfiguration(*MainWindow::instance()->q);
154+
MainWindow::instance()->thread->drawConfiguration(*MainWindow::instance()->q);
155155

156156
emit dataChanged(index, index);
157157

demos/rlPlanDemo/ConfigurationSpaceScene.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ ConfigurationSpaceScene::ConfigurationSpaceScene(QObject* parent) :
4444
range(),
4545
steps(),
4646
collisions(nullptr),
47+
configuration(nullptr),
4748
edges(nullptr),
4849
path(nullptr),
4950
scene(nullptr),
@@ -63,6 +64,11 @@ ConfigurationSpaceScene::ConfigurationSpaceScene(QObject* parent) :
6364
this->collisions = this->createItemGroup(QList<QGraphicsItem*>());
6465
this->collisions->setZValue(1);
6566

67+
this->configuration = this->addEllipse(-3, -3, 6, 6, QPen(Qt::NoPen), QBrush((QColor(247, 127, 7))));
68+
this->configuration->setFlag(QGraphicsItem::ItemIgnoresTransformations);
69+
this->configuration->setVisible(false);
70+
this->configuration->setZValue(4);
71+
6672
this->edges = this->createItemGroup(QList<QGraphicsItem*>());
6773
this->edges->setZValue(2);
6874

@@ -111,6 +117,10 @@ ConfigurationSpaceScene::clear()
111117
void
112118
ConfigurationSpaceScene::drawConfiguration(const rl::math::Vector& q)
113119
{
120+
this->configuration->setPos(
121+
q(this->axis[0]),
122+
-q(this->axis[1])
123+
);
114124
}
115125

116126
void
@@ -240,6 +250,11 @@ ConfigurationSpaceScene::init()
240250
this->steps[0] = static_cast<int>(std::ceil(this->range[0] / this->delta[0]));
241251
this->steps[1] = static_cast<int>(std::ceil(this->range[1] / this->delta[1]));
242252

253+
this->configuration->setPos(
254+
(*MainWindow::instance()->q)(this->axis[0]),
255+
-(*MainWindow::instance()->q)(this->axis[1])
256+
);
257+
243258
this->scene->setRect(
244259
this->minimum[0],
245260
-this->maximum[1],
@@ -286,6 +301,7 @@ ConfigurationSpaceScene::mousePressEvent(QGraphicsSceneMouseEvent* mouseEvent)
286301
}
287302

288303
MainWindow::instance()->configurationModel->invalidate();
304+
this->drawConfiguration(*MainWindow::instance()->q);
289305
MainWindow::instance()->viewer->drawConfiguration(*MainWindow::instance()->q);
290306
}
291307
}
@@ -349,6 +365,12 @@ ConfigurationSpaceScene::toggleCollisions(const bool& doOn)
349365
this->collisions->setVisible(doOn);
350366
}
351367

368+
void
369+
ConfigurationSpaceScene::toggleConfiguration(const bool& doOn)
370+
{
371+
this->configuration->setVisible(doOn);
372+
}
373+
352374
void
353375
ConfigurationSpaceScene::toggleConfigurationEdges(const bool& doOn)
354376
{

demos/rlPlanDemo/ConfigurationSpaceScene.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ public slots:
111111

112112
void toggleCollisions(const bool& doOn);
113113

114+
void toggleConfiguration(const bool& doOn);
115+
114116
void toggleConfigurationEdges(const bool& doOn);
115117

116118
void togglePathEdges(const bool& doOn);
@@ -123,6 +125,8 @@ public slots:
123125
private:
124126
QGraphicsItemGroup* collisions;
125127

128+
QGraphicsEllipseItem* configuration;
129+
126130
QGraphicsItemGroup* edges;
127131

128132
QGraphicsPathItem* path;

demos/rlPlanDemo/MainWindow.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,7 @@ MainWindow::getGoalConfiguration()
523523
{
524524
*this->q = *this->goal;
525525
this->configurationModel->invalidate();
526-
this->viewer->drawConfiguration(*this->q);
526+
this->thread->drawConfiguration(*this->q);
527527
this->statusBar()->showMessage("Showing goal configuration.", 1000);
528528
}
529529

@@ -532,7 +532,7 @@ MainWindow::getRandomConfiguration()
532532
{
533533
*this->q = this->sampler2->generate();
534534
this->configurationModel->invalidate();
535-
this->viewer->drawConfiguration(*this->q);
535+
this->thread->drawConfiguration(*this->q);
536536
this->statusBar()->showMessage("Showing random configuration.", 1000);
537537
}
538538

@@ -541,7 +541,7 @@ MainWindow::getRandomFreeConfiguration()
541541
{
542542
*this->q = this->sampler2->generateCollisionFree();
543543
this->configurationModel->invalidate();
544-
this->viewer->drawConfiguration(*this->q);
544+
this->thread->drawConfiguration(*this->q);
545545
this->statusBar()->showMessage("Showing random collision-free configuration.", 1000);
546546
}
547547

@@ -550,7 +550,7 @@ MainWindow::getStartConfiguration()
550550
{
551551
*this->q = *this->start;
552552
this->configurationModel->invalidate();
553-
this->viewer->drawConfiguration(*this->q);
553+
this->thread->drawConfiguration(*this->q);
554554
this->statusBar()->showMessage("Showing start configuration.", 1000);
555555
}
556556

@@ -2075,7 +2075,7 @@ MainWindow::load(const QString& filename)
20752075
path.eval("number((/rl/plan|/rlplan)//viewer/camera/scale)").getValue<rl::math::Real>(1)
20762076
);
20772077

2078-
this->viewer->drawConfiguration(*this->start);
2078+
this->thread->drawConfiguration(*this->start);
20792079

20802080
this->configurationModel->invalidate();
20812081
this->configurationSpaceModel->invalidate();
@@ -2521,6 +2521,8 @@ MainWindow::toggleConfigurationSpaceActive(const bool& doOn)
25212521
{
25222522
this->disconnect(this->thread, this->configurationSpaceScene);
25232523
}
2524+
2525+
this->configurationSpaceScene->toggleConfiguration(doOn);
25242526
}
25252527

25262528
void

0 commit comments

Comments
 (0)