From 821b3964747b3b60afa0164b9fd5e9619cef6570 Mon Sep 17 00:00:00 2001 From: Jazl Jalin Date: Sat, 18 Apr 2026 14:08:15 -0700 Subject: [PATCH 1/7] rumble modifications as per kenta's request --- src/main/deploy/pathplanner/navgrid.json | 1576 +---------------- src/main/java/com/team2813/Robot.java | 30 +- .../java/com/team2813/RobotContainer.java | 4 + 3 files changed, 24 insertions(+), 1586 deletions(-) diff --git a/src/main/deploy/pathplanner/navgrid.json b/src/main/deploy/pathplanner/navgrid.json index 660ca524..ac5f5216 100644 --- a/src/main/deploy/pathplanner/navgrid.json +++ b/src/main/deploy/pathplanner/navgrid.json @@ -1,1575 +1 @@ -{ - "field_size": { - "x": 16.54, - "y": 8.07 - }, - "nodeSizeMeters": 0.3, - "grid": [ - [ - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true - ], - [ - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true - ], - [ - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true - ], - [ - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true - ], - [ - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true - ], - [ - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true - ], - [ - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true - ], - [ - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true - ], - [ - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true - ], - [ - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true - ], - [ - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true - ], - [ - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true - ], - [ - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true - ], - [ - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true - ], - [ - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true - ], - [ - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true - ], - [ - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true - ], - [ - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true - ], - [ - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true - ], - [ - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true - ], - [ - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true - ], - [ - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true - ], - [ - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true - ], - [ - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true - ], - [ - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true - ], - [ - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true - ], - [ - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true - ] - ] -} +{"field_size":{"x":16.54,"y":8.07},"nodeSizeMeters":0.3,"grid":[[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,true,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,true,true,true],[true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true],[true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,true,true,true,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true]]} \ No newline at end of file diff --git a/src/main/java/com/team2813/Robot.java b/src/main/java/com/team2813/Robot.java index d8c9dfac..4f0a3bca 100644 --- a/src/main/java/com/team2813/Robot.java +++ b/src/main/java/com/team2813/Robot.java @@ -174,19 +174,27 @@ public void autonomousExit() { @Override public void teleopInit() {} - /** This function is called periodically during operator control. */ + /** This function is called periodically during operator control. + *

The controller rumbles for 2 seconds at the end of an inactive shift

+ *

and rumbles for 1 second when 5 seconds left in an active shift.

