57 {
59 if (message->process_stage_ == onboard::ProcessStage::SENSOR_FUSION) {
60 return true;
61 }
62 std::shared_ptr<PerceptionObstacles> out_message(new (std::nothrow)
63 PerceptionObstacles);
64 std::shared_ptr<SensorFrameMessage> viz_message(new (std::nothrow)
65 SensorFrameMessage);
66 bool status = InternalProc(message, out_message, viz_message);
67 if (status) {
68
69 bool is_main_sensor =
70 algorithm::SensorManager::Instance()->IsMainSensor(message->sensor_id_);
71 if (is_main_sensor) {
72 writer_->Write(out_message);
73 AINFO <<
"Send fusion processing output message.";
74
75 if (onboard::FLAGS_obs_enable_visualization) {
76 inner_writer_->Write(viz_message);
77 }
78 } else {
79 AINFO <<
"Fusion receive from " << message->sensor_id_
80 << ". Skip because it is not the main sensor.";
81 }
82 }
83 return status;
84}
#define PERF_FUNCTION(...)