Skip to content

Commit 72c0271

Browse files
authored
Merge pull request #1707 from tier4/fix/overwrite_invalid_detection_result/v0.29.0-1
fix: overwrite invalid detection result/v0.29.0 1
2 parents e89815f + f8c8bb1 commit 72c0271

File tree

2 files changed

+23
-0
lines changed
  • perception/autoware_crosswalk_traffic_light_estimator

2 files changed

+23
-0
lines changed

perception/autoware_crosswalk_traffic_light_estimator/include/autoware_crosswalk_traffic_light_estimator/node.hpp

+2
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ class CrosswalkTrafficLightEstimatorNode : public rclcpp::Node
9797

9898
void removeDuplicateIds(TrafficSignalArray & signal_array) const;
9999

100+
bool isInvalidDetectionStatus(const TrafficSignal & signal) const;
101+
100102
// Node param
101103
bool use_last_detect_color_;
102104
double last_detect_color_hold_time_;

perception/autoware_crosswalk_traffic_light_estimator/src/node.cpp

+21
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,14 @@ void CrosswalkTrafficLightEstimatorNode::setCrosswalkTrafficSignal(
295295
if (valid_id2idx_map.count(id)) {
296296
size_t idx = valid_id2idx_map[id];
297297
auto signal = msg.traffic_light_groups[idx];
298+
if (isInvalidDetectionStatus(signal)) {
299+
TrafficSignalElement output_traffic_signal_element;
300+
output_traffic_signal_element.color = color;
301+
output_traffic_signal_element.shape = TrafficSignalElement::CIRCLE;
302+
output_traffic_signal_element.confidence = 1.0;
303+
output.traffic_light_groups[idx].elements[0] = output_traffic_signal_element;
304+
continue;
305+
}
298306
updateFlashingState(signal); // check if it is flashing
299307
// update output msg according to flashing and current state
300308
output.traffic_light_groups[idx].elements[0].color = updateAndGetColorState(signal);
@@ -311,6 +319,19 @@ void CrosswalkTrafficLightEstimatorNode::setCrosswalkTrafficSignal(
311319
}
312320
}
313321

322+
bool CrosswalkTrafficLightEstimatorNode::isInvalidDetectionStatus(
323+
const TrafficSignal & signal) const
324+
{
325+
// check occlusion, backlight(shape is unknown) and no detection(shape is circle)
326+
if (
327+
signal.elements.front().color == TrafficSignalElement::UNKNOWN &&
328+
signal.elements.front().confidence == 0.0) {
329+
return true;
330+
}
331+
332+
return false;
333+
}
334+
314335
void CrosswalkTrafficLightEstimatorNode::updateFlashingState(const TrafficSignal & signal)
315336
{
316337
const auto id = signal.traffic_light_group_id;

0 commit comments

Comments
 (0)