1#ifndef DRIVEBRAIN_CONTROLLER_TEST
2#define DRIVEBRAIN_CONTROLLER_TEST
5#include <gtest/gtest.h>
8 float last_DB_receive_time_millis,
float last_receive_time_millis,
10 unsigned long systick_millis,
float brakePercent,
19 systick.millis = systick_millis;
20 systick.micros = 1000;
29 pedals_data, {}, data, status, {});
33TEST(DrivebrainControllerTesting, signals_sent_within_range) {
35 auto torque_controller_output_s =
37 EXPECT_FLOAT_EQ(torque_controller_output_s.command.speeds_rpm[0], 1);
40TEST(DrivebrainControllerTesting, setpoint_too_latent_still_in_control) {
42 auto torque_controller_output_s =
runTick(
44 EXPECT_FLOAT_EQ(torque_controller_output_s.command.speeds_rpm[0], 0);
48TEST(DrivebrainControllerTesting, failing_stay_failing) {
50 auto torque_controller_output_s =
runTick(
52 EXPECT_FLOAT_EQ(torque_controller_output_s.command.speeds_rpm[0], 0);
54 torque_controller_output_s =
runTick(
56 EXPECT_FLOAT_EQ(torque_controller_output_s.command.speeds_rpm[0], 0);
58 torque_controller_output_s =
runTick(
60 EXPECT_FLOAT_EQ(torque_controller_output_s.command.speeds_rpm[0], 0);
63TEST(DrivebrainControllerTesting, failing_in_control) {
65 auto torque_controller_output_s =
runTick(
67 EXPECT_FLOAT_EQ(torque_controller_output_s.command.speeds_rpm[0], 0);
69 torque_controller_output_s =
runTick(
71 EXPECT_FLOAT_EQ(torque_controller_output_s.command.speeds_rpm[0], 0);
73 torque_controller_output_s =
runTick(
75 EXPECT_FLOAT_EQ(torque_controller_output_s.command.speeds_rpm[0], 0);
77 torque_controller_output_s =
runTick(
79 EXPECT_FLOAT_EQ(torque_controller_output_s.command.speeds_rpm[0], 20000);
83TEST(DrivebrainControllerTesting, failing_reset_success) {
85 auto torque_controller_output_s =
87 EXPECT_FLOAT_EQ(torque_controller_output_s.command.speeds_rpm[0], 0);
89 torque_controller_output_s =
91 torque_controller_output_s =
93 EXPECT_FLOAT_EQ(torque_controller_output_s.command.speeds_rpm[0], 1);
Drivebrain Controller for fail-safe pass-through control of the car RESPONSIBILITIES AND DOCUMENTATIO...
TorqueControllerOutput_s evaluate(const SharedCarState_s &state)
evaluate function for running the business logic
TEST(DrivebrainControllerTesting, signals_sent_within_range)
auto runTick(DrivebrainController *controller, float last_DB_receive_time_millis, float last_receive_time_millis, ControllerMode_e current_control_mode, unsigned long systick_millis, float brakePercent, float accelPercent)
const float AMK_MAX_TORQUE
const float MAX_REGEN_TORQUE
int64_t last_receive_time_millis
the latest time that the MCU received a message w.r.t the current tick's millis
int64_t DB_prev_MCU_recv_millis
the latest MCU last_receive_time_millis that the drivebrain received
veh_vec< float > speed_setpoints_rpm
veh_vec< float > torque_limits_nm
car state struct that contains state of everything about the car including
packages TC Mux indicators: errors, mode, torque limit, bypass
ControllerMode_e active_controller_mode