calculate and return the chassis.
159 {
160 chassis_.Clear();
161
163
164
165
166
167
168
170 chassis_.set_error_code(chassis_error_code());
171
172 chassis_.set_engine_started(true);
173
174
175
176 if (chassis_detail.has_ecu_status_1_515() &&
177 chassis_detail.ecu_status_1_515().has_speed()) {
178 chassis_.set_speed_mps(
179 static_cast<float>(chassis_detail.ecu_status_1_515().speed()));
180 } else {
181 chassis_.set_speed_mps(0);
182 }
183
184
185
186
187
188 if (chassis_detail.has_throttle_status__510() &&
189 chassis_detail.throttle_status__510().has_throttle_pedal_sts()) {
190 chassis_.set_throttle_percentage(static_cast<float>(
191 chassis_detail.throttle_status__510().throttle_pedal_sts()));
192 } else {
193 chassis_.set_throttle_percentage(0);
194 }
195
196 if (chassis_detail.has_brake_status__511() &&
197 chassis_detail.brake_status__511().has_brake_pedal_sts()) {
198 chassis_.set_brake_percentage(static_cast<float>(
199 chassis_detail.brake_status__511().brake_pedal_sts()));
200 } else {
201 chassis_.set_brake_percentage(0);
202 }
203
204 if (chassis_detail.has_gear_status_514() &&
205 chassis_detail.gear_status_514().has_gear_sts()) {
207
208 if (chassis_detail.gear_status_514().gear_sts() ==
211 }
212 if (chassis_detail.gear_status_514().gear_sts() ==
215 }
216 if (chassis_detail.gear_status_514().gear_sts() ==
219 }
220 if (chassis_detail.gear_status_514().gear_sts() ==
223 }
224
225 chassis_.set_gear_location(gear_pos);
226 } else {
228 }
229
230 if (chassis_detail.has_steer_status__512() &&
231 chassis_detail.steer_status__512().has_steer_angle_sts()) {
232 chassis_.set_steering_percentage(static_cast<float>(
233 chassis_detail.steer_status__512().steer_angle_sts() * 100.0 /
235 } else {
236 chassis_.set_steering_percentage(0);
237 }
238
239 if (chassis_detail.has_ecu_status_2_516() &&
240 chassis_detail.ecu_status_2_516().has_battery_soc()) {
241 chassis_.set_battery_soc_percentage(
242 chassis_detail.ecu_status_2_516().battery_soc());
243 }
244
245
247 chassis_.mutable_engage_advice()->set_advice(
249 } else {
250 chassis_.mutable_engage_advice()->set_advice(
253 chassis_.mutable_engage_advice()->set_reason(
254 "Battery soc percentage is lower than 15%, please charge it "
255 "quickly!");
256 }
257 }
258
259
260
261 std::string vin = "";
262 if (chassis_detail.has_vin_resp1_51b()) {
263 Vin_resp1_51b vin_51b = chassis_detail.vin_resp1_51b();
264 vin += vin_51b.vin01();
265 vin += vin_51b.vin02();
266 vin += vin_51b.vin03();
267 vin += vin_51b.vin04();
268 vin += vin_51b.vin05();
269 vin += vin_51b.vin06();
270 vin += vin_51b.vin07();
271 vin += vin_51b.vin08();
272 }
273 if (chassis_detail.has_vin_resp2_51c()) {
274 Vin_resp2_51c vin_51c = chassis_detail.vin_resp2_51c();
275 vin += vin_51c.vin09();
276 vin += vin_51c.vin10();
277 vin += vin_51c.vin11();
278 vin += vin_51c.vin12();
279 vin += vin_51c.vin13();
280 vin += vin_51c.vin14();
281 vin += vin_51c.vin15();
282 vin += vin_51c.vin16();
283 }
284 if (chassis_detail.has_vin_resp3_51d()) {
285 Vin_resp3_51d vin_51d = chassis_detail.vin_resp3_51d();
286 vin += vin_51d.vin17();
287 }
288 std::reverse(vin.begin(), vin.end());
289 chassis_.mutable_vehicle_id()->set_vin(vin);
290
291
292 if (chassis_detail.has_brake_status__511() &&
293 chassis_detail.brake_status__511().has_front_bump_env()) {
294 if (chassis_detail.brake_status__511().front_bump_env() ==
297 } else {
299 }
300 } else {
302 }
303
304 if (chassis_detail.has_brake_status__511() &&
305 chassis_detail.brake_status__511().has_back_bump_env()) {
306 if (chassis_detail.brake_status__511().back_bump_env() ==
309 } else {
311 }
312 } else {
314 }
315
316 if (chassis_detail.has_brake_status__511() &&
317 chassis_detail.brake_status__511().has_brake_pedal_en_sts()) {
318 chassis_.mutable_check_response()->set_is_esp_online(
319 chassis_detail.brake_status__511().brake_pedal_en_sts() == 1);
320 }
321 if (chassis_detail.has_steer_status__512() &&
322 chassis_detail.steer_status__512().has_steer_angle_en_sts()) {
323 chassis_.mutable_check_response()->set_is_eps_online(
324 chassis_detail.steer_status__512().steer_angle_en_sts() == 1);
325 }
326 if (chassis_detail.has_throttle_status__510() &&
327 chassis_detail.throttle_status__510().has_throttle_pedal_en_sts()) {
328 chassis_.mutable_check_response()->set_is_vcu_online(
329 chassis_detail.throttle_status__510().throttle_pedal_en_sts() == 1);
330 }
331
332 if (CheckChassisError()) {
333 chassis_.mutable_engage_advice()->set_advice(
335 chassis_.mutable_engage_advice()->set_reason(
336 "Chassis has some fault, please check the chassis_detail.");
337 }
338
339
341 chassis_.mutable_engage_advice()->set_advice(
343 chassis_.mutable_engage_advice()->set_reason(
344 "ch chassis detail is lost! Please check the communication error.");
347 }
348
349 return chassis_;
350}
common::VehicleParam vehicle_params_
virtual void set_driving_mode(const Chassis::DrivingMode &driving_mode)
bool is_chassis_communication_error_
virtual ::apollo::canbus::Ch GetNewRecvChassisDetail()
virtual Chassis::DrivingMode driving_mode()
@ BACK_BUMP_ENV_BACK_BUMPER_ENV
@ FRONT_BUMP_ENV_FRONT_BUMPER_ENV
optional int32 battery_soc_percentage
optional double max_steer_angle