se2ez
planpanel.h
Go to the documentation of this file.
1 /* Author: Constantinos Chamzas, Zachary Kingston */
2 
3 #ifndef SE2EZ_GUI_PLANPANEL_
4 #define SE2EZ_GUI_PLANPANEL_
5 
6 #include <thread>
7 
8 #include <QPainter>
9 #include <QPropertyAnimation>
10 
11 #include <ompl/base/PlannerData.h>
12 
14 
15 #include <se2ez/plan/constraint.h>
16 
17 #include <se2ez/gui/panel.h>
18 
19 namespace Ui
20 {
21  class PlanPanel;
22 }
23 
24 namespace se2ez
25 {
26  /** \cond IGNORE */
27  SE2EZ_CLASS_FORWARD(Robot)
28  SE2EZ_CLASS_FORWARD(State)
29  /** \endcond */
30 
31  namespace plan
32  {
33  /** \cond IGNORE */
35  /** \endcond */
36  } // namespace plan
37 
38  namespace gui
39  {
40  /** \cond IGNORE */
41  SE2EZ_CLASS_FORWARD(RenderArea)
42  /** \endcond */
43 
44  class PlanPanel : public Panel
45  {
46  Q_OBJECT
47 
48  public:
49  PlanPanel(RobotPtr robot, std::string name,
50  std::map<std::string, ompl::base::ConstraintPtr> constraints = {}, QWidget *parent = 0);
51  ~PlanPanel() override;
52 
53  void draw(QPainter &painter, RenderArea *canvas) override;
54  void update(boost::posix_time::ptime last, boost::posix_time::ptime current) override;
55 
56  void setPath(const std::vector<StatePtr> path);
57  const std::vector<StatePtr> &getPath() const;
58  ompl::base::PlannerDataPtr getPlannerData();
59 
60  public slots:
61  void updateState();
62 
63  private slots:
64  void setState(int index);
65  void plannerChanged(const QString &text);
66  void animate(int state);
67  void animateTime();
68  void plan();
69  void setConstraints(const QString &text);
70  void setEE(const QString &text);
71 
72  signals:
73  void stateChanged();
74  void newPlan();
75 
76  private:
77  void pauseAnimation();
78  void startAnimation();
79 
80  StatePtr getState(const QString &s);
81 
82  Ui::PlanPanel *ui_;
83 
84  QPropertyAnimation anim_;
85 
86  RobotPtr robot_{nullptr};
87  StatePtr pstate_{nullptr};
89 
91  ompl::base::PlannerDataPtr pd_{nullptr};
92 
93  plan::EZPlansPtr planner_;
94  // std::map<std::string, std::string> params_;
95  ompl::base::ParamSet set_;
96 
97  std::thread *planning_{nullptr};
101 
105 
107  };
108  } // namespace gui
109 } // namespace se2ez
110 
111 #endif // PLANPANEL_H
std::vector< StatePtr > path_
Definition: planpanel.h:88
plan::EZPlansPtr planner_
Definition: planpanel.h:93
A shared pointer wrapper for se2ez::State.
std::string ee_
Definition: planpanel.h:90
Definition: cspacepanel.h:22
std::set< std::string > jnames_
Definition: planpanel.h:103
std::set< std::string > panelnames_
Definition: planpanel.h:104
Ui::PlanPanel * ui_
Definition: planpanel.h:82
QPropertyAnimation anim_
Definition: planpanel.h:84
std::mutex planmutex_
Definition: planpanel.h:100
std::map< std::string, ompl::base::ConstraintPtr > constraints_
Definition: planpanel.h:106
ompl::base::ParamSet set_
Definition: planpanel.h:95
std::mutex pdmutex_
Definition: planpanel.h:99
std::mutex pathmutex_
Definition: planpanel.h:98
A shared pointer wrapper for se2ez::Robot.
The canvas widget. It contains all the drawing functions as well as all the general settings for draw...
Definition: renderarea.h:48
Main namespace.
Definition: collision.h:11
#define SE2EZ_CLASS_FORWARD(C)
Definition: class_forward.h:9
std::set< std::string > snames_
Definition: planpanel.h:102