calculate and return the chassis.
151 {
152 chassis_.Clear();
153
154 Lincoln chassis_detail;
156
157
160 }
161
163 chassis_.set_error_code(chassis_error_code());
164
165
166 chassis_.set_engine_started(true);
167
168 if (chassis_detail.has_ems() && chassis_detail.ems().has_engine_rpm()) {
169 chassis_.set_engine_rpm(
170 static_cast<float>(chassis_detail.ems().engine_rpm()));
171 } else {
172 chassis_.set_engine_rpm(0);
173 }
174
175 if (chassis_detail.has_vehicle_spd() &&
176 chassis_detail.vehicle_spd().has_vehicle_spd()) {
177 chassis_.set_speed_mps(
178 static_cast<float>(chassis_detail.vehicle_spd().vehicle_spd()));
179 chassis_.mutable_wheel_speed()->set_is_wheel_spd_rr_valid(
180 chassis_detail.vehicle_spd().is_wheel_spd_rr_valid());
181 chassis_.mutable_wheel_speed()->set_wheel_direction_rr(
182 chassis_detail.vehicle_spd().wheel_direction_rr());
183 chassis_.mutable_wheel_speed()->set_wheel_spd_rr(
184 chassis_detail.vehicle_spd().wheel_spd_rr());
185
186 chassis_.mutable_wheel_speed()->set_is_wheel_spd_rl_valid(
187 chassis_detail.vehicle_spd().is_wheel_spd_rl_valid());
188 chassis_.mutable_wheel_speed()->set_wheel_direction_rl(
189 chassis_detail.vehicle_spd().wheel_direction_rl());
190 chassis_.mutable_wheel_speed()->set_wheel_spd_rl(
191 chassis_detail.vehicle_spd().wheel_spd_rl());
192
193 chassis_.mutable_wheel_speed()->set_is_wheel_spd_fr_valid(
194 chassis_detail.vehicle_spd().is_wheel_spd_fr_valid());
195 chassis_.mutable_wheel_speed()->set_wheel_direction_fr(
196 chassis_detail.vehicle_spd().wheel_direction_fr());
197 chassis_.mutable_wheel_speed()->set_wheel_spd_fr(
198 chassis_detail.vehicle_spd().wheel_spd_fr());
199
200 chassis_.mutable_wheel_speed()->set_is_wheel_spd_fl_valid(
201 chassis_detail.vehicle_spd().is_wheel_spd_fl_valid());
202 chassis_.mutable_wheel_speed()->set_wheel_direction_fl(
203 chassis_detail.vehicle_spd().wheel_direction_fl());
204 chassis_.mutable_wheel_speed()->set_wheel_spd_fl(
205 chassis_detail.vehicle_spd().wheel_spd_fl());
206
207 } else {
208 chassis_.set_speed_mps(0);
209 }
210
211 if (chassis_detail.has_basic() && chassis_detail.basic().has_odo_meter()) {
212
213 chassis_.set_odometer_m(
214 static_cast<float>(chassis_detail.basic().odo_meter() * 1000.0));
215 } else {
216 chassis_.set_odometer_m(0);
217 }
218
219
220
221
222 chassis_.set_fuel_range_m(0);
223
224 if (chassis_detail.has_gas() && chassis_detail.gas().has_throttle_output()) {
225 chassis_.set_throttle_percentage(
226 static_cast<float>(chassis_detail.gas().throttle_output()));
227 } else {
228 chassis_.set_throttle_percentage(0);
229 }
230
231 if (chassis_detail.has_brake() && chassis_detail.brake().has_brake_output()) {
232 chassis_.set_brake_percentage(
233 static_cast<float>(chassis_detail.brake().brake_output()));
234 } else {
235 chassis_.set_brake_percentage(0);
236 }
237
238 if (chassis_detail.has_gear() && chassis_detail.gear().has_gear_state()) {
239 chassis_.set_gear_location(chassis_detail.gear().gear_state());
240 } else {
242 }
243
244 if (chassis_detail.has_eps() && chassis_detail.eps().has_steering_angle()) {
245 chassis_.set_steering_percentage(
246 static_cast<float>(chassis_detail.eps().steering_angle() * 100.0 /
248 } else {
249 chassis_.set_steering_percentage(0);
250 }
251
252 if (chassis_detail.has_eps() && chassis_detail.eps().has_epas_torque()) {
253 chassis_.set_steering_torque_nm(
254 static_cast<float>(chassis_detail.eps().epas_torque()));
255 } else {
256 chassis_.set_steering_torque_nm(0);
257 }
258
259 if (chassis_detail.has_eps() &&
260 chassis_detail.epb().has_parking_brake_status()) {
261 chassis_.set_parking_brake(chassis_detail.epb().parking_brake_status() ==
263 } else {
264 chassis_.set_parking_brake(false);
265 }
266
267
268 if (chassis_detail.has_light() &&
269 chassis_detail.light().has_lincoln_lamp_type()) {
270 chassis_.mutable_signal()->set_high_beam(
272 } else {
273 chassis_.mutable_signal()->set_high_beam(false);
274 }
275
276
277 if (chassis_detail.has_light() &&
278 chassis_detail.light().has_turn_light_type() &&
281 chassis_.mutable_signal()->set_turn_signal(
283 } else if (chassis_detail.light().turn_light_type() ==
285 chassis_.mutable_signal()->set_turn_signal(
287 } else {
288 chassis_.mutable_signal()->set_turn_signal(
290 }
291 } else {
292 chassis_.mutable_signal()->set_turn_signal(
294 }
295
296 if (chassis_detail.has_light() && chassis_detail.light().has_is_horn_on() &&
297 chassis_detail.light().is_horn_on()) {
298 chassis_.mutable_signal()->set_horn(true);
299 } else {
300 chassis_.mutable_signal()->set_horn(false);
301 }
302
303
304
305 if (chassis_detail.has_eps() && chassis_detail.eps().has_timestamp_65()) {
306 chassis_.set_steering_timestamp(chassis_detail.eps().timestamp_65());
307 }
308
309 if (chassis_error_mask_) {
310 chassis_.set_chassis_error_mask(chassis_error_mask_);
311 }
312
313
314
315 if (chassis_detail.basic().has_gps_valid()) {
316 chassis_.mutable_chassis_gps()->set_latitude(
317 chassis_detail.basic().latitude());
318 chassis_.mutable_chassis_gps()->set_longitude(
319 chassis_detail.basic().longitude());
320 chassis_.mutable_chassis_gps()->set_gps_valid(
321 chassis_detail.basic().gps_valid());
322 chassis_.mutable_chassis_gps()->set_year(chassis_detail.basic().year());
323 chassis_.mutable_chassis_gps()->set_month(chassis_detail.basic().month());
324 chassis_.mutable_chassis_gps()->set_day(chassis_detail.basic().day());
325 chassis_.mutable_chassis_gps()->set_hours(chassis_detail.basic().hours());
326 chassis_.mutable_chassis_gps()->set_minutes(
327 chassis_detail.basic().minutes());
328 chassis_.mutable_chassis_gps()->set_seconds(
329 chassis_detail.basic().seconds());
330 chassis_.mutable_chassis_gps()->set_compass_direction(
331 chassis_detail.basic().compass_direction());
332 chassis_.mutable_chassis_gps()->set_pdop(chassis_detail.basic().pdop());
333 chassis_.mutable_chassis_gps()->set_is_gps_fault(
334 chassis_detail.basic().is_gps_fault());
335 chassis_.mutable_chassis_gps()->set_is_inferred(
336 chassis_detail.basic().is_inferred());
337 chassis_.mutable_chassis_gps()->set_altitude(
338 chassis_detail.basic().altitude());
339 chassis_.mutable_chassis_gps()->set_heading(
340 chassis_detail.basic().heading());
341 chassis_.mutable_chassis_gps()->set_hdop(chassis_detail.basic().hdop());
342 chassis_.mutable_chassis_gps()->set_vdop(chassis_detail.basic().vdop());
343 chassis_.mutable_chassis_gps()->set_quality(
344 chassis_detail.basic().quality());
345 chassis_.mutable_chassis_gps()->set_num_satellites(
346 chassis_detail.basic().num_satellites());
347 chassis_.mutable_chassis_gps()->set_gps_speed(
348 chassis_detail.basic().gps_speed());
349 } else {
350 chassis_.mutable_chassis_gps()->set_gps_valid(false);
351 }
352
353
354 if (chassis_detail.vehicle_id().has_vin()) {
355 chassis_.mutable_vehicle_id()->set_vin(chassis_detail.vehicle_id().vin());
356 if (!received_vin_) {
358 chassis_detail.vehicle_id().vin());
359 received_vin_ = true;
360 }
361 }
362
363 if (chassis_detail.has_surround()) {
364 chassis_.mutable_surround()->CopyFrom(chassis_detail.surround());
365 }
366
369 chassis_.mutable_engage_advice()->set_advice(
371 chassis_.mutable_engage_advice()->set_reason("Chassis error!");
372 }
else if (chassis_.
parking_brake() || CheckSafetyError(chassis_detail)) {
373 chassis_.mutable_engage_advice()->set_advice(
375 chassis_.mutable_engage_advice()->set_reason(
376 "Vehicle is not in a safe state to engage!");
377 } else {
378 chassis_.mutable_engage_advice()->set_advice(
380 }
381 return chassis_;
382}
common::VehicleParam vehicle_params_
MessageManager< ::apollo::canbus::Lincoln > * message_manager_
virtual Chassis::DrivingMode driving_mode()
static bool Put(std::string_view key, std::string_view value)
Store {key, value} to DB.
optional float brake_percentage
optional bool parking_brake
optional float throttle_percentage
optional double max_steer_angle