From 945aeb86033701b195ed523fb9ddc9a822ea3eec Mon Sep 17 00:00:00 2001 From: Museum25 <91571536+mvog2501@users.noreply.github.com> Date: Mon, 11 Mar 2024 23:07:14 -0500 Subject: [PATCH 1/6] [Robot] Spin like mad! --- .../main/java/com/swrobotics/robot/control/ControlBoard.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java b/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java index 1eec403..e0532bf 100644 --- a/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java +++ b/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java @@ -18,6 +18,8 @@ import com.swrobotics.robot.subsystems.speaker.aim.AmpAimCalculator; import com.swrobotics.robot.subsystems.speaker.aim.TableAimCalculator; import com.swrobotics.robot.subsystems.swerve.SwerveDrive; +import com.swrobotics.robot.subsystems.swerve.SwerveDrive.TurnRequest; + import edu.wpi.first.math.filter.Debouncer; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; @@ -97,6 +99,9 @@ public ControlBoard(RobotContainer robot) { robot.shooter )); + // Spin like mad when the driver clicks in the right stick + new Trigger(() -> driver.rightStickButton.isPressed()).debounce(0.1).whileTrue(Commands.run(() -> robot.drive.turn(new TurnRequest(1, Rotation2d.fromDegrees(640))))); + // Up is closer, down is farther new Trigger(this::driverWantsSnapCloser).whileTrue(new SnapDistanceCommand(robot.drive, robot.shooter, true)); new Trigger(this::driverWantsSnapFarther).whileTrue(new SnapDistanceCommand(robot.drive, robot.shooter, false)); From d6f34735959e2a11532dba1a19b882b3019000ec Mon Sep 17 00:00:00 2001 From: Mason Vogt Date: Wed, 13 Mar 2024 16:46:45 -0500 Subject: [PATCH 2/6] [Robot] Make it spin at just below its max rpm --- .../main/java/com/swrobotics/robot/control/ControlBoard.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java b/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java index e0532bf..58afb9e 100644 --- a/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java +++ b/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java @@ -100,7 +100,7 @@ public ControlBoard(RobotContainer robot) { )); // Spin like mad when the driver clicks in the right stick - new Trigger(() -> driver.rightStickButton.isPressed()).debounce(0.1).whileTrue(Commands.run(() -> robot.drive.turn(new TurnRequest(1, Rotation2d.fromDegrees(640))))); + new Trigger(() -> driver.rightStickButton.isPressed()).debounce(0.1).whileTrue(Commands.run(() -> robot.drive.turn(new TurnRequest(1, new Rotation2d(11.0))))); // Up is closer, down is farther new Trigger(this::driverWantsSnapCloser).whileTrue(new SnapDistanceCommand(robot.drive, robot.shooter, true)); From fa10b03ba0474c01b17e7d84ed67484cd8757afb Mon Sep 17 00:00:00 2001 From: rmheuer <63077980+rmheuer@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:51:16 -0500 Subject: [PATCH 3/6] [Robot] Use priority constant --- .../main/java/com/swrobotics/robot/control/ControlBoard.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java b/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java index 58afb9e..b72572d 100644 --- a/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java +++ b/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java @@ -100,7 +100,9 @@ public ControlBoard(RobotContainer robot) { )); // Spin like mad when the driver clicks in the right stick - new Trigger(() -> driver.rightStickButton.isPressed()).debounce(0.1).whileTrue(Commands.run(() -> robot.drive.turn(new TurnRequest(1, new Rotation2d(11.0))))); + new Trigger(driver.rightStickButton::isPressed) + .debounce(0.1) + .whileTrue(Commands.run(() -> robot.drive.turn(new TurnRequest(SwerveDrive.DRIVER_PRIORITY + 1, new Rotation2d(11.0))))); // Up is closer, down is farther new Trigger(this::driverWantsSnapCloser).whileTrue(new SnapDistanceCommand(robot.drive, robot.shooter, true)); From 9c4d7be5b33d75c7334bad1f5c58705721da8b5f Mon Sep 17 00:00:00 2001 From: Mason Vogt Date: Mon, 1 Apr 2024 17:35:30 -0500 Subject: [PATCH 4/6] [Robot] Source fast --- .../paths/Source Center A Score.path | 20 +++++----- .../paths/Source Center B Grab.path | 40 +++++++++++++------ .../paths/Source Center B Score.path | 12 +++--- .../pathplanner/paths/Source End Grab.path | 20 +++++----- 4 files changed, 54 insertions(+), 38 deletions(-) diff --git a/Robot/src/main/deploy/pathplanner/paths/Source Center A Score.path b/Robot/src/main/deploy/pathplanner/paths/Source Center A Score.path index 3f2c99f..5a3402a 100644 --- a/Robot/src/main/deploy/pathplanner/paths/Source Center A Score.path +++ b/Robot/src/main/deploy/pathplanner/paths/Source Center A Score.path @@ -3,25 +3,25 @@ "waypoints": [ { "anchor": { - "x": 7.727323886646013, - "y": 0.8759953092914556 + "x": 7.8726552894701225, + "y": 0.7133434209888375 }, "prevControl": null, "nextControl": { - "x": 6.3331084616355895, - "y": 0.9832426496768722 + "x": 6.478439864459699, + "y": 0.8205907613742541 }, "isLocked": false, "linkedName": "End of Source Center A Grab" }, { "anchor": { - "x": 3.375977203580178, - "y": 2.937996934085583 + "x": 3.0541358944950683, + "y": 3.2271699697793705 }, "prevControl": { - "x": 4.4192013327837785, - "y": 1.9727708706168285 + "x": 4.097360023698672, + "y": 2.261943906310616 }, "nextControl": null, "isLocked": false, @@ -32,8 +32,8 @@ "constraintZones": [], "eventMarkers": [], "globalConstraints": { - "maxVelocity": 5.7, - "maxAcceleration": 3.8, + "maxVelocity": 4.75, + "maxAcceleration": 3.9, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 640.0 }, diff --git a/Robot/src/main/deploy/pathplanner/paths/Source Center B Grab.path b/Robot/src/main/deploy/pathplanner/paths/Source Center B Grab.path index bff05a2..c0df5f3 100644 --- a/Robot/src/main/deploy/pathplanner/paths/Source Center B Grab.path +++ b/Robot/src/main/deploy/pathplanner/paths/Source Center B Grab.path @@ -3,25 +3,41 @@ "waypoints": [ { "anchor": { - "x": 3.375977203580178, - "y": 2.937996934085583 + "x": 3.0541358944950683, + "y": 3.2271699697793705 }, "prevControl": null, "nextControl": { - "x": 4.276954860337852, - "y": 1.4298676673448847 + "x": 3.9551135512527433, + "y": 1.719040703038672 }, "isLocked": false, "linkedName": "Score Location Source" }, { "anchor": { - "x": 7.8549113665954, - "y": 2.2003375432119485 + "x": 5.685848408733854, + "y": 1.777511475250871 }, "prevControl": { - "x": 6.302030399092708, - "y": 1.1611700964654137 + "x": 4.973000273866197, + "y": 1.7237116160155765 + }, + "nextControl": { + "x": 6.925428779632489, + "y": 1.8710647107903897 + }, + "isLocked": false, + "linkedName": null + }, + { + "anchor": { + "x": 7.767407899488164, + "y": 2.408995815142628 + }, + "prevControl": { + "x": 6.399191829722692, + "y": 2.3973016607001885 }, "nextControl": null, "isLocked": false, @@ -33,7 +49,7 @@ "eventMarkers": [ { "name": "New Event Marker", - "waypointRelativePos": 0.25, + "waypointRelativePos": 0.5, "command": { "type": "parallel", "data": { @@ -50,14 +66,14 @@ } ], "globalConstraints": { - "maxVelocity": 5.7, - "maxAcceleration": 3.8, + "maxVelocity": 4.75, + "maxAcceleration": 3.9, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 640.0 }, "goalEndState": { "velocity": 0, - "rotation": -152.83398643930994, + "rotation": -176.9335144988741, "rotateFast": false }, "reversed": false, diff --git a/Robot/src/main/deploy/pathplanner/paths/Source Center B Score.path b/Robot/src/main/deploy/pathplanner/paths/Source Center B Score.path index d24a308..d8b0b90 100644 --- a/Robot/src/main/deploy/pathplanner/paths/Source Center B Score.path +++ b/Robot/src/main/deploy/pathplanner/paths/Source Center B Score.path @@ -16,12 +16,12 @@ }, { "anchor": { - "x": 3.375977203580178, - "y": 2.937996934085583 + "x": 3.0541358944950683, + "y": 3.2271699697793705 }, "prevControl": { - "x": 5.004186825795147, - "y": 1.4365341686897435 + "x": 4.682345516710037, + "y": 1.7257072043835309 }, "nextControl": null, "isLocked": false, @@ -32,8 +32,8 @@ "constraintZones": [], "eventMarkers": [], "globalConstraints": { - "maxVelocity": 5.7, - "maxAcceleration": 3.8, + "maxVelocity": 4.75, + "maxAcceleration": 3.9, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 640.0 }, diff --git a/Robot/src/main/deploy/pathplanner/paths/Source End Grab.path b/Robot/src/main/deploy/pathplanner/paths/Source End Grab.path index 122b099..ca143fa 100644 --- a/Robot/src/main/deploy/pathplanner/paths/Source End Grab.path +++ b/Robot/src/main/deploy/pathplanner/paths/Source End Grab.path @@ -3,13 +3,13 @@ "waypoints": [ { "anchor": { - "x": 3.375977203580178, - "y": 2.937996934085583 + "x": 3.0541358944950683, + "y": 3.2271699697793705 }, "prevControl": null, "nextControl": { - "x": 4.633696013554615, - "y": 2.2165148260382312 + "x": 4.311854704469505, + "y": 2.5056878617320186 }, "isLocked": false, "linkedName": "Score Location Source" @@ -32,12 +32,12 @@ }, { "anchor": { - "x": 7.695879113561705, - "y": 4.112662453909305 + "x": 7.9545143705672015, + "y": 4.128036518181299 }, "prevControl": { - "x": 6.7919139303344265, - "y": 4.117537333017734 + "x": 7.050549187339923, + "y": 4.132911397289727 }, "nextControl": null, "isLocked": false, @@ -101,8 +101,8 @@ } ], "globalConstraints": { - "maxVelocity": 5.7, - "maxAcceleration": 3.8, + "maxVelocity": 4.75, + "maxAcceleration": 3.9, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 640.0 }, From 6b3a5847ab699010ab629ad8a96d7d9d059d8414 Mon Sep 17 00:00:00 2001 From: Mason Vogt Date: Tue, 9 Apr 2024 07:37:22 -0500 Subject: [PATCH 5/6] [Robot] Seven Rivers Changes --- .../com/swrobotics/robot/RobotContainer.java | 19 ++++++++++--- .../robot/commands/RobotCommands.java | 10 +++++++ .../com/swrobotics/robot/config/NTData.java | 2 +- .../robot/control/ControlBoard.java | 4 +-- .../swrobotics/robot/logging/FieldView.java | 6 ++++ .../subsystems/speaker/ShooterSubsystem.java | 2 +- .../speaker/aim/TableAimCalculator.java | 28 +++++++++++-------- .../robot/subsystems/swerve/SwerveDrive.java | 4 +++ .../subsystems/swerve/SwerveEstimator.java | 13 +++++++++ 9 files changed, 69 insertions(+), 19 deletions(-) diff --git a/Robot/src/main/java/com/swrobotics/robot/RobotContainer.java b/Robot/src/main/java/com/swrobotics/robot/RobotContainer.java index 209834b..4d75aaf 100644 --- a/Robot/src/main/java/com/swrobotics/robot/RobotContainer.java +++ b/Robot/src/main/java/com/swrobotics/robot/RobotContainer.java @@ -120,18 +120,18 @@ public RobotContainer() { // Create a chooser to select the autonomous List autos = buildPathPlannerAutos(); - autos.add(new AutoEntry("Drive backward", Commands.run( + autos.add(new AutoEntry("Drive backward", createNonPathPlannerAuto(Commands.run( () -> drive.drive(new DriveRequest( SwerveDrive.AUTO_PRIORITY, new Translation2d(-0.5, 0), DriveRequestType.OpenLoopVoltage)), drive - ).withTimeout(5))); + ).withTimeout(5)))); autos.sort(Comparator.comparing(AutoEntry::name, String.CASE_INSENSITIVE_ORDER)); SendableChooser autoChooser = new SendableChooser<>(); - autoChooser.setDefaultOption("Just Shoot", RobotCommands.aimAndShoot(this, false)); - autoChooser.addOption("None", Commands.none()); + autoChooser.setDefaultOption("Just Shoot", createNonPathPlannerAuto(RobotCommands.justShoot(this))); + autoChooser.addOption("None", createNonPathPlannerAuto(Commands.none())); for (AutoEntry auto : autos) autoChooser.addOption(auto.name(), auto.cmd()); autoSelector = new LoggedDashboardChooser<>("Auto Selection", autoChooser); @@ -174,6 +174,17 @@ public RobotContainer() { private static final record AutoEntry(String name, Command cmd) {} + private Command createNonPathPlannerAuto(Command autoCmd) { + return Commands.sequence( + Commands.runOnce(() -> { + if (!drive.hasSeenWhereWeAre()) { + drive.setPose(FieldView.startingPosition.getPose()); + } + }), + autoCmd + ); + } + private static List buildPathPlannerAutos() { if (!AutoBuilder.isConfigured()) { throw new RuntimeException( diff --git a/Robot/src/main/java/com/swrobotics/robot/commands/RobotCommands.java b/Robot/src/main/java/com/swrobotics/robot/commands/RobotCommands.java index 1a00b3d..49cecfa 100644 --- a/Robot/src/main/java/com/swrobotics/robot/commands/RobotCommands.java +++ b/Robot/src/main/java/com/swrobotics/robot/commands/RobotCommands.java @@ -10,6 +10,16 @@ import edu.wpi.first.wpilibj2.command.ParallelDeadlineGroup; public final class RobotCommands { + public static Command justShoot(RobotContainer robot) { + return Commands.sequence( + Commands.waitUntil(robot.shooter::isCalibrated), + Commands.waitUntil(robot.shooter::isReadyToShoot) + .withTimeout(NTData.SHOOTER_AUTO_READY_TIMEOUT.get()), + Commands.waitSeconds(NTData.SHOOTER_AUTO_AFTER_READY_DELAY.get()), + new IndexerFeedCommand(robot.indexer) + ); + } + public static Command aimAndShoot(RobotContainer robot, boolean waitForNote) { AimTowardsSpeakerCommand aim = new AimTowardsSpeakerCommand(robot.drive, robot.shooter); Command shootSeq = Commands.sequence( diff --git a/Robot/src/main/java/com/swrobotics/robot/config/NTData.java b/Robot/src/main/java/com/swrobotics/robot/config/NTData.java index 53e638b..b7ab49b 100644 --- a/Robot/src/main/java/com/swrobotics/robot/config/NTData.java +++ b/Robot/src/main/java/com/swrobotics/robot/config/NTData.java @@ -87,7 +87,7 @@ public final class NTData { public static final NTEntry SHOOTER_PIVOT_ANGLE_ADJUST_RED = new NTDouble("Shooter/Pivot/Angle Adjust Red (deg)", -2).setPersistent(); public static final NTEntry SHOOTER_PIVOT_REVERSE_ANGLE = new NTDouble("Shooter/Pivot/Reverse Angle (deg)", 52).setPersistent(); - public static final NTEntry SHOOTER_LOB_POWER_COEFFICIENT = new NTDouble("Shooter/Lob/Power Coefficient", 1).setPersistent(); // To go from real velocity to flywheel velocity + public static final NTEntry SHOOTER_LOB_POWER_COEFFICIENT = new NTDouble("Shooter/Lob/Power Coefficient", 1.5).setPersistent(); // To go from real velocity to flywheel velocity public static final NTEntry SHOOTER_LOB_TALL_HEIGHT_METERS = new NTDouble("Shooter/Lob/Tall Lob Height (m)", 5).setPersistent(); public static final NTEntry SHOOTER_LOB_SHORT_HEIGHT_METERS = new NTDouble("Shooter/Lob/Short Lob Height (m)", 1.3).setPersistent(); public static final NTEntry SHOOTER_LOB_DRIVE_ANGLE_CORRECTION_BLUE = new NTDouble("Shooter/Lob/Drive Angle Correction Blue (deg)", -30).setPersistent(); diff --git a/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java b/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java index d640461..1b36145 100644 --- a/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java +++ b/Robot/src/main/java/com/swrobotics/robot/control/ControlBoard.java @@ -380,9 +380,9 @@ else if (operatorWantsShoot) pieceRumbleNt.set(pieceRumble); - driver.setRumble(pieceRumble ? 0.6 : (tooFar && (driverWantsAim() || driverWantsFlywheels()) ? 0.5 : 0)); + driver.setRumble(pieceRumble ? 1.0 : (tooFar && (driverWantsAim() || driverWantsFlywheels()) ? 0.5 : 0)); boolean shooterReady = robot.shooter.isReadyToShoot(); - operator.setRumble(pieceRumble ? 0.6 : (shooterReady ? 0.5 : 0)); + operator.setRumble(pieceRumble ? 1.0 : (shooterReady ? 0.5 : 0)); this.shooterReady.set(shooterReady); this.tooFar.set(tooFar && (driverWantsAim() || driverWantsFlywheels())); diff --git a/Robot/src/main/java/com/swrobotics/robot/logging/FieldView.java b/Robot/src/main/java/com/swrobotics/robot/logging/FieldView.java index fbd16ff..4137e48 100644 --- a/Robot/src/main/java/com/swrobotics/robot/logging/FieldView.java +++ b/Robot/src/main/java/com/swrobotics/robot/logging/FieldView.java @@ -1,5 +1,6 @@ package com.swrobotics.robot.logging; +import edu.wpi.first.math.geometry.Rotation2d; import edu.wpi.first.wpilibj.smartdashboard.Field2d; import edu.wpi.first.wpilibj.smartdashboard.FieldObject2d; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; @@ -13,6 +14,11 @@ public final class FieldView { public static final FieldObject2d pathPlannerPath = field.getObject("PathPlanner path"); public static final FieldObject2d pathPlannerSetpoint = field.getObject("PathPlanner setpoint"); + public static final FieldObject2d startingPosition = field.getObject("Preload Position"); + static { + startingPosition.setPose(-1, 0, new Rotation2d()); + } + public static void publish() { SmartDashboard.putData("Field View", field); } diff --git a/Robot/src/main/java/com/swrobotics/robot/subsystems/speaker/ShooterSubsystem.java b/Robot/src/main/java/com/swrobotics/robot/subsystems/speaker/ShooterSubsystem.java index 75b32d7..bf5cc11 100644 --- a/Robot/src/main/java/com/swrobotics/robot/subsystems/speaker/ShooterSubsystem.java +++ b/Robot/src/main/java/com/swrobotics/robot/subsystems/speaker/ShooterSubsystem.java @@ -106,11 +106,11 @@ public void periodic() { targetAim = aim; aimCalculator = tableAimCalculator; + isPreparing = false; if (DriverStation.isDisabled() || !pivot.hasCalibrated()) return; // TODO: Make this not a mess - isPreparing = false; if ((aim != null) && DriverStation.isAutonomous()) { // Have the shooter be constantly active during auto isPreparing = true; diff --git a/Robot/src/main/java/com/swrobotics/robot/subsystems/speaker/aim/TableAimCalculator.java b/Robot/src/main/java/com/swrobotics/robot/subsystems/speaker/aim/TableAimCalculator.java index e17bc78..fa3dbcf 100644 --- a/Robot/src/main/java/com/swrobotics/robot/subsystems/speaker/aim/TableAimCalculator.java +++ b/Robot/src/main/java/com/swrobotics/robot/subsystems/speaker/aim/TableAimCalculator.java @@ -6,6 +6,8 @@ import com.swrobotics.mathlib.MathUtil; import com.swrobotics.robot.config.NTData; +import edu.wpi.first.math.util.Units; + public final class TableAimCalculator implements AimCalculator { public static final TableAimCalculator INSTANCE = new TableAimCalculator(); @@ -24,20 +26,24 @@ public TableAimCalculator() { // addCalibrationSample(3.0, 34, 60); // addCalibrationSample(3.8, 29, 70); + double fieldWrongness = Units.inchesToMeters(1 + 5.0/8); + // MURA 3-16, 3|1 wheel shooter configuration - addCalibrationSample(1.224203 - .2, 58, 55); - addCalibrationSample(1.657 - .2, 52, 55); - addCalibrationSample(2.239 - .2, 44, 55); - addCalibrationSample(2.875 - .2, 36, 55); - addCalibrationSample(2.993, 34, 63); - addCalibrationSample(3.506, 30, 63); - addCalibrationSample(3.903, 28, 67); + addCalibrationSample(fieldWrongness + 1.224203 - .2, 58, 55); + addCalibrationSample(fieldWrongness + 1.657 - .2, 52, 55); + addCalibrationSample(fieldWrongness + 2.239 - .2, 44, 55); + addCalibrationSample(fieldWrongness + 2.875 - .2, 36, 55); + addCalibrationSample(fieldWrongness + 2.993, 34, 63); + addCalibrationSample(fieldWrongness + 3.506, 30, 63); + addCalibrationSample(fieldWrongness + 3.903, 28, 67); // MURA 3-23, 3|1 wheel shooter - addCalibrationSample(4.34, 28, 67); - addCalibrationSample(4.67, 27, 67); - addCalibrationSample(5.06, 25, 67); - addCalibrationSample(5.58, 24, 70); + addCalibrationSample(fieldWrongness + 4.34, 28 + 1, 67); + addCalibrationSample(fieldWrongness + 4.67, 27 + 1, 67); + addCalibrationSample(fieldWrongness + 5.06, 25 + 1, 67); + addCalibrationSample(fieldWrongness + 5.58, 24 + 1, 70); + + addCalibrationSample(fieldWrongness + 6.6, 22.5, 82); // addCalibrationSample(3.37, 29, 60); diff --git a/Robot/src/main/java/com/swrobotics/robot/subsystems/swerve/SwerveDrive.java b/Robot/src/main/java/com/swrobotics/robot/subsystems/swerve/SwerveDrive.java index cbedba9..39bb17e 100644 --- a/Robot/src/main/java/com/swrobotics/robot/subsystems/swerve/SwerveDrive.java +++ b/Robot/src/main/java/com/swrobotics/robot/subsystems/swerve/SwerveDrive.java @@ -332,4 +332,8 @@ public TalonFX getTurnMotor(int module) { public void setEstimatorIgnoreVision(boolean ignoreVision) { estimator.setIgnoreVision(ignoreVision); } + + public boolean hasSeenWhereWeAre() { + return estimator.hasSeenWhereWeAre(); + } } diff --git a/Robot/src/main/java/com/swrobotics/robot/subsystems/swerve/SwerveEstimator.java b/Robot/src/main/java/com/swrobotics/robot/subsystems/swerve/SwerveEstimator.java index 192995b..2f351ae 100644 --- a/Robot/src/main/java/com/swrobotics/robot/subsystems/swerve/SwerveEstimator.java +++ b/Robot/src/main/java/com/swrobotics/robot/subsystems/swerve/SwerveEstimator.java @@ -1,6 +1,8 @@ package com.swrobotics.robot.subsystems.swerve; import com.swrobotics.lib.field.FieldInfo; +import com.swrobotics.lib.net.NTBoolean; +import com.swrobotics.lib.net.NTInteger; import com.swrobotics.mathlib.MathUtil; import com.swrobotics.robot.logging.FieldView; import com.swrobotics.robot.subsystems.tagtracker.TagTrackerInput; @@ -33,6 +35,9 @@ public final class SwerveEstimator { private boolean ignoreVision; + private final NTInteger numberOfVisionUpdates = new NTInteger("Debug/Number of Vision Updates", 0); + private final NTBoolean seenWhereWeAre = new NTBoolean("Debug/Has Seen Where We Are", false); + public SwerveEstimator(FieldInfo field) { double halfFrameL = 0.77 / 2; double halfFrameW = 0.695 / 2; @@ -115,6 +120,9 @@ public void update(Twist2d driveTwist) { List visionData = tagTracker.getNewUpdates(); updates.put(Timer.getFPGATimestamp(), new PoseUpdate(driveTwist, new ArrayList<>())); + numberOfVisionUpdates.set(numberOfVisionUpdates.get() + visionData.size()); + seenWhereWeAre.set(hasSeenWhereWeAre()); + List tagPoses = new ArrayList<>(); for (Pose3d tagPose3d : tagTracker.getEnvironment().getAllPoses()) { tagPoses.add(tagPose3d.toPose2d()); @@ -228,4 +236,9 @@ public Pose2d apply(Pose2d prevPose, Matrix q) { return pose; } } + + public boolean hasSeenWhereWeAre() { + // 1 second of frames from both cameras + return numberOfVisionUpdates.get() > 100; + } } From a03bf62d0b93c0801c345fdbd398ba88308d2475 Mon Sep 17 00:00:00 2001 From: Mason Vogt Date: Tue, 9 Apr 2024 07:39:18 -0500 Subject: [PATCH 6/6] [Robot] Seven Rivers autos --- Robot/.pathplanner/settings.json | 2 + Robot/Chreo_Auto_Project.chor | 1181 ++++++++++++++++- .../main/deploy/choreo/Amp Side Mid A.1.traj | 21 +- .../main/deploy/choreo/Amp Side Mid A.2.traj | 25 +- .../main/deploy/choreo/Amp Side Mid A.3.traj | 12 +- .../main/deploy/choreo/Amp Side Mid A.4.traj | 21 +- .../main/deploy/choreo/Amp Side Mid A.traj | 70 +- .../main/deploy/choreo/Amp Side Mid B.1.traj | 21 +- .../main/deploy/choreo/Amp Side Mid B.2.traj | 34 +- .../main/deploy/choreo/Amp Side Mid B.3.traj | 34 +- .../main/deploy/choreo/Amp Side Mid B.4.traj | 21 +- .../main/deploy/choreo/Amp Side Mid B.traj | 70 +- .../deploy/choreo/Amp Side Start A.1.traj | 34 +- .../main/deploy/choreo/Amp Side Start A.traj | 34 +- .../deploy/choreo/Amp Side Start B.1.traj | 34 +- .../deploy/choreo/Amp Side Start B.2.traj | 21 +- .../main/deploy/choreo/Amp Side Start B.traj | 43 +- .../deploy/choreo/Amp Side Start C.1.traj | 25 +- .../deploy/choreo/Amp Side Start C.2.traj | 12 +- .../deploy/choreo/Amp Side Start C.3.traj | 21 +- .../deploy/choreo/Amp Side Start C.4.traj | 12 +- .../main/deploy/choreo/Amp Side Start C.traj | 43 +- Robot/src/main/deploy/choreo/New Path.1.traj | 968 ++++++++++++++ Robot/src/main/deploy/choreo/New Path.traj | 968 ++++++++++++++ .../src/main/deploy/choreo/Source End.1.traj | 21 +- Robot/src/main/deploy/choreo/Source End.traj | 21 +- .../src/main/deploy/choreo/Source Mid.1.traj | 12 +- Robot/src/main/deploy/choreo/Source Mid.traj | 12 +- .../deploy/choreo/Source Side Start A.1.traj | 25 +- .../deploy/choreo/Source Side Start A.2.traj | 12 +- .../deploy/choreo/Source Side Start A.traj | 34 +- .../deploy/choreo/Source Side Start B.1.traj | 34 +- .../deploy/choreo/Source Side Start B.traj | 34 +- Robot/src/main/deploy/music/Tetris.chrp | Bin 0 -> 31428 bytes Robot/src/main/deploy/music/a.chrp | Bin 0 -> 14838 bytes Robot/src/main/deploy/music/never.chrp | Bin 0 -> 53232 bytes .../main/deploy/pathplanner/autos/Big.auto | 37 + .../autos/Center Through 3 note.auto | 61 + .../pathplanner/autos/Even Less Funny.auto | 61 + .../deploy/pathplanner/autos/Just Center.auto | 49 + .../{Source Fast.auto => The Funny.auto} | 4 +- .../deploy/pathplanner/autos/The Unfunny.auto | 61 + .../pathplanner/paths/Amp Center A Grab.path | 8 +- .../pathplanner/paths/Amp Center A Score.path | 8 +- .../pathplanner/paths/Amp Center B Grab.path | 8 +- .../pathplanner/paths/Amp Center Start.path | 58 + .../pathplanner/paths/Amp Start Greedy C.path | 8 +- .../main/deploy/pathplanner/paths/Big A.path | 128 ++ .../main/deploy/pathplanner/paths/Big B.path | 123 ++ .../main/deploy/pathplanner/paths/Big C.path | 52 + .../paths/Center Grab Middle A.path | 88 ++ .../paths/Center Middle Score A.path | 88 ++ .../Source Center A Fast From Subwoofer.path | 81 ++ .../paths/Source Center A Grab.path | 18 +- .../paths/Source Center A Score.path | 16 +- .../paths/Source Center B Grab.path | 8 +- .../paths/Source Center B Score.path | 8 +- .../pathplanner/paths/Source End Grab.path | 8 +- .../pathplanner/paths/Start Center.path | 4 +- 59 files changed, 4057 insertions(+), 860 deletions(-) create mode 100644 Robot/src/main/deploy/choreo/New Path.1.traj create mode 100644 Robot/src/main/deploy/choreo/New Path.traj create mode 100644 Robot/src/main/deploy/music/Tetris.chrp create mode 100644 Robot/src/main/deploy/music/a.chrp create mode 100644 Robot/src/main/deploy/music/never.chrp create mode 100644 Robot/src/main/deploy/pathplanner/autos/Big.auto create mode 100644 Robot/src/main/deploy/pathplanner/autos/Center Through 3 note.auto create mode 100644 Robot/src/main/deploy/pathplanner/autos/Even Less Funny.auto create mode 100644 Robot/src/main/deploy/pathplanner/autos/Just Center.auto rename Robot/src/main/deploy/pathplanner/autos/{Source Fast.auto => The Funny.auto} (95%) create mode 100644 Robot/src/main/deploy/pathplanner/autos/The Unfunny.auto create mode 100644 Robot/src/main/deploy/pathplanner/paths/Amp Center Start.path create mode 100644 Robot/src/main/deploy/pathplanner/paths/Big A.path create mode 100644 Robot/src/main/deploy/pathplanner/paths/Big B.path create mode 100644 Robot/src/main/deploy/pathplanner/paths/Big C.path create mode 100644 Robot/src/main/deploy/pathplanner/paths/Center Grab Middle A.path create mode 100644 Robot/src/main/deploy/pathplanner/paths/Center Middle Score A.path create mode 100644 Robot/src/main/deploy/pathplanner/paths/Source Center A Fast From Subwoofer.path diff --git a/Robot/.pathplanner/settings.json b/Robot/.pathplanner/settings.json index 7fdf5ce..fdc83e1 100644 --- a/Robot/.pathplanner/settings.json +++ b/Robot/.pathplanner/settings.json @@ -4,10 +4,12 @@ "holonomicMode": true, "pathFolders": [ "Amp", + "Center", "Source" ], "autoFolders": [ "Amp", + "Center", "Source" ], "defaultMaxVel": 5.7, diff --git a/Robot/Chreo_Auto_Project.chor b/Robot/Chreo_Auto_Project.chor index 00d0a2d..14a03bc 100644 --- a/Robot/Chreo_Auto_Project.chor +++ b/Robot/Chreo_Auto_Project.chor @@ -306,7 +306,7 @@ { "name": "Marker", "target": 0, - "targetTimestamp": 0, + "targetTimestamp": null, "offset": 0, "command": { "type": "parallel", @@ -331,7 +331,7 @@ { "name": "Marker", "target": 2, - "targetTimestamp": 1.345777924459432, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -3103,7 +3103,7 @@ { "name": "Intake On", "target": 0, - "targetTimestamp": 0, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -3115,7 +3115,7 @@ { "name": "Shoot", "target": 2, - "targetTimestamp": 4.8339863415393385, + "targetTimestamp": null, "offset": -0.375, "command": { "type": "named", @@ -3127,7 +3127,7 @@ { "name": "Sh + Intake Off", "target": 6, - "targetTimestamp": 9.62936328972116, + "targetTimestamp": null, "offset": -0.375, "command": { "type": "parallel", @@ -3152,7 +3152,7 @@ { "name": "Intake On", "target": 7, - "targetTimestamp": 10.559677531131124, + "targetTimestamp": null, "offset": 0.25, "command": { "type": "named", @@ -3164,7 +3164,7 @@ { "name": "Intake Off", "target": 8, - "targetTimestamp": 12.148260076385506, + "targetTimestamp": null, "offset": 1, "command": { "type": "named", @@ -3176,7 +3176,7 @@ { "name": "Shoot", "target": 10, - "targetTimestamp": 14.368347296033944, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -3633,7 +3633,7 @@ { "name": "Marker", "target": 0, - "targetTimestamp": 0, + "targetTimestamp": null, "offset": 0, "command": { "type": "parallel", @@ -3658,7 +3658,7 @@ { "name": "Marker", "target": 3, - "targetTimestamp": 2.7247702180813835, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -3670,7 +3670,7 @@ { "name": "Marker", "target": 1, - "targetTimestamp": 1.1188419422722011, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -5205,7 +5205,7 @@ { "name": "Sh + Intake On", "target": 0, - "targetTimestamp": 0, + "targetTimestamp": null, "offset": 0, "command": { "type": "parallel", @@ -5230,7 +5230,7 @@ { "name": "Shoot", "target": 6, - "targetTimestamp": 6.9045541900168, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -6392,7 +6392,7 @@ { "name": "Shoot", "target": 4, - "targetTimestamp": 5.486705992958161, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -7902,7 +7902,7 @@ { "name": "Shoot", "target": 0, - "targetTimestamp": 0, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -7914,7 +7914,7 @@ { "name": "Intake Off", "target": 2, - "targetTimestamp": 3.167155129979705, + "targetTimestamp": null, "offset": 0.5, "command": { "type": "named", @@ -10214,7 +10214,7 @@ { "name": "Intake On", "target": 0, - "targetTimestamp": 0, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -10226,7 +10226,7 @@ { "name": "Shoot", "target": 2, - "targetTimestamp": 4.459144371352818, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -10238,7 +10238,7 @@ { "name": "Sh + Intake Off", "target": 4, - "targetTimestamp": 8.21048380400154, + "targetTimestamp": null, "offset": 0, "command": { "type": "parallel", @@ -10263,7 +10263,7 @@ { "name": "Intake On", "target": 5, - "targetTimestamp": 8.93056949494445, + "targetTimestamp": null, "offset": 0.5, "command": { "type": "named", @@ -10275,7 +10275,7 @@ { "name": "Intake Off", "target": 6, - "targetTimestamp": 10.388440574139693, + "targetTimestamp": null, "offset": 1, "command": { "type": "named", @@ -10287,7 +10287,7 @@ { "name": "Shoot", "target": 8, - "targetTimestamp": 12.650948780817089, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -11080,7 +11080,7 @@ { "name": "Marker", "target": 0, - "targetTimestamp": 0, + "targetTimestamp": null, "offset": 0, "command": { "type": "parallel", @@ -11105,7 +11105,7 @@ { "name": "Marker", "target": 3, - "targetTimestamp": 3.574991146964629, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -11117,7 +11117,7 @@ { "name": "Marker", "target": 2, - "targetTimestamp": 2.6397047968676115, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -12590,7 +12590,7 @@ { "name": "Sh + Intake On", "target": 0, - "targetTimestamp": 0, + "targetTimestamp": null, "offset": 0, "command": { "type": "parallel", @@ -12615,7 +12615,7 @@ { "name": "Shoot", "target": 5, - "targetTimestamp": 5.6495688747858885, + "targetTimestamp": null, "offset": 0, "command": { "type": "named", @@ -12626,6 +12626,1133 @@ } ], "isTrajectoryStale": true + }, + "New Path": { + "waypoints": [ + { + "x": 1.373390793800354, + "y": 5.535864353179932, + "heading": -3.14, + "isInitialGuess": false, + "translationConstrained": true, + "headingConstrained": true, + "controlIntervalCount": 10 + }, + { + "x": 2.4662020206451416, + "y": 5.5926337242126465, + "heading": -3.141592653589793, + "isInitialGuess": false, + "translationConstrained": true, + "headingConstrained": true, + "controlIntervalCount": 33 + }, + { + "x": 5.460788726806641, + "y": 6.316443920135498, + "heading": 0, + "isInitialGuess": false, + "translationConstrained": true, + "headingConstrained": false, + "controlIntervalCount": 29 + }, + { + "x": 7.830911636352539, + "y": 7.267331600189209, + "heading": -2.632000433076407, + "isInitialGuess": false, + "translationConstrained": true, + "headingConstrained": true, + "controlIntervalCount": 17 + }, + { + "x": 5.347249984741211, + "y": 6.713829517364502, + "heading": -2.9251958710092785, + "isInitialGuess": false, + "translationConstrained": true, + "headingConstrained": true, + "controlIntervalCount": 17 + }, + { + "x": 7.731565475463867, + "y": 5.833903789520264, + "heading": -3.2203761058660962, + "isInitialGuess": false, + "translationConstrained": true, + "headingConstrained": true, + "controlIntervalCount": 40 + } + ], + "trajectory": [ + { + "x": 1.373390793800354, + "y": 5.535864353179932, + "heading": -3.14, + "angularVelocity": -2.82434317075584e-23, + "velocityX": 1.7420984263678853e-22, + "velocityY": 6.607050300828325e-22, + "timestamp": 0 + }, + { + "x": 1.3954167220425728, + "y": 5.535862029256062, + "heading": -3.141163552097975, + "angularVelocity": -0.016470698213205317, + "velocityX": 0.31178871799098296, + "velocityY": -0.000032896377210242694, + "timestamp": 0.07064376281522751 + }, + { + "x": 1.4394687417666225, + "y": 5.535912852760689, + "heading": -3.143439344791257, + "angularVelocity": -0.03221505484121067, + "velocityX": 0.6235797467254175, + "velocityY": 0.0007194337135808534, + "timestamp": 0.14128752563045502 + }, + { + "x": 1.5055468364541058, + "y": 5.536091210226698, + "heading": -3.146758591200165, + "angularVelocity": -0.046985696636652786, + "velocityX": 0.9353705416331396, + "velocityY": 0.0025247447035990096, + "timestamp": 0.21193128844568254 + }, + { + "x": 1.5936505240571006, + "y": 5.5365020610023254, + "heading": -3.151024261015905, + "angularVelocity": -0.060382822852982895, + "velocityX": 1.2471545128964379, + "velocityY": 0.005815811039144578, + "timestamp": 0.28257505126091004 + }, + { + "x": 1.7037780479554485, + "y": 5.537304646188576, + "heading": -3.1560891544883583, + "angularVelocity": -0.0716962583901507, + "velocityX": 1.5589136182679146, + "velocityY": 0.011361019773914906, + "timestamp": 0.35321881407613753 + }, + { + "x": 1.8359235973509576, + "y": 5.538769224266934, + "heading": -3.161703337960502, + "angularVelocity": -0.07947175020713407, + "velocityX": 1.8705904687034165, + "velocityY": 0.020731880919063646, + "timestamp": 0.42386257689136503 + }, + { + "x": 1.9900638368261871, + "y": 5.541454826155834, + "heading": -3.167348805342055, + "angularVelocity": -0.07991459056787735, + "velocityX": 2.181936993905504, + "velocityY": 0.038016121761865675, + "timestamp": 0.4945063397065925 + }, + { + "x": 2.166014894423818, + "y": 5.547190591916742, + "heading": -3.171311156220804, + "angularVelocity": -0.05608918212797654, + "velocityX": 2.490680713849295, + "velocityY": 0.0811928121086299, + "timestamp": 0.5651501025218201 + }, + { + "x": 2.3270054280383907, + "y": 5.568416514813431, + "heading": -3.158429642768342, + "angularVelocity": 0.18234466765529062, + "velocityX": 2.278906547427999, + "velocityY": 0.3004642172332755, + "timestamp": 0.6357938653370476 + }, + { + "x": 2.4662020206451416, + "y": 5.5926337242126465, + "heading": -3.141592653589793, + "angularVelocity": 0.23833652834415398, + "velocityX": 1.9704017320089124, + "velocityY": 0.34280746712991245, + "timestamp": 0.7064376281522752 + }, + { + "x": 2.5179211474133147, + "y": 5.6019384518743145, + "heading": -3.1354979741268703, + "angularVelocity": 0.24463821278963835, + "velocityX": 2.0759869024413646, + "velocityY": 0.37348837777157223, + "timestamp": 0.731350659495272 + }, + { + "x": 2.572270701485961, + "y": 5.612007668253337, + "heading": -3.1292503555801803, + "angularVelocity": 0.2507771318822764, + "velocityX": 2.18157129593641, + "velocityY": 0.40417467631263526, + "timestamp": 0.7562636908382688 + }, + { + "x": 2.6292506611625033, + "y": 5.622841519442725, + "heading": -3.1228541907783236, + "angularVelocity": 0.25673972443561044, + "velocityX": 2.28715481837821, + "velocityY": 0.4348668389739167, + "timestamp": 0.7811767221812657 + }, + { + "x": 2.6888610019940837, + "y": 5.6344401650270655, + "heading": -3.1163142562473505, + "angularVelocity": 0.26251058897381424, + "velocityX": 2.3927373594516785, + "velocityY": 0.4655654073025398, + "timestamp": 0.8060897535242625 + }, + { + "x": 2.7511016962877353, + "y": 5.646803780019505, + "heading": -3.109635766981535, + "angularVelocity": 0.26807212554215154, + "velocityX": 2.4983187889396388, + "velocityY": 0.4962710005947778, + "timestamp": 0.8310027848672593 + }, + { + "x": 2.81597271249104, + "y": 5.659932557185373, + "heading": -3.102824442395177, + "angularVelocity": 0.27340408690462376, + "velocityX": 2.6038989519249967, + "velocityY": 0.5269843314172872, + "timestamp": 0.8559158162102561 + }, + { + "x": 2.8834740144199107, + "y": 5.673826709854039, + "heading": -3.0958865864334353, + "angularVelocity": 0.27848301020550864, + "velocityX": 2.709477662494325, + "velocityY": 0.5577062252030255, + "timestamp": 0.880828847553253 + }, + { + "x": 2.953605560277617, + "y": 5.688486475354224, + "heading": -3.0888291858243515, + "angularVelocity": 0.2832814887887059, + "velocityX": 2.8150546953580386, + "velocityY": 0.5884376452769706, + "timestamp": 0.9057418788962498 + }, + { + "x": 3.026367301391608, + "y": 5.703912119255662, + "heading": -3.0816600318771536, + "angularVelocity": 0.28776722705858193, + "velocityX": 2.9206297745234426, + "velocityY": 0.619179725223414, + "timestamp": 0.9306549102392466 + }, + { + "x": 3.1017591805622913, + "y": 5.720103940668468, + "heading": -3.0743878732860472, + "angularVelocity": 0.2919017959310087, + "velocityX": 3.026202557717816, + "velocityY": 0.6499338113408133, + "timestamp": 0.9555679415822435 + }, + { + "x": 3.179781129867705, + "y": 5.737062278951719, + "heading": -3.067022610425793, + "angularVelocity": 0.29563896736817125, + "velocityX": 3.131772614549612, + "velocityY": 0.6807015192079763, + "timestamp": 0.9804809729252403 + }, + { + "x": 3.2604330676886852, + "y": 5.7547875223330545, + "heading": -3.0595755461907523, + "angularVelocity": 0.29892244474433144, + "velocityX": 3.2373393952177807, + "velocityY": 0.7114848103907929, + "timestamp": 1.0053940042682372 + }, + { + "x": 3.343714894589163, + "y": 5.773280119171789, + "heading": -3.0520597154967803, + "angularVelocity": 0.3016827053478781, + "velocityX": 3.3429021845584823, + "velocityY": 0.742286098553487, + "timestamp": 1.030307035611234 + }, + { + "x": 3.4296264874669924, + "y": 5.792540592963052, + "heading": -3.0444903268373738, + "angularVelocity": 0.3038325025643338, + "velocityX": 3.4484600326238115, + "velocityY": 0.7731083996198849, + "timestamp": 1.0552200669542309 + }, + { + "x": 3.5181676910051554, + "y": 5.812569562776201, + "heading": -3.036885367888651, + "angularVelocity": 0.30526028101597386, + "velocityX": 3.554011646320699, + "velocityY": 0.8039555499046173, + "timestamp": 1.0801330982972277 + }, + { + "x": 3.6093383047445466, + "y": 5.833367771831505, + "heading": -3.02926645910632, + "angularVelocity": 0.3058202222537983, + "velocityX": 3.6595552136621126, + "velocityY": 0.8348325327801501, + "timestamp": 1.1050461296402245 + }, + { + "x": 3.7031380627247383, + "y": 5.854936128710036, + "heading": -3.021660096759598, + "angularVelocity": 0.30531661290025214, + "velocityX": 3.765088105448813, + "velocityY": 0.8657459857687129, + "timestamp": 1.1299591609832214 + }, + { + "x": 3.799566599795939, + "y": 5.877275769035245, + "heading": -3.0140995363197214, + "angularVelocity": 0.3034781410493393, + "velocityX": 3.870606340255989, + "velocityY": 0.8967050222690318, + "timestamp": 1.1548721923262182 + }, + { + "x": 3.8986233923456974, + "y": 5.900388152110491, + "heading": -3.0066277903463905, + "angularVelocity": 0.29991316072545443, + "velocityX": 3.9761035574501644, + "velocityY": 0.9277226346741867, + "timestamp": 1.179785223669215 + }, + { + "x": 4.000307645489192, + "y": 5.924275221259104, + "heading": -2.9993027111169632, + "angularVelocity": 0.2940260110693561, + "velocityX": 4.081568868257279, + "velocityY": 0.9588182513698355, + "timestamp": 1.2046982550122118 + }, + { + "x": 4.104618054767629, + "y": 5.9489396903011205, + "heading": -2.992206361108462, + "angularVelocity": 0.28484490348846914, + "velocityX": 4.18698181856379, + "velocityY": 0.9900227998127282, + "timestamp": 1.2296112863552087 + }, + { + "x": 4.2115522235858025, + "y": 5.974385608457378, + "heading": -2.9854644417536758, + "angularVelocity": 0.27061818620004263, + "velocityX": 4.292298570411896, + "velocityY": 1.0213898825045442, + "timestamp": 1.2545243176982055 + }, + { + "x": 4.321104885250453, + "y": 6.000619634583579, + "heading": -2.9792944544666136, + "angularVelocity": 0.24766104140903092, + "velocityX": 4.39740391911185, + "velocityY": 1.0530242492380477, + "timestamp": 1.2794373490412023 + }, + { + "x": 4.433259894338234, + "y": 6.027654403922367, + "heading": -2.9741691000976167, + "angularVelocity": 0.20572985673369118, + "velocityX": 4.501861196401822, + "velocityY": 1.0851657900069145, + "timestamp": 1.3043503803841991 + }, + { + "x": 4.547895470478681, + "y": 6.055502741756316, + "heading": -2.972022644848979, + "angularVelocity": 0.08615793152931939, + "velocityX": 4.601430253997158, + "velocityY": 1.1178221329447748, + "timestamp": 1.329263411727196 + }, + { + "x": 4.662586364395008, + "y": 6.086032564553175, + "heading": -2.9720226405281305, + "angularVelocity": 1.7343729890429694e-7, + "velocityX": 4.6036506893638345, + "velocityY": 1.2254559622445014, + "timestamp": 1.3541764430701928 + }, + { + "x": 4.776604144026135, + "y": 6.118987340123003, + "heading": -2.972022636821939, + "angularVelocity": 1.487651723674871e-7, + "velocityX": 4.576632127233111, + "velocityY": 1.3227926829182501, + "timestamp": 1.3790894744131896 + }, + { + "x": 4.890615117413081, + "y": 6.151965655001972, + "heading": -2.9720226331157256, + "angularVelocity": 1.4876605726394647e-7, + "velocityX": 4.576358927071857, + "velocityY": 1.3237375422095177, + "timestamp": 1.4040025057561865 + }, + { + "x": 5.0046260804479115, + "y": 6.184944005669727, + "heading": -2.972022629409512, + "angularVelocity": 1.487660596456677e-7, + "velocityX": 4.576358511541768, + "velocityY": 1.3237389787584244, + "timestamp": 1.4289155370991833 + }, + { + "x": 5.118637043467059, + "y": 6.217922356391706, + "heading": -2.9720226257032984, + "angularVelocity": 1.4876606015209578e-7, + "velocityX": 4.57635851091221, + "velocityY": 1.3237389809348972, + "timestamp": 1.4538285684421801 + }, + { + "x": 5.232648006768652, + "y": 6.2509007061372195, + "heading": -2.972022621997085, + "angularVelocity": 1.4876606132175137e-7, + "velocityX": 4.576358522249539, + "velocityY": 1.3237389417401004, + "timestamp": 1.478741599785177 + }, + { + "x": 5.346659155827142, + "y": 6.283878413687287, + "heading": -2.972022618290872, + "angularVelocity": 1.4876602083758807e-7, + "velocityX": 4.576365978463671, + "velocityY": 1.323713164248677, + "timestamp": 1.5036546311281738 + }, + { + "x": 5.460788726806641, + "y": 6.316443920135498, + "heading": -2.972022613636867, + "angularVelocity": 1.8681006445890502e-7, + "velocityX": 4.581119391220948, + "velocityY": 1.3071675622230816, + "timestamp": 1.5285676624711706 + }, + { + "x": 5.619993247774208, + "y": 6.360818104348682, + "heading": -2.9591725358910055, + "angularVelocity": 0.36086031768123, + "velocityX": 4.470836297558475, + "velocityY": 1.2461311541225735, + "timestamp": 1.5641772241664869 + }, + { + "x": 5.773672003470037, + "y": 6.404401799450161, + "heading": -2.944913611897587, + "angularVelocity": 0.4004240241826515, + "velocityX": 4.315659850316082, + "velocityY": 1.2239323660985362, + "timestamp": 1.5997867858618031 + }, + { + "x": 5.921814760313314, + "y": 6.447170078076461, + "heading": -2.9302180374942255, + "angularVelocity": 0.41268619167795345, + "velocityX": 4.1601960201257535, + "velocityY": 1.2010335592511447, + "timestamp": 1.6353963475571194 + }, + { + "x": 6.064421266917378, + "y": 6.4891155098465925, + "heading": -2.9153905734710155, + "angularVelocity": 0.41638996149621743, + "velocityX": 4.004725130408471, + "velocityY": 1.1779260898807962, + "timestamp": 1.6710059092524356 + }, + { + "x": 6.201491916625645, + "y": 6.5302345384208484, + "heading": -2.9005808672107585, + "angularVelocity": 0.4158912818689674, + "velocityX": 3.8492652866967405, + "velocityY": 1.154718750151433, + "timestamp": 1.706615470947752 + }, + { + "x": 6.333027104014587, + "y": 6.570525082703978, + "heading": -2.8858780184011064, + "angularVelocity": 0.4128904740657215, + "velocityX": 3.693816523617669, + "velocityY": 1.131452968387105, + "timestamp": 1.7422250326430682 + }, + { + "x": 6.459027156593173, + "y": 6.6099857791590395, + "heading": -2.871341244225326, + "angularVelocity": 0.40822670888680024, + "velocityX": 3.5383769577585027, + "velocityY": 1.1081488953078464, + "timestamp": 1.7778345943383844 + }, + { + "x": 6.579492339397848, + "y": 6.648615666984608, + "heading": -2.8570128319385093, + "angularVelocity": 0.4023754184175068, + "velocityX": 3.3829448347441886, + "velocityY": 1.084817840671425, + "timestamp": 1.8134441560337007 + }, + { + "x": 6.694422868067946, + "y": 6.686414033876065, + "heading": -2.8429245554455904, + "angularVelocity": 0.39563184218500724, + "velocityX": 3.2275187673881494, + "velocityY": 1.0614667828508728, + "timestamp": 1.849053717729017 + }, + { + "x": 6.803818920282884, + "y": 6.723380331567842, + "heading": -2.8291012163393043, + "angularVelocity": 0.3881917790665907, + "velocityX": 3.0720976896867125, + "velocityY": 1.0381003284474422, + "timestamp": 1.8846632794243332 + }, + { + "x": 6.907680644474139, + "y": 6.7595141257035065, + "heading": -2.815562757243929, + "angularVelocity": 0.38019168029119643, + "velocityX": 2.9166807802893104, + "velocityY": 1.0147216762967697, + "timestamp": 1.9202728411196495 + }, + { + "x": 7.006008166274734, + "y": 6.794815064200952, + "heading": -2.8023256004495165, + "angularVelocity": 0.3717304050994219, + "velocityX": 2.7612673989618037, + "velocityY": 0.9913331368548697, + "timestamp": 1.9558824028149657 + }, + { + "x": 7.0988015932971456, + "y": 6.8292828563027905, + "heading": -2.78940353644908, + "angularVelocity": 0.36288186052389076, + "velocityX": 2.605857039644986, + "velocityY": 0.967936432263727, + "timestamp": 1.991491964510282 + }, + { + "x": 7.1860610187092355, + "y": 6.862917258151496, + "heading": -2.7768083363965803, + "angularVelocity": 0.3537027543407289, + "velocityX": 2.450449296700172, + "velocityY": 0.9445328795812922, + "timestamp": 2.0271015262055982 + }, + { + "x": 7.267786523946172, + "y": 6.895718062532486, + "heading": -2.7645501875766114, + "angularVelocity": 0.34423756531609073, + "velocityX": 2.295043840645944, + "velocityY": 0.92112350782753, + "timestamp": 2.0627110879009143 + }, + { + "x": 7.343978180795563, + "y": 6.927685091381284, + "heading": -2.752638011172443, + "angularVelocity": 0.3345218485442658, + "velocityX": 2.139640400556062, + "velocityY": 0.8977091356056494, + "timestamp": 2.0983206495962303 + }, + { + "x": 7.41463605302207, + "y": 6.958818190182592, + "heading": -2.741079699300761, + "angularVelocity": 0.3245845026281963, + "velocityX": 1.9842387511273427, + "velocityY": 0.8742904242318493, + "timestamp": 2.1339302112915464 + }, + { + "x": 7.4797601976490595, + "y": 6.989117223699881, + "heading": -2.729882295187736, + "angularVelocity": 0.314449366404244, + "velocityX": 1.8288387030485591, + "velocityY": 0.8508679150991757, + "timestamp": 2.1695397729868624 + }, + { + "x": 7.539350665981394, + "y": 7.018582072662865, + "heading": -2.7190521323770627, + "angularVelocity": 0.30413636942061584, + "velocityX": 1.673440095730611, + "velocityY": 0.8274420565771762, + "timestamp": 2.2051493346821784 + }, + { + "x": 7.59340750443028, + "y": 7.047212631158878, + "heading": -2.70859494382748, + "angularVelocity": 0.29366237751132823, + "velocityX": 1.5180427917481332, + "velocityY": 0.804013223779112, + "timestamp": 2.2407588963774945 + }, + { + "x": 7.641930755184944, + "y": 7.075008804550945, + "heading": -2.698515948490913, + "angularVelocity": 0.2830418251930565, + "velocityX": 1.3626466725381483, + "velocityY": 0.7805817333529121, + "timestamp": 2.2763684580728105 + }, + { + "x": 7.68492045676446, + "y": 7.101970507796351, + "heading": -2.688819920787713, + "angularVelocity": 0.2722871959548869, + "velocityX": 1.2072516350340368, + "velocityY": 0.7571478547278054, + "timestamp": 2.3119780197681266 + }, + { + "x": 7.722376644474786, + "y": 7.128097664074123, + "heading": -2.6795112469143856, + "angularVelocity": 0.26140939203280295, + "velocityX": 1.0518575890040596, + "velocityY": 0.7337118187896131, + "timestamp": 2.3475875814634426 + }, + { + "x": 7.75429935079016, + "y": 7.153390203653904, + "heading": -2.6705939708898794, + "angularVelocity": 0.25041802257507934, + "velocityX": 0.8964644549268095, + "velocityY": 0.7102738246595033, + "timestamp": 2.3831971431587586 + }, + { + "x": 7.7806886056735625, + "y": 7.177848062955659, + "heading": -2.6620718325179498, + "angularVelocity": 0.2393216306577293, + "velocityX": 0.7410721622803245, + "velocityY": 0.6868340450528948, + "timestamp": 2.4188067048540747 + }, + { + "x": 7.801544436847726, + "y": 7.201471183761836, + "heading": -2.653948298918918, + "angularVelocity": 0.22812787387103486, + "velocityX": 0.5856806481531491, + "velocityY": 0.6633926305608906, + "timestamp": 2.4544162665493907 + }, + { + "x": 7.8168668700256845, + "y": 7.224259512552509, + "heading": -2.646226590901266, + "angularVelocity": 0.21684366922907553, + "velocityX": 0.43028985610836296, + "velocityY": 0.6399497131038998, + "timestamp": 2.4900258282447068 + }, + { + "x": 7.82665592910803, + "y": 7.246212999940603, + "heading": -2.638909705160028, + "angularVelocity": 0.20547531036307248, + "velocityX": 0.2748997352481349, + "velocityY": 0.6165054087420264, + "timestamp": 2.525635389940023 + }, + { + "x": 7.830911636352539, + "y": 7.267331600189209, + "heading": -2.632000433076407, + "angularVelocity": 0.19402856296683813, + "velocityX": 0.11951023943856069, + "velocityY": 0.5930598199804185, + "timestamp": 2.561244951635339 + }, + { + "x": 7.807554746211344, + "y": 7.314481773120804, + "heading": -2.617417777164506, + "angularVelocity": 0.16547612190182404, + "velocityX": -0.26504140422718087, + "velocityY": 0.5350347571016485, + "timestamp": 2.6493703907881385 + }, + { + "x": 7.750362372151811, + "y": 7.356181644302872, + "heading": -2.6054727306062277, + "angularVelocity": 0.13554595214631465, + "velocityX": -0.6489882445903903, + "velocityY": 0.4731876695645769, + "timestamp": 2.737495829940938 + }, + { + "x": 7.659408985329993, + "y": 7.391993364231043, + "heading": -2.59631898714542, + "angularVelocity": 0.1038717485984504, + "velocityX": -1.0320900264010608, + "velocityY": 0.40637210177277355, + "timestamp": 2.825621269093738 + }, + { + "x": 7.53480466246767, + "y": 7.421324954259901, + "heading": -2.590159490954979, + "angularVelocity": 0.06989464392638106, + "velocityX": -1.4139427168842045, + "velocityY": 0.33283907928107187, + "timestamp": 2.9137467082465376 + }, + { + "x": 7.376725182280505, + "y": 7.443332574685867, + "heading": -2.58727756406566, + "angularVelocity": 0.03270255350809968, + "velocityX": -1.7938007652146122, + "velocityY": 0.24973061850854159, + "timestamp": 3.0018721473993373 + }, + { + "x": 7.185484575073475, + "y": 7.456719845251442, + "heading": -2.588100582009295, + "angularVelocity": -0.009339164168109404, + "velocityX": -2.1700953668490657, + "velocityY": 0.15191153308595862, + "timestamp": 3.089997586552137 + }, + { + "x": 6.96175198859567, + "y": 7.459256684180001, + "heading": -2.593352929900895, + "angularVelocity": -0.05960081381828049, + "velocityX": -2.538796840375215, + "velocityY": 0.028786681268744098, + "timestamp": 3.1781230257049367 + }, + { + "x": 6.707472058422852, + "y": 7.446334711458515, + "heading": -2.6045310943802176, + "angularVelocity": -0.12684378752360922, + "velocityX": -2.885431637190761, + "velocityY": -0.14663158386173333, + "timestamp": 3.2662484648577363 + }, + { + "x": 6.432924312323279, + "y": 7.405922956679372, + "heading": -2.6259949207482713, + "angularVelocity": -0.24355993654497712, + "velocityX": -3.1154198916789273, + "velocityY": -0.4585708186835176, + "timestamp": 3.354373904010536 + }, + { + "x": 6.179679523545089, + "y": 7.338809872599317, + "heading": -2.658648029247715, + "angularVelocity": -0.3705298811938591, + "velocityX": -2.8736854103965634, + "velocityY": -0.7615631164536769, + "timestamp": 3.4424993431633357 + }, + { + "x": 5.958645318140905, + "y": 7.260012876936155, + "heading": -2.6951092608022327, + "angularVelocity": -0.41374240974048565, + "velocityX": -2.508177065886002, + "velocityY": -0.8941458496057648, + "timestamp": 3.5306247823161354 + }, + { + "x": 5.7713029407636975, + "y": 7.174908602956231, + "heading": -2.733160894484531, + "angularVelocity": -0.4317894361504518, + "velocityX": -2.125860355173683, + "velocityY": -0.9657174454740964, + "timestamp": 3.618750221468935 + }, + { + "x": 5.618026104094792, + "y": 7.085979942990996, + "heading": -2.771854911215978, + "angularVelocity": -0.4390788528651328, + "velocityX": -1.739302954316538, + "velocityY": -1.009114516990289, + "timestamp": 3.706875660621735 + }, + { + "x": 5.498943908482782, + "y": 6.994633502423811, + "heading": -2.8106774088345605, + "angularVelocity": -0.44053678474462404, + "velocityX": -1.3512805922650102, + "velocityY": -1.0365501885193495, + "timestamp": 3.7950010997745345 + }, + { + "x": 5.414108133317092, + "y": 6.901770404602659, + "heading": -2.8493092023731994, + "angularVelocity": -0.43837277760007154, + "velocityX": -0.962670665601943, + "velocityY": -1.0537603978362906, + "timestamp": 3.883126538927334 + }, + { + "x": 5.363540600270839, + "y": 6.808016064764776, + "heading": -2.887533978669486, + "angularVelocity": -0.43375416524176585, + "velocityX": -0.5738131183502542, + "velocityY": -1.0638737320255882, + "timestamp": 3.971251978080134 + }, + { + "x": 5.347249984741211, + "y": 6.713829517364502, + "heading": -2.9251958710092785, + "angularVelocity": -0.42736686139505325, + "velocityX": -0.1848571273657065, + "velocityY": -1.0687781905627245, + "timestamp": 4.059377417232933 + }, + { + "x": 5.365891027779734, + "y": 6.618393862600329, + "heading": -2.9626265560753033, + "angularVelocity": -0.41954951992944506, + "velocityX": 0.20894195882338126, + "velocityY": -1.0697101340740476, + "timestamp": 4.148593786905622 + }, + { + "x": 5.419665157043064, + "y": 6.523079084641424, + "heading": -2.999289019090276, + "angularVelocity": -0.41093874531633023, + "velocityX": 0.6027383703306144, + "velocityY": -1.068355261580243, + "timestamp": 4.237810156578312 + }, + { + "x": 5.508570208017759, + "y": 6.428155743046912, + "heading": -3.0350883376100666, + "angularVelocity": -0.4012640129959147, + "velocityX": 0.9965105204444354, + "velocityY": -1.0639677667087186, + "timestamp": 4.327026526251001 + }, + { + "x": 5.632599675291343, + "y": 6.3339997437304225, + "heading": -3.069891429914663, + "angularVelocity": -0.39009760688850553, + "velocityX": 1.3902097533066353, + "velocityY": -1.0553668532122726, + "timestamp": 4.41624289592369 + }, + { + "x": 5.791736419311823, + "y": 6.241168484817361, + "heading": -3.1034994514568583, + "angularVelocity": -0.37670241084112394, + "velocityX": 1.7837168739807538, + "velocityY": -1.0405182283658685, + "timestamp": 4.50545926559638 + }, + { + "x": 5.985933114334994, + "y": 6.150573116808587, + "heading": -3.135584965329755, + "angularVelocity": -0.35963707098383246, + "velocityX": 2.1766935343326033, + "velocityY": -1.0154567860264216, + "timestamp": 4.594675635269069 + }, + { + "x": 6.21503104738065, + "y": 6.0639656632428816, + "heading": -3.1655118524413957, + "angularVelocity": -0.33544165965768785, + "velocityX": 2.567891227654233, + "velocityY": -0.9707574280756485, + "timestamp": 4.683892004941758 + }, + { + "x": 6.4781630503521095, + "y": 5.986007206964285, + "heading": -3.1915383988945667, + "angularVelocity": -0.29172389045480446, + "velocityX": 2.94936908929179, + "velocityY": -0.873813365917101, + "timestamp": 4.773108374614448 + }, + { + "x": 6.754060772112618, + "y": 5.940540712143944, + "heading": -3.202308528029517, + "angularVelocity": -0.12071920404812232, + "velocityX": 3.092456269770913, + "velocityY": -0.5096205437090053, + "timestamp": 4.862324744287137 + }, + { + "x": 6.9977159525173604, + "y": 5.908972295194805, + "heading": -3.2086126383290163, + "angularVelocity": -0.07066091483689793, + "velocityX": 2.731059123999851, + "velocityY": -0.353841083928376, + "timestamp": 4.951541113959826 + }, + { + "x": 7.207090659869358, + "y": 5.8850775781655935, + "heading": -3.212859245938106, + "angularVelocity": -0.047598973424597894, + "velocityX": 2.3468194023152535, + "velocityY": -0.2678288425865638, + "timestamp": 5.0407574836325155 + }, + { + "x": 7.381780547491699, + "y": 5.866770253471726, + "heading": -3.2158161125570914, + "angularVelocity": -0.033142646689540686, + "velocityX": 1.9580474778701502, + "velocityY": -0.20520140822846553, + "timestamp": 5.129973853305205 + }, + { + "x": 7.52163405520933, + "y": 5.853018511986726, + "heading": -3.217858423959668, + "angularVelocity": -0.02289166674310414, + "velocityX": 1.5675767600801969, + "velocityY": -0.1541392183458195, + "timestamp": 5.219190222977894 + }, + { + "x": 7.626575951196748, + "y": 5.843208449084505, + "heading": -3.2192083663887368, + "angularVelocity": -0.015131106926019615, + "velocityX": 1.1762627909252632, + "velocityY": -0.10995810452960539, + "timestamp": 5.3084065926505835 + }, + { + "x": 7.696562480811879, + "y": 5.836933286768317, + "heading": -3.220012824660454, + "angularVelocity": -0.009016935733524306, + "velocityX": 0.7844583888796706, + "velocityY": -0.070336445421512, + "timestamp": 5.397622962323273 + }, + { + "x": 7.731565475463867, + "y": 5.833903789520264, + "heading": -3.220376105866096, + "angularVelocity": -0.004071911992999992, + "velocityX": 0.3923382533990597, + "velocityY": -0.03395674201009736, + "timestamp": 5.486839331995962 + }, + { + "x": 7.731565475463867, + "y": 5.833903789520264, + "heading": -3.220376105866096, + "angularVelocity": -1.1180701405690067e-23, + "velocityX": 5.657605743248927e-25, + "velocityY": -3.7905848465979004e-24, + "timestamp": 5.576055701668651 + } + ], + "trajectoryWaypoints": [ + { + "timestamp": 0, + "isStopPoint": true, + "x": 1.373390793800354, + "y": 5.535864353179932, + "heading": -3.14, + "isInitialGuess": false, + "translationConstrained": true, + "headingConstrained": true, + "controlIntervalCount": 10 + }, + { + "timestamp": 0.7064376281522752, + "isStopPoint": false, + "x": 2.4662020206451416, + "y": 5.5926337242126465, + "heading": -3.141592653589793, + "isInitialGuess": false, + "translationConstrained": true, + "headingConstrained": true, + "controlIntervalCount": 33 + }, + { + "timestamp": 1.5285676624711706, + "isStopPoint": false, + "x": 5.460788726806641, + "y": 6.316443920135498, + "heading": 0, + "isInitialGuess": false, + "translationConstrained": true, + "headingConstrained": false, + "controlIntervalCount": 29 + }, + { + "timestamp": 2.561244951635339, + "isStopPoint": false, + "x": 7.830911636352539, + "y": 7.267331600189209, + "heading": -2.632000433076407, + "isInitialGuess": false, + "translationConstrained": true, + "headingConstrained": true, + "controlIntervalCount": 17 + }, + { + "timestamp": 4.059377417232933, + "isStopPoint": false, + "x": 5.347249984741211, + "y": 6.713829517364502, + "heading": -2.9251958710092785, + "isInitialGuess": false, + "translationConstrained": true, + "headingConstrained": true, + "controlIntervalCount": 17 + }, + { + "timestamp": 5.576055701668651, + "isStopPoint": true, + "x": 7.731565475463867, + "y": 5.833903789520264, + "heading": -3.2203761058660962, + "isInitialGuess": false, + "translationConstrained": true, + "headingConstrained": true, + "controlIntervalCount": 40 + } + ], + "constraints": [ + { + "scope": [ + "first" + ], + "type": "StopPoint" + }, + { + "scope": [ + "last" + ], + "type": "StopPoint" + }, + { + "scope": [ + 1, + 1 + ], + "type": "MaxVelocity", + "velocity": 2 + }, + { + "scope": [ + 3, + 3 + ], + "type": "MaxVelocity", + "velocity": 1 + } + ], + "usesControlIntervalGuessing": true, + "defaultControlIntervalCount": 40, + "usesDefaultFieldObstacles": true, + "circleObstacles": [], + "eventMarkers": [], + "isTrajectoryStale": false } }, "splitTrajectoriesAtStopPoints": true, diff --git a/Robot/src/main/deploy/choreo/Amp Side Mid A.1.traj b/Robot/src/main/deploy/choreo/Amp Side Mid A.1.traj index ca23309..f647e9f 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Mid A.1.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Mid A.1.traj @@ -487,24 +487,5 @@ "timestamp": 4.8339863415393385 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "named", - "data": { - "name": "Intake On" - } - } - }, - { - "timestamp": 4.4589863415393385, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Mid A.2.traj b/Robot/src/main/deploy/choreo/Amp Side Mid A.2.traj index 59e25de..5da037f 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Mid A.2.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Mid A.2.traj @@ -856,28 +856,5 @@ "timestamp": 4.795376948181822 } ], - "eventMarkers": [ - { - "timestamp": 4.420376948181822, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Shoot" - } - }, - { - "type": "named", - "data": { - "name": "Intake Off" - } - } - ] - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Mid A.3.traj b/Robot/src/main/deploy/choreo/Amp Side Mid A.3.traj index 7908eae..081bd0a 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Mid A.3.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Mid A.3.traj @@ -595,15 +595,5 @@ "timestamp": 2.518896786664346 } ], - "eventMarkers": [ - { - "timestamp": 1.1803142414099632, - "command": { - "type": "named", - "data": { - "name": "Intake On" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Mid A.4.traj b/Robot/src/main/deploy/choreo/Amp Side Mid A.4.traj index c5da747..f15e7be 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Mid A.4.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Mid A.4.traj @@ -568,24 +568,5 @@ "timestamp": 2.2200872196484376 } ], - "eventMarkers": [ - { - "timestamp": 1, - "command": { - "type": "named", - "data": { - "name": "Intake Off" - } - } - }, - { - "timestamp": 2.2200872196484376, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Mid A.traj b/Robot/src/main/deploy/choreo/Amp Side Mid A.traj index 291b918..062346f 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Mid A.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Mid A.traj @@ -2476,73 +2476,5 @@ "timestamp": 14.368347296033944 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "named", - "data": { - "name": "Intake On" - } - } - }, - { - "timestamp": 4.4589863415393385, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - }, - { - "timestamp": 9.25436328972116, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Shoot" - } - }, - { - "type": "named", - "data": { - "name": "Intake Off" - } - } - ] - } - } - }, - { - "timestamp": 10.809677531131124, - "command": { - "type": "named", - "data": { - "name": "Intake On" - } - } - }, - { - "timestamp": 13.148260076385506, - "command": { - "type": "named", - "data": { - "name": "Intake Off" - } - } - }, - { - "timestamp": 14.368347296033944, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Mid B.1.traj b/Robot/src/main/deploy/choreo/Amp Side Mid B.1.traj index dbaaa1d..5eefe3d 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Mid B.1.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Mid B.1.traj @@ -451,24 +451,5 @@ "timestamp": 4.459144371352818 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "named", - "data": { - "name": "Intake On" - } - } - }, - { - "timestamp": 4.459144371352818, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Mid B.2.traj b/Robot/src/main/deploy/choreo/Amp Side Mid B.2.traj index 23e51f3..9032bb5 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Mid B.2.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Mid B.2.traj @@ -397,37 +397,5 @@ "timestamp": 3.751339432648723 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - }, - { - "timestamp": 3.751339432648723, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Shoot" - } - }, - { - "type": "named", - "data": { - "name": "Intake Off" - } - } - ] - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Mid B.3.traj b/Robot/src/main/deploy/choreo/Amp Side Mid B.3.traj index 20cdc43..df22b93 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Mid B.3.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Mid B.3.traj @@ -604,37 +604,5 @@ "timestamp": 2.1779567701381524 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Shoot" - } - }, - { - "type": "named", - "data": { - "name": "Intake Off" - } - } - ] - } - } - }, - { - "timestamp": 1.2200856909429092, - "command": { - "type": "named", - "data": { - "name": "Intake On" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Mid B.4.traj b/Robot/src/main/deploy/choreo/Amp Side Mid B.4.traj index 253342c..2881f92 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Mid B.4.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Mid B.4.traj @@ -622,24 +622,5 @@ "timestamp": 2.2625082066773956 } ], - "eventMarkers": [ - { - "timestamp": 1, - "command": { - "type": "named", - "data": { - "name": "Intake Off" - } - } - }, - { - "timestamp": 2.2625082066773956, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Mid B.traj b/Robot/src/main/deploy/choreo/Amp Side Mid B.traj index f26344d..7fa5f7c 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Mid B.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Mid B.traj @@ -2044,73 +2044,5 @@ "timestamp": 12.650948780817089 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "named", - "data": { - "name": "Intake On" - } - } - }, - { - "timestamp": 4.459144371352818, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - }, - { - "timestamp": 8.21048380400154, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Shoot" - } - }, - { - "type": "named", - "data": { - "name": "Intake Off" - } - } - ] - } - } - }, - { - "timestamp": 9.43056949494445, - "command": { - "type": "named", - "data": { - "name": "Intake On" - } - } - }, - { - "timestamp": 11.388440574139693, - "command": { - "type": "named", - "data": { - "name": "Intake Off" - } - } - }, - { - "timestamp": 12.650948780817089, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Start A.1.traj b/Robot/src/main/deploy/choreo/Amp Side Start A.1.traj index 67dafdf..2bcbe85 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Start A.1.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Start A.1.traj @@ -199,37 +199,5 @@ "timestamp": 1.345777924459432 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Shoot" - } - }, - { - "type": "named", - "data": { - "name": "Intake On" - } - } - ] - } - } - }, - { - "timestamp": 1.345777924459432, - "command": { - "type": "named", - "data": { - "name": "Wait and Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Start A.traj b/Robot/src/main/deploy/choreo/Amp Side Start A.traj index 67dafdf..2bcbe85 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Start A.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Start A.traj @@ -199,37 +199,5 @@ "timestamp": 1.345777924459432 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Shoot" - } - }, - { - "type": "named", - "data": { - "name": "Intake On" - } - } - ] - } - } - }, - { - "timestamp": 1.345777924459432, - "command": { - "type": "named", - "data": { - "name": "Wait and Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Start B.1.traj b/Robot/src/main/deploy/choreo/Amp Side Start B.1.traj index 3250794..83573e3 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Start B.1.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Start B.1.traj @@ -118,37 +118,5 @@ "timestamp": 1.1188419422722011 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Shoot" - } - }, - { - "type": "named", - "data": { - "name": "Intake On" - } - } - ] - } - } - }, - { - "timestamp": 1.1188419422722011, - "command": { - "type": "named", - "data": { - "name": "Wait and Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Start B.2.traj b/Robot/src/main/deploy/choreo/Amp Side Start B.2.traj index 091630e..c216c40 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Start B.2.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Start B.2.traj @@ -217,24 +217,5 @@ "timestamp": 1.6059282758091824 } ], - "eventMarkers": [ - { - "timestamp": 1.6059282758091824, - "command": { - "type": "named", - "data": { - "name": "Wait and Shoot" - } - } - }, - { - "timestamp": 0, - "command": { - "type": "named", - "data": { - "name": "Wait and Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Start B.traj b/Robot/src/main/deploy/choreo/Amp Side Start B.traj index 2ce786b..f1d4179 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Start B.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Start B.traj @@ -325,46 +325,5 @@ "timestamp": 2.7247702180813835 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Shoot" - } - }, - { - "type": "named", - "data": { - "name": "Intake On" - } - } - ] - } - } - }, - { - "timestamp": 2.7247702180813835, - "command": { - "type": "named", - "data": { - "name": "Wait and Shoot" - } - } - }, - { - "timestamp": 1.1188419422722011, - "command": { - "type": "named", - "data": { - "name": "Wait and Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Start C.1.traj b/Robot/src/main/deploy/choreo/Amp Side Start C.1.traj index 357a26f..23b7d44 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Start C.1.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Start C.1.traj @@ -145,28 +145,5 @@ "timestamp": 1.276187815318932 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Intake On" - } - }, - { - "type": "named", - "data": { - "name": "Shoot" - } - } - ] - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Start C.2.traj b/Robot/src/main/deploy/choreo/Amp Side Start C.2.traj index cef1a68..1708034 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Start C.2.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Start C.2.traj @@ -154,15 +154,5 @@ "timestamp": 1.3635169815486794 } ], - "eventMarkers": [ - { - "timestamp": 1.3635169815486794, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Start C.3.traj b/Robot/src/main/deploy/choreo/Amp Side Start C.3.traj index 4591e80..46b40b6 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Start C.3.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Start C.3.traj @@ -100,24 +100,5 @@ "timestamp": 0.9352863500970177 } ], - "eventMarkers": [ - { - "timestamp": 0.9352863500970177, - "command": { - "type": "named", - "data": { - "name": "Wait and Shoot" - } - } - }, - { - "timestamp": 0, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Start C.4.traj b/Robot/src/main/deploy/choreo/Amp Side Start C.4.traj index 49ac67a..52b2910 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Start C.4.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Start C.4.traj @@ -136,15 +136,5 @@ "timestamp": 1.1421850118107097 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "named", - "data": { - "name": "Wait and Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Amp Side Start C.traj b/Robot/src/main/deploy/choreo/Amp Side Start C.traj index bfc0c83..29c73a0 100644 --- a/Robot/src/main/deploy/choreo/Amp Side Start C.traj +++ b/Robot/src/main/deploy/choreo/Amp Side Start C.traj @@ -595,46 +595,5 @@ "timestamp": 5.639878801732961 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Intake On" - } - }, - { - "type": "named", - "data": { - "name": "Shoot" - } - } - ] - } - } - }, - { - "timestamp": 3.574991146964629, - "command": { - "type": "named", - "data": { - "name": "Wait and Shoot" - } - } - }, - { - "timestamp": 2.6397047968676115, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/New Path.1.traj b/Robot/src/main/deploy/choreo/New Path.1.traj new file mode 100644 index 0000000..b7cf449 --- /dev/null +++ b/Robot/src/main/deploy/choreo/New Path.1.traj @@ -0,0 +1,968 @@ +{ + "samples": [ + { + "x": 1.373390793800354, + "y": 5.535864353179932, + "heading": -3.14, + "angularVelocity": -2.82434317075584e-23, + "velocityX": 1.7420984263678853e-22, + "velocityY": 6.607050300828325e-22, + "timestamp": 0 + }, + { + "x": 1.3954167220425728, + "y": 5.535862029256062, + "heading": -3.141163552097975, + "angularVelocity": -0.016470698213205317, + "velocityX": 0.31178871799098296, + "velocityY": -0.000032896377210242694, + "timestamp": 0.07064376281522751 + }, + { + "x": 1.4394687417666225, + "y": 5.535912852760689, + "heading": -3.143439344791257, + "angularVelocity": -0.03221505484121067, + "velocityX": 0.6235797467254175, + "velocityY": 0.0007194337135808534, + "timestamp": 0.14128752563045502 + }, + { + "x": 1.5055468364541058, + "y": 5.536091210226698, + "heading": -3.146758591200165, + "angularVelocity": -0.046985696636652786, + "velocityX": 0.9353705416331396, + "velocityY": 0.0025247447035990096, + "timestamp": 0.21193128844568254 + }, + { + "x": 1.5936505240571006, + "y": 5.5365020610023254, + "heading": -3.151024261015905, + "angularVelocity": -0.060382822852982895, + "velocityX": 1.2471545128964379, + "velocityY": 0.005815811039144578, + "timestamp": 0.28257505126091004 + }, + { + "x": 1.7037780479554485, + "y": 5.537304646188576, + "heading": -3.1560891544883583, + "angularVelocity": -0.0716962583901507, + "velocityX": 1.5589136182679146, + "velocityY": 0.011361019773914906, + "timestamp": 0.35321881407613753 + }, + { + "x": 1.8359235973509576, + "y": 5.538769224266934, + "heading": -3.161703337960502, + "angularVelocity": -0.07947175020713407, + "velocityX": 1.8705904687034165, + "velocityY": 0.020731880919063646, + "timestamp": 0.42386257689136503 + }, + { + "x": 1.9900638368261871, + "y": 5.541454826155834, + "heading": -3.167348805342055, + "angularVelocity": -0.07991459056787735, + "velocityX": 2.181936993905504, + "velocityY": 0.038016121761865675, + "timestamp": 0.4945063397065925 + }, + { + "x": 2.166014894423818, + "y": 5.547190591916742, + "heading": -3.171311156220804, + "angularVelocity": -0.05608918212797654, + "velocityX": 2.490680713849295, + "velocityY": 0.0811928121086299, + "timestamp": 0.5651501025218201 + }, + { + "x": 2.3270054280383907, + "y": 5.568416514813431, + "heading": -3.158429642768342, + "angularVelocity": 0.18234466765529062, + "velocityX": 2.278906547427999, + "velocityY": 0.3004642172332755, + "timestamp": 0.6357938653370476 + }, + { + "x": 2.4662020206451416, + "y": 5.5926337242126465, + "heading": -3.141592653589793, + "angularVelocity": 0.23833652834415398, + "velocityX": 1.9704017320089124, + "velocityY": 0.34280746712991245, + "timestamp": 0.7064376281522752 + }, + { + "x": 2.5179211474133147, + "y": 5.6019384518743145, + "heading": -3.1354979741268703, + "angularVelocity": 0.24463821278963835, + "velocityX": 2.0759869024413646, + "velocityY": 0.37348837777157223, + "timestamp": 0.731350659495272 + }, + { + "x": 2.572270701485961, + "y": 5.612007668253337, + "heading": -3.1292503555801803, + "angularVelocity": 0.2507771318822764, + "velocityX": 2.18157129593641, + "velocityY": 0.40417467631263526, + "timestamp": 0.7562636908382688 + }, + { + "x": 2.6292506611625033, + "y": 5.622841519442725, + "heading": -3.1228541907783236, + "angularVelocity": 0.25673972443561044, + "velocityX": 2.28715481837821, + "velocityY": 0.4348668389739167, + "timestamp": 0.7811767221812657 + }, + { + "x": 2.6888610019940837, + "y": 5.6344401650270655, + "heading": -3.1163142562473505, + "angularVelocity": 0.26251058897381424, + "velocityX": 2.3927373594516785, + "velocityY": 0.4655654073025398, + "timestamp": 0.8060897535242625 + }, + { + "x": 2.7511016962877353, + "y": 5.646803780019505, + "heading": -3.109635766981535, + "angularVelocity": 0.26807212554215154, + "velocityX": 2.4983187889396388, + "velocityY": 0.4962710005947778, + "timestamp": 0.8310027848672593 + }, + { + "x": 2.81597271249104, + "y": 5.659932557185373, + "heading": -3.102824442395177, + "angularVelocity": 0.27340408690462376, + "velocityX": 2.6038989519249967, + "velocityY": 0.5269843314172872, + "timestamp": 0.8559158162102561 + }, + { + "x": 2.8834740144199107, + "y": 5.673826709854039, + "heading": -3.0958865864334353, + "angularVelocity": 0.27848301020550864, + "velocityX": 2.709477662494325, + "velocityY": 0.5577062252030255, + "timestamp": 0.880828847553253 + }, + { + "x": 2.953605560277617, + "y": 5.688486475354224, + "heading": -3.0888291858243515, + "angularVelocity": 0.2832814887887059, + "velocityX": 2.8150546953580386, + "velocityY": 0.5884376452769706, + "timestamp": 0.9057418788962498 + }, + { + "x": 3.026367301391608, + "y": 5.703912119255662, + "heading": -3.0816600318771536, + "angularVelocity": 0.28776722705858193, + "velocityX": 2.9206297745234426, + "velocityY": 0.619179725223414, + "timestamp": 0.9306549102392466 + }, + { + "x": 3.1017591805622913, + "y": 5.720103940668468, + "heading": -3.0743878732860472, + "angularVelocity": 0.2919017959310087, + "velocityX": 3.026202557717816, + "velocityY": 0.6499338113408133, + "timestamp": 0.9555679415822435 + }, + { + "x": 3.179781129867705, + "y": 5.737062278951719, + "heading": -3.067022610425793, + "angularVelocity": 0.29563896736817125, + "velocityX": 3.131772614549612, + "velocityY": 0.6807015192079763, + "timestamp": 0.9804809729252403 + }, + { + "x": 3.2604330676886852, + "y": 5.7547875223330545, + "heading": -3.0595755461907523, + "angularVelocity": 0.29892244474433144, + "velocityX": 3.2373393952177807, + "velocityY": 0.7114848103907929, + "timestamp": 1.0053940042682372 + }, + { + "x": 3.343714894589163, + "y": 5.773280119171789, + "heading": -3.0520597154967803, + "angularVelocity": 0.3016827053478781, + "velocityX": 3.3429021845584823, + "velocityY": 0.742286098553487, + "timestamp": 1.030307035611234 + }, + { + "x": 3.4296264874669924, + "y": 5.792540592963052, + "heading": -3.0444903268373738, + "angularVelocity": 0.3038325025643338, + "velocityX": 3.4484600326238115, + "velocityY": 0.7731083996198849, + "timestamp": 1.0552200669542309 + }, + { + "x": 3.5181676910051554, + "y": 5.812569562776201, + "heading": -3.036885367888651, + "angularVelocity": 0.30526028101597386, + "velocityX": 3.554011646320699, + "velocityY": 0.8039555499046173, + "timestamp": 1.0801330982972277 + }, + { + "x": 3.6093383047445466, + "y": 5.833367771831505, + "heading": -3.02926645910632, + "angularVelocity": 0.3058202222537983, + "velocityX": 3.6595552136621126, + "velocityY": 0.8348325327801501, + "timestamp": 1.1050461296402245 + }, + { + "x": 3.7031380627247383, + "y": 5.854936128710036, + "heading": -3.021660096759598, + "angularVelocity": 0.30531661290025214, + "velocityX": 3.765088105448813, + "velocityY": 0.8657459857687129, + "timestamp": 1.1299591609832214 + }, + { + "x": 3.799566599795939, + "y": 5.877275769035245, + "heading": -3.0140995363197214, + "angularVelocity": 0.3034781410493393, + "velocityX": 3.870606340255989, + "velocityY": 0.8967050222690318, + "timestamp": 1.1548721923262182 + }, + { + "x": 3.8986233923456974, + "y": 5.900388152110491, + "heading": -3.0066277903463905, + "angularVelocity": 0.29991316072545443, + "velocityX": 3.9761035574501644, + "velocityY": 0.9277226346741867, + "timestamp": 1.179785223669215 + }, + { + "x": 4.000307645489192, + "y": 5.924275221259104, + "heading": -2.9993027111169632, + "angularVelocity": 0.2940260110693561, + "velocityX": 4.081568868257279, + "velocityY": 0.9588182513698355, + "timestamp": 1.2046982550122118 + }, + { + "x": 4.104618054767629, + "y": 5.9489396903011205, + "heading": -2.992206361108462, + "angularVelocity": 0.28484490348846914, + "velocityX": 4.18698181856379, + "velocityY": 0.9900227998127282, + "timestamp": 1.2296112863552087 + }, + { + "x": 4.2115522235858025, + "y": 5.974385608457378, + "heading": -2.9854644417536758, + "angularVelocity": 0.27061818620004263, + "velocityX": 4.292298570411896, + "velocityY": 1.0213898825045442, + "timestamp": 1.2545243176982055 + }, + { + "x": 4.321104885250453, + "y": 6.000619634583579, + "heading": -2.9792944544666136, + "angularVelocity": 0.24766104140903092, + "velocityX": 4.39740391911185, + "velocityY": 1.0530242492380477, + "timestamp": 1.2794373490412023 + }, + { + "x": 4.433259894338234, + "y": 6.027654403922367, + "heading": -2.9741691000976167, + "angularVelocity": 0.20572985673369118, + "velocityX": 4.501861196401822, + "velocityY": 1.0851657900069145, + "timestamp": 1.3043503803841991 + }, + { + "x": 4.547895470478681, + "y": 6.055502741756316, + "heading": -2.972022644848979, + "angularVelocity": 0.08615793152931939, + "velocityX": 4.601430253997158, + "velocityY": 1.1178221329447748, + "timestamp": 1.329263411727196 + }, + { + "x": 4.662586364395008, + "y": 6.086032564553175, + "heading": -2.9720226405281305, + "angularVelocity": 1.7343729890429694e-7, + "velocityX": 4.6036506893638345, + "velocityY": 1.2254559622445014, + "timestamp": 1.3541764430701928 + }, + { + "x": 4.776604144026135, + "y": 6.118987340123003, + "heading": -2.972022636821939, + "angularVelocity": 1.487651723674871e-7, + "velocityX": 4.576632127233111, + "velocityY": 1.3227926829182501, + "timestamp": 1.3790894744131896 + }, + { + "x": 4.890615117413081, + "y": 6.151965655001972, + "heading": -2.9720226331157256, + "angularVelocity": 1.4876605726394647e-7, + "velocityX": 4.576358927071857, + "velocityY": 1.3237375422095177, + "timestamp": 1.4040025057561865 + }, + { + "x": 5.0046260804479115, + "y": 6.184944005669727, + "heading": -2.972022629409512, + "angularVelocity": 1.487660596456677e-7, + "velocityX": 4.576358511541768, + "velocityY": 1.3237389787584244, + "timestamp": 1.4289155370991833 + }, + { + "x": 5.118637043467059, + "y": 6.217922356391706, + "heading": -2.9720226257032984, + "angularVelocity": 1.4876606015209578e-7, + "velocityX": 4.57635851091221, + "velocityY": 1.3237389809348972, + "timestamp": 1.4538285684421801 + }, + { + "x": 5.232648006768652, + "y": 6.2509007061372195, + "heading": -2.972022621997085, + "angularVelocity": 1.4876606132175137e-7, + "velocityX": 4.576358522249539, + "velocityY": 1.3237389417401004, + "timestamp": 1.478741599785177 + }, + { + "x": 5.346659155827142, + "y": 6.283878413687287, + "heading": -2.972022618290872, + "angularVelocity": 1.4876602083758807e-7, + "velocityX": 4.576365978463671, + "velocityY": 1.323713164248677, + "timestamp": 1.5036546311281738 + }, + { + "x": 5.460788726806641, + "y": 6.316443920135498, + "heading": -2.972022613636867, + "angularVelocity": 1.8681006445890502e-7, + "velocityX": 4.581119391220948, + "velocityY": 1.3071675622230816, + "timestamp": 1.5285676624711706 + }, + { + "x": 5.619993247774208, + "y": 6.360818104348682, + "heading": -2.9591725358910055, + "angularVelocity": 0.36086031768123, + "velocityX": 4.470836297558475, + "velocityY": 1.2461311541225735, + "timestamp": 1.5641772241664869 + }, + { + "x": 5.773672003470037, + "y": 6.404401799450161, + "heading": -2.944913611897587, + "angularVelocity": 0.4004240241826515, + "velocityX": 4.315659850316082, + "velocityY": 1.2239323660985362, + "timestamp": 1.5997867858618031 + }, + { + "x": 5.921814760313314, + "y": 6.447170078076461, + "heading": -2.9302180374942255, + "angularVelocity": 0.41268619167795345, + "velocityX": 4.1601960201257535, + "velocityY": 1.2010335592511447, + "timestamp": 1.6353963475571194 + }, + { + "x": 6.064421266917378, + "y": 6.4891155098465925, + "heading": -2.9153905734710155, + "angularVelocity": 0.41638996149621743, + "velocityX": 4.004725130408471, + "velocityY": 1.1779260898807962, + "timestamp": 1.6710059092524356 + }, + { + "x": 6.201491916625645, + "y": 6.5302345384208484, + "heading": -2.9005808672107585, + "angularVelocity": 0.4158912818689674, + "velocityX": 3.8492652866967405, + "velocityY": 1.154718750151433, + "timestamp": 1.706615470947752 + }, + { + "x": 6.333027104014587, + "y": 6.570525082703978, + "heading": -2.8858780184011064, + "angularVelocity": 0.4128904740657215, + "velocityX": 3.693816523617669, + "velocityY": 1.131452968387105, + "timestamp": 1.7422250326430682 + }, + { + "x": 6.459027156593173, + "y": 6.6099857791590395, + "heading": -2.871341244225326, + "angularVelocity": 0.40822670888680024, + "velocityX": 3.5383769577585027, + "velocityY": 1.1081488953078464, + "timestamp": 1.7778345943383844 + }, + { + "x": 6.579492339397848, + "y": 6.648615666984608, + "heading": -2.8570128319385093, + "angularVelocity": 0.4023754184175068, + "velocityX": 3.3829448347441886, + "velocityY": 1.084817840671425, + "timestamp": 1.8134441560337007 + }, + { + "x": 6.694422868067946, + "y": 6.686414033876065, + "heading": -2.8429245554455904, + "angularVelocity": 0.39563184218500724, + "velocityX": 3.2275187673881494, + "velocityY": 1.0614667828508728, + "timestamp": 1.849053717729017 + }, + { + "x": 6.803818920282884, + "y": 6.723380331567842, + "heading": -2.8291012163393043, + "angularVelocity": 0.3881917790665907, + "velocityX": 3.0720976896867125, + "velocityY": 1.0381003284474422, + "timestamp": 1.8846632794243332 + }, + { + "x": 6.907680644474139, + "y": 6.7595141257035065, + "heading": -2.815562757243929, + "angularVelocity": 0.38019168029119643, + "velocityX": 2.9166807802893104, + "velocityY": 1.0147216762967697, + "timestamp": 1.9202728411196495 + }, + { + "x": 7.006008166274734, + "y": 6.794815064200952, + "heading": -2.8023256004495165, + "angularVelocity": 0.3717304050994219, + "velocityX": 2.7612673989618037, + "velocityY": 0.9913331368548697, + "timestamp": 1.9558824028149657 + }, + { + "x": 7.0988015932971456, + "y": 6.8292828563027905, + "heading": -2.78940353644908, + "angularVelocity": 0.36288186052389076, + "velocityX": 2.605857039644986, + "velocityY": 0.967936432263727, + "timestamp": 1.991491964510282 + }, + { + "x": 7.1860610187092355, + "y": 6.862917258151496, + "heading": -2.7768083363965803, + "angularVelocity": 0.3537027543407289, + "velocityX": 2.450449296700172, + "velocityY": 0.9445328795812922, + "timestamp": 2.0271015262055982 + }, + { + "x": 7.267786523946172, + "y": 6.895718062532486, + "heading": -2.7645501875766114, + "angularVelocity": 0.34423756531609073, + "velocityX": 2.295043840645944, + "velocityY": 0.92112350782753, + "timestamp": 2.0627110879009143 + }, + { + "x": 7.343978180795563, + "y": 6.927685091381284, + "heading": -2.752638011172443, + "angularVelocity": 0.3345218485442658, + "velocityX": 2.139640400556062, + "velocityY": 0.8977091356056494, + "timestamp": 2.0983206495962303 + }, + { + "x": 7.41463605302207, + "y": 6.958818190182592, + "heading": -2.741079699300761, + "angularVelocity": 0.3245845026281963, + "velocityX": 1.9842387511273427, + "velocityY": 0.8742904242318493, + "timestamp": 2.1339302112915464 + }, + { + "x": 7.4797601976490595, + "y": 6.989117223699881, + "heading": -2.729882295187736, + "angularVelocity": 0.314449366404244, + "velocityX": 1.8288387030485591, + "velocityY": 0.8508679150991757, + "timestamp": 2.1695397729868624 + }, + { + "x": 7.539350665981394, + "y": 7.018582072662865, + "heading": -2.7190521323770627, + "angularVelocity": 0.30413636942061584, + "velocityX": 1.673440095730611, + "velocityY": 0.8274420565771762, + "timestamp": 2.2051493346821784 + }, + { + "x": 7.59340750443028, + "y": 7.047212631158878, + "heading": -2.70859494382748, + "angularVelocity": 0.29366237751132823, + "velocityX": 1.5180427917481332, + "velocityY": 0.804013223779112, + "timestamp": 2.2407588963774945 + }, + { + "x": 7.641930755184944, + "y": 7.075008804550945, + "heading": -2.698515948490913, + "angularVelocity": 0.2830418251930565, + "velocityX": 1.3626466725381483, + "velocityY": 0.7805817333529121, + "timestamp": 2.2763684580728105 + }, + { + "x": 7.68492045676446, + "y": 7.101970507796351, + "heading": -2.688819920787713, + "angularVelocity": 0.2722871959548869, + "velocityX": 1.2072516350340368, + "velocityY": 0.7571478547278054, + "timestamp": 2.3119780197681266 + }, + { + "x": 7.722376644474786, + "y": 7.128097664074123, + "heading": -2.6795112469143856, + "angularVelocity": 0.26140939203280295, + "velocityX": 1.0518575890040596, + "velocityY": 0.7337118187896131, + "timestamp": 2.3475875814634426 + }, + { + "x": 7.75429935079016, + "y": 7.153390203653904, + "heading": -2.6705939708898794, + "angularVelocity": 0.25041802257507934, + "velocityX": 0.8964644549268095, + "velocityY": 0.7102738246595033, + "timestamp": 2.3831971431587586 + }, + { + "x": 7.7806886056735625, + "y": 7.177848062955659, + "heading": -2.6620718325179498, + "angularVelocity": 0.2393216306577293, + "velocityX": 0.7410721622803245, + "velocityY": 0.6868340450528948, + "timestamp": 2.4188067048540747 + }, + { + "x": 7.801544436847726, + "y": 7.201471183761836, + "heading": -2.653948298918918, + "angularVelocity": 0.22812787387103486, + "velocityX": 0.5856806481531491, + "velocityY": 0.6633926305608906, + "timestamp": 2.4544162665493907 + }, + { + "x": 7.8168668700256845, + "y": 7.224259512552509, + "heading": -2.646226590901266, + "angularVelocity": 0.21684366922907553, + "velocityX": 0.43028985610836296, + "velocityY": 0.6399497131038998, + "timestamp": 2.4900258282447068 + }, + { + "x": 7.82665592910803, + "y": 7.246212999940603, + "heading": -2.638909705160028, + "angularVelocity": 0.20547531036307248, + "velocityX": 0.2748997352481349, + "velocityY": 0.6165054087420264, + "timestamp": 2.525635389940023 + }, + { + "x": 7.830911636352539, + "y": 7.267331600189209, + "heading": -2.632000433076407, + "angularVelocity": 0.19402856296683813, + "velocityX": 0.11951023943856069, + "velocityY": 0.5930598199804185, + "timestamp": 2.561244951635339 + }, + { + "x": 7.807554746211344, + "y": 7.314481773120804, + "heading": -2.617417777164506, + "angularVelocity": 0.16547612190182404, + "velocityX": -0.26504140422718087, + "velocityY": 0.5350347571016485, + "timestamp": 2.6493703907881385 + }, + { + "x": 7.750362372151811, + "y": 7.356181644302872, + "heading": -2.6054727306062277, + "angularVelocity": 0.13554595214631465, + "velocityX": -0.6489882445903903, + "velocityY": 0.4731876695645769, + "timestamp": 2.737495829940938 + }, + { + "x": 7.659408985329993, + "y": 7.391993364231043, + "heading": -2.59631898714542, + "angularVelocity": 0.1038717485984504, + "velocityX": -1.0320900264010608, + "velocityY": 0.40637210177277355, + "timestamp": 2.825621269093738 + }, + { + "x": 7.53480466246767, + "y": 7.421324954259901, + "heading": -2.590159490954979, + "angularVelocity": 0.06989464392638106, + "velocityX": -1.4139427168842045, + "velocityY": 0.33283907928107187, + "timestamp": 2.9137467082465376 + }, + { + "x": 7.376725182280505, + "y": 7.443332574685867, + "heading": -2.58727756406566, + "angularVelocity": 0.03270255350809968, + "velocityX": -1.7938007652146122, + "velocityY": 0.24973061850854159, + "timestamp": 3.0018721473993373 + }, + { + "x": 7.185484575073475, + "y": 7.456719845251442, + "heading": -2.588100582009295, + "angularVelocity": -0.009339164168109404, + "velocityX": -2.1700953668490657, + "velocityY": 0.15191153308595862, + "timestamp": 3.089997586552137 + }, + { + "x": 6.96175198859567, + "y": 7.459256684180001, + "heading": -2.593352929900895, + "angularVelocity": -0.05960081381828049, + "velocityX": -2.538796840375215, + "velocityY": 0.028786681268744098, + "timestamp": 3.1781230257049367 + }, + { + "x": 6.707472058422852, + "y": 7.446334711458515, + "heading": -2.6045310943802176, + "angularVelocity": -0.12684378752360922, + "velocityX": -2.885431637190761, + "velocityY": -0.14663158386173333, + "timestamp": 3.2662484648577363 + }, + { + "x": 6.432924312323279, + "y": 7.405922956679372, + "heading": -2.6259949207482713, + "angularVelocity": -0.24355993654497712, + "velocityX": -3.1154198916789273, + "velocityY": -0.4585708186835176, + "timestamp": 3.354373904010536 + }, + { + "x": 6.179679523545089, + "y": 7.338809872599317, + "heading": -2.658648029247715, + "angularVelocity": -0.3705298811938591, + "velocityX": -2.8736854103965634, + "velocityY": -0.7615631164536769, + "timestamp": 3.4424993431633357 + }, + { + "x": 5.958645318140905, + "y": 7.260012876936155, + "heading": -2.6951092608022327, + "angularVelocity": -0.41374240974048565, + "velocityX": -2.508177065886002, + "velocityY": -0.8941458496057648, + "timestamp": 3.5306247823161354 + }, + { + "x": 5.7713029407636975, + "y": 7.174908602956231, + "heading": -2.733160894484531, + "angularVelocity": -0.4317894361504518, + "velocityX": -2.125860355173683, + "velocityY": -0.9657174454740964, + "timestamp": 3.618750221468935 + }, + { + "x": 5.618026104094792, + "y": 7.085979942990996, + "heading": -2.771854911215978, + "angularVelocity": -0.4390788528651328, + "velocityX": -1.739302954316538, + "velocityY": -1.009114516990289, + "timestamp": 3.706875660621735 + }, + { + "x": 5.498943908482782, + "y": 6.994633502423811, + "heading": -2.8106774088345605, + "angularVelocity": -0.44053678474462404, + "velocityX": -1.3512805922650102, + "velocityY": -1.0365501885193495, + "timestamp": 3.7950010997745345 + }, + { + "x": 5.414108133317092, + "y": 6.901770404602659, + "heading": -2.8493092023731994, + "angularVelocity": -0.43837277760007154, + "velocityX": -0.962670665601943, + "velocityY": -1.0537603978362906, + "timestamp": 3.883126538927334 + }, + { + "x": 5.363540600270839, + "y": 6.808016064764776, + "heading": -2.887533978669486, + "angularVelocity": -0.43375416524176585, + "velocityX": -0.5738131183502542, + "velocityY": -1.0638737320255882, + "timestamp": 3.971251978080134 + }, + { + "x": 5.347249984741211, + "y": 6.713829517364502, + "heading": -2.9251958710092785, + "angularVelocity": -0.42736686139505325, + "velocityX": -0.1848571273657065, + "velocityY": -1.0687781905627245, + "timestamp": 4.059377417232933 + }, + { + "x": 5.365891027779734, + "y": 6.618393862600329, + "heading": -2.9626265560753033, + "angularVelocity": -0.41954951992944506, + "velocityX": 0.20894195882338126, + "velocityY": -1.0697101340740476, + "timestamp": 4.148593786905622 + }, + { + "x": 5.419665157043064, + "y": 6.523079084641424, + "heading": -2.999289019090276, + "angularVelocity": -0.41093874531633023, + "velocityX": 0.6027383703306144, + "velocityY": -1.068355261580243, + "timestamp": 4.237810156578312 + }, + { + "x": 5.508570208017759, + "y": 6.428155743046912, + "heading": -3.0350883376100666, + "angularVelocity": -0.4012640129959147, + "velocityX": 0.9965105204444354, + "velocityY": -1.0639677667087186, + "timestamp": 4.327026526251001 + }, + { + "x": 5.632599675291343, + "y": 6.3339997437304225, + "heading": -3.069891429914663, + "angularVelocity": -0.39009760688850553, + "velocityX": 1.3902097533066353, + "velocityY": -1.0553668532122726, + "timestamp": 4.41624289592369 + }, + { + "x": 5.791736419311823, + "y": 6.241168484817361, + "heading": -3.1034994514568583, + "angularVelocity": -0.37670241084112394, + "velocityX": 1.7837168739807538, + "velocityY": -1.0405182283658685, + "timestamp": 4.50545926559638 + }, + { + "x": 5.985933114334994, + "y": 6.150573116808587, + "heading": -3.135584965329755, + "angularVelocity": -0.35963707098383246, + "velocityX": 2.1766935343326033, + "velocityY": -1.0154567860264216, + "timestamp": 4.594675635269069 + }, + { + "x": 6.21503104738065, + "y": 6.0639656632428816, + "heading": -3.1655118524413957, + "angularVelocity": -0.33544165965768785, + "velocityX": 2.567891227654233, + "velocityY": -0.9707574280756485, + "timestamp": 4.683892004941758 + }, + { + "x": 6.4781630503521095, + "y": 5.986007206964285, + "heading": -3.1915383988945667, + "angularVelocity": -0.29172389045480446, + "velocityX": 2.94936908929179, + "velocityY": -0.873813365917101, + "timestamp": 4.773108374614448 + }, + { + "x": 6.754060772112618, + "y": 5.940540712143944, + "heading": -3.202308528029517, + "angularVelocity": -0.12071920404812232, + "velocityX": 3.092456269770913, + "velocityY": -0.5096205437090053, + "timestamp": 4.862324744287137 + }, + { + "x": 6.9977159525173604, + "y": 5.908972295194805, + "heading": -3.2086126383290163, + "angularVelocity": -0.07066091483689793, + "velocityX": 2.731059123999851, + "velocityY": -0.353841083928376, + "timestamp": 4.951541113959826 + }, + { + "x": 7.207090659869358, + "y": 5.8850775781655935, + "heading": -3.212859245938106, + "angularVelocity": -0.047598973424597894, + "velocityX": 2.3468194023152535, + "velocityY": -0.2678288425865638, + "timestamp": 5.0407574836325155 + }, + { + "x": 7.381780547491699, + "y": 5.866770253471726, + "heading": -3.2158161125570914, + "angularVelocity": -0.033142646689540686, + "velocityX": 1.9580474778701502, + "velocityY": -0.20520140822846553, + "timestamp": 5.129973853305205 + }, + { + "x": 7.52163405520933, + "y": 5.853018511986726, + "heading": -3.217858423959668, + "angularVelocity": -0.02289166674310414, + "velocityX": 1.5675767600801969, + "velocityY": -0.1541392183458195, + "timestamp": 5.219190222977894 + }, + { + "x": 7.626575951196748, + "y": 5.843208449084505, + "heading": -3.2192083663887368, + "angularVelocity": -0.015131106926019615, + "velocityX": 1.1762627909252632, + "velocityY": -0.10995810452960539, + "timestamp": 5.3084065926505835 + }, + { + "x": 7.696562480811879, + "y": 5.836933286768317, + "heading": -3.220012824660454, + "angularVelocity": -0.009016935733524306, + "velocityX": 0.7844583888796706, + "velocityY": -0.070336445421512, + "timestamp": 5.397622962323273 + }, + { + "x": 7.731565475463867, + "y": 5.833903789520264, + "heading": -3.220376105866096, + "angularVelocity": -0.004071911992999992, + "velocityX": 0.3923382533990597, + "velocityY": -0.03395674201009736, + "timestamp": 5.486839331995962 + }, + { + "x": 7.731565475463867, + "y": 5.833903789520264, + "heading": -3.220376105866096, + "angularVelocity": -1.1180701405690067e-23, + "velocityX": 5.657605743248927e-25, + "velocityY": -3.7905848465979004e-24, + "timestamp": 5.576055701668651 + } + ], + "eventMarkers": [] +} \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/New Path.traj b/Robot/src/main/deploy/choreo/New Path.traj new file mode 100644 index 0000000..b7cf449 --- /dev/null +++ b/Robot/src/main/deploy/choreo/New Path.traj @@ -0,0 +1,968 @@ +{ + "samples": [ + { + "x": 1.373390793800354, + "y": 5.535864353179932, + "heading": -3.14, + "angularVelocity": -2.82434317075584e-23, + "velocityX": 1.7420984263678853e-22, + "velocityY": 6.607050300828325e-22, + "timestamp": 0 + }, + { + "x": 1.3954167220425728, + "y": 5.535862029256062, + "heading": -3.141163552097975, + "angularVelocity": -0.016470698213205317, + "velocityX": 0.31178871799098296, + "velocityY": -0.000032896377210242694, + "timestamp": 0.07064376281522751 + }, + { + "x": 1.4394687417666225, + "y": 5.535912852760689, + "heading": -3.143439344791257, + "angularVelocity": -0.03221505484121067, + "velocityX": 0.6235797467254175, + "velocityY": 0.0007194337135808534, + "timestamp": 0.14128752563045502 + }, + { + "x": 1.5055468364541058, + "y": 5.536091210226698, + "heading": -3.146758591200165, + "angularVelocity": -0.046985696636652786, + "velocityX": 0.9353705416331396, + "velocityY": 0.0025247447035990096, + "timestamp": 0.21193128844568254 + }, + { + "x": 1.5936505240571006, + "y": 5.5365020610023254, + "heading": -3.151024261015905, + "angularVelocity": -0.060382822852982895, + "velocityX": 1.2471545128964379, + "velocityY": 0.005815811039144578, + "timestamp": 0.28257505126091004 + }, + { + "x": 1.7037780479554485, + "y": 5.537304646188576, + "heading": -3.1560891544883583, + "angularVelocity": -0.0716962583901507, + "velocityX": 1.5589136182679146, + "velocityY": 0.011361019773914906, + "timestamp": 0.35321881407613753 + }, + { + "x": 1.8359235973509576, + "y": 5.538769224266934, + "heading": -3.161703337960502, + "angularVelocity": -0.07947175020713407, + "velocityX": 1.8705904687034165, + "velocityY": 0.020731880919063646, + "timestamp": 0.42386257689136503 + }, + { + "x": 1.9900638368261871, + "y": 5.541454826155834, + "heading": -3.167348805342055, + "angularVelocity": -0.07991459056787735, + "velocityX": 2.181936993905504, + "velocityY": 0.038016121761865675, + "timestamp": 0.4945063397065925 + }, + { + "x": 2.166014894423818, + "y": 5.547190591916742, + "heading": -3.171311156220804, + "angularVelocity": -0.05608918212797654, + "velocityX": 2.490680713849295, + "velocityY": 0.0811928121086299, + "timestamp": 0.5651501025218201 + }, + { + "x": 2.3270054280383907, + "y": 5.568416514813431, + "heading": -3.158429642768342, + "angularVelocity": 0.18234466765529062, + "velocityX": 2.278906547427999, + "velocityY": 0.3004642172332755, + "timestamp": 0.6357938653370476 + }, + { + "x": 2.4662020206451416, + "y": 5.5926337242126465, + "heading": -3.141592653589793, + "angularVelocity": 0.23833652834415398, + "velocityX": 1.9704017320089124, + "velocityY": 0.34280746712991245, + "timestamp": 0.7064376281522752 + }, + { + "x": 2.5179211474133147, + "y": 5.6019384518743145, + "heading": -3.1354979741268703, + "angularVelocity": 0.24463821278963835, + "velocityX": 2.0759869024413646, + "velocityY": 0.37348837777157223, + "timestamp": 0.731350659495272 + }, + { + "x": 2.572270701485961, + "y": 5.612007668253337, + "heading": -3.1292503555801803, + "angularVelocity": 0.2507771318822764, + "velocityX": 2.18157129593641, + "velocityY": 0.40417467631263526, + "timestamp": 0.7562636908382688 + }, + { + "x": 2.6292506611625033, + "y": 5.622841519442725, + "heading": -3.1228541907783236, + "angularVelocity": 0.25673972443561044, + "velocityX": 2.28715481837821, + "velocityY": 0.4348668389739167, + "timestamp": 0.7811767221812657 + }, + { + "x": 2.6888610019940837, + "y": 5.6344401650270655, + "heading": -3.1163142562473505, + "angularVelocity": 0.26251058897381424, + "velocityX": 2.3927373594516785, + "velocityY": 0.4655654073025398, + "timestamp": 0.8060897535242625 + }, + { + "x": 2.7511016962877353, + "y": 5.646803780019505, + "heading": -3.109635766981535, + "angularVelocity": 0.26807212554215154, + "velocityX": 2.4983187889396388, + "velocityY": 0.4962710005947778, + "timestamp": 0.8310027848672593 + }, + { + "x": 2.81597271249104, + "y": 5.659932557185373, + "heading": -3.102824442395177, + "angularVelocity": 0.27340408690462376, + "velocityX": 2.6038989519249967, + "velocityY": 0.5269843314172872, + "timestamp": 0.8559158162102561 + }, + { + "x": 2.8834740144199107, + "y": 5.673826709854039, + "heading": -3.0958865864334353, + "angularVelocity": 0.27848301020550864, + "velocityX": 2.709477662494325, + "velocityY": 0.5577062252030255, + "timestamp": 0.880828847553253 + }, + { + "x": 2.953605560277617, + "y": 5.688486475354224, + "heading": -3.0888291858243515, + "angularVelocity": 0.2832814887887059, + "velocityX": 2.8150546953580386, + "velocityY": 0.5884376452769706, + "timestamp": 0.9057418788962498 + }, + { + "x": 3.026367301391608, + "y": 5.703912119255662, + "heading": -3.0816600318771536, + "angularVelocity": 0.28776722705858193, + "velocityX": 2.9206297745234426, + "velocityY": 0.619179725223414, + "timestamp": 0.9306549102392466 + }, + { + "x": 3.1017591805622913, + "y": 5.720103940668468, + "heading": -3.0743878732860472, + "angularVelocity": 0.2919017959310087, + "velocityX": 3.026202557717816, + "velocityY": 0.6499338113408133, + "timestamp": 0.9555679415822435 + }, + { + "x": 3.179781129867705, + "y": 5.737062278951719, + "heading": -3.067022610425793, + "angularVelocity": 0.29563896736817125, + "velocityX": 3.131772614549612, + "velocityY": 0.6807015192079763, + "timestamp": 0.9804809729252403 + }, + { + "x": 3.2604330676886852, + "y": 5.7547875223330545, + "heading": -3.0595755461907523, + "angularVelocity": 0.29892244474433144, + "velocityX": 3.2373393952177807, + "velocityY": 0.7114848103907929, + "timestamp": 1.0053940042682372 + }, + { + "x": 3.343714894589163, + "y": 5.773280119171789, + "heading": -3.0520597154967803, + "angularVelocity": 0.3016827053478781, + "velocityX": 3.3429021845584823, + "velocityY": 0.742286098553487, + "timestamp": 1.030307035611234 + }, + { + "x": 3.4296264874669924, + "y": 5.792540592963052, + "heading": -3.0444903268373738, + "angularVelocity": 0.3038325025643338, + "velocityX": 3.4484600326238115, + "velocityY": 0.7731083996198849, + "timestamp": 1.0552200669542309 + }, + { + "x": 3.5181676910051554, + "y": 5.812569562776201, + "heading": -3.036885367888651, + "angularVelocity": 0.30526028101597386, + "velocityX": 3.554011646320699, + "velocityY": 0.8039555499046173, + "timestamp": 1.0801330982972277 + }, + { + "x": 3.6093383047445466, + "y": 5.833367771831505, + "heading": -3.02926645910632, + "angularVelocity": 0.3058202222537983, + "velocityX": 3.6595552136621126, + "velocityY": 0.8348325327801501, + "timestamp": 1.1050461296402245 + }, + { + "x": 3.7031380627247383, + "y": 5.854936128710036, + "heading": -3.021660096759598, + "angularVelocity": 0.30531661290025214, + "velocityX": 3.765088105448813, + "velocityY": 0.8657459857687129, + "timestamp": 1.1299591609832214 + }, + { + "x": 3.799566599795939, + "y": 5.877275769035245, + "heading": -3.0140995363197214, + "angularVelocity": 0.3034781410493393, + "velocityX": 3.870606340255989, + "velocityY": 0.8967050222690318, + "timestamp": 1.1548721923262182 + }, + { + "x": 3.8986233923456974, + "y": 5.900388152110491, + "heading": -3.0066277903463905, + "angularVelocity": 0.29991316072545443, + "velocityX": 3.9761035574501644, + "velocityY": 0.9277226346741867, + "timestamp": 1.179785223669215 + }, + { + "x": 4.000307645489192, + "y": 5.924275221259104, + "heading": -2.9993027111169632, + "angularVelocity": 0.2940260110693561, + "velocityX": 4.081568868257279, + "velocityY": 0.9588182513698355, + "timestamp": 1.2046982550122118 + }, + { + "x": 4.104618054767629, + "y": 5.9489396903011205, + "heading": -2.992206361108462, + "angularVelocity": 0.28484490348846914, + "velocityX": 4.18698181856379, + "velocityY": 0.9900227998127282, + "timestamp": 1.2296112863552087 + }, + { + "x": 4.2115522235858025, + "y": 5.974385608457378, + "heading": -2.9854644417536758, + "angularVelocity": 0.27061818620004263, + "velocityX": 4.292298570411896, + "velocityY": 1.0213898825045442, + "timestamp": 1.2545243176982055 + }, + { + "x": 4.321104885250453, + "y": 6.000619634583579, + "heading": -2.9792944544666136, + "angularVelocity": 0.24766104140903092, + "velocityX": 4.39740391911185, + "velocityY": 1.0530242492380477, + "timestamp": 1.2794373490412023 + }, + { + "x": 4.433259894338234, + "y": 6.027654403922367, + "heading": -2.9741691000976167, + "angularVelocity": 0.20572985673369118, + "velocityX": 4.501861196401822, + "velocityY": 1.0851657900069145, + "timestamp": 1.3043503803841991 + }, + { + "x": 4.547895470478681, + "y": 6.055502741756316, + "heading": -2.972022644848979, + "angularVelocity": 0.08615793152931939, + "velocityX": 4.601430253997158, + "velocityY": 1.1178221329447748, + "timestamp": 1.329263411727196 + }, + { + "x": 4.662586364395008, + "y": 6.086032564553175, + "heading": -2.9720226405281305, + "angularVelocity": 1.7343729890429694e-7, + "velocityX": 4.6036506893638345, + "velocityY": 1.2254559622445014, + "timestamp": 1.3541764430701928 + }, + { + "x": 4.776604144026135, + "y": 6.118987340123003, + "heading": -2.972022636821939, + "angularVelocity": 1.487651723674871e-7, + "velocityX": 4.576632127233111, + "velocityY": 1.3227926829182501, + "timestamp": 1.3790894744131896 + }, + { + "x": 4.890615117413081, + "y": 6.151965655001972, + "heading": -2.9720226331157256, + "angularVelocity": 1.4876605726394647e-7, + "velocityX": 4.576358927071857, + "velocityY": 1.3237375422095177, + "timestamp": 1.4040025057561865 + }, + { + "x": 5.0046260804479115, + "y": 6.184944005669727, + "heading": -2.972022629409512, + "angularVelocity": 1.487660596456677e-7, + "velocityX": 4.576358511541768, + "velocityY": 1.3237389787584244, + "timestamp": 1.4289155370991833 + }, + { + "x": 5.118637043467059, + "y": 6.217922356391706, + "heading": -2.9720226257032984, + "angularVelocity": 1.4876606015209578e-7, + "velocityX": 4.57635851091221, + "velocityY": 1.3237389809348972, + "timestamp": 1.4538285684421801 + }, + { + "x": 5.232648006768652, + "y": 6.2509007061372195, + "heading": -2.972022621997085, + "angularVelocity": 1.4876606132175137e-7, + "velocityX": 4.576358522249539, + "velocityY": 1.3237389417401004, + "timestamp": 1.478741599785177 + }, + { + "x": 5.346659155827142, + "y": 6.283878413687287, + "heading": -2.972022618290872, + "angularVelocity": 1.4876602083758807e-7, + "velocityX": 4.576365978463671, + "velocityY": 1.323713164248677, + "timestamp": 1.5036546311281738 + }, + { + "x": 5.460788726806641, + "y": 6.316443920135498, + "heading": -2.972022613636867, + "angularVelocity": 1.8681006445890502e-7, + "velocityX": 4.581119391220948, + "velocityY": 1.3071675622230816, + "timestamp": 1.5285676624711706 + }, + { + "x": 5.619993247774208, + "y": 6.360818104348682, + "heading": -2.9591725358910055, + "angularVelocity": 0.36086031768123, + "velocityX": 4.470836297558475, + "velocityY": 1.2461311541225735, + "timestamp": 1.5641772241664869 + }, + { + "x": 5.773672003470037, + "y": 6.404401799450161, + "heading": -2.944913611897587, + "angularVelocity": 0.4004240241826515, + "velocityX": 4.315659850316082, + "velocityY": 1.2239323660985362, + "timestamp": 1.5997867858618031 + }, + { + "x": 5.921814760313314, + "y": 6.447170078076461, + "heading": -2.9302180374942255, + "angularVelocity": 0.41268619167795345, + "velocityX": 4.1601960201257535, + "velocityY": 1.2010335592511447, + "timestamp": 1.6353963475571194 + }, + { + "x": 6.064421266917378, + "y": 6.4891155098465925, + "heading": -2.9153905734710155, + "angularVelocity": 0.41638996149621743, + "velocityX": 4.004725130408471, + "velocityY": 1.1779260898807962, + "timestamp": 1.6710059092524356 + }, + { + "x": 6.201491916625645, + "y": 6.5302345384208484, + "heading": -2.9005808672107585, + "angularVelocity": 0.4158912818689674, + "velocityX": 3.8492652866967405, + "velocityY": 1.154718750151433, + "timestamp": 1.706615470947752 + }, + { + "x": 6.333027104014587, + "y": 6.570525082703978, + "heading": -2.8858780184011064, + "angularVelocity": 0.4128904740657215, + "velocityX": 3.693816523617669, + "velocityY": 1.131452968387105, + "timestamp": 1.7422250326430682 + }, + { + "x": 6.459027156593173, + "y": 6.6099857791590395, + "heading": -2.871341244225326, + "angularVelocity": 0.40822670888680024, + "velocityX": 3.5383769577585027, + "velocityY": 1.1081488953078464, + "timestamp": 1.7778345943383844 + }, + { + "x": 6.579492339397848, + "y": 6.648615666984608, + "heading": -2.8570128319385093, + "angularVelocity": 0.4023754184175068, + "velocityX": 3.3829448347441886, + "velocityY": 1.084817840671425, + "timestamp": 1.8134441560337007 + }, + { + "x": 6.694422868067946, + "y": 6.686414033876065, + "heading": -2.8429245554455904, + "angularVelocity": 0.39563184218500724, + "velocityX": 3.2275187673881494, + "velocityY": 1.0614667828508728, + "timestamp": 1.849053717729017 + }, + { + "x": 6.803818920282884, + "y": 6.723380331567842, + "heading": -2.8291012163393043, + "angularVelocity": 0.3881917790665907, + "velocityX": 3.0720976896867125, + "velocityY": 1.0381003284474422, + "timestamp": 1.8846632794243332 + }, + { + "x": 6.907680644474139, + "y": 6.7595141257035065, + "heading": -2.815562757243929, + "angularVelocity": 0.38019168029119643, + "velocityX": 2.9166807802893104, + "velocityY": 1.0147216762967697, + "timestamp": 1.9202728411196495 + }, + { + "x": 7.006008166274734, + "y": 6.794815064200952, + "heading": -2.8023256004495165, + "angularVelocity": 0.3717304050994219, + "velocityX": 2.7612673989618037, + "velocityY": 0.9913331368548697, + "timestamp": 1.9558824028149657 + }, + { + "x": 7.0988015932971456, + "y": 6.8292828563027905, + "heading": -2.78940353644908, + "angularVelocity": 0.36288186052389076, + "velocityX": 2.605857039644986, + "velocityY": 0.967936432263727, + "timestamp": 1.991491964510282 + }, + { + "x": 7.1860610187092355, + "y": 6.862917258151496, + "heading": -2.7768083363965803, + "angularVelocity": 0.3537027543407289, + "velocityX": 2.450449296700172, + "velocityY": 0.9445328795812922, + "timestamp": 2.0271015262055982 + }, + { + "x": 7.267786523946172, + "y": 6.895718062532486, + "heading": -2.7645501875766114, + "angularVelocity": 0.34423756531609073, + "velocityX": 2.295043840645944, + "velocityY": 0.92112350782753, + "timestamp": 2.0627110879009143 + }, + { + "x": 7.343978180795563, + "y": 6.927685091381284, + "heading": -2.752638011172443, + "angularVelocity": 0.3345218485442658, + "velocityX": 2.139640400556062, + "velocityY": 0.8977091356056494, + "timestamp": 2.0983206495962303 + }, + { + "x": 7.41463605302207, + "y": 6.958818190182592, + "heading": -2.741079699300761, + "angularVelocity": 0.3245845026281963, + "velocityX": 1.9842387511273427, + "velocityY": 0.8742904242318493, + "timestamp": 2.1339302112915464 + }, + { + "x": 7.4797601976490595, + "y": 6.989117223699881, + "heading": -2.729882295187736, + "angularVelocity": 0.314449366404244, + "velocityX": 1.8288387030485591, + "velocityY": 0.8508679150991757, + "timestamp": 2.1695397729868624 + }, + { + "x": 7.539350665981394, + "y": 7.018582072662865, + "heading": -2.7190521323770627, + "angularVelocity": 0.30413636942061584, + "velocityX": 1.673440095730611, + "velocityY": 0.8274420565771762, + "timestamp": 2.2051493346821784 + }, + { + "x": 7.59340750443028, + "y": 7.047212631158878, + "heading": -2.70859494382748, + "angularVelocity": 0.29366237751132823, + "velocityX": 1.5180427917481332, + "velocityY": 0.804013223779112, + "timestamp": 2.2407588963774945 + }, + { + "x": 7.641930755184944, + "y": 7.075008804550945, + "heading": -2.698515948490913, + "angularVelocity": 0.2830418251930565, + "velocityX": 1.3626466725381483, + "velocityY": 0.7805817333529121, + "timestamp": 2.2763684580728105 + }, + { + "x": 7.68492045676446, + "y": 7.101970507796351, + "heading": -2.688819920787713, + "angularVelocity": 0.2722871959548869, + "velocityX": 1.2072516350340368, + "velocityY": 0.7571478547278054, + "timestamp": 2.3119780197681266 + }, + { + "x": 7.722376644474786, + "y": 7.128097664074123, + "heading": -2.6795112469143856, + "angularVelocity": 0.26140939203280295, + "velocityX": 1.0518575890040596, + "velocityY": 0.7337118187896131, + "timestamp": 2.3475875814634426 + }, + { + "x": 7.75429935079016, + "y": 7.153390203653904, + "heading": -2.6705939708898794, + "angularVelocity": 0.25041802257507934, + "velocityX": 0.8964644549268095, + "velocityY": 0.7102738246595033, + "timestamp": 2.3831971431587586 + }, + { + "x": 7.7806886056735625, + "y": 7.177848062955659, + "heading": -2.6620718325179498, + "angularVelocity": 0.2393216306577293, + "velocityX": 0.7410721622803245, + "velocityY": 0.6868340450528948, + "timestamp": 2.4188067048540747 + }, + { + "x": 7.801544436847726, + "y": 7.201471183761836, + "heading": -2.653948298918918, + "angularVelocity": 0.22812787387103486, + "velocityX": 0.5856806481531491, + "velocityY": 0.6633926305608906, + "timestamp": 2.4544162665493907 + }, + { + "x": 7.8168668700256845, + "y": 7.224259512552509, + "heading": -2.646226590901266, + "angularVelocity": 0.21684366922907553, + "velocityX": 0.43028985610836296, + "velocityY": 0.6399497131038998, + "timestamp": 2.4900258282447068 + }, + { + "x": 7.82665592910803, + "y": 7.246212999940603, + "heading": -2.638909705160028, + "angularVelocity": 0.20547531036307248, + "velocityX": 0.2748997352481349, + "velocityY": 0.6165054087420264, + "timestamp": 2.525635389940023 + }, + { + "x": 7.830911636352539, + "y": 7.267331600189209, + "heading": -2.632000433076407, + "angularVelocity": 0.19402856296683813, + "velocityX": 0.11951023943856069, + "velocityY": 0.5930598199804185, + "timestamp": 2.561244951635339 + }, + { + "x": 7.807554746211344, + "y": 7.314481773120804, + "heading": -2.617417777164506, + "angularVelocity": 0.16547612190182404, + "velocityX": -0.26504140422718087, + "velocityY": 0.5350347571016485, + "timestamp": 2.6493703907881385 + }, + { + "x": 7.750362372151811, + "y": 7.356181644302872, + "heading": -2.6054727306062277, + "angularVelocity": 0.13554595214631465, + "velocityX": -0.6489882445903903, + "velocityY": 0.4731876695645769, + "timestamp": 2.737495829940938 + }, + { + "x": 7.659408985329993, + "y": 7.391993364231043, + "heading": -2.59631898714542, + "angularVelocity": 0.1038717485984504, + "velocityX": -1.0320900264010608, + "velocityY": 0.40637210177277355, + "timestamp": 2.825621269093738 + }, + { + "x": 7.53480466246767, + "y": 7.421324954259901, + "heading": -2.590159490954979, + "angularVelocity": 0.06989464392638106, + "velocityX": -1.4139427168842045, + "velocityY": 0.33283907928107187, + "timestamp": 2.9137467082465376 + }, + { + "x": 7.376725182280505, + "y": 7.443332574685867, + "heading": -2.58727756406566, + "angularVelocity": 0.03270255350809968, + "velocityX": -1.7938007652146122, + "velocityY": 0.24973061850854159, + "timestamp": 3.0018721473993373 + }, + { + "x": 7.185484575073475, + "y": 7.456719845251442, + "heading": -2.588100582009295, + "angularVelocity": -0.009339164168109404, + "velocityX": -2.1700953668490657, + "velocityY": 0.15191153308595862, + "timestamp": 3.089997586552137 + }, + { + "x": 6.96175198859567, + "y": 7.459256684180001, + "heading": -2.593352929900895, + "angularVelocity": -0.05960081381828049, + "velocityX": -2.538796840375215, + "velocityY": 0.028786681268744098, + "timestamp": 3.1781230257049367 + }, + { + "x": 6.707472058422852, + "y": 7.446334711458515, + "heading": -2.6045310943802176, + "angularVelocity": -0.12684378752360922, + "velocityX": -2.885431637190761, + "velocityY": -0.14663158386173333, + "timestamp": 3.2662484648577363 + }, + { + "x": 6.432924312323279, + "y": 7.405922956679372, + "heading": -2.6259949207482713, + "angularVelocity": -0.24355993654497712, + "velocityX": -3.1154198916789273, + "velocityY": -0.4585708186835176, + "timestamp": 3.354373904010536 + }, + { + "x": 6.179679523545089, + "y": 7.338809872599317, + "heading": -2.658648029247715, + "angularVelocity": -0.3705298811938591, + "velocityX": -2.8736854103965634, + "velocityY": -0.7615631164536769, + "timestamp": 3.4424993431633357 + }, + { + "x": 5.958645318140905, + "y": 7.260012876936155, + "heading": -2.6951092608022327, + "angularVelocity": -0.41374240974048565, + "velocityX": -2.508177065886002, + "velocityY": -0.8941458496057648, + "timestamp": 3.5306247823161354 + }, + { + "x": 5.7713029407636975, + "y": 7.174908602956231, + "heading": -2.733160894484531, + "angularVelocity": -0.4317894361504518, + "velocityX": -2.125860355173683, + "velocityY": -0.9657174454740964, + "timestamp": 3.618750221468935 + }, + { + "x": 5.618026104094792, + "y": 7.085979942990996, + "heading": -2.771854911215978, + "angularVelocity": -0.4390788528651328, + "velocityX": -1.739302954316538, + "velocityY": -1.009114516990289, + "timestamp": 3.706875660621735 + }, + { + "x": 5.498943908482782, + "y": 6.994633502423811, + "heading": -2.8106774088345605, + "angularVelocity": -0.44053678474462404, + "velocityX": -1.3512805922650102, + "velocityY": -1.0365501885193495, + "timestamp": 3.7950010997745345 + }, + { + "x": 5.414108133317092, + "y": 6.901770404602659, + "heading": -2.8493092023731994, + "angularVelocity": -0.43837277760007154, + "velocityX": -0.962670665601943, + "velocityY": -1.0537603978362906, + "timestamp": 3.883126538927334 + }, + { + "x": 5.363540600270839, + "y": 6.808016064764776, + "heading": -2.887533978669486, + "angularVelocity": -0.43375416524176585, + "velocityX": -0.5738131183502542, + "velocityY": -1.0638737320255882, + "timestamp": 3.971251978080134 + }, + { + "x": 5.347249984741211, + "y": 6.713829517364502, + "heading": -2.9251958710092785, + "angularVelocity": -0.42736686139505325, + "velocityX": -0.1848571273657065, + "velocityY": -1.0687781905627245, + "timestamp": 4.059377417232933 + }, + { + "x": 5.365891027779734, + "y": 6.618393862600329, + "heading": -2.9626265560753033, + "angularVelocity": -0.41954951992944506, + "velocityX": 0.20894195882338126, + "velocityY": -1.0697101340740476, + "timestamp": 4.148593786905622 + }, + { + "x": 5.419665157043064, + "y": 6.523079084641424, + "heading": -2.999289019090276, + "angularVelocity": -0.41093874531633023, + "velocityX": 0.6027383703306144, + "velocityY": -1.068355261580243, + "timestamp": 4.237810156578312 + }, + { + "x": 5.508570208017759, + "y": 6.428155743046912, + "heading": -3.0350883376100666, + "angularVelocity": -0.4012640129959147, + "velocityX": 0.9965105204444354, + "velocityY": -1.0639677667087186, + "timestamp": 4.327026526251001 + }, + { + "x": 5.632599675291343, + "y": 6.3339997437304225, + "heading": -3.069891429914663, + "angularVelocity": -0.39009760688850553, + "velocityX": 1.3902097533066353, + "velocityY": -1.0553668532122726, + "timestamp": 4.41624289592369 + }, + { + "x": 5.791736419311823, + "y": 6.241168484817361, + "heading": -3.1034994514568583, + "angularVelocity": -0.37670241084112394, + "velocityX": 1.7837168739807538, + "velocityY": -1.0405182283658685, + "timestamp": 4.50545926559638 + }, + { + "x": 5.985933114334994, + "y": 6.150573116808587, + "heading": -3.135584965329755, + "angularVelocity": -0.35963707098383246, + "velocityX": 2.1766935343326033, + "velocityY": -1.0154567860264216, + "timestamp": 4.594675635269069 + }, + { + "x": 6.21503104738065, + "y": 6.0639656632428816, + "heading": -3.1655118524413957, + "angularVelocity": -0.33544165965768785, + "velocityX": 2.567891227654233, + "velocityY": -0.9707574280756485, + "timestamp": 4.683892004941758 + }, + { + "x": 6.4781630503521095, + "y": 5.986007206964285, + "heading": -3.1915383988945667, + "angularVelocity": -0.29172389045480446, + "velocityX": 2.94936908929179, + "velocityY": -0.873813365917101, + "timestamp": 4.773108374614448 + }, + { + "x": 6.754060772112618, + "y": 5.940540712143944, + "heading": -3.202308528029517, + "angularVelocity": -0.12071920404812232, + "velocityX": 3.092456269770913, + "velocityY": -0.5096205437090053, + "timestamp": 4.862324744287137 + }, + { + "x": 6.9977159525173604, + "y": 5.908972295194805, + "heading": -3.2086126383290163, + "angularVelocity": -0.07066091483689793, + "velocityX": 2.731059123999851, + "velocityY": -0.353841083928376, + "timestamp": 4.951541113959826 + }, + { + "x": 7.207090659869358, + "y": 5.8850775781655935, + "heading": -3.212859245938106, + "angularVelocity": -0.047598973424597894, + "velocityX": 2.3468194023152535, + "velocityY": -0.2678288425865638, + "timestamp": 5.0407574836325155 + }, + { + "x": 7.381780547491699, + "y": 5.866770253471726, + "heading": -3.2158161125570914, + "angularVelocity": -0.033142646689540686, + "velocityX": 1.9580474778701502, + "velocityY": -0.20520140822846553, + "timestamp": 5.129973853305205 + }, + { + "x": 7.52163405520933, + "y": 5.853018511986726, + "heading": -3.217858423959668, + "angularVelocity": -0.02289166674310414, + "velocityX": 1.5675767600801969, + "velocityY": -0.1541392183458195, + "timestamp": 5.219190222977894 + }, + { + "x": 7.626575951196748, + "y": 5.843208449084505, + "heading": -3.2192083663887368, + "angularVelocity": -0.015131106926019615, + "velocityX": 1.1762627909252632, + "velocityY": -0.10995810452960539, + "timestamp": 5.3084065926505835 + }, + { + "x": 7.696562480811879, + "y": 5.836933286768317, + "heading": -3.220012824660454, + "angularVelocity": -0.009016935733524306, + "velocityX": 0.7844583888796706, + "velocityY": -0.070336445421512, + "timestamp": 5.397622962323273 + }, + { + "x": 7.731565475463867, + "y": 5.833903789520264, + "heading": -3.220376105866096, + "angularVelocity": -0.004071911992999992, + "velocityX": 0.3923382533990597, + "velocityY": -0.03395674201009736, + "timestamp": 5.486839331995962 + }, + { + "x": 7.731565475463867, + "y": 5.833903789520264, + "heading": -3.220376105866096, + "angularVelocity": -1.1180701405690067e-23, + "velocityX": 5.657605743248927e-25, + "velocityY": -3.7905848465979004e-24, + "timestamp": 5.576055701668651 + } + ], + "eventMarkers": [] +} \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Source End.1.traj b/Robot/src/main/deploy/choreo/Source End.1.traj index 23c96fa..573c3d5 100644 --- a/Robot/src/main/deploy/choreo/Source End.1.traj +++ b/Robot/src/main/deploy/choreo/Source End.1.traj @@ -1342,24 +1342,5 @@ "timestamp": 5.537898337809306 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - }, - { - "timestamp": 3.667155129979705, - "command": { - "type": "named", - "data": { - "name": "Intake Off" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Source End.traj b/Robot/src/main/deploy/choreo/Source End.traj index 23c96fa..573c3d5 100644 --- a/Robot/src/main/deploy/choreo/Source End.traj +++ b/Robot/src/main/deploy/choreo/Source End.traj @@ -1342,24 +1342,5 @@ "timestamp": 5.537898337809306 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - }, - { - "timestamp": 3.667155129979705, - "command": { - "type": "named", - "data": { - "name": "Intake Off" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Source Mid.1.traj b/Robot/src/main/deploy/choreo/Source Mid.1.traj index 52195f0..f68d30b 100644 --- a/Robot/src/main/deploy/choreo/Source Mid.1.traj +++ b/Robot/src/main/deploy/choreo/Source Mid.1.traj @@ -1000,15 +1000,5 @@ "timestamp": 5.486705992958161 } ], - "eventMarkers": [ - { - "timestamp": 5.486705992958161, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Source Mid.traj b/Robot/src/main/deploy/choreo/Source Mid.traj index 52195f0..f68d30b 100644 --- a/Robot/src/main/deploy/choreo/Source Mid.traj +++ b/Robot/src/main/deploy/choreo/Source Mid.traj @@ -1000,15 +1000,5 @@ "timestamp": 5.486705992958161 } ], - "eventMarkers": [ - { - "timestamp": 5.486705992958161, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Source Side Start A.1.traj b/Robot/src/main/deploy/choreo/Source Side Start A.1.traj index 0c14861..e040049 100644 --- a/Robot/src/main/deploy/choreo/Source Side Start A.1.traj +++ b/Robot/src/main/deploy/choreo/Source Side Start A.1.traj @@ -136,28 +136,5 @@ "timestamp": 1.104814261387943 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Shoot" - } - }, - { - "type": "named", - "data": { - "name": "Intake On" - } - } - ] - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Source Side Start A.2.traj b/Robot/src/main/deploy/choreo/Source Side Start A.2.traj index a77088d..0039133 100644 --- a/Robot/src/main/deploy/choreo/Source Side Start A.2.traj +++ b/Robot/src/main/deploy/choreo/Source Side Start A.2.traj @@ -1216,15 +1216,5 @@ "timestamp": 5.799739928628856 } ], - "eventMarkers": [ - { - "timestamp": 5.799739928628856, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Source Side Start A.traj b/Robot/src/main/deploy/choreo/Source Side Start A.traj index d111819..dbaa2ab 100644 --- a/Robot/src/main/deploy/choreo/Source Side Start A.traj +++ b/Robot/src/main/deploy/choreo/Source Side Start A.traj @@ -1342,37 +1342,5 @@ "timestamp": 6.9045541900168 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Shoot" - } - }, - { - "type": "named", - "data": { - "name": "Intake On" - } - } - ] - } - } - }, - { - "timestamp": 6.9045541900168, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Source Side Start B.1.traj b/Robot/src/main/deploy/choreo/Source Side Start B.1.traj index 4279f8b..af7e50a 100644 --- a/Robot/src/main/deploy/choreo/Source Side Start B.1.traj +++ b/Robot/src/main/deploy/choreo/Source Side Start B.1.traj @@ -1306,37 +1306,5 @@ "timestamp": 5.6495688747858885 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Shoot" - } - }, - { - "type": "named", - "data": { - "name": "Intake On" - } - } - ] - } - } - }, - { - "timestamp": 5.6495688747858885, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/choreo/Source Side Start B.traj b/Robot/src/main/deploy/choreo/Source Side Start B.traj index 4279f8b..af7e50a 100644 --- a/Robot/src/main/deploy/choreo/Source Side Start B.traj +++ b/Robot/src/main/deploy/choreo/Source Side Start B.traj @@ -1306,37 +1306,5 @@ "timestamp": 5.6495688747858885 } ], - "eventMarkers": [ - { - "timestamp": 0, - "command": { - "type": "parallel", - "data": { - "commands": [ - { - "type": "named", - "data": { - "name": "Shoot" - } - }, - { - "type": "named", - "data": { - "name": "Intake On" - } - } - ] - } - } - }, - { - "timestamp": 5.6495688747858885, - "command": { - "type": "named", - "data": { - "name": "Shoot" - } - } - } - ] + "eventMarkers": [] } \ No newline at end of file diff --git a/Robot/src/main/deploy/music/Tetris.chrp b/Robot/src/main/deploy/music/Tetris.chrp new file mode 100644 index 0000000000000000000000000000000000000000..c44600e1ddfb32f27c992d5939d2907a7df17ee7 GIT binary patch literal 31428 zcmeI5`EON49K{C^%3cuJ6l_tUph)Y&Do`|$f-J2In$(`;NcIR zC@egGqg{bd!4v#+TY1i-U4qAF&wxkU$sfE49^Z8eY|N2Acr$znWu66dI;6A@PwJz-Sr#v5{eFhItXdm^`wgi8@w>(?W-i62ZZU%Ss(RT&k+*kE~8?6@J;sLi@ zt9Fj}Yp#=L1KK8dc-Dd&`^gi$s=qud(bmA5@Pt-!eM+mcd?~yw+r9uS&P!<>dho^Y zH{ccE^8Azr;#mk*4an-?f*Z8$74Xs<<(Y+64*!C7D+9;eB!BSP@F-_8IDKGB)osKJ z2FX*5b}u|UBfzl*DdplR0*4HiCwK`w${z&|7$Sf0VtCZQ2pn;vO2hIvg#k6 z^84heM5}^FnHAu|DbnYF^QKBK1!qjtc7(-quG&95zdkC@NwjnDsPhT1d7kQX8oW@R z)xnb$><^CB@H9Lo&r!7F@RnlS%a*Hdv(d`oEgo>@3T=D5U%XPD60}lycqV|8UX(r>9KT9>AvpXcoma!t zf3-Y=(1yaJ{`ug@HLBZSu&^epgM-#e?+xa?EWI1pXPxv8VAofqXW(sL<-0jQN15m0 z@qgOH`&Z!Z!?+I<=P37K+=p==M(1JoVcdstAI5zckHe^+>~R>6!+0FV<1ikF(KWTl zVbl(5Jr2_{mf~?3T{rn&l71Jym*jg%zL(^CNxqk)dkwyqQ^g7e4e6KUTWGS8LZMoOrOs~e2oauF@*YlE; z(ek_`&r9;WB#j|>UXt3u^O8I-$@7vtx7u^7bw2dmYR|3q+-hAfcy6`M37%W6u@uj( zR&F!jbE~~ROb^yE=&9d@*N5@?FkT-rAgR zy}EXArq`KXXL_CK^|JHZ?5rfeS%I7TLpklbd}H?hfu7iZg&{ zRMZg_MOINjMLyjqH$weU8M%%n?yc`!Tz|InGA>Z#hR(%1eHVZAU7Xp- zl@Tj_7l$Rf{B`h>#?Hm(2=zgKPi*4y%AMo8c*1va-#M;K1q^({xtwoPmlvP$U2M|K z<;8#bF8=1bIO{x>DYa7gy645Vs<~Mep}tKc*ZF+cj@Y1ubMZFc#pAwz+R|)oD_2H5 z?z`CW0+$!3`YtZ=UEJflcy?=7UcAb8@fOcZZ9e?a^J3fChI@}tpS{1gb#({B4(*(a z3w=M<-fZ%PE-&u#U0ijM%ZnE$ITsgrUTQ1g_nsHq(TmNRb#TYk-zVX^mr~(X9i0z= zfhTn`tJ~S-#ZuqJBfg6hySOsq$G(fnU0q&W;d!a;fC+zBzSz#}#yv*pI_U4kxcYN5 zoZQ{{1Q>WZe&r=DFSh@Ob8)`!Vx1l?FBbVO9`;?l>7TBQxWjkx^`0&-KGw_iO?kQc zR(Pq|xXYaP?``%Pp}g3(k8^RJ?_%w~E-&W$E`H~EsU`F?yOhv1>DS+E2BB-Bzc0hp z{&G0~a_5i2z-wJ$mPe?JIQmNG;x^yKzR4~xzT*1@1I!*FG^Sb(G#f#v4>t~Cyb$U` zJh=~Wwf_-(ZLsr~Vc-v4WtKC<<;8=(kNO|8t%T}|mko6;F7;h(F--YV>jl$1FSe|! zx&I0EL4QAhtDSG*wriYkhJn9yt=ak4xxDy*?_y}U%Zr)5i~D`QKE>>PLhbh&VfG>+ z7n@)2T)f|R(MGzysk~g}#SGuYD&NHsH<(4O#L8jQQO4?3?D++r7h3BZ&6W^R{vzK% zOkgdW3y*kSY7<7AeMRV+q>M4^G1j@*be!23KQC8*#4m4h`M_0Ixp&5!&9!`+L_6&# zxOS9#4p%!WBUd|Obdt*lu6C5WmeZDtmrQYGl$Wcn`1@3s4_xJy+neg@iW{c6GRg-o zJ~Q1ci}K=KGhCa>%hirJbEb3g>RGNG<>l&wm>6~Wz*SedUkSNbndZtUFIQdhshGTo!(=%Ne<>iHzW?8UxmOj&2wiUk_pI}q1Kioj5eUWT|)c4d^8tFActR+kT4b(I@yv=8+aLI0#|wcy_%4VH$CiJ{K$9l@<&`dV%tZZ zi)YMpE`Cp_9dY|(F2C$?*01@_#r!8UR}@-D>i+XTuDo)6ah;dgdVzB>VWIB5$sP~k zYG1i+i(DD;l_#Bx4=;AtM0vUD2Cllw-T1UC6S$76T<WT-Sb@{+m zSGg_Exw_&@OI#V{<*F-Yz2NeJtFCe*UvzcFUjKDvl$Wcn7+UJ`fvc`^UlVe1)61@m z@^aM`?|aqd16O(FV#{1zal~t`jPi2T6`L)0`M_0IxjzWG_|+S(jPi2T6_>1Z`M_0P zxw}`nx_3dj<|5_ORy&^we|bzV(*N2d?8P_te|2u6X-; zS4MexAv?o+VVez_W3RU`e1e!@J#8+0n^5~I`#&39-M|a2$cB@vB%=I#0St}@@i=QpWLsa^8E*$>17eC}qmep_50rixpg zi)(xrJAB~IQDx-nvsizdbMct(yFN4a_%05raC!0KO6Toi;PpP|dGU5f_ zI~U`tor}4?i-$Zfwa8)C3qr^3^MhF`q2ucBFXL+SH8}5x^M_&JIY-S#{pj-IR^P?T zj=8+J)OWGvPcAP$=(`v>?(*UR-^CkhTwdHvsBbDGSKq`-e|G*7JpUKx;sd^m;a^=o z6Ylq29Qm8ei@kn#F23ly*!+aci(j8~eF$8AQ0|3OE+4q^%H3-rug`%iuUstT@_{Sg zBNDPd;#@xPxy*rG$oH)ivSiD)#@yNsYH1EB{nKNi5^GED0I`z&NJn^>sKGC-$1^-p z$osdx@FbBKDzJ8E(MEl>ljr#>_!vs*JypF#wUcAJd@o}Ua@Bce_cZ4^gfcvT82>kI z);*v3qy_t&kn<^cVyM*CwKQwhO6`}}d-#R8^7p~9t(7mbhwwstCGG1S%kVa=os^N^ zh^s&IlQ?DvcV0{I6ns19H4|2M+pc)ky>q@OQ$<$ms~ z`9If|;H&X5l-UN~9iaA0Y#qK2AH#KSGm!TrgIwRV@7|4Xr=N%6{a5L@+4e2|1bzsA z9_|~e;}+RV_+h*TKW`Z0G)33H*zO+aid*LH# zClxjsqxYrGTj09>J>jmgtc&!aKmHY7##si>kb^^+p0}81_7M3-a0$^iG}}UO1yMt< zmp{h*_PF{v+up`+!Uu=4>=8I?zS@l0J^H)nxi;eo=DkH`*V%N7;d}6hXy=xHJ8#Q< zBCjI9l2*Ti_dccb%C~*^gSg%auYsG(v=&G0HT(y>(lYEfIOJJrZ*)se)JU$e)@0aqqyv(~i%IleJ9=_4W+KyLv#(q`pPqFp*F#I9Q^q$j3F4J|G z<@sn_c|DIkwMOGT!>+|w;0H`&R%o!#!62k{=EG|T+b?Afo}JvrHTjrViE=KVG?mt$Q7 zpCFV!38x%z{gJyXB2HU24{%ICEM-h0%|2_O2d zdEjw!^^R*i7JJ?iuc4iRaLw zsrVS$e;+0@kL$BokKceV5s(g;Ujem;Q@J^#cJ)ZxGYTA)M zOeBT#z3(m-*H@bv*6=JoUp$8Y1ZOwYwT;>d{8_x5c_Xb6V~sdu<1GVzN~jOpV3$O- zGs)h=d*Ct3iwzqy=EEhP_r#OJlkI#MB@#nZtR1|E=o2ZiKVVuD-q+KIFw7*X!o{`= ze%(xM=GvF|Fo*_`tU$7~e-G~OdL+CGBku?|JUGwcKWay&7VZY|+kL{d1z zE{5+B)uB9_3mTy>RXZJ;`w+ilxkJ5 zeOu*cSq0t+PYOq^8N8QB4DoCa-y>p-own`F{*mO`kzbCN^VvNK+g_~eoN8rwcf6W& zzY`u~ovUH~k+; z_YVIvyoR~4VK?4m6V;(y*NLD+U zHUJJEpmw63KZciw3hf-$<;H{DIBkTt!gc@0;QK^1*GH~3J1LxH@4#k*b={`h+xRWG z?zat4@3>>E1@iT{%A7NdcQ1tMHiBKQR-4QT_&mIZYcAJ2@I~B*JFemLB33eozX97^ zt2Srbdw2(2_to?8yy0p;%U;1-;`)5k;Hnh0Uu3iJckmjUX8lL-UCH&z7yjuQo9B|7 zM;ziN^&4Ul_vCe~ZyO2COT*wULg&@5g8OQp+RXF3 z4L+DYFNW*C(7l@D`A)n?Xq<&v`vwrv@N~}~#S=qU+E}=fND5E#d>5`U{uZoZ-K^nr zT#Uz8sZ4>jhL;~u-F$10kHBNhX&d1S2i3O{dkg;n*Zkl98`dtOin{Uzgznp0;5S4f z_x4;^?~uwD*lqB#e!B;aW#Ng6AGlKXYt1J_Of2JO`d6 z)aN2-N7a6z-2@ANa-ZWQTzfq2M;aXGUL`aS*MZLx<+OhicK=z&&GUQ;u6b-R?D>n@ z$+hS4D6acz5j^p$+R3y>@W^j&PPhze&vuAo$v?-ddH$)xn*PX1)h)CHd^N87c_$on zO6QVe+wd43uTXi;RzN8FCkLmCYf@Bh)Vo2SWHC2 z!>y<9S@FDG!xs^&sVje$s0vT@xDVeHKg(WFj_4B^=dn=&Z6(a|{2zE(WQetdV~9bu zrdw+`ji`u>@p4b%D{9TK$*_z_iAy!*BDFZ@+I%OD*TOf&7kckGC)HLTa;+7)+wqjR zT-yPAoS}2fuut&;_@?+0TMM78tMW0=*WuOdWxCYkIfST)&rLLw!O_aW?yN7Z-j zw7?hORpC4dXamS zNa9{fhFiQcC3ayu-p5{~x*6W@?DpVg5q@LCzW8^doM%q`F0LN?VSRQ*a9aoUGtK7U zbvmkVdEW2i*5XNAhwI?SgvM9DPCU1FQTut;71wXz(j(dSVpq(=1k;uVou z-o7}so7x|3wPBQ)NB?tRLU-+vN83o>+r`JceesOGy8hhH{QYsfUHo)A2G{h{^-r~3 zaA$v&ndx-U`+W28#ALOZW<8+x z$ZAKv8ZV3FS`9ogP}ePHf8eL^ib$#rAH-)$Xe?aTmu(A>hAN~ z*duRXkE~~Y`3^iKF2}mFCw_|1xybdNc2j(*HQUCu+M)8i^T+>&S1_)%FaChgdzfsv zkI=Op%pQ5($7(0XQt$(~>Ylli@11w6p9S82`3}4+l4(!E$R1sX8CHfjz%>{Bj_Vz+ z#<=`eyo&cKv*Bp=zv^2SuKlpeL}4YN`Qdh`?{WJ?vTQ7S;_XCnLV=BfpAnnli>zk_ zzcbmVHq$*Hh-)r-6+Zoi?$tDV34a%lhHtb#VEUK3Z^v5={yLt-eLD-56De^MZ4^90 zR512GhuR}ob6%g}jjB|p$o>vH98lfa)(h{9s}Gyt(u3+-vA0KFhF5VvYhSGW@TT|- zYvg-M+%#|BtUYoP>$1LMZF@*%3M>Z0)vB9ev+=rk8TX|2$X6fMb)IgY+ykj66dacaokb$nP)$|Hm>_>G}OL0#(Sz%d_J!8ZGN0RK2gnF*9yKw=<_|Z zhWBzm>$tN$&%&!{{~4I{i`q%|_RI1L#{NC<%U@kP+9RLBHJ4ub8)RRs_eeu?0ciUdy#98oW*sU3$^cE&6+De z8`pb@3t?B@b?e%8!!Pl?#7-sfeR^%RpW(gV?tX@@e~I^gdrMvQEyEJ(@eZEQHLQOY z&js~$?pan1A8V-dO0zMI_>PZAVLn_9TP3>Bu{+e7n-Vv{dp|uAFHR`7Gn(+7IHCUh z1nZus`!>`24f_Mlb&fp0!EUU78jpRT-W^vk7WCeDZ42cK?97(@2A(xh+@%II4?=IX74-b30* z_YQM4V^HrcH9zZK+60e}c6}Jf+`Gh^d$X+$b8VhC-=D-x@E6tI62+e^LnE&>Ab6~zV?|r}5 z-9MW5Zf9PrU;MYl~?mS+rzHS_u-d6xHi+7XO0pYBgsd3j{Qkxa;@=kzRM%DKE~DX zo6?_ECd1~zOMX$AY`Y8Y^5+WuE@Fi@KNQ-9%nA20{x$dh0DGR&ITqS7sCQ*q^iAJ? zeioX_A{}acX~Y1*yGdmp0Ln1!`KYf&9Er^(f4a-@}2A~SGN`1 zP3X9_XYK=nzOI`Ul=J0*!&GLL3ehbe+x4Ls2 zAl~NAvBmA|NA6JFeA^C(-zhJ$f5XXlscyQJ!Xf`szRRjbZY|7ny?{kmNg?HWe zvM0MwUTpR6XD%Y-??1q2{h<3jgZTX;ntx*U+CSOX^we{5roD{M!nI~ChHWm@+L34X z;Y0DkJX58?n!b7l$hS=V?0%{{%EGj_gwV6%Sa^icTJt(=^{Ae!``Uf@W%$G4@%CSQ zDxS_W*f03L|EO+`_nX$A7pTlcI|er{l*ep8+`LGAOS8TBL0o&rcj5HKYA470&B8)l z&q6Q24$ml`<+1Z~?p$7jtCpzE3_JNOzrlE3KF#Kklcz_fSq}V~(6Oey!2S86#z>}h zg=hcQ%^~gK)h}s&$gsvR@eS=GvMm9&TfwtFUXEAcx}KZiij~S|dfc$u^{oJ2x5n%& zK8yZqx#n-W@q0G>iO{}pFFd(U*D%fAgs0x(S(E+yYp}!HIUDa9^d;<`2MgSdp&mRtm``GzPn$qbFO{u6A{Hav2V>aV)v?_ifJ(< zwu#Nl1EN!Ld9;Z2;`aFOztOcL#t85R>qRsa;Puvz*h08oe1zgX!d2p%Y!I=T&{KT4 z;^+#myJ18Fp_}r<6z>v_7q3$%qMp!3e5m3G;iPK3m-uZPMGO~?5Wlr<#4zEIY8<`u z@F5#V3>Dz(Y!b17fd3%H+XV9F_z$QTajSrT|N0R_1pLj>o1^d7AYzb!=Z%|23=q(m zqq$+Ti2eee*KHorPr%b0y*c_mTSVL_;CW5Mh#Len=4g6v8F8I}=ar2j`UrTMqc=x? z#a0p52zXxBIHI?J#vIKhTSr_e;CXSAh${p<&Cyrq7d4HzOd$W0;_m|f7c`5wL?CaD zf6r|qE*9`VciV`I1pLj>o1;HxyNC+}JiBkN-y;EyIhwPYN1Q9*dBzSA=LmS3qc=x? zT8oJ80-mSt7;%<>#vD!8og&T<@I1L?#AyPa=IG7QpR{wtsREvzcZujKpfN{t!mbe~ z3wR#iO8+k4X^y@+KW?{(&I0*`ii-sNkKH}u1cAIc{_XeB{~-bYqxXzBPQc$By*c_L z_lh`H!1M6EBiajS%+VaSPsGszo`>ukaioB!IeK&S2kjSexPa#Yts@Q-(3qoX*G3)! zo^9Jk93-{4R5b)f$T|_$pjX9dV4~S?h;JMd<5v>J0&CyrqdmI$8uRwm9 z;&cK3-42e}TOe?Pp8%b^i_2>6?$H%H&{u!!9RJa;@iVpjo;Ihq}gh}cEI zv-yz`Ed@Ny(VL^+?x=_z1@zk-9kGMJ-&J$QGUr%x^bbn=Xhm<{P5GwBL^K!hHzz+{ zxkm(!-MW3mb^>FWGf#8IGDrV_v=3GE=6E(fHewrrvCPSjRqjEdjd-ID5lsa=&CxeJ zE@Eo||IIr_G!~eHIr{2+v*RNg3FJpBjuG&0&`Fzxp>xq$!1C+agxz~3Cb zIr_St_4y^>S?45uW(jD_(QMEqVq*c%^-hl1NWjw^y*c`IPl>1_;JHp$eNG8z%+ajX zEn+fN{Z}c*Iq7eXk2(6k^zZ))c>d8N;vWHxIhxl@_)B2U=IG7Q|J*a;4*|~~&)4UafW{on4;MuID&YCug%Ljsc$%X(NB`|b5kCre zetmJo4+0ul=FOT?A z!2gpgB0d-JH%D)de#w;)O9ebXx+>yR0gXAD4|_*^BH;PK)e%bsJk8OYqkr$3h>rw3 z7hW6jp@7C5&4NA=9|(B9bzQ`J0-omR&C$PkeZ)cm&-ph*ED+F`qj{}w#9IQM^KOiI zQ^3<4eRclIO%d}2@(1E?)e0{*l5N4z57Z;sv^{mcOoFAI3i z7#Q)AfW{on^g$7`1U#P`95GYC(;U4y`e%kj%n{eMI*`0-iTK8ga9L zr#X6aeuuA{6mgTlvF7CCv53_Ke6CgOE08y54(528qyJahs>f4r-c9+dmAgS;EOYXI zD_2g=v3e_BCoq;d^EYQKbH-XFZ9I{Bb3Ct9?plGd%*p?y+`mE_@yn+~TrJ>fj{edo zb&n?C-|H#emkG?l9DQ|u@zW8P3*>)R{6oP1!l@CL3gpf4KYyC$CE$PFGrBJm@HaqABadRV16v&(7f9xv}odo=knHSMfz~3CbIr^hs)%}`)=aH}JzDz)4j^^;! zBaRX9Jam468Jl8&RFIgYmR=f zw6|CE=G~NE`^Sj&1^ms)4^-|}fn(SFN%vL)W0^BgbH*}9-(T8WDtdD~SN~b}WddWF zlfPNH!9pAHTE9fBE#PU6ezjjC))ers`YmF0fjO9?ug;6#b-yN%zfSQc0sr_zpPK@C zbNv5RuIkV9|68&6EB(#Uo1v`Iq9q0vdBPf2@l5TVT$={Vln`oXydjqyOa} z-LDDE^QV9HIVGSmNAu%<5x)s|eji2rBH(F`-W>gkqKKaaJijT6_)$P(j^^vCBEA>! zTwbGy6#|~-=&SQDRx9Egf&A$;i|8)kzfAFKfxJ2XOKTOeT)_X+)rx<;1pH@jQp7v~e{=Na=x5a{Vy=Mai}j0`BcL%y^Fo6n zW(#;eziAP(1U${ro1=ejvm#y;@O)im(di+DmHzkQP;b`tP^Sn+XzygB|8 zn-(!iz<)xsA|4U&H%D)d{()_Zcv!%5+_ptb6wsKXxqrJNCJ1=mw|x;02zZ*KH%EU@ z^CHFxc;3B35%&vd%=w$VX^SGZ6uOCzQoK*#Sab6AcPwHHfpJGF-XoAVXAb80o8vQl zry@oR%wbr|B1Q>l%+cJja}gs2{BPf-h~WaB=IE>QTX!vDm_WXEt0FcM@E@Xhhd|yO z|G~Qzal3&3z}<_uRlwgIy*c{+dlWH5z_Z_;MGO|un4`IIuObEtc=p}9i2eee=IG7Q zU%yWg{RBMw>|4Z*0vdBP*X&nBUjfgnTNiP?fTuZnbM#lWDWZ>n=M`;>xJE!@j^?uc zi?~|A^U`)jTqWRXj=nnYbwCkU2;_fJ{8PaHq63S#OdxNL{{;sXajAfR&x7^5Bj9h2 z-W>gThZJ##N6wyQASab4UDEEzk z&*?|%vqm6q&K%6~G)KQo+OH~l^KQzYdQ=f-35;b<{xjv43mn_^=pxP(7|Wdbn=_U< z`cI_&qM|p)^OR$XI9*^YbMhZ6w@hdw-lcsJrwVwQqwjod5nToRPv}s@DFSmaM_-*E ze_Rn=1oH1IE*9|b*s+Mt0(o=%I~-rc2?GA@I~8%ffWJ9g|@&na4dgsx% z?N-FW0-mi;E#g1{jX9eAPAj6FfagA^7tvP0(;R(uzSkK=v=+!etN5aT{~l)+v7bQR z9RJhZ5$gzO%+b`mp@_8vJZtnVVod>0bM)1D z)s020E|9-ov7dl{aZ?dB1@h+j|EFAye(C>@VtI4=o1-^Jze@jJ^iR)~ivI~{%+dTg zpoo72=KTA>B322^*&Mw&`d@IFnvA>_TU|7CaT^G?A3v*AU2Dd2C8 z-W>fWBZ~N3z;nq+eI5yD%+V~qtBB78JQs~B;u8T+bM)ruKNwxa5&_Tm?$&3JfW{on z!h3Z8CE)qay+wQ=;AxKD9R1t(74e>c=bK}SSSX+|M>GF^-G2#qzCN~yw*@@S(O2iM zjw|9#f&3v46mg`0|0{~~1@h+jzdT;|UjqJfCKU0ifWJ97Gl#(;U4y z`llW*;#mRDDU*wsCZI7#Gx>=ko)++YY>Mu=1U${rSLc(S)V-KMzWG!73=;5vL~*h} z-W>mjo-X1s0sjZ5>Yhu$-yFR;`tj3rFDBsmz%xZWB%m=zGxpgc9u)8#^IQ?*1w75s zo1?$?dEJW%c-}KzpFsi|b2Ou0C}NC&=Up?3xL3f_9KAXE5ijaKOTcsZOx;5XXw17coM>(;R(ue%njBw-U&&H%FgA0{*us4im_m<3Hr(B8Ce151L!VZ36!0 z=*`g&c%_J21Uzq^r+X*?jX8f0`@LGkAOXEO{x`l>!~g+*bB;Aff5YoV+$^BKZoWQ` z1jaH)Z;mG3(C3uEv3(S86v$umW)U|CjAhQT=4k%Wzn5?2-}&B(*9rKTb1titi??$Q zS1R@q@G(b!`2yXS33y)iP7%EY#x+M@onNxBh${v1zbgJEaE=$hTg2r8d2{?Pd{3WW z0{$1gug@s~e{=Na=zD&k&m#fPb3ZKNLII6AnsXNEzD&Tg`$xJ40-omR&C#E=xQKHF zJkMBC#5n>Qb2O)Ytottk&u*XS9!kK|9KAXEuAdfhhJfeEpA~VMfW{onNlW#)D&TqI zGTrY8c$%ZH&QJKfh?52KA1E#n@IU?wGN3&H~#x??;jjGCMD&T33zB+GMql~Qu^7kr^6Y$@BwKBF6$eZK8Y0WYk z3HUdtRYpSre{=Na=nbyTRIJY%Fl>dh3+2k-)L$%)y*v&C%Z??Hv`pIr(+hEu)Umtr}-6=g|z-zYncw z%*n4^yNnG4=3vhJ&6$HannBXuCNS1o>y@#dz*y$w2Pk)oz`3lkei`cu_?V-wwLuwc z3(R4)4a-+>A6ZV>ZPYSn!l9$SHSa+`epnhFlTc-&C&nXpo~=l^Za$wGX4_Kn4|f5voih= z@ceP}GJX^AG)Hfa{`)P;_*KC3yM|@_ETAz*^X-;p{3zi0b)z!A7w|MkU!5=Cs*LXh z@@F;#kG3u2QvpwN^ycV4+^&p|1w7y1zKkUT8gn%7H80~M0nddyl<}c}r#X6a^b1;) z@xFlPTRWEVo`A+2&6_)wu~5Kse#s*KkJ{LRsuqkn0)GUf?*&f2|)bpGxjXwB>_)!^ycWN z?^VVu0ng|5F5^W3jX9cU_9Fn_GA0Um-hXHr4+?miqc=xC=CCrx3;Zp;_i%ld3HY0% zH%GJi5&Dc1x{2Sdc)x&;Ir&YGEMrT7IgC=gPvBT{=3|b(Ihy)MmC;bZXQbl20{-UY z>m9AnN1=`Q2*tYve9Y0`c}y9j1m$s zo8y1War*2N@E_c{iCL0-l$jTE^7^p62MQ^Gi=F<0^stZ;C4g{Ck~V#+3qjbNnwlqm0W1{4YGSj7tUl z&C#2qKmRQKjtF?3cXk;U324mG^yps3g#w=EoKwd60-omR&G|k2TL1pN06)7&8RrT3 znB#Nixn=Ya7}p#hb2MM*-@g^`sm@P7uZ(j9Jk8Oc*0YSW1@z|3(;R2(UeTL( zQ@-2zWt=JCZ%+PG<-QP@^C=gUak_w~Ir=UamT{VZf9H$ze^Fo#=IE>Q6E7~~6oLGQ ziXRL3cj{F}7lFJv{v9tVqqBg2hfB*iQNZ6Ey*c`0FDs*yfafunm(fu`V~*yiE6V5~ z;CaNAWgIKuX^!3;{oz-Yag2cHp}qAvD4;P%bMV#j1L6l>Q^w%}p62My(YL#{j6(%H z_wQ52!2%j{G;OXc<3It={jM*goq(q~`s#e28_L*UAU|DkmVp1>eH8`r=J@YP33dkc8(dUF|j3TVvH?A*VM-32^%8c;?n0Z()E=IC1tEMr#z z&*p>lIVhkpN3;FlGIkR1+;&JAEd)Hx(VL@hc1sz}1w5PFs(U&CjX9dFZ!2S40ne>& zFQb`&r#brSe9NI_G!e+(r}%(?{}y-X{!Sooj{oMv^w}rizv-R&j1%xTM{kb4{_rxk z5b)e&gg&zbH0EgPj@12~fagYcl~G^7(;U4y`VB{wv5A1^`lHLJE1)q)Q~Pe+#|e0@ zdruh~3V52MH%Gtry=AN~;JM~~Wz-hXn4?*JjP9ERJZs&rdnEx+bM)2uYGcb-Qy|}0 zvA=+S)wnWN7s#9AUp%1uCISEd6jvLc{^sb-(f_M|ubPmae=8Obrl&cYmCF4m;Q8l7 z-75*q*&I)E^nW~5#@_;edw+XapHl*JHb-xcrq?57Tp@H5|3&dn0UvYn7d=|WWdd{f zN%0SXW6hb5IsWEoE|{dxJ^`N}6@L@(Hz$AoW6B9_#J^YkMZm`#{ffuS_(@<6-%Kv! z2Z3?T(O2hRJ)zG&f&AH1^w}rizg%&JK;9hxFP<#p8v*}iPnGeNfWJ9MNKp9y%Hqc=yt=vm#P33z_^oIZmDH0EgDf4+>x0-onPZ_m)Zn1IF{&08;)@vea98#BvzN5In@eRcl&tTNsf$R9Ra zpFsltuPVMJkT=JF-b-b?A>coEP8qKY_?x3QM?dG~GF}z%oIO|fVged-G&5h(eVKsg zi}T8uBj9O{-W>f4ua+@e!1MXn%9tsjF-P<4>$)!!@O)-|87~NUnxi*IKlP0=o)_?Z z>di8q70{TYnevwI%LF{1c)N_L0-omRtMkVfl<|~6zQsFb>>}VlNpXrm-W>l&7V5rC z!2h9lbuT91Z;sv^{lxdmm?Ypi;r%im5zv^UdEkRG9un{z`=Rc|1U${ro1?#fQ5h2i zJn#ERpFsi|b2RrXE@P~K=jbK6=MwNVM{kaP)W^E#67U@PNg4MDXw1t2%NQi!X^!3;{f*z~9!fyp_gj4i3HY0%H%C*oLZ3|n z$6l}4PaxmtyE1MR_?v9bxaRnnqyJCZ8sDeh9M5Z%>nkva-aqI*OW;^@G*|stMjrv6 zD}E~D8iBFQ(O2h}{ai+Gf&A}^e+&3u@{8`d1oGzi_xe?zSpxnS{ie?*0e^G!=IAf@ zy^Ko)JbV73Ya^gBM|0kvy5|z`?D1C_7YKNoqc=z2eWk9Afah7O^!Xy7F-LR8-@3OF z@I3vWGP(gMgzy-W>nE z>QqH*0slQVs)~ID{LRsuqu;G=RqP|+*=pme*h@fTj%Jrls$vfT&zAM7VmAR#bM)ru zcdTC(tpq$f6!0`hZ;pPO&8wn?fM>HUs-n4o#vDzP zhE=hhfM??^t701gPjmFud80;E(NrKmMsb3Gf5WY+qKQD>9RDpES4Cq1|IN0pibewd z=IG7QH)v874Fx>wHLZ#*1T^MoHfdHBn+bT<-KHuU2zZ*KH%DJ*+p4H1@HcjY?W$rE z0e^G!=4fuyzYiC>iLbYPRn!&mF(-eka>E4XP`i0m)Dbw=ocWmJZ;ob&v_l1a*4d#d zHW2VPCqGEJ+k`gaYqh9~^#wHMAHOd#B>)3U9iberE)HrYgQ5pf|_Ud{j05U7_y`wY5K8SRhWHs~v@D;`P?o zUO(Ypar#_M68eeL=c>7Ip*Vf69uc~T)8}eC;Sh29TspZ-p7Ryh5g<_nzH2a1Qc%CX*4JZ!fdi=Ixe3V71H=@kJ^@1~ap=1E_s z*#i0bif#AKJbjsFRyci`W(eqCRor*q9P1Uuz4yzp=*9GWg|};?-(P{B-E76(+9q$S z__V;!Zl>a{`)7WJ;x6s-T%>sG)0^KBV>}`rQPtLJ!QLJ%Fjzuq^8w5OSou)nj z0>|E@xJuwydiY!^!0F+0xd6XG@ehID)$7hwuN#4%FMWG15%8fu4}E#i6EEzZoZdS< zdnCVH@jHQ^HNAJvJvTYMcg{I4`6Y^9SNO#}Bfb*wr{B(5=O?GH&S@7W@2R-7!oO4O zc2S-qy>z->oSJhKKM|N4y>w3Qm7HEWCtZ^KEX9um&hd;()pJJR9O<9a>9X{pPY(TY z@F5;|MUF)eoMWy^%}I)H3ur!4Ji2%0>49_P)tT?4IA36_G|gM z+Vg%x9($zXECJ8?if#HPr(aF$82IdD^9NPJ%^~jionl^-ZDGflAK;K+uoL(UNH|< zIDKHYxjoO3J}^y(rlzIhc!9am2WIO#lG6uft6|A^P`qE@9Jjwy{Za(Zk=`#2ho=uc zUg+(D4{_6xITrm}>WxaxR*EA8H1u!Tcy#9J-?Gu&nQy3ghrn2y-=jV!0%Os$WrKUu z^UnL#|7vU=yOH7m0na-W*BFSy^ie4vOg(*6 zVq%U(kCeX!u5+!2_5W93EPAA@63EjdZvuY@=pXXE zz_IiXId4k-eCZkTU4_##c`AK=RXqFY9E(07%LRPs2l9mgryt1Y0%OtZ z<5PkBw~D7cmw9@9d|cu5`dA{MU#@u4^c?F8#S>r1vFPvdVTE^lG4wnz^PegnH#7Mu ziVFqK_hZFlXJvkg;xV)HT6{V4PFyBJ^L^t%`*pnptpt0g(sql#O8oMX}B;=T%R_NjUq z3H+{3P~7yh{4$TF zXT|LT^QSk(tpc3h6t@U)`c4cK;CCvn`E8yHeJA=?IDIE>7C6V-6>EK$W8JE_+V?pY zy(an!_|O;PIss0fhie6Rf5m?V{%_L5;ctQKK;MR|1UP*gt`OjT75@^@U;mpviv_L^ zy&5hR@T4aLy%^9FFZwg*Nxy~jSEl9)#qR|)^jkP@Rp#lp(BtpSU#j?xz*xQh(Py#1 zSoByp```4WH$t~k^`px7Q2bQDlimoYR3)c3LYErJ&sJP4;Cbe1+QTB?Nk4=WYo-r< z59oJ*53%Fw$?0iu?3&5DC@v8AS<}yQLQ69Uq;sgOt`T#W9Dmi@s8aGbfLUEjcXY;MKUtYkIz5iP_ zNgww3v$r1~;%3c~vwy$-w#geSjuiMAv44M)?UJ*9zwY+Qw^STf;afD+F>0$o~4ZTc)P2;y{79vA=%Jos+Y_e)V0FZ>ZQ$;2hWA zwTPPp&XGO!tF=lW_Rh0s9v@<{dyd7v_-xRwake=*Y z|4P7z{prgE^z2XnLSQWRo_{8wS)thV(A2Q^{1bsZd(S@>IQA>WE{Eq>%N08xkz=vP ze35`B`?B8=IF^0c?c3+im%Z3;S2%mI-xBzJSfqGVhxGYC@rdJcEcRc&F5tsH>sJLh z`>bCP7>hmBa|H5lDYiQ?^X#FXUE%DZo++SzU9t5^Io7L+`*q2&*f;$`g|k2US%LGN zqqs-ceM`!){0M6ID4X}2%O^!iY-siW1m;t>5M#XogWe4>}8%Pz^5oSJ15VDz04CToW0Bs2%O{NijB|Bu_h@tIxoj!|ML9; zKI~JzM}V^*d9(nZpxEHT{P{khSpTA&Kl_nKRyg~ShYOt77{$81a;*Cl>s*p!u?Kmm zfG2y6Zx`U~HNI6~p6nwYB#Qk z&K}|G1%7se6pKE|*%#bL;Ab~L@xMyG|8?3+D{wCC3+^qzYu=!~5CZ&0#gzib-q2V3 zX9fJ(3w)Wt{Mqw+i2!HM@5TL+v!C~Z{>iUW{6XMc*w5Q@Kyvo;o;xu4Wr`~V#=2yX z_N5Ap#U9@7gVTq7xM$pwoPD*Y-DgPq;HV`(ckCp7Ug{Ylo4UKUwh|f%9UoYx}#BFIGHyRPxS> zZwicc!f5RY6&Q>Ctw-FQoPDf^+?%|E;wu%--qnNd%VXOszASL;(PQ*~U*H_syV~yl zwu(;+oFjWq zTRoJVJ*T@ooP1x!DFS2d^N99l3XH`*(;Xj8ANG?re=IrsMz?!Bc`L<-1b%kAOx9jY zf%9VDXwxT>vv0J?l;k@qJ|HmG4o_--rNCJ16>aoXda@_9;nT_46S~FJoG1G|8$6Tw zCW?0noEQ5&>ph#C{hk{?m%NeUaDlNJKCjPcfw9=*S!a53_HwQ_BY6YGTPmFWo3&re zW9umn5jb|^nfkvkaE|QXTx(Wx_HV8+J9!<&n+3+*;3a)V3mnUy&6;y^{_M@H@p5wZ zW|ni4v+wdhf&Y(d%+r2DfpcWvZ^U-_qi5Bnv5 z72xcP{8@mrFY>~-@@L2X#|z%hy;1CW{6XMn%AUvX1lB?RR6O^c+*kFx;yDZT|4MoG zIesmmXFntR7||2I6qqM_6_*N(`<-I94|AUERs2jK&tAn(1m^#>;>jPS=U0j+EzWaf zf8s|18uk?~6d3mt#bZCqaoJb6Kp@Y)!nXzH^O54w%X0o7DjxZH&Y!)6^9A(mA7rl} zdg7}B^JhQc%L4O!Tk(Lea}MkWd`TeBe!y7*bDOW&_S^J)O|kWgoIiU2X9#H6yEjc> z+*yjd{gmUfckgL|JbU+^6qwHp#hri2`A=7D`D@Of{d$uH^z6%HKOTDGqXP41&)q`; z^L$cqo4;}n?74eTAkUt=@d9(3thn{6^n6UQ@!vUr_SuaU(6B#lw7|II6&n<}=Fa}O zy9Dy=j~gK{pRtM?SLNFJ7{!fhl>htvVNcv00($novF8mv@iu|^v#)Kiz&uANuCs>f zO~u*QHb@}PUbX=O`8yQXSSvk;D%M&%*Z0}8c9VdHeO}iJjLSZ+e+BaF1z7u-g~T5@cc{hyi?Qj z55*p*r6)D^-wOCpOaHZio?80l0%K7pzf3^$z2a$Sr-nNDr2={CdCz~@vrb>J@v=-*J>|H>Teb>dYy7Pa3mRyZ}@ z(*@3VuHxR;B&V+XIf0+o9CFuY{w2lT`{cP$*FCkusq219;2d96-1YiA_65bAZ^&b* z<$gk7{?u$gF2JeTo+QAj$9`CVKc%?s&3P`=V^6Gb>aiyXoZ}OUO$Ovxk1K9HFvp?> zdz^p|wbu6uaB8aW5#SRQH@_u+z7rHTy*1}gP4%b>r>1(Ozwd+$Lvt+Z zsP7c;q+a?C0ZzU2?E>?p7Wx)}{7A)hM`WH_=)o0EE%ZPE{hf+y-j!qBp}6{}9Ef_0&`|Ub8c@M=;1;*5qT$*I?E|4i~Oif;>y z)%jV~wF-eah|}j?Puu!zQ8$Be|zAI$*I3> zH#7NBin9gAJz|#jN(dZF&25|6Ie%(v_j@ThwYB@qNlxADo^zA8Q+!6?9I2b#{gvd@ z&9<7Cyp7^h0%Ps>s_IJx#-diXB$#$*Fy9{zmfM6(14!*|mC8|KA19i`v(1 z-%3vHYqPhLw^W=UFxE~BR3j=d7WJ-;-$_sETDMx5oVwO6-_3bav%1;)nQx{zTHw5> zS#9t^a%xuVf0(?n;z)t9wpygxPJywgQ?2_^a_UhxT#|e<#oH^K8r1ba&SM)W-YRfx z{ZCZ4DR7R|psw?2a%xc5{w#T2#eo9j)>*1rO@U*nJ6(NQ&Y$|ynx7}9zO=>{$*CPJ zmM33Zv5&wxQak!zg;P8Fk3fF)uT?WCFjmcP^cgKM7WJYl1^zEn|M|NBr?&Gq0Zu(< zukZ6`_mAR5Kji$W;ryw>sp0%V;Cxpq_WUWw`cv_|pK~ngHdhFEQlI&a0H;3lD}i}Z zd-;Vx{s+a=|HwSGm&+=g+RM)b^eYs*{*_~Wqj>Vl9E*C(k1L$I%0&X_`-S2O|0JiD z@&kcuvP|*#e>4A?V#ojTT&Sgdx5BBVd`I9MmngO`vIc3f;?ZT*|NN<+d{bcl)JeV} zz^RjbU4T;q`HBF4NAV!lKyohBK+dgjY9Qwb91rP95N_0{kw;+D-FZr~@2Q;nV>R5;(`50*;TC?^=Z_feXYFtM%D7GiBpqCof)-l=5I=GPM+E` zYRkx*bF4Z3)SFQ^#<=E;Wlo-2GHS)po1-zulln1g!Wh?_am~q7Cq^9@dUG`9j74o2 z^aG~eoUzRDq5g`xD~>hC(;N-&ryF~0YRu7?PZOukin=I#%sJK^ zy*YEBR;t!%d9BQur#U{X)cbB5zI&r#YVHj79wtHA!46bLM7_ zp4ud8iSRUM4(5z&j^{^L>39G7^fbrQ9MAbTL{QU%r#U|6_?x4r=7*Xd^ycWz(VKHF z)cjDp!+gw{gE{r9)bmhtgTFb)no|>Njt@0C8;#95n4>r6I>V{6!JkM?3>tIBGRNN> zJvB4b%AhglSabB|=&7aQ-9qTi(VL?;U#rX-8|rD8C-pXP^yXY!YHX;X;o6$xZ;qb2 z8fs;@p5|Pi>YVx+-hYF}d{Q;eSk%lcnU(W5XIyhM)WcBkLf)MDm@_UlFx0p(H*?0V z&Z%`dbiV4Cl{e>DbNs1qp=JetbLLQ;Q^!J`3L0~cHOG_M73xu#k2&)(M?;MY?^z*l z&fLrym%5a3OY_{#8P^=mR?GDBR80wabLL~tSk#$NJHlAz%&j`7p5zVzy*YYw#^T*2 z)P*pXIb)gge~?-cYCF)FbF4XfbNs3Ipl*Ztm@@}+e5l``-hyMz8Ot1hb2QXoP-8*f zoZoqKJk1%48Vu?xn1eZUGe=K-1@#bknllG;#x=*28VPD0@HEHM98YQa5M*6~@JXDoB(W6pe7uV+0TjXB4fGZt&~th+NGbH*}9!&*FR?P$!=nB&j-J8SC9 z!JM(onGfsitfQkhM`O-dtgW*~&RFJ*WsZh*bJoStn4>YrleKczzZuJ%xtXJ3P5jRR zsWC@m&RF!dW^J3X%o)oZ4eQ;kXQMGkW6oHtakFmCe9Rfk91UyPtW}dYM{mwptY5PZ z%~XgEY_o0V`eOK#xh64x-;v_ISy%o&SyWY&i9H)mXPG^`i19*o8ujX7hnM$B3-W0^CSIU3e~S>Hutj>ep^So38a z7k_icHAlnRE^E4I%+Z)L7QJ&>mt`z-#xh6Gx)p0nHqr|c1=*`iaqhT$HbtC>hn=^lN z=FeIZYeif`bH*~qhxH@Yg!oyQb4{vq)`{o=gvOk|Mdpmf+7N3z_?t7XIU3e|Sl1zM zj^3PcS?ggfhq;+EZgtL@4t;Z&gE_~Vo2UM;BU^j=4e=3VeN#xIeK%(Vm*a562>xTZq+&KCRaU} zzuV^M%^8dSEv$bqmN{cp=d6ja=7HWEy*Zw&gRr*2+{~GeIU3eGSkEADj^3PcS>s@> zg0ajQ%Nz~s7pza9F-K$0SgcvF4#8OFjAf37wF%Z9$eW`#XRH_W@2oK}mN{dYqhZ~F zbpM2v`F^V~)n0u~--2 zSwH^fjBAdD=l}h`N{u-hbH<`y1kdpq%bc;y$@6TVXZPgIIo6!9c%IKQdi>3qn>iYu z+w)u=jX4@~Jb6~nGk3-{XIyhMJcs8wJ9%^T=8VO&cb=!?Z_c>pXn4lXGjufOXv`Ul z=juEw$KRZB&C&4uoaf_c%+Z+R&ogtLgEOu(U_w#XDptF^IRK$bH+7C z!?SLlWs^5YZ_Zde-{zS$W0^CSIU1g0j}Xw9qcP`mif7b3o8~i)$o}wc^;t&bIW_ZP zpF5m6m@_wXj^*EZmJKKJ{Q6n>nB!?qo_}W#IeK$6=6s&=-1{p%_wHGZGiT?~_<8ug zRsWBpcOK1DJtyC?ZPowoo6MQNIeK&E!1MDX^{kvc&&Cg_pU<88D|XiNaq>J5Z>{Ix zoD0vr_iCiQMw-Kwia!X;lwYaXbF0)`q4=GEKhMrv>e)9wJnL@0ZTg?9*l?%x@xEq! zysw$DPTE;}Aq9MR=3Q6MtnuL)^?G}z&(VsF^qiVJ&!tz_^JtFc`E%Je{o5)&E#N;> zao7D*(^~N<0e_xh|D|Wt`0&j6SM3Yt`tNdR#2M`)I@HK#Ydh~ zy!7Y2%&Tb+7e3y@g^%}eF&6JZep9@c8p?uWx#$kL%U(alJY|O)gX|tAG#p(4X{5AMSY2aHL7?mGvJOCRnNZ=8_+ zyf^0x)fscmU1N-oYmD*XJvG}*P9N?Ud+L6Vd2)Z(U3J3DlXt{i`Ap`yr|YVFIgaJt zt+VQS@ppYM{;uyu!@FA6nVJ6F|FwT9eYjscd~W*lo|NgTogJsKxSu*y_fgD&d!_wP z(i*>f=%c%LSJhET!#&Xsx)0*|bKg;4_Z#TBzu4%~@_%!tXK54NW02>bV(qKahkJ)w z*XaAM=IpvM=IpvM#%g!1YEA_FUsC+{`t;#`;jbIhpT3>E;_|(+Q^Zj|$vpEO8Cl8yRb8syXb8syX zbD%HZ!86jI@7jZBr4QeY`^`yzdg5KB`WvpfYj5yz?F~Nkpxf@v^x-@51q;%L@3cMM zO&|KdUHyLM`5t@fqMRq+SGz1pf7iX>@46TK>BCn0ll131Z-=Gn!*|r9zDR$1puMP? z60RrTCwKojHGFSu`CDq}$JOqS%=2Awo0T~Sz7sb7C+Fb$4d&qb4dy^!toH=``Ci#T z-wXNu|50<;O|-m{9UVnhCWF52>A2;ZkfKn;luZ_C5_Xc9z;j#I~IDr z3tgh`KybeE4AOTY^nABzp*4QS;yX;g-IDYD%{Q*Q*m)0*Q+p9Fd$a9-wI2YMsW zvw-Vh&UfRhAJ_K{fjO8n2Xpd&>)(%=oO3hh*y@~pqcP|D zu*bQZz`2-{AE?}?mApB5_CcQ_pf@Map6HJ&d2{ltgDn=&n=@zDYgmI}KIUA1_L=e? zXudO>bNyM1;oZ+%e{($9XUd*ZuD?0gfA~&%9==Deg_(0rc<=30fjO8n2Xpeg54Y9P zIX82Tt~C7vWJ27iE=(V*<;B$Gsll7fJ z;Q1B(wa)FD`9X@&E$cwmQat7(^!_w=DQ zZE27EOsB5wxbu?#s<@icWpt$4pnRl-$<}>d` z)$QDr$I_o_a=#px{#1|MoO=3GJ=#BgW+^^AAm_t(E_zb&vvyA^IN!O(={pv`4}8BG zTlucVcdlAP)1Ml%t4HLq^oF`^Wa`H&-f~xJ_|7$WRBEU(qc;@(V-)EP1;1DE=6mv3 z`a#`vZ{|lS_PsCXe3#-4W0H?hJZEg47yX?seK60R{!YCn=C}hCFMcRB^m@AR;q;_V z?Yu{GENalsos@ZM$@m_~b?!Ym;zxmNyGrr=C(_gXoyb#zMt>)+4>e}*J(;|hYS6ko zot``s+y9yL?vou1UB?VwsU#_goo=H>L~ncI_d(`TXL z!LOu0J(~8Omz-yDd%l{-Qp?tGetJ@~#&=z=r=QU=uAk8{pEe8f86A1|T;h6ClXmyQ zyqn=Q(5-CK#gdn@tT#PhwXC3#-duWkHs>Uq}J z|C7v5RNVa2^lYZM{%1K>Q^ipNp5qnkFU@1ORvami=NaH8%Q8<5+i&Wf#P!@l&jr`` zGW~frc-8XMk5XLktMsRD(&b+#r*Bexo5xbawtPi;Qme-Ie8#H!P0uO?{?^g6=o^9S zNzbBQ0-T;j%l}NDzZJjuEA`a4by}4^mn*Ii_!-f&s7;yQ&)sW?v6k0Rz0hh|8$f@d zH)`g0d-@B#UMuzV7kX`Veb!1(z1!S1^RtOswLRBP{-NTmb@G0J`m~9)^PYm$3 zdHMxCw|@Fl*Y?Z?>F>Tk%;&W_s!!V}=R+@`C+eo2UO$vlSnym;Thj zJzPJJrT@=_O;i88;scvyo}NF0x5)hNijN4K*Hp!Rx<_IT?(+km)L8XGTj#O#_8HbB z$ECN=9ZgeDZ=c(nrOyP#Ter#iaKANJ_gDO$aBoFFA2|10{dIrE{{`-?`t6W;?zdL# zl>XGVow{4*>8o?;?x`QB*lUl}aKClYo~fa>jlMegyRQzs@7_h6w@)5RFP$FyrlyZ# z_x*Ct*C?LVI{DR#N43rKqBl@{QTulE z5t*lkje9_@bJwGbcvs-sexlgnnDlgS9P;js!}a00`m@KT=LsED3#4c3oEOj7n{`T0 zp0UprIQDJD15Zd#_rM|V9ylD!bNEL(r_W(0sV=BX>UkzV;p9Buxr%$8lAZ@Dw&e}?A7tQYi z^Y@wpo?cVnSg$FNcP|?9)XpusA?IA9uX;xa{GDX2q3ccQ-$(IR0e^bVbh$Y>J!d}e zpT|-=_xiw`CpB{1ih|9
  • Cb)rX9CxgwTwfCCjUzD?K{$+b&aXR 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 PdDwLxw*T