ugv_nav4d
PlannerGui.h
Go to the documentation of this file.
1#pragma once
2#include <QObject>
3#include <QWidget>
4#include <atomic>
5
6#ifndef Q_MOC_RUN
7#include <vizkit3d/SubTrajectoryVisualization.hpp>
8#include <vizkit3d/MLSMapVisualization.hpp>
9#include <vizkit3d/TravMap3dVisualization.hpp>
10#include <vizkit3d/GridVisualization.hpp>
11#include <vizkit3d/SbplSplineVisualization.hpp>
12#include <vizkit3d/RigidBodyStateVisualization.hpp>
13#include <maps/grid/MLSMap.hpp>
14#include <base/Eigen.hpp>
15#include <ugv_nav4d/Planner.hpp>
16#include <traversability_generator3d/TraversabilityConfig.hpp>
17#include <traversability_generator3d/TraversabilityGenerator3d.hpp>
18#include <trajectory_follower/SubTrajectory.hpp>
19#endif
20
21class QDoubleSpinBox;
22class QSpinBox;
23class QSlider;
24class QPushButton;
25class QComboBox;
26class QProgressBar;
27
28namespace vizkit3d {
29 class Vizkit3DWidget;
30}
31
32class PlannerGui : public QObject
33{
34 Q_OBJECT;
35
36 void setupPlanner(int argc, char** argv);
37 void setupUI();
38
39public:
40 PlannerGui(int argc, char** argv);
41 PlannerGui(const std::string &dumpName);
42
43 void show();
44public slots:
46 void picked(float x, float y,float z, int buttonMask, int modifierMask);
47
48 //display the planner results
49 void plannerIsDone();
50
52 void plan(const base::Pose& start, const base::Pose& goal);
53
54signals:
55 //is emitted if the planner thread is done
57
58private slots:
59 void maxSlopeEditingFinished();
60 void inclineLimittingLimitSpinBoxEditingFinished();
61 void inclineLimittingMinSlopeSpinBoxEditingFinished();
62 void slopeMetricScaleSpinBoxEditingFinished();
63 void startOrientationChanged(int newValue);
64 void goalOrientationChanged(int newValue);
65 void timeEditingFinished();
66 void replanButtonReleased();
67 void dumpPressed();
68 void slopeMetricComboBoxIndexChanged(int index);
69 void numThreadsValueChanged(int newValue);
70 void obstacleDistanceSpinBoxEditingFinished();
71 void obstacleFactorSpinBoxEditingFinished();
72
73private:
74 void loadMls();
75 void loadMls(const std::string& path);
76 void startPlanThread();
77
78private:
79
80 std::atomic<bool> inplanningphase{false}; // Atomic for thread-safe flag
81 vizkit3d::Vizkit3DWidget* widget;
82 QDoubleSpinBox* maxSlopeSpinBox;
83 QDoubleSpinBox* slopeMetricScaleSpinBox;
84 QDoubleSpinBox* time;
85 QDoubleSpinBox* inclineLimittingMinSlopeSpinBox;
86 QDoubleSpinBox* inclineLimittingLimitSpinBox;
87 QSlider* startOrientatationSlider;
88 QSlider* goalOrientationSlider;
89 QDoubleSpinBox* obstacleDistanceSpinBox;
90 QDoubleSpinBox* obstacleFactorSpinBox;
91 QComboBox* slopeMetricComboBox;
92 QComboBox* heuristicComboBox;
93 QSpinBox* numThreadsSpinBox;
94 QProgressBar* bar;
95 QWidget window;
96 vizkit3d::SbplSplineVisualization splineViz;
97 vizkit3d::SubTrajectoryVisualization trajViz;
98 vizkit3d::SubTrajectoryVisualization trajViz2;
99 vizkit3d::MLSMapVisualization mlsViz;
100 vizkit3d::TravMap3dVisualization trav3dViz;
101 vizkit3d::RigidBodyStateVisualization startViz;
102 vizkit3d::RigidBodyStateVisualization goalViz;
103 vizkit3d::GridVisualization gridViz;
104 maps::grid::MLSMapSloped mlsMap;
105 base::Pose start;
106 base::Pose goal;
107 bool pickStart = true;
108 bool startPicked = false;
109 bool goalPicked = false;
110 bool threadRunning = false;
111 bool usingPlannerDump = false;
112 sbpl_spline_primitives::SplinePrimitivesConfig splineConfig;
113 ugv_nav4d::Mobility mobilityConfig;
114 traversability_generator3d::TraversabilityConfig travConfig;
115 ugv_nav4d::PlannerConfig plannerConfig;
116 std::shared_ptr<ugv_nav4d::Planner> planner; //is pointer cause of lazy init
117 std::vector<trajectory_follower::SubTrajectory> path;
118 std::vector<trajectory_follower::SubTrajectory> beautifiedPath;
119 std::shared_ptr<traversability_generator3d::TraversabilityGenerator3d> travGen;
120};
Definition PlannerGui.h:33
void show()
Definition PlannerGui.cpp:493
void plannerDone()
void plannerIsDone()
Definition PlannerGui.cpp:622
void plan(const base::Pose &start, const base::Pose &goal)
Definition PlannerGui.cpp:657
void picked(float x, float y, float z, int buttonMask, int modifierMask)
Definition PlannerGui.cpp:451
Definition PlannerGui.h:28
Definition Mobility.hpp:12
Definition PlannerConfig.hpp:8