diff --git a/.VSCodeCounter/details.md b/.VSCodeCounter/details.md new file mode 100644 index 0000000..1306275 --- /dev/null +++ b/.VSCodeCounter/details.md @@ -0,0 +1,98 @@ +# Details + +Date : 2020-03-13 19:46:18 + +Directory c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main + +Total : 83 files, 4888 codes, 1770 comments, 1110 blanks, all 7768 lines + +[summary](results.md) + +## Files +| filename | language | code | comment | blank | total | +| :--- | :--- | ---: | ---: | ---: | ---: | +| [src/main/deploy/paths/DriveOffLineBackward.wpilib.json](/src/main/deploy/paths/DriveOffLineBackward.wpilib.json) | JSON | 1 | 0 | 0 | 1 | +| [src/main/deploy/paths/DriveOffLineForward.wpilib.json](/src/main/deploy/paths/DriveOffLineForward.wpilib.json) | JSON | 1 | 0 | 0 | 1 | +| [src/main/deploy/paths/EightBallMid0.wpilib.json](/src/main/deploy/paths/EightBallMid0.wpilib.json) | JSON | 1 | 0 | 0 | 1 | +| [src/main/deploy/paths/EightBallMid1.wpilib.json](/src/main/deploy/paths/EightBallMid1.wpilib.json) | JSON | 1 | 0 | 0 | 1 | +| [src/main/deploy/paths/EightBallMid2.wpilib.json](/src/main/deploy/paths/EightBallMid2.wpilib.json) | JSON | 1 | 0 | 0 | 1 | +| [src/main/deploy/paths/EightBallMidComplete.wpilib.json](/src/main/deploy/paths/EightBallMidComplete.wpilib.json) | JSON | 1 | 0 | 0 | 1 | +| [src/main/deploy/paths/FiveBallMidComplete.wpilib.json](/src/main/deploy/paths/FiveBallMidComplete.wpilib.json) | JSON | 1 | 0 | 0 | 1 | +| [src/main/deploy/paths/SixBallMid0.wpilib.json](/src/main/deploy/paths/SixBallMid0.wpilib.json) | JSON | 1 | 0 | 0 | 1 | +| [src/main/deploy/paths/SixBallMid1.wpilib.json](/src/main/deploy/paths/SixBallMid1.wpilib.json) | JSON | 1 | 0 | 0 | 1 | +| [src/main/deploy/paths/SixBallMidComplete.wpilib.json](/src/main/deploy/paths/SixBallMidComplete.wpilib.json) | JSON | 1 | 0 | 0 | 1 | +| [src/main/deploy/paths/TenBallMidComplete.wpilib.json](/src/main/deploy/paths/TenBallMidComplete.wpilib.json) | JSON | 1 | 0 | 0 | 1 | +| [src/main/driverStation/GOAT DRIVERSTATION.json](/src/main/driverStation/GOAT DRIVERSTATION.json) | JSON | 1,014 | 0 | 0 | 1,014 | +| [src/main/driverStation/themes/Ridgbotics/ridgeboticstheme.css](/src/main/driverStation/themes/Ridgbotics/ridgeboticstheme.css) | CSS | 8 | 0 | 1 | 9 | +| [src/main/java/frc4388/robot/Constants.java](/src/main/java/frc4388/robot/Constants.java) | Java | 157 | 32 | 41 | 230 | +| [src/main/java/frc4388/robot/Main.java](/src/main/java/frc4388/robot/Main.java) | Java | 9 | 16 | 5 | 30 | +| [src/main/java/frc4388/robot/Robot.java](/src/main/java/frc4388/robot/Robot.java) | Java | 59 | 63 | 24 | 146 | +| [src/main/java/frc4388/robot/RobotContainer.java](/src/main/java/frc4388/robot/RobotContainer.java) | Java | 312 | 145 | 96 | 553 | +| [src/main/java/frc4388/robot/commands/InterruptSubystem.java](/src/main/java/frc4388/robot/commands/InterruptSubystem.java) | Java | 21 | 14 | 8 | 43 | +| [src/main/java/frc4388/robot/commands/auto/AutoPath1FromCenter.java](/src/main/java/frc4388/robot/commands/auto/AutoPath1FromCenter.java) | Java | 22 | 19 | 6 | 47 | +| [src/main/java/frc4388/robot/commands/auto/AutoPath2FromRight.java](/src/main/java/frc4388/robot/commands/auto/AutoPath2FromRight.java) | Java | 26 | 23 | 6 | 55 | +| [src/main/java/frc4388/robot/commands/auto/DriveOffLineBackward.java](/src/main/java/frc4388/robot/commands/auto/DriveOffLineBackward.java) | Java | 13 | 14 | 5 | 32 | +| [src/main/java/frc4388/robot/commands/auto/DriveOffLineForward.java](/src/main/java/frc4388/robot/commands/auto/DriveOffLineForward.java) | Java | 11 | 14 | 5 | 30 | +| [src/main/java/frc4388/robot/commands/auto/EightBallAutoMiddle.java](/src/main/java/frc4388/robot/commands/auto/EightBallAutoMiddle.java) | Java | 11 | 14 | 5 | 30 | +| [src/main/java/frc4388/robot/commands/auto/FiveBallAutoMiddle.java](/src/main/java/frc4388/robot/commands/auto/FiveBallAutoMiddle.java) | Java | 12 | 13 | 4 | 29 | +| [src/main/java/frc4388/robot/commands/auto/SixBallAutoMiddle.java](/src/main/java/frc4388/robot/commands/auto/SixBallAutoMiddle.java) | Java | 16 | 14 | 6 | 36 | +| [src/main/java/frc4388/robot/commands/auto/TankDriveVelocity.java](/src/main/java/frc4388/robot/commands/auto/TankDriveVelocity.java) | Java | 42 | 14 | 12 | 68 | +| [src/main/java/frc4388/robot/commands/auto/TenBallAutoMiddle.java](/src/main/java/frc4388/robot/commands/auto/TenBallAutoMiddle.java) | Java | 40 | 16 | 4 | 60 | +| [src/main/java/frc4388/robot/commands/auto/Wait.java](/src/main/java/frc4388/robot/commands/auto/Wait.java) | Java | 40 | 16 | 16 | 72 | +| [src/main/java/frc4388/robot/commands/climber/DisengageRachet.java](/src/main/java/frc4388/robot/commands/climber/DisengageRachet.java) | Java | 26 | 14 | 9 | 49 | +| [src/main/java/frc4388/robot/commands/climber/RunClimberWithTriggers.java](/src/main/java/frc4388/robot/commands/climber/RunClimberWithTriggers.java) | Java | 42 | 15 | 9 | 66 | +| [src/main/java/frc4388/robot/commands/climber/RunLevelerWithJoystick.java](/src/main/java/frc4388/robot/commands/climber/RunLevelerWithJoystick.java) | Java | 28 | 17 | 9 | 54 | +| [src/main/java/frc4388/robot/commands/drive/DrivePositionMPAux.java](/src/main/java/frc4388/robot/commands/drive/DrivePositionMPAux.java) | Java | 60 | 25 | 9 | 94 | +| [src/main/java/frc4388/robot/commands/drive/DriveStraightAtVelocityPID.java](/src/main/java/frc4388/robot/commands/drive/DriveStraightAtVelocityPID.java) | Java | 29 | 17 | 7 | 53 | +| [src/main/java/frc4388/robot/commands/drive/DriveStraightToPositionMM.java](/src/main/java/frc4388/robot/commands/drive/DriveStraightToPositionMM.java) | Java | 56 | 22 | 9 | 87 | +| [src/main/java/frc4388/robot/commands/drive/DriveStraightToPositionPID.java](/src/main/java/frc4388/robot/commands/drive/DriveStraightToPositionPID.java) | Java | 49 | 22 | 9 | 80 | +| [src/main/java/frc4388/robot/commands/drive/DriveWithJoystick.java](/src/main/java/frc4388/robot/commands/drive/DriveWithJoystick.java) | Java | 54 | 43 | 14 | 111 | +| [src/main/java/frc4388/robot/commands/drive/DriveWithJoystickAuxPID.java](/src/main/java/frc4388/robot/commands/drive/DriveWithJoystickAuxPID.java) | Java | 48 | 17 | 13 | 78 | +| [src/main/java/frc4388/robot/commands/drive/DriveWithJoystickDriveStraight.java](/src/main/java/frc4388/robot/commands/drive/DriveWithJoystickDriveStraight.java) | Java | 93 | 31 | 19 | 143 | +| [src/main/java/frc4388/robot/commands/drive/DriveWithJoystickUsingDeadAssistPID.java](/src/main/java/frc4388/robot/commands/drive/DriveWithJoystickUsingDeadAssistPID.java) | Java | 132 | 41 | 22 | 195 | +| [src/main/java/frc4388/robot/commands/drive/GotoCoordinatesFieldRelative.java](/src/main/java/frc4388/robot/commands/drive/GotoCoordinatesFieldRelative.java) | Java | 10 | 14 | 5 | 29 | +| [src/main/java/frc4388/robot/commands/drive/GotoCoordinatesRobotRelative.java](/src/main/java/frc4388/robot/commands/drive/GotoCoordinatesRobotRelative.java) | Java | 54 | 14 | 20 | 88 | +| [src/main/java/frc4388/robot/commands/drive/PlaySongDrive.java](/src/main/java/frc4388/robot/commands/drive/PlaySongDrive.java) | Java | 28 | 16 | 9 | 53 | +| [src/main/java/frc4388/robot/commands/drive/SkipSong.java](/src/main/java/frc4388/robot/commands/drive/SkipSong.java) | Java | 32 | 14 | 11 | 57 | +| [src/main/java/frc4388/robot/commands/drive/TurnDegrees.java](/src/main/java/frc4388/robot/commands/drive/TurnDegrees.java) | Java | 41 | 16 | 17 | 74 | +| [src/main/java/frc4388/robot/commands/intake/RunExtenderOutIn.java](/src/main/java/frc4388/robot/commands/intake/RunExtenderOutIn.java) | Java | 46 | 16 | 16 | 78 | +| [src/main/java/frc4388/robot/commands/intake/RunIntake.java](/src/main/java/frc4388/robot/commands/intake/RunIntake.java) | Java | 25 | 14 | 8 | 47 | +| [src/main/java/frc4388/robot/commands/intake/RunIntakeWithTriggers.java](/src/main/java/frc4388/robot/commands/intake/RunIntakeWithTriggers.java) | Java | 36 | 19 | 9 | 64 | +| [src/main/java/frc4388/robot/commands/shooter/CalibrateShooter.java](/src/main/java/frc4388/robot/commands/shooter/CalibrateShooter.java) | Java | 44 | 15 | 11 | 70 | +| [src/main/java/frc4388/robot/commands/shooter/HoodPositionPID.java](/src/main/java/frc4388/robot/commands/shooter/HoodPositionPID.java) | Java | 33 | 18 | 9 | 60 | +| [src/main/java/frc4388/robot/commands/shooter/PrepChecker.java](/src/main/java/frc4388/robot/commands/shooter/PrepChecker.java) | Java | 28 | 14 | 11 | 53 | +| [src/main/java/frc4388/robot/commands/shooter/RunHoodWithJoystick.java](/src/main/java/frc4388/robot/commands/shooter/RunHoodWithJoystick.java) | Java | 29 | 17 | 9 | 55 | +| [src/main/java/frc4388/robot/commands/shooter/ShootPrepGroup.java](/src/main/java/frc4388/robot/commands/shooter/ShootPrepGroup.java) | Java | 16 | 15 | 4 | 35 | +| [src/main/java/frc4388/robot/commands/shooter/ShooterGoalPosition.java](/src/main/java/frc4388/robot/commands/shooter/ShooterGoalPosition.java) | Java | 32 | 13 | 8 | 53 | +| [src/main/java/frc4388/robot/commands/shooter/ShooterManual.java](/src/main/java/frc4388/robot/commands/shooter/ShooterManual.java) | Java | 25 | 13 | 8 | 46 | +| [src/main/java/frc4388/robot/commands/shooter/ShooterTrenchPosition.java](/src/main/java/frc4388/robot/commands/shooter/ShooterTrenchPosition.java) | Java | 32 | 13 | 8 | 53 | +| [src/main/java/frc4388/robot/commands/shooter/ShooterVelocityControlPID.java](/src/main/java/frc4388/robot/commands/shooter/ShooterVelocityControlPID.java) | Java | 37 | 15 | 10 | 62 | +| [src/main/java/frc4388/robot/commands/shooter/TrackTarget.java](/src/main/java/frc4388/robot/commands/shooter/TrackTarget.java) | Java | 84 | 30 | 22 | 136 | +| [src/main/java/frc4388/robot/commands/shooter/TrimShooter.java](/src/main/java/frc4388/robot/commands/shooter/TrimShooter.java) | Java | 41 | 14 | 11 | 66 | +| [src/main/java/frc4388/robot/commands/storage/ManageStorage.java](/src/main/java/frc4388/robot/commands/storage/ManageStorage.java) | Java | 90 | 35 | 23 | 148 | +| [src/main/java/frc4388/robot/commands/storage/ManageStoragePID.java](/src/main/java/frc4388/robot/commands/storage/ManageStoragePID.java) | Java | 86 | 33 | 24 | 143 | +| [src/main/java/frc4388/robot/commands/storage/RunStorage.java](/src/main/java/frc4388/robot/commands/storage/RunStorage.java) | Java | 25 | 14 | 8 | 47 | +| [src/main/java/frc4388/robot/commands/storage/StoragePrep.java](/src/main/java/frc4388/robot/commands/storage/StoragePrep.java) | Java | 33 | 14 | 8 | 55 | +| [src/main/java/frc4388/robot/subsystems/Camera.java](/src/main/java/frc4388/robot/subsystems/Camera.java) | Java | 24 | 15 | 6 | 45 | +| [src/main/java/frc4388/robot/subsystems/Climber.java](/src/main/java/frc4388/robot/subsystems/Climber.java) | Java | 58 | 20 | 16 | 94 | +| [src/main/java/frc4388/robot/subsystems/Drive.java](/src/main/java/frc4388/robot/subsystems/Drive.java) | Java | 506 | 275 | 148 | 929 | +| [src/main/java/frc4388/robot/subsystems/Intake.java](/src/main/java/frc4388/robot/subsystems/Intake.java) | Java | 36 | 36 | 14 | 86 | +| [src/main/java/frc4388/robot/subsystems/LED.java](/src/main/java/frc4388/robot/subsystems/LED.java) | Java | 44 | 32 | 12 | 88 | +| [src/main/java/frc4388/robot/subsystems/Leveler.java](/src/main/java/frc4388/robot/subsystems/Leveler.java) | Java | 29 | 18 | 11 | 58 | +| [src/main/java/frc4388/robot/subsystems/LimeLight.java](/src/main/java/frc4388/robot/subsystems/LimeLight.java) | Java | 18 | 10 | 8 | 36 | +| [src/main/java/frc4388/robot/subsystems/Pneumatics.java](/src/main/java/frc4388/robot/subsystems/Pneumatics.java) | Java | 50 | 27 | 14 | 91 | +| [src/main/java/frc4388/robot/subsystems/Shooter.java](/src/main/java/frc4388/robot/subsystems/Shooter.java) | Java | 73 | 38 | 32 | 143 | +| [src/main/java/frc4388/robot/subsystems/ShooterAim.java](/src/main/java/frc4388/robot/subsystems/ShooterAim.java) | Java | 108 | 31 | 39 | 178 | +| [src/main/java/frc4388/robot/subsystems/ShooterHood.java](/src/main/java/frc4388/robot/subsystems/ShooterHood.java) | Java | 65 | 20 | 23 | 108 | +| [src/main/java/frc4388/robot/subsystems/Storage.java](/src/main/java/frc4388/robot/subsystems/Storage.java) | Java | 84 | 33 | 28 | 145 | +| [src/main/java/frc4388/utility/Gains.java](/src/main/java/frc4388/utility/Gains.java) | Java | 33 | 28 | 5 | 66 | +| [src/main/java/frc4388/utility/LEDPatterns.java](/src/main/java/frc4388/utility/LEDPatterns.java) | Java | 30 | 10 | 6 | 46 | +| [src/main/java/frc4388/utility/ShooterTables.java](/src/main/java/frc4388/utility/ShooterTables.java) | Java | 125 | 15 | 31 | 171 | +| [src/main/java/frc4388/utility/Trims.java](/src/main/java/frc4388/utility/Trims.java) | Java | 9 | 6 | 3 | 18 | +| [src/main/java/frc4388/utility/controller/ButtonFox.java](/src/main/java/frc4388/utility/controller/ButtonFox.java) | Java | 8 | 10 | 3 | 21 | +| [src/main/java/frc4388/utility/controller/IHandController.java](/src/main/java/frc4388/utility/controller/IHandController.java) | Java | 10 | 3 | 9 | 22 | +| [src/main/java/frc4388/utility/controller/JoystickManualButton.java](/src/main/java/frc4388/utility/controller/JoystickManualButton.java) | Java | 24 | 22 | 8 | 54 | +| [src/main/java/frc4388/utility/controller/XboxController.java](/src/main/java/frc4388/utility/controller/XboxController.java) | Java | 151 | 26 | 46 | 223 | +| [src/main/java/frc4388/utility/controller/XboxTriggerButton.java](/src/main/java/frc4388/utility/controller/XboxTriggerButton.java) | Java | 55 | 8 | 6 | 69 | + +[summary](results.md) \ No newline at end of file diff --git a/.VSCodeCounter/results.csv b/.VSCodeCounter/results.csv new file mode 100644 index 0000000..bcfdb2f --- /dev/null +++ b/.VSCodeCounter/results.csv @@ -0,0 +1,85 @@ +filename, language, JSON, Java, CSS, comment, blank, total +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\DriveOffLineBackward.wpilib.json, JSON, 1, 0, 0, 0, 0, 1 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\DriveOffLineForward.wpilib.json, JSON, 1, 0, 0, 0, 0, 1 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\EightBallMid0.wpilib.json, JSON, 1, 0, 0, 0, 0, 1 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\EightBallMid1.wpilib.json, JSON, 1, 0, 0, 0, 0, 1 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\EightBallMid2.wpilib.json, JSON, 1, 0, 0, 0, 0, 1 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\EightBallMidComplete.wpilib.json, JSON, 1, 0, 0, 0, 0, 1 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\FiveBallMidComplete.wpilib.json, JSON, 1, 0, 0, 0, 0, 1 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\SixBallMid0.wpilib.json, JSON, 1, 0, 0, 0, 0, 1 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\SixBallMid1.wpilib.json, JSON, 1, 0, 0, 0, 0, 1 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\SixBallMidComplete.wpilib.json, JSON, 1, 0, 0, 0, 0, 1 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\TenBallMidComplete.wpilib.json, JSON, 1, 0, 0, 0, 0, 1 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\driverStation\GOAT DRIVERSTATION.json, JSON, 1014, 0, 0, 0, 0, 1014 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\driverStation\themes\Ridgbotics\ridgeboticstheme.css, CSS, 0, 0, 8, 0, 1, 9 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\Constants.java, Java, 0, 157, 0, 32, 41, 230 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\Main.java, Java, 0, 9, 0, 16, 5, 30 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\Robot.java, Java, 0, 59, 0, 63, 24, 146 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\RobotContainer.java, Java, 0, 312, 0, 145, 96, 553 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\InterruptSubystem.java, Java, 0, 21, 0, 14, 8, 43 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\AutoPath1FromCenter.java, Java, 0, 22, 0, 19, 6, 47 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\AutoPath2FromRight.java, Java, 0, 26, 0, 23, 6, 55 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\DriveOffLineBackward.java, Java, 0, 13, 0, 14, 5, 32 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\DriveOffLineForward.java, Java, 0, 11, 0, 14, 5, 30 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\EightBallAutoMiddle.java, Java, 0, 11, 0, 14, 5, 30 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\FiveBallAutoMiddle.java, Java, 0, 12, 0, 13, 4, 29 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\SixBallAutoMiddle.java, Java, 0, 16, 0, 14, 6, 36 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\TankDriveVelocity.java, Java, 0, 42, 0, 14, 12, 68 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\TenBallAutoMiddle.java, Java, 0, 40, 0, 16, 4, 60 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\Wait.java, Java, 0, 40, 0, 16, 16, 72 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\climber\DisengageRachet.java, Java, 0, 26, 0, 14, 9, 49 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\climber\RunClimberWithTriggers.java, Java, 0, 42, 0, 15, 9, 66 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\climber\RunLevelerWithJoystick.java, Java, 0, 28, 0, 17, 9, 54 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DrivePositionMPAux.java, Java, 0, 60, 0, 25, 9, 94 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveStraightAtVelocityPID.java, Java, 0, 29, 0, 17, 7, 53 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveStraightToPositionMM.java, Java, 0, 56, 0, 22, 9, 87 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveStraightToPositionPID.java, Java, 0, 49, 0, 22, 9, 80 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveWithJoystick.java, Java, 0, 54, 0, 43, 14, 111 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveWithJoystickAuxPID.java, Java, 0, 48, 0, 17, 13, 78 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveWithJoystickDriveStraight.java, Java, 0, 93, 0, 31, 19, 143 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveWithJoystickUsingDeadAssistPID.java, Java, 0, 132, 0, 41, 22, 195 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\GotoCoordinatesFieldRelative.java, Java, 0, 10, 0, 14, 5, 29 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\GotoCoordinatesRobotRelative.java, Java, 0, 54, 0, 14, 20, 88 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\PlaySongDrive.java, Java, 0, 28, 0, 16, 9, 53 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\SkipSong.java, Java, 0, 32, 0, 14, 11, 57 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\TurnDegrees.java, Java, 0, 41, 0, 16, 17, 74 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\intake\RunExtenderOutIn.java, Java, 0, 46, 0, 16, 16, 78 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\intake\RunIntake.java, Java, 0, 25, 0, 14, 8, 47 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\intake\RunIntakeWithTriggers.java, Java, 0, 36, 0, 19, 9, 64 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\CalibrateShooter.java, Java, 0, 44, 0, 15, 11, 70 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\HoodPositionPID.java, Java, 0, 33, 0, 18, 9, 60 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\PrepChecker.java, Java, 0, 28, 0, 14, 11, 53 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\RunHoodWithJoystick.java, Java, 0, 29, 0, 17, 9, 55 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\ShootPrepGroup.java, Java, 0, 16, 0, 15, 4, 35 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\ShooterGoalPosition.java, Java, 0, 32, 0, 13, 8, 53 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\ShooterManual.java, Java, 0, 25, 0, 13, 8, 46 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\ShooterTrenchPosition.java, Java, 0, 32, 0, 13, 8, 53 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\ShooterVelocityControlPID.java, Java, 0, 37, 0, 15, 10, 62 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\TrackTarget.java, Java, 0, 84, 0, 30, 22, 136 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\TrimShooter.java, Java, 0, 41, 0, 14, 11, 66 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\storage\ManageStorage.java, Java, 0, 90, 0, 35, 23, 148 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\storage\ManageStoragePID.java, Java, 0, 86, 0, 33, 24, 143 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\storage\RunStorage.java, Java, 0, 25, 0, 14, 8, 47 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\storage\StoragePrep.java, Java, 0, 33, 0, 14, 8, 55 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Camera.java, Java, 0, 24, 0, 15, 6, 45 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Climber.java, Java, 0, 58, 0, 20, 16, 94 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Drive.java, Java, 0, 506, 0, 275, 148, 929 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Intake.java, Java, 0, 36, 0, 36, 14, 86 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\LED.java, Java, 0, 44, 0, 32, 12, 88 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Leveler.java, Java, 0, 29, 0, 18, 11, 58 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\LimeLight.java, Java, 0, 18, 0, 10, 8, 36 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Pneumatics.java, Java, 0, 50, 0, 27, 14, 91 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Shooter.java, Java, 0, 73, 0, 38, 32, 143 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\ShooterAim.java, Java, 0, 108, 0, 31, 39, 178 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\ShooterHood.java, Java, 0, 65, 0, 20, 23, 108 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Storage.java, Java, 0, 84, 0, 33, 28, 145 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\Gains.java, Java, 0, 33, 0, 28, 5, 66 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\LEDPatterns.java, Java, 0, 30, 0, 10, 6, 46 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\ShooterTables.java, Java, 0, 125, 0, 15, 31, 171 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\Trims.java, Java, 0, 9, 0, 6, 3, 18 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\controller\ButtonFox.java, Java, 0, 8, 0, 10, 3, 21 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\controller\IHandController.java, Java, 0, 10, 0, 3, 9, 22 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\controller\JoystickManualButton.java, Java, 0, 24, 0, 22, 8, 54 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\controller\XboxController.java, Java, 0, 151, 0, 26, 46, 223 +c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\controller\XboxTriggerButton.java, Java, 0, 55, 0, 8, 6, 69 +Total, -, 1025, 3855, 8, 1770, 1110, 7768 \ No newline at end of file diff --git a/.VSCodeCounter/results.md b/.VSCodeCounter/results.md new file mode 100644 index 0000000..47eec3f --- /dev/null +++ b/.VSCodeCounter/results.md @@ -0,0 +1,41 @@ +# Summary + +Date : 2020-03-13 19:46:18 + +Directory c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main + +Total : 83 files, 4888 codes, 1770 comments, 1110 blanks, all 7768 lines + +[details](details.md) + +## Languages +| language | files | code | comment | blank | total | +| :--- | ---: | ---: | ---: | ---: | ---: | +| Java | 70 | 3,855 | 1,770 | 1,109 | 6,734 | +| JSON | 12 | 1,025 | 0 | 0 | 1,025 | +| CSS | 1 | 8 | 0 | 1 | 9 | + +## Directories +| path | files | code | comment | blank | total | +| :--- | ---: | ---: | ---: | ---: | ---: | +| . | 83 | 4,888 | 1,770 | 1,110 | 7,768 | +| deploy | 11 | 11 | 0 | 0 | 11 | +| deploy\paths | 11 | 11 | 0 | 0 | 11 | +| driverStation | 2 | 1,022 | 0 | 1 | 1,023 | +| driverStation\themes | 1 | 8 | 0 | 1 | 9 | +| driverStation\themes\Ridgbotics | 1 | 8 | 0 | 1 | 9 | +| java | 70 | 3,855 | 1,770 | 1,109 | 6,734 | +| java\frc4388 | 70 | 3,855 | 1,770 | 1,109 | 6,734 | +| java\frc4388\robot | 61 | 3,410 | 1,642 | 992 | 6,044 | +| java\frc4388\robot\commands | 45 | 1,778 | 831 | 475 | 3,084 | +| java\frc4388\robot\commands\auto | 10 | 233 | 157 | 69 | 459 | +| java\frc4388\robot\commands\climber | 3 | 96 | 46 | 27 | 169 | +| java\frc4388\robot\commands\drive | 13 | 686 | 292 | 164 | 1,142 | +| java\frc4388\robot\commands\intake | 3 | 107 | 49 | 33 | 189 | +| java\frc4388\robot\commands\shooter | 11 | 401 | 177 | 111 | 689 | +| java\frc4388\robot\commands\storage | 4 | 234 | 96 | 63 | 393 | +| java\frc4388\robot\subsystems | 12 | 1,095 | 555 | 351 | 2,001 | +| java\frc4388\utility | 9 | 445 | 128 | 117 | 690 | +| java\frc4388\utility\controller | 5 | 248 | 69 | 72 | 389 | + +[details](details.md) \ No newline at end of file diff --git a/.VSCodeCounter/results.txt b/.VSCodeCounter/results.txt new file mode 100644 index 0000000..78f07a1 --- /dev/null +++ b/.VSCodeCounter/results.txt @@ -0,0 +1,127 @@ +Date : 2020-03-13 19:46:18 +Directory : c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main +Total : 83 files, 4888 codes, 1770 comments, 1110 blanks, all 7768 lines + +Languages ++----------+------------+------------+------------+------------+------------+ +| language | files | code | comment | blank | total | ++----------+------------+------------+------------+------------+------------+ +| Java | 70 | 3,855 | 1,770 | 1,109 | 6,734 | +| JSON | 12 | 1,025 | 0 | 0 | 1,025 | +| CSS | 1 | 8 | 0 | 1 | 9 | ++----------+------------+------------+------------+------------+------------+ + +Directories ++-------------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+ +| path | files | code | comment | blank | total | ++-------------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+ +| . | 83 | 4,888 | 1,770 | 1,110 | 7,768 | +| deploy | 11 | 11 | 0 | 0 | 11 | +| deploy\paths | 11 | 11 | 0 | 0 | 11 | +| driverStation | 2 | 1,022 | 0 | 1 | 1,023 | +| driverStation\themes | 1 | 8 | 0 | 1 | 9 | +| driverStation\themes\Ridgbotics | 1 | 8 | 0 | 1 | 9 | +| java | 70 | 3,855 | 1,770 | 1,109 | 6,734 | +| java\frc4388 | 70 | 3,855 | 1,770 | 1,109 | 6,734 | +| java\frc4388\robot | 61 | 3,410 | 1,642 | 992 | 6,044 | +| java\frc4388\robot\commands | 45 | 1,778 | 831 | 475 | 3,084 | +| java\frc4388\robot\commands\auto | 10 | 233 | 157 | 69 | 459 | +| java\frc4388\robot\commands\climber | 3 | 96 | 46 | 27 | 169 | +| java\frc4388\robot\commands\drive | 13 | 686 | 292 | 164 | 1,142 | +| java\frc4388\robot\commands\intake | 3 | 107 | 49 | 33 | 189 | +| java\frc4388\robot\commands\shooter | 11 | 401 | 177 | 111 | 689 | +| java\frc4388\robot\commands\storage | 4 | 234 | 96 | 63 | 393 | +| java\frc4388\robot\subsystems | 12 | 1,095 | 555 | 351 | 2,001 | +| java\frc4388\utility | 9 | 445 | 128 | 117 | 690 | +| java\frc4388\utility\controller | 5 | 248 | 69 | 72 | 389 | ++-------------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+ + +Files ++-------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+ +| filename | language | code | comment | blank | total | ++-------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+ +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\DriveOffLineBackward.wpilib.json | JSON | 1 | 0 | 0 | 1 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\DriveOffLineForward.wpilib.json | JSON | 1 | 0 | 0 | 1 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\EightBallMid0.wpilib.json | JSON | 1 | 0 | 0 | 1 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\EightBallMid1.wpilib.json | JSON | 1 | 0 | 0 | 1 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\EightBallMid2.wpilib.json | JSON | 1 | 0 | 0 | 1 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\EightBallMidComplete.wpilib.json | JSON | 1 | 0 | 0 | 1 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\FiveBallMidComplete.wpilib.json | JSON | 1 | 0 | 0 | 1 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\SixBallMid0.wpilib.json | JSON | 1 | 0 | 0 | 1 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\SixBallMid1.wpilib.json | JSON | 1 | 0 | 0 | 1 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\SixBallMidComplete.wpilib.json | JSON | 1 | 0 | 0 | 1 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\deploy\paths\TenBallMidComplete.wpilib.json | JSON | 1 | 0 | 0 | 1 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\driverStation\GOAT DRIVERSTATION.json | JSON | 1,014 | 0 | 0 | 1,014 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\driverStation\themes\Ridgbotics\ridgeboticstheme.css | CSS | 8 | 0 | 1 | 9 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\Constants.java | Java | 157 | 32 | 41 | 230 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\Main.java | Java | 9 | 16 | 5 | 30 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\Robot.java | Java | 59 | 63 | 24 | 146 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\RobotContainer.java | Java | 312 | 145 | 96 | 553 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\InterruptSubystem.java | Java | 21 | 14 | 8 | 43 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\AutoPath1FromCenter.java | Java | 22 | 19 | 6 | 47 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\AutoPath2FromRight.java | Java | 26 | 23 | 6 | 55 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\DriveOffLineBackward.java | Java | 13 | 14 | 5 | 32 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\DriveOffLineForward.java | Java | 11 | 14 | 5 | 30 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\EightBallAutoMiddle.java | Java | 11 | 14 | 5 | 30 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\FiveBallAutoMiddle.java | Java | 12 | 13 | 4 | 29 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\SixBallAutoMiddle.java | Java | 16 | 14 | 6 | 36 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\TankDriveVelocity.java | Java | 42 | 14 | 12 | 68 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\TenBallAutoMiddle.java | Java | 40 | 16 | 4 | 60 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\auto\Wait.java | Java | 40 | 16 | 16 | 72 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\climber\DisengageRachet.java | Java | 26 | 14 | 9 | 49 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\climber\RunClimberWithTriggers.java | Java | 42 | 15 | 9 | 66 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\climber\RunLevelerWithJoystick.java | Java | 28 | 17 | 9 | 54 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DrivePositionMPAux.java | Java | 60 | 25 | 9 | 94 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveStraightAtVelocityPID.java | Java | 29 | 17 | 7 | 53 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveStraightToPositionMM.java | Java | 56 | 22 | 9 | 87 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveStraightToPositionPID.java | Java | 49 | 22 | 9 | 80 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveWithJoystick.java | Java | 54 | 43 | 14 | 111 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveWithJoystickAuxPID.java | Java | 48 | 17 | 13 | 78 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveWithJoystickDriveStraight.java | Java | 93 | 31 | 19 | 143 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\DriveWithJoystickUsingDeadAssistPID.java | Java | 132 | 41 | 22 | 195 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\GotoCoordinatesFieldRelative.java | Java | 10 | 14 | 5 | 29 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\GotoCoordinatesRobotRelative.java | Java | 54 | 14 | 20 | 88 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\PlaySongDrive.java | Java | 28 | 16 | 9 | 53 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\SkipSong.java | Java | 32 | 14 | 11 | 57 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\drive\TurnDegrees.java | Java | 41 | 16 | 17 | 74 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\intake\RunExtenderOutIn.java | Java | 46 | 16 | 16 | 78 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\intake\RunIntake.java | Java | 25 | 14 | 8 | 47 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\intake\RunIntakeWithTriggers.java | Java | 36 | 19 | 9 | 64 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\CalibrateShooter.java | Java | 44 | 15 | 11 | 70 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\HoodPositionPID.java | Java | 33 | 18 | 9 | 60 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\PrepChecker.java | Java | 28 | 14 | 11 | 53 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\RunHoodWithJoystick.java | Java | 29 | 17 | 9 | 55 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\ShootPrepGroup.java | Java | 16 | 15 | 4 | 35 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\ShooterGoalPosition.java | Java | 32 | 13 | 8 | 53 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\ShooterManual.java | Java | 25 | 13 | 8 | 46 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\ShooterTrenchPosition.java | Java | 32 | 13 | 8 | 53 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\ShooterVelocityControlPID.java | Java | 37 | 15 | 10 | 62 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\TrackTarget.java | Java | 84 | 30 | 22 | 136 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\shooter\TrimShooter.java | Java | 41 | 14 | 11 | 66 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\storage\ManageStorage.java | Java | 90 | 35 | 23 | 148 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\storage\ManageStoragePID.java | Java | 86 | 33 | 24 | 143 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\storage\RunStorage.java | Java | 25 | 14 | 8 | 47 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\commands\storage\StoragePrep.java | Java | 33 | 14 | 8 | 55 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Camera.java | Java | 24 | 15 | 6 | 45 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Climber.java | Java | 58 | 20 | 16 | 94 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Drive.java | Java | 506 | 275 | 148 | 929 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Intake.java | Java | 36 | 36 | 14 | 86 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\LED.java | Java | 44 | 32 | 12 | 88 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Leveler.java | Java | 29 | 18 | 11 | 58 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\LimeLight.java | Java | 18 | 10 | 8 | 36 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Pneumatics.java | Java | 50 | 27 | 14 | 91 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Shooter.java | Java | 73 | 38 | 32 | 143 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\ShooterAim.java | Java | 108 | 31 | 39 | 178 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\ShooterHood.java | Java | 65 | 20 | 23 | 108 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\robot\subsystems\Storage.java | Java | 84 | 33 | 28 | 145 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\Gains.java | Java | 33 | 28 | 5 | 66 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\LEDPatterns.java | Java | 30 | 10 | 6 | 46 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\ShooterTables.java | Java | 125 | 15 | 31 | 171 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\Trims.java | Java | 9 | 6 | 3 | 18 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\controller\ButtonFox.java | Java | 8 | 10 | 3 | 21 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\controller\IHandController.java | Java | 10 | 3 | 9 | 22 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\controller\JoystickManualButton.java | Java | 24 | 22 | 8 | 54 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\controller\XboxController.java | Java | 151 | 26 | 46 | 223 | +| c:\Users\Ridgebotics\Documents\GitHub\RiseOfRidgebotics2020\src\main\java\frc4388\utility\controller\XboxTriggerButton.java | Java | 55 | 8 | 6 | 69 | +| Total | | 4,888 | 1,770 | 1,110 | 7,768 | ++-------------------------------------------------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+ \ No newline at end of file diff --git a/PathWeaver/Groups/EightBallMid b/PathWeaver/Groups/EightBallMid new file mode 100644 index 0000000..e87dc39 --- /dev/null +++ b/PathWeaver/Groups/EightBallMid @@ -0,0 +1,3 @@ +EightBallMid0 +EightBallMid1 +EightBallMid2 diff --git a/PathWeaver/Groups/SixBallMid b/PathWeaver/Groups/SixBallMid new file mode 100644 index 0000000..ed5971c --- /dev/null +++ b/PathWeaver/Groups/SixBallMid @@ -0,0 +1,2 @@ +SixBallMid0 +SixBallMid1 diff --git a/PathWeaver/Groups/TenBallAuto b/PathWeaver/Groups/TenBallAuto new file mode 100644 index 0000000..87ec839 --- /dev/null +++ b/PathWeaver/Groups/TenBallAuto @@ -0,0 +1,2 @@ +SixBallMidComplete +TenBallMidComplete diff --git a/PathWeaver/Paths/DriveOffLineBackward b/PathWeaver/Paths/DriveOffLineBackward new file mode 100644 index 0000000..f5cce7f --- /dev/null +++ b/PathWeaver/Paths/DriveOffLineBackward @@ -0,0 +1,3 @@ +X,Y,Tangent X,Tangent Y,Fixed Theta,Name +3.2,-2.3,0.5,0.0,true, +3.7,-2.3,0.5,0.0,true, diff --git a/PathWeaver/Paths/DriveOffLineForward b/PathWeaver/Paths/DriveOffLineForward new file mode 100644 index 0000000..f5cce7f --- /dev/null +++ b/PathWeaver/Paths/DriveOffLineForward @@ -0,0 +1,3 @@ +X,Y,Tangent X,Tangent Y,Fixed Theta,Name +3.2,-2.3,0.5,0.0,true, +3.7,-2.3,0.5,0.0,true, diff --git a/PathWeaver/Paths/EightBallMid0 b/PathWeaver/Paths/EightBallMid0 new file mode 100644 index 0000000..18dd1ec --- /dev/null +++ b/PathWeaver/Paths/EightBallMid0 @@ -0,0 +1,3 @@ +X,Y,Tangent X,Tangent Y,Fixed Theta,Name +3.2,-2.4,0.2,2.5,true, +5.006107200045366,-0.7154598441848491,2.0,0.0,true, diff --git a/PathWeaver/Paths/EightBallMid1 b/PathWeaver/Paths/EightBallMid1 new file mode 100644 index 0000000..4ae0aad --- /dev/null +++ b/PathWeaver/Paths/EightBallMid1 @@ -0,0 +1,3 @@ +X,Y,Tangent X,Tangent Y,Fixed Theta,Name +5.006,-0.715,3.048,0.0,true, +7.2,-0.7154598441848491,1.0,0.0,true, diff --git a/PathWeaver/Paths/EightBallMid2 b/PathWeaver/Paths/EightBallMid2 new file mode 100644 index 0000000..7acacf8 --- /dev/null +++ b/PathWeaver/Paths/EightBallMid2 @@ -0,0 +1,3 @@ +X,Y,Tangent X,Tangent Y,Fixed Theta,Name +7.2,-0.715,1.5,0.0,true, +6.612,-2.7,-0.6,-0.3,true, diff --git a/PathWeaver/Paths/EightBallMidComplete b/PathWeaver/Paths/EightBallMidComplete new file mode 100644 index 0000000..e8f4cf2 --- /dev/null +++ b/PathWeaver/Paths/EightBallMidComplete @@ -0,0 +1,6 @@ +X,Y,Tangent X,Tangent Y,Fixed Theta,Name +3.2,-2.4,0.2,2.5,true, +5.0,-1.1,3.0,0.0,true, +7.2,-1.1,1.5,0.0,true, +6.6123135559006245,-2.7023965955020937,-0.39262822032017564,-0.17846737287280634,true, +6.279174459871384,-2.2621770757491713,0.13087607344005825,0.40452604517836144,true, diff --git a/PathWeaver/Paths/FiveBallMidComplete b/PathWeaver/Paths/FiveBallMidComplete new file mode 100644 index 0000000..b325387 --- /dev/null +++ b/PathWeaver/Paths/FiveBallMidComplete @@ -0,0 +1,5 @@ +X,Y,Tangent X,Tangent Y,Fixed Theta,Name +3.2,-2.3,0.5,0.0,true, +5.910341889267586,-1.8695488554289974,0.2974456214546777,-0.16656954801461854,true, +6.398152708453256,-2.178892301741862,-0.09518259886549707,-0.16656954801461987,true, +5.886546239551211,-2.3573596746146683,-0.22605867230555443,-0.11897824858187134,true, diff --git a/PathWeaver/Paths/SixBallMid0 b/PathWeaver/Paths/SixBallMid0 new file mode 100644 index 0000000..c392449 --- /dev/null +++ b/PathWeaver/Paths/SixBallMid0 @@ -0,0 +1,3 @@ +X,Y,Tangent X,Tangent Y,Fixed Theta,Name +3.2,-2.4,0.2,2.5,true, +5.006107200045366,-1.3,2.0,0.0,true, diff --git a/PathWeaver/Paths/SixBallMid1 b/PathWeaver/Paths/SixBallMid1 new file mode 100644 index 0000000..407b2e5 --- /dev/null +++ b/PathWeaver/Paths/SixBallMid1 @@ -0,0 +1,3 @@ +X,Y,Tangent X,Tangent Y,Fixed Theta,Name +5.006,-1.3,3.048,0.0,true, +7.2,-1.3,1.0,0.0,true, diff --git a/PathWeaver/Paths/SixBallMidComplete b/PathWeaver/Paths/SixBallMidComplete new file mode 100644 index 0000000..4378c83 --- /dev/null +++ b/PathWeaver/Paths/SixBallMidComplete @@ -0,0 +1,4 @@ +X,Y,Tangent X,Tangent Y,Fixed Theta,Name +3.2,-2.4,0.2,2.5,true, +5.0,-1.1,3.0,0.0,true, +7.2,-1.1,1.5,0.0,true, diff --git a/PathWeaver/Paths/TenBallMidComplete b/PathWeaver/Paths/TenBallMidComplete new file mode 100644 index 0000000..a87ff34 --- /dev/null +++ b/PathWeaver/Paths/TenBallMidComplete @@ -0,0 +1,8 @@ +X,Y,Tangent X,Tangent Y,Fixed Theta,Name +7.2,-1.1,1.5,0.0,true, +6.981146126504424,-1.7267749571307522,-0.16656954801462032,-0.6424825423421034,true, +6.766985279057057,-2.6072139966365975,-0.1189782485818709,-0.2974456214546768,true, +6.564722256467875,-3.1783095898295777,-0.2022630225891815,-0.44021951975292284,true, +6.267276635013197,-3.880281256462616,-0.206563341919694,-0.4559320155220153,false, +5.946035363842147,-4.546559448521093,-0.14277389829824472,-0.2974456214546777,true, +5.660487567245656,-5.046268092564953,0.13087607344005825,-0.42832169489473504,true, diff --git a/PathWeaver/output/FirstPath.wpilib.json b/PathWeaver/output/FirstPath.wpilib.json new file mode 100644 index 0000000..758ca33 --- /dev/null +++ b/PathWeaver/output/FirstPath.wpilib.json @@ -0,0 +1 @@ +[{"time":0.0,"velocity":0.0,"acceleration":3.0000000000000004,"pose":{"translation":{"x":3.3,"y":-2.416848798905604},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.211173470810985,"velocity":0.6335204124329551,"acceleration":3.0000000000000013,"pose":{"translation":{"x":3.366889570140447,"y":-2.4163605362457954},"rotation":{"radians":0.021427560503521688}},"curvature":0.6111933780057722},{"time":0.2999081850801547,"velocity":0.8997245552404642,"acceleration":2.9999999999999982,"pose":{"translation":{"x":3.4348387255942074,"y":-2.413127483495524},"rotation":{"radians":0.07833904937585699}},"curvature":1.0234441896058954},{"time":0.3699333515595466,"velocity":1.1098000546786397,"acceleration":3.0000000000000013,"pose":{"translation":{"x":3.5047142961833893,"y":-2.4048968129411943},"rotation":{"radians":0.15838369767185723}},"curvature":1.213822601378998},{"time":0.40145286132680885,"velocity":1.2043585839804265,"acceleration":2.9999999999999987,"pose":{"translation":{"x":3.5405910165378556,"y":-2.398342148588244},"rotation":{"radians":0.20314475328020926}},"curvature":1.2329656733386238},{"time":0.4315074877648594,"velocity":1.2945224632945782,"acceleration":3.0000000000000013,"pose":{"translation":{"x":3.577185748691339,"y":-2.389919658328446},"rotation":{"radians":0.24914964974226336}},"curvature":1.2110821004593237},{"time":0.46050401407792596,"velocity":1.3815120422337779,"acceleration":3.0,"pose":{"translation":{"x":3.6145536688933833,"y":-2.3794835720596605},"rotation":{"radians":0.29518340315729685}},"curvature":1.1575611604229465},{"time":0.4887377357194707,"velocity":1.4662132071584122,"acceleration":3.0000000000000044,"pose":{"translation":{"x":3.6527393941094592,"y":-2.366915117615063},"rotation":{"radians":0.3402532850169521}},"curvature":1.0820536553272881},{"time":0.5437179276413854,"velocity":1.6311537829241565,"acceleration":3.0,"pose":{"translation":{"x":3.7316925948840147,"y":-2.335034255723885},"rotation":{"radians":0.42468100827986427}},"curvature":0.8990051032472685},{"time":0.5975937989543301,"velocity":1.7927813968629904,"acceleration":2.999999999999998,"pose":{"translation":{"x":3.814207972162949,"y":-2.2938241072957206},"rotation":{"radians":0.4988354340363108}},"curvature":0.7135359234210717},{"time":0.6509282653574082,"velocity":1.9527847960722249,"acceleration":3.0000000000000053,"pose":{"translation":{"x":3.9003076130426964,"y":-2.2431916794422597},"rotation":{"radians":0.5616623820417155}},"curvature":0.5512407842873545},{"time":0.7039320341670622,"velocity":2.111796102501187,"acceleration":2.9999999999999942,"pose":{"translation":{"x":3.989887277814993,"y":-2.183367954498983},"rotation":{"radians":0.6135829743337091}},"curvature":0.4192974357240935},{"time":0.7565960373881516,"velocity":2.269788112164455,"acceleration":2.9999999999999973,"pose":{"translation":{"x":4.08273060721369,"y":-2.1148718927780776},"rotation":{"radians":0.6556696605154494}},"curvature":0.3156321132771837},{"time":0.8087781515227375,"velocity":2.4263344545682126,"acceleration":2.9999999999999964,"pose":{"translation":{"x":4.178523329661565,"y":-2.038474435321345},"rotation":{"radians":0.689150621724}},"curvature":0.23494375911219692},{"time":0.8346228721652991,"velocity":2.503868616495897,"acceleration":3.0,"pose":{"translation":{"x":4.227404226828149,"y":-1.997613644550836},"rotation":{"radians":0.703026083367203}},"curvature":0.20143603346697642},{"time":0.8602616455497234,"velocity":2.58078493664917,"acceleration":2.9999999999999933,"pose":{"translation":{"x":4.276867468517136,"y":-1.9551625066531164},"rotation":{"radians":0.7151623578596862}},"curvature":0.1716130584911985},{"time":0.8856616408535245,"velocity":2.6569849225605733,"acceleration":2.999999999999997,"pose":{"translation":{"x":4.326852559608481,"y":-1.9112722288145225},"rotation":{"radians":0.7256708125595506}},"curvature":0.14489219858770688},{"time":0.9107892607468286,"velocity":2.7323677822404857,"acceleration":2.9999999999999933,"pose":{"translation":{"x":4.377295549321474,"y":-1.8661030175331623},"rotation":{"radians":0.7346488446533966}},"curvature":0.12074979352801006},{"time":0.9356106857771136,"velocity":2.8068320573313406,"acceleration":3.0000000000000098,"pose":{"translation":{"x":4.4281294751912,"y":-1.8198229537049446},"rotation":{"radians":0.7421799396015097}},"curvature":0.0987167163871896},{"time":0.9600923145879835,"velocity":2.8802769437639504,"acceleration":2.614799069105123,"pose":{"translation":{"x":4.479284807045011,"y":-1.7726068677096063},"rotation":{"radians":0.7483339599437678}},"curvature":0.07837160771189397},{"time":0.9842391546760743,"velocity":2.9434160787481205,"acceleration":0.7091827420070252,"pose":{"translation":{"x":4.5306898909789775,"y":-1.7246352144967432},"rotation":{"radians":0.753167533852469}},"curvature":0.05933300885315723},{"time":1.008233944163923,"velocity":2.9604327693509944,"acceleration":0.6929390292542418,"pose":{"translation":{"x":4.582271393334359,"y":-1.6760929486718354},"rotation":{"radians":0.7567244542336702}},"curvature":0.04125109123041828},{"time":1.0322061707397836,"velocity":2.977044060763534,"acceleration":0.6902603500969828,"pose":{"translation":{"x":4.633954744674066,"y":-1.627168399582279},"rotation":{"radians":0.7590360284526021}},"curvature":0.023799333454241605},{"time":1.0560961165417506,"velocity":2.9935343431165977,"acceleration":-0.15360934586446268,"pose":{"translation":{"x":4.685664583759118,"y":-1.5780521464034132},"rotation":{"radians":0.7601213391661734}},"curvature":0.006666277661887551},{"time":1.079922908603498,"velocity":2.989874325173944,"acceleration":-0.7013269525645326,"pose":{"translation":{"x":4.737325201525113,"y":-1.5289358932245467},"rotation":{"radians":0.7599873909288635}},"curvature":-0.010452640946589037},{"time":1.1037564741134904,"velocity":2.973159203306074,"acceleration":-2.462603005612013,"pose":{"translation":{"x":4.7888609850586885,"y":-1.480011344134991},"rotation":{"radians":0.7586291273016804}},"curvature":-0.02786327923933318},{"time":1.127758375594418,"velocity":2.9140520485787382,"acceleration":-3.0,"pose":{"translation":{"x":4.840196861573979,"y":-1.4314690783100834},"rotation":{"radians":0.7560293108474947}},"curvature":-0.045881117204540606},{"time":1.1521061171128049,"velocity":2.841008824023578,"acceleration":-3.000000000000006,"pose":{"translation":{"x":4.891258742389087,"y":-1.3834974250972196},"rotation":{"radians":0.7521582651136997}},"curvature":-0.06483987946511054},{"time":1.176818513738355,"velocity":2.766871634146927,"acceleration":-3.0000000000000067,"pose":{"translation":{"x":4.941973966902539,"y":-1.3362813391018817},"rotation":{"radians":0.7469734848845259}},"curvature":-0.08510057564153622},{"time":1.201861468016625,"velocity":2.691742771312117,"acceleration":-3.0,"pose":{"translation":{"x":4.992271746569754,"y":-1.290001275273664},"rotation":{"radians":0.7404191301220512}},"curvature":-0.10706103507590262},{"time":1.2272000754281833,"velocity":2.6157269490774424,"acceleration":-3.0000000000000067,"pose":{"translation":{"x":5.042083608879501,"y":-1.2448320639923036},"rotation":{"radians":0.7324254318684337}},"curvature":-0.13116590516731727},{"time":1.2527989511809319,"velocity":2.5389303218191968,"acceleration":-2.9999999999999933,"pose":{"translation":{"x":5.091343841330369,"y":-1.2009417861537095},"rotation":{"radians":0.7229080571771316}},"curvature":-0.15791689397528239},{"time":1.2786226365851732,"velocity":2.461459265606473,"acceleration":-2.999999999999993,"pose":{"translation":{"x":5.139989935407221,"y":-1.1584906482559907},"rotation":{"radians":0.7117675077743372}},"curvature":-0.1878827213264359},{"time":1.3046361067471872,"velocity":2.383418855120431,"acceleration":-3.0,"pose":{"translation":{"x":5.187963030557664,"y":-1.1176298574854808},"rotation":{"radians":0.698888667392153}},"curvature":-0.2217077309734497},{"time":1.3570967645000946,"velocity":2.226036881861709,"acceleration":-3.000000000000004,"pose":{"translation":{"x":5.2816756855422335,"y":-1.0412324000287478},"rotation":{"radians":0.6673773445352108}},"curvature":-0.3039170857471932},{"time":1.4099383576443232,"velocity":2.0675121024290233,"acceleration":-2.999999999999998,"pose":{"translation":{"x":5.3721007522253466,"y":-0.9727363383078425},"rotation":{"radians":0.6271532154617565}},"curvature":-0.41122091053998006},{"time":1.4629853653237144,"velocity":1.90837107939085,"acceleration":-3.000000000000002,"pose":{"translation":{"x":5.458943958445762,"y":-0.9129126133645666},"rotation":{"radians":0.5768350522658812}},"curvature":-0.5506698994005365},{"time":1.5161869847789742,"velocity":1.7487662210250707,"acceleration":-2.9999999999999973,"pose":{"translation":{"x":5.542012021186539,"y":-0.8622801855111053},"rotation":{"radians":0.5151039437421481}},"curvature":-0.7268715379569509},{"time":1.569704317704183,"velocity":1.5882142222494449,"acceleration":-3.0000000000000027,"pose":{"translation":{"x":5.62122685382185,"y":-0.82107003708294},"rotation":{"radians":0.44119370579756156}},"curvature":-0.9353726275622822},{"time":1.6240447272199892,"velocity":1.425192993702026,"acceleration":-3.0,"pose":{"translation":{"x":5.696639773363788,"y":-0.7891891751917628},"rotation":{"radians":0.355773742439762}},"curvature":-1.1512466772492118},{"time":1.65183493577584,"velocity":1.3418223680344739,"acceleration":-3.0,"pose":{"translation":{"x":5.732975432412914,"y":-0.7766207207471636},"rotation":{"radians":0.30965392012596843}},"curvature":-1.2454525068745395},{"time":1.6802952251020455,"velocity":1.2564415000558569,"acceleration":-3.0,"pose":{"translation":{"x":5.7684457077091915,"y":-0.7661846344783774},"rotation":{"radians":0.2621942336526418}},"curvature":-1.317284482724688},{"time":1.709712366919219,"velocity":1.1681900746043365,"acceleration":-2.999999999999997,"pose":{"translation":{"x":5.803099735316894,"y":-0.7577621442185807},"rotation":{"radians":0.21442500493297934}},"curvature":-1.3548895419721148},{"time":1.7404828856629597,"velocity":1.0758785183731143,"acceleration":-3.0000000000000018,"pose":{"translation":{"x":5.8369974028864435,"y":-0.7512074798656316},"rotation":{"radians":0.16764067155308857}},"curvature":-1.3463080501042284},{"time":1.8086103280430197,"velocity":0.8714961912329341,"acceleration":-3.0000000000000004,"pose":{"translation":{"x":5.902819630302291,"y":-0.7429768093113003},"rotation":{"radians":0.08329065457988592}},"curvature":-1.152025179001855},{"time":1.8946607845548429,"velocity":0.6133448216974647,"acceleration":-2.9999999999999996,"pose":{"translation":{"x":5.966623393988655,"y":-0.7397437565610252},"rotation":{"radians":0.022845873177659935}},"curvature":-0.6940883889283442},{"time":2.099109058453998,"velocity":0.0,"acceleration":-2.9999999999999996,"pose":{"translation":{"x":6.029320137849446,"y":-0.7392554939012195},"rotation":{"radians":7.105427357601138E-15}},"curvature":2.019483917365906E-28}] \ No newline at end of file diff --git a/PathWeaver/pathweaver.json b/PathWeaver/pathweaver.json new file mode 100644 index 0000000..ddd52e0 --- /dev/null +++ b/PathWeaver/pathweaver.json @@ -0,0 +1,9 @@ +{ + "lengthUnit": "Meter", + "exportUnit": "Always Meters", + "maxVelocity": 1.7, + "maxAcceleration": 2.7, + "wheelBase": 0.648, + "gameName": "Infinite Recharge", + "outputDir": ".." +} \ No newline at end of file diff --git a/src/main/deploy/paths/DriveOffLineBackward.wpilib.json b/src/main/deploy/paths/DriveOffLineBackward.wpilib.json new file mode 100644 index 0000000..25c61f9 --- /dev/null +++ b/src/main/deploy/paths/DriveOffLineBackward.wpilib.json @@ -0,0 +1 @@ +[{"time":0.0,"velocity":0.0,"acceleration":2.7,"pose":{"translation":{"x":3.2,"y":-2.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.3042903097250923,"velocity":0.8215838362577492,"acceleration":2.7,"pose":{"translation":{"x":3.325,"y":-2.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.43033148291193524,"velocity":1.161895003862225,"acceleration":-2.7,"pose":{"translation":{"x":3.45,"y":-2.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.5563726560987782,"velocity":0.8215838362577492,"acceleration":-2.7,"pose":{"translation":{"x":3.575,"y":-2.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.8606629658238705,"velocity":0.0,"acceleration":-2.7,"pose":{"translation":{"x":3.7,"y":-2.3},"rotation":{"radians":0.0}},"curvature":0.0}] \ No newline at end of file diff --git a/src/main/deploy/paths/DriveOffLineForward.wpilib.json b/src/main/deploy/paths/DriveOffLineForward.wpilib.json new file mode 100644 index 0000000..25c61f9 --- /dev/null +++ b/src/main/deploy/paths/DriveOffLineForward.wpilib.json @@ -0,0 +1 @@ +[{"time":0.0,"velocity":0.0,"acceleration":2.7,"pose":{"translation":{"x":3.2,"y":-2.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.3042903097250923,"velocity":0.8215838362577492,"acceleration":2.7,"pose":{"translation":{"x":3.325,"y":-2.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.43033148291193524,"velocity":1.161895003862225,"acceleration":-2.7,"pose":{"translation":{"x":3.45,"y":-2.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.5563726560987782,"velocity":0.8215838362577492,"acceleration":-2.7,"pose":{"translation":{"x":3.575,"y":-2.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.8606629658238705,"velocity":0.0,"acceleration":-2.7,"pose":{"translation":{"x":3.7,"y":-2.3},"rotation":{"radians":0.0}},"curvature":0.0}] \ No newline at end of file diff --git a/src/main/deploy/paths/EightBallMid0.wpilib.json b/src/main/deploy/paths/EightBallMid0.wpilib.json new file mode 100644 index 0000000..9697957 --- /dev/null +++ b/src/main/deploy/paths/EightBallMid0.wpilib.json @@ -0,0 +1 @@ +[{"time":0.0,"velocity":0.0,"acceleration":2.6999999999999997,"pose":{"translation":{"x":3.2,"y":-2.4},"rotation":{"radians":1.4909663410826592}},"curvature":0.0},{"time":0.241057734845558,"velocity":0.6508558840830065,"acceleration":2.6999999999999997,"pose":{"translation":{"x":3.2065095854674475,"y":-2.3218236291658374},"rotation":{"radians":1.4813756721292652}},"curvature":-0.23682019043437622},{"time":0.3413462238092895,"velocity":0.9216348042850815,"acceleration":2.7000000000000015,"pose":{"translation":{"x":3.2144920400116974,"y":-2.243377360913824},"rotation":{"radians":1.454917761458827}},"curvature":-0.42576201763689586},{"time":0.41891023510025166,"velocity":1.1310576347706796,"acceleration":2.7000000000000006,"pose":{"translation":{"x":3.2251942805954354,"y":-2.1644925027916173},"rotation":{"radians":1.4151325512096895}},"curvature":-0.5652942275784931},{"time":0.485033699119182,"velocity":1.3095909876217915,"acceleration":1.198557825708184,"pose":{"translation":{"x":3.2396305049811973,"y":-2.0851022911999886},"rotation":{"radians":1.3654713587791596}},"curvature":-0.6577310942169727},{"time":0.5460162839325096,"velocity":1.3826821418817183,"acceleration":-0.09664254151193248,"pose":{"translation":{"x":3.2585973431481516,"y":-2.005232567172635},"rotation":{"radians":1.3091243144298805}},"curvature":-0.7083161600470856},{"time":0.6067366321916278,"velocity":1.3768139731044675,"acceleration":0.056078716638971786,"pose":{"translation":{"x":3.2826890087088776,"y":-1.9249924521559951},"rotation":{"radians":1.2488824795564184}},"curvature":-0.7244898416325155},{"time":0.6689099696895163,"velocity":1.3803005740805108,"acceleration":0.1547804484445089,"pose":{"translation":{"x":3.3123124503261456,"y":-1.844565023789062},"rotation":{"radians":1.1870383284988666}},"curvature":-0.7148635896682205},{"time":0.732304190496085,"velocity":1.3901127600057417,"acceleration":0.2103982966969226,"pose":{"translation":{"x":3.347702503129696,"y":-1.7641979916831971},"rotation":{"radians":1.1253401051571525}},"curvature":-0.6880320260809347},{"time":0.7967364279166413,"velocity":1.4036691930113985,"acceleration":0.23280173311870972,"pose":{"translation":{"x":3.388937040133019,"y":-1.684194373201945},"rotation":{"radians":1.065004679160645}},"curvature":-0.6515789195141447},{"time":0.8620547624805587,"velocity":1.4188754145023061,"acceleration":0.23088864679733498,"pose":{"translation":{"x":3.435952123650134,"y":-1.6049031692408469},"rotation":{"radians":1.006777432997644}},"curvature":-0.6115184355792523},{"time":0.9281194841468721,"velocity":1.4341290086888838,"acceleration":0.21222177317200774,"pose":{"translation":{"x":3.4885571567123694,"y":-1.526710040007253},"rotation":{"radians":0.951018464595247}},"curvature":-0.5721866543272143},{"time":0.9947872927323935,"velocity":1.4482773692403952,"acceleration":0.18271830275439588,"pose":{"translation":{"x":3.5464500344851415,"y":-1.4500279808001393},"rotation":{"radians":0.8977946082603232}},"curvature":-0.5364453773677413},{"time":1.061900352517623,"velocity":1.4605401536170066,"acceleration":0.14658686074019905,"pose":{"translation":{"x":3.6092322956847354,"y":-1.3752879977899195},"rotation":{"radians":0.8469628668079059}},"curvature":-0.5060275803559428},{"time":1.1292807138826122,"velocity":1.4704172292650406,"acceleration":0.10649570641795872,"pose":{"translation":{"x":3.676424273995083,"y":-1.3029297837982592},"rotation":{"radians":0.7982381560354028}},"curvature":-0.4818964199153621},{"time":1.1967296497350939,"velocity":1.4776002513357902,"acceleration":0.06387559089571403,"pose":{"translation":{"x":3.7474802494845436,"y":-1.2333923940778901},"rotation":{"radians":0.751243975385745}},"curvature":-0.46454985151642403},{"time":1.2640309657840656,"velocity":1.4818991626664775,"acceleration":0.019269616300747743,"pose":{"translation":{"x":3.8218036000226827,"y":-1.1671049220924246},"rotation":{"radians":0.7055480104280688}},"curvature":-0.45424867593529666},{"time":1.3309571960078612,"velocity":1.4831888054433455,"acceleration":-0.027311892934865002,"pose":{"translation":{"x":3.8987619526970523,"y":-1.1044771752961677},"rotation":{"radians":0.6606862029065328}},"curvature":-0.45117004060039156},{"time":1.3972776197336674,"velocity":1.4813774691311514,"acceleration":-0.07602490623349939,"pose":{"translation":{"x":3.9777023352299703,"y":-1.0458903509139337},"rotation":{"radians":0.6161792808148264}},"curvature":-0.4554955855641011},{"time":1.4627671006194463,"velocity":1.4763986374875295,"acceleration":-0.12676857025603222,"pose":{"translation":{"x":4.057966327395298,"y":-0.9916877117208573},"rotation":{"radians":0.5715458045066106}},"curvature":-0.4674399207316766},{"time":1.5272147641598541,"velocity":1.4682286993241702,"acceleration":-0.17863556576701026,"pose":{"translation":{"x":4.138905212435224,"y":-0.9421652618222098},"rotation":{"radians":0.5263159118657924}},"curvature":-0.48721532342589935},{"time":1.590431452927045,"velocity":1.456935950360326,"acceleration":-0.2291597090436514,"pose":{"translation":{"x":4.219895128477039,"y":-0.8975624224332113},"rotation":{"radians":0.4800503874072753}},"curvature":-0.514914663124024},{"time":1.6522547165397012,"velocity":1.4427685492587208,"acceleration":-0.2733089917486314,"pose":{"translation":{"x":4.300352219949918,"y":-0.858052707658846},"rotation":{"radians":0.43237050210611794}},"curvature":-0.5502783042303422},{"time":1.7125498410614521,"velocity":1.4262893495683229,"acceleration":-0.3022406193756772,"pose":{"translation":{"x":4.3797477890017005,"y":-0.8237344002736755},"rotation":{"radians":0.38300509676508365}},"curvature":-0.5922963376106968},{"time":1.771205213726376,"velocity":1.408561313404365,"acceleration":-0.301932659771223,"pose":{"translation":{"x":4.457623446915669,"y":-0.794621227501652},"rotation":{"radians":0.3318620281588008}},"curvature":-0.638596353997764},{"time":1.8281203979112544,"velocity":1.3913767604620557,"acceleration":-0.25183985881265725,"pose":{"translation":{"x":4.5336062655273235,"y":-0.770633036795934},"rotation":{"radians":0.2791301165865979}},"curvature":-0.6846031138647943},{"time":1.883186076418791,"velocity":1.3775090277612945,"acceleration":-0.853135730581628,"pose":{"translation":{"x":4.607423928641174,"y":-0.751586471618698},"rotation":{"radians":0.22541304675400947}},"curvature":-0.7225669573485112},{"time":1.9370285392585973,"velocity":1.3315740988901423,"acceleration":-2.699999999999998,"pose":{"translation":{"x":4.678919883447504,"y":-0.7371856472209546},"rotation":{"radians":0.17188576739499878}},"curvature":-0.7407736342310233},{"time":1.992654531738804,"velocity":1.1813839191935844,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":4.748068491939165,"y":-0.7270128264223612},"rotation":{"radians":0.1204455235478345}},"curvature":-0.7235395890805306},{"time":2.0538463235767033,"velocity":1.016166081231257,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":4.814990182328344,"y":-0.7205190953910354},"rotation":{"radians":0.07380665332979482}},"curvature":-0.6528042487689714},{"time":2.124517065276345,"velocity":0.825355078642223,"acceleration":-2.7,"pose":{"translation":{"x":4.87996660046335,"y":-0.7170150394233701},"rotation":{"radians":0.03546965101273601}},"curvature":-0.5119937898610332},{"time":2.4302041314401315,"velocity":0.0,"acceleration":-2.7,"pose":{"translation":{"x":5.006107200045358,"y":-0.7154598441848505},"rotation":{"radians":-3.99680288865064E-15}},"curvature":-7.549516567451497E-15}] \ No newline at end of file diff --git a/src/main/deploy/paths/EightBallMid1.wpilib.json b/src/main/deploy/paths/EightBallMid1.wpilib.json new file mode 100644 index 0000000..1fcfcfc --- /dev/null +++ b/src/main/deploy/paths/EightBallMid1.wpilib.json @@ -0,0 +1 @@ +[{"time":0.0,"velocity":0.0,"acceleration":2.7,"pose":{"translation":{"x":5.006,"y":-0.715},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.26560616204123155,"velocity":0.7171366375113252,"acceleration":2.700000000000001,"pose":{"translation":{"x":5.101237954974175,"y":-0.715000133837411},"rotation":{"radians":-4.1496514143772375E-6}},"curvature":-8.439120542891601E-5},{"time":0.3755418080019105,"velocity":1.0139628816051585,"acceleration":2.7000000000000015,"pose":{"translation":{"x":5.1963927268981935,"y":-0.7150010200477351},"rotation":{"radians":-1.5566916778703903E-5}},"curvature":-1.531433592359381E-4},{"time":0.45975256131083786,"velocity":1.2413319155392624,"acceleration":2.6999999999999997,"pose":{"translation":{"x":5.291352763772011,"y":-0.7150032761523467},"rotation":{"radians":-3.281919824111288E-5}},"curvature":-2.0809210046916836E-4},{"time":0.5305335413392231,"velocity":1.4324405616159026,"acceleration":2.7000000000000006,"pose":{"translation":{"x":5.385978881835937,"y":-0.7150073815320199},"rotation":{"radians":-5.4628064762566565E-5}},"curvature":-2.5102787463788406E-4},{"time":0.5926137419852601,"velocity":1.6000571033602022,"acceleration":1.7616233327671682,"pose":{"translation":{"x":5.480107913374901,"y":-0.7150136872941142},"rotation":{"radians":-7.986386339002337E-5}},"curvature":-2.83602941002837E-4},{"time":0.6492510855336531,"velocity":1.6998307692610013,"acceleration":-1.618642537235751E-4,"pose":{"translation":{"x":5.573556354522705,"y":-0.7150224261397599},"rotation":{"radians":-1.0753486872715826E-4}},"curvature":-3.07275938946559E-4},{"time":0.703708212041964,"velocity":1.699821954598859,"acceleration":-9.558060076856542E-5,"pose":{"translation":{"x":5.666124013066292,"y":-0.7150337222310442},"rotation":{"radians":-1.3677316456550684E-4}},"curvature":-3.2328258941494175E-4},{"time":0.7575219555253974,"velocity":1.6998168110489273,"acceleration":-3.565667757010362E-5,"pose":{"translation":{"x":5.757597656250001,"y":-0.7150476010581972},"rotation":{"radians":-1.6681884584259307E-4}},"curvature":-3.326228999871516E-4},{"time":0.8105612321047558,"velocity":1.6998149198445438,"acceleration":2.0620985976386642E-5,"pose":{"translation":{"x":5.847754658579826,"y":-0.715063999306777},"rotation":{"radians":-1.970036246728839E-4}},"curvature":-3.3605720307272754E-4},{"time":0.8626915928733692,"velocity":1.6998159948239822,"acceleration":7.612797407786101E-5,"pose":{"translation":{"x":5.936366649627686,"y":-0.7150827747248557},"rotation":{"radians":-2.267345283137577E-4}},"curvature":-3.3410511000065975E-4},{"time":0.9137773666638485,"velocity":1.699819883880445,"acceleration":1.3403797148642016E-4,"pose":{"translation":{"x":6.023203161835671,"y":-0.7151037159902053},"rotation":{"radians":-2.554780823579629E-4}},"curvature":-3.270428558434214E-4},{"time":0.9636838028938515,"velocity":1.6998265732379214,"acceleration":1.9801974397020216E-4,"pose":{"translation":{"x":6.108035278320313,"y":-0.7151265525774831},"rotation":{"radians":-2.827451666545957E-4}},"curvature":-3.1489552676741375E-4},{"time":1.0122792145971,"velocity":1.699836196088905,"acceleration":2.725041863281043E-4,"pose":{"translation":{"x":6.190639280676843,"y":-0.7151509646254184},"rotation":{"radians":-3.080766026243413E-4}},"curvature":-2.9742137977722E-4},{"time":1.059437121565497,"velocity":1.6998490468159724,"acceleration":3.630343580963836E-4,"pose":{"translation":{"x":6.270800296783448,"y":-0.7151765928039965},"rotation":{"radians":-3.310294717533898E-4}},"curvature":-2.740860371375139E-4},{"time":1.105038393643873,"velocity":1.6998656016445097,"acceleration":4.7670999504396565E-4,"pose":{"translation":{"x":6.3483159486055385,"y":-0.7152030481816463},"rotation":{"radians":-3.511641773574364E-4}},"curvature":-2.4402502101658282E-4},{"time":1.148973394189874,"velocity":1.6998865458984023,"acceleration":6.227242300883394E-4,"pose":{"translation":{"x":6.423000000000001,"y":-0.7152299220924245},"rotation":{"radians":-3.6803235840971186E-4}},"curvature":-2.059943242003666E-4},{"time":1.1911441237674736,"velocity":1.6999128066335107,"acceleration":8.129491144905005E-4,"pose":{"translation":{"x":6.494686004519464,"y":-0.7152567960032029},"rotation":{"radians":-3.811659755577217E-4}},"curvature":-1.58311254330657E-4},{"time":1.231466364211058,"velocity":1.6999455865631736,"acceleration":0.0010624275510308508,"pose":{"translation":{"x":6.563230953216554,"y":-0.7152832513808527},"rotation":{"radians":-3.900682698212409E-4}},"curvature":-9.879298936442655E-5},{"time":1.269871823331935,"velocity":1.6999863895810536,"acceleration":-1.1176149536288589,"pose":{"translation":{"x":6.628518922448159,"y":-0.7153088795594308},"rotation":{"radians":-3.942079319109873E-4}},"curvature":-2.471047188454908E-5},{"time":1.3067580684990234,"velocity":1.6587617703990953,"acceleration":-2.7,"pose":{"translation":{"x":6.690464721679689,"y":-0.715333291607366},"rotation":{"radians":-3.930188464700522E-4}},"curvature":6.720568814785149E-5},{"time":1.3796242838165373,"velocity":1.4620229890418077,"acceleration":-2.7,"pose":{"translation":{"x":6.804164600372316,"y":-0.7153770694599936},"rotation":{"radians":-3.722874810951608E-4}},"curvature":3.192984868163592E-4},{"time":1.4531813456172147,"velocity":1.2634189221799788,"acceleration":-2.6999999999999984,"pose":{"translation":{"x":6.904402343750003,"y":-0.715412243126652},"rotation":{"radians":-3.234795622395437E-4}},"curvature":6.815272352510909E-4},{"time":1.528567885890812,"velocity":1.059875263441266,"acceleration":-2.6999999999999984,"pose":{"translation":{"x":6.9919748954772984,"y":-0.7154374180450894},"rotation":{"radians":-2.4489770884975466E-4}},"curvature":0.0011296207077533735},{"time":1.6090377433938088,"velocity":0.8426066481831752,"acceleration":-2.6999999999999997,"pose":{"translation":{"x":7.0685211181640675,"y":-0.7154524626528294},"rotation":{"radians":-1.43629614104435E-4}},"curvature":0.0014770805957295724},{"time":1.7044707307238756,"velocity":0.5849375823919951,"acceleration":-2.7000000000000006,"pose":{"translation":{"x":7.136638523101813,"y":-0.7154588241371141},"rotation":{"radians":-4.551855926430377E-5}},"curvature":0.0012543019646483913},{"time":1.9211142797579477,"velocity":0.0,"acceleration":-2.7000000000000006,"pose":{"translation":{"x":7.200000000000008,"y":-0.7154598441848493},"rotation":{"radians":0.0}},"curvature":3.552713678800261E-15}] \ No newline at end of file diff --git a/src/main/deploy/paths/EightBallMid2.wpilib.json b/src/main/deploy/paths/EightBallMid2.wpilib.json new file mode 100644 index 0000000..1fb827b --- /dev/null +++ b/src/main/deploy/paths/EightBallMid2.wpilib.json @@ -0,0 +1 @@ +[{"time":0.0,"velocity":0.0,"acceleration":2.6999999999999997,"pose":{"translation":{"x":7.2,"y":-0.715},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.18561803822360862,"velocity":0.5011687032037432,"acceleration":2.6999999999999997,"pose":{"translation":{"x":7.246509805083275,"y":-0.7155430880188942},"rotation":{"radians":-0.0350011181299882}},"curvature":-1.5127100780557379},{"time":0.22631257760103962,"velocity":0.6110439595228069,"acceleration":2.7000000000000015,"pose":{"translation":{"x":7.269105931106955,"y":-0.7167897682543843},"rotation":{"radians":-0.07832761851893318}},"curvature":-2.334420656075931},{"time":0.2597927090945532,"velocity":0.7014403145552937,"acceleration":-0.08416797278978987,"pose":{"translation":{"x":7.290950786590576,"y":-0.7191414356231689},"rotation":{"radians":-0.1395525129244173}},"curvature":-3.263282772933744},{"time":0.29010162656065624,"velocity":0.6988892744147187,"acceleration":-2.7000000000000037,"pose":{"translation":{"x":7.311837589647621,"y":-0.7228940822277218},"rotation":{"radians":-0.21970640501294192}},"curvature":-4.314442138931049},{"time":0.30532803573759026,"velocity":0.6577779696369969,"acceleration":-2.700000000000003,"pose":{"translation":{"x":7.321862860926544,"y":-0.7253787572213332},"rotation":{"radians":-0.26715373954274585}},"curvature":-4.8768249166265605},{"time":0.32128090008101395,"velocity":0.6147052359097529,"acceleration":-2.2718220683025194,"pose":{"translation":{"x":7.331580549359321,"y":-0.7283090326189995},"rotation":{"radians":-0.3195540309110183}},"curvature":-5.44923810979411},{"time":0.33804851075922254,"velocity":0.5766122079382936,"acceleration":-1.808467530328736,"pose":{"translation":{"x":7.3409705967268675,"y":-0.7317123590575647},"rotation":{"radians":-0.3768130423863286}},"curvature":-6.013133652151949},{"time":0.3556138293735418,"velocity":0.5448458995644183,"acceleration":-1.377717479971638,"pose":{"translation":{"x":7.3500141697414225,"y":-0.7356141742598266},"rotation":{"radians":-0.4386948535617238}},"curvature":-6.54366755130846},{"time":0.3739173384361787,"velocity":0.5196288351840042,"acceleration":-0.9750542191131898,"pose":{"translation":{"x":7.3586936382955175,"y":-0.7400379414865165},"rotation":{"radians":-0.5047911520002755}},"curvature":-7.011005995792478},{"time":0.39286733812909297,"velocity":0.5011515580312345,"acceleration":-0.5952264574689293,"pose":{"translation":{"x":7.366992553710937,"y":-0.7450051879882812},"rotation":{"radians":-0.5745030191870489}},"curvature":-7.383294440478745},{"time":0.41233999209292455,"velocity":0.4895609191948247,"acceleration":-0.23219580202763299,"pose":{"translation":{"x":7.37489562698768,"y":-0.7505355434576632},"rotation":{"radians":-0.6470431198312998}},"curvature":-7.631170999207397},{"time":0.4321841392506889,"velocity":0.48495319152997324,"acceleration":0.12042438759254688,"pose":{"translation":{"x":7.382388707052916,"y":-0.7566467784810811},"rotation":{"radians":-0.7214638781945694}},"curvature":-7.733002970359292},{"time":0.45223094758257126,"velocity":0.48736731614652534,"acceleration":0.46856974738435647,"pose":{"translation":{"x":7.389458759009955,"y":-0.7633548429908115},"rotation":{"radians":-0.7967118933901203}},"curvature":-7.67941005620971},{"time":0.47230715486631836,"velocity":0.4967744195219067,"acceleration":0.8167215181565207,"pose":{"translation":{"x":7.3960938423872,"y":-0.7706739047169685},"rotation":{"radians":-0.8717017970267}},"curvature":-7.475544337770991},{"time":0.492249500109957,"velocity":0.5130617620048927,"acceleration":1.1668842026742907,"pose":{"translation":{"x":7.402283089387114,"y":-0.7786163876394857},"rotation":{"radians":-0.945396735690179}},"curvature":-7.140250735362253},{"time":0.5119175444245033,"velocity":0.5360120922130347,"acceleration":1.5177593154443771,"pose":{"translation":{"x":7.408016683135182,"y":-0.7871930104400963},"rotation":{"radians":-1.0168804926180126}},"curvature":-6.702377284278848},{"time":0.5312026214692818,"velocity":0.5652821975468096,"acceleration":1.8643410335216777,"pose":{"translation":{"x":7.413285835928866,"y":-0.7964128249543136},"rotation":{"radians":-1.0854090438103314}},"curvature":-6.195516955724278},{"time":0.5500318690235017,"velocity":0.6003863363924795,"acceleration":2.198120405334121,"pose":{"translation":{"x":7.418082767486572,"y":-0.8062832546234131},"rotation":{"radians":-1.1504356775241285}},"curvature":-5.652809077092928},{"time":0.5683676070722279,"velocity":0.6406904963442459,"acceleration":2.5079745092906225,"pose":{"translation":{"x":7.422400683196611,"y":-0.8168101329464116},"rotation":{"radians":-1.2116107716220759}},"curvature":-5.103047095861068},{"time":0.5862032473753316,"velocity":0.6854218275813063,"acceleration":2.700000000000005,"pose":{"translation":{"x":7.426233752366156,"y":-0.8279977419320493},"rotation":{"radians":-1.2687623098382128}},"curvature":-4.568594092565457},{"time":0.6035740431139919,"velocity":0.7323229760756892,"acceleration":2.7000000000000033,"pose":{"translation":{"x":7.429577086470206,"y":-0.8398488505507703},"rotation":{"radians":-1.321865159656409}},"curvature":-4.064939827552741},{"time":0.6205696312402517,"velocity":0.7782110640165907,"acceleration":2.699999999999995,"pose":{"translation":{"x":7.432426717400551,"y":-0.8523647531867027},"rotation":{"radians":-1.3710064961660495}},"curvature":-3.6013796997049092},{"time":0.653798500637175,"velocity":0.8679290113882836,"acceleration":2.699999999999998,"pose":{"translation":{"x":7.436633468884975,"y":-0.8793889758270235},"rotation":{"radians":-1.4581210241861995}},"curvature":-2.8082821953841726},{"time":0.6864157481106786,"velocity":0.9559955795667432,"acceleration":2.700000000000003,"pose":{"translation":{"x":7.43883984375,"y":-0.909052734375},"rotation":{"radians":-1.5319155465954188}},"curvature":-2.187808044399357},{"time":0.7186946971645294,"velocity":1.0431487420121404,"acceleration":2.700000000000001,"pose":{"translation":{"x":7.439045013528317,"y":-0.9413172208983451},"rotation":{"radians":-1.5944160241119611}},"curvature":-1.7137886686522077},{"time":0.7507735226736758,"velocity":1.1297615708868358,"acceleration":2.7,"pose":{"translation":{"x":7.437260788321495,"y":-0.9761237254738808},"rotation":{"radians":-1.647530756225237}},"curvature":-1.3550438251889343},{"time":0.8145076192946602,"velocity":1.3018436317634936,"acceleration":1.9009265353098717,"pose":{"translation":{"x":7.427830410003662,"y":-1.053035821914673},"rotation":{"radians":-1.7319621716711908}},"curvature":-0.8776200100484256},{"time":0.8787738090352114,"velocity":1.4240089371645663,"acceleration":1.0320377589657466,"pose":{"translation":{"x":7.410869511723519,"y":-1.1389680621027947},"rotation":{"radians":-1.7953267099312762}},"curvature":-0.5981874451621899},{"time":0.9452304081993644,"velocity":1.4925946568344237,"acceleration":0.6704363837971291,"pose":{"translation":{"x":7.386856567382813,"y":-1.232859802246094},"rotation":{"radians":-1.8443193056718796}},"curvature":-0.42887728768877253},{"time":1.014564015143465,"velocity":1.539078429549638,"acceleration":0.4379762366154687,"pose":{"translation":{"x":7.356405448794365,"y":-1.3334500911831857},"rotation":{"radians":-1.8833328796774655}},"curvature":-0.3227070850970345},{"time":1.086515574956774,"velocity":1.570591502935284,"acceleration":0.28764631771309085,"pose":{"translation":{"x":7.320243152618408,"y":-1.4393170452117925},"rotation":{"radians":-1.9153030970810474}},"curvature":-0.2543047895084811},{"time":1.160531968955257,"velocity":1.5918820461193488,"acceleration":0.18693718068502835,"pose":{"translation":{"x":7.2791875272989275,"y":-1.5489172229170802},"rotation":{"radians":-1.9422516839062522}},"curvature":-0.209624443804745},{"time":1.2358666468993684,"velocity":1.6059648984220356,"acceleration":0.11490586723990336,"pose":{"translation":{"x":7.234125000000001,"y":-1.6606250000000005},"rotation":{"radians":-1.965624524729717}},"curvature":-0.1807211323727493},{"time":1.3116536756420727,"velocity":1.6146732726852515,"acceleration":0.057708477203834777,"pose":{"translation":{"x":7.185988303542137,"y":-1.7727719441056258},"rotation":{"radians":-1.9865046578778909}},"curvature":-0.16310054864071177},{"time":1.3869657142924408,"velocity":1.6190194157508806,"acceleration":0.0049975529370985036,"pose":{"translation":{"x":7.1357342033386235,"y":-1.88368618965149},"rotation":{"radians":-2.0057518949614077}},"curvature":-0.15437744131502087},{"time":1.4608626989337086,"velocity":1.6193887198435173,"acceleration":-0.05297813546347199,"pose":{"translation":{"x":7.084321224331855,"y":-1.9917318126559267},"rotation":{"radians":-2.024100963913834}},"curvature":-0.15363837252157278},{"time":1.5324356797043124,"velocity":1.6155969167727278,"acceleration":-0.12834859710760868,"pose":{"translation":{"x":7.032687377929688,"y":-2.095348205566407},"rotation":{"radians":-2.042238626552442}},"curvature":-0.16124278314075052},{"time":1.6008490316547188,"velocity":1.606816159026464,"acceleration":-0.23974686245403207,"pose":{"translation":{"x":6.981727888941764,"y":-2.1930894520878805},"rotation":{"radians":-2.0608745532745756}},"curvature":-0.17899026334377835},{"time":1.6653838574096969,"velocity":1.5913441370326904,"acceleration":-0.9141348079534928,"pose":{"translation":{"x":6.932272922515868,"y":-2.2836637020111104},"rotation":{"radians":-2.0808190837865843}},"curvature":-0.21073857875662377},{"time":1.7260677199073722,"velocity":1.5358709060425018,"acceleration":-2.7,"pose":{"translation":{"x":6.885065311074255,"y":-2.3659725460410135},"rotation":{"radians":-2.1030825654130876}},"curvature":-0.26376144837191884},{"time":1.7848057436642981,"velocity":1.3772782418988014,"acceleration":-2.6999999999999997,"pose":{"translation":{"x":6.840738281249999,"y":-2.4391503906250023},"rotation":{"radians":-2.129015304185589}},"curvature":-0.3514924199646048},{"time":1.8429502898001922,"velocity":1.2202879673318878,"acceleration":-2.699999999999998,"pose":{"translation":{"x":6.7997931808233245,"y":-2.502603832781319},"rotation":{"radians":-2.1605122947808555}},"curvature":-0.4989493268459689},{"time":1.8999104848927477,"velocity":1.0664954405819882,"acceleration":-2.7000000000000024,"pose":{"translation":{"x":6.762577205657957,"y":-2.5560510349273713},"rotation":{"radians":-2.200302020305231}},"curvature":-0.7530310265685853},{"time":1.9551577746428328,"velocity":0.9173277582567586,"acceleration":-2.7000000000000006,"pose":{"translation":{"x":6.729261126637456,"y":-2.599561099708085},"rotation":{"radians":-2.2522772528856647}},"curvature":-1.1992166376442492},{"time":2.008384559314525,"velocity":0.7736154396431905,"acceleration":-2.6999999999999993,"pose":{"translation":{"x":6.69981701660156,"y":-2.633593444824225},"rotation":{"radians":-2.3215377094330125}},"curvature":-1.9722505146070455},{"time":2.0342925478455514,"velocity":0.7036638706094184,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":6.686478409957137,"y":-2.6473154572118123},"rotation":{"radians":-2.364268687217763}},"curvature":-2.522324344886889},{"time":2.059883585157657,"velocity":0.634568069866733,"acceleration":-2.6999999999999997,"pose":{"translation":{"x":6.67399597728252,"y":-2.6590371778607427},"rotation":{"radians":-2.412814916615144}},"curvature":-3.1726839328595746},{"time":2.085424932797736,"velocity":0.5656064312385193,"acceleration":-2.7,"pose":{"translation":{"x":6.662300425384189,"y":-2.668943344196311},"rotation":{"radians":-2.4666153391310455}},"curvature":-3.854197267072015},{"time":2.1113983772358043,"velocity":0.4954781312557351,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":6.651305866241448,"y":-2.677250471115121},"rotation":{"radians":-2.5237315022575926}},"curvature":-4.401365184508673},{"time":2.1386737463254133,"velocity":0.42183463471379096,"acceleration":-2.700000000000002,"pose":{"translation":{"x":6.640909120973196,"y":-2.684208081448457},"rotation":{"radians":-2.5802250024313738}},"curvature":-4.534047099645387},{"time":2.1689610863530175,"velocity":0.3400588166392591,"acceleration":-2.7,"pose":{"translation":{"x":6.630989023804658,"y":-2.6900999364256926},"rotation":{"radians":-2.6299027273834015}},"curvature":-3.9202737890595847},{"time":2.29490879621941,"velocity":0.0,"acceleration":-2.7,"pose":{"translation":{"x":6.611999999999994,"y":-2.70000000000001},"rotation":{"radians":-2.6779450445889683}},"curvature":8.473716576415405E-14}] \ No newline at end of file diff --git a/src/main/deploy/paths/EightBallMidComplete.wpilib.json b/src/main/deploy/paths/EightBallMidComplete.wpilib.json new file mode 100644 index 0000000..0dca329 --- /dev/null +++ b/src/main/deploy/paths/EightBallMidComplete.wpilib.json @@ -0,0 +1 @@ +[{"time":0.0,"velocity":0.0,"acceleration":2.7,"pose":{"translation":{"x":3.2,"y":-2.4},"rotation":{"radians":1.4909663410826592}},"curvature":0.0},{"time":0.24087146067360232,"velocity":0.6503529438187263,"acceleration":2.7,"pose":{"translation":{"x":3.2063923239707948,"y":-2.321935549378395},"rotation":{"radians":1.4853936094671658}},"curvature":-0.14003454519850286},{"time":0.3403321067745373,"velocity":0.9188966882912508,"acceleration":2.700000000000002,"pose":{"translation":{"x":3.2136058807373047,"y":-2.244230365753174},"rotation":{"radians":1.4693943312421711}},"curvature":-0.26854009181439953},{"time":0.4162093899230572,"velocity":1.1237653527922549,"acceleration":2.7000000000000006,"pose":{"translation":{"x":3.222373878955841,"y":-2.167232152819633},"rotation":{"radians":1.4438709569483001}},"curvature":-0.3892554699617604},{"time":0.4796643300987847,"velocity":1.295093691266719,"acceleration":2.187682579886264,"pose":{"translation":{"x":3.23333740234375,"y":-2.0912750244140623},"rotation":{"radians":1.4095508622566484}},"curvature":-0.5045238953483497},{"time":0.5355873525736204,"velocity":1.4174355133495053,"acceleration":-0.734989108404782,"pose":{"translation":{"x":3.247049701213837,"y":-2.0166784316301345},"rotation":{"radians":1.3670615930214727}},"curvature":-0.6152749842269323},{"time":0.5891532438960738,"velocity":1.378065166645508,"acceleration":-0.6426464146474123,"pose":{"translation":{"x":3.263980484008789,"y":-1.9437460899353027},"rotation":{"radians":1.31700394182167}},"curvature":-0.7210297835846021},{"time":0.643461958301142,"velocity":1.3431638660489806,"acceleration":-0.5453266663691863,"pose":{"translation":{"x":3.284520208835602,"y":-1.8727649062871932},"rotation":{"radians":1.2600195729181376}},"curvature":-0.8199640567171538},{"time":0.6984118145503199,"velocity":1.3131982441231504,"acceleration":-0.4394478338280287,"pose":{"translation":{"x":3.308984375,"y":-1.80400390625},"rotation":{"radians":1.1968484614725936}},"curvature":-0.9091030887449644},{"time":0.7539154354262596,"velocity":1.2888072981596066,"acceleration":-0.32468479529931726,"pose":{"translation":{"x":3.337617814540863,"y":-1.7377131611108778},"rotation":{"radians":1.1283693350753876}},"curvature":-0.984719188894597},{"time":0.809892141790966,"velocity":1.270632512712052,"acceleration":-0.20350244619471486,"pose":{"translation":{"x":3.3705989837646486,"y":-1.6741227149963378},"rotation":{"radians":1.0556153835823303}},"curvature":-1.0429516644982315},{"time":0.8662640818893885,"velocity":1.259160685005281,"acceleration":-0.08045877877688212,"pose":{"translation":{"x":3.4080442547798158,"y":-1.6134415119886398},"rotation":{"radians":0.9797593479141627}},"curvature":-1.0805731039252389},{"time":0.9229565411514642,"velocity":1.2545992789671963,"acceleration":0.03871626769718015,"pose":{"translation":{"x":3.45001220703125,"y":-1.5558563232421874},"rotation":{"radians":0.9020673863864839}},"curvature":-1.0957232372764043},{"time":0.9799017050564615,"velocity":1.256803983177002,"acceleration":0.14815351255780274,"pose":{"translation":{"x":3.4965079188346864,"y":-1.5015306740999221},"rotation":{"radians":0.8238287103495565}},"curvature":-1.0883868599412896},{"time":1.037044049449856,"velocity":1.265269822214671,"acceleration":0.24282302918833878,"pose":{"translation":{"x":3.547487258911133,"y":-1.4506037712097166},"rotation":{"radians":0.7462749142641318}},"curvature":-1.060453497287128},{"time":1.0943450481757073,"velocity":1.2791838243007994,"acceleration":0.3192880318302778,"pose":{"translation":{"x":3.602861177921295,"y":-1.4031894296407699},"rotation":{"radians":0.6705058542365749}},"curvature":-1.0153469207650658},{"time":1.151785273529354,"velocity":1.2975238008018528,"acceleration":0.37610415805722364,"pose":{"translation":{"x":3.6624999999999996,"y":-1.359375},"rotation":{"radians":0.5974362859535688}},"curvature":-0.957370100328515},{"time":1.2093630070251655,"velocity":1.3191790257811382,"acceleration":0.4138164485760789,"pose":{"translation":{"x":3.726237714290619,"y":-1.3192202955484391},"rotation":{"radians":0.5277705788228475}},"curvature":-0.8909885271430263},{"time":1.2670896494085861,"velocity":1.3430672599204667,"acceleration":0.43460983400489717,"pose":{"translation":{"x":3.793876266479492,"y":-1.282756519317627},"rotation":{"radians":0.46200494353630284}},"curvature":-0.8202450408700819},{"time":1.3249830335940764,"velocity":1.3682282940113044,"acceleration":0.4417529373871998,"pose":{"translation":{"x":3.8651898503303523,"y":-1.2499851912260056},"rotation":{"radians":0.4004508235379794}},"curvature":-0.7484034289896291},{"time":1.383060006914625,"velocity":1.3938839675702148,"acceleration":0.43900370786176246,"pose":{"translation":{"x":3.9399291992187493,"y":-1.2208770751953126},"rotation":{"radians":0.3432707503966877}},"curvature":-0.6778200992401754},{"time":1.441329456851559,"velocity":1.4194644721475942,"acceleration":0.43011410600385014,"pose":{"translation":{"x":4.017825877666472,"y":-1.1953711062669754},"rotation":{"radians":0.2905185837502133}},"curvature":-0.6099838436225127},{"time":1.4997865390306198,"velocity":1.4446076877886345,"acceleration":0.41850596016098784,"pose":{"translation":{"x":4.098596572875976,"y":-1.173373317718506},"rotation":{"radians":0.24217829113794748}},"curvature":-0.5456484025792503},{"time":1.5584084380603251,"velocity":1.4691413019285218,"acceleration":0.4071259180970876,"pose":{"translation":{"x":4.1819473862648,"y":-1.1547557681798937},"rotation":{"radians":0.19819797352787924}},"curvature":-0.4849954493582745},{"time":1.6171516690776433,"velocity":1.4930571937884367,"acceleration":0.3984462097492305,"pose":{"translation":{"x":4.267578124999998,"y":-1.1393554687500003},"rotation":{"radians":0.1585179297328586}},"curvature":-0.42778827730628},{"time":1.6759507421084023,"velocity":1.5164854615743109,"acceleration":0.39456346754290916,"pose":{"translation":{"x":4.35518659353256,"y":-1.1269733101129535},"rotation":{"radians":0.12309291857098917}},"curvature":-0.37349708304330403},{"time":1.7347179434753464,"velocity":1.5396728523234446,"acceleration":0.397352070883421,"pose":{"translation":{"x":4.444472885131834,"y":-1.1173729896545417},"rotation":{"radians":0.09190948239783109}},"curvature":-0.32139092067395386},{"time":1.7933440031024948,"velocity":1.562968038524027,"acceleration":0.4086404035647724,"pose":{"translation":{"x":4.53514367341995,"y":-1.1102799385786064},"rotation":{"radians":0.06499941950371821}},"curvature":-0.27059936113793964},{"time":1.8516994822211263,"velocity":1.5868144450612802,"acceleration":0.43038917748303396,"pose":{"translation":{"x":4.626916503906247,"y":-1.1053802490234386},"rotation":{"radians":0.042450411457934975}},"curvature":-0.2201505876217445},{"time":1.909636813019807,"velocity":1.6117500452092868,"acceleration":0.46485442754444356,"pose":{"translation":{"x":4.7195240855216944,"y":-1.1023196011781704},"rotation":{"radians":0.024414544524684806}},"curvature":-0.16899419639207908},{"time":1.9669930430836986,"velocity":1.6384123427017445,"acceleration":0.5147082657382434,"pose":{"translation":{"x":4.812718582153316,"y":-1.1007021903991712},"rotation":{"radians":0.011115066097951428}},"curvature":-0.11601802371569106},{"time":2.0235934863647898,"velocity":1.6675450587029708,"acceleration":0.5830593842147167,"pose":{"translation":{"x":4.906275904178614,"y":-1.1000896543264405},"rotation":{"radians":0.0028511840826505935}},"curvature":-0.06007008409255472},{"time":2.079256669525349,"velocity":1.6999999999999975,"acceleration":4.265969051474203E-14,"pose":{"translation":{"x":4.999999999999995,"y":-1.1000000000000019},"rotation":{"radians":-3.2566542055671518E-15}},"curvature":-4.342205607422935E-15},{"time":2.1343686615338977,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.0936903864145275,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.1892768582496456,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.187034320831299,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.243795345773229,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.279715749621391,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.297757143445389,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.371450805664063,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.351013572738965,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.461986735463142,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.4034336261508975,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.551100826263427,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.4549033360942203,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.638599333167076,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.5053251437900577,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.72431640625,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.5546172681596233,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.808113017678261,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.6027130747162124,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.889875888824463,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.649560444457203,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.969516417384147,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.6951211427560504,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.046969604492188,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.739370188254281,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.12219298183918,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.782295221753494,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.195165538787842,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.8238958751073535,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.265886649489403,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.864183140113587,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.334375,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.9031787374059825,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.400667515397072,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.940914485346383,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.464818286895753,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.01278040861083,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.5869903564453125,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.0802134292586643,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.701626491546631,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.143767239378293,"velocity":1.7,"acceleration":-0.9806847122121223,"pose":{"translation":{"x":6.80966796875,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.2051845150767986,"velocity":1.6397690166567587,"acceleration":-2.6999999999999993,"pose":{"translation":{"x":6.912227725982667,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.268443823133224,"velocity":1.4689688849044102,"acceleration":-2.6999999999999993,"pose":{"translation":{"x":7.010556030273439,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.337848318037038,"velocity":1.2815767486641116,"acceleration":-2.6999999999999997,"pose":{"translation":{"x":7.106006145477297,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.41794941674062,"velocity":1.0653037821644409,"acceleration":-2.699999999999997,"pose":{"translation":{"x":7.200000000000003,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.464311638861809,"velocity":0.9401257824372306,"acceleration":-2.6999999999999993,"pose":{"translation":{"x":7.246485948221108,"y":-1.1004457665706215},"rotation":{"radians":-0.02877542075414042}},"curvature":-1.2479062966462087},{"time":3.5152466704157184,"velocity":0.8026011972416758,"acceleration":-2.699999999999998,"pose":{"translation":{"x":7.290770527031534,"y":-1.103398777804336},"rotation":{"radians":-0.11545308104819059}},"curvature":-2.7518045032639415},{"time":3.5426121847539718,"velocity":0.7287143085283914,"acceleration":-2.7,"pose":{"translation":{"x":7.3114956505922,"y":-1.1064779763119066},"rotation":{"radians":-0.18293230201129468}},"curvature":-3.725227733364007},{"time":3.5716326709523103,"velocity":0.6503589957928775,"acceleration":-2.6999999999999993,"pose":{"translation":{"x":7.331006934455969,"y":-1.1109206638015918},"rotation":{"radians":-0.26869329900096417}},"curvature":-4.883076044748539},{"time":3.5869706546331592,"velocity":0.6089464398545852,"acceleration":-2.7,"pose":{"translation":{"x":7.340252146464765,"y":-1.1137126796958767},"rotation":{"radians":-0.31891235544080615}},"curvature":-5.523919809501616},{"time":3.6030413007858946,"velocity":0.5655556952421994,"acceleration":-2.261497896342809,"pose":{"translation":{"x":7.349130295806822,"y":-1.1169134527391915},"rotation":{"radians":-0.37417386340026293}},"curvature":-6.1910282938294925},{"time":3.6199421735253385,"velocity":0.5273344070955894,"acceleration":-1.8200753979085174,"pose":{"translation":{"x":7.357622936902054,"y":-1.1205421754363483},"rotation":{"radians":-0.4344600800162828}},"curvature":-6.863459317284596},{"time":3.637660919757719,"velocity":0.49508495299624905,"acceleration":-1.404368604220338,"pose":{"translation":{"x":7.365712904636497,"y":-1.1246164469159217},"rotation":{"radians":-0.499598871724775}},"curvature":-7.511586808196944},{"time":3.6561465833657167,"velocity":0.4691242673969987,"acceleration":-1.013471060094217,"pose":{"translation":{"x":7.373384290445131,"y":-1.1291523046382135},"rotation":{"radians":-0.5692244956270529}},"curvature":-8.098065776430404},{"time":3.675310118112155,"velocity":0.44970257952237364,"acceleration":-0.6441793281202971,"pose":{"translation":{"x":7.380622418394695,"y":-1.1341642561032126},"rotation":{"radians":-0.6427505179428795}},"curvature":-8.58109966790429},{"time":3.695023152409384,"velocity":0.43700385033357203,"acceleration":-0.2912186052656897,"pose":{"translation":{"x":7.387413821266509,"y":-1.1396653105585597},"rotation":{"radians":-0.7193652922148932}},"curvature":-8.92014169080443},{"time":3.715122472825929,"velocity":0.43115055427507765,"acceleration":0.052067701331746194,"pose":{"translation":{"x":7.3937462166392915,"y":-1.1456670107075082},"rotation":{"radians":-0.7980584699587645}},"curvature":-9.08314266129781},{"time":3.7354206996909998,"velocity":0.43220743628905217,"acceleration":0.3926861267115369,"pose":{"translation":{"x":7.399608482971979,"y":-1.152179464416887},"rotation":{"radians":-0.8776808332180518}},"curvature":-9.053384284754978},{"time":3.755721886671196,"velocity":0.4401794307719521,"acceleration":0.7367582925439635,"pose":{"translation":{"x":7.404990635686545,"y":-1.1592113764250642},"rotation":{"radians":-0.957030545537142}},"curvature":-8.833522919030923},{"time":3.7758391314968773,"velocity":0.45500097772041015,"acceleration":1.0882423303428184,"pose":{"translation":{"x":7.409883803250819,"y":-1.1667700800499075},"rotation":{"radians":-1.0349502992109227}},"curvature":-8.445233665625674},{"time":3.7956105572131413,"velocity":0.4765170801160774,"acceleration":1.4478029542435038,"pose":{"translation":{"x":7.414280203261306,"y":-1.1748615688967483},"rotation":{"radians":-1.110416006752432}},"curvature":-7.924546693213447},{"time":3.8149106115079463,"velocity":0.5044597557411559,"acceleration":1.8120558532837037,"pose":{"translation":{"x":7.4181731185260045,"y":-1.1834905285663433},"rotation":{"radians":-1.1826006954592512}},"curvature":-7.314635079400883},{"time":3.833655213614978,"velocity":0.5384260217066767,"acceleration":2.1734101921253286,"pose":{"translation":{"x":7.421556873147227,"y":-1.192660368362838},"rotation":{"radians":-1.2509054956221384}},"curvature":-6.658491095790275},{"time":3.851801053675725,"velocity":0.5778643754393804,"acceleration":2.5206585401034607,"pose":{"translation":{"x":7.424426808604417,"y":-1.2023732530017275},"rotation":{"radians":-1.3149589717095316}},"curvature":-5.99341593717812},{"time":3.869340590588412,"velocity":0.6220755589478055,"acceleration":2.7000000000000313,"pose":{"translation":{"x":7.4267792598369695,"y":-1.2126301343178203},"rotation":{"radians":-1.3745927334979915}},"curvature":-5.3481080221595265},{"time":3.8863249147004435,"velocity":0.667933234050291,"acceleration":2.700000000000086,"pose":{"translation":{"x":7.428611531327051,"y":-1.2234307829732003},"rotation":{"radians":-1.4298037347140933}},"curvature":-4.742101270083783},{"time":3.90286706743035,"velocity":0.71259704642104,"acceleration":2.7000000000000104,"pose":{"translation":{"x":7.429921873182416,"y":-1.2347738201651899},"rotation":{"radians":-1.480712629900542}},"curvature":-4.186771633619186},{"time":3.919081127481485,"velocity":0.7563750085591059,"acceleration":2.7000000000000726,"pose":{"translation":{"x":7.430709457219227,"y":-1.2466567493343108},"rotation":{"radians":-1.527524747550707}},"curvature":-3.687079506807228},{"time":3.935049187697399,"velocity":0.7994887711420753,"acceleration":2.699999999999971,"pose":{"translation":{"x":7.430974353044876,"y":-1.2590759878722486},"rotation":{"radians":-1.5704972091395932}},"curvature":-3.2434293445605835},{"time":3.9664639427506723,"velocity":0.8843086097859121,"acceleration":2.699999999999964,"pose":{"translation":{"x":7.429940703945299,"y":-1.2855038226249045},"rotation":{"radians":-1.6460641038472028}},"curvature":-2.5125016951673764},{"time":3.997424393909201,"velocity":0.9679018279139381,"acceleration":2.7000000000000095,"pose":{"translation":{"x":7.426838529714478,"y":-1.3140081474824699},"rotation":{"radians":-1.7096996276847836}},"curvature":-1.9589426080510612},{"time":4.028085598335015,"velocity":1.0506870798636372,"acceleration":2.7000000000000095,"pose":{"translation":{"x":7.421698268143265,"y":-1.3445244380324612},"rotation":{"radians":-1.7635069388369267}},"curvature":-1.5430718610586651},{"time":4.058517591989222,"velocity":1.132853462729996,"acceleration":2.7000000000000037,"pose":{"translation":{"x":7.414562425632777,"y":-1.3769738370453977},"rotation":{"radians":-1.80928153691283}},"curvature":-1.2304194023042416},{"time":4.118736716721557,"velocity":1.2954450995073,"acceleration":2.3581795493155604,"pose":{"translation":{"x":7.394529774351022,"y":-1.4472909553859892},"rotation":{"radians":-1.8823557940783588}},"curvature":-0.8137689160789616},{"time":4.178392474069149,"velocity":1.4361240864833222,"acceleration":1.0280501369863269,"pose":{"translation":{"x":7.367292915991394,"y":-1.52408054521081},"rotation":{"radians":-1.9376153749830112}},"curvature":-0.5671040820963597},{"time":4.238964013252306,"velocity":1.4983946656380396,"acceleration":0.6806598794331884,"pose":{"translation":{"x":7.333548306053704,"y":-1.6062992620615995},"rotation":{"radians":-1.980664464363438}},"curvature":-0.415270222573429},{"time":4.301503977300484,"velocity":1.5409631100268286,"acceleration":0.4541105461405023,"pose":{"translation":{"x":7.294112024222084,"y":-1.692771843268838},"rotation":{"radians":-2.0151600783392727}},"curvature":-0.31853754024915065},{"time":4.365651597320475,"velocity":1.5700932207877196,"acceleration":0.3039509005891818,"pose":{"translation":{"x":7.249895283171679,"y":-1.7822235769053099},"rotation":{"radians":-2.0435542741178185}},"curvature":-0.2553649962385433},{"time":4.4308222574998855,"velocity":1.589901901641243,"acceleration":0.19979119065916273,"pose":{"translation":{"x":7.20187993737534,"y":-1.873312770739671},"rotation":{"radians":-2.0675482771424347}},"curvature":-0.21372950444359917},{"time":4.496291907487063,"velocity":1.6029821609642199,"acceleration":0.12148010098068647,"pose":{"translation":{"x":7.151093991910315,"y":-1.9646632211900141},"rotation":{"radians":-2.088370637372372}},"curvature":-0.18680044113633412},{"time":4.561259656850615,"velocity":1.6108744497173921,"acceleration":0.05463868552157288,"pose":{"translation":{"x":7.098587111264945,"y":-2.054896682277434},"rotation":{"radians":-2.106952696193974}},"curvature":-0.17076368611172438},{"time":4.624897589019494,"velocity":1.6143515426804107,"acceleration":-0.013181927539404118,"pose":{"translation":{"x":7.045406128145351,"y":-2.1426653345795916},"rotation":{"radians":-2.124045424613487}},"curvature":-0.1637481573893422},{"time":4.6863934918413115,"velocity":1.6135409081454433,"acceleration":-0.09636542124448583,"pose":{"translation":{"x":6.9925705522821335,"y":-2.226684254184283},"rotation":{"radians":-2.140304501136336}},"curvature":-0.16538102479256336},{"time":4.744990364133843,"velocity":1.6078941958633641,"acceleration":-0.6374308786638251,"pose":{"translation":{"x":6.941048079237058,"y":-2.3057638816430024},"rotation":{"radians":-2.156361587928427}},"curvature":-0.1768009201056777},{"time":4.800431081060775,"velocity":1.5725545709588773,"acceleration":-2.7000000000000006,"pose":{"translation":{"x":6.891730099209751,"y":-2.37884249092451},"rotation":{"radians":-2.1728963784151825}},"curvature":-0.2011726549273176},{"time":4.854288620919112,"velocity":1.427139213341367,"acceleration":-2.699999999999997,"pose":{"translation":{"x":6.845407205844394,"y":-2.4450186583683924},"rotation":{"radians":-2.1907250385502053}},"curvature":-0.24500666492416812},{"time":4.907764200265851,"velocity":1.282755149105172,"acceleration":-2.7,"pose":{"translation":{"x":6.802744705036412,"y":-2.5035837316386345},"rotation":{"radians":-2.2109265322563663}},"curvature":-0.32107362952933843},{"time":5.010558252841902,"velocity":1.0052112071498347,"acceleration":-2.700000000000001,"pose":{"translation":{"x":6.7302887187706615,"y":-2.596204656657504},"rotation":{"radians":-2.26538823363029}},"curvature":-0.6983733281623699},{"time":5.058181507945903,"velocity":0.876628418369029,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":6.700978985620202,"y":-2.6300992809381722},"rotation":{"radians":-2.3055766625940555}},"curvature":-1.161706924289958},{"time":5.102107797041266,"velocity":0.7580274378115504,"acceleration":-2.700000000000003,"pose":{"translation":{"x":6.6762481672551255,"y":-2.6561252940163986},"rotation":{"radians":-2.3611253774593677}},"curvature":-2.069483430581481},{"time":5.1416578127195125,"velocity":0.6512423954802853,"acceleration":-2.6999999999999966,"pose":{"translation":{"x":6.655767762927474,"y":-2.6750249344816397},"rotation":{"radians":-2.4393793407849826}},"curvature":-3.786562605724007},{"time":5.159738948600884,"velocity":0.6024233286005831,"acceleration":-2.7,"pose":{"translation":{"x":6.646945039992192,"y":-2.682139407006597},"rotation":{"radians":-2.4888731070782244}},"curvature":-5.0067041726191235},{"time":5.176792965437063,"velocity":0.5563774831429,"acceleration":-2.7000000000000006,"pose":{"translation":{"x":6.638937036980688,"y":-2.68792802596912},"rotation":{"radians":-2.54463825964339}},"curvature":-6.289792037747411},{"time":5.1930309236619525,"velocity":0.5125349959356977,"acceleration":1.3760054548561336,"pose":{"translation":{"x":6.631622107145021,"y":-2.6925979064247128},"rotation":{"radians":-2.603460002905891}},"curvature":-7.150761360113481},{"time":5.207859374190757,"velocity":0.5329390247503961,"acceleration":2.7000000000000117,"pose":{"translation":{"x":6.624858527656298,"y":-2.6963844461134348},"rotation":{"radians":-2.658512232190288}},"curvature":-6.75882207866783},{"time":5.232432613506469,"velocity":0.5992867709028199,"acceleration":-1.2954847148587278,"pose":{"translation":{"x":6.6123135559006245,"y":-2.7023965955020928},"rotation":{"radians":-2.714965160462928}},"curvature":-2.782056460928346E-13},{"time":5.255485128727874,"velocity":0.5694225897944417,"acceleration":-2.7,"pose":{"translation":{"x":6.600000781924867,"y":-2.7078609588171707},"rotation":{"radians":-2.741416782477967}},"curvature":-3.815339203835633},{"time":5.280595583209917,"velocity":0.5016243626929267,"acceleration":-2.699999999999997,"pose":{"translation":{"x":6.587449437541447,"y":-2.7126871333494806},"rotation":{"radians":-2.814639860740997}},"curvature":-6.953564103889301},{"time":5.294534391040094,"velocity":0.463989581551448,"acceleration":-2.51320967641981,"pose":{"translation":{"x":6.581024377505649,"y":-2.7146891790782193},"rotation":{"radians":-2.8658404550015253}},"curvature":-8.22183756317215},{"time":5.3097153265706005,"velocity":0.42583670747907426,"acceleration":-1.420637008833131,"pose":{"translation":{"x":6.574474775176925,"y":-2.716338996269565},"rotation":{"radians":-2.924962178570092}},"curvature":-9.235001787363444},{"time":5.32614333242187,"velocity":0.4024984743854337,"acceleration":-0.6675417501345704,"pose":{"translation":{"x":6.567786061057784,"y":-2.7175859150618242},"rotation":{"radians":-2.990422599769865}},"curvature":-9.949439794600845},{"time":5.343500843112221,"velocity":0.39091161132121716,"acceleration":-0.08934168753605815,"pose":{"translation":{"x":6.560946817537351,"y":-2.7183853869336816},"rotation":{"radians":-3.0604727521050985}},"curvature":-10.335830771816653},{"time":5.361457822012166,"velocity":0.3893073045232467,"acceleration":0.3993183425367512,"pose":{"translation":{"x":6.553948643263447,"y":-2.718698765306084},"rotation":{"radians":-3.133275977941982}},"curvature":-10.391142880043173},{"time":5.37969325023703,"velocity":0.39658904549744733,"acceleration":0.8452012281683092,"pose":{"translation":{"x":6.546786017514653,"y":-2.7184930861441257},"rotation":{"radians":3.0761577385964625}},"curvature":-10.143682388705306},{"time":5.39791861238858,"velocity":0.4119931439717496,"acceleration":1.273109766770183,"pose":{"translation":{"x":6.539456164572393,"y":-2.717740848558933},"rotation":{"radians":3.00310010912821}},"curvature":-9.649019311906114},{"time":5.415897054585348,"velocity":0.4348816743237688,"acceleration":1.6931105855795832,"pose":{"translation":{"x":6.531958918093006,"y":-2.716419795409549},"rotation":{"radians":2.9321083621384485}},"curvature":-8.978732425160104},{"time":5.4334539084799225,"velocity":0.4646073695021467,"acceleration":2.104166578935371,"pose":{"translation":{"x":6.52429658547982,"y":-2.7145126939048203},"rotation":{"radians":2.8642215501788977}},"curvature":-8.20680098482241},{"time":5.450477610009569,"velocity":0.5004280733106014,"acceleration":2.4968026150305582,"pose":{"translation":{"x":6.5164738122552235,"y":-2.7120071162052803},"rotation":{"radians":2.800134866123928}},"curvature":-7.398430838000034},{"time":5.466912924524007,"velocity":0.5414638095690992,"acceleration":2.7000000000000237,"pose":{"translation":{"x":6.508497446432745,"y":-2.7088952200250334},"rotation":{"radians":2.740230748578606}},"curvature":-6.603818980361795},{"time":5.482783228379204,"velocity":0.5843136299781293,"acceleration":2.699999999999973,"pose":{"translation":{"x":6.500376402889126,"y":-2.7051735292336434},"rotation":{"radians":2.6846350981540272}},"curvature":-5.856777204223596},{"time":5.4981886016609645,"velocity":0.6259081378388831,"acceleration":2.699999999999989,"pose":{"translation":{"x":6.49212152773639,"y":-2.700842714458014},"rotation":{"radians":2.633281828218556}},"curvature":-5.176639926128518},{"time":5.513232961900598,"velocity":0.666527910485892,"acceleration":2.7000000000000526,"pose":{"translation":{"x":6.483745462693925,"y":-2.6959073736842782},"rotation":{"radians":2.5859736858732676}},"curvature":-4.571644906700683},{"time":5.5424876306213875,"velocity":0.7455155160320258,"acceleration":2.699999999999983,"pose":{"translation":{"x":6.466688494086605,"y":-2.684259826494461},"rotation":{"radians":2.502339906825371}},"curvature":-3.5851423375100553},{"time":5.57086869677463,"velocity":0.8221443946457809,"acceleration":2.7000000000000477,"pose":{"translation":{"x":6.4493373891083,"y":-2.670337881609422},"rotation":{"radians":2.4311633245994693}},"curvature":-2.859842251329955},{"time":5.59848508337457,"velocity":0.8967086384656198,"acceleration":2.700000000000045,"pose":{"translation":{"x":6.4318440893306725,"y":-2.6542973292426666},"rotation":{"radians":2.3698700235605896}},"curvature":-2.3389424471387197},{"time":5.6253401968092005,"velocity":0.9692174447391245,"acceleration":2.7000000000000273,"pose":{"translation":{"x":6.414376245762293,"y":-2.636335735136296},"rotation":{"radians":2.316179665573082}},"curvature":-1.971245985355279},{"time":5.651382693812427,"velocity":1.0395321866478364,"acceleration":2.3397973634705633,"pose":{"translation":{"x":6.397112878755023,"y":-2.6166854198213247},"rotation":{"radians":2.2681655710867354}},"curvature":-1.7177072822338848},{"time":5.701076468298373,"velocity":1.1558055491709527,"acceleration":0.13185620101355705,"pose":{"translation":{"x":6.363946461985967,"y":-2.5733795571961275},"rotation":{"radians":2.1829634101425417}},"curvature":-1.4531964340918389},{"time":5.749028266621835,"velocity":1.1621282911296527,"acceleration":-1.2418908296492508,"pose":{"translation":{"x":6.333839465146571,"y":-2.5266666132856277},"rotation":{"radians":2.1038693326688813}},"curvature":-1.428497937409373},{"time":5.79687438905331,"velocity":1.1027086304477278,"acceleration":-2.6999999999999975,"pose":{"translation":{"x":6.3081906578607985,"y":-2.4789402092914683},"rotation":{"radians":2.0222056755935585}},"curvature":-1.6267050425406355},{"time":5.821052508603361,"velocity":1.0374277076625913,"acceleration":-2.699999999999994,"pose":{"translation":{"x":6.297414801809275,"y":-2.4554188673206423},"rotation":{"radians":1.977719022211628}},"curvature":-1.826133388334632},{"time":5.845687364250436,"velocity":0.9709135974154887,"acceleration":-2.699999999999997,"pose":{"translation":{"x":6.288164070257655,"y":-2.432476052028613},"rotation":{"radians":1.929238799528292}},"curvature":-2.111200891597752},{"time":5.870673275595948,"velocity":0.9034516367826055,"acceleration":-2.700000000000001,"pose":{"translation":{"x":6.280524503434468,"y":-2.4103409437610113},"rotation":{"radians":1.875500722191483}},"curvature":-2.501078261352885},{"time":5.8959358064369916,"velocity":0.8352428035117866,"acceleration":-2.700000000000001,"pose":{"translation":{"x":6.274550109975329,"y":-2.3892072702555778},"rotation":{"radians":1.8152269082626638}},"curvature":-3.014788560841303},{"time":5.921456442251981,"velocity":0.7663370868113146,"acceleration":-2.6999999999999975,"pose":{"translation":{"x":6.270258526829311,"y":-2.369226285902487},"rotation":{"radians":1.7473051168809193}},"curvature":-3.6604764302923014},{"time":5.947310546313835,"velocity":0.6965310058443089,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":6.267626679165335,"y":-2.350499751004661},"rotation":{"radians":1.6711659569549777}},"curvature":-4.412655527221165},{"time":5.97372707891214,"velocity":0.6252063678288854,"acceleration":-2.7,"pose":{"translation":{"x":6.266586440278536,"y":-2.333072911038095},"rotation":{"radians":1.5874406145062498}},"curvature":-5.1745095089891295},{"time":5.98728642428764,"velocity":0.5885961353150362,"acceleration":-2.7,"pose":{"translation":{"x":6.266628497589658,"y":-2.3248438348321385},"rotation":{"radians":1.5434847754496874}},"curvature":-5.498692515200691},{"time":6.001196215504899,"velocity":0.5510396990284375,"acceleration":-2.699999999999995,"pose":{"translation":{"x":6.267020291496656,"y":-2.316927475912173},"rotation":{"radians":1.4988894184050614}},"curvature":-5.736779218810578},{"time":6.015587967438983,"velocity":0.5121819688064083,"acceleration":-2.700000000000005,"pose":{"translation":{"x":6.267738702623978,"y":-2.309310468744486},"rotation":{"radians":1.4544878154614598}},"curvature":-5.844205776954959},{"time":6.030645697244969,"velocity":0.4715260983302458,"acceleration":-2.699999999999999,"pose":{"translation":{"x":6.268756982086413,"y":-2.3019745992299896},"rotation":{"radians":1.4113367378835124}},"curvature":-5.7736468362624205},{"time":6.063952573576684,"velocity":0.3815975322346138,"acceleration":-2.7,"pose":{"translation":{"x":6.271567189159886,"y":-2.2880478575486682},"rotation":{"radians":1.3340215256225776}},"curvature":-4.927882985766305},{"time":6.205284992922838,"velocity":0.0,"acceleration":-2.7,"pose":{"translation":{"x":6.279174459871376,"y":-2.2621770757491753},"rotation":{"radians":1.257895098914576}},"curvature":4.89472983251582E-13}] \ No newline at end of file diff --git a/src/main/deploy/paths/FiveBallMidComplete.wpilib.json b/src/main/deploy/paths/FiveBallMidComplete.wpilib.json new file mode 100644 index 0000000..be9f201 --- /dev/null +++ b/src/main/deploy/paths/FiveBallMidComplete.wpilib.json @@ -0,0 +1 @@ +[{"time":0.0,"velocity":0.0,"acceleration":2.6999999999999997,"pose":{"translation":{"x":3.2,"y":-2.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.16408328867307112,"velocity":0.443024879417292,"acceleration":2.7000000000000006,"pose":{"translation":{"x":3.2363298344524436,"y":-2.298899802686018},"rotation":{"radians":0.0692577651470374}},"curvature":1.8950587512445145},{"time":0.27165252251845773,"velocity":0.733461810799836,"acceleration":2.6999999999999993,"pose":{"translation":{"x":3.2992357901794267,"y":-2.292058382559469},"rotation":{"radians":0.13336588761066984}},"curvature":0.5081353245388296},{"time":0.39146527816103716,"velocity":1.0569562510348003,"acceleration":2.700000000000003,"pose":{"translation":{"x":3.4052753217803797,"y":-2.2759406702466065},"rotation":{"radians":0.1622880652133495}},"curvature":0.14308012858303878},{"time":0.45511058967808826,"velocity":1.2287985921308384,"acceleration":2.6999999999999993,"pose":{"translation":{"x":3.4770070197266802,"y":-2.2638785389701312},"rotation":{"radians":0.17018012232912796}},"curvature":0.08218998056047282},{"time":0.5202669048089674,"velocity":1.404720642984212,"acceleration":2.6999999999999997,"pose":{"translation":{"x":3.5615193955328435,"y":-2.249097623342679},"rotation":{"radians":0.17564390475973646}},"curvature":0.04917485937853854},{"time":0.5862126558482816,"velocity":1.5827741707903604,"acceleration":1.5865644228393085,"pose":{"translation":{"x":3.658474466495589,"y":-2.231684860998854},"rotation":{"radians":0.17945016920991327}},"curvature":0.030140843221192568},{"time":0.6537218964528062,"velocity":1.6898819301463979,"acceleration":0.05788196551324373,"pose":{"translation":{"x":3.7671397522485237,"y":-2.211813471951235},"rotation":{"radians":0.18207557565508717}},"curvature":0.018479758912245518},{"time":0.7254285040062793,"velocity":1.6940324495318797,"acceleration":0.04142453277389165,"pose":{"translation":{"x":3.8864378767263954,"y":-2.1897319350134796},"rotation":{"radians":0.18381956783311507}},"curvature":0.010872498721873012},{"time":0.7633704400602459,"velocity":1.6956041765054521,"acceleration":0.03427111458881184,"pose":{"translation":{"x":3.949655472782524,"y":-2.177957876460112},"rotation":{"radians":0.18442327195140867}},"curvature":0.008001487996222786},{"time":0.8025567568325975,"velocity":1.6969471352578709,"acceleration":0.02906850160180063,"pose":{"translation":{"x":4.014996170129343,"y":-2.1657529642234286},"rotation":{"radians":0.18487131031758927}},"curvature":0.0055525725273563005},{"time":0.8428636062198919,"velocity":1.698118794973849,"acceleration":0.0253231394733626,"pose":{"translation":{"x":4.082250383218097,"y":-2.1531645157563517},"rotation":{"radians":0.185176376794578}},"curvature":0.0034191885570685615},{"time":0.8841591774035676,"velocity":1.6991645284825654,"acceleration":0.016949828884694675,"pose":{"translation":{"x":4.151196270887151,"y":-2.140242485266206},"rotation":{"radians":0.185348127438105}},"curvature":0.001517578640164743},{"time":0.9263077178976394,"velocity":1.6998789390316795,"acceleration":-0.020915772434514122,"pose":{"translation":{"x":4.2216012864233665,"y":-2.127039119227935},"rotation":{"radians":0.185393608906121}},"curvature":-2.1980680822174232E-4},{"time":0.9691872552083657,"velocity":1.6989820803871911,"acceleration":-0.019853875112120833,"pose":{"translation":{"x":4.293223727623496,"y":-2.1136086118973263},"rotation":{"radians":0.18531757186828496}},"curvature":-0.001849182069837596},{"time":1.0126678049640467,"velocity":1.6981188229825355,"acceleration":-0.019438079067074412,"pose":{"translation":{"x":4.365814286855553,"y":-2.100006760824233},"rotation":{"radians":0.1851226905021804}},"curvature":-0.003419137593420175},{"time":1.0565953995481074,"velocity":1.697264954925784,"acceleration":-0.01961598803052627,"pose":{"translation":{"x":4.439117601120204,"y":-2.0862906223657953},"rotation":{"radians":0.18480970272003633}},"curvature":-0.004973588312268373},{"time":1.1008137297010812,"velocity":1.6963975686907735,"acceleration":-0.020376770398937767,"pose":{"translation":{"x":4.512873802112148,"y":-2.072518167199662},"rotation":{"radians":0.18437748064958973}},"curvature":-0.006554250817816681},{"time":1.1451650787587457,"velocity":1.6954938314341423,"acceleration":-0.02174865906857091,"pose":{"translation":{"x":4.586820066281499,"y":-2.0587479358372143},"rotation":{"radians":0.1838230366305232}},"curvature":-0.008202877188079381},{"time":1.1894912691710187,"velocity":1.6945297962310573,"acceleration":-0.023800679579925297,"pose":{"translation":{"x":4.6606921648951705,"y":-2.0450386941367853},"rotation":{"radians":0.1831414662100924}},"curvature":-0.00996343941748574},{"time":1.2336346217613723,"velocity":1.6934791544404706,"acceleration":-0.02664873108330119,"pose":{"translation":{"x":4.734226014098256,"y":-2.031449088816883},"rotation":{"radians":0.18232582600629615}},"curvature":-0.011884448939914765},{"time":1.2774389289250685,"velocity":1.692311825238575,"acceleration":-0.03046680385892747,"pose":{"translation":{"x":4.807159224975414,"y":-2.018037302969414},"rotation":{"radians":0.1813669405494641}},"curvature":-0.014021608840024123},{"time":1.3207504437966078,"velocity":1.6909922618101507,"acceleration":-0.03550490906982497,"pose":{"translation":{"x":4.87923265361225,"y":-2.0048607115729036},"rotation":{"radians":0.18025312799179333}},"curvature":-0.016441033887417626},{"time":1.3634188884165654,"velocity":1.6894773225637683,"acceleration":-0.04211637972877536,"pose":{"translation":{"x":4.950191951156699,"y":-1.9919755370057164},"rotation":{"radians":0.17896982951364038}},"curvature":-0.019223341480108017},{"time":1.4052984851902914,"velocity":1.687713505563158,"acceleration":-0.05079880035097404,"pose":{"translation":{"x":5.019789113880411,"y":-1.9794365045592819},"rotation":{"radians":0.1774991208800654}},"curvature":-0.022469026289744613},{"time":1.446249017581491,"velocity":1.6856332676439514,"acceleration":-0.06225527958543467,"pose":{"translation":{"x":5.087784033240128,"y":-1.9672964979513143},"rotation":{"radians":0.17581907627481713}},"curvature":-0.026305702065901784},{"time":1.48613692819827,"velocity":1.683150034616425,"acceleration":-0.07748664065103303,"pose":{"translation":{"x":5.153946045939074,"y":-1.955606214839035},"rotation":{"radians":0.1739029433768764}},"curvature":-0.030898057172033474},{"time":1.5248364654577076,"velocity":1.6801513374794417,"acceleration":-0.09793124518239772,"pose":{"translation":{"x":5.218055483988332,"y":-1.944413822332393},"rotation":{"radians":0.17171807338504597}},"curvature":-0.036461777406136126},{"time":1.5622308942193142,"velocity":1.676489254507933,"acceleration":-0.14430405981446515,"pose":{"translation":{"x":5.27990522476823,"y":-1.9337646125072896},"rotation":{"radians":0.16922452850747088}},"curvature":-0.04328332502065509},{"time":1.6327045242352638,"velocity":1.666319623586769,"acceleration":-2.5496325060863407,"pose":{"translation":{"x":5.396069151255783,"y":-1.9142604671143888},"rotation":{"radians":0.16310370436497154}},"curvature":-0.062384057405159905},{"time":1.700004059382801,"velocity":1.4947305411301082,"acceleration":-2.699999999999999,"pose":{"translation":{"x":5.501090654161787,"y":-1.897385524088994},"rotation":{"radians":0.15498967537946623}},"curvature":-0.09338424002657549},{"time":1.766850386843393,"velocity":1.3142454569865103,"acceleration":-2.7000000000000006,"pose":{"translation":{"x":5.593922492082721,"y":-1.8833634811611886},"rotation":{"radians":0.14401549016527215}},"curvature":-0.14664144594343798},{"time":1.8327108342658995,"velocity":1.136422248945742,"acceleration":-2.7000000000000024,"pose":{"translation":{"x":5.673866955415721,"y":-1.8723389647855806},"rotation":{"radians":0.12876563152136272}},"curvature":-0.24432674544242147},{"time":1.89674347147306,"velocity":0.9635341284864088,"acceleration":-2.700000000000001,"pose":{"translation":{"x":5.740625468322835,"y":-1.8643665065644082},"rotation":{"radians":0.10682738395944273}},"curvature":-0.43772210750117546},{"time":2.015399258918648,"velocity":0.6431635023833218,"acceleration":-2.7,"pose":{"translation":{"x":5.835683620117707,"y":-1.8572792752710763},"rotation":{"radians":0.02197361283131086}},"curvature":-1.8474877858052587},{"time":2.068104204745642,"velocity":0.500860148650437,"acceleration":-2.700000000000003,"pose":{"translation":{"x":5.865828193832404,"y":-1.8577238789494634},"rotation":{"radians":-0.06367453439929643}},"curvature":-4.361539640139643},{"time":2.09260418539275,"velocity":0.4347102009032456,"acceleration":-2.700000000000001,"pose":{"translation":{"x":5.87723983042111,"y":-1.8587835158903134},"rotation":{"radians":-0.12606797335766265}},"curvature":-6.765173997576896},{"time":2.1160800812268463,"velocity":0.37132528215118565,"acceleration":-2.699999999999999,"pose":{"translation":{"x":5.886575890703612,"y":-1.8603172471295863},"rotation":{"radians":-0.20493559496852556}},"curvature":-10.161883925389565},{"time":2.127589396456522,"velocity":0.3402501310310618,"acceleration":-2.6999999999999975,"pose":{"translation":{"x":5.890565694061718,"y":-1.8612389048670965},"rotation":{"radians":-0.2504220751916043}},"curvature":-12.085865426392672},{"time":2.1390945597750513,"velocity":0.30918619007103243,"acceleration":-1.8924820462055663,"pose":{"translation":{"x":5.894162125738611,"y":-1.8622502866084267},"rotation":{"radians":-0.29897795833341534}},"curvature":-13.883657658978745},{"time":2.150587779303661,"velocity":0.2874354784600397,"acceleration":-0.3671051506100357,"pose":{"translation":{"x":5.897412720882245,"y":-1.8633405156596639},"rotation":{"radians":-0.3489700280234347}},"curvature":-15.167811103722578},{"time":2.1617083394694956,"velocity":0.28335306354549294,"acceleration":2.6999999999999984,"pose":{"translation":{"x":5.900367833181723,"y":-1.864498083498372},"rotation":{"radians":-0.39786739118221953}},"curvature":-15.430809298875147},{"time":2.1804709377657456,"velocity":0.3340120789453682,"acceleration":2.6999999999999567,"pose":{"translation":{"x":5.905607407346868,"y":-1.8669659777145693},"rotation":{"radians":-0.47832444070195745}},"curvature":-11.041099262767903},{"time":2.1956824280374048,"velocity":0.3750831026788478,"acceleration":2.699999999999998,"pose":{"translation":{"x":5.910341889267582,"y":-1.8695488554289996},"rotation":{"radians":-0.5104883219168177}},"curvature":-3.7340349071888874E-13},{"time":2.388769937245301,"velocity":0.8964193775401674,"acceleration":2.699999999999994,"pose":{"translation":{"x":6.019362680912478,"y":-1.9259705717486812},"rotation":{"radians":-0.457653588008675}},"curvature":0.08815631236043758},{"time":2.4883624125512283,"velocity":1.165319060866171,"acceleration":-0.46150344014918243,"pose":{"translation":{"x":6.111478234899523,"y":-1.9713048863389462},"rotation":{"radians":-0.4603174376989857}},"curvature":-0.11129184244351757},{"time":2.5906580769043837,"velocity":1.1181092598548437,"acceleration":-2.6999999999999997,"pose":{"translation":{"x":6.215595458285448,"y":-2.024220578585429},"rotation":{"radians":-0.48395842928784394}},"curvature":-0.3145673826484365},{"time":2.70322104072566,"velocity":0.814189257537398,"acceleration":-2.700000000000002,"pose":{"translation":{"x":6.310606314256721,"y":-2.0771362708319114},"rotation":{"radians":-0.542721169737204}},"curvature":-0.9207690115471886},{"time":2.764138320436643,"velocity":0.6497126023177433,"acceleration":-2.6999999999999984,"pose":{"translation":{"x":6.348182799436799,"y":-2.1011391557636725},"rotation":{"radians":-0.6009884368276502}},"curvature":-1.8648205143316683},{"time":2.795342233849168,"velocity":0.565462036103926,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":6.363599732828538,"y":-2.1121739062004825},"rotation":{"radians":-0.6444585240143699}},"curvature":-2.8243017945696063},{"time":2.826997761556873,"velocity":0.4799921112931212,"acceleration":-2.700000000000001,"pose":{"translation":{"x":6.376553043989027,"y":-2.1224705854221755},"rotation":{"radians":-0.7033422239728307}},"curvature":-4.491242440772023},{"time":2.8593054766288244,"velocity":0.3927612805988525,"acceleration":-2.7,"pose":{"translation":{"x":6.38695681395706,"y":-2.131985026593671},"rotation":{"radians":-0.7852287507835739}},"curvature":-7.515004253757817},{"time":2.8759119946945018,"velocity":0.34792368182152367,"acceleration":-2.6999999999999984,"pose":{"translation":{"x":6.39119492327807,"y":-2.1364417236195927},"rotation":{"radians":-0.8382640323882593}},"curvature":-9.890568239576622},{"time":2.89307895299441,"velocity":0.3015728944117711,"acceleration":-2.6999999999999997,"pose":{"translation":{"x":6.394795994947252,"y":-2.140697571643865},"rotation":{"radians":-0.9018170428636533}},"curvature":-13.122491542036409},{"time":2.9112357590757947,"velocity":0.2525495179920331,"acceleration":-2.6999999999999966,"pose":{"translation":{"x":6.397770582878232,"y":-2.144754445523107},"rotation":{"radians":-0.9780469927814595}},"curvature":-17.454602821326706},{"time":2.920942595671849,"velocity":0.22634105918268688,"acceleration":-2.4860393459854366,"pose":{"translation":{"x":6.399027731224297,"y":-2.1467093739969005},"rotation":{"radians":-1.02159743124877}},"curvature":-20.09502862925046},{"time":2.9312692866346604,"velocity":0.20066849913530505,"acceleration":-2.0189603351796466,"pose":{"translation":{"x":6.400134707587854,"y":-2.1486161348611237},"rotation":{"radians":-1.069089430112289}},"curvature":-23.060751341810086},{"time":2.9423098653006123,"velocity":0.17837800873131748,"acceleration":-1.6143542252704404,"pose":{"translation":{"x":6.401094411229809,"y":-2.1504755167024108},"rotation":{"radians":-1.1206887834018617}},"curvature":-26.32815672730302},{"time":2.954081692119802,"velocity":0.15937411036660665,"acceleration":-1.2688547292128112,"pose":{"translation":{"x":6.4019101154848554,"y":-2.1522884397462643},"rotation":{"radians":-1.1764606640265038}},"curvature":-29.835574717517932},{"time":2.9665754482745217,"velocity":0.14352134878405876,"acceleration":-0.9763706463097248,"pose":{"translation":{"x":6.402585475864242,"y":-2.154055958848849},"rotation":{"radians":-1.2363268615194787}},"curvature":-33.47199907937164},{"time":2.979746600520624,"velocity":0.13066142235288813,"acceleration":-0.7288747558571244,"pose":{"translation":{"x":6.4031245381585515,"y":-2.155779266488783},"rotation":{"radians":-1.3000214411236208}},"curvature":-37.0701428019739},{"time":2.993507961719939,"velocity":0.12063111356847578,"acceleration":-0.5170296138934241,"pose":{"translation":{"x":6.40353174654046,"y":-2.1574596957589307},"rotation":{"radians":-1.3670526349960594}},"curvature":-40.409104950567425},{"time":3.007725368222374,"velocity":0.11328029337395595,"acceleration":-0.33053844199721205,"pose":{"translation":{"x":6.403811951667518,"y":-2.159098723358196},"rotation":{"radians":-1.4366815305525695}},"curvature":-43.23155333801457},{"time":3.022218591265303,"velocity":0.1084897260098282,"acceleration":-0.15811487091757606,"pose":{"translation":{"x":6.403970418784919,"y":-2.160697972583314},"rotation":{"radians":-1.5079284352910682}},"curvature":-45.276810326152486},{"time":3.036768883040763,"velocity":0.10618910850393826,"acceleration":0.01307341057034199,"pose":{"translation":{"x":6.4040128358282695,"y":-2.1622592163206433},"rotation":{"radians":-1.579613900421947}},"curvature":-46.324613583278015},{"time":3.051132960822136,"velocity":0.10637689599023847,"acceleration":0.19876164239942998,"pose":{"translation":{"x":6.40394532152636,"y":-2.16378438003796},"rotation":{"radians":-1.6504330500073743}},"curvature":-46.23738812271767},{"time":3.0650612219497555,"velocity":0.10914530004773226,"acceleration":0.4203441776464799,"pose":{"translation":{"x":6.403774433503942,"y":-2.1652755447762466},"rotation":{"radians":-1.7190515676349232}},"curvature":-44.98631977809164},{"time":3.0783164615029475,"velocity":0.11471706281722582,"acceleration":0.7104111631016262,"pose":{"translation":{"x":6.403507176384488,"y":-2.16673495014149},"rotation":{"radians":-1.7842040253596458}},"curvature":-42.651445664603145},{"time":3.0906891386144704,"velocity":0.12350675075470352,"acceleration":1.1244324574076787,"pose":{"translation":{"x":6.403151009892975,"y":-2.168164997296468},"rotation":{"radians":-1.8447742063981305}},"curvature":-39.39638825688053},{"time":3.102006427709611,"velocity":0.13623227794314552,"acceleration":1.7674578002780963,"pose":{"translation":{"x":6.402713856958646,"y":-2.169568251952547},"rotation":{"radians":-1.8998432378181598}},"curvature":-35.42804729881617},{"time":3.112134237651494,"velocity":0.15413275462466103,"acceleration":2.700000000000108,"pose":{"translation":{"x":6.40220411181779,"y":-2.1709474473614714},"rotation":{"radians":-1.9487014078318636}},"curvature":-30.955102394649295},{"time":3.128848467974634,"velocity":0.19926117649714015,"acceleration":2.7000000000000246,"pose":{"translation":{"x":6.40100282701348,"y":-2.1736454490974797},"rotation":{"radians":-2.0258546267077726}},"curvature":-21.160549507806387},{"time":3.1543931615383447,"velocity":0.2682318491191599,"acceleration":1.4900650944686238,"pose":{"translation":{"x":6.398152708453254,"y":-2.1788923017418553},"rotation":{"radians":-2.0899424410415515}},"curvature":-2.945304125570491E-12},{"time":3.1757095034106175,"velocity":0.29999458608479385,"acceleration":-2.6999999999999975,"pose":{"translation":{"x":6.39507216638006,"y":-2.18410655900665},"rotation":{"radians":-2.1318581991327763}},"curvature":-12.749079953629735},{"time":3.186732200511364,"velocity":0.27023330391277856,"acceleration":-1.5622710730940672,"pose":{"translation":{"x":6.393341297652253,"y":-2.186729689141383},"rotation":{"radians":-2.178143871089744}},"curvature":-16.32981615964336},{"time":3.1993334231752146,"velocity":0.2505467782594274,"acceleration":0.1719853395949932,"pose":{"translation":{"x":6.3913942692807435,"y":-2.189370819539606},"rotation":{"radians":-2.2347884625292824}},"curvature":-17.85543237008885},{"time":3.2131117080900946,"velocity":0.2529164412695496,"acceleration":1.270986424445406,"pose":{"translation":{"x":6.389172967824155,"y":-2.1920346185943},"rotation":{"radians":-2.296809961481927}},"curvature":-17.659220798825885},{"time":3.2272574885484624,"velocity":0.27089553619532014,"acceleration":2.238272955222904,"pose":{"translation":{"x":6.3866259633725395,"y":-2.1947251185768817},"rotation":{"radians":-2.359939148599949}},"curvature":-16.28235115373208},{"time":3.241182801861523,"velocity":0.3020641883769496,"acceleration":2.6999999999999478,"pose":{"translation":{"x":6.383708274193028,"y":-2.197445739571543},"rotation":{"radians":-2.4209897906426305}},"curvature":-14.283774338572098},{"time":3.254667728224852,"velocity":0.338473489557936,"acceleration":2.7000000000000957,"pose":{"translation":{"x":6.380381131375498,"y":-2.2001993134095907},"rotation":{"radians":-2.477923759670583}},"curvature":-12.106402683981111},{"time":3.267829800330271,"velocity":0.37401108424256774,"acceleration":2.6999999999999553,"pose":{"translation":{"x":6.376611743478227,"y":-2.202988107603785},"rotation":{"radians":-2.5296884017885226}},"curvature":-10.032118530851717},{"time":3.2808394361059166,"velocity":0.40913710083681054,"acceleration":2.699999999999969,"pose":{"translation":{"x":6.372373061173554,"y":-2.2058138492826806},"rotation":{"radians":-2.5759534641472417}},"curvature":-8.20177097536335},{"time":3.306764556237397,"velocity":0.4791349251918062,"acceleration":2.700000000000016,"pose":{"translation":{"x":6.362406914475598,"y":-2.211580525293808},"rotation":{"radians":-2.6527662519604673}},"curvature":-5.3971712559868905},{"time":3.332842938639764,"velocity":0.5495465576781979,"acceleration":2.700000000000018,"pose":{"translation":{"x":6.350372195476547,"y":-2.217503260292213},"rotation":{"radians":-2.711679723460505}},"curvature":-3.566532900623742},{"time":3.359143548662012,"velocity":0.6205582047382671,"acceleration":2.699999999999992,"pose":{"translation":{"x":6.336235219518413,"y":-2.223578858777592},"rotation":{"radians":-2.7567394084285106}},"curvature":-2.4023315616831367},{"time":3.412038202869246,"velocity":0.7633737710977991,"acceleration":2.6999999999999913,"pose":{"translation":{"x":6.30185862579485,"y":-2.236144887853593},"rotation":{"radians":-2.8182177716287375}},"curvature":-1.1714173696573198},{"time":3.4643008903546346,"velocity":0.9044830273083475,"acceleration":2.6999999999999935,"pose":{"translation":{"x":6.260257688103602,"y":-2.249139865685754},"rotation":{"radians":-2.855491724158334}},"curvature":-0.6192913719087216},{"time":3.561763628351173,"velocity":1.1676324198990002,"acceleration":-1.756930706235751,"pose":{"translation":{"x":6.162798860477242,"y":-2.2755621287146326},"rotation":{"radians":-2.890852210433827}},"curvature":-0.16501260308299173},{"time":3.6574011703443383,"velocity":0.9996038857022966,"acceleration":-2.700000000000001,"pose":{"translation":{"x":6.062304577045997,"y":-2.3008805896326443},"rotation":{"radians":-2.8940333591153284}},"curvature":0.1141648975399554},{"time":3.7589808786552377,"velocity":0.7253386732628685,"acceleration":-2.699999999999999,"pose":{"translation":{"x":5.97760410421294,"y":-2.3232696178432635},"rotation":{"radians":-2.8640180725634394}},"curvature":0.7144006666381507},{"time":3.8104841074968494,"velocity":0.5862799553905166,"acceleration":-2.7000000000000006,"pose":{"translation":{"x":5.945267638157282,"y":-2.3330262163821494},"rotation":{"radians":-2.8288298217795607}},"curvature":1.4855537428430912},{"time":3.8618873556309987,"velocity":0.44749118542831345,"acceleration":-2.7000000000000006,"pose":{"translation":{"x":5.920198043313465,"y":-2.3418272908322164},"rotation":{"radians":-2.7729042131356465}},"curvature":2.8905757965382564},{"time":3.9164961820908406,"velocity":0.3000473539867403,"acceleration":-2.7,"pose":{"translation":{"x":5.901422525991386,"y":-2.3498331012778997},"rotation":{"radians":-2.7002183095133314}},"curvature":3.93415202030435},{"time":4.027624831715559,"velocity":0.0,"acceleration":-2.7,"pose":{"translation":{"x":5.886546239551206,"y":-2.3573596746146754},"rotation":{"radians":-2.6571147245527174}},"curvature":4.1076051658711784E-13}] \ No newline at end of file diff --git a/src/main/deploy/paths/SixBallMid0.wpilib.json b/src/main/deploy/paths/SixBallMid0.wpilib.json new file mode 100644 index 0000000..24f8dfa --- /dev/null +++ b/src/main/deploy/paths/SixBallMid0.wpilib.json @@ -0,0 +1 @@ +[{"time":0.0,"velocity":0.0,"acceleration":2.7000000000000006,"pose":{"translation":{"x":3.2,"y":-2.4},"rotation":{"radians":1.4909663410826592}},"curvature":0.0},{"time":0.24079710297530457,"velocity":0.6501521780333225,"acceleration":2.6999999999999993,"pose":{"translation":{"x":3.2065095854674475,"y":-2.321993759274483},"rotation":{"radians":1.4808013128224615}},"curvature":-0.25415239252139715},{"time":0.3399434430318312,"velocity":0.9178472961859444,"acceleration":2.7000000000000024,"pose":{"translation":{"x":3.2144920400116974,"y":-2.244674015045166},"rotation":{"radians":1.4521039763788177}},"curvature":-0.48102289742329407},{"time":0.4152417634944757,"velocity":1.1211527614350847,"acceleration":2.7000000000000024,"pose":{"translation":{"x":3.2251942805954354,"y":-2.168657049536705},"rotation":{"radians":1.407083956538682}},"curvature":-0.6895659762146151},{"time":0.4779106717693721,"velocity":1.290358813777305,"acceleration":-0.37855383338541415,"pose":{"translation":{"x":3.2396305049811973,"y":-2.0944854736328122},"rotation":{"radians":1.3476355522918868}},"curvature":-0.8811082747650646},{"time":0.5359982410296074,"velocity":1.2683695417618022,"acceleration":-0.6925189022102917,"pose":{"translation":{"x":3.2585973431481516,"y":-2.0226314455270766},"rotation":{"radians":1.2757042704692263}},"curvature":-1.0503191132212641},{"time":0.5946566732242955,"velocity":1.22774746869296,"acceleration":-0.5032767383908354,"pose":{"translation":{"x":3.2826890087088776,"y":-1.9534998893737792},"rotation":{"radians":1.1935567050390803}},"curvature":-1.1871900193146532},{"time":0.6243944835549278,"velocity":1.212781120502874,"acceleration":-0.3768403323138947,"pose":{"translation":{"x":3.29679072395957,"y":-1.9200639848597347},"rotation":{"radians":1.1494812806441845}},"curvature":-1.239928580956994},{"time":0.6543294378988004,"velocity":1.2015004223601278,"acceleration":-0.2514022539839045,"pose":{"translation":{"x":3.3123124503261456,"y":-1.887431713938713},"rotation":{"radians":1.1039001836454154}},"curvature":-1.2805479837540814},{"time":0.684418965414697,"velocity":1.1939358473213206,"acceleration":-0.1286473910644702,"pose":{"translation":{"x":3.3292782820223583,"y":-1.8556362158618867},"rotation":{"radians":1.0572084270862476}},"curvature":-1.308216350703189},{"time":0.7146212553885996,"velocity":1.1900504015120055,"acceleration":-0.010516671904178118,"pose":{"translation":{"x":3.347702503129696,"y":-1.82470703125},"rotation":{"radians":1.009808701952868}},"curvature":-1.3225645836950348},{"time":0.7448962624880843,"velocity":1.1897320091954435,"acceleration":0.10097272618299795,"pose":{"translation":{"x":3.3675900610791567,"y":-1.7946702026762067},"rotation":{"radians":0.96210010066623}},"curvature":-1.3237445021353418},{"time":0.7752068131092396,"velocity":1.1927925481237693,"acceleration":0.20389145174208068,"pose":{"translation":{"x":3.388937040133019,"y":-1.765548375248909},"rotation":{"radians":0.9144663557730784}},"curvature":-1.312428637189129},{"time":0.8055196342144211,"velocity":1.1989730732253028,"acceleration":0.29654182104087534,"pose":{"translation":{"x":3.411731134866622,"y":-1.737360897194594},"rotation":{"radians":0.8672647742046862}},"curvature":-1.2897532381321657},{"time":0.835806148617117,"velocity":1.207954291359259,"acceleration":0.3775754286448021,"pose":{"translation":{"x":3.435952123650134,"y":-1.7101239204406737},"rotation":{"radians":0.8208169033196313}},"curvature":-1.2572161094450898},{"time":0.8660429287748854,"velocity":1.219370956588167,"acceleration":0.44607781402101293,"pose":{"translation":{"x":3.461572342130331,"y":-1.6838505011983216},"rotation":{"radians":0.7754016677331865}},"curvature":-1.2165477334674017},{"time":0.8962117625150862,"velocity":1.232828603994559,"acceleration":0.5231417564903263,"pose":{"translation":{"x":3.4885571567123694,"y":-1.6585507005453108},"rotation":{"radians":0.7312513370847253}},"curvature":-1.1695762249806743},{"time":0.9562680582277421,"velocity":1.2642465600219803,"acceleration":0.5839293125245819,"pose":{"translation":{"x":3.5464500344851415,"y":-1.6108978271484373},"rotation":{"radians":0.6474363689665855}},"curvature":-1.0638099142624002},{"time":1.0159544613767881,"velocity":1.2990992003798678,"acceleration":0.6011469068117358,"pose":{"translation":{"x":3.6092322956847354,"y":-1.567189708352089},"rotation":{"radians":0.5703086691540483}},"curvature":-0.9524662524724097},{"time":1.075247954001697,"velocity":1.3347433000653963,"acceleration":0.5853097391528487,"pose":{"translation":{"x":3.676424273995083,"y":-1.527409267425537},"rotation":{"radians":0.5001906802940327}},"curvature":-0.8446084678380373},{"time":1.1341348473037771,"velocity":1.3692103722235585,"acceleration":0.5477838076790317,"pose":{"translation":{"x":3.7474802494845436,"y":-1.491501161456108},"rotation":{"radians":0.4369591767127109}},"curvature":-0.7456528682493916},{"time":1.192587253525966,"velocity":1.4012296538719506,"acceleration":0.49860917973620345,"pose":{"translation":{"x":3.8218036000226827,"y":-1.459375},"rotation":{"radians":0.3802110136115068}},"curvature":-0.6580867707002909},{"time":1.2505483960929356,"velocity":1.4301296116238404,"acceleration":0.44547620246683517,"pose":{"translation":{"x":3.8987619526970523,"y":-1.430908563733101},"rotation":{"radians":0.3293970719543265}},"curvature":-0.5824180484673191},{"time":1.3079266711023596,"velocity":1.4556902676791363,"acceleration":0.39365548864463024,"pose":{"translation":{"x":3.9777023352299703,"y":-1.4059510231018066},"rotation":{"radians":0.2839173004495175}},"curvature":-0.5179964450188761},{"time":1.36459666499225,"velocity":1.4779987218153494,"acceleration":0.3464688112038548,"pose":{"translation":{"x":4.057966327395298,"y":-1.384326156973839},"rotation":{"radians":0.2431817004482161}},"curvature":-0.4635925052478776},{"time":1.4204049490329456,"velocity":1.4973345516422563,"acceleration":0.30594936186666,"pose":{"translation":{"x":4.138905212435224,"y":-1.3658355712890626},"rotation":{"radians":0.2066461302891754}},"curvature":-0.4177494217263637},{"time":1.4751787559057503,"velocity":1.5140925629019986,"acceleration":0.27349218095525435,"pose":{"translation":{"x":4.219895128477039,"y":-1.3502619177103043},"rotation":{"radians":0.17383156520200765}},"curvature":-0.37896519682071883},{"time":1.5287361342444172,"velocity":1.5287400871100862,"acceleration":0.2504223497687081,"pose":{"translation":{"x":4.300352219949918,"y":-1.3373721122741702},"rotation":{"radians":0.14433362331149865}},"curvature":-0.3457618351949617},{"time":1.5808966468770733,"velocity":1.5418022452486964,"acceleration":0.23847228579086874,"pose":{"translation":{"x":4.3797477890017005,"y":-1.326920554041863},"rotation":{"radians":0.11782713826751266}},"curvature":-0.3166843715937036},{"time":1.6314920601476874,"velocity":1.5538678491018734,"acceleration":0.2401578562175825,"pose":{"translation":{"x":4.457623446915669,"y":-1.3186523437500004},"rotation":{"radians":0.09406880478221523}},"curvature":-0.29025966227029737},{"time":1.6803767808178705,"velocity":1.5656078988198199,"acceleration":-2.0114815977744067,"pose":{"translation":{"x":4.5336062655273235,"y":-1.312306502461434},"rotation":{"radians":0.07289944611301012}},"curvature":-0.26493890076434345},{"time":1.7291493718369744,"velocity":1.4675027295091152,"acceleration":-2.6999999999999993,"pose":{"translation":{"x":4.607423928641174,"y":-1.307619190216065},"rotation":{"radians":0.05424603147602765}},"curvature":-0.2390516451714226},{"time":1.7803302040600095,"velocity":1.3293144825069205,"acceleration":-2.700000000000001,"pose":{"translation":{"x":4.678919883447504,"y":-1.3043269246816642},"rotation":{"radians":0.03812190138197012}},"curvature":-0.2108146530013771},{"time":1.8354603878780003,"velocity":1.1804629861983456,"acceleration":-2.700000000000001,"pose":{"translation":{"x":4.748068491939165,"y":-1.3021697998046884},"rotation":{"radians":0.02462148220789151}},"curvature":-0.1784645562722071},{"time":1.8964101282018484,"velocity":1.0158986873239553,"acceleration":-2.6999999999999984,"pose":{"translation":{"x":4.814990182328344,"y":-1.3008947044610988},"rotation":{"radians":0.013903147168922325}},"curvature":-0.14060587812306488},{"time":1.966993129533728,"velocity":0.8253245837278805,"acceleration":-2.7,"pose":{"translation":{"x":4.87996660046335,"y":-1.3002585411071794},"rotation":{"radians":0.006151724781559076}},"curvature":-0.09684470081187932},{"time":2.2726689012847947,"velocity":0.0,"acceleration":-2.7,"pose":{"translation":{"x":5.006107200045358,"y":-1.300000000000002},"rotation":{"radians":-5.329070518200854E-15}},"curvature":-1.06581410364021E-14}] \ No newline at end of file diff --git a/src/main/deploy/paths/SixBallMid1.wpilib.json b/src/main/deploy/paths/SixBallMid1.wpilib.json new file mode 100644 index 0000000..758d46b --- /dev/null +++ b/src/main/deploy/paths/SixBallMid1.wpilib.json @@ -0,0 +1 @@ +[{"time":0.0,"velocity":0.0,"acceleration":2.7,"pose":{"translation":{"x":5.006,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.2656061620411004,"velocity":0.717136637510971,"acceleration":2.6999999999999997,"pose":{"translation":{"x":5.101237954974175,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.3755418079977478,"velocity":1.013962881593919,"acceleration":2.699999999999999,"pose":{"translation":{"x":5.1963927268981935,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.45975256128584724,"velocity":1.2413319154717875,"acceleration":2.6999999999999997,"pose":{"translation":{"x":5.291352763772011,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.5305335412553954,"velocity":1.4324405613895677,"acceleration":2.7000000000000006,"pose":{"translation":{"x":5.385978881835937,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.5926137417782101,"velocity":1.6000571028011674,"acceleration":1.7647018169830884,"pose":{"translation":{"x":5.480107913374901,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.6492481806601815,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.573556354522705,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.7036997445093501,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.666124013066292,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.7575077699115317,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.757597656250001,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.810541300693782,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.847754658579826,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.8626660013101702,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.936366649627686,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.9137463026089846,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.023203161835671,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":0.9636475475999504,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.108035278320313,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.0122381372214386,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.190639280676843,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.0593916761076771,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.270800296783448,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.1049891183559657,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.3483159486055385,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.1489209132938847,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.423000000000001,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.1910891512465098,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.494686004519464,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.2314097093036216,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.563230953216554,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.2698143970869191,"velocity":1.7,"acceleration":-1.1179894261480032,"pose":{"translation":{"x":6.628518922448159,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.3067004902763237,"velocity":1.6587617378423356,"acceleration":-2.700000000000003,"pose":{"translation":{"x":6.690464721679689,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.3795667014519033,"velocity":1.4620229676682703,"acceleration":-2.700000000000001,"pose":{"translation":{"x":6.804164600372316,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.4531237596123885,"velocity":1.26341891063496,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":6.904402343750003,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.528510297293001,"velocity":1.0598752588973066,"acceleration":-2.7,"pose":{"translation":{"x":6.9919748954772984,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.6089801534753305,"velocity":0.8426066472050169,"acceleration":-2.6999999999999997,"pose":{"translation":{"x":7.0685211181640675,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.7044131404571534,"velocity":0.5849375823540952,"acceleration":-2.7000000000000006,"pose":{"translation":{"x":7.136638523101813,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0},{"time":1.9210566894771886,"velocity":0.0,"acceleration":-2.7000000000000006,"pose":{"translation":{"x":7.200000000000008,"y":-1.3},"rotation":{"radians":0.0}},"curvature":0.0}] \ No newline at end of file diff --git a/src/main/deploy/paths/SixBallMidComplete.wpilib.json b/src/main/deploy/paths/SixBallMidComplete.wpilib.json new file mode 100644 index 0000000..4300f3a --- /dev/null +++ b/src/main/deploy/paths/SixBallMidComplete.wpilib.json @@ -0,0 +1 @@ +[{"time":0.0,"velocity":0.0,"acceleration":2.7,"pose":{"translation":{"x":3.2,"y":-2.4},"rotation":{"radians":1.4909663410826592}},"curvature":0.0},{"time":0.24087146067360232,"velocity":0.6503529438187263,"acceleration":2.7,"pose":{"translation":{"x":3.2063923239707948,"y":-2.321935549378395},"rotation":{"radians":1.4853936094671658}},"curvature":-0.14003454519850286},{"time":0.3403321067745373,"velocity":0.9188966882912508,"acceleration":2.700000000000002,"pose":{"translation":{"x":3.2136058807373047,"y":-2.244230365753174},"rotation":{"radians":1.4693943312421711}},"curvature":-0.26854009181439953},{"time":0.4162093899230572,"velocity":1.1237653527922549,"acceleration":2.7000000000000006,"pose":{"translation":{"x":3.222373878955841,"y":-2.167232152819633},"rotation":{"radians":1.4438709569483001}},"curvature":-0.3892554699617604},{"time":0.4796643300987847,"velocity":1.295093691266719,"acceleration":2.187682579886264,"pose":{"translation":{"x":3.23333740234375,"y":-2.0912750244140623},"rotation":{"radians":1.4095508622566484}},"curvature":-0.5045238953483497},{"time":0.5355873525736204,"velocity":1.4174355133495053,"acceleration":-0.734989108404782,"pose":{"translation":{"x":3.247049701213837,"y":-2.0166784316301345},"rotation":{"radians":1.3670615930214727}},"curvature":-0.6152749842269323},{"time":0.5891532438960738,"velocity":1.378065166645508,"acceleration":-0.6426464146474123,"pose":{"translation":{"x":3.263980484008789,"y":-1.9437460899353027},"rotation":{"radians":1.31700394182167}},"curvature":-0.7210297835846021},{"time":0.643461958301142,"velocity":1.3431638660489806,"acceleration":-0.5453266663691863,"pose":{"translation":{"x":3.284520208835602,"y":-1.8727649062871932},"rotation":{"radians":1.2600195729181376}},"curvature":-0.8199640567171538},{"time":0.6984118145503199,"velocity":1.3131982441231504,"acceleration":-0.4394478338280287,"pose":{"translation":{"x":3.308984375,"y":-1.80400390625},"rotation":{"radians":1.1968484614725936}},"curvature":-0.9091030887449644},{"time":0.7539154354262596,"velocity":1.2888072981596066,"acceleration":-0.32468479529931726,"pose":{"translation":{"x":3.337617814540863,"y":-1.7377131611108778},"rotation":{"radians":1.1283693350753876}},"curvature":-0.984719188894597},{"time":0.809892141790966,"velocity":1.270632512712052,"acceleration":-0.20350244619471486,"pose":{"translation":{"x":3.3705989837646486,"y":-1.6741227149963378},"rotation":{"radians":1.0556153835823303}},"curvature":-1.0429516644982315},{"time":0.8662640818893885,"velocity":1.259160685005281,"acceleration":-0.08045877877688212,"pose":{"translation":{"x":3.4080442547798158,"y":-1.6134415119886398},"rotation":{"radians":0.9797593479141627}},"curvature":-1.0805731039252389},{"time":0.9229565411514642,"velocity":1.2545992789671963,"acceleration":0.03871626769718015,"pose":{"translation":{"x":3.45001220703125,"y":-1.5558563232421874},"rotation":{"radians":0.9020673863864839}},"curvature":-1.0957232372764043},{"time":0.9799017050564615,"velocity":1.256803983177002,"acceleration":0.14815351255780274,"pose":{"translation":{"x":3.4965079188346864,"y":-1.5015306740999221},"rotation":{"radians":0.8238287103495565}},"curvature":-1.0883868599412896},{"time":1.037044049449856,"velocity":1.265269822214671,"acceleration":0.24282302918833878,"pose":{"translation":{"x":3.547487258911133,"y":-1.4506037712097166},"rotation":{"radians":0.7462749142641318}},"curvature":-1.060453497287128},{"time":1.0943450481757073,"velocity":1.2791838243007994,"acceleration":0.3192880318302778,"pose":{"translation":{"x":3.602861177921295,"y":-1.4031894296407699},"rotation":{"radians":0.6705058542365749}},"curvature":-1.0153469207650658},{"time":1.151785273529354,"velocity":1.2975238008018528,"acceleration":0.37610415805722364,"pose":{"translation":{"x":3.6624999999999996,"y":-1.359375},"rotation":{"radians":0.5974362859535688}},"curvature":-0.957370100328515},{"time":1.2093630070251655,"velocity":1.3191790257811382,"acceleration":0.4138164485760789,"pose":{"translation":{"x":3.726237714290619,"y":-1.3192202955484391},"rotation":{"radians":0.5277705788228475}},"curvature":-0.8909885271430263},{"time":1.2670896494085861,"velocity":1.3430672599204667,"acceleration":0.43460983400489717,"pose":{"translation":{"x":3.793876266479492,"y":-1.282756519317627},"rotation":{"radians":0.46200494353630284}},"curvature":-0.8202450408700819},{"time":1.3249830335940764,"velocity":1.3682282940113044,"acceleration":0.4417529373871998,"pose":{"translation":{"x":3.8651898503303523,"y":-1.2499851912260056},"rotation":{"radians":0.4004508235379794}},"curvature":-0.7484034289896291},{"time":1.383060006914625,"velocity":1.3938839675702148,"acceleration":0.43900370786176246,"pose":{"translation":{"x":3.9399291992187493,"y":-1.2208770751953126},"rotation":{"radians":0.3432707503966877}},"curvature":-0.6778200992401754},{"time":1.441329456851559,"velocity":1.4194644721475942,"acceleration":0.43011410600385014,"pose":{"translation":{"x":4.017825877666472,"y":-1.1953711062669754},"rotation":{"radians":0.2905185837502133}},"curvature":-0.6099838436225127},{"time":1.4997865390306198,"velocity":1.4446076877886345,"acceleration":0.41850596016098784,"pose":{"translation":{"x":4.098596572875976,"y":-1.173373317718506},"rotation":{"radians":0.24217829113794748}},"curvature":-0.5456484025792503},{"time":1.5584084380603251,"velocity":1.4691413019285218,"acceleration":0.4071259180970876,"pose":{"translation":{"x":4.1819473862648,"y":-1.1547557681798937},"rotation":{"radians":0.19819797352787924}},"curvature":-0.4849954493582745},{"time":1.6171516690776433,"velocity":1.4930571937884367,"acceleration":0.3984462097492305,"pose":{"translation":{"x":4.267578124999998,"y":-1.1393554687500003},"rotation":{"radians":0.1585179297328586}},"curvature":-0.42778827730628},{"time":1.6759507421084023,"velocity":1.5164854615743109,"acceleration":0.39456346754290916,"pose":{"translation":{"x":4.35518659353256,"y":-1.1269733101129535},"rotation":{"radians":0.12309291857098917}},"curvature":-0.37349708304330403},{"time":1.7347179434753464,"velocity":1.5396728523234446,"acceleration":0.397352070883421,"pose":{"translation":{"x":4.444472885131834,"y":-1.1173729896545417},"rotation":{"radians":0.09190948239783109}},"curvature":-0.32139092067395386},{"time":1.7933440031024948,"velocity":1.562968038524027,"acceleration":0.4086404035647724,"pose":{"translation":{"x":4.53514367341995,"y":-1.1102799385786064},"rotation":{"radians":0.06499941950371821}},"curvature":-0.27059936113793964},{"time":1.8516994822211263,"velocity":1.5868144450612802,"acceleration":0.43038917748303396,"pose":{"translation":{"x":4.626916503906247,"y":-1.1053802490234386},"rotation":{"radians":0.042450411457934975}},"curvature":-0.2201505876217445},{"time":1.909636813019807,"velocity":1.6117500452092868,"acceleration":0.46485442754444356,"pose":{"translation":{"x":4.7195240855216944,"y":-1.1023196011781704},"rotation":{"radians":0.024414544524684806}},"curvature":-0.16899419639207908},{"time":1.9669930430836986,"velocity":1.6384123427017445,"acceleration":0.5147082657382434,"pose":{"translation":{"x":4.812718582153316,"y":-1.1007021903991712},"rotation":{"radians":0.011115066097951428}},"curvature":-0.11601802371569106},{"time":2.0235934863647898,"velocity":1.6675450587029708,"acceleration":0.5830593842147167,"pose":{"translation":{"x":4.906275904178614,"y":-1.1000896543264405},"rotation":{"radians":0.0028511840826505935}},"curvature":-0.06007008409255472},{"time":2.079256669525349,"velocity":1.6999999999999975,"acceleration":4.265969051474203E-14,"pose":{"translation":{"x":4.999999999999995,"y":-1.1000000000000019},"rotation":{"radians":-3.2566542055671518E-15}},"curvature":-4.342205607422935E-15},{"time":2.1343686615338977,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.0936903864145275,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.1892768582496456,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.187034320831299,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.243795345773229,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.279715749621391,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.297757143445389,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.371450805664063,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.351013572738965,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.461986735463142,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.4034336261508975,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.551100826263427,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.4549033360942203,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.638599333167076,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.5053251437900577,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.72431640625,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.5546172681596233,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.808113017678261,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.6027130747162124,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.889875888824463,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.649560444457203,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.969516417384147,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.6951211427560504,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.046969604492188,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.739370188254281,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.12219298183918,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.782295221753494,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.195165538787842,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.8238958751073535,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.265886649489403,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.864183140113587,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.334375,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.9031787374059825,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.400667515397072,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.940914485346383,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.464818286895753,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.01278040861083,"velocity":1.7,"acceleration":-0.8670174294348908,"pose":{"translation":{"x":6.5869903564453125,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.0814146722541467,"velocity":1.6404928971648147,"acceleration":-2.6999999999999993,"pose":{"translation":{"x":6.701626491546631,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.151292036246028,"velocity":1.4518240143867347,"acceleration":-2.6999999999999997,"pose":{"translation":{"x":6.80966796875,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.227307062784812,"velocity":1.2465834427320184,"acceleration":-2.7,"pose":{"translation":{"x":6.912227725982667,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.314399686970503,"velocity":1.0114333574306535,"acceleration":-2.6999999999999997,"pose":{"translation":{"x":7.010556030273439,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.4251389914163664,"velocity":0.7124372354268221,"acceleration":-2.7,"pose":{"translation":{"x":7.106006145477297,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.6890046341670413,"velocity":0.0,"acceleration":-2.7,"pose":{"translation":{"x":7.200000000000003,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0}] \ No newline at end of file diff --git a/src/main/deploy/paths/TenBallMidComplete.wpilib.json b/src/main/deploy/paths/TenBallMidComplete.wpilib.json new file mode 100644 index 0000000..d662e4f --- /dev/null +++ b/src/main/deploy/paths/TenBallMidComplete.wpilib.json @@ -0,0 +1 @@ +[{"time":0.0,"velocity":0.0,"acceleration":2.7,"pose":{"translation":{"x":3.2,"y":-2.4},"rotation":{"radians":1.4909663410826592}},"curvature":0.0},{"time":0.24087146067360232,"velocity":0.6503529438187263,"acceleration":2.7,"pose":{"translation":{"x":3.2063923239707948,"y":-2.321935549378395},"rotation":{"radians":1.4853936094671658}},"curvature":-0.14003454519850286},{"time":0.3403321067745373,"velocity":0.9188966882912508,"acceleration":2.700000000000002,"pose":{"translation":{"x":3.2136058807373047,"y":-2.244230365753174},"rotation":{"radians":1.4693943312421711}},"curvature":-0.26854009181439953},{"time":0.4162093899230572,"velocity":1.1237653527922549,"acceleration":2.7000000000000006,"pose":{"translation":{"x":3.222373878955841,"y":-2.167232152819633},"rotation":{"radians":1.4438709569483001}},"curvature":-0.3892554699617604},{"time":0.4796643300987847,"velocity":1.295093691266719,"acceleration":2.187682579886264,"pose":{"translation":{"x":3.23333740234375,"y":-2.0912750244140623},"rotation":{"radians":1.4095508622566484}},"curvature":-0.5045238953483497},{"time":0.5355873525736204,"velocity":1.4174355133495053,"acceleration":-0.734989108404782,"pose":{"translation":{"x":3.247049701213837,"y":-2.0166784316301345},"rotation":{"radians":1.3670615930214727}},"curvature":-0.6152749842269323},{"time":0.5891532438960738,"velocity":1.378065166645508,"acceleration":-0.6426464146474123,"pose":{"translation":{"x":3.263980484008789,"y":-1.9437460899353027},"rotation":{"radians":1.31700394182167}},"curvature":-0.7210297835846021},{"time":0.643461958301142,"velocity":1.3431638660489806,"acceleration":-0.5453266663691863,"pose":{"translation":{"x":3.284520208835602,"y":-1.8727649062871932},"rotation":{"radians":1.2600195729181376}},"curvature":-0.8199640567171538},{"time":0.6984118145503199,"velocity":1.3131982441231504,"acceleration":-0.4394478338280287,"pose":{"translation":{"x":3.308984375,"y":-1.80400390625},"rotation":{"radians":1.1968484614725936}},"curvature":-0.9091030887449644},{"time":0.7539154354262596,"velocity":1.2888072981596066,"acceleration":-0.32468479529931726,"pose":{"translation":{"x":3.337617814540863,"y":-1.7377131611108778},"rotation":{"radians":1.1283693350753876}},"curvature":-0.984719188894597},{"time":0.809892141790966,"velocity":1.270632512712052,"acceleration":-0.20350244619471486,"pose":{"translation":{"x":3.3705989837646486,"y":-1.6741227149963378},"rotation":{"radians":1.0556153835823303}},"curvature":-1.0429516644982315},{"time":0.8662640818893885,"velocity":1.259160685005281,"acceleration":-0.08045877877688212,"pose":{"translation":{"x":3.4080442547798158,"y":-1.6134415119886398},"rotation":{"radians":0.9797593479141627}},"curvature":-1.0805731039252389},{"time":0.9229565411514642,"velocity":1.2545992789671963,"acceleration":0.03871626769718015,"pose":{"translation":{"x":3.45001220703125,"y":-1.5558563232421874},"rotation":{"radians":0.9020673863864839}},"curvature":-1.0957232372764043},{"time":0.9799017050564615,"velocity":1.256803983177002,"acceleration":0.14815351255780274,"pose":{"translation":{"x":3.4965079188346864,"y":-1.5015306740999221},"rotation":{"radians":0.8238287103495565}},"curvature":-1.0883868599412896},{"time":1.037044049449856,"velocity":1.265269822214671,"acceleration":0.24282302918833878,"pose":{"translation":{"x":3.547487258911133,"y":-1.4506037712097166},"rotation":{"radians":0.7462749142641318}},"curvature":-1.060453497287128},{"time":1.0943450481757073,"velocity":1.2791838243007994,"acceleration":0.3192880318302778,"pose":{"translation":{"x":3.602861177921295,"y":-1.4031894296407699},"rotation":{"radians":0.6705058542365749}},"curvature":-1.0153469207650658},{"time":1.151785273529354,"velocity":1.2975238008018528,"acceleration":0.37610415805722364,"pose":{"translation":{"x":3.6624999999999996,"y":-1.359375},"rotation":{"radians":0.5974362859535688}},"curvature":-0.957370100328515},{"time":1.2093630070251655,"velocity":1.3191790257811382,"acceleration":0.4138164485760789,"pose":{"translation":{"x":3.726237714290619,"y":-1.3192202955484391},"rotation":{"radians":0.5277705788228475}},"curvature":-0.8909885271430263},{"time":1.2670896494085861,"velocity":1.3430672599204667,"acceleration":0.43460983400489717,"pose":{"translation":{"x":3.793876266479492,"y":-1.282756519317627},"rotation":{"radians":0.46200494353630284}},"curvature":-0.8202450408700819},{"time":1.3249830335940764,"velocity":1.3682282940113044,"acceleration":0.4417529373871998,"pose":{"translation":{"x":3.8651898503303523,"y":-1.2499851912260056},"rotation":{"radians":0.4004508235379794}},"curvature":-0.7484034289896291},{"time":1.383060006914625,"velocity":1.3938839675702148,"acceleration":0.43900370786176246,"pose":{"translation":{"x":3.9399291992187493,"y":-1.2208770751953126},"rotation":{"radians":0.3432707503966877}},"curvature":-0.6778200992401754},{"time":1.441329456851559,"velocity":1.4194644721475942,"acceleration":0.43011410600385014,"pose":{"translation":{"x":4.017825877666472,"y":-1.1953711062669754},"rotation":{"radians":0.2905185837502133}},"curvature":-0.6099838436225127},{"time":1.4997865390306198,"velocity":1.4446076877886345,"acceleration":0.41850596016098784,"pose":{"translation":{"x":4.098596572875976,"y":-1.173373317718506},"rotation":{"radians":0.24217829113794748}},"curvature":-0.5456484025792503},{"time":1.5584084380603251,"velocity":1.4691413019285218,"acceleration":0.4071259180970876,"pose":{"translation":{"x":4.1819473862648,"y":-1.1547557681798937},"rotation":{"radians":0.19819797352787924}},"curvature":-0.4849954493582745},{"time":1.6171516690776433,"velocity":1.4930571937884367,"acceleration":0.3984462097492305,"pose":{"translation":{"x":4.267578124999998,"y":-1.1393554687500003},"rotation":{"radians":0.1585179297328586}},"curvature":-0.42778827730628},{"time":1.6759507421084023,"velocity":1.5164854615743109,"acceleration":0.39456346754290916,"pose":{"translation":{"x":4.35518659353256,"y":-1.1269733101129535},"rotation":{"radians":0.12309291857098917}},"curvature":-0.37349708304330403},{"time":1.7347179434753464,"velocity":1.5396728523234446,"acceleration":0.397352070883421,"pose":{"translation":{"x":4.444472885131834,"y":-1.1173729896545417},"rotation":{"radians":0.09190948239783109}},"curvature":-0.32139092067395386},{"time":1.7933440031024948,"velocity":1.562968038524027,"acceleration":0.4086404035647724,"pose":{"translation":{"x":4.53514367341995,"y":-1.1102799385786064},"rotation":{"radians":0.06499941950371821}},"curvature":-0.27059936113793964},{"time":1.8516994822211263,"velocity":1.5868144450612802,"acceleration":0.43038917748303396,"pose":{"translation":{"x":4.626916503906247,"y":-1.1053802490234386},"rotation":{"radians":0.042450411457934975}},"curvature":-0.2201505876217445},{"time":1.909636813019807,"velocity":1.6117500452092868,"acceleration":0.46485442754444356,"pose":{"translation":{"x":4.7195240855216944,"y":-1.1023196011781704},"rotation":{"radians":0.024414544524684806}},"curvature":-0.16899419639207908},{"time":1.9669930430836986,"velocity":1.6384123427017445,"acceleration":0.5147082657382434,"pose":{"translation":{"x":4.812718582153316,"y":-1.1007021903991712},"rotation":{"radians":0.011115066097951428}},"curvature":-0.11601802371569106},{"time":2.0235934863647898,"velocity":1.6675450587029708,"acceleration":0.5830593842147167,"pose":{"translation":{"x":4.906275904178614,"y":-1.1000896543264405},"rotation":{"radians":0.0028511840826505935}},"curvature":-0.06007008409255472},{"time":2.079256669525349,"velocity":1.6999999999999975,"acceleration":4.265969051474203E-14,"pose":{"translation":{"x":4.999999999999995,"y":-1.1000000000000019},"rotation":{"radians":-3.2566542055671518E-15}},"curvature":-4.342205607422935E-15},{"time":2.1343686615338977,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.0936903864145275,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.1892768582496456,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.187034320831299,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.243795345773229,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.279715749621391,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.297757143445389,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.371450805664063,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.351013572738965,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.461986735463142,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.4034336261508975,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.551100826263427,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.4549033360942203,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.638599333167076,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.5053251437900577,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.72431640625,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.5546172681596233,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.808113017678261,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.6027130747162124,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.889875888824463,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.649560444457203,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":5.969516417384147,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.6951211427560504,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.046969604492188,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.739370188254281,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.12219298183918,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.782295221753494,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.195165538787842,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.8238958751073535,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.265886649489403,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.864183140113587,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.334375,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.9031787374059825,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.400667515397072,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":2.940914485346383,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.464818286895753,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.01278040861083,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.5869903564453125,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.0802134292586643,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.701626491546631,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.143767239378293,"velocity":1.7,"acceleration":0.0,"pose":{"translation":{"x":6.80966796875,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.2040965083386856,"velocity":1.7,"acceleration":-2.1491555180394277,"pose":{"translation":{"x":6.912227725982667,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.264221775517693,"velocity":1.5707814502686412,"acceleration":-2.7000000000000006,"pose":{"translation":{"x":7.010556030273439,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.328543555301386,"velocity":1.3971126448526707,"acceleration":-2.6999999999999997,"pose":{"translation":{"x":7.106006145477297,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.4008763809671625,"velocity":1.201814015555074,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":7.200000000000003,"y":-1.1},"rotation":{"radians":0.0}},"curvature":0.0},{"time":3.4848439889787057,"velocity":0.9751014739239071,"acceleration":-2.6999999999999993,"pose":{"translation":{"x":7.291391427065546,"y":-1.100829703353923},"rotation":{"radians":-0.027821850230778215}},"curvature":-0.650210314192843},{"time":3.5304430389191896,"velocity":0.8519840390846011,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":7.33300693575994,"y":-1.102681343908726},"rotation":{"radians":-0.06466356345347674}},"curvature":-1.1671521341710898},{"time":3.5778846168647904,"velocity":0.7238917786314792,"acceleration":-2.7000000000000024,"pose":{"translation":{"x":7.370233046899057,"y":-1.1060809225877481},"rotation":{"radians":-0.12296931421995656}},"curvature":-2.060099762721178},{"time":3.6022571287580676,"velocity":0.6580859965196303,"acceleration":-2.7,"pose":{"translation":{"x":7.386904400841855,"y":-1.1084662489341992},"rotation":{"radians":-0.16325383468827934}},"curvature":-2.7730985925232075},{"time":3.6271103997518286,"velocity":0.5909821648364754,"acceleration":-2.7,"pose":{"translation":{"x":7.402155192351948,"y":-1.111353633071441},"rotation":{"radians":-0.21358032077615297}},"curvature":-3.7862951832682605},{"time":3.652572439380677,"velocity":0.5222346578385852,"acceleration":-2.6999999999999993,"pose":{"translation":{"x":7.415909561237784,"y":-1.114770334002192},"rotation":{"radians":-0.2768284721084359}},"curvature":-5.252936086916672},{"time":3.678927181450754,"velocity":0.4510768542493773,"acceleration":-2.6999999999999997,"pose":{"translation":{"x":7.428105903379064,"y":-1.1187386439112075},"rotation":{"radians":-0.35686632281713865}},"curvature":-7.397416721857951},{"time":3.6926141362001688,"velocity":0.41412207642595716,"acceleration":-2.6999999999999984,"pose":{"translation":{"x":7.433604315141906,"y":-1.1209353108447915},"rotation":{"radians":-0.40469686961167517}},"curvature":-8.81393295104801},{"time":3.7068032402609243,"velocity":0.3758114954619176,"acceleration":-2.699999999999999,"pose":{"translation":{"x":7.438696276906384,"y":-1.123276093041583},"rotation":{"radians":-0.45867228530255166}},"curvature":-10.5116637682121},{"time":3.7217061475405706,"velocity":0.3355736458068724,"acceleration":-2.6999999999999993,"pose":{"translation":{"x":7.443377833241871,"y":-1.125762471341103},"rotation":{"radians":-0.5195379709979431}},"curvature":-12.521757406781552},{"time":3.7376764841691847,"velocity":0.29245373690961385,"acceleration":-2.1511698401327632,"pose":{"translation":{"x":7.44764580838088,"y":-1.1283956545710556},"rotation":{"radians":-0.5880100735834901}},"curvature":-14.85458396152343},{"time":3.755028959973427,"velocity":0.2551256143078946,"acceleration":-1.633997026424236,"pose":{"translation":{"x":7.4514977876621735,"y":-1.1311765859497145},"rotation":{"radians":-0.6646802737127656}},"curvature":-17.4795810166942},{"time":3.773857213312967,"velocity":0.224360304338324,"acceleration":-1.2920260604607863,"pose":{"translation":{"x":7.454932098973876,"y":-1.134105949488305},"rotation":{"radians":-0.7498755855456528}},"curvature":-20.29968500248048},{"time":3.7838551285067523,"velocity":0.21144273735767627,"acceleration":-1.0899098955310096,"pose":{"translation":{"x":7.456492305080279,"y":-1.1356264377697427},"rotation":{"radians":-0.7956562154609756}},"curvature":-21.728400778541683},{"time":3.7942143449657375,"velocity":0.2001521248290804,"acceleration":-0.9049130468186761,"pose":{"translation":{"x":7.457947794196594,"y":-1.1371841763933905},"rotation":{"radians":-0.8434788689153079}},"curvature":-23.12820866880771},{"time":3.80491588861381,"velocity":0.19046815836083997,"acceleration":-0.735425697805756,"pose":{"translation":{"x":7.459298557887232,"y":-1.1387791808097316},"rotation":{"radians":-0.8932284950696684}},"curvature":-24.46103818109851},{"time":3.815931670737958,"velocity":0.1823668691053123,"acceleration":-0.5794957153271393,"pose":{"translation":{"x":7.460544630646523,"y":-1.1404114514692556},"rotation":{"radians":-0.944741230203777}},"curvature":-25.684779785449013},{"time":3.8272241906318096,"velocity":0.1758229022115787,"acceleration":-0.4349050122088543,"pose":{"translation":{"x":7.461686089318814,"y":-1.1420809740225333},"rotation":{"radians":-0.9978029559869008}},"curvature":-26.755617400486308},{"time":3.8387467925622083,"velocity":0.17081166487836086,"acceleration":-0.2992389113278968,"pose":{"translation":{"x":7.462723052518566,"y":-1.1437877195202912},"rotation":{"radians":-1.0521507937987378}},"curvature":-27.631116920906926},{"time":3.8504445642069376,"velocity":0.16731123642642975,"acceleration":-0.16994683082951736,"pose":{"translation":{"x":7.463655680050451,"y":-1.1455316446134858},"rotation":{"radians":-1.1074779835281168}},"curvature":-28.2737787148395},{"time":3.862255893716841,"velocity":0.16530393840833846,"acceleration":-0.04439424774012141,"pose":{"translation":{"x":7.464484172329446,"y":-1.1473126917533785},"rotation":{"radians":-1.1634422271483342}},"curvature":-28.65458793715891},{"time":3.874114613746176,"velocity":0.16477747945347543,"acceleration":0.08009266419378874,"pose":{"translation":{"x":7.46520876980094,"y":-1.1491307893916096},"rotation":{"radians":-1.2196771131358384}},"curvature":-28.755999475861472},{"time":3.885952570160363,"velocity":0.16572561292129762,"acceleration":0.20618723801495994,"pose":{"translation":{"x":7.46582975236082,"y":-1.1509858521802734},"rotation":{"radians":-1.2758057659201345}},"curvature":-28.573825683680486},{"time":3.897702381789645,"velocity":0.16814827412833533,"acceleration":0.33652424457678903,"pose":{"translation":{"x":7.466347438775576,"y":-1.1528777811719926},"rotation":{"radians":-1.331455494132833}},"curvature":-28.117668468730983},{"time":3.909300124085043,"velocity":0.17205119559309046,"acceleration":0.4736603241313466,"pose":{"translation":{"x":7.466762186102392,"y":-1.1548064640199922},"rotation":{"radians":-1.3862720377899758}},"curvature":-27.409814592509886},{"time":3.9206876830333157,"velocity":0.177445030455594,"acceleration":0.6200300943560695,"pose":{"translation":{"x":7.467074389109252,"y":-1.1567717751781745},"rotation":{"radians":-1.4399320847953063}},"curvature":-26.482813979610114},{"time":3.9318145824632764,"velocity":0.18434404295904294,"acceleration":0.7778959727669047,"pose":{"translation":{"x":7.467284479695027,"y":-1.158773576101194},"rotation":{"radians":-1.4921530220635075}},"curvature":-25.376195561326828},{"time":3.942639172736599,"velocity":0.19276444813951232,"acceleration":0.949290967398619,"pose":{"translation":{"x":7.467392926309582,"y":-1.1608117154445305},"rotation":{"radians":-1.542699328039103}},"curvature":-24.13288147640941},{"time":3.953129160861284,"velocity":0.20272249911439444,"acceleration":1.135955117911212,"pose":{"translation":{"x":7.4674002333738665,"y":-1.1628860292645662},"rotation":{"radians":-1.5913854936628287}},"curvature":-22.79582618985712},{"time":3.9632615418252266,"velocity":0.21423242912701146,"acceleration":1.3392677471373278,"pose":{"translation":{"x":7.4673069407000146,"y":-1.1649963412186568},"rotation":{"radians":-1.6380757769664533}},"curvature":-21.405267157377484},{"time":3.973022045764004,"velocity":0.227304357248023,"acceleration":1.6813681577996658,"pose":{"translation":{"x":7.467113622911442,"y":-1.1671424627652092},"rotation":{"radians":-1.6826813861112742}},"curvature":-19.99678746639396},{"time":3.9913629212613007,"velocity":0.25814212129534597,"acceleration":2.195217952570515,"pose":{"translation":{"x":7.466429381060786,"y":-1.1715413206750205},"rotation":{"radians":-1.765489142784833}},"curvature":-17.239258032151128},{"time":4.00822689644302,"velocity":0.2951622223659588,"acceleration":2.700000000000086,"pose":{"translation":{"x":7.465352778998552,"y":-1.176080858285079},"rotation":{"radians":-1.839838206677028}},"curvature":-14.689952636946256},{"time":4.023734047095584,"velocity":0.3370315291278809,"acceleration":2.6999999999998843,"pose":{"translation":{"x":7.463889607768119,"y":-1.180759148508029},"rotation":{"radians":-1.9061486326525838}},"curvature":-12.431514400354017},{"time":4.038194096624452,"velocity":0.3760736628558241,"acceleration":2.700000000000073,"pose":{"translation":{"x":7.462046159722717,"y":-1.1855740882804664},"rotation":{"radians":-1.9650609451952596}},"curvature":-10.486462314410268},{"time":4.051936610928297,"velocity":0.4131784514762061,"acceleration":2.7000000000000557,"pose":{"translation":{"x":7.459829209968529,"y":-1.1905234049653206},"rotation":{"radians":-2.0173089249512017}},"curvature":-8.841322943841373},{"time":4.065161141127738,"velocity":0.44888468301469747,"acceleration":2.7000000000001942,"pose":{"translation":{"x":7.457245997807815,"y":-1.195604662754241},"rotation":{"radians":-2.063636181634097}},"curvature":-7.464887532413894},{"time":4.077995850981517,"velocity":0.4835383996199028,"acceleration":2.6999999999999784,"pose":{"translation":{"x":7.454304208182021,"y":-1.2008152690699803},"rotation":{"radians":-2.10474771146483}},"curvature":-6.319871017969904},{"time":4.102807927364417,"velocity":0.5505310058537315,"acceleration":2.70000000000004,"pose":{"translation":{"x":7.447377753155588,"y":-1.211613411542752},"rotation":{"radians":-2.1738212970746114}},"curvature":-4.5801372088327215},{"time":4.126791929649074,"velocity":0.615287812022308,"acceleration":2.700000000000023,"pose":{"translation":{"x":7.4391195320428505,"y":-1.2228941996783393},"rotation":{"radians":-2.2288160276989615}},"curvature":-3.37494202009036},{"time":4.150151464976035,"velocity":0.6783585574051022,"acceleration":2.7000000000000117,"pose":{"translation":{"x":7.429605174583705,"y":-1.234631902221708},"rotation":{"radians":-2.2729705708237473}},"curvature":-2.527916987831134},{"time":4.195346040111186,"velocity":0.8003839102700119,"acceleration":2.7000000000000144,"pose":{"translation":{"x":7.407136719595017,"y":-1.2593658620207715},"rotation":{"radians":-2.337722173229997}},"curvature":-1.4772175377638754},{"time":4.280221360101839,"velocity":1.0295472742447767,"acceleration":2.6999999999999953,"pose":{"translation":{"x":7.350974555129498,"y":-1.3129995813244224},"rotation":{"radians":-2.408909455392808}},"curvature":-0.5347997001052112},{"time":4.357308365158846,"velocity":1.2376821878986943,"acceleration":2.7000000000000033,"pose":{"translation":{"x":7.285072764551772,"y":-1.3703880432690192},"rotation":{"radians":-2.4353803498498174}},"curvature":-0.1169882682753502},{"time":4.4256128254794405,"velocity":1.422104230764299,"acceleration":-1.2978122319032706,"pose":{"translation":{"x":7.215918010652873,"y":-1.4292870796027968},"rotation":{"radians":-2.432432107294122}},"curvature":0.17737888614083197},{"time":4.489497129805158,"velocity":1.3391943991837518,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":7.149694042178108,"y":-1.487544673339861},"rotation":{"radians":-2.402842074915739}},"curvature":0.5161747347143254},{"time":4.5537511090136045,"velocity":1.1657086553209464,"acceleration":-2.7,"pose":{"translation":{"x":7.091673621783036,"y":-1.5433107520931373},"rotation":{"radians":-2.3420150749522866}},"curvature":1.0553635894564308},{"time":4.586028361710854,"velocity":1.0785600730383729,"acceleration":-2.6999999999999975,"pose":{"translation":{"x":7.066988739956747,"y":-1.5698155175341644},"rotation":{"radians":-2.296842094749197}},"curvature":1.46358366454697},{"time":4.618120918759651,"velocity":0.9919101690066217,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":7.045610453989442,"y":-1.5952469814073202},"rotation":{"radians":-2.239856166388038}},"curvature":1.996087590213061},{"time":4.649955434645675,"velocity":0.9059569761143562,"acceleration":-2.6999999999999993,"pose":{"translation":{"x":7.027670862293224,"y":-1.6195522301762182},"rotation":{"radians":-2.170149313599266}},"curvature":2.643464806503541},{"time":4.681660456826774,"velocity":0.8203534162253896,"acceleration":-2.0864951796849778,"pose":{"translation":{"x":7.013131113141328,"y":-1.6427365580918252},"rotation":{"radians":-2.0886536159341755}},"curvature":3.309498733349602},{"time":4.697491663437206,"velocity":0.787321679944126,"acceleration":-1.209308415376104,"pose":{"translation":{"x":7.007072617840989,"y":-1.6539275607758022},"rotation":{"radians":-2.0447575100318383}},"curvature":3.5778366924102567},{"time":4.713127866378614,"velocity":0.7684126881425526,"acceleration":0.8313216487286121,"pose":{"translation":{"x":7.001762402416748,"y":-1.6648700232341174},"rotation":{"radians":-2.0001134513348635}},"curvature":3.741829781587491},{"time":4.742481042049709,"velocity":0.7928146185368677,"acceleration":2.700000000000043,"pose":{"translation":{"x":6.993126971360874,"y":-1.6860940035537344},"rotation":{"radians":-1.9150753113486085}},"curvature":3.5316640430096276},{"time":4.768519029037876,"velocity":0.8631171834049169,"acceleration":2.700000000000008,"pose":{"translation":{"x":6.986559104322092,"y":-1.706627752913635},"rotation":{"radians":-1.8500885056813583}},"curvature":2.2972998269570555},{"time":4.791838638584075,"velocity":0.9260801291796544,"acceleration":2.699999999999998,"pose":{"translation":{"x":6.981146126504432,"y":-1.7267749571307505},"rotation":{"radians":-1.8244704229335087}},"curvature":6.389810104651532E-14},{"time":4.8772957207031595,"velocity":1.1568142509011834,"acceleration":2.700000000000002,"pose":{"translation":{"x":6.9592661543988825,"y":-1.8130425384870001},"rotation":{"radians":-1.811400282697703}},"curvature":0.18305419903007367},{"time":4.967415245295342,"velocity":1.4001369673000763,"acceleration":2.70000000000001,"pose":{"translation":{"x":6.932764737139686,"y":-1.9251688628471044},"rotation":{"radians":-1.7963819825529694}},"curvature":0.08233336529423564},{"time":5.014618955459946,"velocity":1.5275869847445067,"acceleration":2.7000000000000037,"pose":{"translation":{"x":6.9174684998367875,"y":-1.9925542910646845},"rotation":{"radians":-1.7920610655072007}},"curvature":0.04542948812004931},{"time":5.061839473007546,"velocity":1.6550823821230267,"acceleration":0.9094428271800233,"pose":{"translation":{"x":6.901075449959414,"y":-2.0658880189922586},"rotation":{"radians":-1.7897169508357862}},"curvature":0.018473484793554897},{"time":5.108908049761268,"velocity":1.697888561637272,"acceleration":-0.26387371111017716,"pose":{"translation":{"x":6.883970919741171,"y":-2.142921707934635},"rotation":{"radians":-1.7891576401649198}},"curvature":-0.003838170076288228},{"time":5.15613368373084,"velocity":1.6854269583421906,"acceleration":-0.34147593973972523,"pose":{"translation":{"x":6.866629562244371,"y":-2.220906495772335},"rotation":{"radians":-1.7903543306679175}},"curvature":-0.02668672374829891},{"time":5.202548560881559,"velocity":1.6695773945492447,"acceleration":-2.149695336898206,"pose":{"translation":{"x":6.849566333832086,"y":-2.2968748477473047},"rotation":{"radians":-1.7935050152380263}},"curvature":-0.05623993874744346},{"time":5.2475067554213135,"velocity":1.572930973391772,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":6.833287476640194,"y":-2.367922407248626},"rotation":{"radians":-1.7991214804768882}},"curvature":-0.10257183437654888},{"time":5.330413349628705,"velocity":1.3490831690318168,"acceleration":-2.700000000000002,"pose":{"translation":{"x":6.8047701681574635,"y":-2.4856447178365855},"rotation":{"radians":-1.822526000943982}},"curvature":-0.3523138191517206},{"time":5.393855616593966,"velocity":1.1777890482256093,"acceleration":2.7000000000000206,"pose":{"translation":{"x":6.783090623277312,"y":-2.5628124674485733},"rotation":{"radians":-1.879661531385654}},"curvature":-1.3684642417610602},{"time":5.432266865113056,"velocity":1.2814994192271516,"acceleration":2.700000000000013,"pose":{"translation":{"x":6.766985279057036,"y":-2.6072139966365957},"rotation":{"radians":-1.9513027039074702}},"curvature":-1.5427633070819612E-12},{"time":5.50707600533672,"velocity":1.4834840978310444,"acceleration":2.7000000000000113,"pose":{"translation":{"x":6.731791420174782,"y":-2.7044647720887713},"rotation":{"radians":-1.8895360249931248}},"curvature":0.3028962384922683},{"time":5.558530510816899,"velocity":1.6224112626275276,"acceleration":0.5340583566499336,"pose":{"translation":{"x":6.707339661769482,"y":-2.7805377969098837},"rotation":{"radians":-1.8773477894358561}},"curvature":0.047626527361036446},{"time":5.616117894387626,"velocity":1.6531662860610792,"acceleration":-1.1577996380084765,"pose":{"translation":{"x":6.678867013701109,"y":-2.8704533716239875},"rotation":{"radians":-1.8796694858289695}},"curvature":-0.087437362490553},{"time":5.676720221788557,"velocity":1.5830009333338104,"acceleration":-1.7239520448331906,"pose":{"translation":{"x":6.64846271193872,"y":-2.9636803526706923},"rotation":{"radians":-1.8947048458847193}},"curvature":-0.22811624607870962},{"time":5.735921936029287,"velocity":1.4809400170108733,"acceleration":-1.7930050997699363,"pose":{"translation":{"x":6.618459990812718,"y":-3.049269313584438},"rotation":{"radians":-1.9246360307009078}},"curvature":-0.45654182535567983},{"time":5.789176920436449,"velocity":1.385453558380664,"acceleration":2.700000000000016,"pose":{"translation":{"x":6.5905210891597985,"y":-3.120296800861932},"rotation":{"radians":-1.9698094797322772}},"curvature":-0.7007252930308779},{"time":5.833121807218755,"velocity":1.5041047526928912,"acceleration":1.4644282265429305,"pose":{"translation":{"x":6.564722256467882,"y":-3.178309589829586},"rotation":{"radians":-2.001488838181345}},"curvature":2.5539066129365256E-13},{"time":5.875409835553279,"velocity":1.5660325350308155,"acceleration":1.2297898950302844,"pose":{"translation":{"x":6.537938124915615,"y":-3.237441399690594},"rotation":{"radians":-1.9880549453765368}},"curvature":0.2640301659784271},{"time":5.928175944872254,"velocity":1.630923763071354,"acceleration":0.666041558250595,"pose":{"translation":{"x":6.504467396303145,"y":-3.3148614817153645},"rotation":{"radians":-1.971607271981553}},"curvature":0.13072239607567918},{"time":5.993149187477557,"velocity":1.6741986428207842,"acceleration":0.333778151245732,"pose":{"translation":{"x":6.4630861417637835,"y":-3.4139391985919607},"rotation":{"radians":-1.9627263649341367}},"curvature":0.04756533449352125},{"time":6.065539106001328,"velocity":1.6983608159944779,"acceleration":-0.2750046569252419,"pose":{"translation":{"x":6.416671370635927,"y":-3.5268403456821757},"rotation":{"radians":-1.9598523044604}},"curvature":0.0029788781311610086},{"time":6.138060689585077,"velocity":1.6784170427813536,"acceleration":-0.5992029561921169,"pose":{"translation":{"x":6.370156860656412,"y":-3.6401059183334414},"rotation":{"radians":-1.9619346995648212}},"curvature":-0.03968862552733675},{"time":6.2034375840802065,"velocity":1.639243014333212,"acceleration":-1.0560587651523559,"pose":{"translation":{"x":6.3284889881538575,"y":-3.74023087919074},"rotation":{"radians":-1.9697003811835467}},"curvature":-0.11439521721935789},{"time":6.256806038038413,"velocity":1.582882790748018,"acceleration":2.699999999999979,"pose":{"translation":{"x":6.294582558242029,"y":-3.81924292550852},"rotation":{"radians":-1.984322806626164}},"curvature":-0.2283636351184617},{"time":6.29762897442008,"velocity":1.6931047189785187,"acceleration":-1.9259183125779071,"pose":{"translation":{"x":6.267276635013188,"y":-3.88028125646261},"rotation":{"radians":-1.9961898206316888}},"curvature":-3.718304897395597E-13},{"time":6.338419796270027,"velocity":1.6145449281926036,"acceleration":0.7545941402288411,"pose":{"translation":{"x":6.23922019896753,"y":-3.941631121038789},"rotation":{"radians":-2.0049477277332395}},"curvature":-0.16335886169672642},{"time":6.392801741348136,"velocity":1.6555812252827915,"acceleration":0.35274926917193355,"pose":{"translation":{"x":6.201335361250187,"y":-4.0220744791727014},"rotation":{"radians":-2.0156859277247685}},"curvature":-0.08280776660273527},{"time":6.460740596832295,"velocity":1.6795466069032061,"acceleration":-0.9153978571626162,"pose":{"translation":{"x":6.152210651921689,"y":-4.124162319704786},"rotation":{"radians":-2.022062347830648}},"curvature":-0.037586189160884666},{"time":6.537870890516304,"velocity":1.6089417013425409,"acceleration":-2.7,"pose":{"translation":{"x":6.09668889886182,"y":-4.238183851564877},"rotation":{"radians":-2.0254071580455033}},"curvature":-0.017583286099940882},{"time":6.619880238364254,"velocity":1.3875164621530773,"acceleration":-2.6999999999999993,"pose":{"translation":{"x":6.042646637292194,"y":-4.348529551531317},"rotation":{"radians":-2.026743957009689}},"curvature":-0.003811340975765062},{"time":6.699514882416592,"velocity":1.1725029232117652,"acceleration":-2.7000000000000015,"pose":{"translation":{"x":5.997773519298815,"y":-4.440054211990066},"rotation":{"radians":-2.0261395522652093}},"curvature":0.02077742451270997},{"time":6.81616980216361,"velocity":0.8575346398948168,"acceleration":-2.7,"pose":{"translation":{"x":5.946035363842139,"y":-4.5465594485211},"rotation":{"radians":-2.0183163019521078}},"curvature":-3.012836197628505E-13},{"time":6.841893878536755,"velocity":0.7880796336873248,"acceleration":-1.2542204787890836,"pose":{"translation":{"x":5.936556497255027,"y":-4.565484265063717},"rotation":{"radians":-2.064628046880355}},"curvature":-3.571427190245016},{"time":6.856705904936342,"velocity":0.7695020868445985,"acceleration":2.699999999999826,"pose":{"translation":{"x":5.930873224440056,"y":-4.5755225665272805},"rotation":{"radians":-2.1075808705966947}},"curvature":-3.7321628991871814},{"time":6.87259832971659,"velocity":0.8124116337512672,"acceleration":2.700000000000061,"pose":{"translation":{"x":5.924201504522159,"y":-4.586176140795628},"rotation":{"radians":-2.1520402224255477}},"curvature":-3.2843626854041},{"time":6.906458393735083,"velocity":0.9038338066012014,"acceleration":2.700000000000035,"pose":{"translation":{"x":5.907264235271395,"y":-4.609785149466344},"rotation":{"radians":-2.2277586558349807}},"curvature":-1.9758845219610193},{"time":6.943144509816377,"velocity":1.002886320020695,"acceleration":2.6999999999999753,"pose":{"translation":{"x":5.885140344231054,"y":-4.636873699129188},"rotation":{"radians":-2.277838812922086}},"curvature":-0.9905387662992968},{"time":7.021316491852703,"velocity":1.213950671518773,"acceleration":-0.06898886651647455,"pose":{"translation":{"x":5.8272724292904545,"y":-4.701364426734989},"rotation":{"radians":-2.3124024921267456}},"curvature":0.013955931147822767},{"time":7.1039819311848795,"velocity":1.2082476765591597,"acceleration":-2.6999999999999975,"pose":{"translation":{"x":5.760503657459791,"y":-4.775964384068014},"rotation":{"radians":-2.278730146762986}},"curvature":0.661093781844257},{"time":7.147838555204729,"velocity":1.0898347917055649,"acceleration":-2.6999999999999997,"pose":{"translation":{"x":5.728505684666588,"y":-4.814894978457702},"rotation":{"radians":-2.235162805251749}},"curvature":1.0961299502459416},{"time":7.194610750125419,"velocity":0.9635498654197036,"acceleration":-2.700000000000001,"pose":{"translation":{"x":5.700081747766614,"y":-4.853599797205923},"rotation":{"radians":-2.1680248787945833}},"curvature":1.757620630537024},{"time":7.218915175799948,"velocity":0.8979279160984739,"acceleration":-2.699999999999998,"pose":{"translation":{"x":5.687766218327823,"y":-4.8725745365264155},"rotation":{"radians":-2.123216480360578}},"curvature":2.2261447269644323},{"time":7.243783223456295,"velocity":0.830784187426338,"acceleration":-2.700000000000001,"pose":{"translation":{"x":5.676964548292993,"y":-4.89115819582592},"rotation":{"radians":-2.069282861912245}},"curvature":2.8197852070434726},{"time":7.269248244143494,"velocity":0.7620286315709007,"acceleration":-2.699999999999997,"pose":{"translation":{"x":5.6678240008681655,"y":-4.90926204359236},"rotation":{"radians":-2.0049285397303866}},"curvature":3.557955262784595},{"time":7.295445415528923,"velocity":0.6912962688302415,"acceleration":-2.699999999999999,"pose":{"translation":{"x":5.660452710336893,"y":-4.92681346622997},"rotation":{"radians":-1.9290964956932903}},"curvature":4.438007692288481},{"time":7.308908309801176,"velocity":0.65494645429516,"acceleration":-2.699999999999998,"pose":{"translation":{"x":5.657452152605622,"y":-4.935364456137411},"rotation":{"radians":-1.886727236623641}},"curvature":4.9177115386256585},{"time":7.322690018027458,"velocity":0.6177358420841967,"acceleration":-2.337828346394491,"pose":{"translation":{"x":5.654913682519064,"y":-4.943758904004977},"rotation":{"radians":-1.841461127225999}},"curvature":5.407362253384503},{"time":7.3368152816211785,"velocity":0.5847134004545045,"acceleration":-1.909268343064559,"pose":{"translation":{"x":5.652837140182536,"y":-4.951993573710473},"rotation":{"radians":-1.79349304281632}},"curvature":5.887059520979176},{"time":7.351236640696314,"velocity":0.5571791561083812,"acceleration":-1.4594671757952518,"pose":{"translation":{"x":5.651218795229721,"y":-4.960066786991287},"rotation":{"radians":-1.7431630871890897}},"curvature":6.330503910917793},{"time":7.3658705309478085,"velocity":0.5358214736321345,"acceleration":-0.9835096934742872,"pose":{"translation":{"x":5.650051159337019,"y":-4.967978515192694},"rotation":{"radians":-1.6909786461077827}},"curvature":6.705859650499326},{"time":7.380600810165643,"velocity":0.5213341012338114,"acceleration":-0.4664822988598888,"pose":{"translation":{"x":5.649322798737876,"y":-4.9757304710161625},"rotation":{"radians":-1.6376263776857742}},"curvature":6.977977660835564},{"time":7.3952787027424876,"velocity":0.5144871241621465,"acceleration":0.12164654678623932,"pose":{"translation":{"x":5.649018146737125,"y":-4.983326200267652},"rotation":{"radians":-1.5839693528694552}},"curvature":7.111918230185031},{"time":7.409725980774572,"velocity":0.5162445856452103,"acceleration":0.052672211309998954,"pose":{"translation":{"x":5.649117316225329,"y":-4.9907711736059195},"rotation":{"radians":-1.531026634408773}},"curvature":7.077199829846817},{"time":7.423889982741932,"velocity":0.5169906349498303,"acceleration":-2.699999999999995,"pose":{"translation":{"x":5.649595912193108,"y":-4.998072878290817},"rotation":{"radians":-1.4799363085462358}},"curvature":6.851731928515863},{"time":7.438396838317813,"velocity":0.47782212489495235,"acceleration":-2.700000000000001,"pose":{"translation":{"x":5.650424844245491,"y":-5.005240909931599},"rotation":{"radians":-1.4319073873778112}},"curvature":6.424251674858325},{"time":7.471192082814179,"velocity":0.389274964754765,"acceleration":-2.7,"pose":{"translation":{"x":5.6529927531822,"y":-5.019225428754662},"rotation":{"radians":-1.349929704456554}},"curvature":4.970754709570831},{"time":7.615367995686314,"velocity":0.0,"acceleration":-2.7,"pose":{"translation":{"x":5.660487567245657,"y":-5.0462680925649535},"rotation":{"radians":-1.2742505177252024}},"curvature":-2.1831735954903813E-13}] \ No newline at end of file diff --git a/src/main/driverStation/GOAT DRIVERSTATION.json b/src/main/driverStation/GOAT DRIVERSTATION.json index a191e6e..e61f688 100644 --- a/src/main/driverStation/GOAT DRIVERSTATION.json +++ b/src/main/driverStation/GOAT DRIVERSTATION.json @@ -335,6 +335,155 @@ "Colors/Color when true": "#7CFC00FF", "Colors/Color when false": "#8B0000FF" } + }, + "8,3": { + "size": [ + 1, + 1 + ], + "content": { + "_type": "Text View", + "_source0": "network_table:///SmartDashboard/Distance to Target", + "_title": "Distance to Target" + } + }, + "9,3": { + "size": [ + 1, + 1 + ], + "content": { + "_type": "Boolean Box", + "_source0": "network_table:///SmartDashboard/!Ball in Intake!", + "_title": "!Ball in Intake!", + "Colors/Color when true": "#7CFC00FF", + "Colors/Color when false": "#8B0000FF" + } + }, + "0,4": { + "size": [ + 1, + 1 + ], + "content": { + "_type": "Boolean Box", + "_source0": "network_table:///SmartDashboard/!Ball Storage!", + "_title": "!Ball Storage!", + "Colors/Color when true": "#7CFC00FF", + "Colors/Color when false": "#8B0000FF" + } + }, + "1,4": { + "size": [ + 1, + 1 + ], + "content": { + "_type": "Boolean Box", + "_source0": "network_table:///SmartDashboard/!Ball Shooter!", + "_title": "!Ball Shooter!", + "Colors/Color when true": "#7CFC00FF", + "Colors/Color when false": "#8B0000FF" + } + }, + "2,4": { + "size": [ + 1, + 1 + ], + "content": { + "_type": "Text View", + "_source0": "network_table:///SmartDashboard/Center Displacement", + "_title": "Center Displacement" + } + }, + "3,4": { + "size": [ + 1, + 1 + ], + "content": { + "_type": "Text View", + "_source0": "network_table:///SmartDashboard/Is Auto Start?", + "_title": "Is Auto Start?" + } + }, + "4,4": { + "size": [ + 1, + 1 + ], + "content": { + "_type": "Text View", + "_source0": "network_table:///SmartDashboard/trajectoryPath Initial", + "_title": "trajectoryPath Initial" + } + }, + "5,4": { + "size": [ + 1, + 1 + ], + "content": { + "_type": "Text View", + "_source0": "network_table:///SmartDashboard/Left Motor Pos Inches", + "_title": "Left Motor Pos Inches" + } + }, + "6,4": { + "size": [ + 1, + 1 + ], + "content": { + "_type": "Text View", + "_source0": "network_table:///SmartDashboard/Right Motor Pos Inches", + "_title": "Right Motor Pos Inches" + } + }, + "7,4": { + "size": [ + 1, + 1 + ], + "content": { + "_type": "Text View", + "_source0": "network_table:///SmartDashboard/Left Motor Pos Meters", + "_title": "Left Motor Pos Meters" + } + }, + "8,4": { + "size": [ + 1, + 1 + ], + "content": { + "_type": "Text View", + "_source0": "network_table:///SmartDashboard/Right Motor Pos Meters", + "_title": "Right Motor Pos Meters" + } + }, + "9,4": { + "size": [ + 1, + 1 + ], + "content": { + "_type": "Text View", + "_source0": "network_table:///SmartDashboard/Odometry Values Meters", + "_title": "Odometry Values Meters" + } + }, + "0,5": { + "size": [ + 1, + 1 + ], + "content": { + "_type": "Text View", + "_source0": "network_table:///SmartDashboard/Trajectory Total Time", + "_title": "Trajectory Total Time" + } } } } @@ -645,8 +794,8 @@ "Controls/Rotation": "NONE", "compression": -1.0, "fps": -1, - "imageWidth": -1, - "imageHeight": -1 + "imageWidth": 0, + "imageHeight": 0 } }, "8,4": { @@ -857,9 +1006,9 @@ } ], "windowGeometry": { - "x": 40.0, - "y": 142.39999389648438, + "x": -6.400000095367432, + "y": 1.600000023841858, "width": 1547.199951171875, - "height": 1481.5999755859375 + "height": 828.7999877929688 } } \ No newline at end of file diff --git a/src/main/java/frc4388/robot/Constants.java b/src/main/java/frc4388/robot/Constants.java index 9956c75..1995efa 100644 --- a/src/main/java/frc4388/robot/Constants.java +++ b/src/main/java/frc4388/robot/Constants.java @@ -22,6 +22,8 @@ import frc4388.utility.LEDPatterns; * constants are needed, to reduce verbosity. */ public final class Constants { + public static final int SELECTED_AUTO = 0; + public static final class DriveConstants { /* Drive Train IDs */ public static final int DRIVE_LEFT_FRONT_CAN_ID = 2; @@ -47,7 +49,7 @@ public final class Constants { public static final double COS_MULTIPLIER_HIGH = 0.8; /* Drive Train Characteristics */ - public static final double MOTOR_ROT_PER_WHEEL_ROT_HIGH = 5.13; + public static final double MOTOR_ROT_PER_WHEEL_ROT_HIGH = 7.29; public static final double MOTOR_ROT_PER_WHEEL_ROT_LOW = 15; public static final double WHEEL_DIAMETER_INCHES = 6; public static final double TICKS_PER_GYRO_REV = 8192; @@ -68,9 +70,11 @@ public final class Constants { public static final int DRIVE_CRUISE_VELOCITY_HIGH = 20000; public static final int DRIVE_ACCELERATION_HIGH = 7000; + public static final Gains DRIVE_VELOCITY_GAINS_BACK = new Gains(0.0, 0.0, 0.0, 0.05, 0, 1.0); + /* Trajectory Constants */ - public static final double MAX_SPEED_METERS_PER_SECOND = 3; - public static final double MAX_ACCELERATION_METERS_PER_SECOND_SQUARED = 3; + public static final double MAX_SPEED_METERS_PER_SECOND = 1.0; + public static final double MAX_ACCELERATION_METERS_PER_SECOND_SQUARED = 1.0; public static final double TRACK_WIDTH_METERS = 0.648; public static final DifferentialDriveKinematics kDriveKinematics = new DifferentialDriveKinematics(TRACK_WIDTH_METERS); @@ -167,7 +171,7 @@ public final class Constants { public static final int STORAGE_CAN_ID = 11; public static final double STORAGE_PARTIAL_BALL = 2; public static final double STORAGE_FULL_BALL = 7; - public static final double STORAGE_SPEED = 1.0; + public static final double STORAGE_SPEED = 0.5; public static final double STORAGE_TIMEOUT = 3000; /* Storage Characteristics */ @@ -220,5 +224,6 @@ public final class Constants { public static final class OIConstants { public static final int XBOX_DRIVER_ID = 0; public static final int XBOX_OPERATOR_ID = 1; + public static final int BUTTON_FOX_ID = 2; } } diff --git a/src/main/java/frc4388/robot/Robot.java b/src/main/java/frc4388/robot/Robot.java index 0ef65c9..c8ac8f8 100644 --- a/src/main/java/frc4388/robot/Robot.java +++ b/src/main/java/frc4388/robot/Robot.java @@ -10,6 +10,7 @@ package frc4388.robot; import com.ctre.phoenix.motorcontrol.NeutralMode; import edu.wpi.first.wpilibj.TimedRobot; +import edu.wpi.first.wpilibj.geometry.Pose2d; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.CommandScheduler; @@ -35,7 +36,7 @@ public class Robot extends TimedRobot { // Instantiate our RobotContainer. This will perform all our button bindings, and put our // autonomous chooser on the dashboard. m_robotContainer = new RobotContainer(); - SmartDashboard.putString("Auto?", "NAH"); + SmartDashboard.putString("Is Auto Start?", "NAH"); } /** @@ -63,6 +64,9 @@ public class Robot extends TimedRobot { @Override public void disabledInit() { m_robotContainer.setDriveNeutralMode(NeutralMode.Coast); + /* Builds Autos */ + m_robotContainer.buildAutos(); + SmartDashboard.putString("Is Auto Start?", "NAH"); } @Override @@ -74,11 +78,15 @@ public class Robot extends TimedRobot { */ @Override public void autonomousInit() { + m_autonomousCommand = m_robotContainer.getAutonomousCommand(); m_robotContainer.setDriveNeutralMode(NeutralMode.Brake); - m_robotContainer.setDriveGearState(false); - m_robotContainer.resetOdometry(); + m_robotContainer.setDriveGearState(true); + m_robotContainer.resetOdometry(new Pose2d()); + + //m_robotContainer.resetGyroYawRobotContainer(0); + //m_robotContainer.configDriveTrainSensors(FeedbackDevice.IntegratedSensor); /* @@ -91,7 +99,7 @@ public class Robot extends TimedRobot { // schedule the autonomous command (example) if (m_autonomousCommand != null) { m_autonomousCommand.schedule(); - System.err.println("Auto Start"); + SmartDashboard.putString("Is Auto Start?", "YEA"); } } @@ -105,7 +113,7 @@ public class Robot extends TimedRobot { @Override public void teleopInit() { m_robotContainer.setDriveNeutralMode(NeutralMode.Brake); - m_robotContainer.setDriveGearState(false); + m_robotContainer.setDriveGearState(true); m_robotContainer.shiftClimberRachet(false); //m_robotContainer.configDriveTrainSensors(FeedbackDevice.IntegratedSensor); diff --git a/src/main/java/frc4388/robot/RobotContainer.java b/src/main/java/frc4388/robot/RobotContainer.java index a869cc1..940694c 100644 --- a/src/main/java/frc4388/robot/RobotContainer.java +++ b/src/main/java/frc4388/robot/RobotContainer.java @@ -7,26 +7,39 @@ package frc4388.robot; +import java.nio.file.Path; import java.util.List; import com.ctre.phoenix.motorcontrol.NeutralMode; +import edu.wpi.first.wpilibj.DriverStation; +import edu.wpi.first.wpilibj.Filesystem; import edu.wpi.first.wpilibj.GenericHID; import edu.wpi.first.wpilibj.Joystick; import edu.wpi.first.wpilibj.controller.RamseteController; import edu.wpi.first.wpilibj.geometry.Pose2d; import edu.wpi.first.wpilibj.geometry.Rotation2d; +import edu.wpi.first.wpilibj.geometry.Transform2d; import edu.wpi.first.wpilibj.geometry.Translation2d; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj.trajectory.Trajectory; import edu.wpi.first.wpilibj.trajectory.TrajectoryConfig; import edu.wpi.first.wpilibj.trajectory.TrajectoryGenerator; +import edu.wpi.first.wpilibj.trajectory.TrajectoryUtil; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.InstantCommand; import edu.wpi.first.wpilibj2.command.RamseteCommand; import edu.wpi.first.wpilibj2.command.RunCommand; +import edu.wpi.first.wpilibj2.command.SequentialCommandGroup; import edu.wpi.first.wpilibj2.command.button.JoystickButton; import frc4388.robot.Constants.DriveConstants; import frc4388.robot.Constants.OIConstants; +import frc4388.robot.commands.auto.DriveOffLineBackward; +import frc4388.robot.commands.auto.DriveOffLineForward; +import frc4388.robot.commands.auto.EightBallAutoMiddle; +import frc4388.robot.commands.auto.FiveBallAutoMiddle; +import frc4388.robot.commands.auto.SixBallAutoMiddle; +import frc4388.robot.commands.auto.TenBallAutoMiddle; import frc4388.robot.commands.InterruptSubystem; import frc4388.robot.commands.auto.AutoPath1FromCenter; import frc4388.robot.commands.auto.Wait; @@ -35,15 +48,23 @@ import frc4388.robot.commands.climber.RunClimberWithTriggers; import frc4388.robot.commands.climber.RunLevelerWithJoystick; import frc4388.robot.commands.drive.DriveStraightToPositionMM; import frc4388.robot.commands.drive.DriveWithJoystick; +import frc4388.robot.commands.drive.PlaySongDrive; +import frc4388.robot.commands.drive.SkipSong; import frc4388.robot.commands.drive.TurnDegrees; import frc4388.robot.commands.intake.RunIntakeWithTriggers; import frc4388.robot.commands.shooter.CalibrateShooter; +import frc4388.robot.commands.shooter.TrackTarget; +import frc4388.robot.commands.shooter.TrimShooter; +import frc4388.robot.commands.shooter.RunHoodWithJoystick; import frc4388.robot.commands.shooter.ShootPrepGroup; +import frc4388.robot.commands.shooter.ShooterGoalPosition; +import frc4388.robot.commands.shooter.ShooterManual; +import frc4388.robot.commands.shooter.ShooterTrenchPosition; +import frc4388.robot.commands.shooter.ShooterVelocityControlPID; import frc4388.robot.commands.shooter.TrackTarget; import frc4388.robot.commands.shooter.TrimShooter; import frc4388.robot.commands.storage.ManageStorage; import frc4388.robot.commands.storage.StoragePrep; -import frc4388.robot.commands.storage.ManageStorage.StorageMode; import frc4388.robot.subsystems.Camera; import frc4388.robot.subsystems.Climber; import frc4388.robot.subsystems.Drive; @@ -56,9 +77,11 @@ import frc4388.robot.subsystems.Shooter; import frc4388.robot.subsystems.ShooterAim; import frc4388.robot.subsystems.ShooterHood; import frc4388.robot.subsystems.Storage; +import frc4388.robot.subsystems.Storage.StorageMode; +import frc4388.utility.controller.ButtonFox; import frc4388.utility.controller.IHandController; +import frc4388.utility.controller.JoystickManualButton; import frc4388.utility.controller.XboxController; -import frc4388.utility.controller.XboxTriggerButton; /** * This class is where the bulk of the robot should be declared. Since @@ -86,9 +109,27 @@ public class RobotContainer { private final LimeLight m_robotLime = new LimeLight(); /* Controllers */ - private final XboxController m_driverXbox = new XboxController(OIConstants.XBOX_DRIVER_ID); - private final XboxController m_operatorXbox = new XboxController(OIConstants.XBOX_OPERATOR_ID); + private static XboxController m_driverXbox = new XboxController(OIConstants.XBOX_DRIVER_ID); + private static XboxController m_operatorXbox = new XboxController(OIConstants.XBOX_OPERATOR_ID); + private static XboxController m_buttonFox = new XboxController(OIConstants. BUTTON_FOX_ID); + private static XboxController m_manualXbox = new XboxController(3); + /* Autos */ + double m_totalTimeAuto; + + SixBallAutoMiddle m_sixBallAutoMiddle; + + EightBallAutoMiddle m_eightBallAutoMiddle; + + DriveOffLineForward m_driveOffLineForward; + + DriveOffLineBackward m_driveOffLineBackward; + + FiveBallAutoMiddle m_fiveBallAutoMiddle; + + TenBallAutoMiddle m_tenBallAutoMiddle; + + public static boolean m_isShooterManual = false; /** * The container for the robot. Contains subsystems, OI devices, and commands. @@ -96,7 +137,7 @@ public class RobotContainer { public RobotContainer() { /* Passing Drive and Pneumatics Subsystems */ m_robotPneumatics.passRequiredSubsystem(m_robotDrive); - m_robotDrive.passRequiredSubsystem(m_robotPneumatics); + m_robotDrive.passRequiredSubsystem(m_robotPneumatics, m_robotShooter); m_robotShooter.passRequiredSubsystem(m_robotShooterHood, m_robotShooterAim); m_robotShooterHood.passRequiredSubsystem(m_robotShooter); @@ -106,6 +147,9 @@ public class RobotContainer { configureButtonBindings(); + /* Builds Autos */ + //buildAutos(); + /* Default Commands */ // drives the robot with a two-axis input from the driver controller @@ -116,6 +160,8 @@ public class RobotContainer { m_robotIntake.setDefaultCommand(new RunIntakeWithTriggers(m_robotIntake, getOperatorController())); // runs the turret with joystick m_robotShooterAim.setDefaultCommand(new RunCommand(() -> m_robotShooterAim.runShooterWithInput(-m_operatorXbox.getLeftXAxis()), m_robotShooterAim)); + // runs the hood with joystick + m_robotShooterHood.setDefaultCommand(new RunHoodWithJoystick(m_robotShooterHood, getOperatorController())); // moves the drum not m_robotShooter.setDefaultCommand(new RunCommand(() -> m_robotShooter.runDrumShooterVelocityPID(1500), m_robotShooter)); // drives climber with input from triggers on the opperator controller @@ -126,7 +172,7 @@ public class RobotContainer { m_robotLED.setDefaultCommand(new RunCommand(() -> m_robotLED.updateLED(), m_robotLED)); // runs the storage not //m_robotStorage.setDefaultCommand(new RunCommand(() -> m_robotStorage.runStorage(0), m_robotStorage)); - m_robotStorage.setDefaultCommand(new ManageStorage(m_robotStorage, StorageMode.IDLE)); + m_robotStorage.setDefaultCommand(new ManageStorage(m_robotStorage)); //m_robotLime.setDefaultCommand(new RunCommand(() -> m_robotLime.limeOff(), m_robotLime)); } @@ -139,8 +185,8 @@ public class RobotContainer { private void configureButtonBindings() { /* Test Buttons */ // A driver test button - new JoystickButton(getDriverJoystick(), XboxController.A_BUTTON) - .whenPressed(new DriveStraightToPositionMM(m_robotDrive, m_robotPneumatics, 24.0)); + /*new JoystickButton(getDriverJoystick(), XboxController.A_BUTTON) + .whileHeld(new InstantCommand(() -> m_robotDrive.tankDriveVelocity(1, -1), m_robotDrive));*/ // B driver test button new JoystickButton(getDriverJoystick(), XboxController.B_BUTTON) @@ -168,6 +214,9 @@ public class RobotContainer { new JoystickButton(getDriverJoystick(), XboxController.BACK_BUTTON) .whileHeld(new DisengageRachet(m_robotClimber)); + + + /* Operator Buttons */ // shoots until released new JoystickButton(getOperatorJoystick(), XboxController.RIGHT_BUMPER_BUTTON) @@ -218,22 +267,91 @@ public class RobotContainer { new JoystickButton(getOperatorJoystick(), XboxController.START_BUTTON) .whileHeld(new CalibrateShooter(m_robotShooter, m_robotShooterAim, m_robotShooterHood)); - //Prepares storage for intaking - //new XboxTriggerButton(m_operatorXbox, XboxTriggerButton.LEFT_TRIGGER) - //.whileHeld(new RunCommand(() -> m_robotStorage.runStorage(0.8))) - //.whenReleased(new RunCommand(() -> m_robotStorage.runStorage(0.0))); - //.whileHeld(new StorageIntake(m_robotIntake, m_robotStorage)); - - //Runs storage to outtake - //new XboxTriggerButton(m_operatorXbox, XboxTriggerButton.RIGHT_TRIGGER) - //.whileHeld(new RunCommand(() -> m_robotStorage.runStorage(-0.8))) - //.whenReleased(new RunCommand(() -> m_robotStorage.runStorage(0.0))); //Run drum - new JoystickButton(getOperatorJoystick(), XboxController.B_BUTTON) + new JoystickManualButton(getOperatorJoystick(), XboxController.B_BUTTON, false) .whileHeld(new ShootPrepGroup(m_robotShooter, m_robotShooterAim, m_robotShooterHood, m_robotStorage), false) //.whenReleased(new ManageStorage(m_robotStorage, StorageMode.RESET)) .whenReleased(new InstantCommand(() -> m_robotLime.limeOff())); + + //Run drum manual + new JoystickManualButton(getOperatorJoystick(), XboxController.B_BUTTON, true) + .whileHeld(new RunCommand(() -> m_robotShooter.runDrumShooterVelocityPID(10000))) + .whenReleased(new RunCommand(() -> m_robotShooter.runDrumShooterVelocityPID(0))); + + + + + /* Button Fox */ + // Storage Manual + new JoystickButton(getButtonFox(), ButtonFox.LEFT_SWITCH) + .whenPressed(new InstantCommand(() -> m_robotStorage.changeStorageMode(StorageMode.MANUAL))) + .whenReleased(new InstantCommand(() -> m_robotStorage.changeStorageMode(StorageMode.RESET))); + + // Meg + new JoystickButton(getButtonFox(), ButtonFox.MIDDLE_SWITCH) + .whileHeld(new PlaySongDrive(m_robotDrive, m_robotShooter)) + .whenReleased(new InterruptSubystem(m_robotDrive)); + + // Shooter Manual + new JoystickButton(getButtonFox(), ButtonFox.RIGHT_SWITCH) + .whileHeld(new ShooterManual(true)) + .whenReleased(new ShooterManual(false)); + + // Goal Shooter Position + new JoystickButton(getButtonFox(), ButtonFox.RIGHT_BUTTON) + .whileHeld(new PlaySongDrive(m_robotDrive, m_robotShooter)) + .whenReleased(new InterruptSubystem(m_robotDrive)); + + // Trench Shooter Position + new JoystickButton(getButtonFox(), ButtonFox.LEFT_BUTTON) + .whileHeld(new ShooterTrenchPosition(m_robotShooter, m_robotShooterHood, m_robotShooterAim)) + .whenReleased(new InterruptSubystem(m_robotShooter)) + .whenReleased(new InterruptSubystem(m_robotShooterHood)) + .whenReleased(new InterruptSubystem(m_robotShooterAim)); + //.whenPressed(new SkipSong(m_robotDrive, 1)); + } + + public void buildAutos() { + //resetOdometry(new Pose2d(0, 0, new Rotation2d(180))); + + String[] sixBallAutoMiddlePaths = new String[]{ + "SixBallMidComplete" + }; + + m_sixBallAutoMiddle = new SixBallAutoMiddle(m_robotDrive, buildPaths(sixBallAutoMiddlePaths)); + + String[] eightBallAutoMiddlePaths = new String[]{ + "EightBallMidComplete" + }; + + m_eightBallAutoMiddle = new EightBallAutoMiddle(m_robotDrive, buildPaths(eightBallAutoMiddlePaths)); + + String[] driveOffLineForwardPaths = new String[]{ + "DriveOffLineForward" + }; + + m_driveOffLineForward = new DriveOffLineForward(m_robotDrive, buildPaths(driveOffLineForwardPaths)); + + String[] driveOffLineBackwardPaths = new String[]{ + "DriveOffLineBackward" + }; + + m_driveOffLineBackward = new DriveOffLineBackward(m_robotDrive, buildPaths(driveOffLineBackwardPaths)); + + String[] fiveBallAutoMiddlePaths = new String[]{ + "FiveBallMidComplete" + }; + + m_fiveBallAutoMiddle = new FiveBallAutoMiddle(m_robotDrive, buildPaths(fiveBallAutoMiddlePaths)); + + String[] tenBallAutoMiddlePaths = new String[]{ + "SixBallMidComplete", + "TenBallMidComplete" + }; + + m_tenBallAutoMiddle = new TenBallAutoMiddle(m_robotShooterHood, m_robotStorage, m_robotIntake, m_robotShooter, + m_robotShooterAim, m_robotDrive,buildPaths(tenBallAutoMiddlePaths)); } /** @@ -242,15 +360,27 @@ public class RobotContainer { * @return the command to run in autonomous */ public Command getAutonomousCommand() { - // Create config for trajectory - TrajectoryConfig config = getTrajectoryConfig(); - Trajectory trajectory = getTrajectory(config); - RamseteCommand ramseteCommand = getRamseteCommand(trajectory); - // Run path following command, then stop at the end. - //return ramseteCommand.andThen(() -> m_robotDrive.tankDriveVelocity(0, 0)); - return new AutoPath1FromCenter(m_robotDrive, m_robotPneumatics); - //return new AutoPath2FromRight(m_robotDrive, m_robotPneumatics); + // Create custom trajectories + //TrajectoryConfig config = getTrajectoryConfig(); + //Trajectory trajectory = getTrajectory(config); + //RamseteCommand ramseteCommand = getRamseteCommand(trajectory); + // Run path following command, then stop at the end. + try { + SmartDashboard.putNumber("Trajectory Total Time", m_totalTimeAuto); + + //return m_sixBallAutoMiddle.andThen(() -> m_robotDrive.tankDriveVelocity(0, 0)); + //return m_eightBallAutoMiddle.andThen(() -> m_robotDrive.tankDriveVelocity(0, 0)); + //return m_driveOffLineForward.andThen(() -> m_robotDrive.tankDriveVelocity(0, 0)); + //return m_driveOffLinfeBackward.andThen(() -> m_robotDrive.tankDriveVelocity(0, 0)); + //return m_fiveBallAutoMiddle.andThen(() -> m_robotDrive.tankDriveVelocity(0, 0)); + return m_tenBallAutoMiddle.andThen(()-> m_robotDrive.tankDriveVelocity(0, 0)); + + } catch (Exception e) { + System.err.println("ERROR"); + } + + return new InstantCommand(); } TrajectoryConfig getTrajectoryConfig() { return new TrajectoryConfig( @@ -263,22 +393,19 @@ public class RobotContainer { Trajectory getTrajectory(TrajectoryConfig config) { Trajectory exampleTrajectory = TrajectoryGenerator.generateTrajectory( // Start at the origin facing the +X direction - new Pose2d(0, 0, new Rotation2d(0)), + new Pose2d(2.9, -2.4, new Rotation2d(0)), // Pass through these two interior waypoints, making an 's' curve path List.of( - new Translation2d(10, 0) + new Translation2d(4.1, -1.7) ), // End 3 meters straight ahead of where we started, facing forward - new Pose2d(20, 20, new Rotation2d(0)), + new Pose2d(5.1, -0.7, new Rotation2d(0)), // Pass config config); - // 10 = 20, 20 = 35, 30 = 53.5 - // (0,10) = (8,22) - return exampleTrajectory; } - RamseteCommand getRamseteCommand(Trajectory trajectory) { + public RamseteCommand getRamseteCommand(Trajectory trajectory) { RamseteCommand ramseteCommand = new RamseteCommand( trajectory, m_robotDrive::getPose, @@ -290,6 +417,48 @@ public class RobotContainer { return ramseteCommand; } + public RamseteCommand[] buildPaths(String[] paths) { + RamseteCommand[] ramseteCommands = new RamseteCommand[paths.length]; + double[] times = new double[paths.length]; + Trajectory initialTrajectory; + m_totalTimeAuto = 0; + + try { + if (true) { + String path = paths[0]; + String trajectoryJSON = "paths/" + path + ".wpilib.json"; + Path trajectoryPath = Filesystem.getDeployDirectory().toPath().resolve(trajectoryJSON); + + SmartDashboard.putString("trajectoryPath Initial", trajectoryPath.toString()); + + Trajectory trajectory = TrajectoryUtil.fromPathweaverJson(trajectoryPath); + initialTrajectory = trajectory; + + RamseteCommand ramseteCommand = getRamseteCommand(trajectory.relativeTo(initialTrajectory.getInitialPose())); + ramseteCommands[0] = ramseteCommand; + times[0] = initialTrajectory.getTotalTimeSeconds(); + } + + for(int i = 1; i < paths.length; i++) { + String path = paths[i]; + String trajectoryJSON = "paths/" + path + ".wpilib.json"; + Path trajectoryPath = Filesystem.getDeployDirectory().toPath().resolve(trajectoryJSON); + Trajectory trajectory = TrajectoryUtil.fromPathweaverJson(trajectoryPath); + RamseteCommand ramseteCommand = getRamseteCommand(trajectory.relativeTo(initialTrajectory.getInitialPose())); + ramseteCommands[i] = ramseteCommand; + times[i] = trajectory.getTotalTimeSeconds(); + } + } catch (Exception e) { + DriverStation.reportError("Unable to open trajectory", e.getStackTrace()); + } + + for (int i = 0; i < times.length; i++) { + m_totalTimeAuto += times[i]; + } + + return ramseteCommands; + } + /** * Sets Motors to a NeutralMode. * @param mode NeutralMode to set motors to @@ -316,9 +485,12 @@ public class RobotContainer { /** * */ - public void resetOdometry() { - m_robotDrive.resetGyroAngles(); - m_robotDrive.setOdometry(new Pose2d()); + public void resetOdometry(Pose2d pose) { + m_robotDrive.setOdometry(pose); + } + + public void resetGyroYawRobotContainer(double angle) { + m_robotDrive.resetGyroYaw(angle); } /** @@ -338,6 +510,12 @@ public class RobotContainer { return m_operatorXbox; } + public IHandController getButtonFoxObject() + { + return m_buttonFox; + } + + /** * Gets the {@link edu.wpi.first.wpilibj.GenericHID#GenericHID(int) Generic HID} for the Operator Xbox Controller. * Generic HIDs/Joysticks can be used to set up JoystickButtons. @@ -357,4 +535,15 @@ public class RobotContainer { { return m_driverXbox.getJoyStick(); } + + /** + * Gets the {@link edu.wpi.first.wpilibj.GenericHID#GenericHID(int) Generic HID} for the Button Fox. + * Generic HIDs/Joysticks can be used to set up JoystickButtons. + * @return The IHandController interface for the Button Fox. + */ + public Joystick getButtonFox() + { + return m_buttonFox.getJoyStick(); + } + } diff --git a/src/main/java/frc4388/robot/commands/auto/AutoPath1FromCenter.java b/src/main/java/frc4388/robot/commands/auto/AutoPath1FromCenter.java index b749d57..b7871b1 100644 --- a/src/main/java/frc4388/robot/commands/auto/AutoPath1FromCenter.java +++ b/src/main/java/frc4388/robot/commands/auto/AutoPath1FromCenter.java @@ -8,7 +8,7 @@ package frc4388.robot.commands.auto; import edu.wpi.first.wpilibj2.command.SequentialCommandGroup; -import frc4388.robot.commands.drive.GotoCoordinates; +import frc4388.robot.commands.drive.GotoCoordinatesRobotRelative; import frc4388.robot.subsystems.Drive; import frc4388.robot.subsystems.Pneumatics; @@ -30,15 +30,15 @@ public class AutoPath1FromCenter extends SequentialCommandGroup { addCommands( new Wait(m_drive, 0, 1), //shoot pre-loaded 3 balls - new GotoCoordinates(m_drive, m_pneumatics, 75, 44, -90), + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 75, 44, -90), //Start Intake Ball 1 - new GotoCoordinates(m_drive, m_pneumatics, 0, 12), - new GotoCoordinates(m_drive, m_pneumatics, 0, 28), + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 0, 12), + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 0, 28), //Start Intake Ball 2 - new GotoCoordinates(m_drive, m_pneumatics, 0, 8), - new GotoCoordinates(m_drive, m_pneumatics, 0, 28), + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 0, 8), + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 0, 28), //Start Intake Ball 3 - new GotoCoordinates(m_drive, m_pneumatics, 0, 8), + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 0, 8), new Wait(m_drive, 0, 2) //Shoot 3 Balls ); diff --git a/src/main/java/frc4388/robot/commands/auto/AutoPath2FromRight.java b/src/main/java/frc4388/robot/commands/auto/AutoPath2FromRight.java index 19d0b7e..5da03fa 100644 --- a/src/main/java/frc4388/robot/commands/auto/AutoPath2FromRight.java +++ b/src/main/java/frc4388/robot/commands/auto/AutoPath2FromRight.java @@ -8,7 +8,7 @@ package frc4388.robot.commands.auto; import edu.wpi.first.wpilibj2.command.SequentialCommandGroup; -import frc4388.robot.commands.drive.GotoCoordinates; +import frc4388.robot.commands.drive.GotoCoordinatesRobotRelative; import frc4388.robot.subsystems.Drive; import frc4388.robot.subsystems.Pneumatics; @@ -29,18 +29,25 @@ public class AutoPath2FromRight extends SequentialCommandGroup { m_pneumatics = subsystem2; addCommands( new Wait(m_drive, 0, 1), - new GotoCoordinates(m_drive, m_pneumatics, 0, 77), + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 0, 77), //Start Intake Ball 1 - new GotoCoordinates(m_drive, m_pneumatics, 0, 8), - new GotoCoordinates(m_drive, m_pneumatics, 0, 28), + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 0, 8), + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 0, 28), //Start Intake Ball 2 - new GotoCoordinates(m_drive, m_pneumatics, 0, 8), + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 0, 8), //Shoot 5 Balls - new GotoCoordinates(m_drive, m_pneumatics, 0, 28), - //Start Intake Ball 1 (second round) - new GotoCoordinates(m_drive, m_pneumatics, 0, 8), - //Start Moving to 4th Ball - new GotoCoordinates(m_drive, m_pneumatics, 60, -50), + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 0, 28), + //Start Intake Ball 6 (Ball 1 second round) + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 0, 8), + //Move to 7th Ball + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 86.7, -64.11, -180), + //Move to 8th Ball + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, -6.34, 15.31, 90), + //Move to 9th Ball + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, 7.11, 24.41, 0), + //Move to 10th Ball + new GotoCoordinatesRobotRelative(m_drive, m_pneumatics, -6.34, 13.30), + //Shoot 5 more Balls (Total 10 Ball Autonomous Path) new Wait(m_drive, 0, 2) ); } diff --git a/src/main/java/frc4388/robot/commands/auto/DriveOffLineBackward.java b/src/main/java/frc4388/robot/commands/auto/DriveOffLineBackward.java new file mode 100644 index 0000000..fed1212 --- /dev/null +++ b/src/main/java/frc4388/robot/commands/auto/DriveOffLineBackward.java @@ -0,0 +1,31 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.auto; + +import edu.wpi.first.wpilibj2.command.RamseteCommand; +import edu.wpi.first.wpilibj2.command.RunCommand; +import edu.wpi.first.wpilibj2.command.SequentialCommandGroup; +import frc4388.robot.commands.drive.TurnDegrees; +import frc4388.robot.subsystems.Drive; + +// NOTE: Consider using this command inline, rather than writing a subclass. For more +// information, see: +// https://docs.wpilib.org/en/latest/docs/software/commandbased/convenience-features.html +public class DriveOffLineBackward extends SequentialCommandGroup { + /** + * Creates a new DriveOffLineBackward. + */ + public DriveOffLineBackward(Drive drive, RamseteCommand[] paths) { + // Add your commands in the super() call, e.g. + // super(new FooCommand(), new BarCommand()); + + addCommands( + new TankDriveVelocity(drive, -1, -1, 2) + ); + } +} diff --git a/src/main/java/frc4388/robot/commands/auto/DriveOffLineForward.java b/src/main/java/frc4388/robot/commands/auto/DriveOffLineForward.java new file mode 100644 index 0000000..a5fb618 --- /dev/null +++ b/src/main/java/frc4388/robot/commands/auto/DriveOffLineForward.java @@ -0,0 +1,29 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.auto; + +import edu.wpi.first.wpilibj2.command.RamseteCommand; +import edu.wpi.first.wpilibj2.command.SequentialCommandGroup; +import frc4388.robot.subsystems.Drive; + +// NOTE: Consider using this command inline, rather than writing a subclass. For more +// information, see: +// https://docs.wpilib.org/en/latest/docs/software/commandbased/convenience-features.html +public class DriveOffLineForward extends SequentialCommandGroup { + /** + * Creates a new DriveOffLineForward. + */ + public DriveOffLineForward(Drive drive, RamseteCommand[] paths) { + // Add your commands in the super() call, e.g. + // super(new FooCommand(), new BarCommand()); + + addCommands( + paths[0] + ); + } +} diff --git a/src/main/java/frc4388/robot/commands/auto/EightBallAutoMiddle.java b/src/main/java/frc4388/robot/commands/auto/EightBallAutoMiddle.java new file mode 100644 index 0000000..1c0f863 --- /dev/null +++ b/src/main/java/frc4388/robot/commands/auto/EightBallAutoMiddle.java @@ -0,0 +1,29 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.auto; + +import edu.wpi.first.wpilibj2.command.RamseteCommand; +import edu.wpi.first.wpilibj2.command.SequentialCommandGroup; +import frc4388.robot.subsystems.Drive; + +// NOTE: Consider using this command inline, rather than writing a subclass. For more +// information, see: +// https://docs.wpilib.org/en/latest/docs/software/commandbased/convenience-features.html +public class EightBallAutoMiddle extends SequentialCommandGroup { + /** + * Creates a new EightBallAutoMiddle. + */ + public EightBallAutoMiddle(Drive drive, RamseteCommand[] paths) { + // Add your commands in the super() call, e.g. + // super(new FooCommand(), new BarCommand()); + + addCommands( + paths[0] + ); + } +} diff --git a/src/main/java/frc4388/robot/commands/auto/FiveBallAutoMiddle.java b/src/main/java/frc4388/robot/commands/auto/FiveBallAutoMiddle.java new file mode 100644 index 0000000..9a655de --- /dev/null +++ b/src/main/java/frc4388/robot/commands/auto/FiveBallAutoMiddle.java @@ -0,0 +1,28 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.auto; + +import edu.wpi.first.wpilibj2.command.RamseteCommand; +import edu.wpi.first.wpilibj2.command.SequentialCommandGroup; +import frc4388.robot.subsystems.Drive; + +// NOTE: Consider using this command inline, rather than writing a subclass. For more +// information, see: +// https://docs.wpilib.org/en/latest/docs/software/commandbased/convenience-features.html +public class FiveBallAutoMiddle extends SequentialCommandGroup { + /** + * Creates a new FiveBallAutoMiddle. + */ + public FiveBallAutoMiddle(Drive drive, RamseteCommand[] paths) { + // Use addRequirements() here to declare subsystem dependencies. + addCommands( + paths[0], + new TankDriveVelocity(drive, -3.2, -0.2, 0.8) + ); + } +} diff --git a/src/main/java/frc4388/robot/commands/auto/SixBallAutoMiddle.java b/src/main/java/frc4388/robot/commands/auto/SixBallAutoMiddle.java new file mode 100644 index 0000000..9900c65 --- /dev/null +++ b/src/main/java/frc4388/robot/commands/auto/SixBallAutoMiddle.java @@ -0,0 +1,35 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.auto; + +import java.nio.file.Path; + +import edu.wpi.first.wpilibj.Filesystem; +import edu.wpi.first.wpilibj.trajectory.Trajectory; +import edu.wpi.first.wpilibj.trajectory.TrajectoryUtil; +import edu.wpi.first.wpilibj2.command.RamseteCommand; +import edu.wpi.first.wpilibj2.command.SequentialCommandGroup; +import frc4388.robot.RobotContainer; +import frc4388.robot.subsystems.Drive; + +// NOTE: Consider using this command inline, rather than writing a subclass. For more +// information, see: +// https://docs.wpilib.org/en/latest/docs/software/commandbased/convenience-features.html +public class SixBallAutoMiddle extends SequentialCommandGroup { + /** + * Creates a new SixBallAutoMiddle. + */ + public SixBallAutoMiddle(Drive drive, RamseteCommand[] paths) { + // Add your commands in the super() call, e.g. + // super(new FooCommand(), new BarCommand()); + + addCommands( + paths[0] + ); + } +} diff --git a/src/main/java/frc4388/robot/commands/auto/TankDriveVelocity.java b/src/main/java/frc4388/robot/commands/auto/TankDriveVelocity.java new file mode 100644 index 0000000..595d37c --- /dev/null +++ b/src/main/java/frc4388/robot/commands/auto/TankDriveVelocity.java @@ -0,0 +1,67 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.auto; + +import edu.wpi.first.wpilibj2.command.CommandBase; +import frc4388.robot.subsystems.Drive; + +public class TankDriveVelocity extends CommandBase { + Drive m_drive; + double m_leftTargetVel; + double m_rightTargetVel; + + double m_targetTime; + double m_firstTimeSec; + double m_currentTimeSec; + double m_diffSec; + + /** + * Creates a new TankDriveVelocity. + */ + public TankDriveVelocity(Drive subsystem, double leftTargetVel, double rightTargetVel, double targetTime) { + // Use addRequirements() here to declare subsystem dependencies. + m_drive = subsystem; + m_leftTargetVel = leftTargetVel; + m_rightTargetVel = rightTargetVel; + m_targetTime = targetTime; + addRequirements(subsystem); + } + + // Called when the command is initially scheduled. + @Override + public void initialize() { + m_firstTimeSec = (System.currentTimeMillis() / 1000); + m_diffSec = 0; + } + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() { + m_currentTimeSec = (System.currentTimeMillis() / 1000); + m_diffSec = m_currentTimeSec - m_firstTimeSec; + + if (m_diffSec < m_targetTime) { + m_drive.tankDriveVelocity(m_leftTargetVel, m_rightTargetVel); + } + + } + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + } + + // Returns true when the command should end. + @Override + public boolean isFinished() { + if (m_diffSec >= m_targetTime) { + return true; + } + return false; + } +} diff --git a/src/main/java/frc4388/robot/commands/auto/TenBallAutoMiddle.java b/src/main/java/frc4388/robot/commands/auto/TenBallAutoMiddle.java new file mode 100644 index 0000000..28ae59c --- /dev/null +++ b/src/main/java/frc4388/robot/commands/auto/TenBallAutoMiddle.java @@ -0,0 +1,59 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.auto; + +import edu.wpi.first.wpilibj2.command.ParallelDeadlineGroup; +import edu.wpi.first.wpilibj2.command.RamseteCommand; +import edu.wpi.first.wpilibj2.command.RunCommand; +import edu.wpi.first.wpilibj2.command.SequentialCommandGroup; +import frc4388.robot.Constants.IntakeConstants; +import frc4388.robot.commands.shooter.CalibrateShooter; +import frc4388.robot.commands.shooter.PrepChecker; +import frc4388.robot.commands.shooter.ShootPrepGroup; +import frc4388.robot.commands.storage.RunStorage; +import frc4388.robot.subsystems.Drive; +import frc4388.robot.subsystems.Intake; +import frc4388.robot.subsystems.Shooter; +import frc4388.robot.subsystems.ShooterAim; +import frc4388.robot.subsystems.ShooterHood; +import frc4388.robot.subsystems.Storage; + +// NOTE: Consider using this command inline, rather than writing a subclass. For more +// information, see: +// https://docs.wpilib.org/en/latest/docs/software/commandbased/convenience-features.html +public class TenBallAutoMiddle extends SequentialCommandGroup { + /** + * Creates a new TenBallAutoMiddle. + */ + public TenBallAutoMiddle(ShooterHood shooterHood, Storage storage, Intake intake, Shooter shooter, ShooterAim shooterAim, Drive drive, RamseteCommand[] paths) { + // Add your commands in the super() call, e.g. + // super(new FooCommand(), new BarCommand()); + addCommands( + new ParallelDeadlineGroup( + new Wait(drive, 0.1, 0), + new CalibrateShooter(shooter, shooterAim, shooterHood) + ), + new ParallelDeadlineGroup( + new Wait(drive, 1, 0), + new RunCommand(() -> shooterAim.runShooterWithInput(-0.75), shooterAim) + ), + new ParallelDeadlineGroup( + new Wait(drive, 4, 0), + new PrepChecker(shooter, shooterAim), + new RunCommand(() -> intake.runExtender(IntakeConstants.EXTENDER_SPEED), intake), + new ShootPrepGroup(shooter, shooterAim, shooterHood, storage) + ), + new ParallelDeadlineGroup( + new ShootPrepGroup(shooter, shooterAim, shooterHood, storage), + new RunStorage(storage) + ) + //paths[0], + //paths[1] + ); + } +} diff --git a/src/main/java/frc4388/robot/commands/drive/DriveWithJoystick.java b/src/main/java/frc4388/robot/commands/drive/DriveWithJoystick.java index 75ab279..b2aba9c 100644 --- a/src/main/java/frc4388/robot/commands/drive/DriveWithJoystick.java +++ b/src/main/java/frc4388/robot/commands/drive/DriveWithJoystick.java @@ -94,7 +94,7 @@ public class DriveWithJoystick extends CommandBase { } */ - m_drive.driveWithInput(moveOutput, steerOutput); + m_drive.driveWithInput(-moveOutput, steerOutput); } // Called once the command ends or is interrupted. diff --git a/src/main/java/frc4388/robot/commands/drive/GotoCoordinatesFieldRelative.java b/src/main/java/frc4388/robot/commands/drive/GotoCoordinatesFieldRelative.java new file mode 100644 index 0000000..6165ffd --- /dev/null +++ b/src/main/java/frc4388/robot/commands/drive/GotoCoordinatesFieldRelative.java @@ -0,0 +1,28 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.drive; + +import edu.wpi.first.wpilibj2.command.SequentialCommandGroup; +import frc4388.robot.subsystems.Drive; +import frc4388.robot.subsystems.Pneumatics; + +// NOTE: Consider using this command inline, rather than writing a subclass. For more +// information, see: +// https://docs.wpilib.org/en/latest/docs/software/commandbased/convenience-features.html +public class GotoCoordinatesFieldRelative extends SequentialCommandGroup { + /** + * Creates a new GotoCoordinatesFieldRelative. + */ + public GotoCoordinatesFieldRelative(Drive susbsytem, Pneumatics subsystem2, double xTarget, double yTarget) { + // Add your commands in the super() call, e.g. + // super(new FooCommand(), new BarCommand()); + addCommands( + + ); + } +} diff --git a/src/main/java/frc4388/robot/commands/drive/GotoCoordinates.java b/src/main/java/frc4388/robot/commands/drive/GotoCoordinatesRobotRelative.java similarity index 89% rename from src/main/java/frc4388/robot/commands/drive/GotoCoordinates.java rename to src/main/java/frc4388/robot/commands/drive/GotoCoordinatesRobotRelative.java index 33de918..5ffd58c 100644 --- a/src/main/java/frc4388/robot/commands/drive/GotoCoordinates.java +++ b/src/main/java/frc4388/robot/commands/drive/GotoCoordinatesRobotRelative.java @@ -15,7 +15,7 @@ import frc4388.robot.subsystems.Pneumatics; // NOTE: Consider using this command inline, rather than writing a subclass. For more // information, see: // https://docs.wpilib.org/en/latest/docs/software/commandbased/convenience-features.html -public class GotoCoordinates extends SequentialCommandGroup { +public class GotoCoordinatesRobotRelative extends SequentialCommandGroup { Drive m_drive; Pneumatics m_pneumatics; @@ -28,7 +28,7 @@ public class GotoCoordinates extends SequentialCommandGroup { /** * Creates a new GotoPosition. */ - public GotoCoordinates(Drive subsystem, Pneumatics subsystem2, double xTarget, double yTarget, double endAngle) { + public GotoCoordinatesRobotRelative(Drive subsystem, Pneumatics subsystem2, double xTarget, double yTarget, double endAngle) { // Add your commands in the super() call, e.g. // super(new FooCommand(), new BarCommand()); m_drive = subsystem; @@ -49,7 +49,7 @@ public class GotoCoordinates extends SequentialCommandGroup { new TurnDegrees(m_drive, m_endAngle - m_currentAngle)); } - public GotoCoordinates(Drive subsystem, Pneumatics subsystem2, double xTarget, double yTarget) { + public GotoCoordinatesRobotRelative(Drive subsystem, Pneumatics subsystem2, double xTarget, double yTarget) { m_drive = subsystem; m_pneumatics = subsystem2; diff --git a/src/main/java/frc4388/robot/commands/drive/PlaySongDrive.java b/src/main/java/frc4388/robot/commands/drive/PlaySongDrive.java index eaa0f07..10a99ee 100644 --- a/src/main/java/frc4388/robot/commands/drive/PlaySongDrive.java +++ b/src/main/java/frc4388/robot/commands/drive/PlaySongDrive.java @@ -9,6 +9,7 @@ package frc4388.robot.commands.drive; import edu.wpi.first.wpilibj2.command.CommandBase; import frc4388.robot.subsystems.Drive; +import frc4388.robot.subsystems.Shooter; public class PlaySongDrive extends CommandBase { private Drive m_drive; @@ -16,10 +17,10 @@ public class PlaySongDrive extends CommandBase { /** * Creates a new PlaySongDrive. */ - public PlaySongDrive(Drive subsystem) { + public PlaySongDrive(Drive subsystem, Shooter shooter) { // Use addRequirements() here to declare subsystem dependencies. m_drive = subsystem; - addRequirements(m_drive); + addRequirements(m_drive, shooter); } // Called when the command is initially scheduled. diff --git a/src/main/java/frc4388/robot/commands/drive/SkipSong.java b/src/main/java/frc4388/robot/commands/drive/SkipSong.java new file mode 100644 index 0000000..0d020a1 --- /dev/null +++ b/src/main/java/frc4388/robot/commands/drive/SkipSong.java @@ -0,0 +1,56 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.drive; + +import edu.wpi.first.wpilibj2.command.CommandBase; +import frc4388.robot.subsystems.Drive; + +public class SkipSong extends CommandBase { + Drive m_drive; + int m_index; + + /** + * Creates a new SkipSong. + */ + public SkipSong(Drive m_robotDrive, int index) { + // Use addRequirements() here to declare subsystem dependencies. + m_drive = m_robotDrive; + m_index = index; + } + + // Called when the command is initially scheduled. + @Override + public void initialize() { + + } + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() { + String[] songs = m_drive.songsStrings; + String song = m_drive.m_currentSong; + + for (int i = 0; i < songs.length; i++) { + if (songs[i] == song) { + m_drive.selectSong(songs[i + m_index]); + break; + } + } + } + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + } + + // Returns true when the command should end. + @Override + public boolean isFinished() { + return true; + } +} diff --git a/src/main/java/frc4388/robot/commands/intake/RunIntake.java b/src/main/java/frc4388/robot/commands/intake/RunIntake.java new file mode 100644 index 0000000..c88b1f7 --- /dev/null +++ b/src/main/java/frc4388/robot/commands/intake/RunIntake.java @@ -0,0 +1,46 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.intake; + +import edu.wpi.first.wpilibj2.command.CommandBase; +import frc4388.robot.Constants.IntakeConstants; +import frc4388.robot.subsystems.Intake; + +public class RunIntake extends CommandBase { + Intake m_intake; + /** + * Creates a new RunIntake. + */ + public RunIntake(Intake subsystem) { + // Use addRequirements() here to declare subsystem dependencies. + m_intake = subsystem; + addRequirements(m_intake); + } + + // Called when the command is initially scheduled. + @Override + public void initialize() { + } + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() { + m_intake.runIntake(IntakeConstants.INTAKE_SPEED); + } + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + } + + // Returns true when the command should end. + @Override + public boolean isFinished() { + return false; + } +} diff --git a/src/main/java/frc4388/robot/commands/shooter/CalibrateShooter.java b/src/main/java/frc4388/robot/commands/shooter/CalibrateShooter.java index 23be5fa..5e28114 100644 --- a/src/main/java/frc4388/robot/commands/shooter/CalibrateShooter.java +++ b/src/main/java/frc4388/robot/commands/shooter/CalibrateShooter.java @@ -7,6 +7,7 @@ package frc4388.robot.commands.shooter; +import com.revrobotics.CANDigitalInput.LimitSwitchPolarity; import com.revrobotics.CANSparkMax.SoftLimitDirection; import edu.wpi.first.wpilibj2.command.CommandBase; @@ -59,6 +60,10 @@ public class CalibrateShooter extends CommandBase { // Returns true when the command should end. @Override public boolean isFinished() { + if (m_shooterAim.m_shooterRotateMotor.getReverseLimitSwitch(LimitSwitchPolarity.kNormallyOpen).get() && + m_shooterHood.m_angleAdjustMotor.getReverseLimitSwitch(LimitSwitchPolarity.kNormallyOpen).get()) { + return true; + } return false; } } diff --git a/src/main/java/frc4388/robot/commands/shooter/PrepChecker.java b/src/main/java/frc4388/robot/commands/shooter/PrepChecker.java new file mode 100644 index 0000000..cc978fd --- /dev/null +++ b/src/main/java/frc4388/robot/commands/shooter/PrepChecker.java @@ -0,0 +1,52 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.shooter; + +import edu.wpi.first.wpilibj2.command.CommandBase; +import frc4388.robot.subsystems.Shooter; +import frc4388.robot.subsystems.ShooterAim; + +public class PrepChecker extends CommandBase { + Shooter m_shooter; + ShooterAim m_shooterAim; + + /** + * Creates a new PrepChecker. + */ + public PrepChecker(Shooter shooter, ShooterAim shooterAim) { + // Use addRequirements() here to declare subsystem dependencies. + m_shooter = shooter; + m_shooterAim = shooterAim; + } + + // Called when the command is initially scheduled. + @Override + public void initialize() { + } + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() { + + } + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + } + + // Returns true when the command should end. + @Override + public boolean isFinished() { + if (m_shooterAim.m_isAimReady && m_shooter.m_isDrumReady) { + return true; + } + + return false; + } +} diff --git a/src/main/java/frc4388/robot/commands/shooter/RunHoodWithJoystick.java b/src/main/java/frc4388/robot/commands/shooter/RunHoodWithJoystick.java new file mode 100644 index 0000000..f406e04 --- /dev/null +++ b/src/main/java/frc4388/robot/commands/shooter/RunHoodWithJoystick.java @@ -0,0 +1,54 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.shooter; + +import edu.wpi.first.wpilibj2.command.CommandBase; +import frc4388.robot.subsystems.Leveler; +import frc4388.robot.subsystems.ShooterHood; +import frc4388.utility.controller.IHandController; + +public class RunHoodWithJoystick extends CommandBase { + private ShooterHood m_hood; + private IHandController m_controller; + + /** + * Creates a new RunLevelerWithJoystick to control the leveler with an Xbox controller. + * @param subsystem pass the Hood subsystem from {@link frc4388.robot.RobotContainer#RobotContainer() RobotContainer} + * @param controller pass the Operator {@link frc4388.utility.controller.IHandController#getClass() IHandController} using the + * {@link frc4388.robot.RobotContainer#getOperatorJoystick() getOperatorJoystick()} method in + * {@link frc4388.robot.RobotContainer#RobotContainer() RobotContainer} + */ + public RunHoodWithJoystick(ShooterHood subsystem, IHandController controller) { + m_hood = subsystem; + m_controller = controller; + addRequirements(m_hood); + } + + // Called when the command is initially scheduled. + @Override + public void initialize() { + } + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() { + double input = m_controller.getRightYAxis(); + m_hood.runHood(input); + } + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + } + + // Returns true when the command should end. + @Override + public boolean isFinished() { + return false; + } +} diff --git a/src/main/java/frc4388/robot/commands/shooter/ShooterGoalPosition.java b/src/main/java/frc4388/robot/commands/shooter/ShooterGoalPosition.java new file mode 100644 index 0000000..b750c66 --- /dev/null +++ b/src/main/java/frc4388/robot/commands/shooter/ShooterGoalPosition.java @@ -0,0 +1,52 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.shooter; + +import edu.wpi.first.wpilibj2.command.CommandBase; +import frc4388.robot.subsystems.Shooter; +import frc4388.robot.subsystems.ShooterAim; +import frc4388.robot.subsystems.ShooterHood; + +public class ShooterGoalPosition extends CommandBase { + Shooter m_shooter; + ShooterHood m_hood; + ShooterAim m_aim; + /** + * Creates a new ShooterGoalPosition. + */ + public ShooterGoalPosition(Shooter shooterSub, ShooterHood hoodSub, ShooterAim aimSub) { + m_shooter = shooterSub; + m_hood = hoodSub; + m_aim = aimSub; + addRequirements(m_shooter,m_hood,m_aim); + } + + // Called when the command is initially scheduled. + @Override + public void initialize() { + } + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() { + m_shooter.runDrumShooterVelocityPID(5000); + m_hood.runAngleAdjustPID(3); + m_aim.runshooterRotatePID(-26.5); + } + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + } + + // Returns true when the command should end. + @Override + public boolean isFinished() { + return false; + } +} diff --git a/src/main/java/frc4388/robot/commands/shooter/ShooterManual.java b/src/main/java/frc4388/robot/commands/shooter/ShooterManual.java new file mode 100644 index 0000000..2017ff4 --- /dev/null +++ b/src/main/java/frc4388/robot/commands/shooter/ShooterManual.java @@ -0,0 +1,45 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.shooter; + +import edu.wpi.first.wpilibj.XboxController; +import edu.wpi.first.wpilibj2.command.CommandBase; +import frc4388.robot.RobotContainer; + +public class ShooterManual extends CommandBase { + public boolean isManual = false; + /** + * Creates a new ShooterManual. + */ + public ShooterManual(boolean man) { + isManual = man; + } + + // Called when the command is initially scheduled. + @Override + public void initialize() { + } + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() { + RobotContainer.m_isShooterManual = isManual; + } + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + RobotContainer.m_isShooterManual = isManual; + } + + // Returns true when the command should end. + @Override + public boolean isFinished() { + return false; + } +} diff --git a/src/main/java/frc4388/robot/commands/shooter/ShooterTrenchPosition.java b/src/main/java/frc4388/robot/commands/shooter/ShooterTrenchPosition.java new file mode 100644 index 0000000..ba452b7 --- /dev/null +++ b/src/main/java/frc4388/robot/commands/shooter/ShooterTrenchPosition.java @@ -0,0 +1,52 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.shooter; + +import edu.wpi.first.wpilibj2.command.CommandBase; +import frc4388.robot.subsystems.Shooter; +import frc4388.robot.subsystems.ShooterAim; +import frc4388.robot.subsystems.ShooterHood; + +public class ShooterTrenchPosition extends CommandBase { + Shooter m_shooter; + ShooterHood m_hood; + ShooterAim m_aim; + /** + * Creates a new ShooterTrenchPosition. + */ + public ShooterTrenchPosition(Shooter shooterSub, ShooterHood hoodSub, ShooterAim aimSub) { + m_shooter = shooterSub; + m_hood = hoodSub; + m_aim = aimSub; + addRequirements(m_shooter,m_hood,m_aim); + } + + // Called when the command is initially scheduled. + @Override + public void initialize() { + } + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() { + m_shooter.runDrumShooterVelocityPID(5000); + m_hood.runAngleAdjustPID(3); + m_aim.runshooterRotatePID(-26.5); + } + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + } + + // Returns true when the command should end. + @Override + public boolean isFinished() { + return false; + } +} diff --git a/src/main/java/frc4388/robot/commands/storage/ManageStorage.java b/src/main/java/frc4388/robot/commands/storage/ManageStorage.java index 68cfd71..8b55380 100644 --- a/src/main/java/frc4388/robot/commands/storage/ManageStorage.java +++ b/src/main/java/frc4388/robot/commands/storage/ManageStorage.java @@ -11,6 +11,7 @@ import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj2.command.CommandBase; import frc4388.robot.Constants.StorageConstants; import frc4388.robot.subsystems.Storage; +import frc4388.robot.subsystems.Storage.StorageMode; public class ManageStorage extends CommandBase { Storage m_storage; @@ -26,17 +27,13 @@ public class ManageStorage extends CommandBase { /* Used for intaking a ball. Keeps track off when the 2nd ball in storage has moved */ boolean m_isStorageEmpty = true; - - public enum StorageMode{IDLE, INTAKE, RESET}; - StorageMode m_storageMode = StorageMode.IDLE; /** * Creates a new ManageStorage. */ - public ManageStorage(Storage m_robotStorage, StorageMode storageMode) { + public ManageStorage(Storage m_robotStorage) { // Use addRequirements() here to declare subsystem dependencies. m_storage = m_robotStorage; - m_storageMode = storageMode; addRequirements(m_storage); } @@ -50,7 +47,7 @@ public class ManageStorage extends CommandBase { m_isStorageEmpty = !m_isBallInStorage; - if (m_storageMode == StorageMode.RESET) { + if (m_storage.m_storageMode == StorageMode.RESET) { m_resetStartTime = System.currentTimeMillis(); } } @@ -68,12 +65,14 @@ public class ManageStorage extends CommandBase { SmartDashboard.putBoolean("!Ball Storage!", m_isBallInStorage); SmartDashboard.putBoolean("!Ball Shooter!", m_isBallInShooter); - if (m_storageMode == StorageMode.IDLE) { + if (m_storage.m_storageMode == StorageMode.IDLE) { runIdle(); - } else if (m_storageMode == StorageMode.INTAKE) { + } else if (m_storage.m_storageMode == StorageMode.INTAKE) { runIntake(); - } else if (m_storageMode == StorageMode.RESET) { + } else if (m_storage.m_storageMode == StorageMode.RESET) { runReset(); + } else if (m_storage.m_storageMode == StorageMode.MANUAL) { + runManual(); } } @@ -91,10 +90,10 @@ public class ManageStorage extends CommandBase { } if (m_isStorageEmpty && m_isBallInStorage) { // If Ball moves into storage, set storage to full and swtich to idle mode m_isStorageEmpty = false; - m_storageMode = StorageMode.IDLE; + m_storage.changeStorageMode(StorageMode.IDLE); } } else { - m_storageMode = StorageMode.IDLE; + m_storage.changeStorageMode(StorageMode.IDLE); } } @@ -106,7 +105,7 @@ public class ManageStorage extends CommandBase { m_storage.runStorage(0); if (m_isBallInIntake) { - m_storageMode = StorageMode.INTAKE; + m_storage.changeStorageMode(StorageMode.INTAKE); } m_isStorageEmpty = !m_isBallInStorage; } @@ -120,17 +119,24 @@ public class ManageStorage extends CommandBase { m_storage.runStorage(-StorageConstants.STORAGE_SPEED); if (m_isBallInIntake) { - m_storageMode = StorageMode.INTAKE; + m_storage.changeStorageMode(StorageMode.INTAKE); } else if (m_resetStartTime + StorageConstants.STORAGE_TIMEOUT < System.currentTimeMillis()) { - m_storageMode = StorageMode.IDLE; + m_storage.changeStorageMode(StorageMode.IDLE); } m_isStorageEmpty = !m_isBallInStorage; } + /** + * Switches Storage to Manual only + */ + private void runManual() { + m_storage.runStorage(0); + } + // Called once the command ends or is interrupted. @Override public void end(boolean interrupted) { - m_storageMode = StorageMode.RESET; + m_storage.changeStorageMode(StorageMode.RESET); } // Returns true when the command should end. diff --git a/src/main/java/frc4388/robot/commands/storage/ManageStoragePID.java b/src/main/java/frc4388/robot/commands/storage/ManageStoragePID.java index 6ed4fd3..97ff356 100644 --- a/src/main/java/frc4388/robot/commands/storage/ManageStoragePID.java +++ b/src/main/java/frc4388/robot/commands/storage/ManageStoragePID.java @@ -11,6 +11,7 @@ import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj2.command.CommandBase; import frc4388.robot.Constants.StorageConstants; import frc4388.robot.subsystems.Storage; +import frc4388.robot.subsystems.Storage.StorageMode; public class ManageStoragePID extends CommandBase { Storage m_storage; @@ -30,16 +31,13 @@ public class ManageStoragePID extends CommandBase { /* Used for intaking a ball. Keeps track off when the 2nd ball in storage has moved */ boolean m_isStorageEmpty = true; - public enum StorageMode{IDLE, INTAKE, RESET}; - StorageMode m_storageMode = StorageMode.IDLE; /** * Creates a new ManageStorage. */ - public ManageStoragePID(Storage m_robotStorage, StorageMode storageMode) { + public ManageStoragePID(Storage m_robotStorage) { // Use addRequirements() here to declare subsystem dependencies. m_storage = m_robotStorage; - m_storageMode = storageMode; addRequirements(m_storage); } @@ -55,7 +53,7 @@ public class ManageStoragePID extends CommandBase { m_intakeStartPos = m_storage.getEncoderPosInches(); - if (m_storageMode == StorageMode.RESET) { + if (m_storage.m_storageMode == StorageMode.RESET) { m_resetStartTime = System.currentTimeMillis(); } } @@ -73,11 +71,11 @@ public class ManageStoragePID extends CommandBase { SmartDashboard.putBoolean("!Ball Storage!", m_isBallInStorage); SmartDashboard.putBoolean("!Ball Shooter!", m_isBallInShooter); - if (m_storageMode == StorageMode.IDLE) { + if (m_storage.m_storageMode == StorageMode.IDLE) { runIdle(); - } else if (m_storageMode == StorageMode.INTAKE) { + } else if (m_storage.m_storageMode == StorageMode.INTAKE) { runIntake(); - } else if (m_storageMode == StorageMode.RESET) { + } else if (m_storage.m_storageMode == StorageMode.RESET) { runReset(); } } @@ -93,10 +91,10 @@ public class ManageStoragePID extends CommandBase { double error = (m_intakeStartPos + StorageConstants.STORAGE_FULL_BALL) - m_storage.getEncoderPosInches(); if (m_storage.getEncoderVel() == 0 && Math.abs(error) < 0.5) { - m_storageMode = StorageMode.IDLE; + m_storage.changeStorageMode(StorageMode.IDLE); } } else { - m_storageMode = StorageMode.IDLE; + m_storage.changeStorageMode(StorageMode.IDLE); } } @@ -108,7 +106,7 @@ public class ManageStoragePID extends CommandBase { m_storage.runStorage(0); if (m_isBallInIntake) { - m_storageMode = StorageMode.INTAKE; + m_storage.changeStorageMode(StorageMode.INTAKE); m_intakeStartPos = m_storage.getEncoderPosInches(); } m_isStorageEmpty = !m_isBallInStorage; @@ -123,10 +121,10 @@ public class ManageStoragePID extends CommandBase { m_storage.runStorage(-StorageConstants.STORAGE_SPEED); if (m_isBallInIntake) { - m_storageMode = StorageMode.INTAKE; + m_storage.changeStorageMode(StorageMode.INTAKE); m_intakeStartPos = m_storage.getEncoderPosInches(); } else if (m_resetStartTime + StorageConstants.STORAGE_TIMEOUT < System.currentTimeMillis()) { - m_storageMode = StorageMode.IDLE; + m_storage.changeStorageMode(StorageMode.IDLE); } m_isStorageEmpty = !m_isBallInStorage; } @@ -134,7 +132,7 @@ public class ManageStoragePID extends CommandBase { // Called once the command ends or is interrupted. @Override public void end(boolean interrupted) { - m_storageMode = StorageMode.RESET; + m_storage.changeStorageMode(StorageMode.RESET); } // Returns true when the command should end. diff --git a/src/main/java/frc4388/robot/commands/storage/RunStorage.java b/src/main/java/frc4388/robot/commands/storage/RunStorage.java new file mode 100644 index 0000000..3a259d1 --- /dev/null +++ b/src/main/java/frc4388/robot/commands/storage/RunStorage.java @@ -0,0 +1,46 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.robot.commands.storage; + +import edu.wpi.first.wpilibj2.command.CommandBase; +import frc4388.robot.Constants.StorageConstants; +import frc4388.robot.subsystems.Storage; + +public class RunStorage extends CommandBase { + Storage m_storage; + /** + * Creates a new RunStorage. + */ + public RunStorage(Storage subsystem) { + // Use addRequirements() here to declare subsystem dependencies. + m_storage = subsystem; + addRequirements(m_storage); + } + + // Called when the command is initially scheduled. + @Override + public void initialize() { + } + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() { + m_storage.runStorage(StorageConstants.STORAGE_SPEED); + } + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + } + + // Returns true when the command should end. + @Override + public boolean isFinished() { + return false; + } +} diff --git a/src/main/java/frc4388/robot/subsystems/Drive.java b/src/main/java/frc4388/robot/subsystems/Drive.java index ab42034..5860235 100644 --- a/src/main/java/frc4388/robot/subsystems/Drive.java +++ b/src/main/java/frc4388/robot/subsystems/Drive.java @@ -54,6 +54,7 @@ public class Drive extends SubsystemBase { /* Pneumatics Subsystem */ public Pneumatics m_pneumaticsSubsystem; + Shooter m_shooter; /* Low Gear Gains */ public static Gains m_gainsDistanceLow = DriveConstants.DRIVE_DISTANCE_GAINS_LOW; @@ -67,6 +68,9 @@ public class Drive extends SubsystemBase { public static Gains m_gainsTurningHigh = DriveConstants.DRIVE_TURNING_GAINS_HIGH; public static Gains m_gainsMotionMagicHigh = DriveConstants.DRIVE_MOTION_MAGIC_GAINS_HIGH; + /* Back Motor Gains */ + public static Gains m_gainsVelocityBack = DriveConstants.DRIVE_VELOCITY_GAINS_BACK; + /* Timey Whimey */ public long m_currentTimeMs = System.currentTimeMillis(); public long m_lastTimeMs = m_currentTimeMs; @@ -93,7 +97,8 @@ public class Drive extends SubsystemBase { SendableChooser m_songChooser = new SendableChooser(); /* Misc */ - String m_currentSong = ""; + public String m_currentSong = ""; + public String[] songsStrings; /** * Add your docs here. @@ -105,7 +110,7 @@ public class Drive extends SubsystemBase { m_leftBackMotor.configFactoryDefault(); m_rightBackMotor.configFactoryDefault(); m_pigeon.configFactoryDefault(); - resetGyroYaw(); + resetGyroYaw(0); m_pigeonGyro = getGyroInterface(); @@ -145,20 +150,18 @@ public class Drive extends SubsystemBase { /* PID for Back Motor Control in Tank Drive Vel */ m_rightBackMotor.selectProfileSlot(DriveConstants.SLOT_VELOCITY, DriveConstants.PID_PRIMARY); - m_rightBackMotor.config_kF(DriveConstants.SLOT_VELOCITY, m_gainsVelocityLow.m_kF, DriveConstants.DRIVE_TIMEOUT_MS); - m_rightBackMotor.config_kP(DriveConstants.SLOT_VELOCITY, m_gainsVelocityLow.m_kP, DriveConstants.DRIVE_TIMEOUT_MS); - m_rightBackMotor.config_kI(DriveConstants.SLOT_VELOCITY, m_gainsVelocityLow.m_kI, DriveConstants.DRIVE_TIMEOUT_MS); - m_rightBackMotor.config_kD(DriveConstants.SLOT_VELOCITY, m_gainsVelocityLow.m_kD, DriveConstants.DRIVE_TIMEOUT_MS); - m_rightBackMotor.configClosedLoopPeakOutput(DriveConstants.SLOT_VELOCITY, m_gainsVelocityLow.m_kPeakOutput, - DriveConstants.DRIVE_TIMEOUT_MS); + m_rightBackMotor.config_kF(DriveConstants.SLOT_VELOCITY, m_gainsVelocityBack.m_kF, DriveConstants.DRIVE_TIMEOUT_MS); + m_rightBackMotor.config_kP(DriveConstants.SLOT_VELOCITY, m_gainsVelocityBack.m_kP, DriveConstants.DRIVE_TIMEOUT_MS); + m_rightBackMotor.config_kI(DriveConstants.SLOT_VELOCITY, m_gainsVelocityBack.m_kI, DriveConstants.DRIVE_TIMEOUT_MS); + m_rightBackMotor.config_kD(DriveConstants.SLOT_VELOCITY, m_gainsVelocityBack.m_kD, DriveConstants.DRIVE_TIMEOUT_MS); + m_rightBackMotor.configClosedLoopPeakOutput(DriveConstants.SLOT_VELOCITY, m_gainsVelocityBack.m_kPeakOutput, DriveConstants.DRIVE_TIMEOUT_MS); m_leftBackMotor.selectProfileSlot(DriveConstants.SLOT_VELOCITY, DriveConstants.PID_PRIMARY); - m_leftBackMotor.config_kF(DriveConstants.SLOT_VELOCITY, m_gainsVelocityLow.m_kF, DriveConstants.DRIVE_TIMEOUT_MS); - m_leftBackMotor.config_kP(DriveConstants.SLOT_VELOCITY, m_gainsVelocityLow.m_kP, DriveConstants.DRIVE_TIMEOUT_MS); - m_leftBackMotor.config_kI(DriveConstants.SLOT_VELOCITY, m_gainsVelocityLow.m_kI, DriveConstants.DRIVE_TIMEOUT_MS); - m_leftBackMotor.config_kD(DriveConstants.SLOT_VELOCITY, m_gainsVelocityLow.m_kD, DriveConstants.DRIVE_TIMEOUT_MS); - m_leftBackMotor.configClosedLoopPeakOutput(DriveConstants.SLOT_VELOCITY, m_gainsVelocityLow.m_kPeakOutput, - DriveConstants.DRIVE_TIMEOUT_MS); + m_leftBackMotor.config_kF(DriveConstants.SLOT_VELOCITY, m_gainsVelocityBack.m_kF, DriveConstants.DRIVE_TIMEOUT_MS); + m_leftBackMotor.config_kP(DriveConstants.SLOT_VELOCITY, m_gainsVelocityBack.m_kP, DriveConstants.DRIVE_TIMEOUT_MS); + m_leftBackMotor.config_kI(DriveConstants.SLOT_VELOCITY, m_gainsVelocityBack.m_kI, DriveConstants.DRIVE_TIMEOUT_MS); + m_leftBackMotor.config_kD(DriveConstants.SLOT_VELOCITY, m_gainsVelocityBack.m_kD, DriveConstants.DRIVE_TIMEOUT_MS); + m_leftBackMotor.configClosedLoopPeakOutput(DriveConstants.SLOT_VELOCITY, m_gainsVelocityBack.m_kPeakOutput, DriveConstants.DRIVE_TIMEOUT_MS); /* Reset Sensors for WPI_TalonFXs */ resetEncoders(); @@ -282,11 +285,12 @@ public class Drive extends SubsystemBase { /* Create chooser to choose song to play */ File songsDir = new File(Filesystem.getDeployDirectory().getAbsolutePath() + "/songs"); System.err.println(songsDir.getPath()); - String[] songsStrings = songsDir.list(); + songsStrings = songsDir.list(); for (String songString : songsStrings) { m_songChooser.addOption(songString, songsDir.getAbsolutePath() + "/" + songString); } Shuffleboard.getTab("Songs").add(m_songChooser); + selectSong(songsStrings[0]); /* Start counting time */ m_lastTimeMs = System.currentTimeMillis(); @@ -305,8 +309,10 @@ public class Drive extends SubsystemBase { * * @param subsystem Subsystem needed. */ - public void passRequiredSubsystem(Pneumatics subsystem) { + public void passRequiredSubsystem(Pneumatics subsystem, Shooter shooter) { m_pneumaticsSubsystem = subsystem; + m_shooter = shooter; + m_orchestra.addInstrument(m_shooter.m_shooterFalcon); } public void updateTime() { @@ -333,8 +339,9 @@ public class Drive extends SubsystemBase { m_totalRightDistanceInches += ticksToInches(m_currentRightPosTicks - m_lastRightPosTicks); m_totalLeftDistanceInches += ticksToInches(m_currentLeftPosTicks - m_lastLeftPosTicks); - m_odometry.update(Rotation2d.fromDegrees(getHeading()), getDistanceInches(m_leftFrontMotor), - -getDistanceInches(m_rightFrontMotor)); + m_odometry.update(Rotation2d.fromDegrees( getHeading()), + inchesToMeters(getDistanceInches(m_leftFrontMotor)), + -inchesToMeters(getDistanceInches(m_rightFrontMotor))); } /** @@ -342,7 +349,7 @@ public class Drive extends SubsystemBase { * using the Differential Drive class to manage the two inputs */ public void driveWithInput(double move, double steer) { - m_driveTrain.arcadeDrive(move, steer); + m_driveTrain.arcadeDrive(-move, steer); m_leftBackMotor.follow(m_leftFrontMotor); m_rightBackMotor.follow(m_rightFrontMotor); } @@ -465,8 +472,6 @@ public class Drive extends SubsystemBase { m_rightBackMotor.selectProfileSlot(DriveConstants.SLOT_VELOCITY, DriveConstants.PID_PRIMARY); m_leftBackMotor.selectProfileSlot(DriveConstants.SLOT_VELOCITY, DriveConstants.PID_PRIMARY); - System.err.println(moveVelLeft); - m_rightBackMotor.set(TalonFXControlMode.Velocity, moveVelRight); m_leftBackMotor.set(TalonFXControlMode.Velocity, moveVelLeft); m_leftFrontMotor.follow(m_leftBackMotor); @@ -512,24 +517,25 @@ public class Drive extends SubsystemBase { */ public void setOdometry(Pose2d pose) { resetEncoders(); + resetGyroYaw(pose.getRotation().getDegrees()); m_odometry.resetPosition(pose, Rotation2d.fromDegrees(getHeading())); } /** * Resets the yaw of the pigeon */ - public void resetGyroYaw() { - m_pigeon.setYaw(0); - m_pigeon.setAccumZAngle(0); - resetGyroAngles(); + public void resetGyroYaw(double angle) { + m_pigeon.setYaw(angle); + m_pigeon.setAccumZAngle(angle); + resetGyroAngles(angle); } /** * Add docs here */ - public void resetGyroAngles() { - m_lastAngleYaw = 0; - m_currentAngleYaw = 0; + public void resetGyroAngles(double angle) { + m_lastAngleYaw = angle; + m_currentAngleYaw = angle; } /** @@ -574,7 +580,7 @@ public class Drive extends SubsystemBase { @Override public void reset() { // TODO Auto-generated method stub - resetGyroYaw(); + resetGyroYaw(0); } @Override @@ -871,8 +877,11 @@ public class Drive extends SubsystemBase { //SmartDashboard.putNumber("Right Motor Velocity Int Sensor", m_rightFrontMotor.getSensorCollection().getIntegratedSensorVelocity()); //SmartDashboard.putNumber("Left Motor Velocity Int Sensor", m_leftFrontMotor.getSensorCollection().getIntegratedSensorVelocity()); - //SmartDashboard.putNumber("Left Motor Pos Inches", getDistanceInches(m_rightFrontMotor)); - //SmartDashboard.putNumber("Right Motor Pos Inches", getDistanceInches(m_leftFrontMotor)); + SmartDashboard.putNumber("Left Motor Pos Inches", getDistanceInches(m_rightFrontMotor)); + SmartDashboard.putNumber("Right Motor Pos Inches", getDistanceInches(m_leftFrontMotor)); + + SmartDashboard.putNumber("Left Motor Pos Meters", inchesToMeters(getDistanceInches(m_rightFrontMotor))); + SmartDashboard.putNumber("Right Motor Pos Meters", inchesToMeters(getDistanceInches(m_leftFrontMotor))); /*SmartDashboard.putNumber("Right Front Velocity", m_rightFrontMotor.getSensorCollection().getIntegratedSensorVelocity()); SmartDashboard.putNumber("Left Front Velocity", m_leftFrontMotor.getSensorCollection().getIntegratedSensorVelocity()); @@ -900,7 +909,7 @@ public class Drive extends SubsystemBase { //SmartDashboard.putNumber("PID 0 Pos", m_rightFrontMotor.getSelectedSensorPosition(DriveConstants.PID_PRIMARY)); //SmartDashboard.putNumber("PID 1 Pos", m_rightFrontMotor.getSelectedSensorPosition(DriveConstants.PID_TURN)); - //SmartDashboard.putString("Odometry Values Meters", getPose().toString()); + SmartDashboard.putString("Odometry Values Meters", getPose().toString()); //SmartDashboard.putNumber("Odometry Heading", getHeading()); //SmartDashboard.putNumber("Time Seconds", m_currentTimeSec); @@ -909,6 +918,7 @@ public class Drive extends SubsystemBase { if (m_currentSong != m_songChooser.getSelected()){ m_currentSong = m_songChooser.getSelected(); selectSong(m_currentSong); + //System.err.println(m_currentSong); } } catch (Exception e) { @@ -916,4 +926,6 @@ public class Drive extends SubsystemBase { // e.printStackTrace(System.err); } } + + } diff --git a/src/main/java/frc4388/robot/subsystems/ShooterHood.java b/src/main/java/frc4388/robot/subsystems/ShooterHood.java index 6f3bda9..94b37f0 100644 --- a/src/main/java/frc4388/robot/subsystems/ShooterHood.java +++ b/src/main/java/frc4388/robot/subsystems/ShooterHood.java @@ -88,6 +88,11 @@ public class ShooterHood extends SubsystemBase { m_angleAdjustPIDController.setReference(targetAngle, ControlType.kPosition); } + public void runHood(double input) + { + m_angleAdjustMotor.set(input); + } + public void resetGyroAngleAdj(){ m_angleEncoder.setPosition(0); } diff --git a/src/main/java/frc4388/robot/subsystems/Storage.java b/src/main/java/frc4388/robot/subsystems/Storage.java index 403de25..98bc3b3 100644 --- a/src/main/java/frc4388/robot/subsystems/Storage.java +++ b/src/main/java/frc4388/robot/subsystems/Storage.java @@ -36,6 +36,9 @@ public class Storage extends SubsystemBase { public boolean m_isStorageReadyToFire = false; + public enum StorageMode{IDLE, INTAKE, RESET, MANUAL}; + public StorageMode m_storageMode = StorageMode.IDLE; + /** * Creates a new Storage. */ @@ -134,4 +137,8 @@ public class Storage extends SubsystemBase { public boolean getBeamIntake(){ return m_beamIntake.get(); } + + public void changeStorageMode(StorageMode storageMode){ + m_storageMode = storageMode; + } } diff --git a/src/main/java/frc4388/utility/controller/ButtonFox.java b/src/main/java/frc4388/utility/controller/ButtonFox.java new file mode 100644 index 0000000..5b4da00 --- /dev/null +++ b/src/main/java/frc4388/utility/controller/ButtonFox.java @@ -0,0 +1,20 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2018-2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.utility.controller; + +/** + * button fox + * @author Ryan Manley + */ +public class ButtonFox { + public static final int RIGHT_SWITCH = 1; + public static final int MIDDLE_SWITCH = 2; + public static final int LEFT_SWITCH = 3; + public static final int RIGHT_BUTTON = 4; + public static final int LEFT_BUTTON = 5; +} diff --git a/src/main/java/frc4388/utility/controller/JoystickManualButton.java b/src/main/java/frc4388/utility/controller/JoystickManualButton.java new file mode 100644 index 0000000..53db6f4 --- /dev/null +++ b/src/main/java/frc4388/utility/controller/JoystickManualButton.java @@ -0,0 +1,54 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2008-2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package frc4388.utility.controller; + +import edu.wpi.first.wpilibj.GenericHID; +import edu.wpi.first.wpilibj2.command.button.Button; +import frc4388.robot.RobotContainer; + +import static edu.wpi.first.wpilibj.util.ErrorMessages.requireNonNullParam; + +/** + * A {@link Button} that gets its state from a {@link GenericHID}. + */ +public class JoystickManualButton extends Button { + private final GenericHID m_joystick; + private final int m_buttonNumber; + private boolean m_buttonType; + + /** + * Creates a joystick button for triggering commands. + * + * @param joystick The GenericHID object that has the button (e.g. Joystick, + * KinectStick, etc) + * @param buttonNumber The button number (see + * {@link GenericHID#getRawButton(int) } + */ + public JoystickManualButton(GenericHID joystick, int buttonNumber, boolean buttonType) { + requireNonNullParam(joystick, "joystick", "JoystickButton"); + + m_joystick = joystick; + m_buttonNumber = buttonNumber; + m_buttonType = buttonType; + } + + /** + * Gets the value of the joystick button. + * + * @return The value of the joystick button + */ + @Override + public boolean get() { + boolean m = RobotContainer.m_isShooterManual; + if (m_buttonType == m) { + return m_joystick.getRawButton(m_buttonNumber); + } else { + return false; + } + } +} diff --git a/src/main/java/frc4388/utility/controller/XboxController.java b/src/main/java/frc4388/utility/controller/XboxController.java index 4353d1e..38c4736 100644 --- a/src/main/java/frc4388/utility/controller/XboxController.java +++ b/src/main/java/frc4388/utility/controller/XboxController.java @@ -60,6 +60,10 @@ public class XboxController implements IHandController m_stick = new Joystick(portNumber); } + public void setJoystick(Joystick joy) { + m_stick = joy; + } + /** * @return Joystick for Xbox Controller */