Bench-MR
A Motion Planning Benchmark for Wheeled Mobile Robots
QtVisualizer.h
Go to the documentation of this file.
1#pragma once
2
3#include <QApplication>
4#include <QGraphicsView>
5#include <QtWidgets/QMainWindow>
6#include <utility>
7
8#include "base/Primitives.h"
9
11 std::string label;
12 QPen pen;
13
14 explicit LegendEntry(const std::string &label = "Unknown",
15 const QPen &pen = QPen(Qt::black))
16 : label(label), pen(pen) {}
17};
18
19class Environment;
20class GNode;
21
22class VisualizationView : public QGraphicsView {
23 Q_OBJECT
24 public:
25 explicit VisualizationView(QGraphicsScene *scene, QWidget *parent = nullptr);
26
27 ~VisualizationView() override;
28
29 public slots:
30 void showContextMenu(const QPoint &pos);
31 void saveSvg();
32 void savePng();
33
34 protected:
35 void wheelEvent(QWheelEvent *event) override;
36
37 private:
38 float _numScheduledScalings;
39 QGraphicsScene *_scene;
40};
41
43 public:
44 static void initialize();
45 static int exec();
46 static void show() {
47 // QtVisualizer::drawLegend();
48 _window->showMaximized();
49 }
50
51 static void visualize(Environment *environment, int run,
52 bool renderDistances = false);
53
54 static void drawNode(const ompl::base::State *state,
55 const QColor &color = Qt::red, double radius = 0.3,
56 bool drawArrow = true);
57 static void drawNode(const Point &point, const QColor &color = Qt::red,
58 double radius = 0.3);
59 static void drawNode(double x, double y, const QColor &color = Qt::red,
60 double radius = 0.3);
61 static void drawNode(double x, double y, double theta, const QColor &color,
62 double radius, bool drawArrow);
63
64 static void drawTrajectory(const ompl::geometric::PathGeometric &path,
65 const QColor &color = Qt::white,
66 float penWidth = 1.f,
67 Qt::PenStyle penStyle = Qt::PenStyle::SolidLine);
68 static void drawTrajectory(const ompl::base::State *a,
69 const ompl::base::State *b,
70 const QColor &color = Qt::white,
71 float penWidth = 1.f,
72 Qt::PenStyle penStyle = Qt::PenStyle::SolidLine);
73 static void drawPath(const ompl::geometric::PathGeometric &path,
74 const QColor &color = Qt::white, float penWidth = 1.f,
75 Qt::PenStyle penStyle = Qt::PenStyle::SolidLine);
76 static void drawPath(const std::vector<Point> &nodes,
77 const QColor &color = Qt::white, float penWidth = 1.f,
78 Qt::PenStyle penStyle = Qt::PenStyle::SolidLine);
79 static void drawPath(const std::vector<Point> &nodes, QPen pen);
80 static void drawNodes(ompl::geometric::PathGeometric path,
81 bool drawArrows = false, const QColor &color = Qt::red,
82 double radius = 0.3);
83 static void drawNodes(const std::vector<Point> &nodes,
84 const QColor &color = Qt::red, double radius = 0.3);
85
86 static void drawLabel(const std::string &text, double x, double y,
87 const QColor &color = Qt::black, float size = 1.f);
88
89 static void addLegendEntry(LegendEntry entry);
90
91 static void drawLegend();
92
93 static void showStartGoal(bool show = true);
94
95 static void savePng(const QString &fileName);
96 static void saveSvg(const QString &fileName);
97
98 static void saveScene();
99 static void restoreScene();
100
101 virtual ~QtVisualizer();
102
103 private:
104 QtVisualizer() = default;
105
106 static VisualizationView *_view;
107 static QApplication *_app;
108 static QMainWindow *_window;
109 static QGraphicsScene *_scene;
110
111 static std::vector<LegendEntry> _legend;
112
113 static bool _showStartGoal;
114
115 static std::list<QGraphicsItem *> _storedItems;
116};
ob::SE2StateSpace::StateType State
Definition: Primitives.h:12
Definition: Environment.h:8
Definition: gnode.h:12
Definition: QtVisualizer.h:42
static void visualize(Environment *environment, int run, bool renderDistances=false)
Definition: QtVisualizer.cpp:62
static void drawPath(const ompl::geometric::PathGeometric &path, const QColor &color=Qt::white, float penWidth=1.f, Qt::PenStyle penStyle=Qt::PenStyle::SolidLine)
Definition: QtVisualizer.cpp:203
static void showStartGoal(bool show=true)
Definition: QtVisualizer.cpp:308
static void drawTrajectory(const ompl::geometric::PathGeometric &path, const QColor &color=Qt::white, float penWidth=1.f, Qt::PenStyle penStyle=Qt::PenStyle::SolidLine)
Definition: QtVisualizer.cpp:189
static void saveSvg(const QString &fileName)
Definition: QtVisualizer.cpp:331
virtual ~QtVisualizer()
Definition: QtVisualizer.cpp:53
static void drawNodes(ompl::geometric::PathGeometric path, bool drawArrows=false, const QColor &color=Qt::red, double radius=0.3)
Definition: QtVisualizer.cpp:248
static void saveScene()
Definition: QtVisualizer.cpp:357
static void addLegendEntry(LegendEntry entry)
Definition: QtVisualizer.cpp:270
static void drawLabel(const std::string &text, double x, double y, const QColor &color=Qt::black, float size=1.f)
Definition: QtVisualizer.cpp:255
static void drawNode(const ompl::base::State *state, const QColor &color=Qt::red, double radius=0.3, bool drawArrow=true)
Definition: QtVisualizer.cpp:147
static void savePng(const QString &fileName)
Definition: QtVisualizer.cpp:310
static void show()
Definition: QtVisualizer.h:46
static void drawLegend()
Definition: QtVisualizer.cpp:275
static int exec()
Definition: QtVisualizer.cpp:60
static void initialize()
Definition: QtVisualizer.cpp:33
static void restoreScene()
Definition: QtVisualizer.cpp:364
Definition: QtVisualizer.h:22
void saveSvg()
Definition: QtVisualizer.cpp:410
void savePng()
Definition: QtVisualizer.cpp:418
~VisualizationView() override
Definition: QtVisualizer.cpp:387
void showContextMenu(const QPoint &pos)
Definition: QtVisualizer.cpp:396
VisualizationView(QGraphicsScene *scene, QWidget *parent=nullptr)
Definition: QtVisualizer.cpp:378
void wheelEvent(QWheelEvent *event) override
Definition: QtVisualizer.cpp:389
Definition: QtVisualizer.h:10
std::string label
Definition: QtVisualizer.h:11
QPen pen
Definition: QtVisualizer.h:12
LegendEntry(const std::string &label="Unknown", const QPen &pen=QPen(Qt::black))
Definition: QtVisualizer.h:14
Definition: Primitives.h:42