Skip to content

Commit c3787de

Browse files
arm sim
1 parent af5abe4 commit c3787de

5 files changed

Lines changed: 66 additions & 1 deletion

File tree

0 Bytes
Binary file not shown.
1000 Bytes
Binary file not shown.
1.05 KB
Binary file not shown.

src/main/java/frc/robot/subsystems/Arm/ArmIO.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ public class ArmIOInputs {
88
public double angle;
99
public double velocity;
1010
public double appliedVoltage;
11+
public double angleRads;
12+
public double angVelocityRadsPerSec;
1113
}
1214

1315
public default void updateInputs(ArmIOInputs inputs) {}
@@ -21,6 +23,10 @@ public default double getAngVelocity() {
2123
return 0.0;
2224
}
2325

26+
public default void setPosition(double position) {}
27+
28+
public default void stop(){}
29+
2430

2531

2632

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,62 @@
11
package frc.robot.subsystems.Arm;
22

3-
public class ArmIOSim implements ArmIO {}
3+
import edu.wpi.first.math.MathUtil;
4+
import edu.wpi.first.math.controller.ArmFeedforward;
5+
import edu.wpi.first.math.controller.ProfiledPIDController;
6+
import edu.wpi.first.math.system.plant.DCMotor;
7+
import edu.wpi.first.math.trajectory.TrapezoidProfile;
8+
import edu.wpi.first.wpilibj.simulation.SingleJointedArmSim;
9+
10+
public class ArmIOSim implements ArmIO {
11+
private final DCMotor m_armGearbox = DCMotor.getNEO(1);
12+
private final ProfiledPIDController m_controller;
13+
14+
private SingleJointedArmSim sim =
15+
new SingleJointedArmSim(
16+
m_armGearbox,
17+
CoralPivotConstants.CoralPivotSimConstants.kArmReduction,
18+
SingleJointedArmSim.estimateMOI(
19+
CoralPivotConstants.CoralPivotSimConstants.kArmLength,
20+
CoralPivotConstants.CoralPivotSimConstants.kArmMass),
21+
CoralPivotConstants.CoralPivotSimConstants.kArmLength,
22+
CoralPivotConstants.CoralPivotSimConstants.kMinAngleRads,
23+
CoralPivotConstants.CoralPivotSimConstants.kMaxAngleRads,
24+
true,
25+
0.1);
26+
public ArmIOSim() {
27+
m_controller =
28+
new ProfiledPIDController(
29+
CoralPivotConstants.CoralPivotSimConstants.kPivotSimPID[0],
30+
CoralPivotConstants.CoralPivotSimConstants.kPivotSimPID[1],
31+
CoralPivotConstants.CoralPivotSimConstants.kPivotSimPID[2],
32+
new TrapezoidProfile.Constraints(2.85, 15));
33+
34+
35+
m_controller.setTolerance(0.1, 0.05);
36+
}
37+
@Override
38+
public void updateInputs(ArmIOInputs inputs){
39+
sim.update(0.02);
40+
inputs.angVelocityRadsPerSec = sim.getVelocityRadPerSec();
41+
inputs.angleRads = sim.getAngleRads();
42+
}
43+
44+
@Override
45+
public void setVoltage(double motorVolts){
46+
sim.setInputVoltage(motorVolts);
47+
}
48+
49+
@Override
50+
public void setPosition(double position){
51+
double PIDOutput = m_controller.calculate(sim.getAngleRads(), position);
52+
sim.setInputVoltage(MathUtil.clamp(PIDOutput, -12, 12));
53+
54+
}
55+
56+
@Override
57+
public void stop() {
58+
sim.setInputVoltage(0);
59+
}
60+
61+
62+
}

0 commit comments

Comments
 (0)