calculate and return the chassis.
147 {
148 chassis_.Clear();
149
150 Lexus chassis_detail;
152
153
156 }
157
159 chassis_.set_error_code(chassis_error_code());
160
161
162 chassis_.set_engine_started(true);
163
164
165 if (chassis_detail.has_vehicle_speed_rpt_400() &&
166 chassis_detail.vehicle_speed_rpt_400().has_vehicle_speed()) {
167 chassis_.set_speed_mps(static_cast<float>(
168 chassis_detail.vehicle_speed_rpt_400().vehicle_speed()));
169 } else {
170 chassis_.set_speed_mps(0);
171 }
172
173 if (chassis_detail.has_wheel_speed_rpt_407()) {
174
175 chassis_.mutable_wheel_speed()->set_is_wheel_spd_rr_valid(true);
176
177 chassis_.mutable_wheel_speed()->set_wheel_spd_rr(
178 chassis_detail.wheel_speed_rpt_407().wheel_spd_rear_right());
179
180 chassis_.mutable_wheel_speed()->set_is_wheel_spd_rl_valid(true);
181
182
183
184
185 chassis_.mutable_wheel_speed()->set_wheel_spd_rl(
186 chassis_detail.wheel_speed_rpt_407().wheel_spd_rear_left());
187
188 chassis_.mutable_wheel_speed()->set_is_wheel_spd_fr_valid(true);
189
190
191
192
193 chassis_.mutable_wheel_speed()->set_wheel_spd_fr(
194 chassis_detail.wheel_speed_rpt_407().wheel_spd_front_right());
195
196 chassis_.mutable_wheel_speed()->set_is_wheel_spd_fl_valid(true);
197
198
199
200
201 chassis_.mutable_wheel_speed()->set_wheel_spd_fl(
202 chassis_detail.wheel_speed_rpt_407().wheel_spd_front_left());
203 }
204
205
206 chassis_.set_fuel_range_m(0);
207
208 if (chassis_detail.has_accel_rpt_200() &&
209 chassis_detail.accel_rpt_200().has_output_value()) {
210
211 chassis_.set_throttle_percentage(static_cast<float>(
212 chassis_detail.accel_rpt_200().output_value() * 100));
213 } else {
214 chassis_.set_throttle_percentage(0);
215 }
216
217 if (chassis_detail.has_brake_rpt_204() &&
218 chassis_detail.brake_rpt_204().has_output_value()) {
219
220 chassis_.set_brake_percentage(static_cast<float>(
221 chassis_detail.brake_rpt_204().output_value() * 100));
222 } else {
223 chassis_.set_brake_percentage(0);
224 }
225
226
227 if (chassis_detail.has_shift_rpt_228() &&
228 chassis_detail.shift_rpt_228().has_output_value()) {
229 AINFO <<
"Start reading shift values";
231
232 if (chassis_detail.shift_rpt_228().output_value() ==
235 }
236
237 if (chassis_detail.shift_rpt_228().output_value() ==
240 }
241 if (chassis_detail.shift_rpt_228().output_value() ==
244 }
245 if (chassis_detail.shift_rpt_228().output_value() ==
248 }
249
250 chassis_.set_gear_location(gear_pos);
251 } else {
253 }
254
255
256
257 if (chassis_detail.has_steering_rpt_22c() &&
258 chassis_detail.steering_rpt_22c().has_output_value()) {
259 chassis_.set_steering_percentage(
260 static_cast<float>(chassis_detail.steering_rpt_22c().output_value() *
262 } else {
263 chassis_.set_steering_percentage(0);
264 }
265
266
267 if (chassis_detail.has_turn_rpt_230() &&
268 chassis_detail.turn_rpt_230().has_output_value() &&
269 chassis_detail.turn_rpt_230().output_value() !=
271 if (chassis_detail.turn_rpt_230().output_value() ==
273 chassis_.mutable_signal()->set_turn_signal(
275 } else if (chassis_detail.turn_rpt_230().output_value() ==
277 chassis_.mutable_signal()->set_turn_signal(
279 } else {
280 chassis_.mutable_signal()->set_turn_signal(
282 }
283 } else {
284 chassis_.mutable_signal()->set_turn_signal(
286 }
287
288
289
290 if (chassis_error_mask_) {
291 chassis_.set_chassis_error_mask(chassis_error_mask_);
292 }
293
294
296 chassis_.mutable_engage_advice()->set_advice(
298 } else {
299 chassis_.mutable_engage_advice()->set_advice(
301 chassis_.mutable_engage_advice()->set_reason(
302 "CANBUS not ready, firmware error or emergency button pressed!");
303 }
304
305 return chassis_;
306}
common::VehicleParam vehicle_params_
MessageManager< ::apollo::canbus::Lexus > * message_manager_
virtual Chassis::DrivingMode driving_mode()
optional bool parking_brake
@ OUTPUT_VALUE_FORWARD_HIGH
optional double max_steer_angle