made the 'Utlities.java' file and started work on the alliance hub switch
This commit is contained in:
1
src/main/deploy/pathplanner/navgrid.json
Normal file
1
src/main/deploy/pathplanner/navgrid.json
Normal file
File diff suppressed because one or more lines are too long
54
src/main/deploy/pathplanner/paths/Example Path.path
Normal file
54
src/main/deploy/pathplanner/paths/Example Path.path
Normal file
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"version": "2025.0",
|
||||
"waypoints": [
|
||||
{
|
||||
"anchor": {
|
||||
"x": 2.0,
|
||||
"y": 7.0
|
||||
},
|
||||
"prevControl": null,
|
||||
"nextControl": {
|
||||
"x": 3.0,
|
||||
"y": 7.0
|
||||
},
|
||||
"isLocked": false,
|
||||
"linkedName": null
|
||||
},
|
||||
{
|
||||
"anchor": {
|
||||
"x": 4.0,
|
||||
"y": 6.0
|
||||
},
|
||||
"prevControl": {
|
||||
"x": 3.0,
|
||||
"y": 6.0
|
||||
},
|
||||
"nextControl": null,
|
||||
"isLocked": false,
|
||||
"linkedName": null
|
||||
}
|
||||
],
|
||||
"rotationTargets": [],
|
||||
"constraintZones": [],
|
||||
"pointTowardsZones": [],
|
||||
"eventMarkers": [],
|
||||
"globalConstraints": {
|
||||
"maxVelocity": 3.0,
|
||||
"maxAcceleration": 3.0,
|
||||
"maxAngularVelocity": 540.0,
|
||||
"maxAngularAcceleration": 720.0,
|
||||
"nominalVoltage": 12.0,
|
||||
"unlimited": false
|
||||
},
|
||||
"goalEndState": {
|
||||
"velocity": 0,
|
||||
"rotation": 0.0
|
||||
},
|
||||
"reversed": false,
|
||||
"folder": null,
|
||||
"idealStartingState": {
|
||||
"velocity": 0,
|
||||
"rotation": 0.0
|
||||
},
|
||||
"useDefaultConstraints": true
|
||||
}
|
||||
32
src/main/deploy/pathplanner/settings.json
Normal file
32
src/main/deploy/pathplanner/settings.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"robotWidth": 0.9,
|
||||
"robotLength": 0.9,
|
||||
"holonomicMode": true,
|
||||
"pathFolders": [],
|
||||
"autoFolders": [],
|
||||
"defaultMaxVel": 3.0,
|
||||
"defaultMaxAccel": 3.0,
|
||||
"defaultMaxAngVel": 540.0,
|
||||
"defaultMaxAngAccel": 720.0,
|
||||
"defaultNominalVoltage": 12.0,
|
||||
"robotMass": 74.088,
|
||||
"robotMOI": 6.883,
|
||||
"robotTrackwidth": 0.546,
|
||||
"driveWheelRadius": 0.048,
|
||||
"driveGearing": 5.143,
|
||||
"maxDriveSpeed": 5.45,
|
||||
"driveMotorType": "krakenX60",
|
||||
"driveCurrentLimit": 60.0,
|
||||
"wheelCOF": 1.2,
|
||||
"flModuleX": 0.273,
|
||||
"flModuleY": 0.273,
|
||||
"frModuleX": 0.273,
|
||||
"frModuleY": -0.273,
|
||||
"blModuleX": -0.273,
|
||||
"blModuleY": 0.273,
|
||||
"brModuleX": -0.273,
|
||||
"brModuleY": -0.273,
|
||||
"bumperOffsetX": 0.0,
|
||||
"bumperOffsetY": 0.0,
|
||||
"robotFeatures": []
|
||||
}
|
||||
@@ -23,7 +23,6 @@ import edu.wpi.first.math.kinematics.SwerveModulePosition;
|
||||
import edu.wpi.first.math.kinematics.SwerveModuleState;
|
||||
import edu.wpi.first.wpilibj.DriverStation;
|
||||
import edu.wpi.first.wpilibj2.command.Command;
|
||||
import edu.wpi.first.wpilibj2.command.PIDCommand;
|
||||
import edu.wpi.first.wpilibj2.command.PrintCommand;
|
||||
import edu.wpi.first.wpilibj2.command.SubsystemBase;
|
||||
import frc.robot.constants.AutoConstants;
|
||||
|
||||
@@ -43,13 +43,42 @@ public class SwerveModule {
|
||||
|
||||
private String moduleName;
|
||||
|
||||
private boolean isAbsoluteEncoderDisabled;
|
||||
|
||||
/**
|
||||
* Builds the swerve module but with the Absolute Encoder disabled.
|
||||
*
|
||||
* This constructor assumes you zeroed the swerve modules (faced all the bevel gears to the left)
|
||||
* before booting up the robot.
|
||||
*
|
||||
* @param moduleName The module name, Front Left, Front Right, etc.
|
||||
* @param drivingCANID The CAN ID of the Kraken used to drive the module wheel
|
||||
* @param turningCANID The CAN ID of the Spark MAX used to turn the module wheel
|
||||
*/
|
||||
public SwerveModule(String moduleName, int drivingCANID, int turningCANID) {
|
||||
this(moduleName, drivingCANID, turningCANID, -1, -1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds the swerve module with the normal features
|
||||
*
|
||||
* @param moduleName The module name, Front Left, Front Right, etc.
|
||||
* @param drivingCANID The CAN ID of the Kraken used to drive the module wheel
|
||||
* @param turningCANID The CAN ID of the Spark MAX used to turn the module wheel
|
||||
* @param analogEncoderID The Analog In port ID for the Thrify Absolute Encoder
|
||||
* @param analogEncoderOffset The angular offset for the absolute encoder to achieve 0 position on the module
|
||||
*/
|
||||
public SwerveModule(String moduleName, int drivingCANID, int turningCANID, int analogEncoderID, double analogEncoderOffset) {
|
||||
isAbsoluteEncoderDisabled = (analogEncoderID == -1) || (analogEncoderOffset < 0);
|
||||
|
||||
drive = new TalonFX(drivingCANID);
|
||||
turning = new SparkMax(turningCANID, MotorType.kBrushless);
|
||||
|
||||
turningRelativeEncoder = turning.getEncoder();
|
||||
|
||||
turningAbsoluteEncoder = new AnalogEncoder(analogEncoderID, 2 * Math.PI, analogEncoderOffset);
|
||||
if(!isAbsoluteEncoderDisabled) {
|
||||
turningAbsoluteEncoder = new AnalogEncoder(analogEncoderID, 2 * Math.PI, analogEncoderOffset);
|
||||
}
|
||||
|
||||
turningClosedLoopController = turning.getClosedLoopController();
|
||||
|
||||
@@ -65,7 +94,12 @@ public class SwerveModule {
|
||||
PersistMode.kPersistParameters
|
||||
);
|
||||
|
||||
turningRelativeEncoder.setPosition(turningAbsoluteEncoder.get());
|
||||
if(isAbsoluteEncoderDisabled){
|
||||
turningRelativeEncoder.setPosition(0);
|
||||
} else {
|
||||
turningRelativeEncoder.setPosition(turningAbsoluteEncoder.get());
|
||||
}
|
||||
|
||||
drive.setPosition(0);
|
||||
|
||||
this.moduleName = "Drivetrain/Modules/" + moduleName;
|
||||
@@ -118,6 +152,10 @@ public class SwerveModule {
|
||||
}
|
||||
|
||||
public void zeroTurningEncoder() {
|
||||
turningRelativeEncoder.setPosition(turningAbsoluteEncoder.get());
|
||||
if(isAbsoluteEncoderDisabled) {
|
||||
turningRelativeEncoder.setPosition(0);
|
||||
} else {
|
||||
turningRelativeEncoder.setPosition(turningAbsoluteEncoder.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user