File tree 2 files changed +23
-0
lines changed
perception/autoware_crosswalk_traffic_light_estimator
include/autoware_crosswalk_traffic_light_estimator
2 files changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -97,6 +97,8 @@ class CrosswalkTrafficLightEstimatorNode : public rclcpp::Node
97
97
98
98
void removeDuplicateIds (TrafficSignalArray & signal_array) const ;
99
99
100
+ bool isInvalidDetectionStatus (const TrafficSignal & signal) const ;
101
+
100
102
// Node param
101
103
bool use_last_detect_color_;
102
104
double last_detect_color_hold_time_;
Original file line number Diff line number Diff line change @@ -298,6 +298,14 @@ void CrosswalkTrafficLightEstimatorNode::setCrosswalkTrafficSignal(
298
298
if (valid_id2idx_map.count (id)) {
299
299
size_t idx = valid_id2idx_map[id];
300
300
auto signal = msg.traffic_light_groups [idx];
301
+ if (isInvalidDetectionStatus (signal )) {
302
+ TrafficSignalElement output_traffic_signal_element;
303
+ output_traffic_signal_element.color = color;
304
+ output_traffic_signal_element.shape = TrafficSignalElement::CIRCLE;
305
+ output_traffic_signal_element.confidence = 1.0 ;
306
+ output.traffic_light_groups [idx].elements [0 ] = output_traffic_signal_element;
307
+ continue ;
308
+ }
301
309
updateFlashingState (signal ); // check if it is flashing
302
310
// update output msg according to flashing and current state
303
311
output.traffic_light_groups [idx].elements [0 ].color = updateAndGetColorState (signal );
@@ -314,6 +322,19 @@ void CrosswalkTrafficLightEstimatorNode::setCrosswalkTrafficSignal(
314
322
}
315
323
}
316
324
325
+ bool CrosswalkTrafficLightEstimatorNode::isInvalidDetectionStatus (
326
+ const TrafficSignal & signal) const
327
+ {
328
+ // check occlusion, backlight(shape is unknown) and no detection(shape is circle)
329
+ if (
330
+ signal .elements .front ().color == TrafficSignalElement::UNKNOWN &&
331
+ signal .elements .front ().confidence == 0.0 ) {
332
+ return true ;
333
+ }
334
+
335
+ return false ;
336
+ }
337
+
317
338
void CrosswalkTrafficLightEstimatorNode::updateFlashingState (const TrafficSignal & signal)
318
339
{
319
340
const auto id = signal .traffic_light_group_id ;
You can’t perform that action at this time.
0 commit comments