54 std::map<std::int32_t, apollo::hdmap::LaneBoundaryType_Type>
63 obstacles.mutable_header()->CopyFrom(mobileye.
header());
69 obstacles.mutable_lane_marker()->mutable_left_lane_marker()->set_lane_type(
70 lane_conversion_map[mob_left_lane_type]);
71 obstacles.mutable_lane_marker()->mutable_right_lane_marker()->set_lane_type(
72 lane_conversion_map[mob_right_lane_type]);
74 obstacles.mutable_lane_marker()->mutable_left_lane_marker()->set_quality(
76 obstacles.mutable_lane_marker()->mutable_left_lane_marker()->set_model_degree(
80 obstacles.mutable_lane_marker()->mutable_left_lane_marker()->set_c0_position(
82 obstacles.mutable_lane_marker()
83 ->mutable_left_lane_marker()
85 obstacles.mutable_lane_marker()->mutable_left_lane_marker()->set_c2_curvature(
87 obstacles.mutable_lane_marker()
88 ->mutable_left_lane_marker()
90 obstacles.mutable_lane_marker()->mutable_left_lane_marker()->set_view_range(
93 obstacles.mutable_lane_marker()->mutable_right_lane_marker()->set_quality(
95 obstacles.mutable_lane_marker()
96 ->mutable_right_lane_marker()
98 obstacles.mutable_lane_marker()->mutable_right_lane_marker()->set_c0_position(
100 obstacles.mutable_lane_marker()
101 ->mutable_right_lane_marker()
103 obstacles.mutable_lane_marker()
104 ->mutable_right_lane_marker()
106 obstacles.mutable_lane_marker()
107 ->mutable_right_lane_marker()
109 obstacles.mutable_lane_marker()->mutable_right_lane_marker()->set_view_range(
121 double adc_velocity =
Speed(adc_vx, adc_vy);
123 for (
int index = 0; index < mobileye.
details_738().num_obstacles() &&
124 index < mobileye.details_739_size();
126 auto* mob = obstacles.add_perception_obstacle();
127 const auto& data_739 = mobileye.
details_739(index);
128 int mob_id = data_739.
obstacle_id() + FLAGS_mobileye_id_offset;
129 double mob_x = data_739.obstacle_pos_x();
130 double mob_y = -data_739.obstacle_pos_y();
131 double mob_vel_x = data_739.obstacle_rel_vel_x();
132 int mob_type = data_739.obstacle_type();
136 if (mobileye.details_73a_size() <= index) {
141 FLAGS_max_mobileye_obstacle_length) {
148 FLAGS_max_mobileye_obstacle_width) {
155 mob_x += FLAGS_mobileye_pos_adjust;
156 mob_x += mob_l / 2.0;
161 double converted_x = 0.0;
162 double converted_y = 0.0;
163 double converted_speed = 0.0;
164 double converted_vx = 0.0;
165 double converted_vy = 0.0;
167 double path_c1 = 0.0;
168 double path_c2 = 0.0;
169 double path_c3 = 0.0;
184 if (!FLAGS_use_navigation_mode) {
185 converted_x = adc_x + xy_point.
x();
186 converted_y = adc_y + xy_point.
y();
188 converted_speed = adc_velocity + mob_vel_x;
189 converted_vx = converted_speed * std::cos(mob->theta());
190 converted_vy = converted_speed * std::sin(mob->theta());
193 FLAGS_mobileye_pos_adjust;
195 converted_vx = mob_vel_x + chassis.
speed_mps();
198 if (mobileye.details_73b_size() <= index) {
201 if (!FLAGS_overwrite_mobileye_theta) {
205 double nearest_lane_heading =
207 ? std::atan2(3 * path_c3 * converted_x * converted_x +
208 2 * path_c2 * converted_x + path_c1,
210 : std::atan2(3 * path_c3 * converted_x * converted_x +
211 2 * path_c2 * converted_x + path_c1,
214 AINFO <<
"nearest lane heading is" << nearest_lane_heading;
215 mob->set_theta(nearest_lane_heading);
221 mob->mutable_position()->set_x(converted_x);
222 mob->mutable_position()->set_y(converted_y);
245 mob->mutable_velocity()->set_x(converted_vx);
246 mob->mutable_velocity()->set_y(converted_vy);
247 mob->set_length(mob_l);
248 mob->set_width(mob_w);
249 mob->set_height(FLAGS_default_height);
251 mob->clear_polygon_point();
255 mob->position().z(), mob->length(), mob->width(),
256 mob->height(), mob->theta());
258 mob->set_confidence(0.5);