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 @@ -295,6 +295,14 @@ void CrosswalkTrafficLightEstimatorNode::setCrosswalkTrafficSignal(
295
295
if (valid_id2idx_map.count (id)) {
296
296
size_t idx = valid_id2idx_map[id];
297
297
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
+ }
298
306
updateFlashingState (signal ); // check if it is flashing
299
307
// update output msg according to flashing and current state
300
308
output.traffic_light_groups [idx].elements [0 ].color = updateAndGetColorState (signal );
@@ -311,6 +319,19 @@ void CrosswalkTrafficLightEstimatorNode::setCrosswalkTrafficSignal(
311
319
}
312
320
}
313
321
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
+
314
335
void CrosswalkTrafficLightEstimatorNode::updateFlashingState (const TrafficSignal & signal)
315
336
{
316
337
const auto id = signal .traffic_light_group_id ;
You can’t perform that action at this time.
0 commit comments