|
55 | 55 |
|
56 | 56 | #include <pcl_ros/transforms.hpp>
|
57 | 57 |
|
| 58 | +#include <diagnostic_msgs/msg/diagnostic_status.hpp> |
| 59 | + |
58 | 60 | #include <pcl/io/io.h>
|
59 | 61 |
|
60 | 62 | #include <memory>
|
@@ -107,6 +109,10 @@ autoware::pointcloud_preprocessor::Filter::Filter(
|
107 | 109 | set_param_res_filter_ = this->add_on_set_parameters_callback(
|
108 | 110 | std::bind(&Filter::filterParamCallback, this, std::placeholders::_1));
|
109 | 111 |
|
| 112 | + // Set diagnostics |
| 113 | + diagnostics_interface_ptr_ = |
| 114 | + std::make_unique<autoware_utils_diagnostics::DiagnosticsInterface>(this, filter_name); |
| 115 | + |
110 | 116 | published_time_publisher_ = std::make_unique<autoware_utils::PublishedTimePublisher>(this);
|
111 | 117 | RCLCPP_DEBUG(this->get_logger(), "[Filter Constructor] successfully created.");
|
112 | 118 | }
|
@@ -205,6 +211,14 @@ void autoware::pointcloud_preprocessor::Filter::computePublish(
|
205 | 211 | // Copy timestamp to keep it
|
206 | 212 | output->header.stamp = input->header.stamp;
|
207 | 213 |
|
| 214 | + diagnostics_interface_ptr_->clear(); |
| 215 | + if (bool is_output_emtpy = output->data.empty(); is_output_emtpy) { |
| 216 | + diagnostics_interface_ptr_->add_key_value("is_pointcloud_empty", is_output_emtpy); |
| 217 | + diagnostics_interface_ptr_->update_level_and_message( |
| 218 | + diagnostic_msgs::msg::DiagnosticStatus::WARN, "Output pointcloud is empty."); |
| 219 | + diagnostics_interface_ptr_->publish(output->header.stamp); |
| 220 | + } |
| 221 | + |
208 | 222 | // Publish a boost shared ptr
|
209 | 223 | pub_output_->publish(std::move(output));
|
210 | 224 | published_time_publisher_->publish_if_subscribed(pub_output_, input->header.stamp);
|
@@ -440,6 +454,14 @@ void autoware::pointcloud_preprocessor::Filter::faster_input_indices_callback(
|
440 | 454 |
|
441 | 455 | if (!convert_output_costly(output)) return;
|
442 | 456 |
|
| 457 | + diagnostics_interface_ptr_->clear(); |
| 458 | + if (bool is_output_emtpy = output->data.empty(); is_output_emtpy) { |
| 459 | + diagnostics_interface_ptr_->add_key_value("is_pointcloud_empty", is_output_emtpy); |
| 460 | + diagnostics_interface_ptr_->update_level_and_message( |
| 461 | + diagnostic_msgs::msg::DiagnosticStatus::WARN, "Output pointcloud is empty."); |
| 462 | + diagnostics_interface_ptr_->publish(output->header.stamp); |
| 463 | + } |
| 464 | + |
443 | 465 | output->header.stamp = cloud->header.stamp;
|
444 | 466 | pub_output_->publish(std::move(output));
|
445 | 467 | published_time_publisher_->publish_if_subscribed(pub_output_, cloud->header.stamp);
|
|
0 commit comments