Skip to content

Commit d0f592e

Browse files
committed
added excel sheet logic
1 parent b9c8681 commit d0f592e

File tree

4 files changed

+62
-19
lines changed

4 files changed

+62
-19
lines changed

Competition/src/main/cpp/subsystems/Drivetrain.cpp

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -245,15 +245,24 @@ void Drivetrain::assignOutputs()
245245
units::radians_per_second_t rotRPS = units::radians_per_second_t{rot * SwerveConstants::ROTATION_MAX_SPEED_RPS};
246246

247247
if(state.aButtonPressed){
248-
double magnitude = std::sqrt(std::pow(xSpeed, 2) + std::pow(ySpeed, 2));
249-
xSpeed /= magnitude;
250-
ySpeed /= magnitude;
251-
xSpeedMPS = units::meters_per_second_t{xSpeed};
252-
ySpeedMPS = units::meters_per_second_t{ySpeed};
253-
if(rot != 0){
254-
int sign = std::signbit(rot) == 0 ? 1 : -1;
255-
rotRPS = units::radians_per_second_t{SwerveConstants::ROTATION_SLOW_SPEED_RPS};
256-
}
248+
xSpeedMPS = units::meters_per_second_t{xSpeed * SwerveConstants::DRIVE_SLOW_SPEED_MPS};
249+
ySpeedMPS = units::meters_per_second_t{ySpeed * SwerveConstants::DRIVE_SLOW_SPEED_MPS};
250+
rotRPS = units::radians_per_second_t{rot * SwerveConstants::ROTATION_SLOW_SPEED_RPS};
251+
252+
253+
// double magnitude = hypot(xSpeed, ySpeed);
254+
// if (magnitude > 1)
255+
// {
256+
// xSpeed /= magnitude;
257+
// ySpeed /= magnitude;
258+
// xSpeedMPS = units::meters_per_second_t{xSpeed};
259+
// ySpeedMPS = units::meters_per_second_t{ySpeed};
260+
// }
261+
262+
// if(rot != 0){
263+
// int sign = std::signbit(rot) == 0 ? 1 : -1;
264+
// rotRPS = units::radians_per_second_t{rot * SwerveConstants::ROTATION_SLOW_SPEED_RPS};
265+
// }
257266
}
258267
// double heading = getPose_m().Rotation().Degrees().to<double>();
259268
// if (state.bButtonPressed) {

Competition/src/main/cpp/subsystems/TurretTracker.cpp

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ TurretTracker::TurretTracker() : ValorSubsystem()
1616
void TurretTracker::init() {
1717
initTable("TurretTracker");
1818
table->PutBoolean("Use Turret Shoot", false);
19+
table->PutNumber("Joystick Multiplier", ShooterConstants::jMultiplier);
1920
}
2021

2122
void TurretTracker::setDrivetrain(Drivetrain *dt){
@@ -31,31 +32,59 @@ void TurretTracker::assessInputs() {
3132
}
3233

3334
void TurretTracker::analyzeDashboard() {
35+
state.jMultiplier = table->GetNumber("Joystick Multiplier", ShooterConstants::jMultiplier);
36+
}
37+
38+
double TurretTracker::tMinusJ(double robotHeading, double turretPos, double jx, double jy)
39+
{
40+
double turretHeading = robotHeading - 90 + turretPos;
41+
if (turretHeading < -180) turretHeading += 360;
42+
if (turretHeading > 180) turretHeading -= 360;
43+
44+
double tx = (shooter->state.distanceToHub) * cos(turretHeading * MathConstants::toRadians);
45+
double ty = (shooter->state.distanceToHub) * sin(turretHeading * MathConstants::toRadians);
46+
47+
jx *= state.jMultiplier;
48+
jy *= state.jMultiplier;
49+
50+
double rx = tx - jx;
51+
double ry = ty - jy;
3452

53+
double turretHeadingDesired = atan2(ry, rx);
54+
double deltaHeading = turretHeading - turretHeadingDesired;
55+
56+
if (deltaHeading < -180) deltaHeading += 360;
57+
if (deltaHeading > 180) deltaHeading -= 360;
58+
59+
table->PutNumber("Delta Heading", deltaHeading);
60+
return deltaHeading;
3561
}
3662

3763
void TurretTracker::assignOutputs() {
38-
// state.cachedVX = drivetrain->getKinematics().ToChassisSpeeds().vx.to<double>();
39-
// state.cachedVY = drivetrain->getKinematics().ToChassisSpeeds().vy.to<double>();
40-
// state.cachedVT = drivetrain->getKinematics().ToChassisSpeeds().omega.to<double>();
41-
4264
double tv = shooter->state.tv;
4365

66+
double robotHeading = drivetrain->getPose_m().Rotation().Degrees().to<double>();
67+
double turretPos = shooter->turretEncoder.GetPosition();
68+
double jx = drivetrain->state.leftStickX;
69+
double jy = -1 * (drivetrain->state.leftStickY);
70+
4471
if (tv == 1) {
4572
state.cachedTx = shooter->state.tx;
4673
// 0.75 = limeligh KP
4774
state.target = (-state.cachedTx * 0.75) + shooter->turretEncoder.GetPosition();
48-
49-
state.cachedHeading = drivetrain->getPose_m().Rotation().Degrees().to<double>();
75+
76+
state.target += tMinusJ(robotHeading, turretPos, jx, jy);
77+
78+
state.cachedHeading = robotHeading;
5079
state.cachedX = drivetrain->getPose_m().X().to<double>();
5180
state.cachedY = drivetrain->getPose_m().Y().to<double>();
52-
state.cachedTurretPos = shooter->turretEncoder.GetPosition();
81+
state.cachedTurretPos = turretPos;
5382
}
5483
else {
5584
if (table->GetBoolean("Use Turret Shoot", false))
56-
state.target = -1 * drivetrain->getPose_m().Rotation().Degrees().to<double>() + state.cachedTurretPos - state.cachedTx;
85+
state.target = -1 * robotHeading + state.cachedTurretPos - state.cachedTx;
5786
else
58-
state.target = shooter->turretEncoder.GetPosition();
87+
state.target = turretPos;
5988
}
6089

6190
if (state.target < -90) {

Competition/src/main/include/Constants.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ namespace ShooterConstants{
128128
constexpr static double limelightAngle = 50;
129129
constexpr static double hubHeight = 2.64;
130130
constexpr static double limelightHeight = .6075;
131+
132+
const static double jMultiplier = .4;
131133

132134
constexpr static double flywheelKP1 = 0.1;
133135
constexpr static double flywheelKI1 = 0;

Competition/src/main/include/subsystems/TurretTracker.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
#include "Drivetrain.h"
1313
#include "Shooter.h"
1414

15-
1615
#ifndef TURRETTRACKER_H
1716
#define TURRETTRACKER_H
1817

@@ -29,6 +28,8 @@ class TurretTracker : public ValorSubsystem
2928
void analyzeDashboard();
3029
void assignOutputs();
3130

31+
double tMinusJ(double robotHeading, double turretPos, double jx, double jy);
32+
3233
struct x
3334
{
3435
double target;
@@ -46,6 +47,8 @@ class TurretTracker : public ValorSubsystem
4647

4748
double cachedTurretPos;
4849

50+
double jMultiplier;
51+
4952
} state;
5053

5154

0 commit comments

Comments
 (0)