calculate and return the chassis.
146 {
147 chassis_.Clear();
148
149 Wey chassis_detail;
151
152
153
154
155
156
158 chassis_.set_error_code(chassis_error_code());
159
160
161 chassis_.set_engine_started(true);
162
163
164 if (chassis_detail.has_fbs3_237() && chassis_detail.fbs3_237().has_engspd()) {
165 chassis_.set_engine_rpm(
166 static_cast<float>(chassis_detail.fbs3_237().engspd()));
167 } else {
168 chassis_.set_engine_rpm(0);
169 }
170
171
172 if (chassis_detail.has_fbs2_240() &&
173 chassis_detail.fbs2_240().has_vehiclespd() &&
174 chassis_detail.has_fbs1_243() && chassis_detail.has_status_310()) {
175 Fbs2_240 fbs2_240 = chassis_detail.fbs2_240();
176 Fbs1_243 fbs1_243 = chassis_detail.fbs1_243();
177 Status_310 status_310 = chassis_detail.status_310();
178
179 chassis_.set_speed_mps(static_cast<float>(fbs2_240.vehiclespd()));
180
181 chassis_.mutable_wheel_speed()->set_is_wheel_spd_rr_valid(
182 static_cast<bool>(status_310.rrwheelspdvalid()));
184 chassis_.mutable_wheel_speed()->set_wheel_direction_rr(
186 } else if (fbs2_240.rrwheeldirection() ==
188 chassis_.mutable_wheel_speed()->set_wheel_direction_rr(
191 chassis_.mutable_wheel_speed()->set_wheel_direction_rr(
193 } else {
194 chassis_.mutable_wheel_speed()->set_wheel_direction_rr(
196 }
197 chassis_.mutable_wheel_speed()->set_wheel_spd_rr(fbs2_240.rrwheelspd());
198
199 chassis_.mutable_wheel_speed()->set_is_wheel_spd_rl_valid(
200 static_cast<bool>(status_310.rlwheelspdvalid()));
201 if (fbs2_240.rlwheeldrivedirection() ==
203 chassis_.mutable_wheel_speed()->set_wheel_direction_rl(
205 } else if (fbs2_240.rlwheeldrivedirection() ==
207 chassis_.mutable_wheel_speed()->set_wheel_direction_rl(
209 } else if (fbs2_240.rlwheeldrivedirection() ==
211 chassis_.mutable_wheel_speed()->set_wheel_direction_rl(
213 } else {
214 chassis_.mutable_wheel_speed()->set_wheel_direction_rl(
216 }
217 chassis_.mutable_wheel_speed()->set_wheel_spd_rl(fbs2_240.rlwheelspd());
218
219 chassis_.mutable_wheel_speed()->set_is_wheel_spd_fr_valid(
220 static_cast<bool>(status_310.frwheelspdvalid()));
222 chassis_.mutable_wheel_speed()->set_wheel_direction_fr(
224 } else if (fbs1_243.frwheeldirection() ==
226 chassis_.mutable_wheel_speed()->set_wheel_direction_fr(
229 chassis_.mutable_wheel_speed()->set_wheel_direction_fr(
231 } else {
232 chassis_.mutable_wheel_speed()->set_wheel_direction_fr(
234 }
235 chassis_.mutable_wheel_speed()->set_wheel_spd_fr(fbs2_240.frwheelspd());
236
237 chassis_.mutable_wheel_speed()->set_is_wheel_spd_fl_valid(
238 static_cast<bool>(status_310.flwheelspdvalid()));
240 chassis_.mutable_wheel_speed()->set_wheel_direction_fl(
242 } else if (fbs2_240.flwheeldirection() ==
244 chassis_.mutable_wheel_speed()->set_wheel_direction_fl(
247 chassis_.mutable_wheel_speed()->set_wheel_direction_fl(
249 } else {
250 chassis_.mutable_wheel_speed()->set_wheel_direction_fl(
252 }
253 chassis_.mutable_wheel_speed()->set_wheel_spd_fl(fbs1_243.flwheelspd());
254 } else {
255 chassis_.set_speed_mps(0);
256 }
257
258 chassis_.set_fuel_range_m(0);
259
260 if (chassis_detail.has_fbs3_237() &&
261 chassis_detail.fbs3_237().has_accpedalpos()) {
262 chassis_.set_throttle_percentage(
263 static_cast<float>(chassis_detail.fbs3_237().accpedalpos()));
264 } else {
265 chassis_.set_throttle_percentage(0);
266 }
267
268 if (chassis_detail.has_fbs3_237() &&
269 chassis_detail.fbs3_237().has_currentgear()) {
270 switch (chassis_detail.fbs3_237().currentgear()) {
273 } break;
276 } break;
279 } break;
282 } break;
283 default:
285 break;
286 }
287 } else {
289 }
290
291 if (chassis_detail.has_fbs4_235() &&
292 chassis_detail.fbs4_235().has_steerwheelangle() &&
293 chassis_detail.has_status_310() &&
294 chassis_detail.status_310().has_steerwheelanglesign()) {
295 if (chassis_detail.status_310().steerwheelanglesign() ==
297 chassis_.set_steering_percentage(static_cast<float>(
298 chassis_detail.fbs4_235().steerwheelangle() * 100.0 /
300 angle_init = chassis_detail.fbs4_235().steerwheelangle();
301 } else if (chassis_detail.status_310().steerwheelanglesign() ==
303 chassis_.set_steering_percentage(static_cast<float>(
304 chassis_detail.fbs4_235().steerwheelangle() * (-1) * 100.0 /
306 angle_init = chassis_detail.fbs4_235().steerwheelangle() * (-1);
307 } else {
308 chassis_.set_steering_percentage(0);
309 }
310 } else {
311 chassis_.set_steering_percentage(0);
312 }
313
314
315 if (chassis_detail.has_fbs3_237() &&
316 chassis_detail.fbs3_237().has_epsdrvinputtrqvalue()) {
317 chassis_.set_steering_torque_nm(
318 static_cast<float>(chassis_detail.fbs3_237().epsdrvinputtrqvalue()));
319 } else {
320 chassis_.set_steering_torque_nm(0);
321 }
322
323 if (chassis_detail.has_status_310() &&
324 chassis_detail.status_310().has_epbsts()) {
325 chassis_.set_parking_brake(chassis_detail.status_310().epbsts() ==
327 } else {
328 chassis_.set_parking_brake(false);
329 }
330
331 if (chassis_detail.has_status_310() &&
332 chassis_detail.status_310().has_lowbeamsts() &&
334 chassis_.mutable_signal()->set_low_beam(true);
335 } else {
336 chassis_.mutable_signal()->set_low_beam(false);
337 }
338
339 if (chassis_detail.has_status_310()) {
340 if (chassis_detail.status_310().has_leftturnlampsts() &&
341 chassis_detail.status_310().leftturnlampsts() ==
343 chassis_.mutable_signal()->set_turn_signal(
345 } else if (chassis_detail.status_310().has_rightturnlampsts() &&
346 chassis_detail.status_310().rightturnlampsts() ==
348 chassis_.mutable_signal()->set_turn_signal(
350 } else {
351 chassis_.mutable_signal()->set_turn_signal(
353 }
354 } else {
355 chassis_.mutable_signal()->set_turn_signal(
357 }
358
359 if (chassis_detail.has_vin_resp1_391() &&
360 chassis_detail.has_vin_resp2_392() &&
361 chassis_detail.has_vin_resp3_393()) {
362 Vin_resp1_391 vin_resp1_391 = chassis_detail.vin_resp1_391();
363 Vin_resp2_392 vin_resp2_392 = chassis_detail.vin_resp2_392();
364 Vin_resp3_393 vin_resp3_393 = chassis_detail.vin_resp3_393();
365 if (vin_resp1_391.has_vin00() && vin_resp1_391.has_vin01() &&
366 vin_resp1_391.has_vin02() && vin_resp1_391.has_vin03() &&
367 vin_resp1_391.has_vin04() && vin_resp1_391.has_vin05() &&
368 vin_resp1_391.has_vin06() && vin_resp1_391.has_vin07() &&
369 vin_resp2_392.has_vin08() && vin_resp2_392.has_vin09() &&
370 vin_resp2_392.has_vin10() && vin_resp2_392.has_vin11() &&
371 vin_resp2_392.has_vin12() && vin_resp2_392.has_vin13() &&
372 vin_resp2_392.has_vin14() && vin_resp2_392.has_vin15() &&
373 vin_resp3_393.has_vin16()) {
374 int n[17];
375 n[0] = vin_resp1_391.vin07();
376 n[1] = vin_resp1_391.vin06();
377 n[2] = vin_resp1_391.vin05();
378 n[3] = vin_resp1_391.vin04();
379 n[4] = vin_resp1_391.vin03();
380 n[5] = vin_resp1_391.vin02();
381 n[6] = vin_resp1_391.vin01();
382 n[7] = vin_resp1_391.vin00();
383 n[8] = vin_resp2_392.vin15();
384 n[9] = vin_resp2_392.vin14();
385 n[10] = vin_resp2_392.vin13();
386 n[11] = vin_resp2_392.vin12();
387 n[12] = vin_resp2_392.vin11();
388 n[13] = vin_resp2_392.vin10();
389 n[14] = vin_resp2_392.vin09();
390 n[15] = vin_resp2_392.vin08();
391 n[16] = vin_resp3_393.vin16();
392 char ch[17];
393 memset(&ch, '\0', sizeof(ch));
394 for (int i = 0; i < 17; i++) {
395 ch[i] = static_cast<char>(n[i]);
396 }
397 chassis_.mutable_vehicle_id()->set_vin(ch);
398 }
399 }
400
401 if (chassis_error_mask_) {
402 chassis_.set_chassis_error_mask(chassis_error_mask_);
403 }
404
406 chassis_.mutable_engage_advice()->set_advice(
408 } else {
409 chassis_.mutable_engage_advice()->set_advice(
411 }
412
413
414 if (chassis_detail.has_fbs3_237() &&
415 chassis_detail.fbs3_237().has_eps_streeingmode()) {
416 chassis_.mutable_check_response()->set_is_eps_online(
417 chassis_detail.fbs3_237().eps_streeingmode() == 1);
418 }
419 if (chassis_detail.has_status_310() &&
420 chassis_detail.status_310().has_longitudedrivingmode()) {
421 chassis_.mutable_check_response()->set_is_esp_online(
422 chassis_detail.status_310().longitudedrivingmode() == 1);
423 chassis_.mutable_check_response()->set_is_vcu_online(
424 chassis_detail.status_310().longitudedrivingmode() == 1);
425 }
426
427 return chassis_;
428}
common::VehicleParam vehicle_params_
MessageManager< ::apollo::canbus::Wey > * message_manager_
virtual Chassis::DrivingMode driving_mode()
optional bool parking_brake
@ FRWHEELDIRECTION_FORWARD
@ FRWHEELDIRECTION_BACKWARD
@ FLWHEELDIRECTION_BACKWARD
@ FLWHEELDIRECTION_FORWARD
@ RRWHEELDIRECTION_FORWARD
@ RRWHEELDIRECTION_BACKWARD
@ RLWHEELDRIVEDIRECTION_STOP
@ RLWHEELDRIVEDIRECTION_FORWARD
@ RLWHEELDRIVEDIRECTION_BACKWARD
@ STEERWHEELANGLESIGN_LEFT_POSITIVE
@ STEERWHEELANGLESIGN_RIGHT_NEGATIVE
optional double max_steer_angle