traj_info.cpp
Go to the documentation of this file.
2 
3 namespace ram_qt_guis
4 {
5 
6 TrajInfo::TrajInfo(QWidget* parent) :
7  rviz::Panel(parent)
8 {
9  setObjectName("Trajectory info");
10  setName(objectName());
11 
12  file_ = new QLabel;
13  file_->setWordWrap(true);
14  generated_ = new QLabel;
15  modified_ = new QLabel;
16  similar_layers_ = new QLabel;
17  number_of_layers_levels_ = new QLabel;
18  number_of_layers_indices_ = new QLabel;
19  number_of_polygons_ = new QLabel;
20  number_of_poses_ = new QLabel;
21  trajectory_length_ = new QLabel;
22  execution_time_ = new QLabel;
23  wire_length_ = new QLabel;
24  information_ = new QLabel;
25  information_->setWordWrap(true);
26 
27  QVBoxLayout *scroll_widget_layout = new QVBoxLayout();
28  QWidget *scroll_widget = new QWidget;
29  scroll_widget->setLayout(scroll_widget_layout);
30  QScrollArea *scroll_area = new QScrollArea;
31  scroll_area->setWidget(scroll_widget);
32  scroll_area->setWidgetResizable(true);
33  scroll_area->setFrameShape(QFrame::NoFrame);
34  QVBoxLayout* main_layout = new QVBoxLayout(this);
35  main_layout->addWidget(scroll_area);
36 
37  QGridLayout* grid_layout = new QGridLayout;
38  scroll_widget_layout->addLayout(grid_layout);
39 
40  grid_layout->addWidget(new QLabel("File:"), 0, 0);
41  grid_layout->addWidget(file_, 0, 1);
42 
43  grid_layout->addWidget(new QLabel("Generated at:"));
44  grid_layout->addWidget(generated_);
45 
46  grid_layout->addWidget(new QLabel("Modified at:"));
47  grid_layout->addWidget(modified_);
48 
49  grid_layout->addWidget(new QLabel("Similar layers:"));
50  grid_layout->addWidget(similar_layers_);
51 
52  grid_layout->addWidget(new QLabel("Number of layers levels:"));
53  grid_layout->addWidget(number_of_layers_levels_);
54 
55  grid_layout->addWidget(new QLabel("Number of layers indices:"));
56  grid_layout->addWidget(number_of_layers_indices_);
57 
58  grid_layout->addWidget(new QLabel("Number of polygons:"));
59  grid_layout->addWidget(number_of_polygons_);
60 
61  grid_layout->addWidget(new QLabel("Number of poses:"));
62  grid_layout->addWidget(number_of_poses_);
63 
64  grid_layout->addWidget(new QLabel("Trajectory length:"));
65  grid_layout->addWidget(trajectory_length_);
66 
67  grid_layout->addWidget(new QLabel("Execution time:"));
68  grid_layout->addWidget(execution_time_);
69 
70  grid_layout->addWidget(new QLabel("Wire length:"));
71  grid_layout->addWidget(wire_length_);
72 
73  grid_layout->addWidget(new QLabel("Information:"));
74  grid_layout->addWidget(information_);
75 
76  sub_ = nh_.subscribe("ram/information/trajectory", 1, &TrajInfo::callback, this);
77 
78  // Check if there is any publisher
79  QtConcurrent::run(this, &TrajInfo::checkForPublishers);
80 }
81 
83 {
84 }
85 
87 {
88  Q_EMIT setEnabled(false);
89  ros::Duration(0.5).sleep();
90 
91  while (nh_.ok())
92  {
93  if (sub_.getNumPublishers() != 0)
94  {
96  "RViz panel " << getName().toStdString() << " topic " << sub_.getTopic() << " has at least one publisher");
97  break;
98  }
99  else
100  {
102  "RViz panel " << getName().toStdString() << " topic " << sub_.getTopic() << " has zero publishers!");
103  ros::Duration(1).sleep();
104  }
105  }
106 
107  Q_EMIT setEnabled(true);
108 }
109 
110 void TrajInfo::callback(const ram_msgs::AdditiveManufacturingTrajectoryInfoConstPtr& msg)
111 {
112  std::lock_guard<std::recursive_mutex> lock(msg_mutex_);
113  msg_ = *msg;
114  Q_EMIT updateGUIFromParameters();
115 }
116 
118 {
119  std::lock_guard<std::recursive_mutex> lock(msg_mutex_);
120  file_->setText(QString::fromStdString(msg_.file));
121  QDateTime time;
122  time.setTime_t(uint(msg_.generated.toSec()));
123  generated_->setText(time.toString("dd/MM/yyyy - hh:mm:ss"));
124  time.setTime_t(uint(msg_.modified.toSec()));
125  modified_->setText(time.toString("dd/MM/yyyy - hh:mm:ss"));
126  similar_layers_->setText(msg_.similar_layers ? "Yes" : "No");
127  number_of_layers_levels_->setText(QString::number(msg_.number_of_layers_levels));
128  number_of_layers_indices_->setText(QString::number(msg_.number_of_layers_indices));
129  number_of_polygons_->setText(QString::number(msg_.number_of_polygons));
130  number_of_poses_->setText(QString::number(msg_.number_of_poses));
131  trajectory_length_->setText(QString::number(msg_.trajectory_length, 'f', 3) + " meters");
132  execution_time_->setText(QDateTime::fromMSecsSinceEpoch(msg_.execution_time * 1000.0).toUTC().toString("hh:mm:ss"));
133  wire_length_->setText(QString::number(msg_.wire_length, 'f', 1) + " meters");
134  information_->setText(QString::fromStdString(msg_.generation_info));
135 }
136 
137 void TrajInfo::load(const rviz::Config& config)
138 {
139  rviz::Panel::load(config);
140 }
141 
142 void TrajInfo::save(rviz::Config config) const
143  {
144  rviz::Panel::save(config);
145 }
146 
147 }
148 
void updateGUIFromParameters()
Definition: traj_info.cpp:117
ros::NodeHandle nh_
Definition: traj_info.hpp:50
QLabel * number_of_poses_
Definition: traj_info.hpp:44
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
QLabel * similar_layers_
Definition: traj_info.hpp:40
void save(rviz::Config config) const
Definition: traj_info.cpp:142
bool sleep() const
QLabel * number_of_polygons_
Definition: traj_info.hpp:43
ros::Subscriber sub_
Definition: traj_info.hpp:51
virtual void setName(const QString &name)
QLabel * number_of_layers_indices_
Definition: traj_info.hpp:42
void load(const rviz::Config &config)
Definition: traj_info.cpp:137
uint32_t getNumPublishers() const
std::string getTopic() const
virtual QString getName() const
void callback(const ram_msgs::AdditiveManufacturingTrajectoryInfoConstPtr &msg)
Definition: traj_info.cpp:110
QLabel * execution_time_
Definition: traj_info.hpp:46
#define ROS_INFO_STREAM(args)
QLabel * trajectory_length_
Definition: traj_info.hpp:45
QLabel * number_of_layers_levels_
Definition: traj_info.hpp:41
virtual void save(Config config) const
bool ok() const
TrajInfo(QWidget *parent=NULL)
Definition: traj_info.cpp:6
#define ROS_ERROR_STREAM(args)
virtual void load(const Config &config)
#define PLUGINLIB_EXPORT_CLASS(class_type, base_class_type)
ram_msgs::AdditiveManufacturingTrajectoryInfo msg_
Definition: traj_info.hpp:53
std::recursive_mutex msg_mutex_
Definition: traj_info.hpp:52


ram_qt_guis
Author(s): Victor Lamoine - Institut Maupertuis
autogenerated on Mon Jun 10 2019 14:50:11