blob: f72b4be3ab8b80bed7a3533159d232aa8c902a51 [file] [log] [blame]
#ifndef FRC971_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_Q_H_
#define FRC971_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_Q_H_
#include <array>
#include "aos/macros.h"
namespace frc971 {
namespace control_loops {
struct GearLogging {
GearLogging();
void Zero();
int8_t controller_index;
bool left_loop_high;
bool right_loop_high;
int8_t left_state;
int8_t right_state;
};
struct CIMLogging {
CIMLogging();
void Zero();
bool left_in_gear;
bool right_in_gear;
float left_motor_speed;
float right_motor_speed;
float left_velocity;
float right_velocity;
};
struct DrivetrainQueue_Goal {
DrivetrainQueue_Goal();
void Zero();
float wheel;
float wheel_velocity;
float wheel_torque;
float throttle;
float throttle_velocity;
float throttle_torque;
bool highgear;
bool quickturn;
bool control_loop_driving;
float left_goal;
float right_goal;
float max_ss_voltage;
};
struct DrivetrainQueue_Position {
DrivetrainQueue_Position();
void Zero();
float left_encoder;
float right_encoder;
float left_speed;
float right_speed;
float left_shifter_position;
float right_shifter_position;
float low_left_hall;
float high_left_hall;
float low_right_hall;
float high_right_hall;
};
struct DrivetrainQueue_Output {
DrivetrainQueue_Output();
void Zero();
float left_voltage;
float right_voltage;
bool left_high;
bool right_high;
};
struct DrivetrainQueue_Status {
DrivetrainQueue_Status();
void Zero();
float robot_speed;
float estimated_left_position;
float estimated_right_position;
float estimated_left_velocity;
float estimated_right_velocity;
float uncapped_left_voltage;
float uncapped_right_voltage;
float left_voltage_error;
float right_voltage_error;
float profiled_left_position_goal;
float profiled_right_position_goal;
float profiled_left_velocity_goal;
float profiled_right_velocity_goal;
float estimated_angular_velocity_error;
float estimated_heading;
bool output_was_capped;
float ground_angle;
::frc971::control_loops::GearLogging gear_logging;
::frc971::control_loops::CIMLogging cim_logging;
};
class DrivetrainQueue {
public:
typedef DrivetrainQueue_Goal Goal;
DrivetrainQueue_Goal goal;
typedef DrivetrainQueue_Position Position;
DrivetrainQueue_Position position;
typedef DrivetrainQueue_Output Output;
DrivetrainQueue_Output output;
typedef DrivetrainQueue_Status Status;
DrivetrainQueue_Status status;
};
} // namespace control_loops
} // namespace frc971
#endif // FRC971_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_Q_H_