+ */ @Override public void teleopPeriodic() { - double timeLeftInCurrentPhase = HubStatusUtil.timeLeftInCurrentPhase(); - // rumble controllers 3 times if the phase is about to end - // TODO: Rework the comment, Tamir or Tom - if (timeLeftInCurrentPhase <= 3 - && (timeLeftInCurrentPhase - (int) timeLeftInCurrentPhase) > 0.7 - && timeLeftInCurrentPhase > 0) { - robotContainer.setRumbleDriver(); - robotContainer.setRumbleOperator(); - } else { - robotContainer.stopRumble(); + double timeLeftInCurrentPhase = HubStatusUtil.timeLeftInCurrentPhase(); // in seconds + if (HubStatusUtil.isHubActive()) { // Active shift + if (timeLeftInCurrentPhase <= 5 && timeLeftInCurrentPhase > 4) { // rumble beteween 4 and 5 seconds left in active shift, equivalent to rumbling for 1 second with 5 seconds left. + robotContainer.setRumbleDriver(); // RRRRRRRRRRUMMMBLLLLLEEEEEEEEEEEEE + robotContainer.setRumbleOperator(); // RRRRRRRRRRUMMMBLLLLLEEEEEEEEEEEEE + } else { + robotContainer.stopRumble(); // stop rumble at all other times, including when the hub is active with more than 5 seconds left in the shift. + } + } else { // inactive shift + if (timeLeftInCurrentPhase <= 2 && timeLeftInCurrentPhase > 0) { // rumble during the last 2 seconds of an inactive shift, equivalent to rumbling for 2 seconds at the end of an inactive shift. + robotContainer.setRumbleDriver(); // RRRRRRRRRRUMMMBLLLLLEEEEEEEEEEEEE + robotContainer.setRumbleOperator(); // RRRRRRRRRRUMMMBLLLLLEEEEEEEEEEEEE + } else { + robotContainer.stopRumble(); // stop rumble at all other times, including when the hub is inactive with more than 2 seconds left in the shift. + } } } diff --git a/src/main/java/com/team2813/RobotContainer.java b/src/main/java/com/team2813/RobotContainer.java index 5239e4ff..3e26e48f 100644 --- a/src/main/java/com/team2813/RobotContainer.java +++ b/src/main/java/com/team2813/RobotContainer.java @@ -40,6 +40,7 @@ import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; import edu.wpi.first.units.measure.Distance; +import edu.wpi.first.units.measure.Time; import edu.wpi.first.wpilibj.DriverStation; import edu.wpi.first.wpilibj.GenericHID; import edu.wpi.first.wpilibj.XboxController; @@ -228,6 +229,9 @@ public RobotContainer( * instantiating a {@link GenericHID} or one of its subclasses ({@link * edu.wpi.first.wpilibj.Joystick} or {@link XboxController}), and then passing it to a {@link * edu.wpi.first.wpilibj2.command.button.JoystickButton}. + * + * See Controls Documentation + * for more details on the recommended button bindings. */ private void configureButtonBindings() { // Operator controls From d290c6f7e4e0db3be865e6a0cf1a739ee1e91229 Mon Sep 17 00:00:00 2001 From: Jazl Jalin Date: Sat, 18 Apr 2026 14:15:30 -0700 Subject: [PATCH 2/7] spotless --- src/main/deploy/pathplanner/navgrid.json | 1576 ++++++++++++++++- src/main/java/com/team2813/Robot.java | 27 +- .../java/com/team2813/RobotContainer.java | 6 +- 3 files changed, 1598 insertions(+), 11 deletions(-) diff --git a/src/main/deploy/pathplanner/navgrid.json b/src/main/deploy/pathplanner/navgrid.json index ac5f5216..660ca524 100644 --- a/src/main/deploy/pathplanner/navgrid.json +++ b/src/main/deploy/pathplanner/navgrid.json @@ -1 +1,1575 @@ -{"field_size":{"x":16.54,"y":8.07},"nodeSizeMeters":0.3,"grid":[[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,true,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,true,true,true],[true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true],[true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,true,true,true,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true]]} \ No newline at end of file +{ + "field_size": { + "x": 16.54, + "y": 8.07 + }, + "nodeSizeMeters": 0.3, + "grid": [ + [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true + ], + [ + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true + ], + [ + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true + ], + [ + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true + ], + [ + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true + ], + [ + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true + ], + [ + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true + ], + [ + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ] + ] +} diff --git a/src/main/java/com/team2813/Robot.java b/src/main/java/com/team2813/Robot.java index 4f0a3bca..9ae64004 100644 --- a/src/main/java/com/team2813/Robot.java +++ b/src/main/java/com/team2813/Robot.java @@ -174,26 +174,39 @@ public void autonomousExit() { @Override public void teleopInit() {} - /** This function is called periodically during operator control. - *

The controller rumbles for 2 seconds at the end of an inactive shift

- *

and rumbles for 1 second when 5 seconds left in an active shift.

+ /** + * This function is called periodically during operator control. + * + *

The controller rumbles for 2 seconds at the end of an inactive shift + * + *

and rumbles for 1 second when 5 seconds left in an active shift. */ @Override public void teleopPeriodic() { double timeLeftInCurrentPhase = HubStatusUtil.timeLeftInCurrentPhase(); // in seconds if (HubStatusUtil.isHubActive()) { // Active shift - if (timeLeftInCurrentPhase <= 5 && timeLeftInCurrentPhase > 4) { // rumble beteween 4 and 5 seconds left in active shift, equivalent to rumbling for 1 second with 5 seconds left. + if (timeLeftInCurrentPhase <= 5 + && timeLeftInCurrentPhase + > 4) { // rumble beteween 4 and 5 seconds left in active shift, equivalent to rumbling + // for 1 second with 5 seconds left. robotContainer.setRumbleDriver(); // RRRRRRRRRRUMMMBLLLLLEEEEEEEEEEEEE robotContainer.setRumbleOperator(); // RRRRRRRRRRUMMMBLLLLLEEEEEEEEEEEEE } else { - robotContainer.stopRumble(); // stop rumble at all other times, including when the hub is active with more than 5 seconds left in the shift. + robotContainer + .stopRumble(); // stop rumble at all other times, including when the hub is active with + // more than 5 seconds left in the shift. } } else { // inactive shift - if (timeLeftInCurrentPhase <= 2 && timeLeftInCurrentPhase > 0) { // rumble during the last 2 seconds of an inactive shift, equivalent to rumbling for 2 seconds at the end of an inactive shift. + if (timeLeftInCurrentPhase <= 2 + && timeLeftInCurrentPhase + > 0) { // rumble during the last 2 seconds of an inactive shift, equivalent to + // rumbling for 2 seconds at the end of an inactive shift. robotContainer.setRumbleDriver(); // RRRRRRRRRRUMMMBLLLLLEEEEEEEEEEEEE robotContainer.setRumbleOperator(); // RRRRRRRRRRUMMMBLLLLLEEEEEEEEEEEEE } else { - robotContainer.stopRumble(); // stop rumble at all other times, including when the hub is inactive with more than 2 seconds left in the shift. + robotContainer + .stopRumble(); // stop rumble at all other times, including when the hub is inactive + // with more than 2 seconds left in the shift. } } } diff --git a/src/main/java/com/team2813/RobotContainer.java b/src/main/java/com/team2813/RobotContainer.java index 3e26e48f..d8a4366c 100644 --- a/src/main/java/com/team2813/RobotContainer.java +++ b/src/main/java/com/team2813/RobotContainer.java @@ -40,7 +40,6 @@ import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; import edu.wpi.first.units.measure.Distance; -import edu.wpi.first.units.measure.Time; import edu.wpi.first.wpilibj.DriverStation; import edu.wpi.first.wpilibj.GenericHID; import edu.wpi.first.wpilibj.XboxController; @@ -230,8 +229,9 @@ public RobotContainer( * edu.wpi.first.wpilibj.Joystick} or {@link XboxController}), and then passing it to a {@link * edu.wpi.first.wpilibj2.command.button.JoystickButton}. * - * See Controls Documentation - * for more details on the recommended button bindings. + *

See Controls + * Documentation for more details on the recommended button bindings. */ private void configureButtonBindings() { // Operator controls From 3fc3e936924c1ff8ff6a1d7478c2e2318fd73adb Mon Sep 17 00:00:00 2001 From: Jazl Date: Tue, 21 Apr 2026 05:35:32 +0000 Subject: [PATCH 3/7] added a small todo, and resolved some comments --- src/main/java/com/team2813/Robot.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/team2813/Robot.java b/src/main/java/com/team2813/Robot.java index 9ae64004..342ef532 100644 --- a/src/main/java/com/team2813/Robot.java +++ b/src/main/java/com/team2813/Robot.java @@ -183,6 +183,7 @@ public void teleopInit() {} */ @Override public void teleopPeriodic() { + // TODO: mayhaps add a unit test to cover this(?) double timeLeftInCurrentPhase = HubStatusUtil.timeLeftInCurrentPhase(); // in seconds if (HubStatusUtil.isHubActive()) { // Active shift if (timeLeftInCurrentPhase <= 5 From 882eff5bfb6fdadbdeced3fc1f8ff86fc118eb4e Mon Sep 17 00:00:00 2001 From: Jazl Jalin Date: Tue, 21 Apr 2026 23:28:00 -0700 Subject: [PATCH 4/7] added test --- src/main/java/com/team2813/Robot.java | 39 +++++++------------ .../com/team2813/RobotTeleopRumbleTest.java | 33 ++++++++++++++++ 2 files changed, 46 insertions(+), 26 deletions(-) create mode 100644 src/test/java/com/team2813/RobotTeleopRumbleTest.java diff --git a/src/main/java/com/team2813/Robot.java b/src/main/java/com/team2813/Robot.java index 342ef532..fb3faa00 100644 --- a/src/main/java/com/team2813/Robot.java +++ b/src/main/java/com/team2813/Robot.java @@ -183,35 +183,22 @@ public void teleopInit() {} */ @Override public void teleopPeriodic() { - // TODO: mayhaps add a unit test to cover this(?) - double timeLeftInCurrentPhase = HubStatusUtil.timeLeftInCurrentPhase(); // in seconds - if (HubStatusUtil.isHubActive()) { // Active shift - if (timeLeftInCurrentPhase <= 5 - && timeLeftInCurrentPhase - > 4) { // rumble beteween 4 and 5 seconds left in active shift, equivalent to rumbling - // for 1 second with 5 seconds left. - robotContainer.setRumbleDriver(); // RRRRRRRRRRUMMMBLLLLLEEEEEEEEEEEEE - robotContainer.setRumbleOperator(); // RRRRRRRRRRUMMMBLLLLLEEEEEEEEEEEEE - } else { - robotContainer - .stopRumble(); // stop rumble at all other times, including when the hub is active with - // more than 5 seconds left in the shift. - } - } else { // inactive shift - if (timeLeftInCurrentPhase <= 2 - && timeLeftInCurrentPhase - > 0) { // rumble during the last 2 seconds of an inactive shift, equivalent to - // rumbling for 2 seconds at the end of an inactive shift. - robotContainer.setRumbleDriver(); // RRRRRRRRRRUMMMBLLLLLEEEEEEEEEEEEE - robotContainer.setRumbleOperator(); // RRRRRRRRRRUMMMBLLLLLEEEEEEEEEEEEE - } else { - robotContainer - .stopRumble(); // stop rumble at all other times, including when the hub is inactive - // with more than 2 seconds left in the shift. - } + boolean shouldRumble = + shouldRumble(HubStatusUtil.isHubActive(), HubStatusUtil.timeLeftInCurrentPhase()); + if (shouldRumble) { + robotContainer.setRumbleDriver(); + robotContainer.setRumbleOperator(); + } else { + robotContainer.stopRumble(); } } + static boolean shouldRumble(boolean hubActive, double timeLeftInCurrentPhase) { + return hubActive + ? timeLeftInCurrentPhase <= 5 && timeLeftInCurrentPhase > 4 + : timeLeftInCurrentPhase <= 2 && timeLeftInCurrentPhase > 0; + } + /** This function is called once when test mode is enabled. */ @Override public void testInit() { diff --git a/src/test/java/com/team2813/RobotTeleopRumbleTest.java b/src/test/java/com/team2813/RobotTeleopRumbleTest.java new file mode 100644 index 00000000..1f1af4e9 --- /dev/null +++ b/src/test/java/com/team2813/RobotTeleopRumbleTest.java @@ -0,0 +1,33 @@ +package com.team2813; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +class RobotTeleopRumbleTest { + @ParameterizedTest + @CsvSource({ + // Active hub shift: rumble only when 4 < time <= 5. + "true,5.1,false", + "true,5.0,true", + "true,4.5,true", + "true,4.0,false", + "true,0.0,false", + // Inactive hub shift: rumble only when 0 < time <= 2. + "false,2.1,false", + "false,2.0,true", + "false,1.0,true", + "false,0.0,false", + "false,-0.1,false" + }) + void shouldRumbleMatchesTeleopPeriodicLogic(boolean hubActive, double timeLeft, boolean expected) { + if (expected) { + assertTrue(Robot.shouldRumble(hubActive, timeLeft)); + } else { + assertFalse(Robot.shouldRumble(hubActive, timeLeft)); + } + } +} + From 61fca7e51eb91c4a33a6729ca6e014b7f9d05af2 Mon Sep 17 00:00:00 2001 From: Jazl Jalin Date: Wed, 22 Apr 2026 17:04:17 -0700 Subject: [PATCH 5/7] minor fixes --- src/main/java/com/team2813/Constants.java | 15 +++++++++++++++ src/main/java/com/team2813/Robot.java | 16 ++++------------ src/main/java/com/team2813/RobotContainer.java | 16 ++-------------- .../java/com/team2813/util/HubStatusUtil.java | 11 +++++++++++ .../{ => util}/RobotTeleopRumbleTest.java | 10 +++++----- 5 files changed, 37 insertions(+), 31 deletions(-) rename src/test/java/com/team2813/{ => util}/RobotTeleopRumbleTest.java (71%) diff --git a/src/main/java/com/team2813/Constants.java b/src/main/java/com/team2813/Constants.java index d96a082d..6ab3fb0b 100644 --- a/src/main/java/com/team2813/Constants.java +++ b/src/main/java/com/team2813/Constants.java @@ -8,6 +8,8 @@ package com.team2813; import edu.wpi.first.wpilibj.DriverStation; +import edu.wpi.first.wpilibj.GenericHID; +import edu.wpi.first.wpilibj2.command.button.CommandXboxController; /** * This class defines the runtime mode used by AdvantageKit. The mode is always "real" when running @@ -41,6 +43,9 @@ public final class Constants { // Kicker Motor public static final int KICKER_MOTOR_ID = 21; + public static final CommandXboxController driveController = new CommandXboxController(0); + public static final CommandXboxController operatorController = new CommandXboxController(1); + /** * Returns true if the robot is on the red alliance. * @@ -52,4 +57,14 @@ public static boolean onRed() { return DriverStation.getAlliance().orElse(DriverStation.Alliance.Blue) == DriverStation.Alliance.Red; } + + public static void rumble() { + driveController.setRumble(GenericHID.RumbleType.kBothRumble, 1); + operatorController.setRumble(GenericHID.RumbleType.kBothRumble, 1); + } + + public static void stopRumble() { + driveController.setRumble(GenericHID.RumbleType.kBothRumble, 0); + operatorController.setRumble(GenericHID.RumbleType.kBothRumble, 0); + } } diff --git a/src/main/java/com/team2813/Robot.java b/src/main/java/com/team2813/Robot.java index fb3faa00..f22c0295 100644 --- a/src/main/java/com/team2813/Robot.java +++ b/src/main/java/com/team2813/Robot.java @@ -131,7 +131,7 @@ public void robotPeriodic() { /** This function is called once when the robot is disabled. */ @Override public void disabledInit() { - robotContainer.stopRumble(); + Constants.stopRumble(); } /** This function is called periodically when disabled. */ @@ -183,22 +183,14 @@ public void teleopInit() {} */ @Override public void teleopPeriodic() { - boolean shouldRumble = - shouldRumble(HubStatusUtil.isHubActive(), HubStatusUtil.timeLeftInCurrentPhase()); + boolean shouldRumble = HubStatusUtil.shouldRumble(); if (shouldRumble) { - robotContainer.setRumbleDriver(); - robotContainer.setRumbleOperator(); + Constants.rumble(); } else { - robotContainer.stopRumble(); + Constants.stopRumble(); } } - static boolean shouldRumble(boolean hubActive, double timeLeftInCurrentPhase) { - return hubActive - ? timeLeftInCurrentPhase <= 5 && timeLeftInCurrentPhase > 4 - : timeLeftInCurrentPhase <= 2 && timeLeftInCurrentPhase > 0; - } - /** This function is called once when test mode is enabled. */ @Override public void testInit() { diff --git a/src/main/java/com/team2813/RobotContainer.java b/src/main/java/com/team2813/RobotContainer.java index d8a4366c..d0699ec1 100644 --- a/src/main/java/com/team2813/RobotContainer.java +++ b/src/main/java/com/team2813/RobotContainer.java @@ -7,6 +7,8 @@ package com.team2813; +import static com.team2813.Constants.driveController; +import static com.team2813.Constants.operatorController; import static com.team2813.subsystems.vision.VisionConstants.aprilTagLayout; import com.pathplanner.lib.auto.AutoBuilder; @@ -44,7 +46,6 @@ import edu.wpi.first.wpilibj.GenericHID; import edu.wpi.first.wpilibj.XboxController; import edu.wpi.first.wpilibj2.command.*; -import edu.wpi.first.wpilibj2.command.button.CommandXboxController; import edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine; import java.util.Optional; import java.util.function.BooleanSupplier; @@ -70,9 +71,6 @@ public class RobotContainer { private final Shooter shooter; private final Kicker kicker; - // Controller - private final CommandXboxController driveController = new CommandXboxController(0); - private final CommandXboxController operatorController = new CommandXboxController(1); // Dashboard inputs private final LoggedDashboardChooser autoChooser; @@ -328,16 +326,6 @@ public void setRumbleOperator() { operatorController.setRumble(GenericHID.RumbleType.kLeftRumble, 1); } - public void setRumbleDriver() { - // TODO: test rumble values with driver - driveController.setRumble(GenericHID.RumbleType.kLeftRumble, 1); - } - - public void stopRumble() { - operatorController.setRumble(GenericHID.RumbleType.kBothRumble, 0); - driveController.setRumble(GenericHID.RumbleType.kBothRumble, 0); - } - /** * Use this to pass the autonomous command to the main {@link Robot} class. * diff --git a/src/main/java/com/team2813/util/HubStatusUtil.java b/src/main/java/com/team2813/util/HubStatusUtil.java index ce15f049..56ec23be 100644 --- a/src/main/java/com/team2813/util/HubStatusUtil.java +++ b/src/main/java/com/team2813/util/HubStatusUtil.java @@ -100,4 +100,15 @@ public static double timeLeftInCurrentPhase() { return matchTimeInSeconds; } else return 0; } + + public static boolean shouldRumble() { + double tLeft = timeLeftInCurrentPhase(); + return isHubActive() ? tLeft <= 5 && tLeft > 4 : tLeft <= 2 && tLeft > 0; + } + + static boolean shouldRumble(boolean hubActive, double timeLeftInCurrentPhase) { + return hubActive + ? timeLeftInCurrentPhase <= 5 && timeLeftInCurrentPhase > 4 + : timeLeftInCurrentPhase <= 2 && timeLeftInCurrentPhase > 0; + } } diff --git a/src/test/java/com/team2813/RobotTeleopRumbleTest.java b/src/test/java/com/team2813/util/RobotTeleopRumbleTest.java similarity index 71% rename from src/test/java/com/team2813/RobotTeleopRumbleTest.java rename to src/test/java/com/team2813/util/RobotTeleopRumbleTest.java index 1f1af4e9..a39ebbfb 100644 --- a/src/test/java/com/team2813/RobotTeleopRumbleTest.java +++ b/src/test/java/com/team2813/util/RobotTeleopRumbleTest.java @@ -1,4 +1,4 @@ -package com.team2813; +package com.team2813.util; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -22,12 +22,12 @@ class RobotTeleopRumbleTest { "false,0.0,false", "false,-0.1,false" }) - void shouldRumbleMatchesTeleopPeriodicLogic(boolean hubActive, double timeLeft, boolean expected) { + void shouldRumbleMatchesTeleopPeriodicLogic( + boolean hubActive, double timeLeft, boolean expected) { if (expected) { - assertTrue(Robot.shouldRumble(hubActive, timeLeft)); + assertTrue(HubStatusUtil.shouldRumble(hubActive, timeLeft)); } else { - assertFalse(Robot.shouldRumble(hubActive, timeLeft)); + assertFalse(HubStatusUtil.shouldRumble(hubActive, timeLeft)); } } } - From 988313cae501daa8bab8766daa1f79e3237d262a Mon Sep 17 00:00:00 2001 From: cuttestkittensrule Date: Wed, 22 Apr 2026 19:31:26 -0700 Subject: [PATCH 6/7] Apply spotless --- src/main/java/com/team2813/Constants.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/team2813/Constants.java b/src/main/java/com/team2813/Constants.java index 44d7c546..4ff1ae1e 100644 --- a/src/main/java/com/team2813/Constants.java +++ b/src/main/java/com/team2813/Constants.java @@ -45,13 +45,12 @@ public final class Constants { // Kicker Motor public static final int KICKER_MOTOR_ID = 21; - + public static final int HOOD_MOTOR_ID = 23; public static final CommandXboxController driveController = new CommandXboxController(0); public static final CommandXboxController operatorController = new CommandXboxController(1); - /** * Returns true if the robot is on the red alliance. * From 0097a2d539e2e66bd2e619bb3b822d0344a8b28e Mon Sep 17 00:00:00 2001 From: Jazl Date: Fri, 24 Apr 2026 21:15:55 -0700 Subject: [PATCH 7/7] Update src/main/java/com/team2813/util/HubStatusUtil.java Co-authored-by: cuttestkittensrule --- src/main/java/com/team2813/util/HubStatusUtil.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/team2813/util/HubStatusUtil.java b/src/main/java/com/team2813/util/HubStatusUtil.java index 56ec23be..e1d7e89c 100644 --- a/src/main/java/com/team2813/util/HubStatusUtil.java +++ b/src/main/java/com/team2813/util/HubStatusUtil.java @@ -102,13 +102,10 @@ public static double timeLeftInCurrentPhase() { } public static boolean shouldRumble() { - double tLeft = timeLeftInCurrentPhase(); - return isHubActive() ? tLeft <= 5 && tLeft > 4 : tLeft <= 2 && tLeft > 0; + return shouldRumble(isHubActive(), timeLeftInCurrentPhase()); } - static boolean shouldRumble(boolean hubActive, double timeLeftInCurrentPhase) { - return hubActive - ? timeLeftInCurrentPhase <= 5 && timeLeftInCurrentPhase > 4 - : timeLeftInCurrentPhase <= 2 && timeLeftInCurrentPhase > 0; + static boolean shouldRumble(boolean hubActive, double tLeft) { + return hubActive ? tLeft <= 5 && tLeft > 4 : tLeft <= 2 && tLeft > 0; } }