1#ifndef TR_EMBEDDED_CHASSIS_SUBSYSTEM_H
2#define TR_EMBEDDED_CHASSIS_SUBSYSTEM_H
16#define CAN_BUS_TYPE CANHandler::CANBUS_1
17#define MOTOR_TYPE M3508
18#define M3508_POST_MAX_RPM 469
19#define INPUT_THRESHOLD 0.01
22#define SECONDS_PER_MINUTE 60
23#define TICKS_PER_ROTATION 8192.0
24#define WHEEL_DIAMETER_METERS 0.146
26#define MAX_BEYBLADE_SPEED 1800
27#define BEYBLADE_ACCELERATION 0.05
133 static float p_theory(
int LeftFrontPower,
int RightFrontPower,
int LeftBackPower,
int RightBackPower,
int LeftFrontRpm,
int RightFrontRpm,
int LeftBackRpm,
int RightBackRpm);
135 static float Bisection(
int LeftFrontPower,
int RightFrontPower,
int LeftBackPower,
int RightBackPower,
int LeftFrontRpm,
int RightFrontRpm,
int LeftBackRpm,
int RightBackRpm,
float chassisPowerLimit);
337 static double rpmToRadPerSecond(
double RPM);
338 static double radPerSecondToRPM(
double radPerSecond);
341 float chassis_radius;
342 void setOmniKinematics(
double radius);
352 int motorPIDtoPower(
MotorLocation location,
double speed, uint32_t dt);
Definition ChassisSubsystem.h:71
void periodic(IMU::EulerAngles *imuCurr=nullptr)
Definition ChassisSubsystem.cpp:474
double yawOdom
Definition ChassisSubsystem.h:318
PID pid_RF
Definition ChassisSubsystem.h:305
static float Bisection(int LeftFrontPower, int RightFrontPower, int LeftBackPower, int RightBackPower, int LeftFrontRpm, int RightFrontRpm, int LeftBackRpm, int RightBackRpm, float chassisPowerLimit)
Definition ChassisSubsystem.cpp:185
DRIVE_MODE
Definition ChassisSubsystem.h:122
@ REVERSE_YAW_ORIENTED
Definition ChassisSubsystem.h:124
@ ODOM_ORIENTED
Definition ChassisSubsystem.h:126
@ ROBOT_ORIENTED
Definition ChassisSubsystem.h:125
@ YAW_ORIENTED
Definition ChassisSubsystem.h:123
void setBrakeMode(BrakeMode brakeMode)
Definition ChassisSubsystem.cpp:441
uint32_t lastPIDTime
Definition ChassisSubsystem.h:309
static double degreesToRadians(double degrees)
Definition ChassisSubsystem.cpp:485
void setOmniKinematicsLimits(double max_Vel, double max_vOmega)
Definition ChassisSubsystem.cpp:500
BrakeMode
Definition ChassisSubsystem.h:101
@ BRAKE
Definition ChassisSubsystem.h:102
@ COAST
Definition ChassisSubsystem.h:103
float setChassisSpeeds(ChassisSpeeds desiredChassisSpeeds_, DRIVE_MODE mode=ROBOT_ORIENTED)
Definition ChassisSubsystem.cpp:343
static double radiansToTicks(double radians)
Definition ChassisSubsystem.cpp:642
MotorLocation
Definition ChassisSubsystem.h:107
@ RIGHT_BACK
Definition ChassisSubsystem.h:111
@ RIGHT_FRONT
Definition ChassisSubsystem.h:109
@ LEFT_BACK
Definition ChassisSubsystem.h:110
@ LEFT_FRONT
Definition ChassisSubsystem.h:108
WheelSpeeds chassisSpeedsToWheelSpeeds(ChassisSpeeds chassisSpeeds)
Definition ChassisSubsystem.cpp:549
ChassisSpeeds rotateChassisSpeed(ChassisSpeeds speeds, double yawCurrent)
Definition ChassisSubsystem.cpp:384
void setWheelPower(WheelSpeeds wheelPower)
Definition ChassisSubsystem.cpp:330
float setWheelSpeeds(WheelSpeeds wheelSpeeds)
Definition ChassisSubsystem.cpp:224
static double ticksToRadians(double ticks)
Definition ChassisSubsystem.cpp:647
OmniKinematicsLimits m_OmniKinematicsLimits
Definition ChassisSubsystem.h:294
double prevVel
Definition ChassisSubsystem.h:313
int PEAK_POWER_SINGLE
Definition ChassisSubsystem.h:302
DJIMotor & getMotor(MotorLocation location)
Definition ChassisSubsystem.cpp:393
static float p_theory(int LeftFrontPower, int RightFrontPower, int LeftBackPower, int RightBackPower, int LeftFrontRpm, int RightFrontRpm, int LeftBackRpm, int RightBackRpm)
Definition ChassisSubsystem.cpp:162
PID pid_LF
Definition ChassisSubsystem.h:304
void setSpeedFeedforward(MotorLocation location, double FF)
Definition ChassisSubsystem.cpp:421
void setSpeedIntegralCap(MotorLocation location, double cap)
Definition ChassisSubsystem.cpp:416
WheelSpeeds desiredWheelSpeeds
Definition ChassisSubsystem.h:292
void setMotorSpeedPID(MotorLocation location, float kP, float kI, float kD)
Definition ChassisSubsystem.cpp:411
SPEED_UNIT
Definition ChassisSubsystem.h:115
@ RPM
Definition ChassisSubsystem.h:117
@ METER_PER_SECOND
Definition ChassisSubsystem.h:118
@ RAD_PER_SECOND
Definition ChassisSubsystem.h:116
int getHeadingDegrees() const
Definition ChassisSubsystem.cpp:495
void initializeImu()
Definition ChassisSubsystem.cpp:446
double getMotorSpeed(MotorLocation location, SPEED_UNIT unit)
Definition ChassisSubsystem.cpp:451
bool setOdomReference()
Definition ChassisSubsystem.cpp:636
static float limitAcceleration(float desiredRPM, float previousRPM, int power)
Definition ChassisSubsystem.cpp:57
float previousRPM[4]
Definition ChassisSubsystem.h:129
ChassisSpeeds getChassisSpeeds() const
Definition ChassisSubsystem.cpp:338
int PEAK_POWER_ALL
Definition ChassisSubsystem.h:301
void readImu()
Definition ChassisSubsystem.cpp:469
float power_limit
Definition ChassisSubsystem.h:137
static double radiansToDegrees(double radians)
Definition ChassisSubsystem.cpp:490
ChassisSpeeds m_chassisSpeeds
Definition ChassisSubsystem.h:298
int testDataIndex
Definition ChassisSubsystem.h:321
ChassisSpeeds desiredChassisSpeeds
Definition ChassisSubsystem.h:291
WheelSpeeds normalizeWheelSpeeds(WheelSpeeds wheelSpeeds) const
Definition ChassisSubsystem.cpp:313
WheelSpeeds m_wheelSpeeds
Definition ChassisSubsystem.h:299
BrakeMode getBrakeMode()
Definition ChassisSubsystem.cpp:436
int testData[300][4]
Definition ChassisSubsystem.h:320
double imuOdom
Definition ChassisSubsystem.h:319
ChassisSpeeds wheelSpeedsToChassisSpeeds(WheelSpeeds wheelSpeeds)
Definition ChassisSubsystem.cpp:578
WheelSpeeds getWheelSpeeds() const
Definition ChassisSubsystem.cpp:52
PID pid_RB
Definition ChassisSubsystem.h:307
PID pid_LB
Definition ChassisSubsystem.h:306
Definition ChassisSubsystem.h:52
double vY
Definition ChassisSubsystem.h:54
double vX
Definition ChassisSubsystem.h:53
double vOmega
Definition ChassisSubsystem.h:55
Definition ChassisSubsystem.h:74
DJIMotor * yaw_motor
Definition ChassisSubsystem.h:83
int yaw_initial_offset_ticks
Definition ChassisSubsystem.h:84
int left_front_can_id
Definition ChassisSubsystem.h:75
const double radius
Definition ChassisSubsystem.h:80
BNO055 & imu
Definition ChassisSubsystem.h:85
int right_front_can_id
Definition ChassisSubsystem.h:76
const double speed_pid_ff_ks
Definition ChassisSubsystem.h:81
int right_back_can_id
Definition ChassisSubsystem.h:78
int left_back_can_id
Definition ChassisSubsystem.h:77
Definition ChassisSubsystem.h:59
double max_Vel
Definition ChassisSubsystem.h:60
double max_vOmega
Definition ChassisSubsystem.h:61
Definition ChassisSubsystem.h:31
double r1y
Definition ChassisSubsystem.h:32
double r1x
Definition ChassisSubsystem.h:32
double r3y
Definition ChassisSubsystem.h:32
double r2x
Definition ChassisSubsystem.h:32
double r2y
Definition ChassisSubsystem.h:32
double r4x
Definition ChassisSubsystem.h:32
double r3x
Definition ChassisSubsystem.h:32
double r4y
Definition ChassisSubsystem.h:32
Definition ChassisSubsystem.h:36
double RB
Definition ChassisSubsystem.h:40
void operator*=(double scalar)
Definition ChassisSubsystem.h:42
double RF
Definition ChassisSubsystem.h:38
double LF
Definition ChassisSubsystem.h:37
double LB
Definition ChassisSubsystem.h:39