TR-mbed 1.0
Loading...
Searching...
No Matches
Chassis.h
Go to the documentation of this file.
1//
2// Created by ankit on 1/31/23.
3//
4
5#ifndef TR_EMBEDDED_CHASSIS_H
6#define TR_EMBEDDED_CHASSIS_H
7
8#include <motor/DJIMotor.h>
13// #include <algorithms/WheelKalman.h>
14#include <algorithms/Pose2D.h>
17
18#define CAN_BUS_TYPE CANHandler::CANBUS_1
19#define MOTOR_TYPE M3508
20#define INPUT_THRESHOLD 0.01
21
22#define I2C_SDA PB_7
23#define I2C_SCL PB_8
24#define IMU_RESET PA_8
25
26#define MAX_BEYBLADE_SPEED 1800
27#define BEYBLADE_ACCELERATION 0.05
28
38{
39public:
47 Chassis(short lfId, short rfId, short lbId, short rbId, I2C *i2c);
48
53 {
55 COAST
56 };
57
62 void driveMotors(WheelSpeeds speeds);
63
69 void driveXYR(ChassisSpeeds speeds);
70
71 void driveXYRPower(float chassis_power, uint16_t chassis_power_limit, double lX, double lY, double dt, bool beyblading, double &rotationalPower);
72
73 void driveOffsetAnglePower(float chassis_power, uint16_t chassis_power_limit, ChassisSpeeds speeds, double angleOffset, int dt, double &rotationalPower);
74
75 void driveTurretRelativePower(float chassis_power, uint16_t chassis_power_limit, ChassisSpeeds speeds, double turretAngleDegrees, int dt, double &rotationalPower);
76
83
90 void driveTurretRelative(ChassisSpeeds speeds, double turretAngleDegrees);
91
98 void driveOffsetAngle(ChassisSpeeds speeds, double angleOffset);
99
107 void driveAngle(double angleRadians, double speedRPM, double rotationVelcotiyRPM);
108
117 void beyblade(double xVelocityRPM, double yVelocityRPM, double turretAngleDegrees, bool switchDirections);
118
125 DJIMotor getMotor(int index);
126
133
139 void setBrakeMode(BrakeMode brakeMode);
140
144 void initializeImu();
145
149 void periodic();
150
154 void printMotorAngle();
155
161 double degreesToRadians(double degrees);
162
168
170
172
177 Pose2D getPose();
178
187 void readImu();
188
189
190
192
193 int8_t isInverted[4];
194
195 double prevVel;
196
197 int testData[300][4];
199
200
201private:
202 DJIMotor LF, RF, LB, RB;
203 BrakeMode brakeMode;
204
205 double beybladeSpeed;
206 bool beybladeIncreasing;
207 BNO055 imu;
209
210 double rpmToTicksPerSecond(double RPM);
211 double ticksPerSecondToRPM(double ticksPerSecond);
212 double ticksPerSecondToInchesPerSecond(double ticksPerSecond);
213 double rpmToInchesPerSecond(double RPM);
214
215 WheelSpeeds chassisSpeedsToWheelSpeeds(ChassisSpeeds chassisSpeeds);
216
217 void setMotorPower(int index, double power);
218 void setMotorSpeedRPM(int index, double speed);
219 void setMotorSpeedTicksPerSecond(int index, double speed);
220
221 double getMotorSpeedRPM(int index);
222
223 ChassisKalman chassisKalman;
224 double testAngle;
225 int lastTimeMs;
226
227 short lfId;
228 short rfId;
229 short lbId;
230 short rbId;
231};
232
233#endif // TR_EMBEDDED_CHASSIS_H
Definition BNO055.h:141
Definition ChassisKalman.h:39
Definition Chassis.h:38
int getHeadingDegreesRoll()
Definition Chassis.cpp:383
Pose2D getPose()
Definition Chassis.cpp:389
void driveFieldRelative(ChassisSpeeds speeds)
Definition Chassis.cpp:160
void setBrakeMode(BrakeMode brakeMode)
Definition Chassis.cpp:280
void initializeImu()
Definition Chassis.cpp:285
BrakeMode getBrakeMode()
Definition Chassis.cpp:275
ChassisSpeeds getSpeeds()
Definition Chassis.cpp:397
int testDataIndex
Definition Chassis.h:198
void driveAngle(double angleRadians, double speedRPM, double rotationVelcotiyRPM)
Definition Chassis.cpp:205
int testData[300][4]
Definition Chassis.h:197
double degreesToRadians(double degrees)
Definition Chassis.cpp:366
void periodic()
Definition Chassis.cpp:290
void driveOffsetAngle(ChassisSpeeds speeds, double angleOffset)
Definition Chassis.cpp:191
void driveXYR(ChassisSpeeds speeds)
Definition Chassis.cpp:111
void readImu()
Definition Chassis.cpp:361
int getHeadingDegreesPitch()
Definition Chassis.cpp:377
void beyblade(double xVelocityRPM, double yVelocityRPM, double turretAngleDegrees, bool switchDirections)
Definition Chassis.cpp:212
void driveOffsetAnglePower(float chassis_power, uint16_t chassis_power_limit, ChassisSpeeds speeds, double angleOffset, int dt, double &rotationalPower)
Definition Chassis.cpp:198
int8_t isInverted[4]
Definition Chassis.h:193
void driveXYRPower(float chassis_power, uint16_t chassis_power_limit, double lX, double lY, double dt, bool beyblading, double &rotationalPower)
Definition Chassis.cpp:116
void driveMotors(WheelSpeeds speeds)
Definition Chassis.cpp:102
double prevVel
Definition Chassis.h:195
void driveTurretRelative(ChassisSpeeds speeds, double turretAngleDegrees)
Definition Chassis.cpp:168
BrakeMode
Definition Chassis.h:53
@ COAST
Definition Chassis.h:55
@ BRAKE
Definition Chassis.h:54
void printMotorAngle()
Definition Chassis.cpp:180
bool allMotorsConnected()
DJIMotor getMotor(int index)
Definition Chassis.cpp:249
int getHeadingDegreesYaw()
Definition Chassis.cpp:371
void driveTurretRelativePower(float chassis_power, uint16_t chassis_power_limit, ChassisSpeeds speeds, double turretAngleDegrees, int dt, double &rotationalPower)
Definition Chassis.cpp:174
Definition DJIMotor.h:54
Definition Pose2D.h:13
I2C i2c(PB_9, PB_8)
uint16_t chassis_power_limit
Definition ref_serial.h:305
Definition BNO055.h:88
Definition ChassisSubsystem.h:66
Definition ChassisSubsystem.h:43