55 std::map<std::int32_t, apollo::hdmap::LaneBoundaryType_Type>
64 obstacles.mutable_header()->CopyFrom(smartereye_obstacles.
header());
67 std::int32_t sma_left_lane_type =
69 std::int32_t sma_right_lane_type =
72 obstacles.mutable_lane_marker()->mutable_left_lane_marker()->set_lane_type(
73 lane_conversion_map[sma_left_lane_type]);
74 obstacles.mutable_lane_marker()->mutable_right_lane_marker()->set_lane_type(
75 lane_conversion_map[sma_right_lane_type]);
77 obstacles.mutable_lane_marker()->mutable_left_lane_marker()->set_quality(
80 obstacles.mutable_lane_marker()->mutable_left_lane_marker()
85 obstacles.mutable_lane_marker()->mutable_left_lane_marker()->set_c0_position(
88 obstacles.mutable_lane_marker()->mutable_left_lane_marker()
91 obstacles.mutable_lane_marker()->mutable_left_lane_marker()
94 obstacles.mutable_lane_marker()->mutable_left_lane_marker()
95 ->set_c3_curvature_derivative(
102 obstacles.mutable_lane_marker()->mutable_right_lane_marker()->set_quality(
105 obstacles.mutable_lane_marker()->mutable_right_lane_marker()
108 obstacles.mutable_lane_marker()->mutable_right_lane_marker()
111 obstacles.mutable_lane_marker()->mutable_right_lane_marker()
114 obstacles.mutable_lane_marker()->mutable_right_lane_marker()
117 obstacles.mutable_lane_marker()->mutable_right_lane_marker()
118 ->set_c3_curvature_derivative(
134 double adc_velocity =
Speed(adc_vx, adc_vy);
136 for (
int index = 0; index < smartereye_obstacles.
num_obstacles() &&
137 index < smartereye_obstacles.output_obstacles_size();
139 auto* sma = obstacles.add_perception_obstacle();
140 const auto& data_obstacle =
142 int sma_id = data_obstacle.trackid() + FLAGS_smartereye_id_offset;
144 double sma_x = data_obstacle.avgdistancez();
145 double sma_y = data_obstacle.real3dcenterx();
146 double sma_z = (data_obstacle.real3dupy() +
147 data_obstacle.real3dlowy()) / 2.0;
149 double sma_vel_x = data_obstacle.fuzzyrelativespeedz();
150 int sma_type = data_obstacle.obstacletype();
152 double sma_w = data_obstacle.real3drightx() - data_obstacle.real3dleftx();
153 double sma_l = data_obstacle.real3dlowy() - data_obstacle.real3dupy();
178 if (sma_l > FLAGS_max_mobileye_obstacle_length) {
181 if (sma_w > FLAGS_max_mobileye_obstacle_width) {
188 double converted_x = 0.0;
189 double converted_y = 0.0;
190 double converted_z = 0.0;
191 double converted_speed = 0.0;
192 double converted_vx = 0.0;
193 double converted_vy = 0.0;
195 double path_c1 = 0.0;
196 double path_c2 = 0.0;
197 double path_c3 = 0.0;
212 if (!FLAGS_use_navigation_mode) {
213 converted_x = adc_x + xy_point.
x();
214 converted_y = adc_y + xy_point.
y();
215 converted_z = adc_z + sma_z;
217 converted_speed = adc_velocity + sma_vel_x;
218 converted_vx = converted_speed * std::cos(sma->theta());
219 converted_vy = converted_speed * std::sin(sma->theta());
221 converted_x = data_obstacle.real3dcenterx() - sma_l / 2.0;
223 converted_vx = sma_vel_x + chassis.
speed_mps();
225 converted_z = data_obstacle.avgdistancez();
227 double nearest_lane_heading =
229 ? std::atan2(3 * path_c3 * converted_x * converted_x +
230 2 * path_c2 * converted_x + path_c1,
232 : std::atan2(3 * path_c3 * converted_x * converted_x +
233 2 * path_c2 * converted_x + path_c1,
236 AINFO <<
"nearest lane heading is" << nearest_lane_heading;
237 sma->set_theta(nearest_lane_heading);
241 sma->mutable_position()->set_x(converted_x);
242 sma->mutable_position()->set_y(converted_y);
243 sma->mutable_position()->set_z(converted_z);
245 sma->mutable_velocity()->set_x(converted_vx);
246 sma->mutable_velocity()->set_y(converted_vy);
247 sma->set_length(sma_l);
248 sma->set_width(sma_w);
249 sma->set_height(FLAGS_default_height);
251 sma->clear_polygon_point();
255 sma->position().z(), sma->length(), sma->width(),
256 sma->height(), sma->theta());
258 sma->set_confidence(0.5);