Skip to content

Commit afb3df9

Browse files
sensor class sim
1 parent 6436d1d commit afb3df9

File tree

3 files changed

+61
-0
lines changed

3 files changed

+61
-0
lines changed

src/main/java/frc/robot/subsystems/superstructure/intake/sensor/Sensor.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,14 @@ public void periodic() {
2828
public boolean isDetected() {
2929
return hasItem;
3030
}
31+
32+
/** For simulation, request item */
33+
public void simulateItemRequest() {
34+
io.simulateItemDesire();
35+
}
36+
37+
/** For simulation, eject item */
38+
public void simulateItemEjection() {
39+
io.simulateItemEjection();
40+
}
3141
}

src/main/java/frc/robot/subsystems/superstructure/intake/sensor/SensorIO.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,8 @@ public static class SensorIOInputs {
1313

1414
/** Updates the set of loggable inputs. */
1515
default void updateInputs(SensorIOInputs inputs) {}
16+
17+
default void simulateItemDesire() {}
18+
19+
default void simulateItemEjection() {}
1620
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package frc.robot.subsystems.superstructure.intake.sensor;
2+
3+
import java.util.Random;
4+
5+
import edu.wpi.first.wpilibj.Timer;
6+
7+
public class SensorIOSim implements SensorIO {
8+
9+
public static final double MAX_TIME_TILL_ITEM_SECONDS = 2.0;
10+
11+
private final Timer timer = new Timer();
12+
private final Random random = new Random();
13+
14+
private double timeTillItem = 0.0;
15+
private boolean itemRequested = false;
16+
17+
private boolean hasItem = false;
18+
19+
@Override
20+
public void updateInputs(SensorIOInputs inputs) {
21+
inputs.connected = true;
22+
23+
if (itemRequested) {
24+
if (timer.hasElapsed(timeTillItem)) {
25+
hasItem = true;
26+
}
27+
} else {
28+
hasItem = false;
29+
}
30+
31+
inputs.detected = hasItem;
32+
inputs.rawValue = inputs.detected ? 1.0 : 0.0;
33+
}
34+
35+
@Override
36+
public void simulateItemDesire() {
37+
timer.start();
38+
timeTillItem = random.nextDouble() * MAX_TIME_TILL_ITEM_SECONDS;
39+
itemRequested = true;
40+
}
41+
42+
@Override
43+
public void simulateItemEjection() {
44+
itemRequested = false;
45+
hasItem = false;
46+
}
47+
}

0 commit comments

Comments
 (0)