From 6b750961097d19ba9dcb416adfc7cec4443b103a Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sat, 17 Jan 2026 11:40:17 -0800 Subject: [PATCH 1/6] Basicly done, needs alliance flipping --- src/main/java/frc/robot/Autos.java | 241 ++++++++------------ src/main/java/frc/robot/POI.java | 57 +++++ src/main/java/frc/robot/RobotContainer.java | 3 +- 3 files changed, 153 insertions(+), 148 deletions(-) create mode 100644 src/main/java/frc/robot/POI.java diff --git a/src/main/java/frc/robot/Autos.java b/src/main/java/frc/robot/Autos.java index d3f12ca..c0ecd11 100644 --- a/src/main/java/frc/robot/Autos.java +++ b/src/main/java/frc/robot/Autos.java @@ -1,72 +1,26 @@ package frc.robot; -import static edu.wpi.first.units.Units.Degrees; -import static edu.wpi.first.units.Units.Inches; -import static edu.wpi.first.units.Units.Meters; -import static edu.wpi.first.units.Units.Radians; -import static edu.wpi.first.wpilibj2.command.Commands.deadline; -import static edu.wpi.first.wpilibj2.command.Commands.defer; -import static edu.wpi.first.wpilibj2.command.Commands.either; -import static edu.wpi.first.wpilibj2.command.Commands.none; -import static edu.wpi.first.wpilibj2.command.Commands.parallel; -import static edu.wpi.first.wpilibj2.command.Commands.print; -import static edu.wpi.first.wpilibj2.command.Commands.race; -import static edu.wpi.first.wpilibj2.command.Commands.runOnce; -import static edu.wpi.first.wpilibj2.command.Commands.select; -import static edu.wpi.first.wpilibj2.command.Commands.sequence; -import static edu.wpi.first.wpilibj2.command.Commands.waitSeconds; -import static edu.wpi.first.wpilibj2.command.Commands.waitUntil; - -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.NoSuchElementException; -import java.util.Optional; -import java.util.Set; -import java.util.function.BooleanSupplier; -import java.util.function.DoubleSupplier; -import java.util.function.Function; -import java.util.function.Supplier; - -import com.ctre.phoenix6.swerve.SwerveModule.DriveRequestType; -import com.therekrab.autopilot.APConstraints; -import com.therekrab.autopilot.APTarget; -import com.ctre.phoenix6.swerve.SwerveRequest; - -import choreo.Choreo.TrajectoryLogger; import choreo.auto.AutoFactory; import choreo.auto.AutoRoutine; import choreo.auto.AutoTrajectory; -import choreo.auto.AutoChooser; -import choreo.trajectory.SwerveSample; -import edu.wpi.first.epilogue.Logged; -import edu.wpi.first.epilogue.Logged.Strategy; -import edu.wpi.first.math.MathUtil; -import edu.wpi.first.math.Pair; +import com.therekrab.autopilot.APConstraints; +import com.therekrab.autopilot.APTarget; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.math.kinematics.ChassisSpeeds; -import edu.wpi.first.math.util.Units; -import edu.wpi.first.wpilibj.Alert; -import edu.wpi.first.wpilibj.Alert.AlertType; -import edu.wpi.first.wpilibj.DriverStation; -import edu.wpi.first.wpilibj.RobotBase; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.Commands; -import edu.wpi.first.wpilibj2.command.InstantCommand; -import edu.wpi.first.wpilibj2.command.ScheduleCommand; -import edu.wpi.first.wpilibj2.command.button.Trigger; import frc.robot.generated.ChoreoVars; - import frc.robot.subsystems.CommandSwerveDrivetrain; -import frc.robot.subsystems.IntakePivotS; -import frc.robot.subsystems.IntakePivotS.intakeConstants; import frc.robot.util.AllianceFlipUtil; import frc.robot.util.AutoAlign; import frc.robot.util.ChoreoVariables; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Optional; +import java.util.function.BooleanSupplier; +import java.util.function.Supplier; + public class Autos { public class AutoConstants { @@ -74,92 +28,111 @@ public class AutoConstants { public static double DEFAULT_JERK = 12; } - private final AutoFactory m_factory; - private final RobotContainer m_container; - protected final CommandSwerveDrivetrain m_drivebase; - protected final IntakePivotS m_intakepiv; - private final double SCORE_WAIT = 0.875; - - public Autos(CommandSwerveDrivetrain drivebase, IntakePivotS intakepiv, - AutoFactory factory, RobotContainer container) { - m_drivebase = drivebase; // need - m_intakepiv = intakepiv; - m_factory = factory; - m_container = container; - - container.m_chooser.addRoutine(choreoAutoName, this::choreoAuto); - container.m_chooser.addRoutine(APName, this::APAuto); + private final AutoFactory factory; + private final CommandSwerveDrivetrain m_drivebase; + private final Map> autos = new LinkedHashMap<>(); + + public Autos(CommandSwerveDrivetrain drive, AutoFactory factory, RobotContainer container) { + this.factory = factory; + this.m_drivebase = drive; + + // Define all autos - now with full flexibility + autos.put("AP_Simple", () -> auto("AP_Simple", POI.testStart, + defaultAlignRequest(POI.testEnd))); + + autos.put("AP_Multi", () -> auto("AP_Multi", POI.testStart, + defaultAlignRequest(POI.testStart), + defaultAlignRequest(POI.testStart))); + autos.put("Hybrid_Flex", () -> auto("Hybrid_Flex", POI.testStart, + defaultAlignRequest(POI.testStart), + interruptibleChoreo("PrecisePath"), + defaultAlignRequest(POI.testEnd), + defaultAlignRequest(POI.testStart))); + + // Auto-register + autos.forEach((name, sup) -> container.m_chooser.addRoutine(name, sup)); } - Pose2d testStart = flipChorPose(ChoreoVars.Poses.testStart); - Pose2d testEndPose = flipChorPose(ChoreoVars.Poses.testEnd); + // ============= FLEXIBLE AUTO BUILDER ============= + + /** + * Build any auto with full command sequence flexibility + * + * @param name Auto name + * @param startPose Starting pose (auto-resets odometry) + * @param commands Any sequence of commands (AP, choreo, actions, etc.) + */ + private AutoRoutine auto(String name, Pose2d startPose, Command... commands) { + AutoRoutine r = factory.newRoutine(name); + // Start with odometry reset + Command sequence = factory.resetOdometry(() -> Optional.of(startPose)); - // Example auto - String choreoAutoName = "Choreo Auto"; + // Add all provided commands + for (Command cmd : commands) { + sequence = sequence.andThen(cmd); + } - public AutoRoutine choreoAuto() { - final AutoRoutine routine = m_factory.newRoutine(choreoAutoName); - final AutoTrajectory traj = routine.trajectory("OP"); - routine.active().onTrue( - traj.resetOdometry() - .andThen(traj.cmd()) - ); - return routine; + r.active().onTrue(sequence); + return r; } - // Example auto - String APName = "AP Auto"; - public AutoRoutine APAuto() { - final AutoRoutine routine = m_factory.newRoutine(APName); - final AutoTrajectory odometry = routine.trajectory("resetOdometryStart"); + // ============= REUSABLE COMMAND BUILDERS ============= - routine.active().onTrue( - odometry.resetOdometry() - .andThen(defaultAlignRequest(testEndPose))); - return routine; + /** + * Interruptible choreo path (can be cancelled by safety/operator) + */ + private Command interruptibleChoreo(String choreoName) { + // Create a temporary routine to get the trajectory + AutoTrajectory choreo = factory.newRoutine("temp").trajectory(choreoName); + + return Commands.race( + choreo.cmd(), + Commands.waitUntil(this::shouldInterrupt) + .andThen(Commands.print("Interrupted choreo: " + choreoName))); } - public enum RobotState { - // Todo: add all states as in button mapping doc - CORAL_INTAKING, - HANDOFF, - L1_PRE_SCORE, - L2_PRE_SCORE, - L3_PRE_SCORE, - L4_PRE_SCORE, - INTAKING_ALGAE_GROUND, - INTAKING_ALGAE_REEF, - ALGAE_STOW, - BARGE_PREP + /** + * Interruptible choreo with custom interruption condition + */ + private Command interruptibleChoreo(String choreoName, Supplier interruptCondition) { + AutoTrajectory choreo = factory.newRoutine("temp").trajectory(choreoName); + return Commands.race( + choreo.cmd(), + Commands.waitUntil((BooleanSupplier) interruptCondition) + .andThen(Commands.print("Custom interrupt: " + choreoName))); } - public RobotState currentState = RobotState.HANDOFF; + // ============= UTILITY COMMANDS ============= - // Functions below: - // Todo: add command that combines intakeCoral and stowCoral, update states - - public Command stowCoral() { - return Commands.sequence(setState(RobotState.HANDOFF), - m_intakepiv.setAngle(intakeConstants.ALGAE_INTAKE)); + private boolean shouldInterrupt() { + // Add your interruption logic. Within tolerance? + return false; } - // Commands below: - // TODO: add handoff sequence - - public Command prepL1() { - return Commands.sequence(setState(RobotState.L1_PRE_SCORE), - m_intakepiv.setAngle(intakeConstants.STOW) + // ============= CONVENIENCE WRAPPERS ============= - ); + /** + * Quick AP-only auto builder for simple point-to-point + */ + private AutoRoutine apOnlyAuto(String name, Pose2d start, Pose2d... targets) { + Command[] commands = new Command[targets.length]; + for (int i = 0; i < targets.length; i++) { + commands[i] = defaultAlignRequest(targets[i]); + } + return auto(name, start, commands); } - public Command setState(RobotState newState) { - return Commands.runOnce(() -> { - currentState = newState; - System.out.println("State changed to: " + newState); - }); + /** + * Hybrid auto builder for common pattern + */ + private AutoRoutine hybridPatternAuto(String name, Pose2d start, + String choreoName, Pose2d afterChoreo) { + return auto(name, start, + defaultAlignRequest(ChoreoVars.Poses.testStart), + interruptibleChoreo(choreoName), + defaultAlignRequest(afterChoreo)); } /** @@ -189,29 +162,5 @@ public Command defaultAlignRequest(Pose2d targetPose, Rotation2d entryAngle) { new APConstraints(AutoConstants.DEFAULT_ACCELERATION, AutoConstants.DEFAULT_JERK)); } - /** - * Creates a Pose2d from choreo variables - * Warning, this is not codegen - * - * @param poseName (from Choreo) - * @return a new {@code Pose2d} with the specified pose's coordinates and - * rotation - */ - public static Pose2d createChoreoVariablesPose(String poseName) { - Pose2d bluePose = new Pose2d( - ChoreoVariables.getPose(poseName).getX(), - ChoreoVariables.getPose(poseName).getY(), - ChoreoVariables.getPose(poseName).getRotation()); - return AllianceFlipUtil.flipPose(bluePose); - } - - /** - * - * @param poseName - * @return - */ - public static Pose2d flipChorPose(Pose2d poseName) { - return AllianceFlipUtil.flipPose(poseName); - } -} +} \ No newline at end of file diff --git a/src/main/java/frc/robot/POI.java b/src/main/java/frc/robot/POI.java new file mode 100644 index 0000000..9a87df6 --- /dev/null +++ b/src/main/java/frc/robot/POI.java @@ -0,0 +1,57 @@ +package frc.robot; + +import choreo.auto.AutoFactory; +import choreo.auto.AutoRoutine; +import choreo.auto.AutoTrajectory; +import com.therekrab.autopilot.APConstraints; +import com.therekrab.autopilot.APTarget; +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.Commands; +import frc.robot.generated.ChoreoVars; +import frc.robot.subsystems.CommandSwerveDrivetrain; +import frc.robot.util.AllianceFlipUtil; +import frc.robot.util.AutoAlign; +import frc.robot.util.ChoreoVariables; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Optional; +import java.util.function.BooleanSupplier; +import java.util.function.Supplier; + + +public class POI { + + public final static Pose2d testStart = flipChorPose(ChoreoVars.Poses.testStart); + public final static Pose2d testEnd = flipChorPose(ChoreoVars.Poses.testEnd); + + + /** + * DEPRICATED! Creates a Pose2d from choreo variables + * Warning, this is not codegen + * + * @param poseName (from Choreo) + * @return a new {@code Pose2d} with the specified pose's coordinates and + * rotation + */ + public static Pose2d createChoreoVariablesPose(String poseName) { + Pose2d bluePose = new Pose2d( + ChoreoVariables.getPose(poseName).getX(), + ChoreoVariables.getPose(poseName).getY(), + ChoreoVariables.getPose(poseName).getRotation()); + + return AllianceFlipUtil.flipPose(bluePose); + } + + /** + * Creates a Pose2d from Choreo and flips it based on alliance + * @param poseName + * @return + */ + public static Pose2d flipChorPose(Pose2d poseName) { + return AllianceFlipUtil.flipPose(poseName); + } + +} diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index d946513..f6d6660 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -76,7 +76,7 @@ public RobotContainer() { SmartDashboard.putData("Visualzer", VISUALIZER); autoFactory = m_drivetrain.createAutoFactory(); - autoRoutines = new Autos(m_drivetrain, yIntakePivot, autoFactory, this); + autoRoutines = new Autos(m_drivetrain, autoFactory, this); SmartDashboard.putData("Auto Mode", m_chooser); configureBindings(); @@ -120,7 +120,6 @@ private void configureBindings() { */ m_drivetrain.registerTelemetry(logger::telemeterize); // Assigns button b on a zbox controller to the command "goToAngle". - joystick.b().onTrue(autoRoutines.prepL1()); /* joystick.start().onTrue(Commands.runOnce(() -> { m_drivetrain.resetPose( m_drivetrain.getState().Pose.getTranslation(), From 768b73d336d42cd47fe4409ebabad258b326fe28 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sat, 17 Jan 2026 12:19:27 -0800 Subject: [PATCH 2/6] Structure done --- src/main/java/frc/robot/Autos.java | 8 ++++---- src/main/java/frc/robot/POI.java | 7 +++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/java/frc/robot/Autos.java b/src/main/java/frc/robot/Autos.java index c0ecd11..755d41f 100644 --- a/src/main/java/frc/robot/Autos.java +++ b/src/main/java/frc/robot/Autos.java @@ -38,10 +38,11 @@ public Autos(CommandSwerveDrivetrain drive, AutoFactory factory, RobotContainer // Define all autos - now with full flexibility autos.put("AP_Simple", () -> auto("AP_Simple", POI.testStart, - defaultAlignRequest(POI.testEnd))); + defaultAlignRequest(POI.testEnd), + defaultAlignRequest(POI.testStart))); autos.put("AP_Multi", () -> auto("AP_Multi", POI.testStart, - defaultAlignRequest(POI.testStart), + defaultAlignRequest(POI.testEnd), defaultAlignRequest(POI.testStart))); autos.put("Hybrid_Flex", () -> auto("Hybrid_Flex", POI.testStart, defaultAlignRequest(POI.testStart), @@ -66,7 +67,7 @@ private AutoRoutine auto(String name, Pose2d startPose, Command... commands) { AutoRoutine r = factory.newRoutine(name); // Start with odometry reset - Command sequence = factory.resetOdometry(() -> Optional.of(startPose)); + Command sequence = factory.resetOdometry((Optional.of(startPose)), true); // Add all provided commands for (Command cmd : commands) { @@ -162,5 +163,4 @@ public Command defaultAlignRequest(Pose2d targetPose, Rotation2d entryAngle) { new APConstraints(AutoConstants.DEFAULT_ACCELERATION, AutoConstants.DEFAULT_JERK)); } - } \ No newline at end of file diff --git a/src/main/java/frc/robot/POI.java b/src/main/java/frc/robot/POI.java index 9a87df6..2cd37dd 100644 --- a/src/main/java/frc/robot/POI.java +++ b/src/main/java/frc/robot/POI.java @@ -21,12 +21,10 @@ import java.util.function.BooleanSupplier; import java.util.function.Supplier; - public class POI { - - public final static Pose2d testStart = flipChorPose(ChoreoVars.Poses.testStart); - public final static Pose2d testEnd = flipChorPose(ChoreoVars.Poses.testEnd); + public final static Pose2d testStart = ChoreoVars.Poses.testStart; + public final static Pose2d testEnd = ChoreoVars.Poses.testEnd; /** * DEPRICATED! Creates a Pose2d from choreo variables @@ -47,6 +45,7 @@ public static Pose2d createChoreoVariablesPose(String poseName) { /** * Creates a Pose2d from Choreo and flips it based on alliance + * * @param poseName * @return */ From 234b043d9e4771def9850357aee12ed6b4e48951 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sat, 17 Jan 2026 12:20:41 -0800 Subject: [PATCH 3/6] Added docs, cleaned up --- src/main/java/frc/robot/Autos.java | 10 ---------- src/main/java/frc/robot/POI.java | 2 ++ 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/main/java/frc/robot/Autos.java b/src/main/java/frc/robot/Autos.java index 755d41f..376a119 100644 --- a/src/main/java/frc/robot/Autos.java +++ b/src/main/java/frc/robot/Autos.java @@ -114,16 +114,6 @@ private boolean shouldInterrupt() { // ============= CONVENIENCE WRAPPERS ============= - /** - * Quick AP-only auto builder for simple point-to-point - */ - private AutoRoutine apOnlyAuto(String name, Pose2d start, Pose2d... targets) { - Command[] commands = new Command[targets.length]; - for (int i = 0; i < targets.length; i++) { - commands[i] = defaultAlignRequest(targets[i]); - } - return auto(name, start, commands); - } /** * Hybrid auto builder for common pattern diff --git a/src/main/java/frc/robot/POI.java b/src/main/java/frc/robot/POI.java index 2cd37dd..fdcd98e 100644 --- a/src/main/java/frc/robot/POI.java +++ b/src/main/java/frc/robot/POI.java @@ -26,6 +26,8 @@ public class POI { public final static Pose2d testStart = ChoreoVars.Poses.testStart; public final static Pose2d testEnd = ChoreoVars.Poses.testEnd; + + // ============= CHOREO POSE UTILITIES ============= /** * DEPRICATED! Creates a Pose2d from choreo variables * Warning, this is not codegen From 20de92714c01aa0f6f11d5de2c17672f4da1f7d5 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sat, 17 Jan 2026 13:24:43 -0800 Subject: [PATCH 4/6] removed choreo stuff --- src/main/deploy/choreo/Flex.traj | 74 +++++++++++++++++++ src/main/java/frc/robot/Autos.java | 55 +------------- .../java/frc/robot/generated/ChoreoTraj.java | 10 ++- 3 files changed, 85 insertions(+), 54 deletions(-) create mode 100644 src/main/deploy/choreo/Flex.traj diff --git a/src/main/deploy/choreo/Flex.traj b/src/main/deploy/choreo/Flex.traj new file mode 100644 index 0000000..cf3ecea --- /dev/null +++ b/src/main/deploy/choreo/Flex.traj @@ -0,0 +1,74 @@ +{ + "name":"Flex", + "version":3, + "snapshot":{ + "waypoints":[ + {"x":6.101617813110352, "y":7.124074459075928, "heading":0.0, "intervals":16, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":6.392754077911377, "y":5.940118789672852, "heading":0.0, "intervals":40, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}], + "constraints":[ + {"from":"first", "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":"last", "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":"first", "to":"last", "data":{"type":"KeepInRectangle", "props":{"x":0.0, "y":0.0, "w":16.541, "h":8.0692}}, "enabled":false}], + "targetDt":0.05 + }, + "params":{ + "waypoints":[ + {"x":{"exp":"6.101617813110352 m", "val":6.101617813110352}, "y":{"exp":"7.124074459075928 m", "val":7.124074459075928}, "heading":{"exp":"0 deg", "val":0.0}, "intervals":16, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"6.392754077911377 m", "val":6.392754077911377}, "y":{"exp":"5.940118789672852 m", "val":5.940118789672852}, "heading":{"exp":"0 deg", "val":0.0}, "intervals":40, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}], + "constraints":[ + {"from":"first", "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":"last", "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":"first", "to":"last", "data":{"type":"KeepInRectangle", "props":{"x":{"exp":"0 m", "val":0.0}, "y":{"exp":"0 m", "val":0.0}, "w":{"exp":"16.541 m", "val":16.541}, "h":{"exp":"8.0692 m", "val":8.0692}}}, "enabled":false}], + "targetDt":{ + "exp":"0.05 s", + "val":0.05 + } + }, + "trajectory":{ + "config":{ + "frontLeft":{ + "x":0.2794, + "y":0.2794 + }, + "backLeft":{ + "x":-0.2794, + "y":0.2794 + }, + "mass":50.80234544, + "inertia":6.0, + "gearing":6.5, + "radius":0.0508, + "vmax":628.3185307179587, + "tmax":0.8, + "cof":1.5, + "bumper":{ + "front":0.4445, + "side":0.4445, + "back":0.4445 + }, + "differentialTrackWidth":0.5588 + }, + "sampleType":"Swerve", + "waypoints":[0.0,0.77852], + "samples":[ + {"t":0.0, "x":6.10162, "y":7.12407, "heading":0.0, "vx":0.0, "vy":0.0, "omega":0.0, "ax":1.92286, "ay":-7.81964, "alpha":0.0, "fx":[24.42145,24.42145,24.42145,24.42145], "fy":[-99.31403,-99.31403,-99.31403,-99.31403]}, + {"t":0.04866, "x":6.10389, "y":7.11482, "heading":0.0, "vx":0.09356, "vy":-0.38048, "omega":0.0, "ax":1.9226, "ay":-7.81859, "alpha":0.0, "fx":[24.41816,24.41816,24.41816,24.41816], "fy":[-99.30065,-99.30065,-99.30065,-99.30065]}, + {"t":0.09732, "x":6.11072, "y":7.08705, "heading":0.0, "vx":0.18711, "vy":-0.76092, "omega":0.0, "ax":1.92225, "ay":-7.81715, "alpha":0.0, "fx":[24.41367,24.41367,24.41367,24.41367], "fy":[-99.2824,-99.2824,-99.2824,-99.2824]}, + {"t":0.14597, "x":6.1221, "y":7.04077, "heading":0.0, "vx":0.28064, "vy":-1.14128, "omega":0.0, "ax":1.92174, "ay":-7.81508, "alpha":0.0, "fx":[24.40719,24.40719,24.40719,24.40719], "fy":[-99.25604,-99.25604,-99.25604,-99.25604]}, + {"t":0.19463, "x":6.13803, "y":6.97599, "heading":0.0, "vx":0.37415, "vy":-1.52154, "omega":0.0, "ax":1.92094, "ay":-7.81182, "alpha":0.0, "fx":[24.39701,24.39701,24.39701,24.39701], "fy":[-99.21463,-99.21463,-99.21463,-99.21463]}, + {"t":0.24329, "x":6.15851, "y":6.89271, "heading":0.0, "vx":0.46762, "vy":-1.90165, "omega":0.0, "ax":1.91949, "ay":-7.80595, "alpha":0.0, "fx":[24.37869,24.37869,24.37869,24.37869], "fy":[-99.14014,-99.14014,-99.14014,-99.14014]}, + {"t":0.29195, "x":6.18354, "y":6.79093, "heading":0.0, "vx":0.56102, "vy":-2.28147, "omega":0.0, "ax":1.91613, "ay":-7.79228, "alpha":0.0, "fx":[24.336,24.336,24.336,24.336], "fy":[-98.96654,-98.96654,-98.96654,-98.96654]}, + {"t":0.3406, "x":6.2131, "y":6.6707, "heading":0.0, "vx":0.65425, "vy":-2.66062, "omega":0.0, "ax":1.89941, "ay":-7.72429, "alpha":0.0, "fx":[24.12366,24.12366,24.12366,24.12366], "fy":[-98.10301,-98.10301,-98.10301,-98.10301]}, + {"t":0.38926, "x":6.24719, "y":6.5321, "heading":0.0, "vx":0.74667, "vy":-3.03647, "omega":0.0, "ax":-1.89941, "ay":7.72429, "alpha":0.0, "fx":[-24.12366,-24.12366,-24.12366,-24.12366], "fy":[98.10301,98.10301,98.10301,98.10301]}, + {"t":0.43792, "x":6.28127, "y":6.39349, "heading":0.0, "vx":0.65425, "vy":-2.66062, "omega":0.0, "ax":-1.91613, "ay":7.79228, "alpha":0.0, "fx":[-24.336,-24.336,-24.336,-24.336], "fy":[98.96654,98.96654,98.96654,98.96654]}, + {"t":0.48658, "x":6.31083, "y":6.27326, "heading":0.0, "vx":0.56102, "vy":-2.28147, "omega":0.0, "ax":-1.91949, "ay":7.80595, "alpha":0.0, "fx":[-24.37869,-24.37869,-24.37869,-24.37869], "fy":[99.14014,99.14014,99.14014,99.14014]}, + {"t":0.53523, "x":6.33586, "y":6.17149, "heading":0.0, "vx":0.46762, "vy":-1.90165, "omega":0.0, "ax":-1.92094, "ay":7.81182, "alpha":0.0, "fx":[-24.39701,-24.39701,-24.39701,-24.39701], "fy":[99.21463,99.21463,99.21463,99.21463]}, + {"t":0.58389, "x":6.35634, "y":6.08821, "heading":0.0, "vx":0.37415, "vy":-1.52154, "omega":0.0, "ax":-1.92174, "ay":7.81508, "alpha":0.0, "fx":[-24.40719,-24.40719,-24.40719,-24.40719], "fy":[99.25604,99.25604,99.25604,99.25604]}, + {"t":0.63255, "x":6.37227, "y":6.02342, "heading":0.0, "vx":0.28064, "vy":-1.14128, "omega":0.0, "ax":-1.92225, "ay":7.81715, "alpha":0.0, "fx":[-24.41367,-24.41367,-24.41367,-24.41367], "fy":[99.2824,99.2824,99.2824,99.2824]}, + {"t":0.68121, "x":6.38365, "y":5.97714, "heading":0.0, "vx":0.18711, "vy":-0.76092, "omega":0.0, "ax":-1.9226, "ay":7.81859, "alpha":0.0, "fx":[-24.41816,-24.41816,-24.41816,-24.41816], "fy":[99.30065,99.30065,99.30065,99.30065]}, + {"t":0.72986, "x":6.39048, "y":5.94938, "heading":0.0, "vx":0.09356, "vy":-0.38048, "omega":0.0, "ax":-1.92286, "ay":7.81964, "alpha":0.0, "fx":[-24.42145,-24.42145,-24.42145,-24.42145], "fy":[99.31403,99.31403,99.31403,99.31403]}, + {"t":0.77852, "x":6.39275, "y":5.94012, "heading":0.0, "vx":0.0, "vy":0.0, "omega":0.0, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.0,0.0,0.0,0.0], "fy":[0.0,0.0,0.0,0.0]}], + "splits":[0] + }, + "events":[] +} diff --git a/src/main/java/frc/robot/Autos.java b/src/main/java/frc/robot/Autos.java index 376a119..ee80417 100644 --- a/src/main/java/frc/robot/Autos.java +++ b/src/main/java/frc/robot/Autos.java @@ -44,11 +44,7 @@ public Autos(CommandSwerveDrivetrain drive, AutoFactory factory, RobotContainer autos.put("AP_Multi", () -> auto("AP_Multi", POI.testStart, defaultAlignRequest(POI.testEnd), defaultAlignRequest(POI.testStart))); - autos.put("Hybrid_Flex", () -> auto("Hybrid_Flex", POI.testStart, - defaultAlignRequest(POI.testStart), - interruptibleChoreo("PrecisePath"), - defaultAlignRequest(POI.testEnd), - defaultAlignRequest(POI.testStart))); + // Auto-register autos.forEach((name, sup) -> container.m_chooser.addRoutine(name, sup)); @@ -78,54 +74,7 @@ private AutoRoutine auto(String name, Pose2d startPose, Command... commands) { return r; } - // ============= REUSABLE COMMAND BUILDERS ============= - - /** - * Interruptible choreo path (can be cancelled by safety/operator) - */ - private Command interruptibleChoreo(String choreoName) { - // Create a temporary routine to get the trajectory - AutoTrajectory choreo = factory.newRoutine("temp").trajectory(choreoName); - - return Commands.race( - choreo.cmd(), - Commands.waitUntil(this::shouldInterrupt) - .andThen(Commands.print("Interrupted choreo: " + choreoName))); - } - - /** - * Interruptible choreo with custom interruption condition - */ - private Command interruptibleChoreo(String choreoName, Supplier interruptCondition) { - AutoTrajectory choreo = factory.newRoutine("temp").trajectory(choreoName); - - return Commands.race( - choreo.cmd(), - Commands.waitUntil((BooleanSupplier) interruptCondition) - .andThen(Commands.print("Custom interrupt: " + choreoName))); - } - - // ============= UTILITY COMMANDS ============= - - private boolean shouldInterrupt() { - // Add your interruption logic. Within tolerance? - return false; - } - - // ============= CONVENIENCE WRAPPERS ============= - - - /** - * Hybrid auto builder for common pattern - */ - private AutoRoutine hybridPatternAuto(String name, Pose2d start, - String choreoName, Pose2d afterChoreo) { - return auto(name, start, - defaultAlignRequest(ChoreoVars.Poses.testStart), - interruptibleChoreo(choreoName), - defaultAlignRequest(afterChoreo)); - } - + /** * Creates a new Command using the Autopilot AutoAlign to navigate to the * targetPose. diff --git a/src/main/java/frc/robot/generated/ChoreoTraj.java b/src/main/java/frc/robot/generated/ChoreoTraj.java index 841f393..f2a5dec 100644 --- a/src/main/java/frc/robot/generated/ChoreoTraj.java +++ b/src/main/java/frc/robot/generated/ChoreoTraj.java @@ -45,6 +45,13 @@ public record ChoreoTraj( new Pose2d(3.627, 7.495, Rotation2d.fromRadians(0)), new Pose2d(3.627, 7.495, Rotation2d.fromRadians(0)) ); + public static final ChoreoTraj Flex = new ChoreoTraj( + "Flex", + OptionalInt.empty(), + 0.77852, + new Pose2d(6.102, 7.124, Rotation2d.fromRadians(0)), + new Pose2d(6.393, 5.94, Rotation2d.fromRadians(0)) + ); /** * A map between trajectory names and their corresponding data. @@ -53,7 +60,8 @@ public record ChoreoTraj( public static final Map ALL_TRAJECTORIES = Map.ofEntries( Map.entry("Variables", Variables), Map.entry("OP", OP), - Map.entry("resetOdometryStart", resetOdometryStart) + Map.entry("resetOdometryStart", resetOdometryStart), + Map.entry("Flex", Flex) ); /** From c8fd7ce1828bc23584c997cacb8efcee3351927a Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sat, 17 Jan 2026 14:45:06 -0800 Subject: [PATCH 5/6] Added basic poses --- src/main/deploy/choreo/Poses.traj | 330 ++++++++++++++++++ src/main/deploy/choreo/Variables.traj | 85 ----- src/main/deploy/choreo/project.chor | 110 +++++- src/main/java/frc/robot/Autos.java | 18 +- src/main/java/frc/robot/POI.java | 58 --- .../java/frc/robot/generated/ChoreoTraj.java | 12 +- .../java/frc/robot/generated/ChoreoVars.java | 10 +- 7 files changed, 451 insertions(+), 172 deletions(-) create mode 100644 src/main/deploy/choreo/Poses.traj delete mode 100644 src/main/deploy/choreo/Variables.traj delete mode 100644 src/main/java/frc/robot/POI.java diff --git a/src/main/deploy/choreo/Poses.traj b/src/main/deploy/choreo/Poses.traj new file mode 100644 index 0000000..e1b50cf --- /dev/null +++ b/src/main/deploy/choreo/Poses.traj @@ -0,0 +1,330 @@ +{ + "name":"Poses", + "version":3, + "snapshot":{ + "waypoints":[ + {"x":0.4502151310443878, "y":5.971099376678467, "heading":0.0, "intervals":21, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":1.52, "y":4.25290060043335, "heading":0.0, "intervals":11, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":1.5210920572280884, "y":3.742798805236816, "heading":0.0, "intervals":11, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":1.5222448110580444, "y":3.237687349319458, "heading":0.0, "intervals":24, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":0.4722999036312103, "y":0.6521719098091125, "heading":0.0, "intervals":58, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":7.316027641296387, "y":6.945596218109131, "heading":-0.7437551936929324, "intervals":47, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":7.316027641296387, "y":1.1, "heading":0.75, "intervals":50, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":3.529832363128662, "y":7.372243881225586, "heading":0.0, "intervals":40, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":3.529832363128662, "y":0.7316309809684753, "heading":0.0, "intervals":40, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}], + "constraints":[ + {"from":"first", "to":"last", "data":{"type":"KeepInRectangle", "props":{"x":0.0, "y":0.0, "w":17.548, "h":8.052}}, "enabled":false}], + "targetDt":0.05 + }, + "params":{ + "waypoints":[ + {"x":{"exp":"0.4502151310443878 m", "val":0.4502151310443878}, "y":{"exp":"5.971099376678467 m", "val":5.971099376678467}, "heading":{"exp":"0 deg", "val":0.0}, "intervals":21, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"L_ClimbPose.x", "val":1.52}, "y":{"exp":"L_ClimbPose.y", "val":4.25290060043335}, "heading":{"exp":"L_ClimbPose.heading", "val":0.0}, "intervals":11, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"C_ClimbPose.x", "val":1.5210920572280884}, "y":{"exp":"C_ClimbPose.y", "val":3.742798805236816}, "heading":{"exp":"C_ClimbPose.heading", "val":0.0}, "intervals":11, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"R_Climb_Pose.x", "val":1.5222448110580444}, "y":{"exp":"R_Climb_Pose.y", "val":3.237687349319458}, "heading":{"exp":"R_Climb_Pose.heading", "val":0.0}, "intervals":24, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"StationIntake.x", "val":0.4722999036312103}, "y":{"exp":"StationIntake.y", "val":0.6521719098091125}, "heading":{"exp":"StationIntake.heading", "val":0.0}, "intervals":58, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"L_Sweep.x", "val":7.316027641296387}, "y":{"exp":"L_Sweep.y", "val":6.945596218109131}, "heading":{"exp":"L_Sweep.heading", "val":-0.7437551936929324}, "intervals":47, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"R_Sweep.x", "val":7.316027641296387}, "y":{"exp":"R_Sweep.y", "val":1.1}, "heading":{"exp":"R_Sweep.heading", "val":0.75}, "intervals":50, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"L_Start.x", "val":3.529832363128662}, "y":{"exp":"L_Start.y", "val":7.372243881225586}, "heading":{"exp":"L_Start.heading", "val":0.0}, "intervals":40, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"R_Start.x", "val":3.529832363128662}, "y":{"exp":"R_Start.y", "val":0.7316309809684753}, "heading":{"exp":"R_Start.heading", "val":0.0}, "intervals":40, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}], + "constraints":[ + {"from":"first", "to":"last", "data":{"type":"KeepInRectangle", "props":{"x":{"exp":"0 m", "val":0.0}, "y":{"exp":"0 m", "val":0.0}, "w":{"exp":"17.548 m", "val":17.548}, "h":{"exp":"8.052 m", "val":8.052}}}, "enabled":false}], + "targetDt":{ + "exp":"0.05 s", + "val":0.05 + } + }, + "trajectory":{ + "config":{ + "frontLeft":{ + "x":0.2794, + "y":0.2794 + }, + "backLeft":{ + "x":-0.2794, + "y":0.2794 + }, + "mass":50.80234544, + "inertia":6.0, + "gearing":6.5, + "radius":0.0508, + "vmax":628.3185307179587, + "tmax":0.8, + "cof":1.5, + "bumper":{ + "front":0.4445, + "side":0.4445, + "back":0.4445 + }, + "differentialTrackWidth":0.5588 + }, + "sampleType":"Swerve", + "waypoints":[0.0,0.47222,0.59178,0.69795,1.57262,3.93415,5.64962,7.62306,9.25883], + "samples":[ + {"t":0.0, "x":0.45022, "y":5.9711, "heading":0.0, "vx":3.93721, "vy":-2.9058, "omega":-0.00008, "ax":-4.27359, "ay":-5.95732, "alpha":-0.00089, "fx":[-54.2722,-54.27593,-54.28196,-54.27823], "fy":[-75.66508,-75.66158,-75.65785,-75.66135]}, + {"t":0.02249, "x":0.53767, "y":5.90425, "heading":0.0, "vx":3.84111, "vy":-3.03975, "omega":-0.0001, "ax":-5.68128, "ay":-5.36866, "alpha":-0.0086, "fx":[-72.11209,-72.15544,-72.19912,-72.1558], "fy":[-68.23111,-68.18252,-68.13917,-68.18778]}, + {"t":0.04497, "x":0.62261, "y":5.83454, "heading":0.0, "vx":3.71336, "vy":-3.16048, "omega":-0.00029, "ax":-6.72671, "ay":-4.18279, "alpha":-0.00474, "fx":[-85.41488,-85.43694,-85.45151,-85.42946], "fy":[-53.15311,-53.11677,-53.09472,-53.13105]}, + {"t":0.06746, "x":0.7044, "y":5.76242, "heading":-0.00001, "vx":3.5621, "vy":-3.25453, "omega":-0.0004, "ax":-7.19243, "ay":-3.42275, "alpha":-0.00166, "fx":[-91.34294,-91.3497,-91.35312,-91.34636], "fy":[-43.48154,-43.46714,-43.46038,-43.47478]}, + {"t":0.08995, "x":0.78269, "y":5.68837, "heading":-0.00002, "vx":3.40037, "vy":-3.3315, "omega":-0.00044, "ax":-7.41958, "ay":-2.96138, "alpha":0.00013, "fx":[-94.2334,-94.23294,-94.23274,-94.2332], "fy":[-37.61043,-37.61159,-37.61205,-37.61089]}, + {"t":0.11243, "x":0.85727, "y":5.61271, "heading":-0.00003, "vx":3.23353, "vy":-3.39809, "omega":-0.00044, "ax":-7.54805, "ay":-2.66, "alpha":0.00124, "fx":[-95.86747,-95.86334,-95.86179,-95.86592], "fy":[-33.77553,-33.78734,-33.79147,-33.77966]}, + {"t":0.13492, "x":0.92807, "y":5.53562, "heading":-0.00004, "vx":3.0638, "vy":-3.4579, "omega":-0.00041, "ax":-7.629, "ay":-2.44952, "alpha":0.002, "fx":[-96.89697,-96.8908,-96.88869,-96.89487], "fy":[-31.09764,-31.11699,-31.12316,-31.10381]}, + {"t":0.15741, "x":0.99504, "y":5.45725, "heading":-0.00005, "vx":2.89225, "vy":-3.51298, "omega":-0.00036, "ax":-7.68411, "ay":-2.29475, "alpha":0.00254, "fx":[-97.5976,-97.5902,-97.58786,-97.59526], "fy":[-29.12856,-29.15346,-29.16087,-29.13595]}, + {"t":0.17989, "x":1.05813, "y":5.37767, "heading":-0.00006, "vx":2.71946, "vy":-3.56458, "omega":-0.00031, "ax":-7.7238, "ay":-2.17634, "alpha":0.00294, "fx":[-98.10213,-98.09395,-98.09151,-98.09969], "fy":[-27.62211,-27.65126,-27.65944,-27.63028]}, + {"t":0.20238, "x":1.11733, "y":5.29697, "heading":-0.00006, "vx":2.54578, "vy":-3.61352, "omega":-0.00024, "ax":-7.75364, "ay":-2.08289, "alpha":0.00326, "fx":[-98.48131,-98.47262,-98.47014,-98.47884], "fy":[-26.43335,-26.46584,-26.47455,-26.44204]}, + {"t":0.22486, "x":1.17262, "y":5.21519, "heading":-0.00007, "vx":2.37143, "vy":-3.66036, "omega":-0.00017, "ax":-7.77682, "ay":-2.00731, "alpha":0.00351, "fx":[-98.77593,-98.76688,-98.76441,-98.77346], "fy":[-25.47184,-25.50703,-25.51609,-25.48089]}, + {"t":0.24735, "x":1.22397, "y":5.13237, "heading":-0.00007, "vx":2.19655, "vy":-3.7055, "omega":-0.00009, "ax":-7.79532, "ay":-1.94493, "alpha":0.00371, "fx":[-99.011,-99.0017,-98.99925,-99.00855], "fy":[-24.6784,-24.7158,-24.72511,-24.6877]}, + {"t":0.26984, "x":1.2714, "y":5.04855, "heading":-0.00007, "vx":2.02127, "vy":-3.74923, "omega":0.0, "ax":-7.8104, "ay":-1.8926, "alpha":0.00388, "fx":[-99.20265,-99.19317,-99.19074,-99.20023], "fy":[-24.01272,-24.05197,-24.06146,-24.0222]}, + {"t":0.29232, "x":1.31487, "y":4.96377, "heading":-0.00007, "vx":1.84564, "vy":-3.79179, "omega":0.00008, "ax":-7.82292, "ay":-1.84808, "alpha":0.00402, "fx":[-99.3617,-99.35209,-99.3497,-99.35932], "fy":[-23.44643,-23.48725,-23.49687,-23.45604]}, + {"t":0.31481, "x":1.3544, "y":4.87804, "heading":-0.00007, "vx":1.66973, "vy":-3.83335, "omega":0.00017, "ax":-7.83347, "ay":-1.80976, "alpha":0.00415, "fx":[-99.4957,-99.48599,-99.48363,-99.49335], "fy":[-22.95902,-23.00118,-23.01091,-22.96873]}, + {"t":0.3373, "x":1.38996, "y":4.79138, "heading":-0.00007, "vx":1.49358, "vy":-3.87404, "omega":0.00027, "ax":-7.84247, "ay":-1.77644, "alpha":0.00425, "fx":[-99.61003,-99.60024,-99.59791,-99.60771], "fy":[-22.53528,-22.57861,-22.58841,-22.54507]}, + {"t":0.35978, "x":1.42157, "y":4.70382, "heading":-0.00006, "vx":1.31723, "vy":-3.91399, "omega":0.00036, "ax":-7.85023, "ay":-1.74723, "alpha":0.00435, "fx":[-99.70864,-99.69879,-99.69649,-99.70635], "fy":[-22.16371,-22.20807,-22.21793,-22.17356]}, + {"t":0.38227, "x":1.4492, "y":4.61537, "heading":-0.00005, "vx":1.14071, "vy":-3.95328, "omega":0.00046, "ax":-7.85699, "ay":-1.72142, "alpha":0.00443, "fx":[-99.79448,-99.78459,-99.78232,-99.79222], "fy":[-21.83547,-21.88073,-21.89064,-21.84536]}, + {"t":0.40476, "x":1.47286, "y":4.52604, "heading":-0.00004, "vx":0.96403, "vy":-3.99198, "omega":0.00056, "ax":-7.86292, "ay":-1.69848, "alpha":0.0045, "fx":[-99.86981,-99.85989,-99.85764,-99.86758], "fy":[-21.54365,-21.58971,-21.59966,-21.55358]}, + {"t":0.42724, "x":1.49255, "y":4.43584, "heading":-0.00003, "vx":0.78722, "vy":-4.03018, "omega":0.00066, "ax":-7.86816, "ay":-1.67797, "alpha":0.00456, "fx":[-99.93638,-99.92643,-99.92421,-99.93418], "fy":[-21.28279,-21.32957,-21.33954,-21.29274]}, + {"t":0.44973, "x":1.50827, "y":4.34479, "heading":-0.00002, "vx":0.6103, "vy":-4.06791, "omega":0.00076, "ax":-7.87282, "ay":-1.65955, "alpha":0.00462, "fx":[-99.99556,-99.98558,-99.98339,-99.99338], "fy":[-21.04851,-21.09594,-21.10593,-21.05848]}, + {"t":0.47222, "x":1.52, "y":4.2529, "heading":0.0, "vx":0.43326, "vy":-4.10523, "omega":0.00087, "ax":-7.84849, "ay":-1.69885, "alpha":0.00247, "fx":[-99.68377,-99.67832,-99.67705,-99.68249], "fy":[-21.56111,-21.58635,-21.5918,-21.56655]}, + {"t":0.48308, "x":1.52425, "y":4.20818, "heading":0.00001, "vx":0.34795, "vy":-4.12369, "omega":0.00089, "ax":-7.81765, "ay":-1.81929, "alpha":0.0002, "fx":[-99.28901,-99.28854,-99.28842,-99.28889], "fy":[-23.10476,-23.1068,-23.10727,-23.10523]}, + {"t":0.49395, "x":1.52757, "y":4.16325, "heading":0.00002, "vx":0.26298, "vy":-4.14347, "omega":0.0009, "ax":-7.77519, "ay":-1.97372, "alpha":-0.00272, "fx":[-98.74505,-98.75195,-98.75384,-98.74694], "fy":[-25.08446,-25.05712,-25.05022,-25.07755]}, + {"t":0.50482, "x":1.52997, "y":4.11809, "heading":0.00003, "vx":0.17847, "vy":-4.16492, "omega":0.00087, "ax":-7.71372, "ay":-2.17857, "alpha":-0.00662, "fx":[-97.95678,-97.97519,-97.98076,-97.96237], "fy":[-27.71112,-27.64556,-27.62718,-27.6927]}, + {"t":0.51569, "x":1.53145, "y":4.07269, "heading":0.00004, "vx":0.09462, "vy":-4.1886, "omega":0.00079, "ax":-7.61857, "ay":-2.46254, "alpha":-0.01208, "fx":[-96.73503,-96.77255,-96.78547,-96.74804], "fy":[-31.35291,-31.23608,-31.19867,-31.31539]}, + {"t":0.52656, "x":1.53203, "y":4.02702, "heading":0.00005, "vx":0.01181, "vy":-4.21537, "omega":0.00066, "ax":-7.45687, "ay":-2.87989, "alpha":-0.02021, "fx":[-94.65592,-94.72781,-94.75716,-94.68553], "fy":[-36.70604,-36.51834,-36.44673,-36.63416]}, + {"t":0.53743, "x":1.53172, "y":3.98103, "heading":0.00005, "vx":-0.06924, "vy":-4.24667, "omega":0.00044, "ax":-7.14207, "ay":-3.5435, "alpha":-0.03343, "fx":[-90.60174,-90.74198,-90.81483,-90.67535], "fy":[-45.21744,-44.93147,-44.79186,-45.07737]}, + {"t":0.5483, "x":1.53054, "y":3.93466, "heading":0.00006, "vx":-0.14687, "vy":-4.28519, "omega":0.00008, "ax":-6.38919, "ay":-4.70654, "alpha":-0.0576, "fx":[-80.89263,-81.17994,-81.39927,-81.11395], "fy":[-60.11801,-59.71996,-59.43362,-59.8318]}, + {"t":0.55917, "x":1.52857, "y":3.88781, "heading":0.00006, "vx":-0.21632, "vy":-4.33634, "omega":-0.00055, "ax":-4.02595, "ay":-6.75837, "alpha":-0.10517, "fx":[-50.48562,-50.95749,-51.77936,-51.30517], "fy":[-86.22417,-85.91925,-85.44267,-85.75475]}, + {"t":0.57004, "x":1.52598, "y":3.84027, "heading":0.00005, "vx":-0.26008, "vy":-4.4098, "omega":-0.00169, "ax":2.21677, "ay":-7.50604, "alpha":-0.14574, "fx":[28.6508,29.05978,27.64961,27.25717], "fy":[-95.21488,-95.04646,-95.4528,-95.61032]}, + {"t":0.58091, "x":1.52328, "y":3.7919, "heading":0.00004, "vx":-0.23599, "vy":-4.49139, "omega":-0.00327, "ax":6.3467, "ay":-4.7059, "alpha":-0.11133, "fx":[80.54917,81.09516,80.66796,80.1147], "fy":[-59.87521,-59.1104,-59.66032,-60.42458]}, + {"t":0.59178, "x":1.52109, "y":3.7428, "heading":0.0, "vx":-0.167, "vy":-4.54254, "omega":-0.00448, "ax":6.99688, "ay":-3.67553, "alpha":-0.07168, "fx":[88.80044,89.10347,88.93034,88.62389], "fy":[-46.82602,-46.23204,-46.53588,-47.13163]}, + {"t":0.60143, "x":1.51981, "y":3.69878, "heading":-0.00004, "vx":-0.09947, "vy":-4.57802, "omega":-0.00517, "ax":6.86884, "ay":-3.84149, "alpha":-0.05614, "fx":[87.1919,87.43573,87.28583,87.03993], "fy":[-48.89251,-48.44111,-48.6855,-49.13778]}, + {"t":0.61108, "x":1.51917, "y":3.65442, "heading":-0.00009, "vx":-0.03317, "vy":-4.6151, "omega":-0.00572, "ax":6.66009, "ay":-4.0959, "alpha":-0.03207, "fx":[84.56446,84.70875,84.61002,84.46508], "fy":[-52.07069,-51.8255,-51.96999,-52.21536]}, + {"t":0.62074, "x":1.51916, "y":3.60968, "heading":-0.00015, "vx":0.03112, "vy":-4.65463, "omega":-0.00603, "ax":6.26835, "ay":-4.52517, "alpha":0.00987, "fx":[79.616,79.56967,79.60735,79.65362], "fy":[-57.46126,-57.52963,-57.48334,-57.41498]}, + {"t":0.63039, "x":1.51975, "y":3.56454, "heading":-0.00021, "vx":0.09162, "vy":-4.69831, "omega":-0.00593, "ax":5.33251, "ay":-5.34989, "alpha":0.09844, "fx":[67.69397,67.22819,67.75955,68.22242], "fy":[-67.91598,-68.44157,-67.97895,-67.45039]}, + {"t":0.64004, "x":1.52088, "y":3.51895, "heading":-0.00026, "vx":0.14309, "vy":-4.74994, "omega":-0.00498, "ax":1.99323, "ay":-6.85401, "alpha":0.33623, "fx":[24.176,23.45447,26.41644,27.21386], "fy":[-87.13529,-87.7241,-86.98621,-86.35442]}, + {"t":0.64969, "x":1.52236, "y":3.47278, "heading":-0.00031, "vx":0.16233, "vy":-4.8161, "omega":-0.00174, "ax":-5.47418, "ay":-4.56983, "alpha":0.49163, "fx":[-71.65609,-69.66515,-67.35211,-69.42775], "fy":[-55.51329,-58.53181,-60.55527,-57.55762]}, + {"t":0.65934, "x":1.52367, "y":3.42608, "heading":-0.00033, "vx":0.10949, "vy":-4.86021, "omega":0.00301, "ax":-7.36409, "ay":-1.64398, "alpha":0.3753, "fx":[-94.09928,-93.37429,-92.93098,-93.70843], "fy":[-18.72689,-22.2808,-23.09083,-19.41952]}, + {"t":0.669, "x":1.52438, "y":3.3791, "heading":-0.0003, "vx":0.03841, "vy":-4.87607, "omega":0.00663, "ax":-7.69248, "ay":-0.68198, "alpha":0.36539, "fx":[-97.94629,-97.64091,-97.44006,-97.76852], "fy":[-6.66937,-10.33621,-10.72096,-6.91972]}, + {"t":0.67865, "x":1.52439, "y":3.332, "heading":-0.00024, "vx":-0.03584, "vy":-4.88266, "omega":0.01016, "ax":-7.80282, "ay":-0.34068, "alpha":0.4237, "fx":[-99.26334,-99.08512,-98.92944,-99.12368], "fy":[-2.07965,-6.38708,-6.66819,-2.17225]}, + {"t":0.6883, "x":1.52368, "y":3.28486, "heading":-0.00014, "vx":-0.11115, "vy":-4.88595, "omega":0.01425, "ax":-7.85676, "ay":-0.25506, "alpha":0.5484, "fx":[-99.94694,-99.77534,-99.61376,-99.80573], "fy":[-0.36013,-5.93678,-6.27891,-0.38173]}, + {"t":0.69795, "x":1.52224, "y":3.23769, "heading":0.0, "vx":-0.18698, "vy":-4.88841, "omega":0.01954, "ax":-8.00142, "ay":0.31482, "alpha":-0.13523, "fx":[-101.64551,-101.5884,-101.60079,-101.65631], "fy":[3.30126,4.75183,4.68542,3.25507]}, + {"t":0.7344, "x":1.51012, "y":3.05974, "heading":0.00071, "vx":-0.47859, "vy":-4.87693, "omega":0.01461, "ax":-7.93822, "ay":0.96455, "alpha":-0.12031, "fx":[-100.88277,-100.72862,-100.7592,-100.90958], "fy":[11.69161,12.96236,12.8016,11.54608]}, + {"t":0.77084, "x":1.4874, "y":2.88264, "heading":0.00124, "vx":-0.7679, "vy":-4.84178, "omega":0.01023, "ax":-7.84697, "ay":1.46196, "alpha":-0.05511, "fx":[-99.70096,-99.5959,-99.62176,-99.72566], "fy":[18.33641,18.90437,18.79768,18.23268]}, + {"t":0.80729, "x":1.45421, "y":2.70716, "heading":0.00162, "vx":-1.05388, "vy":-4.7885, "omega":0.00822, "ax":-7.72497, "ay":1.92757, "alpha":-0.02937, "fx":[-98.13695,-98.0645,-98.08666,-98.1587], "fy":[24.37074,24.66449,24.59135,24.29836]}, + {"t":0.84373, "x":1.41067, "y":2.53392, "heading":0.00192, "vx":-1.33541, "vy":-4.71825, "omega":0.00715, "ax":-7.56929, "ay":2.37646, "alpha":-0.01494, "fx":[-96.14836,-96.10391,-96.12049,-96.16482], "fy":[30.13275,30.27673,30.23194,30.08814]}, + {"t":0.88018, "x":1.35697, "y":2.36354, "heading":0.00218, "vx":-1.61127, "vy":-4.63164, "omega":0.0066, "ax":-7.37074, "ay":2.82433, "alpha":0.06582, "fx":[-93.55108,-93.77603,-93.67564,-93.44804], "fy":[36.0586,35.45492,35.68137,36.28775]}, + {"t":0.91662, "x":1.29335, "y":2.19662, "heading":0.00242, "vx":-1.87989, "vy":-4.52871, "omega":0.009, "ax":-6.86255, "ay":3.72498, "alpha":1.61456, "fx":[-86.24892,-92.29693,-88.90573,-81.18194], "fy":[50.26411,37.55595,43.95557,57.46185]}, + {"t":0.95306, "x":1.22029, "y":2.03405, "heading":0.00275, "vx":-2.13, "vy":-4.39295, "omega":0.06785, "ax":-2.47307, "ay":6.65121, "alpha":8.3116, "fx":[-51.1308,-83.10405,6.25827,2.33865], "fy":[86.54023,54.41866,96.73969,100.19846]}, + {"t":0.98951, "x":1.14102, "y":1.87837, "heading":0.00522, "vx":-2.22013, "vy":-4.15055, "omega":0.37076, "ax":1.7746, "ay":7.72361, "alpha":1.64803, "fx":[13.02656,15.55183,33.25634,28.31891], "fy":[100.27395,99.67707,95.31444,97.11228]}, + {"t":1.02595, "x":1.06128, "y":1.73223, "heading":0.01873, "vx":-2.15545, "vy":-3.86907, "omega":0.43082, "ax":3.04177, "ay":7.39398, "alpha":-0.33174, "fx":[40.79326,39.47401,36.5015,37.76029], "fy":[92.99864,93.59338,94.78088,94.25837]}, + {"t":1.0624, "x":0.98475, "y":1.59613, "heading":0.03443, "vx":-2.0446, "vy":-3.5996, "omega":0.41873, "ax":3.55301, "ay":7.16717, "alpha":-1.1746, "fx":[52.82758,47.32485,37.66076,42.68823], "fy":[86.9971,90.17251,94.58667,92.35263]}, + {"t":1.09884, "x":0.91259, "y":1.46971, "heading":0.04969, "vx":-1.91511, "vy":-3.33839, "omega":0.37592, "ax":3.8224, "ay":7.0226, "alpha":-1.63063, "fx":[59.16047,51.02096,38.21903,45.78653], "fy":[82.98332,88.28635,94.50133,90.99358]}, + {"t":1.13529, "x":0.84534, "y":1.3527, "heading":0.06339, "vx":-1.7758, "vy":-3.08246, "omega":0.3165, "ax":3.9875, "ay":6.92474, "alpha":-1.91289, "fx":[62.98437,53.10946,38.53116,47.94952], "fy":[80.22747,87.13894,94.46078,89.96591]}, + {"t":1.17173, "x":0.78327, "y":1.24496, "heading":0.07493, "vx":-1.63048, "vy":-2.83009, "omega":0.24678, "ax":4.09876, "ay":6.85464, "alpha":-2.10375, "fx":[65.5172,54.43133,38.72498,49.55305], "fy":[78.24903,86.38189,94.44035,89.16036]}, + {"t":1.20818, "x":0.72657, "y":1.14637, "heading":0.08392, "vx":-1.4811, "vy":-2.58027, "omega":0.17011, "ax":4.17872, "ay":6.80211, "alpha":-2.24115, "fx":[67.30837,55.34237,38.8576,50.78057], "fy":[76.77039,85.8459,94.42865,88.51826]}, + {"t":1.24462, "x":0.67536, "y":1.05685, "heading":0.09012, "vx":-1.32881, "vy":-2.33237, "omega":0.08843, "ax":4.23892, "ay":6.76135, "alpha":-2.3448, "fx":[68.63871,56.0188,38.95826,51.73152], "fy":[75.62691,85.43977,94.41972,88.0061]}, + {"t":1.28107, "x":0.62975, "y":0.97634, "heading":0.09334, "vx":-1.17432, "vy":-2.08596, "omega":0.00298, "ax":4.28585, "ay":6.72883, "alpha":-2.42588, "fx":[69.66573,56.55793,39.0435,52.46414], "fy":[74.71644,85.11013,94.41014,87.60372]}, + {"t":1.31751, "x":0.5898, "y":0.90479, "heading":0.09345, "vx":-1.01813, "vy":-1.84073, "omega":-0.08543, "ax":4.32343, "ay":6.7023, "alpha":-2.4912, "fx":[70.48413,57.01802,39.12357,53.01457], "fy":[73.97284,84.82366,94.39776,87.29835]}, + {"t":1.35396, "x":0.55556, "y":0.84216, "heading":0.09034, "vx":-0.86056, "vy":-1.59647, "omega":-0.17622, "ax":4.35416, "ay":6.68026, "alpha":-2.54515, "fx":[71.15393,57.43607,39.20541,53.40631], "fy":[73.35181,84.55842,94.38099,87.08153]}, + {"t":1.3904, "x":0.52709, "y":0.78841, "heading":0.08392, "vx":-0.70188, "vy":-1.35301, "omega":-0.26898, "ax":4.37974, "ay":6.66166, "alpha":-2.5907, "fx":[71.71468,57.83675,39.29426,53.65521], "fy":[72.82293,84.29927,94.35853,86.94731]}, + {"t":1.42684, "x":0.50442, "y":0.74352, "heading":0.07411, "vx":-0.54226, "vy":-1.11022, "omega":-0.3634, "ax":4.40131, "ay":6.64577, "alpha":-2.62996, "fx":[72.19311,58.23713,39.39449,53.77227], "fy":[72.36497,84.03539,94.32915,86.89121]}, + {"t":1.46329, "x":0.48758, "y":0.70748, "heading":0.06087, "vx":-0.38185, "vy":-0.86802, "omega":-0.45925, "ax":4.41972, "ay":6.63204, "alpha":-2.66451, "fx":[72.6075,58.64934,39.51015,53.76535], "fy":[71.96313,83.75871,94.29154,86.90961]}, + {"t":1.49973, "x":0.4766, "y":0.68025, "heading":0.04413, "vx":-0.22078, "vy":-0.62632, "omega":-0.55635, "ax":4.43558, "ay":6.62005, "alpha":-2.6956, "fx":[72.9703,59.08217,39.64522,53.6403], "fy":[71.60726,83.46307,94.24429,86.99923]}, + {"t":1.53618, "x":0.4715, "y":0.66182, "heading":0.02386, "vx":-0.05913, "vy":-0.38505, "omega":-0.65459, "ax":4.44935, "ay":6.60948, "alpha":-2.72424, "fx":[73.28976,59.54207,39.80386,53.40165], "fy":[71.29073,83.14358,94.18578,87.15686]}, + {"t":1.57262, "x":0.4723, "y":0.65217, "heading":0.0, "vx":0.10303, "vy":-0.14417, "omega":-0.75388, "ax":4.4635, "ay":6.61604, "alpha":-2.51405, "fx":[72.16724,59.76317,41.41267,53.41303], "fy":[72.44302,82.99537,93.50167,87.17049]}, + {"t":1.61334, "x":0.48019, "y":0.65179, "heading":-0.03069, "vx":0.28476, "vy":0.1252, "omega":-0.85624, "ax":4.4638, "ay":6.61876, "alpha":-2.46069, "fx":[71.81164,60.08867,41.95045,52.92062], "fy":[72.78328,82.75123,93.25379,87.4601]}, + {"t":1.65406, "x":0.49549, "y":0.66237, "heading":-0.06556, "vx":0.46651, "vy":0.39469, "omega":-0.95643, "ax":4.46417, "ay":6.62181, "alpha":-2.3983, "fx":[71.37748,60.43312,42.56917,52.41067], "fy":[73.19485,82.48967,92.96387,87.75502]}, + {"t":1.69477, "x":0.51818, "y":0.68393, "heading":-0.1045, "vx":0.64827, "vy":0.66431, "omega":-1.05408, "ax":4.46464, "ay":6.62528, "alpha":-2.32395, "fx":[70.8427,60.78146,43.28041,51.90958], "fy":[73.69587,82.22096,92.62408,88.03897]}, + {"t":1.73549, "x":0.54828, "y":0.71647, "heading":-0.14742, "vx":0.83006, "vy":0.93406, "omega":-1.1487, "ax":4.4652, "ay":6.6293, "alpha":-2.23351, "fx":[70.17948,61.11329,44.0985,51.45134], "fy":[74.30793,81.95959,92.22439,88.29193]}, + {"t":1.7762, "x":0.58578, "y":0.75999, "heading":-0.19419, "vx":1.01186, "vy":1.20398, "omega":-1.23964, "ax":4.46583, "ay":6.63401, "alpha":-2.12118, "fx":[69.35219,61.40011,45.0419,51.0802], "fy":[75.05696,81.72635,91.75131,88.4886]}, + {"t":1.81692, "x":0.63068, "y":0.81451, "heading":-0.24466, "vx":1.19369, "vy":1.47409, "omega":-1.326, "ax":4.46643, "ay":6.63962, "alpha":-1.97856, "fx":[68.31386,61.60036,46.13592,50.855], "fy":[75.97448,81.55199,91.18586,88.59571]}, + {"t":1.85763, "x":0.68298, "y":0.88004, "heading":-0.29865, "vx":1.37555, "vy":1.74443, "omega":-1.40656, "ax":4.46682, "ay":6.64634, "alpha":-1.79323, "fx":[67.00025,61.65013,47.41789,50.85653], "fy":[77.09993,81.48373,90.49941,88.56683]}, + {"t":1.89835, "x":0.74269, "y":0.95657, "heading":-0.35592, "vx":1.55742, "vy":2.01504, "omega":-1.47958, "ax":4.46657, "ay":6.65441, "alpha":-1.54578, "fx":[65.31893,61.44429,48.94815,51.20102], "fy":[78.4847,81.59777,89.64501,88.33208]}, + {"t":1.93907, "x":0.80981, "y":1.04413, "heading":-0.41616, "vx":1.73928, "vy":2.28598, "omega":-1.54251, "ax":4.46481, "ay":6.66384, "alpha":-1.20348, "fx":[63.12746,60.79352,50.83468,52.06713], "fy":[80.19999,82.02545,88.53708,87.77594]}, + {"t":1.97978, "x":0.88432, "y":1.14273, "heading":-0.47897, "vx":1.92107, "vy":2.5573, "omega":-1.59151, "ax":4.45942, "ay":6.67387, "alpha":-0.70456, "fx":[60.18575,59.31265,53.29632,53.75411], "fy":[82.35269,83.01476,86.99671,86.68416]}, + {"t":2.0205, "x":0.96624, "y":1.25239, "heading":-0.54377, "vx":2.10264, "vy":2.82903, "omega":-1.6202, "ax":4.44434, "ay":6.68046, "alpha":0.0882, "fx":[56.03948,56.0676,56.8554,56.82029], "fy":[85.11836,85.09481,84.5707,84.59935]}, + {"t":2.06121, "x":1.05553, "y":1.37311, "heading":-0.60973, "vx":2.28359, "vy":3.10104, "omega":-1.61661, "ax":4.39595, "ay":6.66147, "alpha":1.57152, "fx":[49.69012,48.07318,63.10991,62.45118], "fy":[88.80721,89.57393,79.69275,80.34446]}, + {"t":2.10193, "x":1.15215, "y":1.50489, "heading":-0.67556, "vx":2.46258, "vy":3.37226, "omega":-1.55262, "ax":4.15955, "ay":6.3959, "alpha":5.68423, "fx":[38.47145,19.86615,79.49685,73.48062], "fy":[93.9268,98.99189,62.02878,69.97936]}, + {"t":2.14265, "x":1.25587, "y":1.6475, "heading":-0.73877, "vx":2.63194, "vy":3.63268, "omega":-1.32119, "ax":3.08525, "ay":4.27543, "alpha":16.74221, "fx":[24.62105,-49.40633,95.56794,85.95502], "fy":[97.85217,86.30226,-19.55281,52.60028]}, + {"t":2.18336, "x":1.36559, "y":1.79895, "heading":-0.79257, "vx":2.75755, "vy":3.80676, "omega":-0.63951, "ax":2.48114, "ay":4.3399, "alpha":15.37998, "fx":[19.0145,-50.4329,78.07435,79.3917], "fy":[95.42279,78.97968,-8.54966,54.62407]}, + {"t":2.22408, "x":1.47992, "y":1.95754, "heading":-0.8186, "vx":2.85858, "vy":3.98346, "omega":-0.0133, "ax":-1.8909, "ay":1.39851, "alpha":0.19672, "fx":[-23.93202,-24.74006,-24.10168,-23.28832], "fy":[18.52769,17.72753,16.99387,17.79845]}, + {"t":2.26479, "x":1.59474, "y":2.12089, "heading":-0.81915, "vx":2.78159, "vy":4.0404, "omega":-0.00529, "ax":-0.52472, "ay":0.3593, "alpha":0.00033, "fx":[-6.66415,-6.6655,-6.66435,-6.663], "fy":[4.56457,4.56339,4.56205,4.56322]}, + {"t":2.30551, "x":1.70756, "y":2.2857, "heading":-0.81936, "vx":2.76022, "vy":4.05503, "omega":-0.00528, "ax":-0.1313, "ay":0.08925, "alpha":0.00003, "fx":[-1.6676,-1.66773,-1.66764,-1.66751], "fy":[1.13368,1.1336,1.13347,1.13356]}, + {"t":2.34623, "x":1.81984, "y":2.45088, "heading":-0.81958, "vx":2.75488, "vy":4.05866, "omega":-0.00528, "ax":-0.03261, "ay":0.02213, "alpha":0.00001, "fx":[-0.4142,-0.41423,-0.41421,-0.41417], "fy":[0.28109,0.28106,0.28102,0.28105]}, + {"t":2.38694, "x":1.93198, "y":2.61615, "heading":-0.81979, "vx":2.75355, "vy":4.05957, "omega":-0.00528, "ax":-0.00809, "ay":0.00549, "alpha":0.0, "fx":[-0.1028,-0.10282,-0.10281,-0.10279], "fy":[0.06975,0.06973,0.06971,0.06973]}, + {"t":2.42766, "x":2.04408, "y":2.78144, "heading":-0.82001, "vx":2.75322, "vy":4.05979, "omega":-0.00528, "ax":-0.00201, "ay":0.00136, "alpha":0.0, "fx":[-0.02551,-0.02552,-0.02551,-0.0255], "fy":[0.01732,0.01731,0.01729,0.0173]}, + {"t":2.46837, "x":2.15618, "y":2.94674, "heading":-0.82022, "vx":2.75314, "vy":4.05984, "omega":-0.00528, "ax":-0.0005, "ay":0.00034, "alpha":0.0, "fx":[-0.00633,-0.00634,-0.00633,-0.00632], "fy":[0.00431,0.0043,0.00428,0.00429]}, + {"t":2.50909, "x":2.26828, "y":3.11204, "heading":-0.82044, "vx":2.75312, "vy":4.05986, "omega":-0.00528, "ax":-0.00012, "ay":0.00008, "alpha":0.0, "fx":[-0.00157,-0.00158,-0.00157,-0.00156], "fy":[0.00108,0.00107,0.00105,0.00106]}, + {"t":2.54981, "x":2.38037, "y":3.27734, "heading":-0.82065, "vx":2.75311, "vy":4.05986, "omega":-0.00528, "ax":-0.00003, "ay":0.00002, "alpha":0.0, "fx":[-0.00039,-0.0004,-0.00039,-0.00038], "fy":[0.00027,0.00027,0.00025,0.00026]}, + {"t":2.59052, "x":2.49247, "y":3.44264, "heading":-0.82087, "vx":2.75311, "vy":4.05986, "omega":-0.00528, "ax":-0.00001, "ay":0.00001, "alpha":0.0, "fx":[-0.00009,-0.0001,-0.00009,-0.00008], "fy":[0.00008,0.00007,0.00005,0.00006]}, + {"t":2.63124, "x":2.60456, "y":3.60794, "heading":-0.82108, "vx":2.75311, "vy":4.05986, "omega":-0.00528, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[-0.00002,-0.00003,-0.00002,-0.00001], "fy":[0.00003,0.00002,0.0,0.00001]}, + {"t":2.67195, "x":2.71666, "y":3.77324, "heading":-0.8213, "vx":2.75311, "vy":4.05986, "omega":-0.00528, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.0,-0.00001,0.0,0.00002], "fy":[0.00001,0.0,-0.00001,0.0]}, + {"t":2.71267, "x":2.82875, "y":3.93855, "heading":-0.82151, "vx":2.75311, "vy":4.05986, "omega":-0.00528, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.00003,0.00002,0.00003,0.00004], "fy":[-0.00001,-0.00002,-0.00003,-0.00002]}, + {"t":2.75338, "x":2.94085, "y":4.10385, "heading":-0.82173, "vx":2.75311, "vy":4.05986, "omega":-0.00528, "ax":0.00001, "ay":-0.00001, "alpha":0.0, "fx":[0.00012,0.00011,0.00012,0.00013], "fy":[-0.00007,-0.00008,-0.00009,-0.00008]}, + {"t":2.7941, "x":3.05295, "y":4.26915, "heading":-0.82194, "vx":2.75311, "vy":4.05986, "omega":-0.00528, "ax":0.00004, "ay":-0.00002, "alpha":0.0, "fx":[0.00047,0.00046,0.00047,0.00048], "fy":[-0.00031,-0.00032,-0.00033,-0.00032]}, + {"t":2.83482, "x":3.16504, "y":4.43445, "heading":-0.82215, "vx":2.75311, "vy":4.05986, "omega":-0.00528, "ax":0.00015, "ay":-0.0001, "alpha":0.0, "fx":[0.00189,0.00188,0.00189,0.0019], "fy":[-0.00127,-0.00128,-0.00129,-0.00128]}, + {"t":2.87553, "x":3.27714, "y":4.59975, "heading":-0.82237, "vx":2.75312, "vy":4.05986, "omega":-0.00528, "ax":0.0006, "ay":-0.00041, "alpha":0.0, "fx":[0.0076,0.00759,0.0076,0.00761], "fy":[-0.00514,-0.00515,-0.00516,-0.00515]}, + {"t":2.91625, "x":3.38923, "y":4.76505, "heading":-0.82258, "vx":2.75314, "vy":4.05984, "omega":-0.00528, "ax":0.00241, "ay":-0.00163, "alpha":0.0, "fx":[0.03061,0.0306,0.03061,0.03062], "fy":[-0.02075,-0.02076,-0.02077,-0.02076]}, + {"t":2.95696, "x":3.50133, "y":4.93035, "heading":-0.8228, "vx":2.75324, "vy":4.05977, "omega":-0.00528, "ax":0.00971, "ay":-0.00659, "alpha":0.0, "fx":[0.12335,0.12334,0.12335,0.12335], "fy":[-0.08365,-0.08366,-0.08366,-0.08366]}, + {"t":2.99768, "x":3.61344, "y":5.09564, "heading":-0.82301, "vx":2.75364, "vy":4.05951, "omega":-0.00528, "ax":0.03913, "ay":-0.02655, "alpha":0.0, "fx":[0.49692,0.49694,0.49692,0.49691], "fy":[-0.33724,-0.33722,-0.3372,-0.33722]}, + {"t":3.0384, "x":3.72559, "y":5.2609, "heading":-0.82323, "vx":2.75523, "vy":4.05842, "omega":-0.00528, "ax":0.15748, "ay":-0.1071, "alpha":-0.00003, "fx":[2.00005,2.00016,2.00006,1.99994], "fy":[-1.3603,-1.36019,-1.36008,-1.36018]}, + {"t":3.07911, "x":3.8379, "y":5.42606, "heading":-0.82344, "vx":2.76164, "vy":4.05406, "omega":-0.00528, "ax":0.62741, "ay":-0.43034, "alpha":-0.00016, "fx":[7.96848,7.96909,7.96853,7.96792], "fy":[-5.46619,-5.46561,-5.46501,-5.46558]}, + {"t":3.11983, "x":3.95086, "y":5.59077, "heading":-0.82366, "vx":2.78719, "vy":4.03654, "omega":-0.00528, "ax":2.22532, "ay":-1.57434, "alpha":-0.0008, "fx":[28.2624,28.26574,28.26328,28.25995], "fy":[-19.99814,-19.99479,-19.99184,-19.9952]}, + {"t":3.16054, "x":4.06619, "y":5.75381, "heading":-0.82387, "vx":2.87779, "vy":3.97244, "omega":-0.00532, "ax":4.56014, "ay":-3.47316, "alpha":-0.00249, "fx":[57.91156,57.92448,57.9214,57.90849], "fy":[-44.12204,-44.10696,-44.10027,-44.11535]}, + {"t":3.20126, "x":4.18714, "y":5.91268, "heading":-0.82409, "vx":3.06346, "vy":3.83103, "omega":-0.00542, "ax":5.44012, "ay":-4.62387, "alpha":-0.00482, "fx":[69.07798,69.10816,69.10752,69.07733], "fy":[-58.74694,-58.71247,-58.70468,-58.73918]}, + {"t":3.24198, "x":4.31638, "y":6.06483, "heading":-0.82431, "vx":3.28496, "vy":3.64276, "omega":-0.00561, "ax":5.48839, "ay":-5.2783, "alpha":-0.00756, "fx":[69.67915,69.73245,69.73244,69.6791], "fy":[-67.06821,-67.01315,-67.00688,-67.06198]}, + {"t":3.28269, "x":4.45468, "y":6.20877, "heading":-0.82454, "vx":3.50843, "vy":3.42785, "omega":-0.00592, "ax":5.26712, "ay":-5.76056, "alpha":-0.01092, "fx":[66.85504,66.9388,66.93593,66.85207], "fy":[-73.20192,-73.1253,-73.123,-73.1997]}, + {"t":3.32341, "x":4.6019, "y":6.34356, "heading":-0.82478, "vx":3.72288, "vy":3.19331, "omega":-0.00637, "ax":4.93632, "ay":-6.16433, "alpha":-0.01533, "fx":[62.637,62.76235,62.7515,62.62594], "fy":[-78.33869,-78.23801,-78.24251,-78.34334]}, + {"t":3.36412, "x":4.75757, "y":6.46847, "heading":-0.82504, "vx":3.92387, "vy":2.94232, "omega":-0.00699, "ax":4.54673, "ay":-6.51831, "alpha":-0.02174, "fx":[57.66662,57.85323,57.82589,57.63883], "fy":[-82.84406,-82.71331,-82.72852,-82.8595]}, + {"t":3.40484, "x":4.9211, "y":6.58287, "heading":-0.82532, "vx":4.10899, "vy":2.67692, "omega":-0.00788, "ax":4.11765, "ay":-6.83274, "alpha":-0.03325, "fx":[52.18017,52.47573,52.41338,52.11674], "fy":[-86.85246,-86.67336,-86.70693,-86.88641]}, + {"t":3.44555, "x":5.09182, "y":6.6862, "heading":-0.82565, "vx":4.27665, "vy":2.39872, "omega":-0.00923, "ax":3.65547, "ay":-7.11261, "alpha":-0.06106, "fx":[46.2274,46.78257,46.62758,46.06878], "fy":[-90.44044,-90.15301,-90.22775,-90.51587]}, + {"t":3.48627, "x":5.26897, "y":6.77797, "heading":-0.82602, "vx":4.42548, "vy":2.10912, "omega":-0.01172, "ax":3.15173, "ay":-7.36395, "alpha":-0.13116, "fx":[39.64324,40.84704,40.42232,39.20251], "fy":[-93.69916,-93.1776,-93.35374,-93.87568]}, + {"t":3.52699, "x":5.45177, "y":6.85774, "heading":-0.8265, "vx":4.55381, "vy":1.80929, "omega":-0.01706, "ax":2.53512, "ay":-7.60807, "alpha":-0.1815, "fx":[31.74469,33.40758,32.66399,30.97367], "fy":[-96.78822,-96.22283,-96.4684,-97.02859]}, + {"t":3.5677, "x":5.63929, "y":6.9251, "heading":-0.82719, "vx":4.65703, "vy":1.49952, "omega":-0.02445, "ax":1.50278, "ay":-7.88314, "alpha":0.39312, "fx":[19.77325,16.22059,18.44407,21.90701], "fy":[-99.99692,-100.64393,-100.27464,-99.56666]}, + {"t":3.60842, "x":5.83015, "y":6.97962, "heading":-0.82819, "vx":4.71821, "vy":1.17856, "omega":-0.00844, "ax":0.38955, "ay":-8.00857, "alpha":1.13862, "fx":[5.81433,-3.69522,4.23026,13.44081], "fy":[-101.819,-101.94827,-101.95578,-101.13123]}, + {"t":3.64913, "x":6.02258, "y":7.02097, "heading":-0.82853, "vx":4.73407, "vy":0.85248, "omega":0.03792, "ax":-0.46965, "ay":-7.99233, "alpha":1.65965, "fx":[-6.2091,-18.45915,-5.81408,6.6231], "fy":[-101.84145,-100.39142,-101.93797,-101.85818]}, + {"t":3.68985, "x":6.21494, "y":7.04905, "heading":-0.82699, "vx":4.71495, "vy":0.52706, "omega":0.10549, "ax":-1.10585, "ay":-7.91778, "alpha":2.01942, "fx":[-15.85619,-28.81496,-12.83191,1.32352], "fy":[-100.83051,-97.9702,-101.33693,-102.10422]}, + {"t":3.73057, "x":6.406, "y":7.06395, "heading":-0.82269, "vx":4.66993, "vy":0.20468, "omega":0.18772, "ax":-1.58228, "ay":-7.82639, "alpha":2.27907, "fx":[-23.52178,-36.1736,-17.86478,-2.82359], "fy":[-99.35602,-95.53548,-100.60335,-102.10412]}, + {"t":3.77128, "x":6.59483, "y":7.0658, "heading":-0.81505, "vx":4.6055, "vy":-0.11397, "omega":0.28051, "ax":-1.94711, "ay":-7.73507, "alpha":2.47562, "fx":[-29.68646,-41.5402,-21.56454,-6.1267], "fy":[-97.7199,-93.35667,-99.89979,-101.98313]}, + {"t":3.812, "x":6.78073, "y":7.05474, "heading":-0.80363, "vx":4.52622, "vy":-0.42891, "omega":0.38131, "ax":-2.23294, "ay":-7.65002, "alpha":2.63099, "fx":[-34.74687,-45.55099,-24.3288,-8.81168], "fy":[-96.06137,-91.49051,-99.28171,-101.80547]}, + {"t":3.85271, "x":6.96317, "y":7.03094, "heading":-0.7881, "vx":4.43531, "vy":-0.74039, "omega":0.48843, "ax":-2.46151, "ay":-7.57306, "alpha":2.75871, "fx":[-38.99886,-48.60502,-26.40605,-11.04049], "fy":[-94.43603,-89.92481,-98.7647,-101.60357]}, + {"t":3.89343, "x":7.14172, "y":6.99452, "heading":-0.76822, "vx":4.33509, "vy":-1.04874, "omega":0.60076, "ax":-2.64751, "ay":-7.50422, "alpha":2.86754, "fx":[-42.65565,-50.9571,-27.95657,-12.93053], "fy":[-92.85978,-88.62946,-98.34945,-101.3933]}, + {"t":3.93415, "x":7.31603, "y":6.9456, "heading":-0.74376, "vx":4.22729, "vy":-1.35428, "omega":0.71751, "ax":-2.82039, "ay":-7.47303, "alpha":2.32676, "fx":[-43.55325,-49.69365,-30.46375,-19.57202], "fy":[-92.43124,-89.3259,-97.58377,-100.30644]}, + {"t":3.97065, "x":7.46844, "y":6.89119, "heading":-0.71757, "vx":4.12435, "vy":-1.62704, "omega":0.80244, "ax":-3.0145, "ay":-7.41498, "alpha":1.95051, "fx":[-45.20308,-49.62906,-33.14214,-25.16918], "fy":[-91.62538,-89.34636,-96.69087,-99.03573]}, + {"t":4.00714, "x":7.61697, "y":6.82686, "heading":-0.68828, "vx":4.01432, "vy":-1.89768, "omega":0.87363, "ax":-3.24136, "ay":-7.3361, "alpha":1.49985, "fx":[-46.81805,-49.63724,-36.61999,-31.59319], "fy":[-90.7991,-89.32287,-95.40792,-97.161]}, + {"t":4.04364, "x":7.76133, "y":6.75271, "heading":-0.65639, "vx":3.89601, "vy":-2.16545, "omega":0.92837, "ax":-3.50788, "ay":-7.22719, "alpha":0.95804, "fx":[-48.35968,-49.77171,-41.21065,-38.86624], "fy":[-89.97405,-89.22414,-93.49106,-94.46893]}, + {"t":4.08014, "x":7.9012, "y":6.66886, "heading":-0.62251, "vx":3.76798, "vy":-2.42923, "omega":0.96334, "ax":-3.82194, "ay":-7.07454, "alpha":0.30247, "fx":[-49.7952,-50.11355,-47.33318,-46.92145], "fy":[-89.17187,-89.00151,-90.51178,-90.718]}, + {"t":4.11664, "x":8.03618, "y":6.57548, "heading":-0.58734, "vx":3.62848, "vy":-2.68745, "omega":0.97438, "ax":-4.19122, "ay":-6.85765, "alpha":-0.50118, "fx":[-51.09814,-50.79011,-55.48604,-55.54953], "fy":[-88.41295,-88.57509,-85.71095,-85.68561]}, + {"t":4.15314, "x":8.16583, "y":6.47282, "heading":-0.55178, "vx":3.4755, "vy":-2.93775, "omega":0.95609, "ax":-4.61664, "ay":-6.54866, "alpha":-1.49945, "fx":[-52.24478,-52.00481,-65.98,-64.30665], "fy":[-87.71736,-87.80776,-77.85919,-79.30292]}, + {"t":4.18964, "x":8.28961, "y":6.36123, "heading":-0.51688, "vx":3.30699, "vy":-3.17678, "omega":0.90136, "ax":-5.05396, "ay":-6.14625, "alpha":-2.64506, "fx":[-53.18384,-53.9997,-77.50653,-72.06289], "fy":[-87.12148,-86.50919,-66.31069,-72.3027]}, + {"t":4.22614, "x":8.40694, "y":6.24119, "heading":-0.48398, "vx":3.12253, "vy":-3.40111, "omega":0.80481, "ax":-5.31484, "ay":-5.86211, "alpha":-3.27559, "fx":[-53.93443,-56.46404,-83.83174,-75.77637], "fy":[-86.61379,-84.82302,-58.01436,-68.35765]}, + {"t":4.26264, "x":8.51738, "y":6.11315, "heading":-0.45461, "vx":2.92854, "vy":-3.61507, "omega":0.68526, "ax":-5.50492, "ay":-5.6525, "alpha":-3.51082, "fx":[-55.17229,-59.62356,-87.11626,-77.75094], "fy":[-85.76729,-82.51968,-52.83697,-66.03649]}, + {"t":4.29914, "x":8.6206, "y":5.97743, "heading":-0.4296, "vx":2.72761, "vy":-3.82139, "omega":0.55711, "ax":-5.72754, "ay":-5.40503, "alpha":-3.61447, "fx":[-57.35231,-63.95943,-89.89106,-79.76986], "fy":[-84.23813,-79.05808,-47.80259,-63.48942]}, + {"t":4.33564, "x":8.71634, "y":5.83435, "heading":-0.40926, "vx":2.51856, "vy":-4.01867, "omega":0.42519, "ax":-6.00555, "ay":-5.08719, "alpha":-3.55842, "fx":[-60.99278,-69.74857,-92.27515,-82.07967], "fy":[-81.5156,-73.80144,-42.7879,-60.33611]}, + {"t":4.37214, "x":8.80427, "y":5.68428, "heading":-0.39374, "vx":2.29936, "vy":-4.20435, "omega":0.29531, "ax":-6.35472, "ay":-4.66239, "alpha":-3.25555, "fx":[-66.87673,-76.98817,-94.14359,-84.82611], "fy":[-76.56864,-65.9465,-38.15379,-56.1913]}, + {"t":4.40864, "x":8.88396, "y":5.52772, "heading":-0.38297, "vx":2.06741, "vy":-4.37452, "omega":0.17648, "ax":-6.78026, "ay":-4.07372, "alpha":-2.57788, "fx":[-75.87861,-84.9677,-95.39031,-88.21632], "fy":[-67.33013,-54.93037,-34.37703,-50.31706]}, + {"t":4.44514, "x":8.9549, "y":5.36534, "heading":-0.37652, "vx":1.81994, "vy":-4.52321, "omega":0.08239, "ax":-7.23608, "ay":-3.26515, "alpha":-1.43325, "fx":[-87.24169,-91.95718,-96.07486,-92.33627], "fy":[-51.13743,-41.69257,-31.54331,-41.50388]}, + {"t":4.48164, "x":9.01651, "y":5.19807, "heading":-0.37352, "vx":1.55582, "vy":-4.64239, "omega":0.03008, "ax":-7.54301, "ay":-2.43548, "alpha":-0.3837, "fx":[-94.89928,-95.86413,-96.66106,-95.77833], "fy":[-33.64597,-30.64443,-28.22147,-31.21615]}, + {"t":4.51814, "x":9.06827, "y":5.027, "heading":-0.37242, "vx":1.28051, "vy":-4.73128, "omega":0.01607, "ax":-7.65248, "ay":-1.86128, "alpha":-0.07097, "fx":[-97.0657,-97.20168,-97.31496,-97.18177], "fy":[-24.14317,-23.54746,-23.13623,-23.7307]}, + {"t":4.55464, "x":9.10991, "y":4.85307, "heading":-0.37183, "vx":1.0012, "vy":-4.79922, "omega":0.01348, "ax":-7.66298, "ay":-1.37869, "alpha":-0.02104, "fx":[-97.29641,-97.32562,-97.35204,-97.32306], "fy":[-17.65776,-17.47372,-17.36263,-17.5465]}, + {"t":4.59114, "x":9.14135, "y":4.67699, "heading":-0.37134, "vx":0.7215, "vy":-4.84954, "omega":0.01271, "ax":-7.56181, "ay":-0.91281, "alpha":-0.00961, "fx":[-96.03041,-96.03817,-96.0485,-96.04079], "fy":[-11.6587,-11.57284,-11.52767,-11.61348]}, + {"t":4.62764, "x":9.16265, "y":4.49937, "heading":-0.37088, "vx":0.4455, "vy":-4.88286, "omega":0.01236, "ax":-7.2383, "ay":-0.46714, "alpha":-0.00288, "fx":[-91.9287,-91.9291,-91.93253,-91.93213], "fy":[-5.95145,-5.92601,-5.91439,-5.93982]}, + {"t":4.66414, "x":9.17409, "y":4.32084, "heading":-0.37043, "vx":0.1813, "vy":-4.89991, "omega":0.01226, "ax":-6.36115, "ay":-0.0859, "alpha":0.00199, "fx":[-80.79157,-80.79286,-80.78905,-80.78776], "fy":[-1.07975,-1.09581,-1.10223,-1.08617]}, + {"t":4.70064, "x":9.17647, "y":4.14194, "heading":-0.36998, "vx":-0.05087, "vy":-4.90304, "omega":0.01233, "ax":-4.29455, "ay":0.11324, "alpha":0.00367, "fx":[-54.54718,-54.55255,-54.53951,-54.53413], "fy":[1.4545,1.43082,1.42193,1.44561]}, + {"t":4.73714, "x":9.17175, "y":3.96306, "heading":-0.36953, "vx":-0.20762, "vy":-4.89891, "omega":0.01246, "ax":-2.02881, "ay":0.10162, "alpha":0.00252, "fx":[-25.77065,-25.77525,-25.76345,-25.75885], "fy":[1.29991,1.28642,1.28141,1.2949]}, + {"t":4.77363, "x":9.16282, "y":3.78432, "heading":-0.36907, "vx":-0.28167, "vy":-4.8952, "omega":0.01255, "ax":-1.59927, "ay":0.10201, "alpha":0.00256, "fx":[-20.3153,-20.32019,-20.30793,-20.30304], "fy":[1.30487,1.29155,1.28637,1.29969]}, + {"t":4.81013, "x":9.15147, "y":3.60571, "heading":-0.36861, "vx":-0.34005, "vy":-4.89148, "omega":0.01265, "ax":-3.18736, "ay":0.26099, "alpha":0.00626, "fx":[-40.48894,-40.49995,-40.47379,-40.46279], "fy":[3.3395,3.30295,3.28985,3.3264]}, + {"t":4.84663, "x":9.13694, "y":3.42735, "heading":-0.36815, "vx":-0.45638, "vy":-4.88195, "omega":0.01288, "ax":-5.62267, "ay":0.64891, "alpha":0.01507, "fx":[-71.41742,-71.44104,-71.40507,-71.38144], "fy":[8.31628,8.2013,8.16661,8.28171]}, + {"t":4.88313, "x":9.11654, "y":3.24959, "heading":-0.36768, "vx":-0.66161, "vy":-4.85827, "omega":0.01343, "ax":-6.88142, "ay":1.14476, "alpha":0.08942, "fx":[-87.36292,-87.52176,-87.43322,-87.27427], "fy":[15.03435,14.23016,14.04078,14.8513]}, + {"t":4.91963, "x":9.0878, "y":3.07303, "heading":-0.36719, "vx":-0.91278, "vy":-4.81648, "omega":0.01669, "ax":-7.15697, "ay":2.12193, "alpha":1.82536, "fx":[-88.94485,-93.83525,-93.19546,-87.61512], "fy":[35.72256,19.92798,16.64429,35.50416]}, + {"t":4.95613, "x":9.04972, "y":2.89864, "heading":-0.36658, "vx":-1.174, "vy":-4.73903, "omega":0.08332, "ax":-5.81653, "ay":4.052, "alpha":7.97914, "fx":[-68.88482,-95.65479,-94.6389,-36.31497], "fy":[72.09409,27.20256,15.68608,90.86835]}, + {"t":4.99263, "x":9.003, "y":2.72837, "heading":-0.36354, "vx":-1.3863, "vy":-4.59114, "omega":0.37455, "ax":-5.12226, "ay":4.53067, "alpha":9.82853, "fx":[-60.29738,-95.75048,-94.96653,-9.20867], "fy":[80.85525,30.82618,19.04599,99.44104]}, + {"t":5.02913, "x":8.94898, "y":2.56381, "heading":-0.34987, "vx":-1.57326, "vy":-4.42577, "omega":0.73329, "ax":-4.83841, "ay":5.12053, "alpha":8.88324, "fx":[-57.00712,-94.30406,-89.97112,-4.52038], "fy":[83.77129,36.41498,39.318,100.63091]}, + {"t":5.06563, "x":8.88834, "y":2.40569, "heading":-0.32311, "vx":-1.74986, "vy":-4.23887, "omega":1.05752, "ax":-4.69154, "ay":5.56451, "alpha":7.72221, "fx":[-56.54353,-92.80262,-81.94408,-7.05092], "fy":[84.41211,40.87188,56.4397,100.96642]}, + {"t":5.10213, "x":8.82134, "y":2.25468, "heading":-0.28451, "vx":-1.9211, "vy":-4.03577, "omega":1.33938, "ax":-4.54487, "ay":5.88903, "alpha":6.85528, "fx":[-56.659,-91.23852,-72.90026,-10.09248], "fy":[84.53678,44.69968,68.9392,101.00079]}, + {"t":5.13863, "x":8.7482, "y":2.11129, "heading":-0.23562, "vx":-2.08699, "vy":-3.82083, "omega":1.58959, "ax":-4.39077, "ay":6.14943, "alpha":6.17681, "fx":[-56.9115,-89.30395,-63.54703,-13.29875], "fy":[84.50051,48.71968,78.36368,100.82183]}, + {"t":5.17513, "x":8.6691, "y":1.97593, "heading":-0.1776, "vx":-2.24725, "vy":-3.59637, "omega":1.81504, "ax":-4.23505, "ay":6.36601, "alpha":5.62196, "fx":[-57.08653,-86.76879,-54.78287,-16.51227], "fy":[84.47482,53.27595,85.17798,100.47947]}, + {"t":5.21163, "x":8.58425, "y":1.84891, "heading":-0.11135, "vx":-2.40183, "vy":-3.36402, "omega":2.02024, "ax":-3.79312, "ay":6.83622, "alpha":4.2461, "fx":[-53.25335,-75.63204,-42.34536,-21.46842], "fy":[86.99056,68.25686,92.41217,99.63655]}, + {"t":5.24813, "x":8.49406, "y":1.73068, "heading":-0.03762, "vx":-2.54027, "vy":-3.1145, "omega":2.17522, "ax":-3.12135, "ay":7.3446, "alpha":2.0834, "fx":[-44.16333,-53.65361,-34.06378,-26.69104], "fy":[91.96199,86.68864,96.03768,98.43485]}, + {"t":5.28463, "x":8.39926, "y":1.62189, "heading":0.04178, "vx":-2.6542, "vy":-2.84642, "omega":2.25126, "ax":-2.56413, "ay":7.61144, "alpha":0.39676, "fx":[-33.90753,-35.08855,-31.16154,-30.1063], "fy":[96.23972,95.80157,97.14562,97.49192]}, + {"t":5.32113, "x":8.30068, "y":1.52307, "heading":0.12395, "vx":-2.74779, "vy":-2.56861, "omega":2.26575, "ax":-2.13221, "ay":7.74121, "alpha":-0.83445, "fx":[-23.26516,-22.38516,-30.55197,-32.11916], "fy":[99.37552,99.6031,97.41198,96.88113]}, + {"t":5.35763, "x":8.19897, "y":1.43447, "heading":0.20665, "vx":-2.82561, "vy":-2.28606, "omega":2.23529, "ax":-1.79751, "ay":7.80081, "alpha":-1.77766, "fx":[-12.95268,-14.31016,-31.03907,-33.01561], "fy":[101.26374,101.12714,97.30466,96.60399]}, + {"t":5.39413, "x":8.09464, "y":1.35623, "heading":0.28823, "vx":-2.89122, "vy":-2.00133, "omega":2.17041, "ax":-1.5351, "ay":7.82309, "alpha":-2.52752, "fx":[-3.5843,-9.35593,-32.08141,-32.96521], "fy":[102.0525,101.74045,96.99838,96.63975]}, + {"t":5.43063, "x":7.98808, "y":1.28839, "heading":0.36745, "vx":-2.94725, "vy":-1.7158, "omega":2.07815, "ax":-1.32751, "ay":7.82572, "alpha":-3.12203, "fx":[4.47402,-6.43816,-33.39647,-32.07978], "fy":[102.04295,101.9933,96.57716,96.95163]}, + {"t":5.46713, "x":7.87963, "y":1.23098, "heading":0.4433, "vx":-2.99571, "vy":-1.43016, "omega":1.9642, "ax":-1.16134, "ay":7.81925, "alpha":-3.58152, "fx":[11.12239,-4.84797,-34.82242,-30.45098], "fy":[101.55715,102.10177,96.09022,97.48699]}, + {"t":5.50362, "x":7.76951, "y":1.18399, "heading":0.515, "vx":-3.03809, "vy":-1.14476, "omega":1.83348, "ax":-1.0257, "ay":7.80972, "alpha":-3.92731, "fx":[16.45034,-4.1243,-36.26171,-28.17209], "fy":[100.85231,102.14972,95.57053,98.17943]}, + {"t":5.54012, "x":7.65794, "y":1.1474, "heading":0.58192, "vx":-3.07553, "vy":-0.85971, "omega":1.69013, "ax":-0.91183, "ay":7.80008, "alpha":-4.18463, "fx":[20.64216,-3.9614,-37.65442,-25.34926], "fy":[100.09689,102.16915,95.04187,98.95429]}, + {"t":5.57662, "x":7.54508, "y":1.12122, "heading":0.64361, "vx":-3.10881, "vy":-0.57501, "omega":1.53739, "ax":-0.81322, "ay":7.79126, "alpha":-4.37949, "fx":[23.90745,-4.1515,-38.96421,-22.10537], "fy":[99.38352,102.17221,94.52192,99.73679]}, + {"t":5.61312, "x":7.43106, "y":1.10542, "heading":0.69972, "vx":-3.1385, "vy":-0.29063, "omega":1.37754, "ax":-0.72544, "ay":7.78314, "alpha":-4.53489, "fx":[26.44349,-4.54992,-40.16977,-18.57809], "fy":[98.75269,102.16406,94.02394,100.46093]}, + {"t":5.64962, "x":7.31603, "y":1.1, "heading":0.75, "vx":-3.16497, "vy":-0.00655, "omega":1.21202, "ax":-0.64896, "ay":7.8276, "alpha":-4.15752, "fx":[24.22084,-5.40423,-37.91672,-13.86869], "fy":[99.33265,102.12769,94.96077,101.23933]}, + {"t":5.68909, "x":7.1906, "y":1.10584, "heading":0.79784, "vx":-3.19059, "vy":0.30239, "omega":1.04793, "ax":-0.57722, "ay":7.84004, "alpha":-4.07272, "fx":[24.15316,-5.95492,-37.26298,-10.25931], "fy":[99.34124,102.08927,95.2072,101.65489]}, + {"t":5.72856, "x":7.06423, "y":1.12388, "heading":0.8392, "vx":-3.21337, "vy":0.61183, "omega":0.88718, "ax":-0.49444, "ay":7.85235, "alpha":-3.99021, "fx":[24.13636,-6.19861,-36.23642,-6.82011], "fy":[99.33565,102.06547,95.58869,101.92817]}, + {"t":5.76803, "x":6.93701, "y":1.15414, "heading":0.87421, "vx":-3.23288, "vy":0.92175, "omega":0.7297, "ax":-0.39751, "ay":7.86494, "alpha":-3.90159, "fx":[24.20492,-6.09889,-34.77837,-3.52222], "fy":[99.30703,102.06021,96.11237,102.07798]}, + {"t":5.8075, "x":6.80911, "y":1.19665, "heading":0.90301, "vx":-3.24857, "vy":1.23217, "omega":0.5757, "ax":-0.28169, "ay":7.87811, "alpha":-3.79725, "fx":[24.3935,-5.60188,-32.79522,-0.30698], "fy":[99.246,102.07481,96.78741,102.11805]}, + {"t":5.84697, "x":6.68067, "y":1.25142, "heading":0.92574, "vx":-3.25969, "vy":1.54311, "omega":0.42583, "ax":-0.13982, "ay":7.89184, "alpha":-3.66546, "fx":[24.74088,-4.62503,-30.13767,2.91854], "fy":[99.14114,102.10626,97.62371,102.05275]}, + {"t":5.88644, "x":6.5519, "y":1.31847, "heading":0.94254, "vx":-3.26521, "vy":1.85459, "omega":0.28116, "ax":0.03913, "ay":7.90549, "alpha":-3.49055, "fx":[25.29611,-3.03605,-26.56327,6.29125], "fy":[98.97656,102.1432,98.62649,101.87127]}, + {"t":5.9259, "x":6.42306, "y":1.39783, "heading":0.95364, "vx":-3.26367, "vy":2.16662, "omega":0.14339, "ax":0.27288, "ay":7.91694, "alpha":-3.24883, "fx":[26.12936,-0.61066,-21.6657,10.01017], "fy":[98.7274,102.15604,99.77853,101.53706]}, + {"t":5.96537, "x":6.29446, "y":1.48951, "heading":0.9593, "vx":-3.2529, "vy":2.47909, "omega":0.01516, "ax":0.59145, "ay":7.9203, "alpha":-2.90032, "fx":[27.3538,3.06007,-14.73498,14.36827], "fy":[98.35018,102.06903,100.98394,100.96646]}, + {"t":6.00484, "x":6.16653, "y":1.59352, "heading":0.9599, "vx":-3.22955, "vy":2.79169, "omega":-0.09931, "ax":1.04914, "ay":7.89916, "alpha":-2.37073, "fx":[29.1748,8.79541,-4.47717,19.80558], "fy":[97.75943,101.67029,101.88442,99.9818]}, + {"t":6.04431, "x":6.03988, "y":1.70986, "heading":0.95598, "vx":-3.18814, "vy":3.10346, "omega":-0.19288, "ax":1.75065, "ay":7.8039, "alpha":-1.51151, "fx":[32.01723,18.44784,11.48272,26.98908], "fy":[96.76037,100.25943,101.23186,98.20495]}, + {"t":6.08378, "x":5.91541, "y":1.83843, "heading":0.94837, "vx":-3.11905, "vy":3.41147, "omega":-0.25254, "ax":2.89957, "ay":7.46748, "alpha":-0.01601, "fx":[36.92326,36.76922,36.729,36.88329], "fy":[94.80413,94.86426,94.87875,94.8186]}, + {"t":6.12325, "x":5.79457, "y":1.97889, "heading":0.9384, "vx":-3.00461, "vy":3.70621, "omega":-0.25317, "ax":4.74493, "ay":6.32605, "alpha":2.74642, "fx":[47.12111,73.16463,70.30681,50.46078], "fy":[89.72791,70.13753,73.33793,88.17506]}, + {"t":6.16272, "x":5.67967, "y":2.1301, "heading":0.92841, "vx":-2.81733, "vy":3.95589, "omega":-0.14477, "ax":5.98077, "ay":5.13527, "alpha":2.71792, "fx":[67.67829,87.44213,82.55426,66.16246], "fy":[74.85932,50.59952,58.74867,76.67601]}, + {"t":6.20219, "x":5.57314, "y":2.29023, "heading":0.92269, "vx":-2.58127, "vy":4.15857, "omega":-0.0375, "ax":6.74781, "ay":4.14864, "alpha":0.64928, "fx":[84.60135,88.0051,86.77629,83.42193], "fy":[54.40532,48.80206,51.15816,56.39532]}, + {"t":6.24166, "x":5.47651, "y":2.4576, "heading":0.92121, "vx":-2.31495, "vy":4.32231, "omega":-0.01187, "ax":7.03444, "ay":3.51245, "alpha":0.07283, "fx":[89.25276,89.56577,89.43036,89.11697], "fy":[44.76076,44.15015,44.46166,45.06821]}, + {"t":6.28112, "x":5.39062, "y":2.63093, "heading":0.92074, "vx":-2.03731, "vy":4.46095, "omega":-0.009, "ax":7.13901, "ay":3.00281, "alpha":0.01872, "fx":[90.65097,90.71941,90.68819,90.61968], "fy":[38.16817,38.01518,38.10679,38.25957]}, + {"t":6.32059, "x":5.31577, "y":2.80934, "heading":0.92039, "vx":-1.75554, "vy":4.57946, "omega":-0.00826, "ax":7.07198, "ay":2.47366, "alpha":0.0107, "fx":[89.80825,89.8418,89.82847,89.79489], "fy":[31.42949,31.34654,31.40445,31.48735]}, + {"t":6.36006, "x":5.25199, "y":2.99201, "heading":0.92006, "vx":-1.47641, "vy":4.6771, "omega":-0.00783, "ax":6.58195, "ay":1.88243, "alpha":0.00598, "fx":[83.58701,83.60433,83.60212,83.5848], "fy":[23.91166,23.87055,23.90433,23.94543]}, + {"t":6.39953, "x":5.19885, "y":3.17808, "heading":0.91975, "vx":-1.21663, "vy":4.75139, "omega":-0.0076, "ax":4.88447, "ay":1.1471, "alpha":0.00243, "fx":[62.02988,62.03802,62.04139,62.03325], "fy":[14.56881,14.55637,14.56898,14.58142]}, + {"t":6.439, "x":5.15463, "y":3.3665, "heading":0.91945, "vx":-1.02385, "vy":4.79667, "omega":-0.0075, "ax":2.03717, "ay":0.41724, "alpha":0.00055, "fx":[25.87127,25.87352,25.87513,25.87288], "fy":[5.29896,5.297,5.29946,5.30141]}, + {"t":6.47847, "x":5.11581, "y":3.55615, "heading":0.91916, "vx":-0.94344, "vy":4.81314, "omega":-0.00748, "ax":0.57178, "ay":0.11071, "alpha":0.00008, "fx":[7.26163,7.26197,7.26224,7.2619], "fy":[1.40604,1.40577,1.40611,1.40639]}, + {"t":6.51794, "x":5.07902, "y":3.7462, "heading":0.91886, "vx":-0.92088, "vy":4.81751, "omega":-0.00748, "ax":0.15064, "ay":0.0287, "alpha":0.00001, "fx":[1.9132,1.91326,1.91329,1.91323], "fy":[0.36452,0.36448,0.36454,0.36458]}, + {"t":6.55741, "x":5.04279, "y":3.93636, "heading":0.91857, "vx":-0.91493, "vy":4.81864, "omega":-0.00748, "ax":0.03934, "ay":0.00746, "alpha":0.0, "fx":[0.4996,0.49959,0.49961,0.49961], "fy":[0.09479,0.09478,0.09477,0.09479]}, + {"t":6.59687, "x":5.00671, "y":4.12656, "heading":0.91827, "vx":-0.91338, "vy":4.81893, "omega":-0.00748, "ax":0.0097, "ay":0.00184, "alpha":0.0, "fx":[0.1232,0.1232,0.12319,0.12318], "fy":[0.02334,0.02335,0.02335,0.02334]}, + {"t":6.63634, "x":4.97067, "y":4.31676, "heading":0.91798, "vx":-0.913, "vy":4.81901, "omega":-0.00748, "ax":0.00022, "ay":0.00004, "alpha":0.0, "fx":[0.00276,0.00274,0.00274,0.00276], "fy":[0.00053,0.00053,0.00051,0.00051]}, + {"t":6.67581, "x":4.93463, "y":4.50696, "heading":0.91768, "vx":-0.91299, "vy":4.81901, "omega":-0.00748, "ax":-0.00881, "ay":-0.00167, "alpha":0.0, "fx":[-0.11192,-0.11193,-0.11195,-0.11194], "fy":[-0.02122,-0.0212,-0.02121,-0.02123]}, + {"t":6.71528, "x":4.89859, "y":4.69716, "heading":0.91739, "vx":-0.91333, "vy":4.81894, "omega":-0.00748, "ax":-0.03615, "ay":-0.00686, "alpha":-0.00001, "fx":[-0.45911,-0.45914,-0.45914,-0.45911], "fy":[-0.08708,-0.08708,-0.08711,-0.08711]}, + {"t":6.75475, "x":4.86251, "y":4.88735, "heading":0.91709, "vx":-0.91476, "vy":4.81867, "omega":-0.00748, "ax":-0.13854, "ay":-0.02638, "alpha":-0.00002, "fx":[-1.75949,-1.75955,-1.75961,-1.75955], "fy":[-0.3351,-0.33503,-0.33509,-0.33515]}, + {"t":6.79422, "x":4.8263, "y":5.07751, "heading":0.9168, "vx":-0.92023, "vy":4.81763, "omega":-0.00748, "ax":-0.5263, "ay":-0.10173, "alpha":-0.00008, "fx":[-6.68401,-6.68435,-6.68459,-6.68425], "fy":[-1.29195,-1.29171,-1.29205,-1.29229]}, + {"t":6.83369, "x":4.78957, "y":5.26758, "heading":0.9165, "vx":-0.941, "vy":4.81361, "omega":-0.00748, "ax":-1.89304, "ay":-0.38554, "alpha":-0.00051, "fx":[-24.04091,-24.043,-24.04452,-24.04244], "fy":[-4.89642,-4.89463,-4.89686,-4.89866]}, + {"t":6.87316, "x":4.75096, "y":5.45727, "heading":0.91621, "vx":-1.01572, "vy":4.7984, "omega":-0.0075, "ax":-4.71626, "ay":-1.09595, "alpha":-0.00332, "fx":[-59.89103,-59.9023,-59.90738,-59.89611], "fy":[-13.91905,-13.90245,-13.91943,-13.93603]}, + {"t":6.91263, "x":4.70719, "y":5.6458, "heading":0.91591, "vx":-1.20186, "vy":4.75514, "omega":-0.00763, "ax":-6.5056, "ay":-1.90372, "alpha":-0.19237, "fx":[-82.36995,-82.9379,-82.88288,-82.30888], "fy":[-24.30562,-22.98382,-24.05664,-25.36722]}, + {"t":6.95209, "x":4.65469, "y":5.832, "heading":0.91561, "vx":-1.45863, "vy":4.68, "omega":-0.01522, "ax":-4.34206, "ay":-5.14923, "alpha":-9.07543, "fx":[-10.17642,-90.88442,-80.86574,-38.66046], "fy":[-92.67519,-23.61113,-55.35041,-89.95615]}, + {"t":6.99156, "x":4.59374, "y":6.0127, "heading":0.91501, "vx":-1.63001, "vy":4.47677, "omega":-0.37342, "ax":-2.30301, "ay":-5.88961, "alpha":-12.34345, "fx":[50.89519,-87.06984,-70.94778,-9.87602], "fy":[-85.90128,-41.43623,-71.43248,-100.43621]}, + {"t":7.03103, "x":4.52761, "y":6.18481, "heading":0.90027, "vx":-1.7209, "vy":4.24431, "omega":-0.8606, "ax":-2.04009, "ay":-5.91679, "alpha":-12.747, "fx":[59.12092,-87.26288,-69.99061,-5.50872], "fy":[-81.84683,-44.08335,-73.28436,-101.37208]}, + {"t":7.0705, "x":4.4581, "y":6.34772, "heading":0.8663, "vx":-1.80142, "vy":4.01078, "omega":-1.36371, "ax":-1.23591, "ay":-7.01547, "alpha":-8.63236, "fx":[51.82209,-48.87126,-61.68479,-4.05314], "fy":[-87.20571,-86.785,-80.73127,-101.68018]}, + {"t":7.10997, "x":4.38604, "y":6.50055, "heading":0.81248, "vx":-1.8502, "vy":3.73389, "omega":-1.70442, "ax":-0.04136, "ay":-7.85901, "alpha":-3.65861, "fx":[27.30243,-1.7847,-27.8261,0.20736], "fy":[-98.02253,-101.47558,-97.88563,-101.87261]}, + {"t":7.14944, "x":4.31298, "y":6.64181, "heading":0.74521, "vx":-1.85184, "vy":3.42371, "omega":-1.84882, "ax":0.3872, "ay":-7.99556, "alpha":-1.31064, "fx":[14.67551,5.89908,-5.03263,4.12876], "fy":[-100.85346,-101.69011,-101.78358,-101.86608]}, + {"t":7.18891, "x":4.24019, "y":6.77071, "heading":0.67224, "vx":-1.83655, "vy":3.10813, "omega":-1.90055, "ax":0.6309, "ay":-8.00691, "alpha":0.08848, "fx":[7.35673,7.88666,8.6671,8.14076], "fy":[-101.74264,-101.70563,-101.64028,-101.68105]}, + {"t":7.22838, "x":4.16819, "y":6.88715, "heading":0.59722, "vx":-1.81165, "vy":2.79211, "omega":-1.89706, "ax":0.78584, "ay":-7.98742, "alpha":0.98877, "fx":[2.68307,8.02685,16.96077,12.25198], "fy":[-102.03173,-101.77541,-100.66,-101.31237]}, + {"t":7.26784, "x":4.0973, "y":6.99113, "heading":0.52235, "vx":-1.78064, "vy":2.47685, "omega":-1.85803, "ax":0.89258, "ay":-7.96145, "alpha":1.61737, "fx":[-0.46154,7.36359,22.08882,16.35415], "fy":[-102.10611,-101.87568,-99.71095,-100.76776]}, + {"t":7.30731, "x":4.02772, "y":7.08268, "heading":0.44902, "vx":-1.74541, "vy":2.16262, "omega":-1.7942, "ax":0.97054, "ay":-7.93552, "alpha":2.08931, "fx":[-2.60976,6.31122,25.28514,20.31911], "fy":[-102.10286,-101.98031,-98.98606,-100.07399]}, + {"t":7.34678, "x":3.95959, "y":7.16186, "heading":0.3782, "vx":-1.7071, "vy":1.84942, "omega":-1.71174, "ax":1.02971, "ay":-7.91136, "alpha":2.46324, "fx":[-4.04947,5.07277,27.25077,24.03765], "fy":[-102.07787,-102.07396,-98.49139,-99.27241]}, + {"t":7.38625, "x":3.89301, "y":7.22869, "heading":0.31064, "vx":-1.66646, "vy":1.53717, "omega":-1.61451, "ax":1.07567, "ay":-7.88942, "alpha":2.76927, "fx":[-4.95602,3.76178,28.40693,27.43395], "fy":[-102.0551,-102.14919,-98.1862,-98.41044]}, + {"t":7.42572, "x":3.82807, "y":7.28322, "heading":0.24692, "vx":-1.62401, "vy":1.22578, "omega":-1.50521, "ax":1.11189, "ay":-7.86981, "alpha":3.02344, "fx":[-5.4497,2.4473,29.0214,30.46755], "fy":[-102.04384,-102.20358,-98.02383,-97.53346]}, + {"t":7.46519, "x":3.76484, "y":7.32547, "heading":0.18751, "vx":-1.58012, "vy":0.91517, "omega":-1.38588, "ax":1.14075, "ay":-7.85251, "alpha":3.2352, "fx":[-5.62258,1.17348,29.27321,33.12864], "fy":[-102.04599,-102.23774,-97.96307,-96.67906]}, + {"t":7.50466, "x":3.70337, "y":7.35547, "heading":0.13281, "vx":-1.5351, "vy":0.60524, "omega":-1.25819, "ax":1.16402, "ay":-7.8374, "alpha":3.41125, "fx":[-5.55164,-0.03085,29.28725,35.43036], "fy":[-102.05966,-102.25399,-97.97049,-95.8744]}, + {"t":7.54413, "x":3.64368, "y":7.37325, "heading":0.08315, "vx":-1.48915, "vy":0.29591, "omega":-1.12356, "ax":1.18307, "ay":-7.8243, "alpha":3.55727, "fx":[-5.305,-1.14692,29.15372,37.40081], "fy":[-102.08124,-102.25555,-98.01998,-95.13611]}, + {"t":7.5836, "x":3.58583, "y":7.37884, "heading":0.0388, "vx":-1.44246, "vy":-0.01291, "omega":-0.98315, "ax":1.19892, "ay":-7.81295, "alpha":3.67852, "fx":[-4.94476,-2.1628,28.93951,39.07615], "fy":[-102.1068,-102.24591,-98.09159,-94.47179]}, + {"t":7.62306, "x":3.52983, "y":7.37224, "heading":0.0, "vx":-1.39514, "vy":-0.32128, "omega":-0.83797, "ax":1.21859, "ay":-7.83341, "alpha":3.37038, "fx":[-2.03901,-1.43916,27.61687,37.76876], "fy":[-102.21158,-102.26014,-98.47442,-95.00929]}, + {"t":7.66396, "x":3.4738, "y":7.35256, "heading":-0.03427, "vx":-1.34531, "vy":-0.64162, "omega":-0.70014, "ax":1.23444, "ay":-7.83402, "alpha":3.31614, "fx":[-0.79442,-1.58843,27.07479,38.02033], "fy":[-102.21812,-102.25015,-98.61791,-94.90032]}, + {"t":7.70485, "x":3.41982, "y":7.31977, "heading":-0.0629, "vx":-1.29482, "vy":-0.96199, "omega":-0.56453, "ax":1.25332, "ay":-7.83438, "alpha":3.25612, "fx":[0.4218,-1.56903,26.64543,38.17332], "fy":[-102.20814,-102.24141,-98.72659,-94.82865]}, + {"t":7.74575, "x":3.36791, "y":7.27388, "heading":-0.08599, "vx":-1.24357, "vy":-1.28237, "omega":-0.43137, "ax":1.27592, "ay":-7.83439, "alpha":3.18923, "fx":[1.61675,-1.37077,26.33284,38.24079], "fy":[-102.18214,-102.23363,-98.80064,-94.78915]}, + {"t":7.78664, "x":3.31812, "y":7.21488, "heading":-0.10363, "vx":-1.19139, "vy":-1.60275, "omega":-0.30095, "ax":1.30321, "ay":-7.83395, "alpha":3.11331, "fx":[2.81011,-0.97561,26.14094,38.23075], "fy":[-102.13975,-102.22546,-98.8397,-94.77823]}, + {"t":7.82754, "x":3.27049, "y":7.14279, "heading":-0.11593, "vx":-1.1381, "vy":-1.92311, "omega":-0.17363, "ax":1.33664, "ay":-7.83289, "alpha":3.02483, "fx":[4.03794,-0.35361,26.07423,38.14589], "fy":[-102.0788,-102.214,-98.84263,-94.79394]}, + {"t":7.86843, "x":3.22507, "y":7.0576, "heading":-0.12303, "vx":-1.08344, "vy":-2.24343, "omega":-0.04993, "ax":1.37839, "ay":-7.83095, "alpha":2.91821, "fx":[5.35941,0.5443,26.13887,37.98269], "fy":[-101.99377,-102.19378,-98.80696,-94.83623]}, + {"t":7.90932, "x":3.18191, "y":6.9593, "heading":-0.12508, "vx":-1.02707, "vy":-2.56367, "omega":0.0694, "ax":1.43189, "ay":-7.82764, "alpha":2.78465, "fx":[6.86916,1.79969,26.34466,37.72968], "fy":[-101.87284,-102.15439,-98.72804,-94.90731]}, + {"t":7.95022, "x":3.14111, "y":6.84792, "heading":-0.12224, "vx":-0.96851, "vy":-2.88378, "omega":0.18328, "ax":1.50283, "ay":-7.822, "alpha":2.60961, "fx":[8.72099,3.55395,26.70893,37.36358], "fy":[-101.69161,-102.07487,-98.59721,-95.01243]}, + {"t":7.99111, "x":3.10276, "y":6.72345, "heading":-0.11474, "vx":-0.90706, "vy":-3.20365, "omega":0.29, "ax":1.60135, "ay":-7.81196, "alpha":2.36743, "fx":[11.1765,6.06941,27.26553,36.84081], "fy":[-101.39769,-101.90869,-98.39762,-95.16164]}, + {"t":8.03201, "x":3.06701, "y":6.58591, "heading":-0.10288, "vx":-0.84157, "vy":-3.52312, "omega":0.38681, "ax":1.74726, "ay":-7.7924, "alpha":2.00815, "fx":[14.71413,9.88559,28.08841,36.07689], "fy":[-100.86849,-101.53681,-98.09295,-95.37381]}, + {"t":8.0729, "x":3.03405, "y":6.43532, "heading":-0.08706, "vx":-0.77012, "vy":-3.84178, "omega":0.46893, "ax":1.98519, "ay":-7.74835, "alpha":1.41873, "fx":[20.30263,16.29418,29.3674,34.88833], "fy":[-99.77486,-100.5821,-97.58999,-95.68743]}, + {"t":8.1138, "x":3.00422, "y":6.27173, "heading":-0.06789, "vx":-0.68893, "vy":-4.15864, "omega":0.52695, "ax":2.439, "ay":-7.62069, "alpha":0.27329, "fx":[30.18206,29.18989,31.74695,32.78808], "fy":[-97.03457,-97.35815,-96.56235,-96.19371]}, + {"t":8.15469, "x":2.97808, "y":6.09529, "heading":-0.04634, "vx":-0.58919, "vy":-4.47029, "omega":0.53813, "ax":3.57244, "ay":-7.00286, "alpha":-2.85236, "fx":[50.19573,63.99877,39.35028,27.94373], "fy":[-87.90592,-78.06678,-92.63699,-97.1518]}, + {"t":8.19558, "x":2.95698, "y":5.90663, "heading":-0.02433, "vx":-0.4431, "vy":-4.75666, "omega":0.42148, "ax":5.91877, "ay":-3.31362, "alpha":-9.36975, "fx":[78.55594,99.58708,92.18613,30.35825], "fy":[-62.20798,-4.02381,-7.88153,-94.22635]}, + {"t":8.23648, "x":2.94381, "y":5.70934, "heading":-0.0071, "vx":-0.20106, "vy":-4.89217, "omega":0.03831, "ax":7.42178, "ay":-0.29042, "alpha":-0.78654, "fx":[94.45288,94.71865,94.08839,93.78383], "fy":[-7.32711,0.17353,0.2448,-7.84534]}, + {"t":8.27737, "x":2.94179, "y":5.50903, "heading":-0.00553, "vx":0.10245, "vy":-4.90405, "omega":0.00615, "ax":6.60619, "ay":0.317, "alpha":-0.01148, "fx":[83.91458,83.91072,83.89037,83.89424], "fy":[3.97232,4.07519,4.07978,3.97682]}, + {"t":8.31827, "x":2.9515, "y":5.30875, "heading":-0.00528, "vx":0.37261, "vy":-4.89109, "omega":0.00568, "ax":4.25383, "ay":0.39983, "alpha":-0.00141, "fx":[54.02905,54.02868,54.02319,54.02356], "fy":[5.07307,5.08273,5.08318,5.07352]}, + {"t":8.35916, "x":2.9703, "y":5.10907, "heading":-0.00505, "vx":0.54656, "vy":-4.87473, "omega":0.00562, "ax":1.43292, "ay":0.1693, "alpha":-0.00031, "fx":[18.1998,18.19979,18.19817,18.19817], "fy":[2.14937,2.1511,2.15112,2.14939]}, + {"t":8.40006, "x":2.99385, "y":4.90986, "heading":-0.00482, "vx":0.60516, "vy":-4.86781, "omega":0.00561, "ax":0.36393, "ay":0.0458, "alpha":-0.00005, "fx":[4.62227,4.62227,4.62199,4.62199], "fy":[0.58153,0.58181,0.58181,0.58153]}, + {"t":8.44095, "x":3.0189, "y":4.71083, "heading":-0.00459, "vx":0.62004, "vy":-4.86594, "omega":0.00561, "ax":0.08979, "ay":0.01147, "alpha":-0.00001, "fx":[1.14041,1.1404,1.14036,1.14036], "fy":[0.14571,0.14576,0.14576,0.14571]}, + {"t":8.48184, "x":3.04433, "y":4.51185, "heading":-0.00436, "vx":0.62372, "vy":-4.86547, "omega":0.00561, "ax":0.02212, "ay":0.00284, "alpha":0.0, "fx":[0.28089,0.28089,0.28089,0.28089], "fy":[0.03603,0.03603,0.03603,0.03603]}, + {"t":8.52274, "x":3.06986, "y":4.31289, "heading":-0.00413, "vx":0.62462, "vy":-4.86535, "omega":0.00561, "ax":0.00545, "ay":0.0007, "alpha":0.0, "fx":[0.06918,0.06918,0.06919,0.06919], "fy":[0.00889,0.00888,0.00888,0.00889]}, + {"t":8.56363, "x":3.0954, "y":4.11392, "heading":-0.0039, "vx":0.62484, "vy":-4.86532, "omega":0.00561, "ax":0.00134, "ay":0.00017, "alpha":0.0, "fx":[0.01704,0.01704,0.01705,0.01705], "fy":[0.0022,0.00218,0.00218,0.0022]}, + {"t":8.60453, "x":3.12096, "y":3.91496, "heading":-0.00367, "vx":0.6249, "vy":-4.86532, "omega":0.00561, "ax":0.00033, "ay":0.00004, "alpha":0.0, "fx":[0.00419,0.00419,0.00421,0.00421], "fy":[0.00055,0.00054,0.00053,0.00055]}, + {"t":8.64542, "x":3.14651, "y":3.71599, "heading":-0.00344, "vx":0.62491, "vy":-4.86532, "omega":0.00561, "ax":0.00008, "ay":0.00001, "alpha":0.0, "fx":[0.00103,0.00103,0.00104,0.00104], "fy":[0.00014,0.00013,0.00013,0.00014]}, + {"t":8.68631, "x":3.17207, "y":3.51703, "heading":-0.00321, "vx":0.62491, "vy":-4.86531, "omega":0.00561, "ax":0.00002, "ay":0.0, "alpha":0.0, "fx":[0.00025,0.00025,0.00027,0.00027], "fy":[0.00004,0.00003,0.00003,0.00004]}, + {"t":8.72721, "x":3.19762, "y":3.31807, "heading":-0.00298, "vx":0.62492, "vy":-4.86531, "omega":0.00561, "ax":0.00001, "ay":0.0, "alpha":0.0, "fx":[0.00006,0.00006,0.00007,0.00007], "fy":[0.00002,0.0,0.0,0.00002]}, + {"t":8.7681, "x":3.22318, "y":3.1191, "heading":-0.00275, "vx":0.62492, "vy":-4.86531, "omega":0.00561, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.00001,0.00001,0.00003,0.00003], "fy":[0.00001,0.0,0.0,0.00001]}, + {"t":8.809, "x":3.24873, "y":2.92014, "heading":-0.00252, "vx":0.62492, "vy":-4.86531, "omega":0.00561, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.0,0.0,0.00002,0.00002], "fy":[0.00001,0.0,0.0,0.00001]}, + {"t":8.84989, "x":3.27429, "y":2.72118, "heading":-0.00229, "vx":0.62492, "vy":-4.86531, "omega":0.00561, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.0,0.0,0.00001,0.00001], "fy":[0.00001,0.0,0.0,0.00001]}, + {"t":8.89079, "x":3.29984, "y":2.52221, "heading":-0.00206, "vx":0.62492, "vy":-4.86531, "omega":0.00561, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.0,0.0,0.00001,0.00001], "fy":[0.00001,0.0,0.0,0.00001]}, + {"t":8.93168, "x":3.3254, "y":2.32325, "heading":-0.00183, "vx":0.62492, "vy":-4.86531, "omega":0.00561, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.0,0.0,0.00001,0.00001], "fy":[0.00001,0.0,0.0,0.00001]}, + {"t":8.97257, "x":3.35096, "y":2.12429, "heading":-0.00161, "vx":0.62492, "vy":-4.86531, "omega":0.00561, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.0,0.0,0.00001,0.00001], "fy":[0.00001,0.0,0.0,0.00001]}, + {"t":9.01347, "x":3.37651, "y":1.92532, "heading":-0.00138, "vx":0.62492, "vy":-4.86531, "omega":0.00561, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.0,0.0,0.00001,0.00001], "fy":[0.00001,0.0,0.0,0.00001]}, + {"t":9.05436, "x":3.40207, "y":1.72636, "heading":-0.00115, "vx":0.62492, "vy":-4.86531, "omega":0.00561, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.0,0.0,0.00002,0.00002], "fy":[0.00001,0.0,0.0,0.00001]}, + {"t":9.09526, "x":3.42762, "y":1.5274, "heading":-0.00092, "vx":0.62492, "vy":-4.86531, "omega":0.00561, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.00002,0.00002,0.00003,0.00003], "fy":[0.00001,0.0,0.0,0.00001]}, + {"t":9.13615, "x":3.45318, "y":1.32843, "heading":-0.00069, "vx":0.62492, "vy":-4.86531, "omega":0.00561, "ax":0.00001, "ay":0.0, "alpha":0.0, "fx":[0.00009,0.00009,0.00011,0.00011], "fy":[0.00002,0.00001,0.00001,0.00002]}, + {"t":9.17705, "x":3.47873, "y":1.12947, "heading":-0.00046, "vx":0.62492, "vy":-4.86531, "omega":0.00561, "ax":0.00002, "ay":0.00005, "alpha":0.00003, "fx":[0.00023,0.00023,0.0004,0.0004], "fy":[0.00071,0.00054,0.00054,0.00071]}, + {"t":9.21794, "x":3.50429, "y":0.93051, "heading":-0.00023, "vx":0.62492, "vy":-4.86531, "omega":0.00561, "ax":-0.01332, "ay":0.10468, "alpha":-0.13691, "fx":[0.19833,0.19846,-0.53661,-0.5369], "fy":[0.96194,1.69682,1.69695,0.96208]}, + {"t":9.25883, "x":3.52983, "y":0.73163, "heading":0.0, "vx":0.62437, "vy":-4.86103, "omega":0.00001, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.0,0.0,0.0,0.0], "fy":[0.0,0.0,0.0,0.0]}], + "splits":[0] + }, + "events":[] +} diff --git a/src/main/deploy/choreo/Variables.traj b/src/main/deploy/choreo/Variables.traj deleted file mode 100644 index 394e9be..0000000 --- a/src/main/deploy/choreo/Variables.traj +++ /dev/null @@ -1,85 +0,0 @@ -{ - "name":"Variables", - "version":3, - "snapshot":{ - "waypoints":[ - {"x":3.626924991607666, "y":7.494687557220459, "heading":0.0, "intervals":26, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":4.728980827331543, "y":6.560835838317871, "heading":-1.0436501196072978, "intervals":40, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}], - "constraints":[ - {"from":"first", "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, - {"from":"last", "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, - {"from":"first", "to":"last", "data":{"type":"KeepInRectangle", "props":{"x":0.0, "y":0.0, "w":17.548, "h":8.052}}, "enabled":false}], - "targetDt":0.05 - }, - "params":{ - "waypoints":[ - {"x":{"exp":"testStart.x", "val":3.626924991607666}, "y":{"exp":"testStart.y", "val":7.494687557220459}, "heading":{"exp":"testStart.heading", "val":0.0}, "intervals":26, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":{"exp":"testEnd.x", "val":4.728980827331543}, "y":{"exp":"testEnd.y", "val":6.560835838317871}, "heading":{"exp":"testEnd.heading", "val":-1.0436501196072978}, "intervals":40, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}], - "constraints":[ - {"from":"first", "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, - {"from":"last", "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, - {"from":"first", "to":"last", "data":{"type":"KeepInRectangle", "props":{"x":{"exp":"0 m", "val":0.0}, "y":{"exp":"0 m", "val":0.0}, "w":{"exp":"17.548 m", "val":17.548}, "h":{"exp":"8.052 m", "val":8.052}}}, "enabled":false}], - "targetDt":{ - "exp":"0.05 s", - "val":0.05 - } - }, - "trajectory":{ - "config":{ - "frontLeft":{ - "x":0.2794, - "y":0.2794 - }, - "backLeft":{ - "x":-0.2794, - "y":0.2794 - }, - "mass":50.80234544, - "inertia":6.0, - "gearing":6.5, - "radius":0.0508, - "vmax":628.3185307179587, - "tmax":0.8, - "cof":1.5, - "bumper":{ - "front":0.4445, - "side":0.4445, - "back":0.4445 - }, - "differentialTrackWidth":0.5588 - }, - "sampleType":"Swerve", - "waypoints":[0.0,0.86639], - "samples":[ - {"t":0.0, "x":3.62692, "y":7.49469, "heading":0.0, "vx":0.0, "vy":0.0, "omega":0.0, "ax":5.91199, "ay":-4.98714, "alpha":-5.23193, "fx":[76.35448,97.02263,81.58403,45.38183], "fy":[-68.03719,-32.25745,-61.45064,-91.61324]}, - {"t":0.03332, "x":3.63021, "y":7.49192, "heading":0.0, "vx":0.197, "vy":-0.16619, "omega":-0.17434, "ax":5.91088, "ay":-4.9873, "alpha":-5.23079, "fx":[76.34409,97.00733,81.55655,45.37885], "fy":[-68.03688,-32.27142,-61.45521,-91.60277]}, - {"t":0.06665, "x":3.64005, "y":7.48361, "heading":-0.00581, "vx":0.39397, "vy":-0.33238, "omega":-0.34865, "ax":5.91021, "ay":-4.98587, "alpha":-5.23503, "fx":[76.21506,96.96021,81.77703,45.30029], "fy":[-68.16721,-32.37568,-61.12366,-91.62711]}, - {"t":0.09997, "x":3.65646, "y":7.46977, "heading":-0.01743, "vx":0.59092, "vy":-0.49852, "omega":-0.52309, "ax":5.90979, "ay":-4.98281, "alpha":-5.2458, "fx":[75.96605,96.88026,82.23879,45.14585], "fy":[-68.42752,-32.57064,-60.45505,-91.68537]}, - {"t":0.13329, "x":3.67944, "y":7.45039, "heading":-0.03486, "vx":0.78785, "vy":-0.66456, "omega":-0.6979, "ax":5.90929, "ay":-4.97807, "alpha":-5.26526, "fx":[75.59457,96.76547,82.92958,44.91602], "fy":[-68.8168,-32.85806,-59.44687,-91.77567]}, - {"t":0.16661, "x":3.70897, "y":7.42548, "heading":-0.05811, "vx":0.98476, "vy":-0.83045, "omega":-0.87335, "ax":5.90822, "ay":-4.97153, "alpha":-5.29659, "fx":[75.09656,96.61274,83.83102,44.6113], "fy":[-69.33374,-33.24069,-58.09585,-91.89529]}, - {"t":0.19994, "x":3.74507, "y":7.39505, "heading":-0.08722, "vx":1.18164, "vy":-0.99611, "omega":-1.04985, "ax":5.90587, "ay":-4.96312, "alpha":-5.34397, "fx":[74.46586,96.41776,84.91775,44.23079], "fy":[-69.97694,-33.72154,-56.39891,-92.04089]}, - {"t":0.23326, "x":3.78772, "y":7.3591, "heading":-0.1222, "vx":1.37844, "vy":-1.1615, "omega":-1.22793, "ax":5.90117, "ay":-4.95273, "alpha":-5.41269, "fx":[73.69292,96.17475,86.15673,43.76892], "fy":[-70.74529,-34.3027,-54.35343,-92.20908]}, - {"t":0.26658, "x":3.83693, "y":7.31764, "heading":-0.16312, "vx":1.57509, "vy":-1.32654, "omega":-1.40829, "ax":5.89248, "ay":-4.94021, "alpha":-5.50959, "fx":[72.7619,95.87591,87.50639,43.20749], "fy":[-71.63874,-34.98263,-51.95497,-92.39777]}, - {"t":0.29991, "x":3.89269, "y":7.2707, "heading":-0.21005, "vx":1.77144, "vy":-1.49116, "omega":-1.59189, "ax":5.87694, "ay":-4.92508, "alpha":-5.64494, "fx":[71.64323,95.51025,88.91524,42.49365], "fy":[-72.66045,-35.74937,-49.186,-92.61002]}, - {"t":0.33323, "x":3.95498, "y":7.21827, "heading":-0.26309, "vx":1.96728, "vy":-1.65528, "omega":-1.77999, "ax":5.84838, "ay":-4.90566, "alpha":-5.83988, "fx":[70.26931,95.0598,90.31644,41.4657], "fy":[-73.82352,-36.5587,-45.97047,-92.86648]}, - {"t":0.36655, "x":4.02378, "y":7.16039, "heading":-0.32241, "vx":2.16216, "vy":-1.81875, "omega":-1.9746, "ax":5.78728, "ay":-4.87421, "alpha":-6.16404, "fx":[68.4245,94.48331,91.5944,39.50521], "fy":[-75.18133,-37.23528,-41.94585,-93.25884]}, - {"t":0.39987, "x":4.09905, "y":7.09708, "heading":-0.38821, "vx":2.35501, "vy":-1.98117, "omega":-2.18, "ax":5.55872, "ay":-4.76127, "alpha":-7.12829, "fx":[64.69136,93.54826,92.11643,32.03978], "fy":[-77.10031,-36.5203,-33.96267,-94.30047]}, - {"t":0.4332, "x":4.18061, "y":7.02842, "heading":-0.46085, "vx":2.54024, "vy":-2.13983, "omega":-2.41753, "ax":-5.98164, "ay":4.63619, "alpha":3.30191, "fx":[-70.67998,-86.8453,-84.89294,-61.46304], "fy":[68.48907,45.90072,46.01952,75.12022]}, - {"t":0.46652, "x":4.26193, "y":6.95969, "heading":-0.54141, "vx":2.34092, "vy":-1.98534, "omega":-2.30751, "ax":-5.91598, "ay":4.87079, "alpha":5.30797, "fx":[-66.35398,-91.07633,-92.97838,-50.13715], "fy":[76.70448,44.52396,38.66679,87.55257]}, - {"t":0.49984, "x":4.33666, "y":6.89623, "heading":-0.6183, "vx":2.14378, "vy":-1.82303, "omega":-2.13063, "ax":-5.88967, "ay":4.9052, "alpha":5.67495, "fx":[-64.31957,-90.90461,-94.98976,-48.99531], "fy":[78.93719,45.84389,35.54084,88.87359]}, - {"t":0.53317, "x":4.40482, "y":6.83821, "heading":-0.6893, "vx":1.94752, "vy":-1.65957, "omega":-1.94152, "ax":-5.87171, "ay":4.92606, "alpha":5.82748, "fx":[-62.64106,-90.33071,-96.06449,-49.26044], "fy":[80.47689,47.33466,33.44226,89.00144]}, - {"t":0.56649, "x":4.46646, "y":6.78564, "heading":-0.754, "vx":1.75186, "vy":-1.49542, "omega":-1.74733, "ax":-5.85871, "ay":4.94346, "alpha":5.89072, "fx":[-61.17323,-89.66208,-96.74096,-50.05981], "fy":[81.7044,48.7806,31.94984,88.70447]}, - {"t":0.59981, "x":4.52158, "y":6.73855, "heading":-0.81223, "vx":1.55663, "vy":-1.33069, "omega":-1.55104, "ax":-5.84959, "ay":4.95882, "alpha":5.90447, "fx":[-59.88053,-88.98524,-97.19238,-51.11477], "fy":[82.72195,50.1199,30.88128,88.19659]}, - {"t":0.63313, "x":4.57021, "y":6.69696, "heading":-0.86391, "vx":1.3617, "vy":-1.16545, "omega":-1.35428, "ax":-5.84358, "ay":4.9722, "alpha":5.88982, "fx":[-58.74821,-88.33892,-97.50191,-52.27835], "fy":[83.5743,51.32679,30.11938,87.57915]}, - {"t":0.66646, "x":4.61234, "y":6.66089, "heading":-0.90904, "vx":1.16698, "vy":-0.99976, "omega":-1.15802, "ax":-5.83991, "ay":4.98351, "alpha":5.86063, "fx":[-57.76703,-87.74535,-97.71779,-53.45092], "fy":[84.28761,52.38896,29.57851,86.9189]}, - {"t":0.69978, "x":4.64798, "y":6.63034, "heading":-0.94763, "vx":0.97238, "vy":-0.8337, "omega":-0.96273, "ax":-5.83786, "ay":4.99273, "alpha":5.82658, "fx":[-56.92957,-87.2191,-97.87093,-54.55746], "fy":[84.8799,53.30039,29.19369,86.26827]}, - {"t":0.7331, "x":4.67715, "y":6.60533, "heading":-0.97971, "vx":0.77784, "vy":-0.66733, "omega":-0.76857, "ax":-5.83678, "ay":4.99996, "alpha":5.79446, "fx":[-56.22939,-86.7705,-97.9823,-55.53986], "fy":[85.3646,54.05829,28.91523,85.67137]}, - {"t":0.76643, "x":4.69982, "y":6.58587, "heading":-1.00532, "vx":0.58334, "vy":-0.50071, "omega":-0.57548, "ax":-5.8361, "ay":5.00537, "alpha":5.76885, "fx":[-55.66095,-86.40709,-98.06654,-56.35315], "fy":[85.75197,54.66159,28.70543,85.16559]}, - {"t":0.79975, "x":4.71602, "y":6.57196, "heading":-1.0245, "vx":0.38887, "vy":-0.33392, "omega":-0.38324, "ax":-5.83539, "ay":5.00917, "alpha":5.75278, "fx":[-55.21973,-86.13444,-98.13397,-56.96322], "fy":[86.04978,55.10991,28.53622,84.78181]}, - {"t":0.83307, "x":4.72574, "y":6.56362, "heading":-1.03727, "vx":0.19442, "vy":-0.167, "omega":-0.19155, "ax":-5.8343, "ay":5.01154, "alpha":5.74817, "fx":[-54.90248,-85.95669,-98.19178,-57.34496], "fy":[86.26362,55.40305,28.38745,84.54409]}, - {"t":0.86639, "x":4.72898, "y":6.56084, "heading":-1.04365, "vx":0.0, "vy":0.0, "omega":0.0, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.0,0.0,0.0,0.0], "fy":[0.0,0.0,0.0,0.0]}], - "splits":[0] - }, - "events":[ - {"name":"Marker", "from":{"target":null, "targetTimestamp":null, "offset":{"exp":"1 s", "val":1.0}}, "event":{"type":"named", "data":{"name":"sdf"}}}] -} diff --git a/src/main/deploy/choreo/project.chor b/src/main/deploy/choreo/project.chor index e46cfea..98252df 100644 --- a/src/main/deploy/choreo/project.chor +++ b/src/main/deploy/choreo/project.chor @@ -5,31 +5,115 @@ "variables":{ "expressions":{}, "poses":{ - "testEnd":{ + "C_ClimbPose":{ "x":{ - "exp":"4.728980827331543 m", - "val":4.728980827331543 + "exp":"1.5210920572280884 m", + "val":1.5210920572280884 }, "y":{ - "exp":"6.560835838317871 m", - "val":6.560835838317871 + "exp":"3.7427988052368164 m", + "val":3.742798805236816 }, "heading":{ - "exp":"-1.0436501196072978 rad", - "val":-1.0436501196072978 + "exp":"ClimbPose.heading", + "val":0.0 + } + }, + "L_ClimbPose":{ + "x":{ + "exp":"1.52 m", + "val":1.52 + }, + "y":{ + "exp":"L_ClimbPose.y", + "val":4.25290060043335 + }, + "heading":{ + "exp":"L_ClimbPose.heading", + "val":0.0 + } + }, + "L_Start":{ + "x":{ + "exp":"3.529832363128662 m", + "val":3.529832363128662 + }, + "y":{ + "exp":"7.372243881225586 m", + "val":7.372243881225586 + }, + "heading":{ + "exp":"0 deg", + "val":0.0 + } + }, + "L_Sweep":{ + "x":{ + "exp":"7.316027641296387 m", + "val":7.316027641296387 + }, + "y":{ + "exp":"6.945596218109131 m", + "val":6.945596218109131 + }, + "heading":{ + "exp":"-0.7437551936929324 rad", + "val":-0.7437551936929324 + } + }, + "R_Climb_Pose":{ + "x":{ + "exp":"1.5222448110580444 m", + "val":1.5222448110580444 + }, + "y":{ + "exp":"3.237687349319458 m", + "val":3.237687349319458 + }, + "heading":{ + "exp":"0 deg", + "val":0.0 + } + }, + "R_Start":{ + "x":{ + "exp":"L_Start.x", + "val":3.529832363128662 + }, + "y":{ + "exp":"0.7316309809684753 m", + "val":0.7316309809684753 + }, + "heading":{ + "exp":"0 deg", + "val":0.0 + } + }, + "R_Sweep":{ + "x":{ + "exp":"L_Sweep.x", + "val":7.316027641296387 + }, + "y":{ + "exp":"1.1 m", + "val":1.1 + }, + "heading":{ + "exp":"0.75 rad", + "val":0.75 } }, - "testStart":{ + "StationIntake":{ "x":{ - "exp":"3.626924991607666 m", - "val":3.626924991607666 + "exp":"0.4722999036312103 m", + "val":0.4722999036312103 }, "y":{ - "exp":"7.494687557220459 m", - "val":7.494687557220459 + "exp":"0.6521719098091125 m", + "val":0.6521719098091125 }, "heading":{ - "exp":"testStart.heading", + "exp":"0 deg", "val":0.0 } } diff --git a/src/main/java/frc/robot/Autos.java b/src/main/java/frc/robot/Autos.java index ee80417..cb93f5f 100644 --- a/src/main/java/frc/robot/Autos.java +++ b/src/main/java/frc/robot/Autos.java @@ -37,14 +37,16 @@ public Autos(CommandSwerveDrivetrain drive, AutoFactory factory, RobotContainer this.m_drivebase = drive; // Define all autos - now with full flexibility - autos.put("AP_Simple", () -> auto("AP_Simple", POI.testStart, - defaultAlignRequest(POI.testEnd), - defaultAlignRequest(POI.testStart))); - - autos.put("AP_Multi", () -> auto("AP_Multi", POI.testStart, - defaultAlignRequest(POI.testEnd), - defaultAlignRequest(POI.testStart))); - + autos.put("AP_Simple", () -> auto("AP_Simple", ChoreoVars.Poses.L_Start, + defaultAlignRequest(ChoreoVars.Poses.L_Sweep), + defaultAlignRequest( ChoreoVars.Poses.R_Sweep), + defaultAlignRequest(ChoreoVars.Poses.R_Start), + defaultAlignRequest(ChoreoVars.Poses.C_ClimbPose) + )); + + autos.put("AP_Multi", () -> auto("AP_Multi", ChoreoVars.Poses.R_Start, + defaultAlignRequest(ChoreoVars.Poses.L_Sweep), + defaultAlignRequest(ChoreoVars.Poses.R_Start))); // Auto-register autos.forEach((name, sup) -> container.m_chooser.addRoutine(name, sup)); diff --git a/src/main/java/frc/robot/POI.java b/src/main/java/frc/robot/POI.java deleted file mode 100644 index fdcd98e..0000000 --- a/src/main/java/frc/robot/POI.java +++ /dev/null @@ -1,58 +0,0 @@ -package frc.robot; - -import choreo.auto.AutoFactory; -import choreo.auto.AutoRoutine; -import choreo.auto.AutoTrajectory; -import com.therekrab.autopilot.APConstraints; -import com.therekrab.autopilot.APTarget; -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.Commands; -import frc.robot.generated.ChoreoVars; -import frc.robot.subsystems.CommandSwerveDrivetrain; -import frc.robot.util.AllianceFlipUtil; -import frc.robot.util.AutoAlign; -import frc.robot.util.ChoreoVariables; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; -import java.util.function.BooleanSupplier; -import java.util.function.Supplier; - -public class POI { - - public final static Pose2d testStart = ChoreoVars.Poses.testStart; - public final static Pose2d testEnd = ChoreoVars.Poses.testEnd; - - - // ============= CHOREO POSE UTILITIES ============= - /** - * DEPRICATED! Creates a Pose2d from choreo variables - * Warning, this is not codegen - * - * @param poseName (from Choreo) - * @return a new {@code Pose2d} with the specified pose's coordinates and - * rotation - */ - public static Pose2d createChoreoVariablesPose(String poseName) { - Pose2d bluePose = new Pose2d( - ChoreoVariables.getPose(poseName).getX(), - ChoreoVariables.getPose(poseName).getY(), - ChoreoVariables.getPose(poseName).getRotation()); - - return AllianceFlipUtil.flipPose(bluePose); - } - - /** - * Creates a Pose2d from Choreo and flips it based on alliance - * - * @param poseName - * @return - */ - public static Pose2d flipChorPose(Pose2d poseName) { - return AllianceFlipUtil.flipPose(poseName); - } - -} diff --git a/src/main/java/frc/robot/generated/ChoreoTraj.java b/src/main/java/frc/robot/generated/ChoreoTraj.java index f2a5dec..6517d2a 100644 --- a/src/main/java/frc/robot/generated/ChoreoTraj.java +++ b/src/main/java/frc/robot/generated/ChoreoTraj.java @@ -24,12 +24,12 @@ public record ChoreoTraj( Pose2d initialPoseBlue, Pose2d endPoseBlue ) { - public static final ChoreoTraj Variables = new ChoreoTraj( - "Variables", + public static final ChoreoTraj Poses = new ChoreoTraj( + "Poses", OptionalInt.empty(), - 0.86639, - new Pose2d(3.627, 7.495, Rotation2d.fromRadians(0)), - new Pose2d(4.729, 6.561, Rotation2d.fromRadians(-1.044)) + 9.25883, + new Pose2d(0.45, 5.971, Rotation2d.fromRadians(0)), + new Pose2d(3.53, 0.732, Rotation2d.fromRadians(0)) ); public static final ChoreoTraj OP = new ChoreoTraj( "OP", @@ -58,7 +58,7 @@ public record ChoreoTraj( * This allows for trajectory data to be looked up with strings during runtime. */ public static final Map ALL_TRAJECTORIES = Map.ofEntries( - Map.entry("Variables", Variables), + Map.entry("Poses", Poses), Map.entry("OP", OP), Map.entry("resetOdometryStart", resetOdometryStart), Map.entry("Flex", Flex) diff --git a/src/main/java/frc/robot/generated/ChoreoVars.java b/src/main/java/frc/robot/generated/ChoreoVars.java index 39a0ed8..1751662 100644 --- a/src/main/java/frc/robot/generated/ChoreoVars.java +++ b/src/main/java/frc/robot/generated/ChoreoVars.java @@ -13,8 +13,14 @@ public final class ChoreoVars { public static final class Poses { - public static final Pose2d testEnd = new Pose2d(4.729, 6.561, Rotation2d.fromRadians(-1.044)); - public static final Pose2d testStart = new Pose2d(3.627, 7.495, Rotation2d.kZero); + public static final Pose2d C_ClimbPose = new Pose2d(1.521, 3.743, Rotation2d.kZero); + public static final Pose2d R_Climb_Pose = new Pose2d(1.522, 3.238, Rotation2d.kZero); + public static final Pose2d StationIntake = new Pose2d(0.472, 0.652, Rotation2d.kZero); + public static final Pose2d L_Sweep = new Pose2d(7.316, 6.946, Rotation2d.fromRadians(-0.744)); + public static final Pose2d R_Sweep = new Pose2d(7.316, 1.1, Rotation2d.fromRadians(0.75)); + public static final Pose2d L_ClimbPose = new Pose2d(1.52, 4.253, Rotation2d.kZero); + public static final Pose2d L_Start = new Pose2d(3.53, 7.372, Rotation2d.kZero); + public static final Pose2d R_Start = new Pose2d(3.53, 0.732, Rotation2d.kZero); private Poses() {} } From e3d7b00d43de1925e521c540b6a40e6ca0c91b6d Mon Sep 17 00:00:00 2001 From: theYoshiDM Date: Fri, 23 Jan 2026 16:28:28 -0800 Subject: [PATCH 6/6] Saving work --- src/main/deploy/choreo/Sweep_Auto.traj | 263 +++++++++++++++++++++++++ src/main/deploy/choreo/project.chor | 28 +++ src/main/java/frc/robot/Autos.java | 9 + 3 files changed, 300 insertions(+) create mode 100644 src/main/deploy/choreo/Sweep_Auto.traj diff --git a/src/main/deploy/choreo/Sweep_Auto.traj b/src/main/deploy/choreo/Sweep_Auto.traj new file mode 100644 index 0000000..a153f7f --- /dev/null +++ b/src/main/deploy/choreo/Sweep_Auto.traj @@ -0,0 +1,263 @@ +{ + "name":"Sweep_Auto", + "version":3, + "snapshot":{ + "waypoints":[ + {"x":3.529832363128662, "y":7.372243881225586, "heading":0.0, "intervals":21, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":5.678330421447754, "y":7.37, "heading":0.0, "intervals":34, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":7.316027641296387, "y":6.945596218109131, "heading":-3.1057193338320364, "intervals":27, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":8.293963432312012, "y":4.008297920227051, "heading":3.129920131184051, "intervals":27, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":7.316027641296387, "y":1.1, "heading":-3.0912305638128874, "intervals":34, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":5.678330421447754, "y":0.73, "heading":0.0, "intervals":21, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":3.529832363128662, "y":0.7316309809684753, "heading":0.0, "intervals":27, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":1.5210920572280884, "y":3.742798805236816, "heading":0.0, "intervals":36, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}], + "constraints":[ + {"from":"first", "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":"last", "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":"first", "to":"last", "data":{"type":"KeepInRectangle", "props":{"x":0.014191746711730955, "y":-0.07095873728394508, "w":16.539963245391846, "h":8.195216182619333}}, "enabled":true}], + "targetDt":0.05 + }, + "params":{ + "waypoints":[ + {"x":{"exp":"L_Start.x", "val":3.529832363128662}, "y":{"exp":"L_Start.y", "val":7.372243881225586}, "heading":{"exp":"L_Start.heading", "val":0.0}, "intervals":21, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"L_Trench.x", "val":5.678330421447754}, "y":{"exp":"L_Trench.y", "val":7.37}, "heading":{"exp":"L_Trench.heading", "val":0.0}, "intervals":34, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"L_Sweep.x", "val":7.316027641296387}, "y":{"exp":"L_Sweep.y", "val":6.945596218109131}, "heading":{"exp":"-3.1057193338320364 rad", "val":-3.1057193338320364}, "intervals":27, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"8.293963432312012 m", "val":8.293963432312012}, "y":{"exp":"4.008297920227051 m", "val":4.008297920227051}, "heading":{"exp":"3.129920131184051 rad", "val":3.129920131184051}, "intervals":27, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"R_Sweep.x", "val":7.316027641296387}, "y":{"exp":"R_Sweep.y", "val":1.1}, "heading":{"exp":"-3.0912305638128874 rad", "val":-3.0912305638128874}, "intervals":34, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"R_Trench.x", "val":5.678330421447754}, "y":{"exp":"R_Trench.y", "val":0.73}, "heading":{"exp":"R_Trench.heading", "val":0.0}, "intervals":21, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"R_Start.x", "val":3.529832363128662}, "y":{"exp":"R_Start.y", "val":0.7316309809684753}, "heading":{"exp":"R_Start.heading", "val":0.0}, "intervals":27, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"C_ClimbPose.x", "val":1.5210920572280884}, "y":{"exp":"C_ClimbPose.y", "val":3.742798805236816}, "heading":{"exp":"C_ClimbPose.heading", "val":0.0}, "intervals":25, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"4.621110916137695 m", "val":4.621110916137695}, "y":{"exp":"4.030117511749268 m", "val":4.030117511749268}, "heading":{"exp":"0 deg", "val":0.0}, "intervals":40, "split":false, "fixTranslation":true, "fixHeading":false, "overrideIntervals":false}], + "constraints":[ + {"from":"first", "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":"last", "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":"first", "to":"last", "data":{"type":"KeepInRectangle", "props":{"x":{"exp":"14.191746711730957 mm", "val":0.014191746711730955}, "y":{"exp":"-70.95873728394508 mm", "val":-0.07095873728394508}, "w":{"exp":"16.539963245391846 m", "val":16.539963245391846}, "h":{"exp":"8.195216182619333 m", "val":8.195216182619333}}}, "enabled":true}, + {"from":8, "to":8, "data":{"type":"PointAt", "props":{"x":{"exp":"4.621110916137695 m", "val":4.621110916137695}, "y":{"exp":"4.030117511749268 m", "val":4.030117511749268}, "tolerance":{"exp":"1 deg", "val":0.017453292519943295}, "flip":false}}, "enabled":true}], + "targetDt":{ + "exp":"0.05 s", + "val":0.05 + } + }, + "trajectory":{ + "config":{ + "frontLeft":{ + "x":0.2794, + "y":0.2794 + }, + "backLeft":{ + "x":-0.2794, + "y":0.2794 + }, + "mass":50.80234544, + "inertia":6.0, + "gearing":6.5, + "radius":0.0508, + "vmax":628.3185307179587, + "tmax":0.8, + "cof":1.5, + "bumper":{ + "front":0.4445, + "side":0.4445, + "back":0.4445 + }, + "differentialTrackWidth":0.5588 + }, + "sampleType":"Swerve", + "waypoints":[0.0,0.76902,1.37052,2.08995,2.82816,3.42561,3.91517,5.01297], + "samples":[ + {"t":0.0, "x":3.52983, "y":7.37224, "heading":0.0, "vx":0.0, "vy":0.0, "omega":0.0, "ax":7.97676, "ay":-0.43365, "alpha":2.37726, "fx":[101.92648,100.2229,101.01599,102.07262], "fy":[7.87342,-20.1698,-15.90104,6.16718]}, + {"t":0.03662, "x":3.53518, "y":7.37195, "heading":0.0, "vx":0.29211, "vy":-0.01588, "omega":0.08705, "ax":7.98024, "ay":-0.41502, "alpha":2.31631, "fx":[101.92596,100.34475,101.07608,102.06795], "fy":[7.76935,-19.51005,-15.46622,6.12296]}, + {"t":0.07324, "x":3.55123, "y":7.37109, "heading":0.00319, "vx":0.58434, "vy":-0.03108, "omega":0.17188, "ax":7.98406, "ay":-0.39387, "alpha":2.24653, "fx":[101.92839,100.47174,101.1483,102.06057], "fy":[7.60803,-18.79288,-14.92921,6.10463]}, + {"t":0.10986, "x":3.57798, "y":7.36969, "heading":0.00948, "vx":0.87672, "vy":-0.0455, "omega":0.25415, "ax":7.98827, "ay":-0.36961, "alpha":2.16591, "fx":[101.93317,100.60669,101.23236,102.05061], "fy":[7.39039,-17.99415,-14.2784,6.10532]}, + {"t":0.14648, "x":3.61544, "y":7.36778, "heading":0.01879, "vx":1.16925, "vy":-0.05904, "omega":0.33346, "ax":7.99291, "ay":-0.34144, "alpha":2.0718, "fx":[101.93955,100.75275,101.32784,102.03825], "fy":[7.11715,-17.08164,-13.49749,6.11589]}, + {"t":0.1831, "x":3.66362, "y":7.36539, "heading":0.031, "vx":1.46195, "vy":-0.07154, "omega":0.40933, "ax":7.99801, "ay":-0.30829, "alpha":1.96055, "fx":[101.94657,100.91321,101.43405,102.02369], "fy":[6.78913,-16.0119,-12.56321,6.12411]}, + {"t":0.21972, "x":3.72252, "y":7.36256, "heading":0.04599, "vx":1.75483, "vy":-0.08283, "omega":0.48112, "ax":8.00359, "ay":-0.26861, "alpha":1.82707, "fx":[101.95302,101.09109,101.54982,102.00719], "fy":[6.40759,-14.72515,-11.4415,6.1132]}, + {"t":0.25634, "x":3.79215, "y":7.35935, "heading":0.06361, "vx":2.04792, "vy":-0.09267, "omega":0.54803, "ax":8.00962, "ay":-0.22014, "alpha":1.66398, "fx":[101.9573,101.28809,101.6729,101.98904], "fy":[5.97467,-13.13688,-10.08078,6.05945]}, + {"t":0.29296, "x":3.87251, "y":7.35581, "heading":0.08368, "vx":2.34123, "vy":-0.10073, "omega":0.60897, "ax":8.01592, "ay":-0.15946, "alpha":1.46012, "fx":[101.95732,101.50222,101.79867,101.96949], "fy":[5.49403,-11.12333,-8.39944,5.92774]}, + {"t":0.32958, "x":3.96362, "y":7.35201, "heading":0.10598, "vx":2.63478, "vy":-0.10657, "omega":0.66244, "ax":8.02202, "ay":-0.08113, "alpha":1.19782, "fx":[101.95025,101.72199,101.91681,101.94852], "fy":[4.97164,-8.49532,-6.26095,5.66314]}, + {"t":0.3662, "x":4.06549, "y":7.34805, "heading":0.13024, "vx":2.92854, "vy":-0.10954, "omega":0.7063, "ax":8.02661, "ay":0.02406, "alpha":0.84715, "fx":[101.93207,101.91174,102.00194,101.92492], "fy":[4.41707,-4.94835,-3.41958,5.17294]}, + {"t":0.40282, "x":4.17811, "y":7.34406, "heading":0.1561, "vx":3.22247, "vy":-0.10866, "omega":0.73732, "ax":8.02611, "ay":0.17283, "alpha":0.35296, "fx":[101.89679,101.97133,101.98348,101.89348], "fy":[3.84528,0.03863,0.61198,4.28416]}, + {"t":0.43944, "x":4.3015, "y":7.34019, "heading":0.1831, "vx":3.51639, "vy":-0.10233, "omega":0.75025, "ax":8.00966, "ay":0.39893, "alpha":-0.39984, "fx":[101.83443,101.61406,101.62769,101.83341], "fy":[3.27966,7.42119,6.94008,2.62579]}, + {"t":0.47606, "x":4.43564, "y":7.33672, "heading":0.21058, "vx":3.8097, "vy":-0.08772, "omega":0.73561, "ax":7.93741, "ay":0.78078, "alpha":-1.70494, "fx":[101.7261,99.94987,99.91449,101.64881], "fy":[2.75737,19.07307,18.62113,-0.78611]}, + {"t":0.51268, "x":4.58047, "y":7.33403, "heading":0.23751, "vx":4.10037, "vy":-0.05913, "omega":0.67317, "ax":7.5941, "ay":1.53219, "alpha":-4.67048, "fx":[101.52853,93.89307,89.7245,100.65212], "fy":[2.33975,38.67478,46.56503,-9.74047]}, + {"t":0.5493, "x":4.73572, "y":7.33289, "heading":0.26216, "vx":4.37846, "vy":-0.00302, "omega":0.50214, "ax":5.1576, "ay":2.26266, "alpha":-15.57404, "fx":[101.10732,72.76094,8.32657,79.82317], "fy":[2.21129,70.41421,99.87803,-57.55518]}, + {"t":0.58592, "x":4.89952, "y":7.3343, "heading":0.28055, "vx":4.56733, "vy":0.07984, "omega":-0.06818, "ax":-0.83157, "ay":2.38215, "alpha":-24.10252, "fx":[99.78229,20.41296,-74.73223,-87.70859], "fy":[2.12884,99.04169,68.19328,-48.34482]}, + {"t":0.62254, "x":5.06621, "y":7.33882, "heading":0.27806, "vx":4.53688, "vy":0.16707, "omega":-0.95081, "ax":-4.57402, "ay":1.01241, "alpha":-17.25159, "fx":[-16.8995,-28.90633,-89.58114,-96.9839], "fy":[-64.21572,97.16343,48.08633,-29.60133]}, + {"t":0.65916, "x":5.22929, "y":7.34561, "heading":0.24324, "vx":4.36938, "vy":0.20415, "omega":-1.58256, "ax":-5.13799, "ay":0.34506, "alpha":-16.90288, "fx":[-39.96306,-33.28574,-91.79576,-95.97728], "fy":[-88.9167,96.02849,44.22755,-33.80948]}, + {"t":0.69578, "x":5.38585, "y":7.35332, "heading":0.18528, "vx":4.18123, "vy":0.21678, "omega":-2.20154, "ax":-4.95922, "ay":0.22327, "alpha":-17.92942, "fx":[-32.8205,-31.537,-91.89271,-95.68974], "fy":[-94.59329,96.76451,44.29238,-35.12094]}, + {"t":0.7324, "x":5.53564, "y":7.36141, "heading":0.10466, "vx":3.99962, "vy":0.22496, "omega":-2.85812, "ax":-5.62775, "ay":0.52687, "alpha":-15.80318, "fx":[-58.85273,-37.8422,-91.7698,-97.43842], "fy":[-82.21427,94.55399,44.70036,-30.27407]}, + {"t":0.76902, "x":5.67833, "y":7.37, "heading":0.0, "vx":3.79354, "vy":0.24425, "omega":-3.43683, "ax":-6.59186, "ay":1.09029, "alpha":-11.52418, "fx":[-86.04743,-57.19282,-91.86984,-99.77168], "fy":[-52.12688,83.48623,43.74631,-19.71634]}, + {"t":0.78671, "x":5.74441, "y":7.37449, "heading":-0.0608, "vx":3.67692, "vy":0.26354, "omega":-3.64071, "ax":-6.7008, "ay":1.05258, "alpha":-11.08006, "fx":[-86.35502,-62.11842,-91.88008,-100.06294], "fy":[-51.81291,79.67853,43.59534,-17.98763]}, + {"t":0.8044, "x":5.80841, "y":7.37932, "heading":-0.12521, "vx":3.55837, "vy":0.28216, "omega":-3.83673, "ax":-6.71027, "ay":0.9925, "alpha":-11.08118, "fx":[-84.76716,-64.44693,-91.48134,-100.20195], "fy":[-54.42568,77.52392,44.27932,-16.95622]}, + {"t":0.82209, "x":5.87032, "y":7.38447, "heading":-0.19309, "vx":3.43966, "vy":0.29972, "omega":-4.03277, "ax":-6.67574, "ay":0.9246, "alpha":-11.25066, "fx":[-82.27242,-65.7505,-90.85705,-100.26313], "fy":[-58.12955,76.02273,45.37525,-16.29676]}, + {"t":0.83978, "x":5.93012, "y":7.38991, "heading":-0.26443, "vx":3.32155, "vy":0.31608, "omega":-4.23181, "ax":-6.59877, "ay":0.85205, "alpha":-11.55567, "fx":[-78.84949,-66.13496,-89.99387,-100.2547], "fy":[-62.66818,75.08803,46.85972,-15.99341]}, + {"t":0.85747, "x":5.98785, "y":7.39564, "heading":-0.3393, "vx":3.20481, "vy":0.33115, "omega":-4.43624, "ax":-6.47363, "ay":0.77661, "alpha":-11.9793, "fx":[-74.38749,-65.46403,-88.85395,-100.17032], "fy":[-67.8671,74.67306,48.73695,-16.08944]}, + {"t":0.87517, "x":6.04354, "y":7.40162, "heading":-0.41778, "vx":3.09029, "vy":0.34489, "omega":-4.64817, "ax":-6.28978, "ay":0.69596, "alpha":-12.49939, "fx":[-68.83167,-63.31064,-87.40509,-99.98811], "fy":[-73.45865,74.52652,50.97338,-16.6851]}, + {"t":0.89286, "x":6.09722, "y":7.40783, "heading":-0.50002, "vx":2.97901, "vy":0.35721, "omega":-4.8693, "ax":-6.02731, "ay":0.57214, "alpha":-13.07921, "fx":[-62.37602,-58.45995,-85.70724,-99.65822], "fy":[-78.98514,72.66722,53.35574,-17.97164]}, + {"t":0.91055, "x":6.14898, "y":7.41424, "heading":-0.58616, "vx":2.87238, "vy":0.36733, "omega":-5.10069, "ax":-5.39848, "ay":-1.32791, "alpha":-13.47817, "fx":[-56.26883,-34.35827,-84.56147,-99.06679], "fy":[-83.42574,-18.24363,54.52786,-20.31967]}, + {"t":0.92824, "x":6.19896, "y":7.42053, "heading":-0.6764, "vx":2.77687, "vy":0.34384, "omega":-5.33914, "ax":-4.94238, "ay":-3.05277, "alpha":-14.07974, "fx":[-55.10196,-9.42125,-88.73341,-97.82802], "fy":[-84.15276,-92.29677,46.21537,-24.85393]}, + {"t":0.94593, "x":6.24731, "y":7.42613, "heading":-0.77086, "vx":2.68944, "vy":0.28983, "omega":-5.58823, "ax":-4.60566, "ay":-3.68081, "alpha":-14.34212, "fx":[-49.67624,4.75431,-94.06699,-94.98951], "fy":[-87.42796,-97.08243,30.91454,-33.39815]}, + {"t":0.96362, "x":6.29417, "y":7.43069, "heading":-0.86972, "vx":2.60796, "vy":0.22471, "omega":-5.84196, "ax":-3.93034, "ay":-4.63284, "alpha":-13.48778, "fx":[-38.0775,23.81858,-96.56445,-88.84697], "fy":[-93.09992,-96.04039,0.55357,-46.7725]}, + {"t":0.98131, "x":6.33969, "y":7.43394, "heading":-0.97307, "vx":2.53842, "vy":0.14275, "omega":-6.08058, "ax":-2.0454, "ay":-6.63086, "alpha":-8.57478, "fx":[-23.24556,38.35802,-42.40792,-76.61567], "fy":[-97.98838,-92.31711,-82.07532,-64.48251]}, + {"t":0.999, "x":6.38428, "y":7.43542, "heading":-1.08065, "vx":2.50224, "vy":0.02544, "omega":-6.23228, "ax":-0.87817, "ay":-7.49449, "alpha":-5.36311, "fx":[-17.3539,24.22619,-0.10413,-51.38135], "fy":[-99.17545,-97.32863,-98.40628,-85.82709]}, + {"t":1.0167, "x":6.42841, "y":7.4347, "heading":-1.1909, "vx":2.4867, "vy":-0.10715, "omega":-6.32716, "ax":-0.08846, "ay":-7.81564, "alpha":-2.8414, "fx":[-7.96284,16.55874,8.73052,-21.82049], "fy":[-100.4064,-99.20298,-99.56794,-97.87566]}, + {"t":1.03439, "x":6.47239, "y":7.43158, "heading":-1.30284, "vx":2.48514, "vy":-0.24542, "omega":-6.37743, "ax":0.5117, "ay":-7.90396, "alpha":-0.97403, "fx":[2.75168,12.31377,10.72341,0.20667], "fy":[-100.78402,-100.03783,-100.05325,-100.66473]}, + {"t":1.05208, "x":6.51643, "y":7.426, "heading":-1.41566, "vx":2.49419, "vy":-0.38525, "omega":-6.39466, "ax":0.92614, "ay":-7.89657, "alpha":0.21662, "fx":[12.86832,10.56562,10.68226,12.93382], "fy":[-100.14544,-100.41574,-100.43458,-100.16835]}, + {"t":1.06977, "x":6.56071, "y":7.41795, "heading":-1.52879, "vx":2.51057, "vy":-0.52495, "omega":-6.39083, "ax":1.18162, "ay":-7.86753, "alpha":1.00656, "fx":[21.05786,10.05164,9.48214,19.4373], "fy":[-98.91362,-100.61408,-100.79419,-99.36724]}, + {"t":1.08746, "x":6.60531, "y":7.40743, "heading":-1.64186, "vx":2.53148, "vy":-0.66414, "omega":-6.37302, "ax":1.09305, "ay":-7.84499, "alpha":2.26871, "fx":[28.98478,3.44639,1.18401,21.9141], "fy":[-96.98926,-101.09765,-101.40451,-99.05235]}, + {"t":1.10515, "x":6.65026, "y":7.39446, "heading":-1.7546, "vx":2.55081, "vy":-0.80293, "omega":-6.33288, "ax":0.64508, "ay":-7.74213, "alpha":4.44365, "fx":[39.57689,-12.76441,-14.99242,20.9513], "fy":[-93.21637,-100.24609,-100.43268,-99.42307]}, + {"t":1.12284, "x":6.69549, "y":7.37904, "heading":-1.86664, "vx":2.56223, "vy":-0.9399, "omega":-6.25427, "ax":0.12838, "ay":-7.5106, "alpha":6.66498, "fx":[49.83613,-30.73316,-30.2793,17.69859], "fy":[-88.24815,-96.09986,-97.03382,-100.17432]}, + {"t":1.14054, "x":6.74084, "y":7.36124, "heading":-1.97729, "vx":2.5645, "vy":-1.07277, "omega":-6.13636, "ax":-0.40683, "ay":-7.1862, "alpha":8.62841, "fx":[57.54217,-47.96173,-43.34496,13.09682], "fy":[-83.5604,-88.51536,-92.03047,-100.96956]}, + {"t":1.15823, "x":6.78615, "y":7.34113, "heading":-2.08585, "vx":2.5573, "vy":-1.1999, "omega":-5.98371, "ax":-0.92769, "ay":-6.81537, "alpha":10.21788, "fx":[62.18388,-62.93773,-54.17887,7.80372], "fy":[-80.31259,-78.17028,-86.16946,-101.58448]}, + {"t":1.17592, "x":6.83124, "y":7.31884, "heading":-2.19171, "vx":2.54089, "vy":-1.32048, "omega":-5.80294, "ax":-1.34886, "ay":-6.4914, "alpha":11.21699, "fx":[64.0941,-72.58173,-62.53372,2.49591], "fy":[-78.93406,-68.57378,-80.36574,-101.90501]}, + {"t":1.19361, "x":6.87598, "y":7.29446, "heading":-2.29437, "vx":2.51703, "vy":-1.43532, "omega":-5.6045, "ax":-1.57496, "ay":-6.36047, "alpha":11.2993, "fx":[63.96283,-72.97787,-68.59124,-2.40529], "fy":[-79.15736,-66.72393,-75.29886,-101.94651]}, + {"t":1.2113, "x":6.92027, "y":7.26807, "heading":-2.39352, "vx":2.48916, "vy":-1.54784, "omega":-5.4046, "ax":-1.69525, "ay":-6.30861, "alpha":11.06447, "fx":[62.91375,-67.00743,-74.39908,-7.63016], "fy":[-80.08801,-69.08052,-69.601,-101.72264]}, + {"t":1.22899, "x":6.96404, "y":7.2397, "heading":-2.48914, "vx":2.45917, "vy":-1.65945, "omega":-5.20885, "ax":-0.51751, "ay":-6.31263, "alpha":11.25699, "fx":[61.23336,5.99231,-80.21004,-13.3066], "fy":[-81.45572,-75.22115,-62.85308,-101.16638]}, + {"t":1.24668, "x":7.00746, "y":7.20936, "heading":-2.58129, "vx":2.45002, "vy":-1.77113, "omega":-5.0097, "ax":0.93138, "ay":-5.66427, "alpha":14.58711, "fx":[57.9392,87.85663,-81.7675,-16.71213], "fy":[-83.89041,-42.37769,-60.81197,-100.67827]}, + {"t":1.26438, "x":7.05095, "y":7.17714, "heading":-2.66992, "vx":2.46649, "vy":-1.87134, "omega":-4.75163, "ax":0.78726, "ay":-5.93692, "alpha":14.04005, "fx":[54.08254,85.26427,-80.70468,-18.64732], "fy":[-86.47336,-52.59223,-62.19345,-100.3504]}, + {"t":1.28207, "x":7.09471, "y":7.1431, "heading":-2.75398, "vx":2.48042, "vy":-1.97637, "omega":-4.50325, "ax":0.66483, "ay":-6.07845, "alpha":13.83027, "fx":[50.53013,83.53074,-79.63766,-20.64834], "fy":[-88.63311,-56.66159,-63.53512,-99.96972]}, + {"t":1.29976, "x":7.1387, "y":7.10719, "heading":-2.83365, "vx":2.49218, "vy":-2.08391, "omega":-4.25857, "ax":0.53986, "ay":-5.91092, "alpha":14.72207, "fx":[47.72271,87.13546,-82.65821,-24.77362], "fy":[-90.20725,-51.48188,-59.55595,-99.04344]}, + {"t":1.31745, "x":7.18287, "y":7.06939, "heading":-2.90899, "vx":2.50173, "vy":-2.18848, "omega":-3.99812, "ax":0.37397, "ay":-5.59431, "alpha":16.07577, "fx":[45.11647,91.68924,-87.71782,-30.08949], "fy":[-91.56579,-43.22772,-51.8343,-97.5763]}, + {"t":1.33514, "x":7.22719, "y":7.0298, "heading":-2.97972, "vx":2.50835, "vy":-2.28745, "omega":-3.71371, "ax":0.18429, "ay":-5.28891, "alpha":17.26282, "fx":[42.38667,94.61082,-92.26982,-35.36541], "fy":[-92.88426,-36.76043,-43.23903,-95.80544]}, + {"t":1.35283, "x":7.27159, "y":6.98851, "heading":-3.04542, "vx":2.51161, "vy":-2.38102, "omega":-3.40831, "ax":-0.00747, "ay":-5.01852, "alpha":18.222, "fx":[39.57445,96.27574,-95.89672,-40.33298], "fy":[-94.13678,-32.49332,-34.48648,-93.83614]}, + {"t":1.37052, "x":7.31603, "y":6.9456, "heading":-3.10572, "vx":2.51148, "vy":-2.4698, "omega":-3.08594, "ax":-0.26241, "ay":-5.36041, "alpha":17.1289, "fx":[34.20102,90.64507,-95.14647,-43.03077], "fy":[-96.2984,-46.48018,-36.84061,-92.70235]}, + {"t":1.39717, "x":7.38285, "y":6.87788, "heading":3.09524, "vx":2.50449, "vy":-2.61263, "omega":-2.62953, "ax":-0.5238, "ay":-5.39997, "alpha":16.95963, "fx":[29.25716,87.55625,-96.23269,-47.19104], "fy":[-97.89942,-52.07161,-33.72495,-90.63519]}, + {"t":1.42381, "x":7.4494, "y":6.80635, "heading":3.02517, "vx":2.49053, "vy":-2.75652, "omega":-2.17763, "ax":-0.76341, "ay":-5.44441, "alpha":16.71393, "fx":[24.65408,84.23237,-96.90333,-50.7662], "fy":[-99.14042,-57.2638,-31.52692,-88.65751]}, + {"t":1.45046, "x":7.51549, "y":6.73097, "heading":2.96715, "vx":2.47019, "vy":-2.90159, "omega":-1.73228, "ax":-0.98666, "ay":-5.5012, "alpha":16.38079, "fx":[20.33208,80.56614,-97.20842,-53.81459], "fy":[-100.0927,-62.2578,-30.31306,-86.81033]}, + {"t":1.47711, "x":7.58096, "y":6.6517, "heading":2.92099, "vx":2.4439, "vy":-3.04817, "omega":-1.29581, "ax":-1.20289, "ay":-5.57792, "alpha":15.93749, "fx":[16.17175,76.30445,-97.17674,-56.40907], "fy":[-100.81775,-67.32338,-30.12165,-85.10849]}, + {"t":1.50375, "x":7.64565, "y":6.5685, "heading":2.88647, "vx":2.41185, "vy":-3.19679, "omega":-0.87115, "ax":-1.42884, "ay":-5.68317, "alpha":15.33775, "fx":[11.95605,70.90924,-96.80977,-58.6438], "fy":[-101.36273,-72.85477,-30.96702,-83.53379]}, + {"t":1.5304, "x":7.70941, "y":6.48131, "heading":2.86325, "vx":2.37377, "vy":-3.34823, "omega":-0.46247, "ax":-1.69721, "ay":-5.82757, "alpha":14.48533, "fx":[7.28551,63.21878,-96.07455,-60.65219], "fy":[-101.74686,-79.43581,-32.85289,-82.01855]}, + {"t":1.55704, "x":7.77206, "y":6.39002, "heading":2.85093, "vx":2.32855, "vy":-3.5035, "omega":-0.0765, "ax":-2.0788, "ay":-6.0211, "alpha":13.17289, "fx":[1.37183,50.56058,-94.89041,-62.65004], "fy":[-101.9111,-87.77239,-35.79852,-80.40412]}, + {"t":1.58369, "x":7.83336, "y":6.29453, "heading":2.84889, "vx":2.27316, "vy":-3.66394, "omega":0.2745, "ax":-2.73652, "ay":-6.24095, "alpha":10.96893, "fx":[-7.52595,26.65197,-93.10175,-65.0458], "fy":[-101.49971,-97.35664,-39.87495,-78.3236]}, + {"t":1.61033, "x":7.89296, "y":6.19469, "heading":2.85621, "vx":2.20024, "vy":-3.83023, "omega":0.56677, "ax":-3.9567, "ay":-6.25272, "alpha":7.36259, "fx":[-23.82809,-18.0027,-90.41934,-68.75974], "fy":[-98.68275,-98.9152,-45.25128,-74.80353]}, + {"t":1.63698, "x":7.95018, "y":6.09041, "heading":2.87131, "vx":2.09482, "vy":-3.99684, "omega":0.76295, "ax":-5.69421, "ay":-5.41199, "alpha":2.84704, "fx":[-58.45972,-68.27503,-86.27206,-76.27222], "fy":[-82.38117,-73.81777,-52.2806,-66.46243]}, + {"t":1.66362, "x":8.00398, "y":5.98199, "heading":2.89164, "vx":1.94309, "vy":-4.14104, "omega":0.83881, "ax":-6.86675, "ay":-3.89578, "alpha":-1.36852, "fx":[-92.02754,-87.49816,-81.94975,-87.37154], "fy":[-40.50465,-49.84922,-58.2453,-49.31571]}, + {"t":1.69027, "x":8.05332, "y":5.87027, "heading":2.91399, "vx":1.76012, "vy":-4.24485, "omega":0.80234, "ax":-6.95846, "ay":-3.62084, "alpha":-1.83075, "fx":[-94.22187,-88.59555,-81.64462,-89.04422], "fy":[-33.92333,-47.16595,-57.90867,-44.94943]}, + {"t":1.71691, "x":8.09775, "y":5.75588, "heading":2.93537, "vx":1.57471, "vy":-4.34133, "omega":0.75356, "ax":-7.0094, "ay":-3.38881, "alpha":-2.0779, "fx":[-95.12232,-89.1452,-81.72661,-90.09965], "fy":[-29.45723,-45.02732,-56.70116,-40.97388]}, + {"t":1.74356, "x":8.13722, "y":5.639, "heading":2.95545, "vx":1.38794, "vy":-4.43162, "omega":0.6982, "ax":-7.04718, "ay":-3.12108, "alpha":-2.25949, "fx":[-95.51814,-89.55346,-82.05517,-90.88646], "fy":[-25.11655,-42.52518,-54.57784,-36.33867]}, + {"t":1.77021, "x":8.1717, "y":5.51981, "heading":2.97405, "vx":1.20017, "vy":-4.51478, "omega":0.63799, "ax":-7.06138, "ay":-2.80422, "alpha":-2.33973, "fx":[-95.24762,-89.72866,-82.63283,-91.12534], "fy":[-20.97016,-39.3903,-51.05658,-31.04371]}, + {"t":1.79685, "x":8.20117, "y":5.39852, "heading":2.99105, "vx":1.01202, "vy":-4.5895, "omega":0.57565, "ax":-7.02878, "ay":-2.41928, "alpha":-2.25487, "fx":[-93.98579,-89.42363,-83.30019,-90.36909], "fy":[-17.12715,-35.18594,-45.38053,-25.21146]}, + {"t":1.8235, "x":8.22564, "y":5.27537, "heading":3.00639, "vx":0.82473, "vy":-4.65397, "omega":0.51557, "ax":-6.89722, "ay":-1.93924, "alpha":-1.90475, "fx":[-91.06074,-88.00053,-83.4067,-87.92707], "fy":[-13.70464,-29.18044,-36.50358,-19.12929]}, + {"t":1.85014, "x":8.24517, "y":5.15067, "heading":3.02012, "vx":0.64095, "vy":-4.70564, "omega":0.46481, "ax":-6.55032, "ay":-1.33655, "alpha":-1.16362, "fx":[-85.04563,-83.82152,-81.16156,-82.74294], "fy":[-10.76855,-20.29494,-23.57933,-13.2569]}, + {"t":1.87679, "x":8.25992, "y":5.02482, "heading":3.03251, "vx":0.46642, "vy":-4.74125, "omega":0.43381, "ax":-5.77142, "ay":-0.62445, "alpha":0.01486, "fx":[-73.27809,-73.28262,-73.3227,-73.31819], "fy":[-8.00109,-7.88247,-7.86064,-7.97913]}, + {"t":1.90343, "x":8.2703, "y":4.89826, "heading":3.04407, "vx":0.31263, "vy":-4.75789, "omega":0.4342, "ax":-4.38042, "ay":0.03931, "alpha":1.28227, "fx":[-53.4838,-52.96117,-57.79804,-58.29278], "fy":[-4.51501,4.68524,5.19351,-3.36647]}, + {"t":1.93008, "x":8.27707, "y":4.7715, "heading":3.05564, "vx":0.19592, "vy":-4.75684, "omega":0.46837, "ax":-2.69858, "ay":0.3443, "alpha":1.76285, "fx":[-30.60094,-29.58352,-37.97117,-38.93844], "fy":[-1.35519,9.46744,9.77385,-0.39492]}, + {"t":1.95672, "x":8.28134, "y":4.64487, "heading":3.06812, "vx":0.12401, "vy":-4.74767, "omega":0.51534, "ax":-1.31122, "ay":0.20524, "alpha":1.08554, "fx":[-14.05668,-13.59134,-19.2502,-19.71458], "fy":[-0.5996,5.42228,5.75708,-0.15287]}, + {"t":1.98337, "x":8.28418, "y":4.51844, "heading":3.08185, "vx":0.08907, "vy":-4.7422, "omega":0.54427, "ax":-0.33396, "ay":-0.23598, "alpha":-0.48563, "fx":[-5.46835,-5.61523,-3.01686,-2.86547], "fy":[-1.61498,-4.21693,-4.38168,-1.77467]}, + {"t":2.01001, "x":8.28643, "y":4.392, "heading":3.09635, "vx":0.08017, "vy":-4.74849, "omega":0.53133, "ax":0.31495, "ay":-0.9437, "alpha":-2.96194, "fx":[-3.74334,-4.33074,11.46366,12.61052], "fy":[-3.79555,-19.60474,-20.06285,-4.47888]}, + {"t":2.03666, "x":8.28868, "y":4.26514, "heading":3.11051, "vx":0.08857, "vy":-4.77363, "omega":0.4524, "ax":0.52157, "ay":-1.97719, "alpha":-6.61769, "fx":[-12.64473,-11.66525,22.85378,27.953], "fy":[-8.007,-42.14219,-41.54649,-8.75023]}, + {"t":2.0633, "x":8.29122, "y":4.13724, "heading":3.12256, "vx":0.10246, "vy":-4.82632, "omega":0.27607, "ax":0.02853, "ay":-0.97352, "alpha":-17.40153, "fx":[-51.55439,-43.01124,42.001,54.01401], "fy":[34.63913,-57.56252,-58.68736,32.15388]}, + {"t":2.08995, "x":8.29396, "y":4.0083, "heading":3.12992, "vx":0.10322, "vy":-4.85226, "omega":-0.1876, "ax":-0.70743, "ay":1.02673, "alpha":-3.60253, "fx":[-18.1963,-19.27503,0.66773,0.86429], "fy":[22.38542,3.50741,3.39567,22.87191]}, + {"t":2.11729, "x":8.29652, "y":3.87602, "heading":3.12479, "vx":0.08388, "vy":-4.82418, "omega":-0.2861, "ax":-1.02138, "ay":0.76405, "alpha":-2.6433, "fx":[-19.64873,-20.37708,-6.13599,-5.7265], "fy":[16.68386,2.63222,2.4792,17.02004]}, + {"t":2.14463, "x":8.29843, "y":3.7444, "heading":3.11697, "vx":0.05596, "vy":-4.80329, "omega":-0.35837, "ax":-1.51917, "ay":1.03345, "alpha":-3.53145, "fx":[-27.74713,-29.403,-10.52185,-9.50521], "fy":[22.28117,3.57334,3.33253,23.31478]}, + {"t":2.17197, "x":8.2994, "y":3.61346, "heading":3.10717, "vx":0.01442, "vy":-4.77504, "omega":-0.45492, "ax":-2.21785, "ay":1.54661, "alpha":-5.19152, "fx":[-39.30782,-43.64813,-16.34751,-13.36836], "fy":[32.41714,5.21343,4.9854,35.95541]}, + {"t":2.19932, "x":8.29896, "y":3.48348, "heading":3.09473, "vx":-0.04622, "vy":-4.73275, "omega":-0.59686, "ax":-3.06004, "ay":1.98118, "alpha":-6.46618, "fx":[-50.60031,-58.39631,-26.90879,-19.5517], "fy":[40.37507,6.20832,6.05845,48.00692]}, + {"t":2.22666, "x":8.29655, "y":3.35482, "heading":3.07841, "vx":-0.12988, "vy":-4.67858, "omega":-0.77366, "ax":-4.0931, "ay":2.12145, "alpha":-6.58261, "fx":[-61.07523,-70.52403,-44.72852,-31.61136], "fy":[42.75635,5.95105,5.13131,53.9358]}, + {"t":2.254, "x":8.29147, "y":3.2277, "heading":3.05726, "vx":-0.24179, "vy":-4.62058, "omega":-0.95363, "ax":-5.29641, "ay":1.90845, "alpha":-5.28522, "fx":[-71.65287,-79.62657,-65.50431,-52.28641], "fy":[38.71922,5.34219,3.45005,49.44216]}, + {"t":2.28134, "x":8.28288, "y":3.10208, "heading":3.03119, "vx":-0.3866, "vy":-4.5684, "omega":-1.09814, "ax":-6.38074, "ay":1.45282, "alpha":-2.88803, "fx":[-81.80829,-86.08647,-81.11929,-75.14233], "fy":[28.7412,6.64177,5.27839,33.14522]}, + {"t":2.30868, "x":8.26993, "y":2.97772, "heading":3.00116, "vx":-0.56106, "vy":-4.52868, "omega":-1.1771, "ax":-7.05987, "ay":1.06747, "alpha":-0.47048, "fx":[-89.61007,-90.26337,-89.73425,-89.05013], "fy":[15.75685,11.39663,11.26094,15.8156]}, + {"t":2.33602, "x":8.25195, "y":2.8543, "heading":2.96898, "vx":-0.75409, "vy":-4.49949, "omega":-1.18996, "ax":-7.38779, "ay":0.99467, "alpha":1.33767, "fx":[-94.28722,-92.39016,-93.45774,-95.18203], "fy":[5.29984,19.31996,19.11593,6.79574]}, + {"t":2.36336, "x":8.22857, "y":2.73165, "heading":2.93644, "vx":-0.95608, "vy":-4.4723, "omega":-1.15339, "ax":-7.53222, "ay":1.25696, "alpha":2.16185, "fx":[-97.06576,-93.12944,-94.55938,-97.89994], "fy":[3.50084,27.38419,26.14746,6.82412]}, + {"t":2.3907, "x":8.19961, "y":2.60984, "heading":2.90491, "vx":-1.16202, "vy":-4.43793, "omega":-1.09428, "ax":-7.57716, "ay":1.58357, "alpha":2.38161, "fx":[-98.50812,-92.99304,-94.46475,-98.97156], "fy":[6.29056,32.9986,31.12956,10.03046]}, + {"t":2.41805, "x":8.16501, "y":2.48909, "heading":2.87499, "vx":-1.36919, "vy":-4.39463, "omega":-1.02917, "ax":-7.55604, "ay":1.94689, "alpha":2.47421, "fx":[-99.08159,-91.96426,-93.58764,-99.23129], "fy":[10.54234,38.31907,35.88278,14.16244]}, + {"t":2.44539, "x":8.12475, "y":2.36966, "heading":2.84685, "vx":-1.57578, "vy":-4.3414, "omega":-0.96152, "ax":-7.11289, "ay":3.01484, "alpha":4.15911, "fx":[-98.58581,-78.25362,-85.96085,-98.55104], "fy":[16.75689,62.4984,52.73069,21.17514]}, + {"t":2.47273, "x":8.07901, "y":2.25209, "heading":2.82056, "vx":-1.77025, "vy":-4.25897, "omega":-0.8478, "ax":-5.35285, "ay":4.75016, "alpha":8.52027, "fx":[-94.39282,-17.90027,-63.48624,-96.15788], "fy":[31.01753,99.31216,79.14747,31.84227]}, + {"t":2.50007, "x":8.02861, "y":2.13742, "heading":2.79738, "vx":-1.91661, "vy":-4.1291, "omega":-0.61485, "ax":-4.25885, "ay":5.49401, "alpha":9.31338, "fx":[-83.53294,12.1059,-50.84145,-94.09122], "fy":[52.00765,100.7205,88.14093,38.23959]}, + {"t":2.52741, "x":7.97461, "y":2.02658, "heading":2.78057, "vx":-2.03305, "vy":-3.97889, "omega":-0.36021, "ax":-3.29097, "ay":6.13934, "alpha":9.04111, "fx":[-56.79125,25.68866,-43.57567,-92.51084], "fy":[79.04228,98.41269,92.1198,42.3182]}, + {"t":2.55475, "x":7.9178, "y":1.92009, "heading":2.77072, "vx":-2.12303, "vy":-3.81103, "omega":-0.11301, "ax":-2.07566, "ay":6.53962, "alpha":9.53686, "fx":[-8.06556,33.05586,-39.05202,-91.38672], "fy":[96.70907,96.34802,94.22764,44.94329]}, + {"t":2.58209, "x":7.85897, "y":1.81833, "heading":2.76763, "vx":-2.17978, "vy":-3.63223, "omega":0.14774, "ax":-0.98806, "ay":6.42927, "alpha":11.32959, "fx":[39.07876,37.55774,-36.15014,-90.68233], "fy":[89.87099,94.78778,95.44538,46.51786]}, + {"t":2.60943, "x":7.79901, "y":1.72143, "heading":2.77167, "vx":-2.2068, "vy":-3.45644, "omega":0.4575, "ax":-0.3433, "ay":6.10813, "alpha":13.18619, "fx":[66.85558,40.4414,-34.36956,-90.36774], "fy":[73.243,93.66715,96.14838,47.24875]}, + {"t":2.63677, "x":7.73854, "y":1.62921, "heading":2.78418, "vx":-2.21618, "vy":-3.28944, "omega":0.81803, "ax":-0.00996, "ay":5.80828, "alpha":14.61308, "fx":[81.22872,42.20282,-33.50401,-90.43355], "fy":[58.42912,92.94174,96.48884,47.21473]}, + {"t":2.66412, "x":7.67794, "y":1.54144, "heading":2.80655, "vx":-2.21645, "vy":-3.13063, "omega":1.21757, "ax":0.14675, "ay":5.5731, "alpha":15.66957, "fx":[88.74611,43.04982,-33.46763,-90.87283], "fy":[47.56791,92.59534,96.52892,46.43433]}, + {"t":2.69146, "x":7.6174, "y":1.45793, "heading":2.83984, "vx":-2.21244, "vy":-2.97826, "omega":1.64599, "ax":0.1947, "ay":5.3977, "alpha":16.46159, "fx":[92.70852,43.07056,-34.2194,-91.66865], "fy":[40.41108,92.62018,96.28683,44.89759]}, + {"t":2.7188, "x":7.55698, "y":1.37852, "heading":2.88484, "vx":-2.20712, "vy":-2.83068, "omega":2.09607, "ax":0.16678, "ay":5.26938, "alpha":17.06632, "fx":[94.70416,42.29487,-35.7361,-92.78994], "fy":[36.36598,93.00527,95.75199,42.5738]}, + {"t":2.74614, "x":7.4967, "y":1.30309, "heading":2.94215, "vx":-2.20256, "vy":-2.68661, "omega":2.56269, "ax":0.0795, "ay":5.17483, "alpha":17.53628, "fx":[95.50652,40.72073,-37.99988,-94.18861], "fy":[34.86057,93.7287,94.89092,39.41306]}, + {"t":2.77348, "x":7.43651, "y":1.23157, "heading":3.01222, "vx":-2.20038, "vy":-2.54512, "omega":3.04215, "ax":-0.05873, "ay":5.10128, "alpha":17.90672, "fx":[95.47568,38.32786,-40.99078,-95.79621], "fy":[35.41097,94.75208,93.64984,35.34426]}, + {"t":2.80082, "x":7.37632, "y":1.16389, "heading":3.09539, "vx":-2.20199, "vy":-2.40565, "omega":3.53174, "ax":-0.24336, "ay":5.0364, "alpha":18.20117, "fx":[94.75224,35.08629,-44.68197,-97.51996], "fy":[37.62289,96.01621,91.95593,30.26598]}, + {"t":2.82816, "x":7.31603, "y":1.1, "heading":-3.09123, "vx":-2.20864, "vy":-2.26795, "omega":4.02938, "ax":-0.55405, "ay":5.47013, "alpha":16.6913, "fx":[86.17067,28.58108,-47.19909,-95.69971], "fy":[54.19486,98.0692,90.59988,35.03148]}, + {"t":2.84574, "x":7.27713, "y":1.06099, "heading":-3.02043, "vx":-2.21838, "vy":-2.17182, "omega":4.32268, "ax":-0.72194, "ay":5.63357, "alpha":16.05252, "fx":[82.13633,24.93343,-49.01038,-94.73565], "fy":[60.17736,99.04909,89.61354,37.35865]}, + {"t":2.86331, "x":7.23804, "y":1.0237, "heading":-2.94447, "vx":-2.23107, "vy":-2.07283, "omega":4.60476, "ax":-0.87828, "ay":5.81813, "alpha":15.26085, "fx":[77.8722,21.14842,-50.69584,-92.94336], "fy":[65.63285,99.91374,88.64759,41.38059]}, + {"t":2.88088, "x":7.1987, "y":0.98817, "heading":-2.86355, "vx":-2.2465, "vy":-1.97059, "omega":4.87292, "ax":-1.00532, "ay":6.04553, "alpha":14.21612, "fx":[73.33403,17.27395,-52.12497,-89.55546], "fy":[70.68795,100.64189,87.78652,48.01058]}, + {"t":2.89845, "x":7.15907, "y":0.95448, "heading":-2.77793, "vx":-2.26416, "vy":-1.86436, "omega":5.12273, "ax":-1.06657, "ay":6.34482, "alpha":12.78014, "fx":[68.4166,13.385,-53.06823,-82.91741], "fy":[75.46952,101.21563,87.18467,58.46197]}, + {"t":2.91602, "x":7.11912, "y":0.9227, "heading":-2.68791, "vx":-2.28291, "vy":-1.75287, "omega":5.3473, "ax":-1.00228, "ay":6.72275, "alpha":10.89752, "fx":[63.0694,9.5937,-53.24057,-70.34086], "fy":[79.99625,101.62447,87.03642,72.8742]}, + {"t":2.9336, "x":7.07885, "y":0.89293, "heading":-2.59395, "vx":-2.30052, "vy":-1.63474, "omega":5.53879, "ax":-0.7687, "ay":7.11622, "alpha":8.83336, "fx":[57.30755,6.05059,-52.29354,-50.11648], "fy":[84.21642,101.87127,87.55548,87.87739]}, + {"t":2.95117, "x":7.0383, "y":0.86531, "heading":-2.49662, "vx":-2.31403, "vy":-1.50969, "omega":5.69401, "ax":-0.42909, "ay":7.41575, "alpha":7.13318, "fx":[51.15287,2.95412,-49.73701,-26.16867], "fy":[88.07898,101.97581,88.96782,97.71503]}, + {"t":2.96874, "x":6.99758, "y":0.83992, "heading":-2.39656, "vx":-2.32157, "vy":-1.37938, "omega":5.81936, "ax":-0.117, "ay":7.59805, "alpha":5.96894, "fx":[44.61372,0.55861,-44.90871,-6.20745], "fy":[91.54433,101.97578,91.42347,101.05537]}, + {"t":2.98631, "x":6.95676, "y":0.81686, "heading":-2.2943, "vx":-2.32362, "vy":-1.24587, "omega":5.92424, "ax":0.1138, "ay":7.72349, "alpha":5.00424, "fx":[37.70534,-0.88084,-37.24327,6.20012], "fy":[94.56796,101.91999,94.71981,101.16378]}, + {"t":3.00388, "x":6.91595, "y":0.79616, "heading":-2.1902, "vx":-2.32162, "vy":-1.11015, "omega":6.01218, "ax":0.19579, "ay":7.81351, "alpha":4.12764, "fx":[30.79322,-2.26304,-29.57085,10.98718], "fy":[96.99373,101.83367,97.30223,100.81483]}, + {"t":3.02146, "x":6.87518, "y":0.77786, "heading":-2.08456, "vx":-2.31818, "vy":-0.97285, "omega":6.08471, "ax":-0.45504, "ay":7.73195, "alpha":4.76417, "fx":[25.95023,-12.04546,-42.53641,5.51452], "fy":[98.34325,101.10263,92.28452,101.07088]}, + {"t":3.03903, "x":6.83438, "y":0.76196, "heading":-1.97764, "vx":-2.32618, "vy":-0.83699, "omega":6.16843, "ax":-1.37889, "ay":7.47967, "alpha":5.82872, "fx":[20.279,-25.18918,-61.25949,-3.88099], "fy":[99.60344,98.61697,80.97745,100.78683]}, + {"t":3.0566, "x":6.79329, "y":0.7484, "heading":-1.86925, "vx":-2.35041, "vy":-0.70555, "omega":6.27085, "ax":-2.21461, "ay":7.18162, "alpha":6.38837, "fx":[11.98923,-36.901,-73.77119,-13.82419], "fy":[100.85851,94.80062,69.63975,99.54436]}, + {"t":3.07417, "x":6.75165, "y":0.73711, "heading":-1.75905, "vx":-2.38932, "vy":-0.57936, "omega":6.38311, "ax":-2.49202, "ay":7.25872, "alpha":5.17577, "fx":[-0.52474,-40.49355,-67.9912,-17.59091], "fy":[101.43889,93.16573,75.04245,99.11273]}, + {"t":3.09174, "x":6.70928, "y":0.72805, "heading":-1.64689, "vx":-2.43311, "vy":-0.45181, "omega":6.47405, "ax":-2.58335, "ay":7.44889, "alpha":2.66779, "fx":[-16.60474,-39.01435,-51.05446,-24.56674], "fy":[99.8611,93.51277,87.21968,97.82775]}, + {"t":3.10932, "x":6.66612, "y":0.72126, "heading":-1.53313, "vx":-2.47851, "vy":-0.32092, "omega":6.52093, "ax":-2.53435, "ay":7.52058, "alpha":-0.97211, "fx":[-38.39334,-28.67434,-26.34833,-35.33507], "fy":[93.28707,96.66806,97.47812,94.62998]}, + {"t":3.12689, "x":6.62218, "y":0.71679, "heading":-1.41854, "vx":-2.52304, "vy":-0.18876, "omega":6.50385, "ax":-2.2393, "ay":7.10623, "alpha":-6.73597, "fx":[-69.92256,8.04228,-3.15575,-48.72577], "fy":[71.86651,99.54201,100.99948,88.60516]}, + {"t":3.14446, "x":6.5775, "y":0.71457, "heading":-1.30426, "vx":-2.56239, "vy":-0.06389, "omega":6.38549, "ax":-1.7178, "ay":5.32736, "alpha":-15.84906, "fx":[-98.04268,67.70986,6.7561,-63.69153], "fy":[18.49576,72.5792,100.93113,78.63651]}, + {"t":3.16203, "x":6.53221, "y":0.71427, "heading":-1.19205, "vx":-2.59257, "vy":0.02972, "omega":6.10699, "ax":-2.84239, "ay":4.79679, "alpha":-15.74418, "fx":[-100.04122,48.74504,-14.24071,-78.86331], "fy":[-5.0408,85.21086,100.07441,63.44392]}, + {"t":3.1796, "x":6.48621, "y":0.71553, "heading":-1.08474, "vx":-2.64252, "vy":0.11401, "omega":5.83033, "ax":-3.92466, "ay":4.14125, "alpha":-14.92211, "fx":[-97.29225,21.94926,-34.12902,-89.90999], "fy":[-25.25573,93.90291,95.11922,46.61877]}, + {"t":3.19718, "x":6.43917, "y":0.71817, "heading":-0.98229, "vx":-2.71149, "vy":0.18678, "omega":5.56812, "ax":-4.7698, "ay":3.29958, "alpha":-14.1535, "fx":[-90.97798,-4.43657,-50.06703,-96.83557], "fy":[-43.40533,93.25567,87.81262,29.96365]}, + {"t":3.21475, "x":6.39079, "y":0.72196, "heading":-0.88444, "vx":-2.7953, "vy":0.24476, "omega":5.31941, "ax":-5.39414, "ay":2.28429, "alpha":-13.44188, "fx":[-82.335,-28.93234,-62.34513,-100.42257], "fy":[-58.55611,80.47805,79.64323,14.48191]}, + {"t":3.23232, "x":6.34084, "y":0.72662, "heading":-0.79097, "vx":-2.89009, "vy":0.2849, "omega":5.08321, "ax":-5.83449, "ay":0.04603, "alpha":-12.70864, "fx":[-72.70741,-50.24664,-71.89905,-101.55289], "fy":[-70.4236,0.93331,71.24913,0.57946]}, + {"t":3.24989, "x":6.28915, "y":0.73163, "heading":-0.70165, "vx":-2.99261, "vy":0.28571, "omega":4.85989, "ax":-5.91472, "ay":-1.90124, "alpha":-11.98796, "fx":[-65.2573,-53.0693,-81.18006,-100.97484], "fy":[-77.56828,-68.04341,60.60481,-11.58049]}, + {"t":3.26746, "x":6.23565, "y":0.73636, "heading":-0.61625, "vx":-3.09654, "vy":0.2523, "omega":4.64924, "ax":-5.85967, "ay":-2.61409, "alpha":-11.42878, "fx":[-58.43512,-51.69736,-88.27318,-99.27935], "fy":[-82.97069,-77.62019,49.88988,-22.10074]}, + {"t":3.28504, "x":6.18034, "y":0.74039, "heading":-0.53455, "vx":-3.19951, "vy":0.20637, "omega":4.44841, "ax":-5.74292, "ay":-3.15896, "alpha":-10.97591, "fx":[-51.86243,-49.71928,-93.29891,-96.87327], "fy":[-87.33882,-81.8702,39.9255,-31.1991]}, + {"t":3.30261, "x":6.12323, "y":0.74353, "heading":-0.45639, "vx":-3.30043, "vy":0.15086, "omega":4.25554, "ax":-5.58329, "ay":-3.61581, "alpha":-10.62197, "fx":[-45.44447,-47.45127,-96.72646,-94.02185], "fy":[-90.92953,-84.62872,30.96933,-39.10252]}, + {"t":3.32018, "x":6.06437, "y":0.74562, "heading":-0.38161, "vx":-3.39854, "vy":0.08732, "omega":4.06889, "ax":-5.3929, "ay":-4.00723, "alpha":-10.35917, "fx":[-39.11555,-44.97972,-98.98367,-90.89314], "fy":[-93.89544,-86.73521,23.06895,-46.01493]}, + {"t":3.33775, "x":6.00382, "y":0.74653, "heading":-0.31011, "vx":-3.4933, "vy":0.0169, "omega":3.88686, "ax":-5.17957, "ay":-4.34536, "alpha":-10.17946, "fx":[-32.82804,-42.30531,-100.40863,-87.59216], "fy":[-96.33109,-88.48131,16.16429,-52.10659]}, + {"t":3.35532, "x":5.94163, "y":0.74616, "heading":-0.24181, "vx":-3.58431, "vy":-0.05945, "omega":3.70799, "ax":-4.94689, "ay":-4.63893, "alpha":-10.07815, "fx":[-26.54403,-39.33452,-101.25101,-84.18414], "fy":[-98.29633,-90.01205,10.15466,-57.51501]}, + {"t":3.3729, "x":5.87789, "y":0.7444, "heading":-0.17665, "vx":-3.67124, "vy":-0.14097, "omega":3.5309, "ax":-4.68126, "ay":-4.89789, "alpha":-10.08674, "fx":[-20.14779,-35.2833,-101.68693,-80.7012], "fy":[-99.84479,-91.61555,4.99644,-62.3604]}, + {"t":3.39047, "x":5.81265, "y":0.74117, "heading":-0.11461, "vx":-3.7535, "vy":-0.22703, "omega":3.35365, "ax":-4.23616, "ay":-5.14871, "alpha":-10.53856, "fx":[-12.88987,-23.38642,-101.84792,-77.08288], "fy":[-101.07497,-94.75928,1.09303,-66.82514]}, + {"t":3.40804, "x":5.74604, "y":0.73638, "heading":-0.05568, "vx":-3.82794, "vy":-0.31751, "omega":3.16847, "ax":-2.89271, "ay":-5.19885, "alpha":-13.58054, "fx":[-3.26759,31.31594,-101.88944,-73.11513], "fy":[-101.87686,-90.35159,-0.70269,-71.18269]}, + {"t":3.42561, "x":5.67833, "y":0.73, "heading":0.0, "vx":-3.87877, "vy":-0.40886, "omega":2.92983, "ax":-3.83757, "ay":-5.46008, "alpha":-10.42511, "fx":[-1.45906,-21.37418,-101.76269,-70.3618], "fy":[-101.99521,-94.62384,-6.77676,-73.98903]}, + {"t":3.44892, "x":5.58686, "y":0.71898, "heading":0.0683, "vx":-3.96823, "vy":-0.53615, "omega":2.6868, "ax":-5.12542, "ay":-3.42206, "alpha":-12.52134, "fx":[2.66465,-92.36719,-101.76405,-68.9168], "fy":[-101.90119,9.58955,-6.24896,-75.28812]}, + {"t":3.47224, "x":5.49296, "y":0.70556, "heading":0.13094, "vx":-4.08772, "vy":-0.61593, "omega":2.3949, "ax":-4.50184, "ay":-2.16555, "alpha":-17.40686, "fx":[6.64301,-65.60775,-101.78907,-67.95015], "fy":[-101.62101,72.68752,-4.98515,-76.09638]}, + {"t":3.49555, "x":5.39645, "y":0.69061, "heading":0.18677, "vx":-4.19267, "vy":-0.66641, "omega":1.9891, "ax":-4.08469, "ay":-1.83584, "alpha":-19.34683, "fx":[11.37634,-49.47384,-101.82557,-67.58859], "fy":[-101.0541,86.27348,-2.15864,-76.32589]}, + {"t":3.51886, "x":5.2976, "y":0.67457, "heading":0.23314, "vx":-4.28789, "vy":-0.70921, "omega":1.53808, "ax":-3.7137, "ay":-1.55776, "alpha":-20.82036, "fx":[17.87919,-36.64243,-101.70742,-68.19379], "fy":[-99.871,93.1509,3.22933,-75.64706]}, + {"t":3.54217, "x":5.19663, "y":0.65762, "heading":0.26899, "vx":-4.37446, "vy":-0.74552, "omega":1.05271, "ax":-3.28243, "ay":-1.1799, "alpha":-22.26875, "fx":[28.64823,-24.13018,-100.82625,-70.44675], "fy":[-96.88062,97.52188,12.73588,-73.31878]}, + {"t":3.56549, "x":5.09375, "y":0.63992, "heading":0.29353, "vx":-4.45099, "vy":-0.77303, "omega":0.53358, "ax":-2.61779, "ay":-0.46239, "alpha":-23.91599, "fx":[51.93799,-11.71918,-97.19781,-76.01085], "fy":[-85.4884,100.0283,29.01249,-67.04274]}, + {"t":3.5888, "x":4.98928, "y":0.62177, "heading":0.30597, "vx":-4.51201, "vy":-0.78381, "omega":-0.02396, "ax":-1.51526, "ay":1.95591, "alpha":-23.94368, "fx":[97.40994,-0.03843,-84.87586,-89.47422], "fy":[-10.77082,100.90716,55.08267,-45.85417]}, + {"t":3.61211, "x":4.88368, "y":0.60403, "heading":0.30542, "vx":-4.54734, "vy":-0.73821, "omega":-0.58214, "ax":-1.32968, "ay":6.29724, "alpha":-12.34162, "fx":[59.25166,10.03091,-53.60125,-83.23215], "fy":[80.22685,100.5748,85.61016,53.50266]}, + {"t":3.63542, "x":4.77731, "y":0.58853, "heading":0.29184, "vx":-4.57833, "vy":-0.59141, "omega":-0.86985, "ax":0.37594, "ay":7.75136, "alpha":-4.14207, "fx":[34.86117,15.30955,-18.6343,-12.43784], "fy":[94.59689,100.09175,99.41351,99.68505]}, + {"t":3.65874, "x":4.67068, "y":0.57685, "heading":0.27157, "vx":-4.56957, "vy":-0.41071, "omega":-0.96642, "ax":0.50733, "ay":7.88119, "alpha":-2.67833, "fx":[25.64146,13.87198,-9.82995,-3.90992], "fy":[97.92933,100.51527,100.92524,101.0131]}, + {"t":3.68205, "x":4.56429, "y":0.56942, "heading":0.24904, "vx":-4.55774, "vy":-0.22698, "omega":-1.02885, "ax":0.5705, "ay":7.93423, "alpha":-1.87863, "fx":[20.47906,12.8767,-4.49096,0.11799], "fy":[99.38955,100.79889,101.47967,101.40945]}, + {"t":3.70536, "x":4.4582, "y":0.56628, "heading":0.22505, "vx":-4.54444, "vy":-0.04201, "omega":-1.07265, "ax":0.68218, "ay":7.95892, "alpha":-1.24434, "fx":[17.2742,12.6221,0.72492,4.03521], "fy":[100.16501,100.93774,101.69852,101.53052]}, + {"t":3.72867, "x":4.35244, "y":0.56747, "heading":0.20005, "vx":-4.52854, "vy":0.14353, "omega":-1.10166, "ax":0.82703, "ay":7.96537, "alpha":-0.69226, "fx":[15.20641,12.81306,6.01079,7.98475], "fy":[100.61997,100.99211,101.61263,101.43469]}, + {"t":3.75198, "x":4.2471, "y":0.57298, "heading":0.17436, "vx":-4.50926, "vy":0.32922, "omega":-1.1178, "ax":0.99812, "ay":7.95698, "alpha":-0.17641, "fx":[13.8521,13.2886,11.51486,12.05112], "fy":[100.90527,100.98998,101.20486,101.13332]}, + {"t":3.7753, "x":4.14225, "y":0.58281, "heading":0.14831, "vx":-4.48599, "vy":0.51472, "omega":-1.12191, "ax":1.19788, "ay":7.93325, "alpha":0.34355, "fx":[12.97195,13.9842,17.50678,16.39226], "fy":[101.09213,100.94134,100.39541,100.59869]}, + {"t":3.79861, "x":4.03799, "y":0.59697, "heading":0.12215, "vx":-4.45807, "vy":0.69966, "omega":-1.1139, "ax":1.4243, "ay":7.89208, "alpha":0.8878, "fx":[12.4271,14.83424,24.08582,21.0105], "fy":[101.21651,100.85469,99.06637,99.79844]}, + {"t":3.82192, "x":3.93445, "y":0.61542, "heading":0.09618, "vx":-4.42486, "vy":0.88364, "omega":-1.0932, "ax":1.65737, "ay":7.83532, "alpha":1.43293, "fx":[12.13498,15.69198,30.80949,25.56203], "fy":[101.29735,100.75236,97.22197,98.78079]}, + {"t":3.84523, "x":3.83175, "y":0.63815, "heading":0.0707, "vx":-4.38623, "vy":1.0663, "omega":-1.0598, "ax":1.87548, "ay":7.76905, "alpha":1.9443, "fx":[12.03616,16.41843,37.11301,29.71119], "fy":[101.34625,100.65963,95.02621,97.65363]}, + {"t":3.86855, "x":3.73001, "y":0.66512, "heading":0.04599, "vx":-4.3425, "vy":1.24741, "omega":-1.01447, "ax":2.069, "ay":7.69914, "alpha":2.40595, "fx":[12.08166,16.95453,42.72266,33.35125], "fy":[101.37145,100.59096,92.66793,96.50426]}, + {"t":3.89186, "x":3.62933, "y":0.69629, "heading":0.02234, "vx":-4.29427, "vy":1.4269, "omega":-0.95838, "ax":2.23684, "ay":7.62952, "alpha":2.8165, "fx":[12.2314,17.29876,47.59787,36.50851], "fy":[101.37904,100.55054,90.28604,95.382]}, + {"t":3.91517, "x":3.52983, "y":0.73163, "heading":0.0, "vx":-4.24212, "vy":1.60476, "omega":-0.89272, "ax":2.43441, "ay":7.58972, "alpha":2.63565, "fx":[15.70052,20.75954,48.72846,38.48506], "fy":[101.00479,100.03997,89.82472,94.70595]}, + {"t":3.95583, "x":3.35936, "y":0.80315, "heading":-0.0363, "vx":-4.14314, "vy":1.91335, "omega":-0.78556, "ax":2.68972, "ay":7.49772, "alpha":2.69919, "fx":[18.82412,23.81283,52.15147,41.85576], "fy":[100.45467,99.33608,87.86039,93.25038]}, + {"t":3.99649, "x":3.19313, "y":0.88715, "heading":-0.06824, "vx":-4.03378, "vy":2.2182, "omega":-0.67581, "ax":2.99751, "ay":7.37397, "alpha":2.76651, "fx":[22.52614,27.7956,56.24973,45.70925], "fy":[99.67146,98.26939,85.26896,91.40504]}, + {"t":4.03715, "x":3.0316, "y":0.98343, "heading":-0.09572, "vx":-3.91191, "vy":2.51802, "omega":-0.56333, "ax":3.36983, "ay":7.20508, "alpha":2.82715, "fx":[27.01182,32.98658,61.06617,50.13057], "fy":[98.5272,96.61691,81.85673,89.03429]}, + {"t":4.07781, "x":2.87533, "y":1.09177, "heading":-0.11862, "vx":-3.77489, "vy":2.81097, "omega":-0.44838, "ax":3.81976, "ay":6.97192, "alpha":2.85691, "fx":[32.58718,39.73954,66.53787,55.18818], "fy":[96.79603,93.99779,77.4344,85.9618]}, + {"t":4.11847, "x":2.725, "y":1.21182, "heading":-0.13685, "vx":-3.61958, "vy":3.09445, "omega":-0.33222, "ax":4.35468, "ay":6.65158, "alpha":2.79603, "fx":[39.7193,48.36708,72.2919,60.84949], "fy":[94.05376,89.80887,72.04056,82.01252]}, + {"t":4.15913, "x":2.58143, "y":1.34314, "heading":-0.15036, "vx":-3.44253, "vy":3.36489, "omega":-0.21854, "ax":4.96234, "ay":6.22751, "alpha":2.51525, "fx":[49.10077,58.7136,77.4084,66.87597], "fy":[89.45716,83.34894,66.44574,77.12003]}, + {"t":4.19978, "x":2.44556, "y":1.4851, "heading":-0.15924, "vx":-3.24076, "vy":3.6181, "omega":-0.11627, "ax":5.61925, "ay":5.67878, "alpha":1.88445, "fx":[61.333,69.71828,81.20775,73.21218], "fy":[81.4744,74.32175,61.6564,71.04288]}, + {"t":4.24044, "x":2.31844, "y":1.6369, "heading":-0.16397, "vx":-3.01229, "vy":3.84899, "omega":-0.03965, "ax":6.29369, "ay":4.95605, "alpha":1.03903, "fx":[74.98383,79.78123,84.6835,80.28542], "fy":[68.99596,63.31981,56.66619,62.79712]}, + {"t":4.2811, "x":2.20117, "y":1.79749, "heading":-0.16558, "vx":-2.75639, "vy":4.0505, "omega":0.0026, "ax":6.86132, "ay":4.12969, "alpha":0.82274, "fx":[83.85123,87.45867,90.24616,87.01512], "fy":[57.73102,52.03718,47.12326,52.90653]}, + {"t":4.32176, "x":2.09477, "y":1.9656, "heading":-0.16548, "vx":-2.47742, "vy":4.21841, "omega":0.03605, "ax":7.40993, "ay":2.88431, "alpha":2.24449, "fx":[87.26117,96.3435,99.35253,93.48445], "fy":[52.19744,32.17192,21.88175,40.27878]}, + {"t":4.36242, "x":2.00016, "y":2.1395, "heading":-0.16401, "vx":-2.17613, "vy":4.33569, "omega":0.12731, "ax":7.9158, "ay":0.09404, "alpha":2.80363, "fx":[99.56053,100.69048,100.78001,101.11013], "fy":[20.02494,-12.78661,-13.78146,11.32081]}, + {"t":4.40308, "x":1.91823, "y":2.31586, "heading":-0.15884, "vx":-1.85429, "vy":4.33951, "omega":0.2413, "ax":7.31078, "ay":-3.16629, "alpha":1.9191, "fx":[96.22612,87.25345,90.60386,97.32149], "fy":[-32.64614,-52.16202,-46.35618,-29.69049]}, + {"t":4.44374, "x":1.84887, "y":2.48969, "heading":-0.14903, "vx":-1.55703, "vy":4.21077, "omega":0.31933, "ax":6.027, "ay":-5.26967, "alpha":1.0234, "fx":[77.79188,71.38881,75.65932,81.34583], "fy":[-65.63888,-72.60089,-68.2051,-61.2668]}, + {"t":4.4844, "x":1.79055, "y":2.65654, "heading":-0.13604, "vx":-1.31198, "vy":3.99651, "omega":0.36094, "ax":4.88093, "ay":-6.36911, "alpha":0.40027, "fx":[62.00767,59.57473,62.00131,64.37899], "fy":[-80.89038,-82.71481,-80.92715,-79.03327]}, + {"t":4.52506, "x":1.74124, "y":2.81377, "heading":-0.12137, "vx":-1.11353, "vy":3.73755, "omega":0.37722, "ax":4.03061, "ay":-6.94782, "alpha":-0.0144, "fx":[51.20435,51.28451,51.17798,51.09781], "fy":[-88.23419,-88.18714,-88.24864,-88.29556]}, + {"t":4.56572, "x":1.6993, "y":2.95999, "heading":-0.10603, "vx":-0.94965, "vy":3.45506, "omega":0.37663, "ax":3.41391, "ay":-7.27463, "alpha":-0.29638, "fx":[43.83993,45.33628,42.86607,41.39253], "fy":[-92.18504,-91.45004,-92.62827,-93.30469]}, + {"t":4.60638, "x":1.66351, "y":3.09446, "heading":-0.09072, "vx":-0.81084, "vy":3.15928, "omega":0.36458, "ax":2.95803, "ay":-7.4733, "alpha":-0.49622, "fx":[38.63751,40.91343,36.44419,34.27995], "fy":[-94.53182,-93.55719,-95.38034,-96.192]}, + {"t":4.64704, "x":1.63298, "y":3.21673, "heading":-0.07589, "vx":-0.69057, "vy":2.85542, "omega":0.3444, "ax":2.61168, "ay":-7.60197, "alpha":-0.6438, "fx":[34.81935,37.51188,31.39671,28.95132], "fy":[-96.03877,-95.00565,-97.19142,-97.96216]}, + {"t":4.68769, "x":1.60706, "y":3.32655, "heading":-0.06189, "vx":-0.58438, "vy":2.54633, "omega":0.31823, "ax":2.34145, "ay":-7.68973, "alpha":-0.7567, "fx":[31.92123,34.81928,27.35322,24.85745], "fy":[-97.06697,-96.05108,-98.43164,-99.10653]}, + {"t":4.72835, "x":1.58524, "y":3.42372, "heading":-0.04895, "vx":-0.48918, "vy":2.23367, "omega":0.28746, "ax":2.12562, "ay":-7.75216, "alpha":-0.84561, "fx":[29.65759,32.63636,24.05583,21.63673], "fy":[-97.80299,-96.83519,-99.30969,-99.87994]}, + {"t":4.76901, "x":1.56711, "y":3.50813, "heading":-0.03726, "vx":-0.40275, "vy":1.91847, "omega":0.25308, "ax":1.94972, "ay":-7.79813, "alpha":-0.91732, "fx":[27.84577,30.83176,21.32447,19.04855], "fy":[-98.35071,-97.44158,-99.94878,-100.42244]}, + {"t":4.80967, "x":1.55234, "y":3.57969, "heading":-0.02697, "vx":-0.32348, "vy":1.60141, "omega":0.21578, "ax":1.80388, "ay":-7.83298, "alpha":-0.97631, "fx":[26.3645,29.31604,19.03154,16.92911], "fy":[-98.77164,-97.92221,-100.42478,-100.81515]}, + {"t":4.85033, "x":1.54068, "y":3.63833, "heading":-0.0182, "vx":-0.25013, "vy":1.28293, "omega":0.17609, "ax":1.68114, "ay":-7.86004, "alpha":-1.02563, "fx":[25.13047,28.02659,17.08496,15.16404], "fy":[-99.10409,-98.31079,-100.78617,-101.10718]}, + {"t":4.89099, "x":1.5319, "y":3.68399, "heading":-0.01104, "vx":-0.18178, "vy":0.96334, "omega":0.13438, "ax":1.57654, "ay":-7.88148, "alpha":-1.06744, "fx":[24.08477,26.91846,15.41697,13.67153], "fy":[-99.37295,-98.63002,-101.065,-101.32951]}, + {"t":4.93165, "x":1.52581, "y":3.71665, "heading":-0.00557, "vx":-0.11768, "vy":0.64289, "omega":0.09098, "ax":1.48638, "ay":-7.89877, "alpha":-1.10331, "fx":[23.18459,25.95859,13.97685,12.3917], "fy":[-99.59501,-98.89567,-101.28306,-101.50229]}, + {"t":4.97231, "x":1.52226, "y":3.73626, "heading":-0.00188, "vx":-0.05725, "vy":0.32173, "omega":0.04612, "ax":1.40793, "ay":-7.91293, "alpha":-1.1344, "fx":[22.39816,25.12221,12.726,11.27986], "fy":[-99.78192,-99.11903,-101.45554,-101.63906]}, + {"t":5.01297, "x":1.52109, "y":3.7428, "heading":0.0, "vx":0.0, "vy":0.0, "omega":0.0, "ax":0.0, "ay":0.0, "alpha":0.0, "fx":[0.0,0.0,0.0,0.0], "fy":[0.0,0.0,0.0,0.0]}], + "splits":[0] + }, + "events":[] +} diff --git a/src/main/deploy/choreo/project.chor b/src/main/deploy/choreo/project.chor index 98252df..1bc8a06 100644 --- a/src/main/deploy/choreo/project.chor +++ b/src/main/deploy/choreo/project.chor @@ -61,6 +61,20 @@ "val":-0.7437551936929324 } }, + "L_Trench":{ + "x":{ + "exp":"R_Trench.x", + "val":5.678330421447754 + }, + "y":{ + "exp":"7.37 m", + "val":7.37 + }, + "heading":{ + "exp":"0 deg", + "val":0.0 + } + }, "R_Climb_Pose":{ "x":{ "exp":"1.5222448110580444 m", @@ -103,6 +117,20 @@ "val":0.75 } }, + "R_Trench":{ + "x":{ + "exp":"5.678330421447754 m", + "val":5.678330421447754 + }, + "y":{ + "exp":"0.73 m", + "val":0.73 + }, + "heading":{ + "exp":"0 deg", + "val":0.0 + } + }, "StationIntake":{ "x":{ "exp":"0.4722999036312103 m", diff --git a/src/main/java/frc/robot/Autos.java b/src/main/java/frc/robot/Autos.java index cb93f5f..c2e63ff 100644 --- a/src/main/java/frc/robot/Autos.java +++ b/src/main/java/frc/robot/Autos.java @@ -49,6 +49,15 @@ public Autos(CommandSwerveDrivetrain drive, AutoFactory factory, RobotContainer defaultAlignRequest(ChoreoVars.Poses.R_Start))); // Auto-register + autos.put("Sweep Auto", () -> auto("Sweep_Auto", ChoreoVars.Poses.L_Start, + //defaultAlignRequest(ChoreoVars.Poses.L_Trench), + defaultAlignRequest(ChoreoVars.Poses.L_Sweep), + defaultAlignRequest(ChoreoVars.Poses.R_Sweep), + //defaultAlignRequest(ChoreoVars.Poses.R_Trench), + defaultAlignRequest(ChoreoVars.Poses.R_Start), + defaultAlignRequest(ChoreoVars.Poses.C_ClimbPose))); + + autos.forEach((name, sup) -> container.m_chooser.addRoutine(name, sup)); }