Skip to content

Commit 837db39

Browse files
authored
feat(traffic_light_classifier): update diagnostics when harsh backlight is detected (#10218)
feat: update diagnostics when harsh backlight is detected Signed-off-by: ktro2828 <kotaro.uetake@tier4.jp>
1 parent da5850e commit 837db39

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

perception/autoware_traffic_light_classifier/package.xml

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<depend>autoware_cuda_utils</depend>
2020
<depend>autoware_tensorrt_classifier</depend>
2121
<depend>autoware_tensorrt_common</depend>
22+
<depend>autoware_utils</depend>
2223
<depend>cv_bridge</depend>
2324
<depend>image_transport</depend>
2425
<depend>libboost-filesystem-dev</depend>

perception/autoware_traffic_light_classifier/src/traffic_light_classifier_node.cpp

+15
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// limitations under the License.
1414
#include "traffic_light_classifier_node.hpp"
1515

16+
#include <diagnostic_msgs/msg/diagnostic_status.hpp>
1617
#include <tier4_perception_msgs/msg/traffic_light_element.hpp>
1718

1819
#include <iostream>
@@ -60,6 +61,9 @@ TrafficLightClassifierNodelet::TrafficLightClassifierNodelet(const rclcpp::NodeO
6061
this->get_logger(), "please install CUDA, CUDNN and TensorRT to use cnn classifier");
6162
#endif
6263
}
64+
65+
diagnostics_interface_ptr_ =
66+
std::make_unique<autoware_utils::DiagnosticsInterface>(this, "traffic_light_classifier");
6367
}
6468

6569
void TrafficLightClassifierNodelet::connectCb()
@@ -165,6 +169,17 @@ void TrafficLightClassifierNodelet::imageRoiCallback(
165169

166170
output_msg.header = input_image_msg->header;
167171
traffic_signal_array_pub_->publish(output_msg);
172+
173+
// publish diagnostics
174+
diagnostics_interface_ptr_->clear();
175+
bool found_harsh_backlight = backlight_indices.size() != 0;
176+
diagnostics_interface_ptr_->add_key_value("found_harsh_backlight", found_harsh_backlight);
177+
if (found_harsh_backlight) {
178+
diagnostics_interface_ptr_->update_level_and_message(
179+
diagnostic_msgs::msg::DiagnosticStatus::WARN,
180+
"Found harsh backlight in ROI(s) and corresponding ROI(s) were overwritten by UNKNOWN");
181+
}
182+
diagnostics_interface_ptr_->publish(output_msg.header.stamp);
168183
}
169184

170185
bool TrafficLightClassifierNodelet::is_harsh_backlight(const cv::Mat & img) const

perception/autoware_traffic_light_classifier/src/traffic_light_classifier_node.hpp

+4
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848

4949
#include "classifier/color_classifier.hpp"
5050

51+
#include <autoware_utils/ros/diagnostics_interface.hpp>
5152
#include <opencv2/core/core.hpp>
5253
#include <opencv2/highgui/highgui.hpp>
5354

@@ -89,6 +90,9 @@ class TrafficLightClassifierNodelet : public rclcpp::Node
8990
traffic_signal_array_pub_;
9091
std::shared_ptr<ClassifierInterface> classifier_ptr_;
9192

93+
std::unique_ptr<autoware_utils::DiagnosticsInterface>
94+
diagnostics_interface_ptr_; //!< Diagnostic handler.
95+
9296
double backlight_threshold_;
9397
bool is_harsh_backlight(const cv::Mat & img) const;
9498
};

0 commit comments

Comments
 (0)