Skip to content

Commit acf9f65

Browse files
Gear Ratio Calculator (#32)
* added `GearRatioCalculationCommand.java` * Updated * Finished * Updated TRIGONLib * Removed useless method
1 parent d90f4cc commit acf9f65

File tree

4 files changed

+29
-1
lines changed

4 files changed

+29
-1
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ dependencies {
8888
simulationRelease wpi.sim.enableRelease()
8989

9090
implementation 'com.google.code.gson:gson:2.10.1'
91-
implementation 'com.github.Programming-TRIGON:TRIGONLib:2024.2.9'
91+
implementation 'com.github.Programming-TRIGON:TRIGONLib:2024.2.10'
9292

9393
def akitJson = new groovy.json.JsonSlurper().parseText(new File(projectDir.getAbsolutePath() + "/vendordeps/AdvantageKit.json").text)
9494
annotationProcessor "org.littletonrobotics.akit.junction:junction-autolog:$akitJson.version"

src/main/java/frc/trigon/robot/subsystems/pitcher/Pitcher.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import frc.trigon.robot.subsystems.MotorSubsystem;
1616
import frc.trigon.robot.subsystems.ampaligner.AmpAlignerConstants;
1717
import org.littletonrobotics.junction.Logger;
18+
import org.trigon.hardware.phoenix6.cancoder.CANcoderEncoder;
19+
import org.trigon.hardware.phoenix6.cancoder.CANcoderSignal;
1820
import org.trigon.hardware.phoenix6.talonfx.TalonFXMotor;
1921
import org.trigon.hardware.phoenix6.talonfx.TalonFXSignal;
2022

@@ -23,6 +25,7 @@ public class Pitcher extends MotorSubsystem {
2325
private final TalonFXMotor
2426
masterMotor = PitcherConstants.MASTER_MOTOR,
2527
followerMotor = PitcherConstants.FOLLOWER_MOTOR;
28+
private final CANcoderEncoder encoder = PitcherConstants.ENCODER;
2629
private final MotionMagicExpoVoltage positionRequest = new MotionMagicExpoVoltage(0).withEnableFOC(PitcherConstants.FOC_ENABLED);
2730
private final VoltageOut voltageRequest = new VoltageOut(0).withEnableFOC(PitcherConstants.FOC_ENABLED);
2831
private Rotation2d targetPitch = PitcherConstants.DEFAULT_PITCH;
@@ -53,6 +56,7 @@ public void stop() {
5356
@Override
5457
public void updatePeriodically() {
5558
masterMotor.update();
59+
encoder.update();
5660
}
5761

5862
@Override
@@ -88,6 +92,14 @@ public boolean atTargetPitch() {
8892
return Math.abs(masterMotor.getSignal(TalonFXSignal.POSITION) - targetPitch.getRotations()) < PitcherConstants.PITCH_TOLERANCE.getRotations();
8993
}
9094

95+
Rotation2d getRotorPosition() {
96+
return Rotation2d.fromRotations(masterMotor.getSignal(TalonFXSignal.ROTOR_POSITION));
97+
}
98+
99+
Rotation2d getEncoderPosition() {
100+
return Rotation2d.fromRotations(encoder.getSignal(CANcoderSignal.POSITION));
101+
}
102+
91103
void reachTargetPitchFromShootingCalculations() {
92104
targetPitch = shootingCalculations.getTargetShootingState().targetPitch();
93105
setTargetPitch(targetPitch);

src/main/java/frc/trigon/robot/subsystems/pitcher/PitcherCommands.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package frc.trigon.robot.subsystems.pitcher;
22

33
import edu.wpi.first.math.geometry.Rotation2d;
4+
import edu.wpi.first.units.Units;
45
import edu.wpi.first.wpilibj2.command.Command;
56
import edu.wpi.first.wpilibj2.command.StartEndCommand;
67
import frc.trigon.robot.RobotContainer;
78
import org.trigon.commands.ExecuteEndCommand;
9+
import org.trigon.commands.GearRatioCalculationCommand;
810
import org.trigon.commands.NetworkTablesCommand;
911

1012
public class PitcherCommands {
@@ -16,6 +18,15 @@ public static Command getDebuggingCommand() {
1618
);
1719
}
1820

21+
public static Command getCalculateGearRatioCommand() {
22+
return new GearRatioCalculationCommand(
23+
() -> RobotContainer.PITCHER.getRotorPosition().getDegrees(),
24+
() -> RobotContainer.PITCHER.getEncoderPosition().getDegrees(),
25+
(voltage) -> RobotContainer.PITCHER.drive(Units.Volts.of(voltage)),
26+
RobotContainer.PITCHER
27+
);
28+
}
29+
1930
public static Command getReachTargetPitchFromShootingCalculationsCommand() {
2031
return new ExecuteEndCommand(
2132
RobotContainer.PITCHER::reachTargetPitchFromShootingCalculations,

src/main/java/frc/trigon/robot/subsystems/pitcher/PitcherConstants.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import frc.trigon.robot.subsystems.ampaligner.AmpAlignerConstants;
1717
import org.trigon.hardware.RobotHardwareStats;
1818
import org.trigon.hardware.phoenix6.cancoder.CANcoderEncoder;
19+
import org.trigon.hardware.phoenix6.cancoder.CANcoderSignal;
1920
import org.trigon.hardware.phoenix6.talonfx.TalonFXMotor;
2021
import org.trigon.hardware.phoenix6.talonfx.TalonFXSignal;
2122
import org.trigon.hardware.simulation.SingleJointedArmSimulation;
@@ -146,6 +147,7 @@ private static void configureMasterMotor() {
146147
MASTER_MOTOR.registerSignal(TalonFXSignal.MOTOR_VOLTAGE, 100);
147148
MASTER_MOTOR.registerSignal(TalonFXSignal.CLOSED_LOOP_REFERENCE, 100);
148149
MASTER_MOTOR.registerSignal(TalonFXSignal.STATOR_CURRENT, 100);
150+
MASTER_MOTOR.registerSignal(TalonFXSignal.ROTOR_POSITION, 100);
149151
}
150152

151153
private static void configureFollowerMotor() {
@@ -172,5 +174,8 @@ public static void configureEncoder() {
172174

173175
ENCODER.applyConfiguration(config);
174176
ENCODER.setSimulationInputsFromTalonFX(MASTER_MOTOR);
177+
178+
ENCODER.registerSignal(CANcoderSignal.POSITION, 100);
179+
ENCODER.registerSignal(CANcoderSignal.VELOCITY, 100);
175180
}
176181
}

0 commit comments

Comments
 (0)