28 v2x_obstacles_reader_ =
31 FLAGS_localization_topic,
nullptr);
32 perception_fusion_obstacles_writer_ =
38 const std::shared_ptr<PerceptionObstacles>& perception_obstacles) {
40 return V2XMessageFusionProcess(perception_obstacles);
42 perception_fusion_obstacles_writer_->Write(*perception_obstacles);
46bool V2XFusionComponent::V2XMessageFusionProcess(
47 const std::shared_ptr<PerceptionObstacles>& perception_obstacles) {
50 localization_reader_->Observe();
51 auto localization_msg = localization_reader_->GetLatestObserved();
52 if (localization_msg ==
nullptr) {
53 AERROR <<
"V2X: cannot receive any localization message.";
58 v2x_obstacles_reader_->Observe();
59 auto v2x_obstacles_msg = v2x_obstacles_reader_->GetLatestObserved();
60 if (v2x_obstacles_msg ==
nullptr) {
61 AERROR <<
"V2X: cannot receive any v2x obstacles message.";
62 perception_fusion_obstacles_writer_->Write(*perception_obstacles);
64 header_.CopyFrom(perception_obstacles->header());
65 std::vector<Object> fused_objects;
66 std::vector<Object> v2x_fused_objects;
67 std::vector<std::vector<Object>> fusion_result;
68 std::vector<Object> v2x_objects;
70 std::vector<Object> perception_objects;
71 Pbs2Objects(*perception_obstacles, &perception_objects,
"VEHICLE");
72 perception_objects.push_back(hv_obj);
77 auto output_msg = std::make_shared<PerceptionObstacles>();
78 SerializeMsg(v2x_fused_objects, output_msg);
79 perception_fusion_obstacles_writer_->Write(*output_msg);
84void V2XFusionComponent::SerializeMsg(
85 const std::vector<base::Object>& objects,
86 std::shared_ptr<PerceptionObstacles> output_msg) {
87 static int seq_num = 0;
91 header->set_module_name(
"v2x_fusion");
92 header->set_sequence_num(seq_num++);
std::shared_ptr< Node > node_
static Time Now()
get the current time.
bool CombineNewResource(const std::vector< base::Object > &new_objects, std::vector< base::Object > *fused_objects, std::vector< std::vector< base::Object > > *fusion_result)
bool GetV2xFusionObjects(const std::vector< std::vector< base::Object > > &fusion_result, std::vector< base::Object > *fused_objects)
bool Proc(const std::shared_ptr< PerceptionObstacles > &perception_obstacles) override
double V2xPbs2Objects(const V2XObstacles &obstacles, std::vector< base::Object > *objects, const std::string &frame_id)
void CarstatusPb2Object(const LocalizationEstimate &carstatus, base::Object *object, const std::string &frame_id)
void Objects2Pbs(const std::vector< base::Object > &objects, std::shared_ptr< PerceptionObstacles > obstacles)
double Pbs2Objects(const PerceptionObstacles &obstacles, std::vector< base::Object > *objects, const std::string &frame_id)