1010import com .revrobotics .spark .config .SparkMaxConfig ;
1111import com .revrobotics .spark .config .SparkBaseConfig .IdleMode ;
1212import com .revrobotics .spark .SparkMax ;
13+
14+ import edu .wpi .first .math .MathUtil ;
1315import edu .wpi .first .math .controller .PIDController ;
1416import edu .wpi .first .math .controller .ProfiledPIDController ;
1517import edu .wpi .first .math .trajectory .TrapezoidProfile ;
1618import edu .wpi .first .math .util .Units ;
1719import edu .wpi .first .units .measure .Angle ;
20+ import edu .wpi .first .wpilibj .Timer ;
1821
1922public class DropperIOSparkMax implements DropperIO {
2023
2124 private ProfiledPIDController controller = new ProfiledPIDController (0 , 0 , 0 , new TrapezoidProfile (-12 , 12 ));
22- private SparkMax rightMotor ; //changed from spark flex to can spark max cuz
25+ private SparkMax rightMotor ;
2326 private RelativeEncoder rightEncoder ;
2427 private SparkMax leftMotor ;
2528 private RelativeEncoder leftEncoder ;
2629 private final ProfiledPIDController pidController ;
2730 private double pi = DropperConstants .PI ;
2831
32+ //some variables for the methods like go to setpoint
33+
34+ double lastSpeed = 0 ; //just blanl
35+ double lastTime = Timer .getFPGATimestamp ();
36+
2937 public DropperIOSparkMax () {
3038 //motors
3139 leftMotor = new SparkMax (DropperConstants .LEFT_DROPPER_MOTOR_ID , MotorType .kBrushless );//ask the type of motor
@@ -89,10 +97,16 @@ public void setSetpoint(double setpoint){
8997 pidController .reset (getAngle (), getAngVelocity ());
9098
9199 }
92-
93100 @ Override
94101 public void goToSetpoint (){
102+ double pidOutput = pidController .calculate (getAngle ()); //feyrgfasrrkguilsrhfdljf;ksdjfakfjieowj;owedsjkllfjweo;ifjoasi;djlkjfwoiej;dksjf;sldjfoaejriofj;orjlkdjsoiifejrkldjsiojrkfjslkfjo;ei;rjdjkljfois;irrje;lsjkajfsoijrofajas
103+ double acceleration = (pidController .getSetpoint ().velocity - lastSpeed ) / (Timer .getFPGATimestamp () - lastTime ); //change in velocity over change in time... physics..
104+ //acceleration of the PID setpoint
105+
106+ setVoltage (MathUtil .clamp (pidOutput , -12 , 12 ));
95107
108+ lastSpeed = pidController .getSetpoint ().velocity ;
109+ lastTime = Timer .getFPGATimestamp ();
96110 }
97111
98112 @ Override
@@ -105,7 +119,7 @@ public void stop(){
105119 //PID
106120
107121 @ Override
108- public void setPIDGains (double kp , ki , kd ){
122+ public default void setPIDGains (double kp , ki , kd ){
109123 velocityPID .setP (kp );//idek
110124 velocityPID .setI (ki );
111125 velocityPID .setD (kd );
0 commit comments