Skip to content

Commit 5ee456c

Browse files
authored
fix(canbus/devkit): enter manual mode instead of chassis error if takeover (#88)
Signed-off-by: Pride Leong <[email protected]>
1 parent a444ba4 commit 5ee456c

File tree

4 files changed

+18
-4
lines changed

4 files changed

+18
-4
lines changed

modules/canbus/vehicle/devkit/devkit_controller.cc

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@
1818

1919
#include <string>
2020

21+
#include "modules/common_msgs/basic_msgs/vehicle_signal.pb.h"
22+
2123
#include "cyber/common/log.h"
2224
#include "cyber/time/time.h"
2325
#include "modules/canbus/common/canbus_gflags.h"
2426
#include "modules/canbus/vehicle/devkit/devkit_message_manager.h"
2527
#include "modules/canbus/vehicle/vehicle_controller.h"
26-
#include "modules/common_msgs/basic_msgs/vehicle_signal.pb.h"
2728
#include "modules/drivers/canbus/can_comm/can_sender.h"
2829
#include "modules/drivers/canbus/can_comm/protocol_data.h"
2930

@@ -424,6 +425,16 @@ Chassis DevkitController::chassis() {
424425
chassis_.set_front_bumper_event(Chassis::BUMPER_INVALID);
425426
}
426427

428+
// if take over, reset to manual mode
429+
if (chassis_detail.devkit().throttle_report_500().throttle_en_state() ==
430+
Throttle_report_500::THROTTLE_EN_STATE_TAKEOVER ||
431+
chassis_detail.devkit().brake_report_501().brake_en_state() ==
432+
Brake_report_501::BRAKE_EN_STATE_TAKEOVER ||
433+
chassis_detail.devkit().steering_report_502().steer_en_state() ==
434+
Steering_report_502::STEER_EN_STATE_TAKEOVER) {
435+
set_driving_mode(Chassis::COMPLETE_MANUAL);
436+
}
437+
427438
return chassis_;
428439
}
429440

modules/canbus/vehicle/devkit/protocol/brake_report_501.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "modules/canbus/vehicle/devkit/protocol/brake_report_501.h"
1818

1919
#include "glog/logging.h"
20+
2021
#include "modules/drivers/canbus/common/byte.h"
2122
#include "modules/drivers/canbus/common/canbus_consts.h"
2223

@@ -40,7 +41,7 @@ void Brakereport501::Parse(const std::uint8_t* bytes, int32_t length,
4041
chassis->mutable_devkit()->mutable_brake_report_501()->set_brake_en_state(
4142
brake_en_state(bytes, length));
4243
chassis->mutable_check_response()->set_is_esp_online(
43-
brake_en_state(bytes, length) == 1);
44+
brake_flt1(bytes, length) == 0 && brake_flt2(bytes, length) == 0);
4445
}
4546

4647
// config detail: {'name': 'brake_pedal_actual', 'offset': 0.0, 'precision':

modules/canbus/vehicle/devkit/protocol/steering_report_502.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "modules/canbus/vehicle/devkit/protocol/steering_report_502.h"
1818

1919
#include "glog/logging.h"
20+
2021
#include "modules/drivers/canbus/common/byte.h"
2122
#include "modules/drivers/canbus/common/canbus_consts.h"
2223

@@ -47,7 +48,7 @@ void Steeringreport502::Parse(const std::uint8_t* bytes, int32_t length,
4748
->mutable_steering_report_502()
4849
->set_steer_angle_actual(steer_angle_actual(bytes, length));
4950
chassis->mutable_check_response()->set_is_eps_online(
50-
steer_en_state(bytes, length) == 1);
51+
steer_flt1(bytes, length) == 0 && steer_flt2(bytes, length) == 0);
5152
}
5253

5354
// config detail: {'bit': 47, 'is_signed_var': False, 'len': 16, 'name':

modules/canbus/vehicle/devkit/protocol/throttle_report_500.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "modules/canbus/vehicle/devkit/protocol/throttle_report_500.h"
1818

1919
#include "glog/logging.h"
20+
2021
#include "modules/drivers/canbus/common/byte.h"
2122
#include "modules/drivers/canbus/common/canbus_consts.h"
2223

@@ -42,7 +43,7 @@ void Throttlereport500::Parse(const std::uint8_t* bytes, int32_t length,
4243
->mutable_throttle_report_500()
4344
->set_throttle_en_state(throttle_en_state(bytes, length));
4445
chassis->mutable_check_response()->set_is_vcu_online(
45-
throttle_en_state(bytes, length) == 1);
46+
throttle_flt1(bytes, length) == 0 && throttle_flt2(bytes, length) == 0);
4647
}
4748

4849
// config detail: {'name': 'throttle_pedal_actual', 'offset': 0.0, 'precision':

0 commit comments

Comments
 (0)