100 {
101 ADEBUG <<
"Received a perception message ["
102 << perception_obstacles.ShortDebugString() << "].";
103
104
105 auto ptr_obstacles_container =
106 container_manager->GetContainer<ObstaclesContainer>(
108 CHECK_NOTNULL(ptr_obstacles_container);
109 ptr_obstacles_container->CleanUp();
110
111
112 auto ptr_ego_pose_container = container_manager->GetContainer<PoseContainer>(
114 CHECK_NOTNULL(ptr_ego_pose_container);
115
116
117 auto ptr_ego_trajectory_container =
118 container_manager->GetContainer<ADCTrajectoryContainer>(
120 CHECK_NOTNULL(ptr_ego_trajectory_container);
121
122
123 auto ptr_storytelling_container =
124 container_manager->GetContainer<StoryTellingContainer>(
126 CHECK_NOTNULL(ptr_storytelling_container);
127
128
129 const PerceptionObstacle* ptr_ego_vehicle =
130 ptr_ego_pose_container->ToPerceptionObstacle();
131 if (ptr_ego_vehicle != nullptr) {
132 double perception_obs_timestamp = ptr_ego_vehicle->timestamp();
133 if (perception_obstacles.has_header() &&
134 perception_obstacles.header().has_timestamp_sec()) {
135 ADEBUG <<
"Correcting " << std::fixed << std::setprecision(6)
136 << ptr_ego_vehicle->timestamp() << " to " << std::fixed
137 << std::setprecision(6)
138 << perception_obstacles.header().timestamp_sec();
139 perception_obs_timestamp = perception_obstacles.header().timestamp_sec();
140 }
141 ptr_obstacles_container->InsertPerceptionObstacle(*ptr_ego_vehicle,
142 perception_obs_timestamp);
143 double x = ptr_ego_vehicle->position().x();
144 double y = ptr_ego_vehicle->position().y();
145 ADEBUG <<
"Get ADC position [" << std::fixed << std::setprecision(6) << x
146 << ", " << std::fixed << std::setprecision(6) << y << "].";
147 ptr_ego_trajectory_container->SetPosition({x, y});
148 }
149
150
151 ptr_obstacles_container->Insert(perception_obstacles);
152
153 ObstaclesPrioritizer obstacles_prioritizer(container_manager);
154
155 InteractionFilter interaction_filter(container_manager);
156
157
158 obstacles_prioritizer.AssignIgnoreLevel();
159
160
161 scenario_manager->Run(container_manager.get());
162
163
164 const Scenario scenario = scenario_manager->scenario();
166 ptr_obstacles_container->GetJunctionAnalyzer()->Init(
167 scenario.junction_id());
168 ptr_obstacles_container->BuildJunctionFeature();
169 }
170
171
172 ptr_obstacles_container->BuildLaneGraph();
173
174
175 obstacles_prioritizer.AssignCautionLevel();
176
177
178 if (FLAGS_enable_interactive_tag) {
179 interaction_filter.AssignInteractiveTag();
180 }
181
182
184}
static void Analyze(ContainerManager *container_manager)
Set right_of_way for all lane_sequence