calculate and return the chassis.
145 {
146 chassis_.Clear();
147
148 Zhongyun chassis_detail;
150
151
152
153
154
155
157 chassis_.set_error_code(chassis_error_code());
158
159
160 chassis_.set_engine_started(true);
161
162
163 if (chassis_detail.has_vehicle_state_feedback_2_c4() &&
164 chassis_detail.vehicle_state_feedback_2_c4().has_motor_speed()) {
165 chassis_.set_engine_rpm(static_cast<float>(
166 chassis_detail.vehicle_state_feedback_2_c4().motor_speed()));
167 } else {
168 chassis_.set_engine_rpm(0);
169 }
170
171 if (chassis_detail.has_vehicle_state_feedback_c1() &&
172 chassis_detail.vehicle_state_feedback_c1().has_speed()) {
173 chassis_.set_speed_mps(
174 static_cast<float>(chassis_detail.vehicle_state_feedback_c1().speed()));
175 } else {
176 chassis_.set_speed_mps(0);
177 }
178
179 chassis_.set_fuel_range_m(0);
180
181
182 if (chassis_detail.has_vehicle_state_feedback_2_c4() &&
183 chassis_detail.vehicle_state_feedback_2_c4()
184 .has_driven_torque_feedback()) {
185 chassis_.set_throttle_percentage(static_cast<float>(
186 chassis_detail.vehicle_state_feedback_2_c4().driven_torque_feedback()));
187 } else {
188 chassis_.set_throttle_percentage(0);
189 }
190
191 if (chassis_detail.has_vehicle_state_feedback_c1() &&
192 chassis_detail.vehicle_state_feedback_c1().has_brake_torque_feedback()) {
193 chassis_.set_brake_percentage(static_cast<float>(
194 chassis_detail.vehicle_state_feedback_c1().brake_torque_feedback()));
195 } else {
196 chassis_.set_brake_percentage(0);
197 }
198
199 if (chassis_detail.has_vehicle_state_feedback_c1() &&
200 chassis_detail.vehicle_state_feedback_c1().has_gear_state_actual()) {
201 switch (chassis_detail.vehicle_state_feedback_c1().gear_state_actual()) {
204 } break;
207 } break;
210 } break;
213 } break;
214 default:
216 break;
217 }
218 } else {
220 }
221
222 if (chassis_detail.has_vehicle_state_feedback_c1() &&
223 chassis_detail.vehicle_state_feedback_c1().has_steering_actual()) {
224 chassis_.set_steering_percentage(static_cast<float>(
225 chassis_detail.vehicle_state_feedback_c1().steering_actual() * 100.0 /
227 } else {
228 chassis_.set_steering_percentage(0);
229 }
230
231 if (chassis_detail.has_vehicle_state_feedback_c1() &&
232 chassis_detail.vehicle_state_feedback_c1().has_parking_actual()) {
233 chassis_.set_parking_brake(
234 chassis_detail.vehicle_state_feedback_c1().parking_actual() ==
236 } else {
237 chassis_.set_parking_brake(false);
238 }
239
240 if (chassis_error_mask_) {
241 chassis_.set_chassis_error_mask(chassis_error_mask_);
242 }
243
245 chassis_.mutable_engage_advice()->set_advice(
247 } else {
248 chassis_.mutable_engage_advice()->set_advice(
250 chassis_.mutable_engage_advice()->set_reason(
251 "CANBUS not ready, epb is not released or firmware error!");
252 }
253
254
255 if (chassis_detail.has_enable_state_feedback_c3()) {
256 if (chassis_detail.enable_state_feedback_c3().has_brake_enable_state()) {
257 chassis_.mutable_check_response()->set_is_esp_online(
258 chassis_detail.enable_state_feedback_c3().brake_enable_state() == 1);
259 }
260 if (chassis_detail.enable_state_feedback_c3().has_driven_enable_state() &&
261 chassis_detail.enable_state_feedback_c3().has_gear_enable_actual()) {
262 chassis_.mutable_check_response()->set_is_vcu_online(
263 ((chassis_detail.enable_state_feedback_c3().driven_enable_state() ==
264 1) &&
265 (chassis_detail.enable_state_feedback_c3().gear_enable_actual() ==
266 1)) == 1);
267 }
268 if (chassis_detail.enable_state_feedback_c3().has_steering_enable_state()) {
269 chassis_.mutable_check_response()->set_is_eps_online(
270 chassis_detail.enable_state_feedback_c3().steering_enable_state() ==
271 1);
272 }
273 }
274
275 return chassis_;
276}
common::VehicleParam vehicle_params_
MessageManager< ::apollo::canbus::Zhongyun > * message_manager_
virtual Chassis::DrivingMode driving_mode()
optional bool parking_brake
@ PARKING_ACTUAL_PARKING_TRIGGER
optional double max_steer_angle