diff --git a/Cargo.toml b/Cargo.toml index cd0281b..d6ef236 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,8 +11,8 @@ serde = { version = "1.0.217", features = ["derive"] } serde_json = "1.0.134" uom = { version = "0.35.0", features = ["f64"] } nalgebra = "0.32.3" -wpi-trajectory = { git = "https://github.com/Sha-dos/trajectory-rs" } -#wpi-trajectory = { path = "../trajectory-rs" } +#wpi-trajectory = { git = "https://github.com/Sha-dos/trajectory-rs" } +wpi-trajectory = { path = "../trajectory-rs" } axum = "0.7.4" # limelightlib-rust = { git = "https://github.com/LimelightVision/limelightlib-rust.git" } diff --git a/auto/Blue2.traj b/auto/Blue2.traj index fd25ab6..6a9f872 100644 --- a/auto/Blue2.traj +++ b/auto/Blue2.traj @@ -3,48 +3,42 @@ "version":1, "snapshot":{ "waypoints":[ - {"x":8.020708084106445, "y":7.632927417755127, "heading":0.0, "intervals":55, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":5.0278000831604, "y":6.317748546600342, "heading":-2.3136669276919144, "intervals":32, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":4.00510835647583, "y":5.744552135467529, "heading":-2.832393716810233, "intervals":32, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":4.20214, "y":5.31078, "heading":-2.61799, "intervals":55, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":0.8179629445075989, "y":6.8356733322143555, "heading":2.223643141658804, "intervals":53, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":3.9226479530334473, "y":5.69948148727417, "heading":-2.61799, "intervals":35, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}], + {"x":7.215517520904541, "y":5.439107418060303, "heading":3.141592653589793, "intervals":43, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":4.524648189544678, "y":6.065530776977539, "heading":3.141592653589793, "intervals":28, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":4.002677917480469, "y":5.568408966064453, "heading":-2.631621058010692, "intervals":9, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":4.20214, "y":5.31078, "heading":-2.61799, "intervals":62, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":0.8179629445075989, "y":6.8356733322143555, "heading":2.223643141658804, "intervals":60, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":4.043154239654541, "y":5.656472206115723, "heading":-2.61799, "intervals":35, "split":true, "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}, - {"from":0, "to":2, "data":{"type":"MaxAcceleration", "props":{"max":3.0}}, "enabled":true}, - {"from":2, "to":2, "data":{"type":"MaxAcceleration", "props":{"max":1.0}}, "enabled":true}, + {"from":0, "to":2, "data":{"type":"MaxAcceleration", "props":{"max":2.5}}, "enabled":true}, {"from":3, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, - {"from":3, "to":3, "data":{"type":"MaxAcceleration", "props":{"max":0.5}}, "enabled":true}, - {"from":2, "to":3, "data":{"type":"MaxAcceleration", "props":{"max":1.0}}, "enabled":true}, {"from":2, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, {"from":5, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, - {"from":3, "to":5, "data":{"type":"MaxAcceleration", "props":{"max":3.0}}, "enabled":true}, - {"from":4, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}], + {"from":3, "to":5, "data":{"type":"MaxAcceleration", "props":{"max":2.25}}, "enabled":true}, + {"from":4, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":0, "to":5, "data":{"type":"MaxVelocity", "props":{"max":4.0}}, "enabled":true}], "targetDt":0.05 }, "params":{ "waypoints":[ - {"x":{"exp":"8.020708084106445 m", "val":8.020708084106445}, "y":{"exp":"7.632927417755127 m", "val":7.632927417755127}, "heading":{"exp":"0 deg", "val":0.0}, "intervals":55, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":{"exp":"5.0278000831604 m", "val":5.0278000831604}, "y":{"exp":"6.317748546600342 m", "val":6.317748546600342}, "heading":{"exp":"-2.3136669276919144 rad", "val":-2.3136669276919144}, "intervals":32, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":{"exp":"4.00510835647583 m", "val":4.00510835647583}, "y":{"exp":"5.744552135467529 m", "val":5.744552135467529}, "heading":{"exp":"-2.832393716810233 rad", "val":-2.832393716810233}, "intervals":32, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":{"exp":"4.20214 m", "val":4.20214}, "y":{"exp":"5.31078 m", "val":5.31078}, "heading":{"exp":"-2.61799 rad", "val":-2.61799}, "intervals":55, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":{"exp":"0.8179629445075989 m", "val":0.8179629445075989}, "y":{"exp":"6.8356733322143555 m", "val":6.8356733322143555}, "heading":{"exp":"2.223643141658804 rad", "val":2.223643141658804}, "intervals":53, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":{"exp":"3.9226479530334473 m", "val":3.9226479530334473}, "y":{"exp":"5.69948148727417 m", "val":5.69948148727417}, "heading":{"exp":"-2.61799 rad", "val":-2.61799}, "intervals":35, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}], + {"x":{"exp":"7.215517520904541 m", "val":7.215517520904541}, "y":{"exp":"5.439107418060303 m", "val":5.439107418060303}, "heading":{"exp":"180 deg", "val":3.141592653589793}, "intervals":43, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"4.524648189544678 m", "val":4.524648189544678}, "y":{"exp":"6.065530776977539 m", "val":6.065530776977539}, "heading":{"exp":"180 deg", "val":3.141592653589793}, "intervals":28, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"4.002677917480469 m", "val":4.002677917480469}, "y":{"exp":"5.568408966064453 m", "val":5.568408966064453}, "heading":{"exp":"-2.631621058010692 rad", "val":-2.631621058010692}, "intervals":9, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"4.20214 m", "val":4.20214}, "y":{"exp":"5.31078 m", "val":5.31078}, "heading":{"exp":"-2.61799 rad", "val":-2.61799}, "intervals":62, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"0.8179629445075989 m", "val":0.8179629445075989}, "y":{"exp":"6.8356733322143555 m", "val":6.8356733322143555}, "heading":{"exp":"2.223643141658804 rad", "val":2.223643141658804}, "intervals":60, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"4.043154239654541 m", "val":4.043154239654541}, "y":{"exp":"5.656472206115723 m", "val":5.656472206115723}, "heading":{"exp":"-2.61799 rad", "val":-2.61799}, "intervals":35, "split":true, "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}, - {"from":0, "to":2, "data":{"type":"MaxAcceleration", "props":{"max":{"exp":"3 m / s ^ 2", "val":3.0}}}, "enabled":true}, - {"from":2, "to":2, "data":{"type":"MaxAcceleration", "props":{"max":{"exp":"1 m / s ^ 2", "val":1.0}}}, "enabled":true}, + {"from":0, "to":2, "data":{"type":"MaxAcceleration", "props":{"max":{"exp":"2.5 m / s ^ 2", "val":2.5}}}, "enabled":true}, {"from":3, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, - {"from":3, "to":3, "data":{"type":"MaxAcceleration", "props":{"max":{"exp":"0.5 m / s ^ 2", "val":0.5}}}, "enabled":true}, - {"from":2, "to":3, "data":{"type":"MaxAcceleration", "props":{"max":{"exp":"1 m / s ^ 2", "val":1.0}}}, "enabled":true}, {"from":2, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, {"from":5, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, - {"from":3, "to":5, "data":{"type":"MaxAcceleration", "props":{"max":{"exp":"3 m / s ^ 2", "val":3.0}}}, "enabled":true}, - {"from":4, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}], + {"from":3, "to":5, "data":{"type":"MaxAcceleration", "props":{"max":{"exp":"2.25 m / s ^ 2", "val":2.25}}}, "enabled":true}, + {"from":4, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":0, "to":5, "data":{"type":"MaxVelocity", "props":{"max":{"exp":"4 m / s", "val":4.0}}}, "enabled":true}], "targetDt":{ "exp":"0.05 s", "val":0.05 @@ -52,237 +46,212 @@ }, "trajectory":{ "sampleType":"Swerve", - "waypoints":[0.0,1.5515,2.436,3.81681,6.07625,8.1767], + "waypoints":[0.0,1.75659,2.55904,2.97273,5.54219,8.0136], "samples":[ - {"t":0.0, "x":8.02071, "y":7.63293, "heading":0.0, "vx":0.0, "vy":0.0, "omega":0.0, "ax":-2.77792, "ay":-1.12706, "alpha":-9.16268, "fx":[-23.34296,-25.92143,-71.96829,-67.77383], "fy":[-49.61934,8.14858,6.65304,-41.86602]}, - {"t":0.02821, "x":8.0196, "y":7.63248, "heading":0.0, "vx":-0.07836, "vy":-0.03179, "omega":-0.25847, "ax":-2.77867, "ay":-1.128, "alpha":-8.40171, "fx":[-25.35959,-27.74462,-69.94213,-66.01109], "fy":[-46.97483,5.66517,4.74794,-40.18642]}, - {"t":0.05642, "x":8.01629, "y":7.63113, "heading":-0.00729, "vx":-0.15675, "vy":-0.06361, "omega":-0.49547, "ax":-2.77841, "ay":-1.12857, "alpha":-7.68008, "fx":[-27.22267,-29.15294,-67.96232,-64.70181], "fy":[-44.42727,3.16129,2.76458,-38.28535]}, - {"t":0.08463, "x":8.01076, "y":7.62889, "heading":-0.02127, "vx":-0.23512, "vy":-0.09545, "omega":-0.71212, "ax":-2.77813, "ay":-1.12917, "alpha":-7.01969, "fx":[-29.20862,-30.5712,-65.86358,-63.37768], "fy":[-42.55013,0.70559,1.50744,-36.49045]}, - {"t":0.11284, "x":8.00302, "y":7.62575, "heading":-0.04136, "vx":-0.31349, "vy":-0.1273, "omega":-0.91014, "ax":-2.77785, "ay":-1.1298, "alpha":-6.35518, "fx":[-31.14675,-31.66891,-63.93019,-62.25572], "fy":[-40.38124,-1.77608,-0.15683,-34.55595]}, - {"t":0.14105, "x":7.99307, "y":7.62171, "heading":-0.06703, "vx":-0.39185, "vy":-0.15917, "omega":-1.08941, "ax":-2.77754, "ay":-1.13046, "alpha":-5.75202, "fx":[-33.04966,-32.92852,-61.89571,-61.10695], "fy":[-38.80012,-4.02914,-1.31164,-32.77445]}, - {"t":0.16925, "x":7.98091, "y":7.61677, "heading":-0.09776, "vx":-0.4702, "vy":-0.19106, "omega":-1.25167, "ax":-2.77722, "ay":-1.13116, "alpha":-5.14807, "fx":[-34.89639,-33.84028,-60.09272,-60.12979], "fy":[-36.86589,-6.33047,-2.86822,-30.89798]}, - {"t":0.19746, "x":7.96655, "y":7.61093, "heading":-0.13307, "vx":-0.54855, "vy":-0.22297, "omega":-1.39689, "ax":-2.77688, "ay":-1.1319, "alpha":-4.60364, "fx":[-36.59874,-35.08704,-58.20728,-59.04297], "fy":[-35.47134,-8.29347,-3.98476,-29.26342]}, - {"t":0.22567, "x":7.94997, "y":7.60419, "heading":-0.17248, "vx":-0.62688, "vy":-0.2549, "omega":-1.52676, "ax":-2.77653, "ay":-1.13267, "alpha":-4.06101, "fx":[-38.27458,-35.91566,-56.60235,-58.11919], "fy":[-33.67653,-10.31773,-5.50887,-27.56265]}, - {"t":0.25388, "x":7.93118, "y":7.59655, "heading":-0.21554, "vx":-0.7052, "vy":-0.28685, "omega":-1.64132, "ax":-2.77615, "ay":-1.1335, "alpha":-3.59046, "fx":[-39.75054,-36.96309,-55.03794,-57.13425], "fy":[-32.37814,-11.96791,-6.65865,-26.11755]}, - {"t":0.28209, "x":7.91018, "y":7.588, "heading":-0.26184, "vx":-0.78351, "vy":-0.31883, "omega":-1.7426, "ax":-2.77575, "ay":-1.13437, "alpha":-3.10483, "fx":[-41.13018,-38.02253,-53.586,-56.11984], "fy":[-30.85159,-13.55992,-8.10934,-24.66064]}, - {"t":0.3103, "x":7.88697, "y":7.57856, "heading":-0.311, "vx":-0.86181, "vy":-0.35083, "omega":-1.83018, "ax":-2.77531, "ay":-1.13531, "alpha":-2.66966, "fx":[-42.37158,-39.08228,-52.28016,-55.09517], "fy":[-29.42124,-14.89666,-9.38908,-23.53828]}, - {"t":0.33851, "x":7.86156, "y":7.56821, "heading":-0.36263, "vx":-0.9401, "vy":-0.38285, "omega":-1.90549, "ax":-2.77486, "ay":-1.1363, "alpha":-2.24022, "fx":[-43.47519,-40.16735,-51.11355,-54.04208], "fy":[-27.92302,-16.11275,-10.79719,-22.47962]}, - {"t":0.36672, "x":7.83394, "y":7.55696, "heading":-0.41638, "vx":-1.01838, "vy":-0.41491, "omega":-1.96869, "ax":-2.77437, "ay":-1.13736, "alpha":-1.85151, "fx":[-44.41954,-41.23763,-50.09969,-53.00796], "fy":[-26.58725,-17.07719,-12.14848,-21.57195]}, - {"t":0.39493, "x":7.8041, "y":7.5448, "heading":-0.47191, "vx":-1.09664, "vy":-0.44699, "omega":-2.02092, "ax":-2.77385, "ay":-1.13849, "alpha":-1.47205, "fx":[-45.22816,-42.32388,-49.23284,-51.94455], "fy":[-25.16713,-17.94421,-13.52263,-20.82748]}, - {"t":0.42314, "x":7.77207, "y":7.53174, "heading":-0.52892, "vx":-1.17489, "vy":-0.47911, "omega":-2.06244, "ax":-2.77328, "ay":-1.13971, "alpha":-1.12773, "fx":[-45.88226,-43.38348,-48.52324,-50.90199], "fy":[-23.90125,-18.5275,-14.86168,-20.25423]}, - {"t":0.45134, "x":7.73782, "y":7.51777, "heading":-0.5871, "vx":-1.25312, "vy":-0.51126, "omega":-2.09425, "ax":-2.77268, "ay":-1.14101, "alpha":-0.79529, "fx":[-46.40307,-44.43355,-47.95767,-49.85577], "fy":[-22.58653,-19.06514,-16.15613,-19.82518]}, - {"t":0.47955, "x":7.70137, "y":7.5029, "heading":-0.64618, "vx":-1.33134, "vy":-0.54344, "omega":-2.11669, "ax":-2.77202, "ay":-1.14243, "alpha":-0.49084, "fx":[-46.78003,-45.44507,-47.53958,-48.84072], "fy":[-21.41667,-19.30543,-17.43058,-19.57672]}, - {"t":0.50776, "x":7.66271, "y":7.48711, "heading":-0.70589, "vx":-1.40953, "vy":-0.57567, "omega":-2.13053, "ax":-2.77132, "ay":-1.14393, "alpha":-0.20196, "fx":[-47.03216,-46.42083,-47.25766,-47.84707], "fy":[-20.23985,-19.55275,-18.59871,-19.44066]}, - {"t":0.53597, "x":7.62184, "y":7.47042, "heading":-0.76599, "vx":-1.48771, "vy":-0.60794, "omega":-2.13623, "ax":-2.77055, "ay":-1.1456, "alpha":0.06637, "fx":[-47.1576,-47.34744,-47.10001,-46.90007], "fy":[-19.19763,-19.49998,-19.75698,-19.49064]}, - {"t":0.56418, "x":7.57878, "y":7.45281, "heading":-0.82625, "vx":-1.56586, "vy":-0.64025, "omega":-2.13436, "ax":-2.76972, "ay":-1.14738, "alpha":0.31498, "fx":[-47.17114,-48.21288,-47.06829,-45.99637], "fy":[-18.18985,-19.51018,-20.7606,-19.60565]}, - {"t":0.59239, "x":7.5335, "y":7.43429, "heading":-0.88646, "vx":-1.64399, "vy":-0.67262, "omega":-2.12547, "ax":-2.7688, "ay":-1.14936, "alpha":0.55014, "fx":[-47.08081,-49.02211,-47.12707,-45.15592], "fy":[-17.30642,-19.21904,-21.76172,-19.91378]}, - {"t":0.6206, "x":7.48602, "y":7.41486, "heading":-0.94642, "vx":-1.7221, "vy":-0.70504, "omega":-2.10995, "ax":-2.7678, "ay":-1.15149, "alpha":0.76154, "fx":[-46.89399,-49.74954,-47.29975,-44.37463], "fy":[-16.49418,-19.04872,-22.57754,-20.22588]}, - {"t":0.64881, "x":7.43634, "y":7.39452, "heading":-1.00594, "vx":-1.80018, "vy":-0.73753, "omega":-2.08847, "ax":-2.76668, "ay":-1.15388, "alpha":0.96584, "fx":[-46.63043,-50.41785,-47.52263,-43.67102], "fy":[-15.79279,-18.58397,-23.39309,-20.73876]}, - {"t":0.67702, "x":7.38446, "y":7.37325, "heading":-1.06485, "vx":-1.87822, "vy":-0.77008, "omega":-2.06123, "ax":-2.76546, "ay":-1.15647, "alpha":1.14234, "fx":[-46.28762,-50.98735,-47.84756,-43.03644], "fy":[-15.19237,-18.29632,-24.01111,-21.18522]}, - {"t":0.70523, "x":7.33038, "y":7.35107, "heading":-1.12299, "vx":-1.95623, "vy":-0.8027, "omega":-2.029, "ax":-2.76408, "ay":-1.15942, "alpha":1.27831, "fx":[-45.68958,-51.40125,-47.98437,-42.98938], "fy":[-14.72138,-17.74374,-24.66942,-21.75119]}, - {"t":0.73343, "x":7.2741, "y":7.32796, "heading":-1.18023, "vx":-2.0342, "vy":-0.8354, "omega":-1.99294, "ax":-2.76255, "ay":-1.16265, "alpha":1.46019, "fx":[-45.44404,-51.9019,-48.59785,-42.01695], "fy":[-14.32877,-17.34844,-25.05778,-22.3703]}, - {"t":0.76164, "x":7.21561, "y":7.30394, "heading":-1.23645, "vx":-2.11213, "vy":-0.8682, "omega":-1.95175, "ax":-2.76079, "ay":-1.16637, "alpha":1.56149, "fx":[-45.30923,-52.04712,-48.59029,-41.89412], "fy":[-13.97525,-16.79014,-25.55014,-23.04328]}, - {"t":0.78985, "x":7.15494, "y":7.27898, "heading":-1.29151, "vx":-2.19001, "vy":-0.9011, "omega":-1.9077, "ax":-2.75881, "ay":-1.17052, "alpha":1.71094, "fx":[-44.46535,-52.46422,-49.44184,-41.33505], "fy":[-13.89306,-16.40983,-25.70782,-23.63015]}, - {"t":0.81806, "x":7.09206, "y":7.2531, "heading":-1.34532, "vx":-2.26783, "vy":-0.93412, "omega":-1.85944, "ax":-2.7565, "ay":-1.17536, "alpha":1.80514, "fx":[-44.06092,-52.3339,-50.01713,-41.13727], "fy":[-13.80035,-15.88834,-25.89202,-24.38967]}, - {"t":0.84627, "x":7.02699, "y":7.22628, "heading":-1.39777, "vx":-2.34559, "vy":-0.96728, "omega":-1.80852, "ax":-2.75388, "ay":-1.18081, "alpha":1.89629, "fx":[-43.44529,-52.68445,-50.26392,-40.97719], "fy":[-13.91895,-15.51177,-26.03012,-24.88037]}, - {"t":0.87448, "x":6.95973, "y":7.19852, "heading":-1.44879, "vx":-2.42328, "vy":-1.00059, "omega":-1.75503, "ax":-2.7507, "ay":-1.18742, "alpha":2.02671, "fx":[-42.77442,-53.22937,-50.44864,-40.70178], "fy":[-14.04545,-14.90832,-26.17401,-25.66299]}, - {"t":0.90269, "x":6.89027, "y":7.16982, "heading":-1.4983, "vx":-2.50087, "vy":-1.03408, "omega":-1.69785, "ax":-2.74702, "ay":-1.19497, "alpha":2.00847, "fx":[-42.47621,-52.56039,-50.96341,-40.90409], "fy":[-14.33563,-14.90414,-26.06759,-25.99677]}, - {"t":0.9309, "x":6.81863, "y":7.14018, "heading":-1.54619, "vx":-2.57836, "vy":-1.06779, "omega":-1.6412, "ax":-2.74239, "ay":-1.20444, "alpha":2.10621, "fx":[-41.85257,-52.9811,-51.01143,-40.74387], "fy":[-14.66699,-14.41078,-26.13277,-26.73804]}, - {"t":0.95911, "x":6.74481, "y":7.10958, "heading":-1.59249, "vx":-2.65572, "vy":-1.10177, "omega":-1.58178, "ax":-2.73684, "ay":-1.21564, "alpha":2.04985, "fx":[-41.62859,-52.11288,-51.41935,-41.05037], "fy":[-15.19172,-14.5789,-25.96619,-26.97364]}, - {"t":0.98732, "x":6.66881, "y":7.07801, "heading":-1.63711, "vx":-2.73293, "vy":-1.13606, "omega":-1.52396, "ax":-2.72953, "ay":-1.23025, "alpha":2.10313, "fx":[-41.07825,-52.43154,-51.24359,-40.96079], "fy":[-15.72072,-14.37376,-25.98539,-27.62468]}, - {"t":1.01552, "x":6.59063, "y":7.04548, "heading":-1.6801, "vx":-2.80992, "vy":-1.17077, "omega":-1.46463, "ax":-2.72013, "ay":-1.2487, "alpha":2.00057, "fx":[-40.96206,-51.29281,-51.48074,-41.3392], "fy":[-16.52155,-14.81561,-25.84621,-27.77684]}, - {"t":1.04373, "x":6.51028, "y":7.01195, "heading":-1.72141, "vx":-2.88666, "vy":-1.20599, "omega":-1.4082, "ax":-2.70695, "ay":-1.27412, "alpha":1.97695, "fx":[-40.58132,-51.23773,-51.02778,-41.33116], "fy":[-17.31902,-15.12447,-25.90668,-28.33976]}, - {"t":1.07194, "x":6.42777, "y":6.97743, "heading":-1.76114, "vx":-2.96302, "vy":-1.24193, "omega":-1.35243, "ax":-2.68799, "ay":-1.30963, "alpha":1.83637, "fx":[-40.45663,-49.96184,-50.87178,-41.59721], "fy":[-18.56128,-15.99055,-26.00969,-28.5443]}, - {"t":1.10015, "x":6.34312, "y":6.94187, "heading":-1.79929, "vx":-3.03884, "vy":-1.27888, "omega":-1.30063, "ax":-2.65706, "ay":-1.36531, "alpha":1.73328, "fx":[-39.99606,-49.66719,-49.77482,-41.34499], "fy":[-19.94107,-17.2558,-26.45042,-29.24676]}, - {"t":1.12836, "x":6.25634, "y":6.90525, "heading":-1.83598, "vx":-3.11379, "vy":-1.31739, "omega":-1.25173, "ax":-2.60014, "ay":-1.46102, "alpha":1.47825, "fx":[-39.59838,-47.37892,-48.78364,-41.1497], "fy":[-22.15764,-19.87169,-27.3837,-29.99336]}, - {"t":1.15657, "x":6.16747, "y":6.86751, "heading":-1.87129, "vx":-3.18714, "vy":-1.3586, "omega":-1.21003, "ax":-2.44231, "ay":-1.69334, "alpha":1.34672, "fx":[-36.92801,-45.9021,-44.86202,-38.48013], "fy":[-26.78025,-24.22194,-30.87785,-33.33311]}, - {"t":1.18478, "x":6.07659, "y":6.82851, "heading":-1.90542, "vx":-3.25604, "vy":-1.40637, "omega":-1.17204, "ax":-1.79753, "ay":-2.31914, "alpha":0.80141, "fx":[-27.18444,-32.34631,-33.97165,-28.79915], "fy":[-37.1652,-38.43935,-40.20169,-41.98538]}, - {"t":1.21299, "x":5.98403, "y":6.78792, "heading":-1.93848, "vx":-3.30674, "vy":-1.47179, "omega":-1.14944, "ax":2.71214, "ay":-1.05769, "alpha":0.46558, "fx":[46.91771,48.99001,42.86128,45.76181], "fy":[-17.00465,-15.86152,-19.01933,-20.07849]}, - {"t":1.2412, "x":5.89182, "y":6.74598, "heading":-1.97091, "vx":-3.23024, "vy":-1.50163, "omega":-1.1363, "ax":2.94337, "ay":0.38053, "alpha":0.3083, "fx":[50.87107,49.71565,49.25993,50.41659], "fy":[6.66652,8.07563,5.93197,5.21703]}, - {"t":1.26941, "x":5.80187, "y":6.70377, "heading":-2.00296, "vx":-3.14721, "vy":-1.49089, "omega":-1.12761, "ax":2.90139, "ay":0.68412, "alpha":0.05044, "fx":[49.36635,50.02962,48.80078,49.21025], "fy":[11.72853,11.87406,11.56177,11.38268]}, - {"t":1.29761, "x":5.71425, "y":6.66198, "heading":-2.03477, "vx":-3.06536, "vy":-1.47159, "omega":-1.12618, "ax":2.87537, "ay":0.80716, "alpha":0.03117, "fx":[48.81787,48.91886,49.0046,48.89522], "fy":[13.6178,14.20349,13.57164,13.52547]}, - {"t":1.32582, "x":5.62892, "y":6.62079, "heading":-2.06654, "vx":-2.98425, "vy":-1.44883, "omega":-1.1253, "ax":2.85873, "ay":0.87473, "alpha":-0.02114, "fx":[48.44827,49.2146,48.39699,48.4449], "fy":[14.85777,14.80092,14.9167,14.94026]}, - {"t":1.35403, "x":5.54588, "y":6.58027, "heading":-2.09828, "vx":-2.90361, "vy":-1.42415, "omega":-1.1259, "ax":2.84706, "ay":0.91831, "alpha":0.09396, "fx":[48.59229,48.34848,48.26331,48.50666], "fy":[15.63636,16.21914,15.46569,15.15923]}, - {"t":1.38224, "x":5.4651, "y":6.54046, "heading":-2.13004, "vx":-2.8233, "vy":-1.39825, "omega":-1.12325, "ax":2.83915, "ay":0.9467, "alpha":0.20409, "fx":[48.89056,48.56082,47.35416,48.36666], "fy":[16.24191,16.90741,15.98481,15.27822]}, - {"t":1.41045, "x":5.38659, "y":6.5014, "heading":-2.16173, "vx":-2.74321, "vy":-1.37154, "omega":-1.11749, "ax":2.83284, "ay":0.9684, "alpha":0.4403, "fx":[49.52862,47.80369,46.8397,48.57133], "fy":[16.66023,18.48194,16.13569,14.61098]}, - {"t":1.43866, "x":5.31033, "y":6.46309, "heading":-2.19325, "vx":-2.66329, "vy":-1.34422, "omega":-1.10507, "ax":2.82811, "ay":0.98439, "alpha":0.67236, "fx":[50.30942,48.03438,45.55666,48.52083], "fy":[17.03775,19.43893,16.484,14.01605]}, - {"t":1.46687, "x":5.23633, "y":6.42557, "heading":-2.22443, "vx":-2.58352, "vy":-1.31645, "omega":-1.08611, "ax":2.82417, "ay":0.99739, "alpha":1.01475, "fx":[51.36641,47.35231,44.67465,48.75973], "fy":[17.22164,21.32787,16.56178,12.75004]}, - {"t":1.49508, "x":5.16457, "y":6.38883, "heading":-2.25506, "vx":-2.50385, "vy":-1.28832, "omega":-1.05748, "ax":2.82106, "ay":1.00754, "alpha":1.32999, "fx":[52.25435,47.73369,43.13835,48.81535], "fy":[17.44681,22.59638,16.93415,11.57474]}, - {"t":1.52329, "x":5.09507, "y":6.35288, "heading":-2.28489, "vx":-2.42427, "vy":-1.2599, "omega":-1.01996, "ax":2.81836, "ay":1.01622, "alpha":1.79861, "fx":[53.98521,47.11478,41.76219,48.89571], "fy":[17.35338,24.84687,17.1089,9.83332]}, - {"t":1.5515, "x":5.0278, "y":6.31775, "heading":-2.31367, "vx":-2.34477, "vy":-1.23123, "omega":-0.96923, "ax":2.80287, "ay":1.04812, "alpha":1.532, "fx":[52.86586,47.12183,42.39214,48.32455], "fy":[17.69263,24.27652,17.83219,11.51126]}, - {"t":1.57914, "x":4.96406, "y":6.28412, "heading":-2.34046, "vx":-2.26729, "vy":-1.20226, "omega":-0.92688, "ax":2.78658, "ay":1.10176, "alpha":1.27483, "fx":[51.52802,46.65342,42.93223,48.48239], "fy":[18.82404,23.99244,18.89038,13.25545]}, - {"t":1.60678, "x":4.90245, "y":6.25131, "heading":-2.36608, "vx":-2.19027, "vy":-1.17181, "omega":-0.89164, "ax":2.76861, "ay":1.14679, "alpha":1.13952, "fx":[50.9796,46.81971,43.16941,47.40436], "fy":[19.10869,24.31421,19.78265,14.82102]}, - {"t":1.63442, "x":4.84297, "y":6.21936, "heading":-2.39072, "vx":-2.11374, "vy":-1.14011, "omega":-0.86015, "ax":2.75231, "ay":1.1859, "alpha":0.93346, "fx":[50.04753,46.47923,43.837,46.90031], "fy":[20.06978,24.0949,20.40329,16.11956]}, - {"t":1.66206, "x":4.7856, "y":6.18829, "heading":-2.4145, "vx":-2.03767, "vy":-1.10733, "omega":-0.83434, "ax":2.73749, "ay":1.22018, "alpha":0.88378, "fx":[49.60228,46.47674,43.50862,46.66781], "fy":[20.25501,24.46057,21.15178,17.15249]}, - {"t":1.6897, "x":4.73032, "y":6.15815, "heading":-2.43756, "vx":-1.962, "vy":-1.0736, "omega":-0.80992, "ax":2.72398, "ay":1.25044, "alpha":0.72971, "fx":[48.87945,46.16389,44.03015,46.2628], "fy":[21.07282,24.33235,21.57613,18.0973]}, - {"t":1.71734, "x":4.67713, "y":6.12896, "heading":-2.45995, "vx":-1.88671, "vy":-1.03904, "omega":-0.78975, "ax":2.71162, "ay":1.27736, "alpha":0.72175, "fx":[48.60589,46.14433,43.64126,46.1041], "fy":[21.16315,24.76351,22.16542,18.81783]}, - {"t":1.74498, "x":4.62602, "y":6.10072, "heading":-2.48177, "vx":-1.81176, "vy":-1.00373, "omega":-0.7698, "ax":2.7003, "ay":1.30142, "alpha":0.64236, "fx":[48.2096,46.04377,43.61652,45.85536], "fy":[21.83249,24.6225,22.589,19.5033]}, - {"t":1.77262, "x":4.57697, "y":6.07348, "heading":-2.50305, "vx":-1.73712, "vy":-0.96776, "omega":-0.75204, "ax":2.68988, "ay":1.32309, "alpha":0.62396, "fx":[47.90594,45.85687,43.60626,45.64741], "fy":[21.9041,25.10749,22.98907,20.02074]}, - {"t":1.80026, "x":4.52998, "y":6.04723, "heading":-2.52384, "vx":-1.66277, "vy":-0.93119, "omega":-0.73479, "ax":2.68028, "ay":1.34267, "alpha":0.57434, "fx":[47.63449,45.77571,43.51918,45.43387], "fy":[22.46785,25.03415,23.34178,20.51003]}, - {"t":1.8279, "x":4.48505, "y":6.02201, "heading":-2.54415, "vx":-1.58869, "vy":-0.89408, "omega":-0.71892, "ax":2.6714, "ay":1.36047, "alpha":0.5819, "fx":[47.45063,45.6139,43.43493,45.25965], "fy":[22.48537,25.53691,23.68813,20.85428]}, - {"t":1.85554, "x":4.44215, "y":5.99781, "heading":-2.56402, "vx":-1.51485, "vy":-0.85647, "omega":-0.70284, "ax":2.66317, "ay":1.37671, "alpha":0.55707, "fx":[47.28109,45.55561,43.2922,45.07015], "fy":[22.94035,25.52622,24.00589,21.19721]}, - {"t":1.88318, "x":4.4013, "y":5.97467, "heading":-2.58345, "vx":-1.44123, "vy":-0.81842, "omega":-0.68744, "ax":2.65553, "ay":1.39157, "alpha":0.58403, "fx":[47.19514,45.42821,43.14758,44.90804], "fy":[22.93063,26.01905,24.32461,21.40682]}, - {"t":1.91082, "x":4.36248, "y":5.95258, "heading":-2.60245, "vx":-1.36783, "vy":-0.77996, "omega":-0.67129, "ax":2.6484, "ay":1.40525, "alpha":0.58222, "fx":[47.11173,45.39157,42.95606,44.73488], "fy":[23.29736,26.0811,24.61579,21.61724]}, - {"t":1.93847, "x":4.32568, "y":5.93156, "heading":-2.621, "vx":-1.29463, "vy":-0.74111, "omega":-0.6552, "ax":2.64176, "ay":1.41785, "alpha":0.62876, "fx":[47.11319,45.2947,42.76102,44.57319], "fy":[23.2332,26.60209,24.91903,21.71466]}, - {"t":1.96611, "x":4.29091, "y":5.91161, "heading":-2.63911, "vx":-1.22161, "vy":-0.70192, "omega":-0.63782, "ax":2.63554, "ay":1.42952, "alpha":0.64595, "fx":[47.11005,45.28932,42.52206,44.3975], "fy":[23.50686,26.70463,25.21685,21.83434]}, - {"t":1.99375, "x":4.25815, "y":5.89276, "heading":-2.65674, "vx":-1.14876, "vy":-0.66241, "omega":-0.61997, "ax":2.62971, "ay":1.44034, "alpha":0.70947, "fx":[47.18157,45.22408,42.28173,44.235], "fy":[23.41121,27.24903,25.51114,21.8275]}, - {"t":2.02139, "x":4.2274, "y":5.875, "heading":-2.67388, "vx":-1.07608, "vy":-0.6226, "omega":-0.60036, "ax":2.62424, "ay":1.4504, "alpha":0.74333, "fx":[47.24502,45.25454,41.99884,44.05162], "fy":[23.63646,27.37811,25.81489,21.85424]}, - {"t":2.04903, "x":4.19866, "y":5.85834, "heading":-2.69047, "vx":-1.00354, "vy":-0.58251, "omega":-0.57981, "ax":2.61909, "ay":1.45979, "alpha":0.82298, "fx":[47.38521,45.22449,41.71226,43.87773], "fy":[23.4742,27.94288,26.12875,21.7765]}, - {"t":2.07667, "x":4.17192, "y":5.8428, "heading":-2.7065, "vx":-0.93115, "vy":-0.54216, "omega":-0.55706, "ax":2.61424, "ay":1.46856, "alpha":0.87547, "fx":[47.51757,45.28837,41.38345,43.68019], "fy":[23.62027,28.12186,26.45221,21.72489]}, - {"t":2.10431, "x":4.14718, "y":5.82837, "heading":-2.7219, "vx":-0.85889, "vy":-0.50157, "omega":-0.53287, "ax":2.60966, "ay":1.47678, "alpha":0.97044, "fx":[47.71835,45.29524,41.05324,43.49113], "fy":[23.41846,28.70504,26.78435,21.57055]}, - {"t":2.13195, "x":4.12444, "y":5.81507, "heading":-2.73663, "vx":-0.78675, "vy":-0.46075, "omega":-0.50604, "ax":2.60533, "ay":1.48449, "alpha":1.03252, "fx":[47.90813,45.42365,40.66729,43.26435], "fy":[23.52481,28.81101,27.17716,21.49018]}, - {"t":2.15959, "x":4.10369, "y":5.80291, "heading":-2.75061, "vx":-0.71474, "vy":-0.41971, "omega":-0.4775, "ax":2.60123, "ay":1.49175, "alpha":1.13869, "fx":[48.15979,45.49649,40.27458,43.05368], "fy":[23.31233,29.30606,27.61021,21.26811]}, - {"t":2.18723, "x":4.08492, "y":5.79188, "heading":-2.76381, "vx":-0.64284, "vy":-0.37848, "omega":-0.44603, "ax":2.59734, "ay":1.49858, "alpha":1.23338, "fx":[48.43177,45.60713,39.8625,42.81881], "fy":[23.28312,29.69124,27.92036,21.06687]}, - {"t":2.21487, "x":4.06815, "y":5.78199, "heading":-2.77614, "vx":-0.57105, "vy":-0.33706, "omega":-0.41194, "ax":2.59365, "ay":1.50503, "alpha":1.35812, "fx":[48.74808,45.71762,39.42038,42.58305], "fy":[23.01972,30.22584,28.38941,20.76557]}, - {"t":2.24251, "x":4.05335, "y":5.77324, "heading":-2.78753, "vx":-0.49936, "vy":-0.29546, "omega":-0.3744, "ax":2.59015, "ay":1.51112, "alpha":1.47148, "fx":[49.08896,45.86921,38.95303,42.31941], "fy":[22.93265,30.65322,28.73362,20.49572]}, - {"t":2.27015, "x":4.04054, "y":5.76565, "heading":-2.79788, "vx":-0.42777, "vy":-0.25369, "omega":-0.33372, "ax":2.58681, "ay":1.5169, "alpha":1.61703, "fx":[49.47384,46.01436,38.45327,42.06208], "fy":[22.61108,31.24418,29.24377,20.10885]}, - {"t":2.29779, "x":4.02971, "y":5.75922, "heading":-2.8071, "vx":-0.35626, "vy":-0.21176, "omega":-0.28903, "ax":2.58363, "ay":1.52237, "alpha":1.75192, "fx":[49.89344,46.20622,37.92052,41.76712], "fy":[22.4549,31.72733,29.6306,19.76718]}, - {"t":2.32543, "x":4.02084, "y":5.75395, "heading":-2.81509, "vx":-0.28485, "vy":-0.16968, "omega":-0.2406, "ax":2.5806, "ay":1.52756, "alpha":1.91894, "fx":[50.35154,46.39043,37.35045,41.48851], "fy":[22.09493,32.36465,30.18865,19.28522]}, - {"t":2.35308, "x":4.01396, "y":5.74984, "heading":-2.82174, "vx":-0.21352, "vy":-0.12746, "omega":-0.18756, "ax":2.5777, "ay":1.5325, "alpha":2.07791, "fx":[50.85902,46.61887,36.74058,41.16543], "fy":[21.87936,32.91659,30.61885,18.85458]}, - {"t":2.38072, "x":4.00904, "y":5.74691, "heading":-2.82692, "vx":-0.14227, "vy":-0.0851, "omega":-0.13013, "ax":2.57493, "ay":1.5372, "alpha":2.2578, "fx":[51.3923,46.82751,36.1179,40.85782], "fy":[21.54164,33.64908,31.06103,18.33742]}, - {"t":2.40836, "x":4.00609, "y":5.74514, "heading":-2.83052, "vx":-0.0711, "vy":-0.04261, "omega":-0.06772, "ax":2.57229, "ay":1.54167, "alpha":2.45007, "fx":[52.00726,47.0897,35.40457,40.5139], "fy":[21.23832,34.28758,31.60161,17.76619]}, - {"t":2.436, "x":4.00511, "y":5.74455, "heading":-2.83239, "vx":0.0, "vy":0.0, "omega":0.0, "ax":0.41327, "ay":-0.90982, "alpha":0.81229, "fx":[9.79851,8.49744,4.2481,5.57419], "fy":[-16.83625,-12.81699,-14.04988,-18.20018]}, - {"t":2.47915, "x":4.00549, "y":5.74371, "heading":-2.83239, "vx":0.01783, "vy":-0.03926, "omega":0.03505, "ax":0.41346, "ay":-0.91024, "alpha":0.71059, "fx":[9.42229,8.29846,4.62274,5.78773], "fy":[-16.7344,-13.08014,-14.26461,-17.85272]}, - {"t":2.5223, "x":4.00665, "y":5.74116, "heading":-2.83088, "vx":0.03567, "vy":-0.07854, "omega":0.06571, "ax":0.41345, "ay":-0.91023, "alpha":0.61051, "fx":[9.10714,8.12753,4.951,5.94502], "fy":[-16.50834,-13.45505,-14.43334,-17.53396]}, - {"t":2.56545, "x":4.00857, "y":5.73693, "heading":-2.82805, "vx":0.05351, "vy":-0.11781, "omega":0.09206, "ax":0.41344, "ay":-0.91021, "alpha":0.53018, "fx":[8.81617,7.9648,5.2299,6.11921], "fy":[-16.42517,-13.68113,-14.57557,-17.24747]}, - {"t":2.6086, "x":4.01127, "y":5.731, "heading":-2.82407, "vx":0.07135, "vy":-0.15709, "omega":0.11493, "ax":0.41343, "ay":-0.91018, "alpha":0.45136, "fx":[8.57718,7.83274,5.48381,6.23562], "fy":[-16.22609,-13.99131,-14.70759,-17.00275]}, - {"t":2.65175, "x":4.01473, "y":5.72337, "heading":-2.81911, "vx":0.08919, "vy":-0.19636, "omega":0.13441, "ax":0.41342, "ay":-0.91015, "alpha":0.39101, "fx":[8.34911,7.70325,5.69528,6.38084], "fy":[-16.1861,-14.14141,-14.81781,-16.78054]}, - {"t":2.6949, "x":4.01896, "y":5.71405, "heading":-2.81331, "vx":0.10703, "vy":-0.23564, "omega":0.15128, "ax":0.4134, "ay":-0.91012, "alpha":0.32754, "fx":[8.1661,7.60301,5.896,6.46233], "fy":[-16.00398,-14.41108,-14.91931,-16.58918]}, - {"t":2.73805, "x":4.02397, "y":5.70304, "heading":-2.80679, "vx":0.12487, "vy":-0.27491, "omega":0.16542, "ax":0.41338, "ay":-0.91008, "alpha":0.28258, "fx":[7.9829,7.49915,6.05724,6.58687], "fy":[-16.00544,-14.4983,-15.0036,-16.41339]}, - {"t":2.7812, "x":4.02974, "y":5.69033, "heading":-2.79965, "vx":0.14271, "vy":-0.31418, "omega":0.17761, "ax":0.41336, "ay":-0.91003, "alpha":0.22966, "fx":[7.84133,7.42435,6.22056,6.63828], "fy":[-15.82834,-14.74854,-15.08038,-16.25988]}, - {"t":2.82435, "x":4.03628, "y":5.67592, "heading":-2.79198, "vx":0.16055, "vy":-0.35345, "omega":0.18752, "ax":0.41333, "ay":-0.90996, "alpha":0.19675, "fx":[7.68859,7.33864,6.34376,6.75141], "fy":[-15.87331,-14.7788,-15.14379,-16.11654]}, - {"t":2.8675, "x":4.04359, "y":5.65982, "heading":-2.78389, "vx":0.17838, "vy":-0.39271, "omega":0.19601, "ax":0.41329, "ay":-0.90986, "alpha":0.15016, "fx":[7.57801,7.28429,6.48218,6.775], "fy":[-15.68584,-15.03172,-15.20022,-15.98827]}, - {"t":2.91065, "x":4.05168, "y":5.64203, "heading":-2.77544, "vx":0.19621, "vy":-0.43197, "omega":0.20249, "ax":0.41322, "ay":-0.90973, "alpha":0.12718, "fx":[7.44282,7.20899,6.5754,6.88809], "fy":[-15.78516,-15.00134,-15.24554,-15.8648]}, - {"t":2.9538, "x":4.06053, "y":5.62254, "heading":-2.7667, "vx":0.21404, "vy":-0.47123, "omega":0.20798, "ax":0.41313, "ay":-0.90952, "alpha":0.0823, "fx":[7.35585,7.17157,6.6996,6.88171], "fy":[-15.56096,-15.28957,-15.28277,-15.74907]}, - {"t":2.99695, "x":4.07015, "y":5.60136, "heading":-2.75772, "vx":0.23187, "vy":-0.51047, "omega":0.21153, "ax":0.41295, "ay":-0.90913, "alpha":0.06881, "fx":[7.22259,7.09549,6.76495,7.0139], "fy":[-15.74604,-15.17326,-15.30729,-15.6298]}, - {"t":3.0401, "x":4.08054, "y":5.57849, "heading":-2.7486, "vx":0.24969, "vy":-0.5497, "omega":0.2145, "ax":0.41255, "ay":-0.90825, "alpha":0.0188, "fx":[7.1528,7.07224,6.88341,6.9611], "fy":[-15.42327,-15.55518,-15.31408,-15.50359]}, - {"t":3.08325, "x":4.0917, "y":5.55392, "heading":-2.73934, "vx":0.26749, "vy":-0.58889, "omega":0.21531, "ax":0.41059, "ay":-0.90392, "alpha":0.01934, "fx":[6.98165,6.95642,6.89522,7.10253], "fy":[-15.74434,-15.21501,-15.2411,-15.30123]}, - {"t":3.1264, "x":4.10362, "y":5.52767, "heading":-2.73005, "vx":0.28521, "vy":-0.6279, "omega":0.21614, "ax":-0.41042, "ay":0.90356, "alpha":0.0144, "fx":[-7.03068,-7.00074,-6.93184,-6.96154], "fy":[15.2729,15.66629,15.23568,15.30253]}, - {"t":3.16955, "x":4.11555, "y":5.50142, "heading":-2.72072, "vx":0.2675, "vy":-0.58891, "omega":0.21676, "ax":-0.41253, "ay":0.90821, "alpha":-0.04413, "fx":[-7.11693,-7.0344,-6.83832,-7.07867], "fy":[15.76971,15.21896,15.30687,15.49788]}, - {"t":3.2127, "x":4.1267, "y":5.47685, "heading":-2.71137, "vx":0.2497, "vy":-0.54972, "omega":0.21486, "ax":-0.41295, "ay":0.90912, "alpha":-0.05076, "fx":[-7.26371,-7.1127,-6.78599,-6.93409], "fy":[15.48472,15.42143,15.31331,15.63596]}, - {"t":3.25585, "x":4.13709, "y":5.45398, "heading":-2.7021, "vx":0.23188, "vy":-0.51049, "omega":0.21267, "ax":-0.41312, "ay":0.90951, "alpha":-0.09804, "fx":[-7.34522,-7.13264,-6.66336,-6.96729], "fy":[15.74905,15.0778,15.29853,15.75649]}, - {"t":3.299, "x":4.14672, "y":5.4328, "heading":-2.69292, "vx":0.21405, "vy":-0.47125, "omega":0.20844, "ax":-0.41322, "ay":0.90972, "alpha":-0.116, "fx":[-7.4838,-7.19078,-6.57463,-6.86595], "fy":[15.58631,15.14739,15.2795,15.88333]}, - {"t":3.34215, "x":4.15557, "y":5.41331, "heading":-2.68393, "vx":0.19622, "vy":-0.43199, "omega":0.20343, "ax":-0.41328, "ay":0.90986, "alpha":-0.16121, "fx":[-7.58856,-7.21661,-6.43848,-6.87575], "fy":[15.77389,14.86898,15.25189,16.0111]}, - {"t":3.3853, "x":4.16365, "y":5.39552, "heading":-2.67515, "vx":0.17839, "vy":-0.39273, "omega":0.19648, "ax":-0.41333, "ay":0.90996, "alpha":-0.18916, "fx":[-7.74242,-7.27167,-6.3189,-6.78934], "fy":[15.67504,14.86061,15.2232,16.15346]}, - {"t":3.42845, "x":4.17096, "y":5.37942, "heading":-2.66667, "vx":0.16055, "vy":-0.35346, "omega":0.18832, "ax":-0.41336, "ay":0.91002, "alpha":-0.23816, "fx":[-7.87835,-7.30517,-6.15931,-6.78165], "fy":[15.82796,14.59863,15.18661,16.30383]}, - {"t":3.4716, "x":4.17751, "y":5.36501, "heading":-2.65855, "vx":0.14272, "vy":-0.3142, "omega":0.17804, "ax":-0.41338, "ay":0.91008, "alpha":-0.27713, "fx":[-8.06095,-7.36254,-6.00135,-6.70127], "fy":[15.76664,14.52656,15.15074,16.47669]}, - {"t":3.51475, "x":4.18328, "y":5.3523, "heading":-2.65086, "vx":0.12488, "vy":-0.27493, "omega":0.16608, "ax":-0.4134, "ay":0.91012, "alpha":-0.33431, "fx":[-8.23768,-7.40551,-5.80589,-6.67832], "fy":[15.90312,14.25258,15.10483,16.66296]}, - {"t":3.5579, "x":4.18828, "y":5.34129, "heading":-2.6437, "vx":0.10704, "vy":-0.23566, "omega":0.15166, "ax":-0.41342, "ay":0.91015, "alpha":-0.38696, "fx":[-8.46345,-7.47019,-5.59864,-6.59617], "fy":[15.87037,14.11541,15.06005,16.87997]}, - {"t":3.60106, "x":4.19252, "y":5.33197, "heading":-2.63715, "vx":0.0892, "vy":-0.19638, "omega":0.13496, "ax":-0.41343, "ay":0.91018, "alpha":-0.45682, "fx":[-8.69403,-7.52592,-5.35248,-6.55689], "fy":[16.00176,13.80668,15.00232,17.11694]}, - {"t":3.64421, "x":4.19598, "y":5.32434, "heading":-2.63133, "vx":0.07136, "vy":-0.15711, "omega":0.11525, "ax":-0.41344, "ay":0.9102, "alpha":-0.5271, "fx":[-8.97969,-7.60355,-5.08094,-6.46588], "fy":[15.99581,13.59412,14.94504,17.39433]}, - {"t":3.68736, "x":4.19868, "y":5.31841, "heading":-2.62636, "vx":0.05352, "vy":-0.11783, "omega":0.0925, "ax":-0.41345, "ay":0.91023, "alpha":-0.61492, "fx":[-9.28141,-7.67752,-4.7656,-6.40613], "fy":[16.13187,13.22829,14.87058,17.69992]}, - {"t":3.73051, "x":4.2006, "y":5.31417, "heading":-2.62236, "vx":0.03568, "vy":-0.07856, "omega":0.06597, "ax":-0.41346, "ay":0.91024, "alpha":-0.70816, "fx":[-9.64748,-7.77597,-4.40989,-6.29786], "fy":[16.15579,12.92376,14.79443,18.05786]}, - {"t":3.77366, "x":4.20176, "y":5.31163, "heading":-2.61952, "vx":0.01784, "vy":-0.03928, "omega":0.03541, "ax":-0.41346, "ay":0.91026, "alpha":-0.82062, "fx":[-10.04295,-7.87747,-4.00188,-6.20937], "fy":[16.3082,12.47471,14.69506,18.45489]}, - {"t":3.81681, "x":4.20214, "y":5.31078, "heading":-2.61799, "vx":0.0, "vy":0.0, "omega":0.0, "ax":-0.45519, "ay":0.20514, "alpha":-4.01497, "fx":[-22.26435,-11.90674,7.01321,-3.81276], "fy":[7.4109,-11.28559,-0.44755,18.27962]}, - {"t":3.85789, "x":4.20176, "y":5.31095, "heading":-2.61799, "vx":-0.0187, "vy":0.00843, "omega":-0.16494, "ax":-2.7344, "ay":1.23231, "alpha":-2.84047, "fx":[-55.81163,-50.1371,-36.82948,-43.26714], "fy":[23.10796,9.57598,18.88552,32.27522]}, - {"t":3.89897, "x":4.19868, "y":5.31234, "heading":-2.62477, "vx":-0.13103, "vy":0.05905, "omega":-0.28163, "ax":-2.73437, "ay":1.2323, "alpha":-2.47934, "fx":[-54.61019,-49.70302,-38.13549,-43.59461], "fy":[22.89581,11.0452,19.02973,30.87353]}, - {"t":3.94005, "x":4.19099, "y":5.3158, "heading":-2.63634, "vx":-0.24336, "vy":0.10968, "omega":-0.38348, "ax":-2.73434, "ay":1.23229, "alpha":-2.13095, "fx":[-53.48568,-49.32577,-39.32075,-43.90887], "fy":[22.70812,12.46886,19.24662,29.42027]}, - {"t":3.98113, "x":4.17869, "y":5.32135, "heading":-2.65209, "vx":-0.35569, "vy":0.1603, "omega":-0.47102, "ax":-2.7343, "ay":1.23229, "alpha":-1.83542, "fx":[-52.47058,-49.00906,-40.40055,-44.15847], "fy":[22.58472,13.67077,19.32326,28.26463]}, - {"t":4.02221, "x":4.16177, "y":5.32898, "heading":-2.67144, "vx":-0.46802, "vy":0.21092, "omega":-0.54642, "ax":-2.73426, "ay":1.23228, "alpha":-1.54414, "fx":[-51.52768,-48.70678,-41.38021,-44.42134], "fy":[22.42161,14.87631,19.50273,27.04224]}, - {"t":4.06329, "x":4.14023, "y":5.33868, "heading":-2.69389, "vx":-0.58034, "vy":0.26155, "omega":-0.60986, "ax":-2.73422, "ay":1.23227, "alpha":-1.3015, "fx":[-50.6791,-48.44025,-42.2658,-44.64799], "fy":[22.321,15.85162,19.57953,26.09018]}, - {"t":4.10437, "x":4.11408, "y":5.35046, "heading":-2.71894, "vx":-0.69267, "vy":0.31217, "omega":-0.66332, "ax":-2.73417, "ay":1.23226, "alpha":-1.06608, "fx":[-49.89178,-48.17228,-43.07743,-44.88845], "fy":[22.17974,16.82162,19.70411,25.13627]}, - {"t":4.14545, "x":4.08332, "y":5.36433, "heading":-2.74619, "vx":-0.80499, "vy":0.36279, "omega":-0.70712, "ax":-2.73412, "ay":1.23225, "alpha":-0.85748, "fx":[-49.19877,-47.91237,-43.78643,-45.12888], "fy":[22.02741,17.65226,19.8733,24.28808]}, - {"t":4.18653, "x":4.04794, "y":5.38027, "heading":-2.77524, "vx":-0.91731, "vy":0.41341, "omega":-0.74235, "ax":-2.73406, "ay":1.23224, "alpha":-0.66018, "fx":[-48.55481,-47.64758,-44.44324,-45.3769], "fy":[21.85187,18.46605,20.0208,23.50164]}, - {"t":4.22761, "x":4.00795, "y":5.39829, "heading":-2.80574, "vx":-1.02963, "vy":0.46403, "omega":-0.76947, "ax":-2.734, "ay":1.23223, "alpha":-0.48825, "fx":[-47.99805,-47.38883,-45.00637,-45.62495], "fy":[21.67529,19.12277,20.22793,22.81349]}, - {"t":4.2687, "x":3.96335, "y":5.4184, "heading":-2.83735, "vx":-1.14194, "vy":0.51466, "omega":-0.78952, "ax":-2.73393, "ay":1.23222, "alpha":-0.3227, "fx":[-47.48255,-47.12139,-45.52693,-45.88239], "fy":[21.46192,19.8062,20.39562,22.17487]}, - {"t":4.30978, "x":3.91413, "y":5.44058, "heading":-2.86978, "vx":-1.25425, "vy":0.56528, "omega":-0.80278, "ax":-2.73385, "ay":1.2322, "alpha":-0.18278, "fx":[-47.04872,-46.86477,-45.96084,-46.13341], "fy":[21.26563,20.30025,20.63877,21.63283]}, - {"t":4.35086, "x":3.8603, "y":5.46484, "heading":-2.90276, "vx":-1.36656, "vy":0.6159, "omega":-0.81029, "ax":-2.73375, "ay":1.23218, "alpha":-0.04524, "fx":[-46.64925,-46.59778,-46.36042,-46.3939], "fy":[21.02498,20.86449,20.81745,21.12944]}, - {"t":4.39194, "x":3.80185, "y":5.49118, "heading":-2.93605, "vx":-1.47887, "vy":0.66651, "omega":-0.81215, "ax":-2.73364, "ay":1.23216, "alpha":0.0665, "fx":[-46.32681,-46.35077,-46.6793,-46.63719], "fy":[20.8185,21.21334,21.08329,20.71976]}, - {"t":4.43302, "x":3.73879, "y":5.5196, "heading":-2.96941, "vx":-1.59117, "vy":0.71713, "omega":-0.80942, "ax":-2.73352, "ay":1.23214, "alpha":0.17886, "fx":[-46.03317,-46.09214,-46.9712,-46.88898], "fy":[20.56481,21.67513,21.25497,20.33848]}, - {"t":4.4741, "x":3.67112, "y":5.5501, "heading":-3.00266, "vx":-1.70346, "vy":0.76775, "omega":-0.80207, "ax":-2.73337, "ay":1.23211, "alpha":0.26427, "fx":[-45.81332,-45.8622,-47.1887,-47.11122], "fy":[20.36589,21.88482,21.52813,20.05254]}, - {"t":4.51518, "x":3.59883, "y":5.58268, "heading":-3.03561, "vx":-1.81575, "vy":0.81837, "omega":-0.79121, "ax":-2.73319, "ay":1.23208, "alpha":0.35129, "fx":[-45.61314,-45.63386,-47.38081,-47.3354], "fy":[20.12201,22.24675,21.67467,19.78596]}, - {"t":4.55626, "x":3.52193, "y":5.61734, "heading":-3.06811, "vx":-1.92803, "vy":0.86898, "omega":-0.77678, "ax":-2.73298, "ay":1.23204, "alpha":0.41064, "fx":[-45.48551,-45.44049,-47.50544,-47.51711], "fy":[19.95018,22.32798,21.93323,19.61494]}, - {"t":4.59734, "x":3.44042, "y":5.65408, "heading":-3.10003, "vx":-2.04031, "vy":0.91959, "omega":-0.75991, "ax":-2.7327, "ay":1.23199, "alpha":0.4727, "fx":[-45.37225,-45.25467,-47.60773,-47.69521], "fy":[19.73438,22.61556,22.02405,19.44941]}, - {"t":4.63842, "x":3.3543, "y":5.6929, "heading":-3.13124, "vx":-2.15257, "vy":0.97021, "omega":-0.74049, "ax":-2.73236, "ay":1.23192, "alpha":0.50339, "fx":[-45.33232,-45.10922,-47.64877,-47.81605], "fy":[19.62132,22.55436,22.24781,19.39496]}, - {"t":4.6795, "x":3.26356, "y":5.73379, "heading":3.12152, "vx":-2.26482, "vy":1.02081, "omega":-0.71981, "ax":-2.73189, "ay":1.23184, "alpha":0.53391, "fx":[-45.29393,-45.00557,-47.65938,-47.91557], "fy":[19.47335,22.74206,22.26154,19.33634]}, - {"t":4.72059, "x":3.16822, "y":5.77677, "heading":3.09195, "vx":-2.37704, "vy":1.07142, "omega":-0.69788, "ax":-2.73124, "ay":1.23172, "alpha":0.49313, "fx":[-45.15503,-45.44105,-47.45398,-47.78052], "fy":[19.48688,22.43825,22.44634,19.43301]}, - {"t":4.76167, "x":3.06826, "y":5.82182, "heading":3.06328, "vx":-2.48925, "vy":1.12202, "omega":-0.67762, "ax":-2.73026, "ay":1.23157, "alpha":0.52425, "fx":[-45.37812,-44.94188,-47.52721,-47.91625], "fy":[19.39533,22.69498,22.26976,19.43466]}, - {"t":4.80275, "x":2.9637, "y":5.86896, "heading":3.03544, "vx":-2.60141, "vy":1.17261, "omega":-0.65608, "ax":-2.72865, "ay":1.23126, "alpha":0.42454, "fx":[-45.29994,-45.58758,-47.18084,-47.58613], "fy":[19.57591,22.17483,22.33556,19.687]}, - {"t":4.84383, "x":2.85453, "y":5.91817, "heading":3.00849, "vx":-2.7135, "vy":1.22319, "omega":-0.63864, "ax":-2.72545, "ay":1.23071, "alpha":0.39841, "fx":[-45.59994,-45.18249,-47.1328,-47.5211], "fy":[19.68954,22.2427,21.96018,19.84335]}, - {"t":4.88491, "x":2.74075, "y":5.96946, "heading":2.98226, "vx":-2.82547, "vy":1.27375, "omega":-0.62228, "ax":-2.71538, "ay":1.2306, "alpha":0.22449, "fx":[-45.49691,-45.96069,-46.50353,-46.78995], "fy":[20.09741,21.6019,21.77343,20.25557]}, - {"t":4.92599, "x":2.62239, "y":6.02282, "heading":2.95669, "vx":-2.93702, "vy":1.32431, "omega":-0.61305, "ax":-2.29224, "ay":0.99207, "alpha":0.13234, "fx":[-38.79968,-38.65247,-39.2006,-39.3083], "fy":[16.35226,17.81469,16.9065,16.42604]}, - {"t":4.96707, "x":2.4998, "y":6.07806, "heading":2.93151, "vx":-3.03118, "vy":1.36506, "omega":-0.60762, "ax":2.71765, "ay":-1.22166, "alpha":-0.00051, "fx":[45.37032,47.5906,45.88055,46.06436], "fy":[-20.37503,-21.00497,-21.24763,-20.49291]}, - {"t":5.00815, "x":2.37757, "y":6.13311, "heading":2.90655, "vx":-2.91954, "vy":1.31487, "omega":-0.60764, "ax":2.72741, "ay":-1.22539, "alpha":-0.30409, "fx":[45.91552,45.46087,46.8759,47.31723], "fy":[-19.7887,-21.79977,-21.70537,-20.08014]}, - {"t":5.04923, "x":2.25993, "y":6.18609, "heading":2.88158, "vx":-2.8075, "vy":1.26453, "omega":-0.62013, "ax":2.72981, "ay":-1.22826, "alpha":-0.35283, "fx":[45.60051,45.74621,46.86537,47.52093], "fy":[-19.56739,-21.75727,-22.23778,-20.00727]}, - {"t":5.09031, "x":2.1469, "y":6.237, "heading":2.85611, "vx":-2.69535, "vy":1.21408, "omega":-0.63463, "ax":2.73118, "ay":-1.22927, "alpha":-0.47885, "fx":[45.78863,44.91892,47.14501,47.97407], "fy":[-19.22022,-22.19987,-22.40539,-19.81254]}, - {"t":5.13139, "x":2.03848, "y":6.28584, "heading":2.83004, "vx":-2.58315, "vy":1.16358, "omega":-0.6543, "ax":2.73196, "ay":-1.22997, "alpha":-0.46363, "fx":[45.59803,45.30837,47.00489,47.96811], "fy":[-19.19316,-21.92721,-22.67777,-19.88744]}, - {"t":5.17247, "x":1.93467, "y":6.3326, "heading":2.80316, "vx":-2.47092, "vy":1.11305, "omega":-0.67334, "ax":2.7325, "ay":-1.23037, "alpha":-0.52469, "fx":[45.84161,44.74925,47.14087,48.18448], "fy":[-19.0227,-22.2106,-22.65608,-19.82388]}, - {"t":5.21356, "x":1.83547, "y":6.37729, "heading":2.7755, "vx":-2.35867, "vy":1.0625, "omega":-0.6949, "ax":2.73288, "ay":-1.23069, "alpha":-0.42922, "fx":[46.02548,45.42052,46.70794,47.78781], "fy":[-19.10652,-21.7925,-22.79148,-20.04402]}, - {"t":5.25464, "x":1.74088, "y":6.4199, "heading":2.74695, "vx":-2.2464, "vy":1.01195, "omega":-0.71253, "ax":2.73317, "ay":-1.2309, "alpha":-0.47826, "fx":[45.99931,44.87741,47.00494,48.07977], "fy":[-19.15023,-22.00309,-22.57239,-20.02345]}, - {"t":5.29572, "x":1.6509, "y":6.46043, "heading":2.71768, "vx":-2.13412, "vy":0.96138, "omega":-0.73218, "ax":2.73338, "ay":-1.23108, "alpha":-0.42269, "fx":[46.08645,45.04292,46.91494,47.93201], "fy":[-19.37593,-21.70114,-22.47251,-20.21183]}, - {"t":5.3368, "x":1.56553, "y":6.49889, "heading":2.6876, "vx":-2.02183, "vy":0.91081, "omega":-0.74954, "ax":2.73356, "ay":-1.23122, "alpha":-0.36206, "fx":[46.19551,45.25107,46.81627,47.72563], "fy":[-19.55466,-21.67382,-22.21672,-20.32544]}, - {"t":5.37788, "x":1.48478, "y":6.53527, "heading":2.65681, "vx":-1.90953, "vy":0.86023, "omega":-0.76442, "ax":2.73371, "ay":-1.23133, "alpha":-0.28045, "fx":[46.28708,45.52552,46.71899,47.4667], "fy":[-19.87637,-21.39049,-21.99041,-20.52122]}, - {"t":5.41896, "x":1.40864, "y":6.56957, "heading":2.62541, "vx":-1.79723, "vy":0.80964, "omega":-0.77594, "ax":2.73383, "ay":-1.23142, "alpha":-0.19176, "fx":[46.38315,45.82772,46.63293,47.16277], "fy":[-20.18724,-21.33121,-21.61598,-20.65031]}, - {"t":5.46004, "x":1.33712, "y":6.60179, "heading":2.59353, "vx":-1.68492, "vy":0.75905, "omega":-0.78382, "ax":2.73393, "ay":-1.23151, "alpha":-0.08496, "fx":[46.45985,46.20271,46.55413,46.79677], "fy":[-20.61296,-21.07556,-21.26545,-20.8363]}, - {"t":5.50112, "x":1.27021, "y":6.63193, "heading":2.56133, "vx":-1.57261, "vy":0.70846, "omega":-0.78731, "ax":2.73402, "ay":-1.23157, "alpha":0.03228, "fx":[46.52015,46.60878,46.49847,46.3921], "fy":[-21.05952,-21.0079,-20.76958,-20.95771]}, - {"t":5.5422, "x":1.20791, "y":6.66, "heading":2.52899, "vx":-1.46029, "vy":0.65787, "omega":-0.78598, "ax":2.73409, "ay":-1.23163, "alpha":0.16545, "fx":[46.56169,47.0865,46.46035,45.91605], "fy":[-21.59564,-20.80252,-20.28763,-21.11311]}, - {"t":5.58328, "x":1.15023, "y":6.68598, "heading":2.4967, "vx":-1.34798, "vy":0.60727, "omega":-0.77918, "ax":2.73416, "ay":-1.23168, "alpha":0.31222, "fx":[46.56934,47.59551,46.45652,45.40777], "fy":[-22.18162,-20.7593,-19.65969,-21.20174]}, - {"t":5.62436, "x":1.09716, "y":6.70989, "heading":2.46469, "vx":-1.23565, "vy":0.55667, "omega":-0.76636, "ax":2.73422, "ay":-1.23173, "alpha":0.47493, "fx":[46.55641,48.18276,46.47964,44.81428], "fy":[-22.8402,-20.61747,-19.03812,-21.30969]}, - {"t":5.66544, "x":1.0487, "y":6.73172, "heading":2.43321, "vx":-1.12333, "vy":0.50607, "omega":-0.74685, "ax":2.73427, "ay":-1.23177, "alpha":0.65423, "fx":[46.496,48.79812,46.54759,44.19496], "fy":[-23.57345,-20.62807,-18.26391,-21.34271]}, - {"t":5.70653, "x":1.00486, "y":6.75147, "heading":2.40252, "vx":-1.011, "vy":0.45547, "omega":-0.71997, "ax":2.73432, "ay":-1.23181, "alpha":0.85104, "fx":[46.41237,49.5031,46.65146,43.47288], "fy":[-24.37119,-20.55716,-17.49213,-21.39017]}, - {"t":5.74761, "x":0.96564, "y":6.76914, "heading":2.37295, "vx":-0.89868, "vy":0.40487, "omega":-0.68501, "ax":2.73436, "ay":-1.23184, "alpha":1.06803, "fx":[46.27129,50.23494,46.8076,42.72886], "fy":[-25.26818,-20.63477,-16.55718,-21.35268]}, - {"t":5.78869, "x":0.93103, "y":6.78474, "heading":2.34481, "vx":-0.78635, "vy":0.35426, "omega":-0.64113, "ax":2.7344, "ay":-1.23187, "alpha":1.3051, "fx":[46.10666,51.06899,47.00856,41.86104], "fy":[-26.22303,-20.65002,-15.6145,-21.32731]}, - {"t":5.82977, "x":0.90103, "y":6.79825, "heading":2.31847, "vx":-0.67401, "vy":0.30366, "omega":-0.58752, "ax":2.73443, "ay":-1.23189, "alpha":1.5581, "fx":[45.89631,51.92602,47.26018,40.96509], "fy":[-27.2105,-20.83028,-14.53096,-21.2449]}, - {"t":5.87085, "x":0.87565, "y":6.80968, "heading":2.29433, "vx":-0.56168, "vy":0.25305, "omega":-0.52351, "ax":2.73446, "ay":-1.23192, "alpha":1.85243, "fx":[45.6305,52.917,47.57193,39.93031], "fy":[-28.44533,-20.90391,-13.35658,-21.11251]}, - {"t":5.91193, "x":0.85488, "y":6.81904, "heading":2.27283, "vx":-0.44935, "vy":0.20244, "omega":-0.44741, "ax":2.73449, "ay":-1.23194, "alpha":2.16577, "fx":[45.3271,53.95346,47.92894,38.8422], "fy":[-29.70452,-21.0492,-12.03312,-21.03298]}, - {"t":5.95301, "x":0.83873, "y":6.82632, "heading":2.25445, "vx":-0.33701, "vy":0.15183, "omega":-0.35844, "ax":2.73452, "ay":-1.23196, "alpha":2.51398, "fx":[45.0019,55.10965,48.34131,37.60063], "fy":[-31.11176,-21.29681,-10.64267,-20.77001]}, - {"t":5.99409, "x":0.82719, "y":6.83152, "heading":2.23972, "vx":-0.22468, "vy":0.10122, "omega":-0.25516, "ax":2.73454, "ay":-1.23198, "alpha":2.8949, "fx":[44.6438,56.34231,48.79142,36.27763], "fy":[-32.64265,-21.49599,-9.03301,-20.65086]}, - {"t":6.03517, "x":0.82027, "y":6.83463, "heading":2.22924, "vx":-0.11234, "vy":0.05061, "omega":-0.13624, "ax":2.73457, "ay":-1.232, "alpha":3.31631, "fx":[44.29132,57.73674,49.27958,34.74906], "fy":[-34.32531,-21.7541,-7.35822,-20.38609]}, - {"t":6.07625, "x":0.81796, "y":6.83567, "heading":2.22364, "vx":0.0, "vy":0.0, "omega":0.0, "ax":2.81582, "ay":-1.03048, "alpha":3.5542, "fx":[45.63338,59.81267,50.75305,35.38638], "fy":[-31.959,-18.58383,-2.87187,-16.69771]}, - {"t":6.11588, "x":0.82017, "y":6.83486, "heading":2.22364, "vx":0.11159, "vy":-0.04084, "omega":0.14086, "ax":2.81652, "ay":-1.03073, "alpha":3.12083, "fx":[45.8936,58.39117,50.3744,36.97361], "fy":[-30.23919,-18.42547,-4.66188,-16.80318]}, - {"t":6.15552, "x":0.82681, "y":6.83244, "heading":2.22923, "vx":0.22322, "vy":-0.08169, "omega":0.26454, "ax":2.81649, "ay":-1.03072, "alpha":2.7232, "fx":[46.16716,57.08642,49.99567,38.38139], "fy":[-28.61623,-18.27196,-6.292,-16.94874]}, - {"t":6.19515, "x":0.83787, "y":6.82839, "heading":2.23971, "vx":0.33484, "vy":-0.12254, "omega":0.37246, "ax":2.81645, "ay":-1.03071, "alpha":2.36708, "fx":[46.47366,55.92944,49.60561,39.61961], "fy":[-27.18016,-18.03025,-7.77095,-17.14673]}, - {"t":6.23478, "x":0.85335, "y":6.82272, "heading":2.25447, "vx":0.44646, "vy":-0.16338, "omega":0.46627, "ax":2.81642, "ay":-1.03069, "alpha":2.03175, "fx":[46.76056,54.82627,49.25743,40.78154], "fy":[-25.77667,-17.96147,-9.13656,-17.25245]}, - {"t":6.27441, "x":0.87325, "y":6.81544, "heading":2.27295, "vx":0.55807, "vy":-0.20423, "omega":0.54679, "ax":2.81638, "ay":-1.03068, "alpha":1.75223, "fx":[46.9998,53.87359,48.9384,41.81123], "fy":[-24.76726,-17.65533,-10.31371,-17.38982]}, - {"t":6.31404, "x":0.89758, "y":6.80654, "heading":2.29462, "vx":0.66969, "vy":-0.24508, "omega":0.61623, "ax":2.81633, "ay":-1.03066, "alpha":1.46749, "fx":[47.25573,52.94074,48.65693,42.76657], "fy":[-23.52092,-17.60595,-11.45974,-17.53839]}, - {"t":6.35367, "x":0.92633, "y":6.79601, "heading":2.31904, "vx":0.7813, "vy":-0.28592, "omega":0.67439, "ax":2.81628, "ay":-1.03064, "alpha":1.22922, "fx":[47.45017,52.12727,48.41812,43.62104], "fy":[-22.61793,-17.37784,-12.47139,-17.6566]}, - {"t":6.3933, "x":0.95951, "y":6.78387, "heading":2.34577, "vx":0.89291, "vy":-0.32677, "omega":0.72311, "ax":2.81623, "ay":-1.03062, "alpha":0.99119, "fx":[47.63179,51.3367,48.22363,44.42073], "fy":[-21.56238,-17.40117,-13.42918,-17.72965]}, - {"t":6.43293, "x":0.99711, "y":6.77011, "heading":2.37443, "vx":1.00452, "vy":-0.36761, "omega":0.76239, "ax":2.81617, "ay":-1.0306, "alpha":0.79515, "fx":[47.75216,50.64634,48.07482,45.13534], "fy":[-20.83177,-17.2382,-14.27055,-17.78032]}, - {"t":6.47256, "x":1.03913, "y":6.75474, "heading":2.40464, "vx":1.11613, "vy":-0.40846, "omega":0.7939, "ax":2.8161, "ay":-1.03057, "alpha":0.59561, "fx":[47.85744,49.9786,47.96503,45.80288], "fy":[-19.93171,-17.34053,-15.06863,-17.77824]}, - {"t":6.51219, "x":1.08558, "y":6.73774, "heading":2.4361, "vx":1.22774, "vy":-0.4493, "omega":0.81751, "ax":2.81602, "ay":-1.03055, "alpha":0.43611, "fx":[47.90563,49.39917,47.89973,46.39409], "fy":[-19.35279,-17.24386,-15.75656,-17.76392]}, - {"t":6.55183, "x":1.13644, "y":6.71912, "heading":2.4685, "vx":1.33934, "vy":-0.49014, "omega":0.83479, "ax":2.81593, "ay":-1.03051, "alpha":0.26994, "fx":[47.94048,48.84348,47.86447,46.94409], "fy":[-18.59271,-17.42471,-16.40578,-17.69169]}, - {"t":6.59146, "x":1.19173, "y":6.69889, "heading":2.50159, "vx":1.45094, "vy":-0.53098, "omega":0.84549, "ax":2.81582, "ay":-1.03047, "alpha":0.14429, "fx":[47.92142,48.37103,47.86847,47.42455], "fy":[-18.17125,-17.36955,-16.94823,-17.62326]}, - {"t":6.63109, "x":1.25145, "y":6.67704, "heading":2.53509, "vx":1.56253, "vy":-0.57182, "omega":0.85121, "ax":2.8157, "ay":-1.03043, "alpha":0.00695, "fx":[47.90454,47.92028,47.89231,47.86013], "fy":[-17.52513,-17.63038,-17.45617,-17.49759]}, - {"t":6.67072, "x":1.31558, "y":6.65356, "heading":2.56883, "vx":1.67412, "vy":-0.61266, "omega":0.85148, "ax":2.81556, "ay":-1.03038, "alpha":-0.08791, "fx":[47.83574,47.55695,47.94425,48.23061], "fy":[-17.23999,-17.58914,-17.86926,-17.4073]}, - {"t":6.71035, "x":1.38414, "y":6.62848, "heading":2.60257, "vx":1.7857, "vy":-0.65349, "omega":0.848, "ax":2.81539, "ay":-1.03031, "alpha":-0.19567, "fx":[47.78079,47.21508,48.00738,48.55265], "fy":[-16.7285,-17.89418,-18.23433,-17.24438]}, - {"t":6.74998, "x":1.45712, "y":6.60177, "heading":2.63618, "vx":1.89728, "vy":-0.69433, "omega":0.84024, "ax":2.81518, "ay":-1.03024, "alpha":-0.25698, "fx":[47.68169,46.96553,48.08747,48.80697], "fy":[-16.60327,-17.8378,-18.5071,-17.14796]}, - {"t":6.78961, "x":1.53452, "y":6.57344, "heading":2.66948, "vx":2.00885, "vy":-0.73516, "omega":0.83006, "ax":2.81492, "ay":-1.03014, "alpha":-0.33771, "fx":[47.61238,46.72997,48.16524,49.01626], "fy":[-16.19714,-18.18922,-18.72865,-16.97459]}, - {"t":6.82924, "x":1.61635, "y":6.5435, "heading":2.70238, "vx":2.12041, "vy":-0.77598, "omega":0.81668, "ax":2.81458, "ay":-1.03002, "alpha":-0.3629, "fx":[47.5,46.60456,48.23918,49.15723], "fy":[-16.24203,-18.06454,-18.86448,-16.91008]}, - {"t":6.86887, "x":1.70259, "y":6.51194, "heading":2.73474, "vx":2.23195, "vy":-0.8168, "omega":0.80229, "ax":2.81413, "ay":-1.02985, "alpha":-0.41058, "fx":[47.44648,46.49164,48.30684,49.22549], "fy":[-15.95744,-18.42014,-18.93121,-16.76107]}, - {"t":6.9085, "x":1.79326, "y":6.47876, "heading":2.76654, "vx":2.34348, "vy":-0.85762, "omega":0.78602, "ax":2.81351, "ay":-1.02962, "alpha":-0.43793, "fx":[47.18778,46.32796,48.18792,49.72406], "fy":[-16.22308,-18.22846,-18.95568,-16.64683]}, - {"t":6.94814, "x":1.88834, "y":6.44396, "heading":2.79769, "vx":2.45498, "vy":-0.89842, "omega":0.76867, "ax":2.81257, "ay":-1.02926, "alpha":-0.4029, "fx":[47.3407,46.52118,48.35957,49.14246], "fy":[-16.02374,-18.51788,-18.81549,-16.6724]}, - {"t":6.98777, "x":1.98784, "y":6.40755, "heading":2.82815, "vx":2.56645, "vy":-0.93921, "omega":0.7527, "ax":2.81099, "ay":-1.02869, "alpha":-0.37895, "fx":[47.11898,46.48998,48.12685,49.52086], "fy":[-16.49458,-18.15188,-18.66048,-16.68398]}, - {"t":7.0274, "x":2.09176, "y":6.36952, "heading":2.85798, "vx":2.67785, "vy":-0.97998, "omega":0.73768, "ax":2.80793, "ay":-1.02731, "alpha":-0.28168, "fx":[47.34087,46.86557,48.18546,48.65616], "fy":[-16.48264,-18.20387,-18.3632,-16.8474]}, - {"t":7.06703, "x":2.20009, "y":6.32987, "heading":2.88722, "vx":2.78913, "vy":-1.02069, "omega":0.72652, "ax":2.79783, "ay":-1.02556, "alpha":-0.21765, "fx":[46.93259,46.71223,47.50158,49.21485], "fy":[-17.32758,-17.67731,-17.86933,-16.90381]}, - {"t":7.10666, "x":2.31283, "y":6.28862, "heading":2.91601, "vx":2.90001, "vy":-1.06134, "omega":0.71789, "ax":0.00068, "ay":-0.00037, "alpha":-0.00137, "fx":[0.00996,0.00895,0.01333,0.01434], "fy":[-0.00016,-0.01166,-0.01125,-0.00224]}, - {"t":7.14629, "x":2.42776, "y":6.24655, "heading":2.94446, "vx":2.90004, "vy":-1.06135, "omega":0.71784, "ax":-2.79786, "ay":1.02548, "alpha":0.21404, "fx":[-46.91146,-46.73912,-47.53084,-49.18189], "fy":[17.33908,17.70472,17.84335,16.88526]}, - {"t":7.18592, "x":2.54049, "y":6.2053, "heading":2.97291, "vx":2.78916, "vy":-1.02071, "omega":0.72632, "ax":-2.80793, "ay":1.0273, "alpha":0.28153, "fx":[-47.24002,-46.92464,-48.28457,-48.59905], "fy":[16.56146,18.30761,18.28039,16.74702]}, - {"t":7.22555, "x":2.64882, "y":6.16565, "heading":3.00169, "vx":2.67788, "vy":-0.98, "omega":0.73748, "ax":-2.81098, "ay":1.02873, "alpha":0.38065, "fx":[-46.88625,-46.56299,-48.27761,-49.52886], "fy":[16.69951,18.33715,18.50328,16.4536]}, - {"t":7.26518, "x":2.75274, "y":6.12762, "heading":3.03092, "vx":2.56647, "vy":-0.93923, "omega":0.75256, "ax":-2.81256, "ay":1.02929, "alpha":0.4043, "fx":[-47.05186,-46.68015,-48.64384,-48.98734], "fy":[16.2515,18.79913,18.59903,16.38184]}, - {"t":7.30482, "x":2.85225, "y":6.09121, "heading":3.06075, "vx":2.45501, "vy":-0.89844, "omega":0.76859, "ax":-2.8135, "ay":1.02964, "alpha":0.43118, "fx":[-46.8135,-46.54298,-48.56116,-49.50962], "fy":[16.52264,18.61448,18.66035,16.25788]}, - {"t":7.34445, "x":2.94733, "y":6.05641, "heading":3.0912, "vx":2.34351, "vy":-0.85763, "omega":0.78567, "ax":-2.81413, "ay":1.02986, "alpha":0.41386, "fx":[-46.99876,-46.73272,-48.75045,-48.98819], "fy":[16.30232,18.89563,18.58107,16.29176]}, - {"t":7.38408, "x":3.038, "y":6.02323, "heading":3.12234, "vx":2.23198, "vy":-0.81682, "omega":0.80208, "ax":-2.81458, "ay":1.03003, "alpha":0.36137, "fx":[-47.00949,-46.87358,-48.71939,-48.89824], "fy":[16.63363,18.57469,18.48004,16.3935]}, - {"t":7.42371, "x":3.12424, "y":5.99167, "heading":-3.12906, "vx":2.12044, "vy":-0.776, "omega":0.8164, "ax":-2.81492, "ay":1.03015, "alpha":0.34078, "fx":[-47.11659,-46.99634,-48.65755,-48.75314], "fy":[16.58483,18.71893,18.33475,16.45171]}, - {"t":7.46334, "x":3.20607, "y":5.96172, "heading":-3.0967, "vx":2.00888, "vy":-0.73517, "omega":0.8299, "ax":-2.81518, "ay":1.03025, "alpha":0.25541, "fx":[-47.22568,-47.21565,-48.53386,-48.56627], "fy":[16.97469,18.31059,18.14389,16.66753]}, - {"t":7.50297, "x":3.28347, "y":5.9334, "heading":-3.06381, "vx":1.89731, "vy":-0.69434, "omega":0.84003, "ax":-2.81539, "ay":1.03032, "alpha":0.19794, "fx":[-47.42207,-47.40906,-48.36499,-48.35961], "fy":[17.01717,18.27636,17.94104,16.86731]}, - {"t":7.5426, "x":3.35645, "y":5.90669, "heading":-3.03052, "vx":1.78573, "vy":-0.65351, "omega":0.84787, "ax":-2.81556, "ay":1.03038, "alpha":0.08667, "fx":[-47.63697,-47.67292,-48.13923,-48.11828], "fy":[17.40497,17.79504,17.70099,17.20513]}, - {"t":7.58223, "x":3.42501, "y":5.8816, "heading":-2.99692, "vx":1.67415, "vy":-0.61267, "omega":0.8513, "ax":-2.8157, "ay":1.03044, "alpha":-0.00477, "fx":[-47.93349,-47.91153,-47.8639,-47.86819], "fy":[17.5204,17.59587,17.45663,17.53678]}, - {"t":7.62186, "x":3.48915, "y":5.85813, "heading":-2.96318, "vx":1.56256, "vy":-0.57183, "omega":0.85112, "ax":-2.81582, "ay":1.03048, "alpha":-0.14427, "fx":[-48.25952,-48.20514,-47.52537,-47.59531], "fy":[17.92301,16.99922,17.1904,18.00002]}, - {"t":7.66149, "x":3.54886, "y":5.83627, "heading":-2.92945, "vx":1.45097, "vy":-0.531, "omega":0.8454, "ax":-2.81593, "ay":1.03052, "alpha":-0.26805, "fx":[-48.66936,-48.47019,-47.13153,-47.32132], "fy":[18.04944,16.63605,16.9428,18.48693]}, - {"t":7.70113, "x":3.60415, "y":5.81604, "heading":-2.89595, "vx":1.33937, "vy":-0.49015, "omega":0.83477, "ax":-2.81602, "ay":1.03055, "alpha":-0.43574, "fx":[-49.12284,-48.7745,-46.66589,-47.03527], "fy":[18.42031,15.92377,16.67877,19.0946]}, - {"t":7.74076, "x":3.65502, "y":5.79742, "heading":-2.86286, "vx":1.22777, "vy":-0.44931, "omega":0.81751, "ax":-2.81609, "ay":1.03058, "alpha":-0.59531, "fx":[-49.65363,-49.0534,-46.14129,-46.75553], "fy":[18.56247,15.36844,16.44454,19.74394]}, - {"t":7.78039, "x":3.70147, "y":5.78042, "heading":-2.83046, "vx":1.11616, "vy":-0.40847, "omega":0.79391, "ax":-2.81616, "ay":1.0306, "alpha":-0.79371, "fx":[-50.24463,-49.35633,-45.53248,-46.47513], "fy":[18.89084,14.53217,16.19394,20.50416]}, - {"t":7.82002, "x":3.74349, "y":5.76505, "heading":-2.799, "vx":1.00455, "vy":-0.36763, "omega":0.76246, "ax":-2.81623, "ay":1.03063, "alpha":-0.99145, "fx":[-50.91335,-49.63898,-44.86119,-46.19923], "fy":[19.01874,13.78826,15.98656,21.32907]}, - {"t":7.85965, "x":3.78109, "y":5.75129, "heading":-2.76878, "vx":0.89294, "vy":-0.32678, "omega":0.72317, "ax":-2.81628, "ay":1.03065, "alpha":-1.22701, "fx":[-51.65633,-49.93749,-44.08959,-45.9331], "fy":[19.30181,12.79261,15.7657,22.26388]}, - {"t":7.89928, "x":3.81427, "y":5.73914, "heading":-2.74012, "vx":0.78133, "vy":-0.28594, "omega":0.67454, "ax":-2.81633, "ay":1.03066, "alpha":-1.46895, "fx":[-52.47701,-50.22386,-43.25135,-45.66767], "fy":[19.40893,11.83474,15.59623,23.28533]}, - {"t":7.93891, "x":3.84302, "y":5.72862, "heading":-2.71339, "vx":0.66972, "vy":-0.24509, "omega":0.61632, "ax":-2.81638, "ay":1.03068, "alpha":-1.74841, "fx":[-53.39099,-50.52305,-42.29462,-45.41428], "fy":[19.64509,10.66217,15.40454,24.41454]}, - {"t":7.97854, "x":3.86735, "y":5.71972, "heading":-2.68897, "vx":0.5581, "vy":-0.20424, "omega":0.54703, "ax":-2.81642, "ay":1.0307, "alpha":-2.04097, "fx":[-54.3875,-50.82327,-41.26176,-45.15319], "fy":[19.67779,9.48627,15.28875,25.67454]}, - {"t":8.01817, "x":3.88726, "y":5.71243, "heading":-2.66729, "vx":0.44648, "vy":-0.1634, "omega":0.46614, "ax":-2.81645, "ay":1.03071, "alpha":-2.36924, "fx":[-55.49807,-51.14199,-40.08005,-44.90814], "fy":[19.86116,8.10866,15.18524,26.97322]}, - {"t":8.05781, "x":3.90274, "y":5.70677, "heading":-2.64881, "vx":0.33486, "vy":-0.12255, "omega":0.37225, "ax":-2.81649, "ay":1.03072, "alpha":-2.72004, "fx":[-56.65693,-51.49288,-38.8341,-44.64667], "fy":[20.02898,6.66978,15.01847,28.41188]}, - {"t":8.09744, "x":3.9138, "y":5.70272, "heading":-2.63406, "vx":0.22324, "vy":-0.0817, "omega":0.26445, "ax":-2.81652, "ay":1.03073, "alpha":-3.11417, "fx":[-57.9482,-51.8901,-37.43905,-44.35537], "fy":[20.21723,5.04583,14.8392,30.02764]}, - {"t":8.13707, "x":3.92044, "y":5.70029, "heading":-2.62358, "vx":0.11162, "vy":-0.04085, "omega":0.14103, "ax":-2.81655, "ay":1.03074, "alpha":-3.55867, "fx":[-59.37855,-52.36661,-35.89032,-43.99922], "fy":[20.44546,3.24488,14.5595,31.88078]}, - {"t":8.1767, "x":3.92265, "y":5.69948, "heading":-2.61799, "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,87,119,174] + {"t":0.0, "x":7.21552, "y":5.43911, "heading":3.14159, "vx":0.0, "vy":0.0, "omega":0.0, "ax":-2.16222, "ay":1.25243, "alpha":-0.44866, "fx":[-37.89841,-38.03638,-35.66762,-35.51231], "fy":[22.4432,20.14889,20.01818,22.60377]}, + {"t":0.04085, "x":7.21371, "y":5.44015, "heading":3.14159, "vx":-0.08833, "vy":0.05116, "omega":-0.01833, "ax":-2.16737, "ay":1.24469, "alpha":-0.39283, "fx":[-37.83876,-37.9634,-35.90023,-35.76326], "fy":[22.17524,20.1283,20.06663,22.31685]}, + {"t":0.0817, "x":7.2083, "y":5.44328, "heading":3.14084, "vx":-0.17687, "vy":0.10201, "omega":-0.03438, "ax":-2.17235, "ay":1.23592, "alpha":-0.35327, "fx":[-37.74235,-37.89351,-36.07797,-36.0905], "fy":[22.11779,19.93673,20.04921,21.98699]}, + {"t":0.12255, "x":7.19926, "y":5.44848, "heading":3.13944, "vx":-0.26561, "vy":0.1525, "omega":-0.04881, "ax":-2.17773, "ay":1.22636, "alpha":-0.29186, "fx":[-37.77224,-37.86186,-36.32099,-36.21533], "fy":[21.60207,20.12327,20.01198,21.70249]}, + {"t":0.1634, "x":7.18659, "y":5.45573, "heading":3.13745, "vx":-0.35457, "vy":0.2026, "omega":-0.06073, "ax":-2.18357, "ay":1.21587, "alpha":-0.26205, "fx":[-37.70678,-37.82941,-36.48243,-36.54869], "fy":[21.55131,19.86182,19.94055,21.37279]}, + {"t":0.20425, "x":7.17028, "y":5.46502, "heading":3.13497, "vx":-0.44377, "vy":0.25226, "omega":-0.07143, "ax":-2.18991, "ay":1.20433, "alpha":-0.20998, "fx":[-37.7819,-37.84475,-36.72713,-36.64518], "fy":[21.01547,20.00058,19.84341,21.08191]}, + {"t":0.24511, "x":7.15033, "y":5.47633, "heading":3.13205, "vx":-0.53323, "vy":0.30146, "omega":-0.08001, "ax":-2.19683, "ay":1.19157, "alpha":-0.18773, "fx":[-37.74608,-37.84624,-36.87964,-36.99809], "fy":[20.95892,19.6639,19.7149,20.73546]}, + {"t":0.28596, "x":7.12671, "y":5.48964, "heading":3.12878, "vx":-0.62297, "vy":0.35014, "omega":-0.08768, "ax":-2.20442, "ay":1.17739, "alpha":-0.14322, "fx":[-37.86719,-37.90873,-37.13609,-37.0741], "fy":[20.38359,19.74629,19.55434,20.4239]}, + {"t":0.32681, "x":7.09942, "y":5.50493, "heading":3.1252, "vx":-0.71303, "vy":0.39824, "omega":-0.09353, "ax":-2.21276, "ay":1.16153, "alpha":-0.12596, "fx":[-37.86063,-37.94182,-37.28685,-37.46435], "fy":[20.29944,19.32932,19.35927,20.0411]}, + {"t":0.36766, "x":7.06845, "y":5.52217, "heading":3.12138, "vx":-0.80342, "vy":0.44569, "omega":-0.09868, "ax":-2.22197, "ay":1.14369, "alpha":-0.08695, "fx":[-38.03376,-38.05425,-37.5682,-37.52433], "fy":[19.65957,19.35845,19.11586,19.68118]}, + {"t":0.40851, "x":7.03378, "y":5.54133, "heading":3.11734, "vx":-0.89419, "vy":0.49241, "omega":-0.10223, "ax":-2.2322, "ay":1.12346, "alpha":-0.07478, "fx":[-38.05939,-38.12366,-37.72661,-37.96648], "fy":[19.53765,18.82367,18.83902,19.23879]}, + {"t":0.44936, "x":6.99539, "y":5.56238, "heading":3.11317, "vx":-0.98538, "vy":0.5383, "omega":-0.10528, "ax":-2.2436, "ay":1.10036, "alpha":-0.04051, "fx":[-38.29215,-38.29426,-38.04598,-38.01945], "fy":[18.79727,18.76741,18.49563,18.80688]}, + {"t":0.49021, "x":6.95326, "y":5.58529, "heading":3.10887, "vx":-1.07703, "vy":0.58325, "omega":-0.10694, "ax":-2.25638, "ay":1.07372, "alpha":-0.03199, "fx":[-38.35703,-38.40585,-38.22473,-38.53377], "fy":[18.60865,18.09037,18.09697,18.25884]}, + {"t":0.53106, "x":6.90738, "y":5.61001, "heading":3.1045, "vx":-1.1692, "vy":0.62711, "omega":-0.10825, "ax":-2.27078, "ay":1.04269, "alpha":-0.00069, "fx":[-38.66327,-38.6477,-38.60007,-38.59044], "fy":[17.70495,17.91784,17.61223,17.70841]}, + {"t":0.57191, "x":6.85772, "y":5.6365, "heading":3.10008, "vx":-1.26197, "vy":0.66971, "omega":-0.10827, "ax":-2.28711, "ay":1.0061, "alpha":0.00713, "fx":[-38.77753,-38.8085,-38.81076,-39.2156], "fy":[17.37039,17.0401,17.04317,17.00036]}, + {"t":0.61276, "x":6.80426, "y":5.6647, "heading":3.09565, "vx":-1.3554, "vy":0.71081, "omega":-0.10798, "ax":-2.30572, "ay":0.96236, "alpha":0.0341, "fx":[-39.17991,-39.14789,-39.27189,-39.27873], "fy":[16.23721,16.6717,16.32935,16.2397]}, + {"t":0.65361, "x":6.74697, "y":5.69454, "heading":3.09124, "vx":-1.44959, "vy":0.75012, "omega":-0.10659, "ax":-2.32702, "ay":0.90921, "alpha":0.04083, "fx":[-39.3601,-39.37507,-39.53685,-40.05596], "fy":[15.67318,15.46733,15.47166,15.24975]}, + {"t":0.69446, "x":6.68581, "y":5.72594, "heading":3.08689, "vx":-1.54465, "vy":0.78726, "omega":-0.10492, "ax":-2.35148, "ay":0.84339, "alpha":0.06466, "fx":[-39.88997,-39.84431,-40.11763,-40.14017], "fy":[14.12187,14.74927,14.38389,14.12833]}, + {"t":0.73532, "x":6.62075, "y":5.7588, "heading":3.0826, "vx":-1.64071, "vy":0.82172, "omega":-0.10228, "ax":-2.3795, "ay":0.75999, "alpha":0.07646, "fx":[-40.15722,-40.15092,-40.45697,-41.13347], "fy":[13.04463,13.00824,13.01887,12.6369]}, + {"t":0.77617, "x":6.55174, "y":5.793, "heading":3.07842, "vx":-1.73791, "vy":0.85276, "omega":-0.09916, "ax":-2.41119, "ay":0.65138, "alpha":0.0912, "fx":[-40.84093,-40.78795,-41.19466,-41.23108], "fy":[10.77655,11.54482,11.20496,10.79284]}, + {"t":0.81702, "x":6.47873, "y":5.82838, "heading":3.07437, "vx":-1.83641, "vy":0.87937, "omega":-0.09543, "ax":-2.44559, "ay":0.50526, "alpha":0.11596, "fx":[-41.16679,-41.13786,-41.58465,-42.50606], "fy":[8.60991,8.74951,8.77355,8.24441]}, + {"t":0.85787, "x":6.40167, "y":5.86473, "heading":3.07047, "vx":-1.93632, "vy":0.90001, "omega":-0.09069, "ax":-2.47852, "ay":0.30101, "alpha":0.11822, "fx":[-41.91686,-41.86577,-42.40376,-42.44903], "fy":[4.73093,5.64385,5.34007,4.76579]}, + {"t":0.89872, "x":6.3205, "y":5.90175, "heading":3.06677, "vx":-2.03757, "vy":0.91231, "omega":-0.08587, "ax":-2.49603, "ay":0.00356, "alpha":0.16693, "fx":[-41.88824,-41.84221,-42.44629,-43.65006], "fy":[-0.16515,0.31959,0.37158,-0.28383]}, + {"t":0.93957, "x":6.23518, "y":5.93902, "heading":3.06326, "vx":-2.13953, "vy":0.91246, "omega":-0.07905, "ax":-2.45545, "ay":-0.44296, "alpha":0.13571, "fx":[-41.43328,-41.39051,-42.10187,-42.14038], "fy":[-7.94428,-7.222,-7.10575,-7.86674]}, + {"t":0.98042, "x":6.14573, "y":5.97592, "heading":3.06003, "vx":-2.23984, "vy":0.89436, "omega":-0.0735, "ax":-2.24105, "ay":-1.09432, "alpha":0.23685, "fx":[-37.41748,-37.42276,-38.24674,-39.39128], "fy":[-19.49211,-18.13124,-18.023,-18.80975]}, + {"t":1.02127, "x":6.05236, "y":6.01154, "heading":3.05703, "vx":-2.33139, "vy":0.84966, "omega":-0.06383, "ax":-1.65802, "ay":-1.86193, "alpha":0.15644, "fx":[-27.72897,-27.64425,-28.7055,-28.73109], "fy":[-32.04284,-31.79039,-30.94367,-31.90675]}, + {"t":1.06212, "x":5.95574, "y":6.0447, "heading":3.05442, "vx":-2.39912, "vy":0.7736, "omega":-0.05744, "ax":-0.7453, "ay":-2.37945, "alpha":0.29239, "fx":[-11.96991,-11.9482,-13.13383,-13.65739], "fy":[-41.91846,-39.72324,-39.59398,-40.65957]}, + {"t":1.10297, "x":5.85711, "y":6.07432, "heading":3.05208, "vx":-2.42957, "vy":0.67639, "omega":-0.04549, "ax":0.08144, "ay":-2.49318, "alpha":0.20674, "fx":[2.02799,2.15402,0.74448,0.61448], "fy":[-42.83727,-42.58924,-41.47634,-42.73034]}, + {"t":1.14382, "x":5.75793, "y":6.09987, "heading":3.05022, "vx":-2.42624, "vy":0.57454, "omega":-0.03705, "ax":0.63488, "ay":-2.41347, "alpha":0.32031, "fx":[11.39637,11.64544,10.03527,10.11951], "fy":[-42.55221,-40.12305,-40.0314,-41.50289]}, + {"t":1.18467, "x":5.65935, "y":6.12132, "heading":3.0487, "vx":-2.4003, "vy":0.47595, "omega":-0.02396, "ax":0.98135, "ay":-2.29542, "alpha":0.30555, "fx":[17.52286,17.7303,15.88949,15.62731], "fy":[-39.76376,-38.79904,-37.92895,-39.68584]}, + {"t":1.22553, "x":5.56211, "y":6.13885, "heading":3.04773, "vx":-2.36021, "vy":0.38218, "omega":-0.01148, "ax":1.20473, "ay":-2.18715, "alpha":0.40975, "fx":[21.26074,21.66563,19.46437,19.57764], "fy":[-38.82611,-36.03388,-35.95134,-37.99976]}, + {"t":1.26638, "x":5.4667, "y":6.15264, "heading":3.04726, "vx":-2.311, "vy":0.29284, "omega":0.00526, "ax":1.35619, "ay":-2.09713, "alpha":0.44341, "fx":[24.15779,24.50896,22.00178,21.60484], "fy":[-36.80027,-34.89131,-34.26812,-36.72688]}, + {"t":1.30723, "x":5.37342, "y":6.16285, "heading":3.04747, "vx":-2.2556, "vy":0.20717, "omega":0.02337, "ax":1.46393, "ay":-2.02381, "alpha":0.54871, "fx":[25.98579,26.53608,23.55153,23.53088], "fy":[-36.32062,-32.90203,-32.81084,-35.66406]}, + {"t":1.34808, "x":5.2825, "y":6.16963, "heading":3.04843, "vx":-2.1958, "vy":0.12449, "omega":0.04579, "ax":1.54378, "ay":-1.96391, "alpha":0.62127, "fx":[27.70998,28.23712,24.82079,24.26893], "fy":[-35.03993,-32.04822,-31.56822,-34.96609]}, + {"t":1.38893, "x":5.19409, "y":6.17307, "heading":3.0503, "vx":-2.13273, "vy":0.04426, "omega":0.07117, "ax":1.60497, "ay":-1.9145, "alpha":0.73724, "fx":[28.82432,29.53574,25.50546,25.33501], "fy":[-34.87384,-30.55517,-30.45348,-34.3779]}, + {"t":1.42978, "x":5.10831, "y":6.17328, "heading":3.0532, "vx":-2.06717, "vy":-0.03395, "omega":0.10128, "ax":1.6532, "ay":-1.87324, "alpha":0.85109, "fx":[30.06343,30.79342,26.17669,25.44809], "fy":[-34.13034,-29.81741,-29.43528,-34.07023]}, + {"t":1.47063, "x":5.02524, "y":6.17033, "heading":3.05734, "vx":-1.99963, "vy":-0.11047, "omega":0.13605, "ax":1.69208, "ay":-1.83838, "alpha":0.99551, "fx":[30.90969,31.81601,26.41245,25.98927], "fy":[-34.20838,-28.57563,-28.47665,-33.82084]}, + {"t":1.51148, "x":4.94497, "y":6.16429, "heading":3.0629, "vx":-1.93051, "vy":-0.18557, "omega":0.17672, "ax":1.72405, "ay":-1.8086, "alpha":1.14805, "fx":[31.93381,32.88577,26.69806,25.78478], "fy":[-33.82074,-27.84664,-27.56862,-33.81918]}, + {"t":1.55233, "x":4.86754, "y":6.1552, "heading":3.07012, "vx":-1.86008, "vy":-0.25945, "omega":0.22362, "ax":1.75076, "ay":-1.7829, "alpha":1.32967, "fx":[32.70778,33.81718,26.61694,25.9779], "fy":[-34.07352,-26.71293,-26.66381,-33.85609]}, + {"t":1.59318, "x":4.79302, "y":6.14311, "heading":3.07925, "vx":-1.78856, "vy":-0.33228, "omega":0.27794, "ax":1.77339, "ay":-1.76051, "alpha":1.53079, "fx":[33.67746,34.84032,26.6047,25.53719], "fy":[-33.97347,-25.90149,-25.77806,-34.13012]}, + {"t":1.63403, "x":4.72143, "y":6.12807, "heading":3.09061, "vx":-1.71612, "vy":-0.4042, "omega":0.34047, "ax":1.7928, "ay":-1.74085, "alpha":1.76215, "fx":[34.50243,35.78232,26.2361,25.45933], "fy":[-34.37041,-24.75475,-24.86484,-34.45546]}, + {"t":1.67488, "x":4.65282, "y":6.1101, "heading":3.10452, "vx":-1.64288, "vy":-0.47532, "omega":0.41246, "ax":1.80962, "ay":-1.72346, "alpha":2.02413, "fx":[35.53509,36.83716,25.93,24.82224], "fy":[-34.51114,-23.77118,-23.95297,-35.02672]}, + {"t":1.71574, "x":4.58722, "y":6.08925, "heading":3.12137, "vx":-1.56895, "vy":-0.54572, "omega":0.49514, "ax":1.82433, "ay":-1.70796, "alpha":2.32145, "fx":[36.58953,37.84351,25.23419,24.45802], "fy":[-34.78564,-22.51808,-23.02946,-35.87478]}, + {"t":1.75659, "x":4.52465, "y":6.06553, "heading":3.14159, "vx":-1.49443, "vy":-0.61549, "omega":0.58998, "ax":1.8722, "ay":-1.65274, "alpha":1.4425, "fx":[35.43193,36.00784,28.2234,27.71928], "fy":[-31.68306,-24.20757,-24.27764,-32.28208]}, + {"t":1.78525, "x":4.48259, "y":6.04721, "heading":-3.12468, "vx":-1.44077, "vy":-0.66286, "omega":0.63132, "ax":1.96143, "ay":-1.54782, "alpha":1.27395, "fx":[36.44197,36.88406,30.01615,30.11114], "fy":[-29.6777,-22.51317,-23.06646,-30.0547]}, + {"t":1.8139, "x":4.4421, "y":6.02758, "heading":-3.10659, "vx":-1.38456, "vy":-0.70722, "omega":0.66783, "ax":2.05299, "ay":-1.42401, "alpha":1.11176, "fx":[37.73897,37.96358,32.0813,31.89905], "fy":[-26.92543,-20.96821,-21.40429,-27.58985]}, + {"t":1.84256, "x":4.40326, "y":6.00673, "heading":-3.08745, "vx":-1.32572, "vy":-0.74803, "omega":0.69969, "ax":2.14596, "ay":-1.27945, "alpha":0.95406, "fx":[38.85966,38.96026,33.8655,34.32332], "fy":[-24.2677,-18.76395,-19.35514,-24.66538]}, + {"t":1.87122, "x":4.36615, "y":5.98476, "heading":-3.0674, "vx":-1.26422, "vy":-0.7847, "omega":0.72703, "ax":2.23742, "ay":-1.11161, "alpha":0.81238, "fx":[40.18659,40.13645,35.92085,35.9874], "fy":[-20.84638,-16.43431,-16.88688,-21.46529]}, + {"t":1.89988, "x":4.33084, "y":5.96182, "heading":-3.04656, "vx":-1.2001, "vy":-0.81656, "omega":0.75031, "ax":2.32323, "ay":-0.91864, "alpha":0.66049, "fx":[41.18699,41.05728,37.55416,38.2716], "fy":[-17.35943,-13.44568,-13.97428,-17.72411]}, + {"t":1.92854, "x":4.2974, "y":5.93804, "heading":-3.02506, "vx":-1.13352, "vy":-0.84288, "omega":0.76924, "ax":2.3981, "ay":-0.70004, "alpha":0.53587, "fx":[42.24531,42.04641,39.3333,39.53901], "fy":[-13.16952,-10.19809,-10.60945,-13.65269]}, + {"t":1.9572, "x":4.2659, "y":5.9136, "heading":-3.00301, "vx":-1.06479, "vy":-0.86295, "omega":0.7846, "ax":2.45589, "ay":-0.45742, "alpha":0.38044, "fx":[42.75227,42.52919,40.48726,41.32717], "fy":[-8.75273,-6.46067,-6.8322,-9.0767]}, + {"t":1.98586, "x":4.23639, "y":5.88868, "heading":-2.98053, "vx":-0.99441, "vy":-0.87606, "omega":0.7955, "ax":2.49044, "ay":-0.19518, "alpha":0.27045, "fx":[43.11782,42.92326,41.60417,41.80152], "fy":[-3.95639,-2.38788,-2.70755,-4.22797]}, + {"t":2.01452, "x":4.20892, "y":5.86349, "heading":-2.95773, "vx":-0.92303, "vy":-0.88165, "omega":0.80325, "ax":2.49679, "ay":0.07941, "alpha":0.10584, "fx":[42.70549,42.58103,41.92431,42.66789], "fy":[1.12829,1.76509,1.62876,0.8809]}, + {"t":2.04318, "x":4.18349, "y":5.83825, "heading":-2.93471, "vx":-0.85148, "vy":-0.87937, "omega":0.80629, "ax":2.47242, "ay":0.35689, "alpha":0.00423, "fx":[42.03724,42.03891,42.07584,42.06896], "fy":[6.03604,6.19079,6.01416,6.04161]}, + {"t":2.07184, "x":4.1601, "y":5.8132, "heading":-2.9116, "vx":-0.78062, "vy":-0.86915, "omega":0.80641, "ax":2.41808, "ay":0.6271, "alpha":-0.17465, "fx":[40.51714,40.72684,41.44808,41.83137], "fy":[11.19568,10.12127,10.28756,11.06261]}, + {"t":2.1005, "x":4.13872, "y":5.78855, "heading":-2.88849, "vx":-0.71132, "vy":-0.85117, "omega":0.8014, "ax":2.33763, "ay":0.88094, "alpha":-0.27667, "fx":[38.83739,39.26321,40.6954,40.25398], "fy":[15.55241,14.20261,14.28985,15.89308]}, + {"t":2.12916, "x":4.1193, "y":5.76452, "heading":-2.86552, "vx":-0.64432, "vy":-0.82593, "omega":0.79347, "ax":2.23714, "ay":1.11179, "alpha":-0.46953, "fx":[36.43948,37.22416,39.3905,39.15852], "fy":[20.12214,17.35469,17.91263,20.25561]}, + {"t":2.15781, "x":4.10175, "y":5.7413, "heading":-2.84278, "vx":-0.58021, "vy":-0.79406, "omega":0.78002, "ax":2.12348, "ay":1.3161, "alpha":-0.58027, "fx":[34.11552,35.20374,38.13541,37.02417], "fy":[23.53461,20.60881,21.09745,24.30481]}, + {"t":2.18647, "x":4.08599, "y":5.71908, "heading":-2.82043, "vx":-0.51935, "vy":-0.75634, "omega":0.76339, "ax":2.00309, "ay":1.49308, "alpha":-0.7882, "fx":[31.29167,32.87456,36.60929,35.5127], "fy":[27.22116,22.7438,23.82982,27.79237]}, + {"t":2.21513, "x":4.07193, "y":5.69802, "heading":-2.79855, "vx":-0.46195, "vy":-0.71355, "omega":0.7408, "ax":1.88131, "ay":1.64401, "alpha":-0.91461, "fx":[28.72793,30.70936,35.28637,33.27819], "fy":[29.65362,25.06784,26.1396,30.99548]}, + {"t":2.24379, "x":4.05946, "y":5.67825, "heading":-2.77732, "vx":-0.40803, "vy":-0.66644, "omega":0.71459, "ax":1.762, "ay":1.77139, "alpha":-1.1389, "fx":[25.84548,28.43696,33.89688,31.70536], "fy":[32.48537,26.2624,28.06096,33.71492]}, + {"t":2.27245, "x":4.04849, "y":5.65987, "heading":-2.75684, "vx":-0.35753, "vy":-0.61567, "omega":0.68195, "ax":1.64776, "ay":1.87824, "alpha":-1.2886, "fx":[23.28694,26.3907,32.78196,29.65188], "fy":[34.14267,27.76202,29.65424,36.23455]}, + {"t":2.30111, "x":4.03892, "y":5.643, "heading":-2.7373, "vx":-0.31031, "vy":-0.56184, "omega":0.64502, "ax":1.54006, "ay":1.96761, "alpha":-1.53122, "fx":[20.52989,24.34589,31.71443,28.19359], "fy":[36.30714,28.22047,30.95037,38.39621]}, + {"t":2.32977, "x":4.03066, "y":5.62771, "heading":-2.71881, "vx":-0.26617, "vy":-0.50545, "omega":0.60113, "ax":1.43961, "ay":2.04234, "alpha":-1.68806, "fx":[18.05086,22.50582,30.90675,26.48605], "fy":[37.5006,29.16301,32.1227,40.17239]}, + {"t":2.35843, "x":4.02363, "y":5.61406, "heading":-2.70158, "vx":-0.22491, "vy":-0.44692, "omega":0.55276, "ax":1.34658, "ay":2.10492, "alpha":-1.95274, "fx":[15.45742,20.72188,30.2127,25.2278], "fy":[39.16018,29.08458,32.97596,41.99589]}, + {"t":2.38709, "x":4.01773, "y":5.60212, "heading":-2.68574, "vx":-0.18632, "vy":-0.3866, "omega":0.49679, "ax":1.26079, "ay":2.15747, "alpha":-2.16544, "fx":[13.09199,19.13405,29.7863,23.77061], "fy":[39.92648,29.41385,33.69688,43.75491]}, + {"t":2.41575, "x":4.01291, "y":5.59192, "heading":-2.6715, "vx":-0.15019, "vy":-0.32476, "omega":0.43473, "ax":1.18188, "ay":2.20176, "alpha":-2.45595, "fx":[10.64211,17.58758,29.4699,22.71403], "fy":[41.25365,28.9354,34.2412,45.37509]}, + {"t":2.44441, "x":4.00909, "y":5.58352, "heading":-2.65904, "vx":-0.11632, "vy":-0.26166, "omega":0.36435, "ax":1.10936, "ay":2.23924, "alpha":-2.70851, "fx":[8.33562,16.19588,29.40232,21.54572], "fy":[41.81103,28.85429,34.7049,46.98484]}, + {"t":2.47307, "x":4.00621, "y":5.57694, "heading":-2.6486, "vx":-0.08452, "vy":-0.19749, "omega":0.28672, "ax":1.04272, "ay":2.27109, "alpha":-3.01022, "fx":[6.03397,14.83512,29.41509,20.6616], "fy":[42.42859,28.20217,35.24947,48.64183]}, + {"t":2.50172, "x":4.00422, "y":5.57221, "heading":-2.64038, "vx":-0.05464, "vy":-0.1324, "omega":0.20045, "ax":0.98146, "ay":2.29828, "alpha":-3.31878, "fx":[3.70169,13.56959,29.71537,19.79067], "fy":[43.16274,27.72231,35.37056,50.11644]}, + {"t":2.53038, "x":4.00306, "y":5.56936, "heading":-2.63464, "vx":-0.02651, "vy":-0.06653, "omega":0.10534, "ax":0.92507, "ay":2.32159, "alpha":-3.67557, "fx":[1.40623,12.32169,30.08888,19.12367], "fy":[43.95319,26.67356,35.61907,51.7127]}, + {"t":2.55904, "x":4.00268, "y":5.56841, "heading":-2.63162, "vx":0.0, "vy":0.0, "omega":0.0, "ax":1.52933, "ay":-1.97531, "alpha":1.57288, "fx":[31.83491,28.05185,20.12224,24.04502], "fy":[-34.8629,-27.95449,-32.35916,-39.22126]}, + {"t":2.60501, "x":4.00429, "y":5.56632, "heading":-2.63162, "vx":0.0703, "vy":-0.0908, "omega":0.0723, "ax":5.52004, "ay":-7.12977, "alpha":-0.00009, "fx":[93.89396,93.89385,93.8946,93.89471], "fy":[-121.27561,-121.27569,-121.27511,-121.27503]}, + {"t":2.65097, "x":4.01336, "y":5.55462, "heading":-2.6283, "vx":0.32402, "vy":-0.41852, "omega":0.07229, "ax":5.51703, "ay":-7.12588, "alpha":-0.00429, "fx":[93.82769,93.82246,93.85845,93.86369], "fy":[-121.22096,-121.22509,-121.19724,-121.1931]}, + {"t":2.69694, "x":4.03408, "y":5.52785, "heading":-2.62497, "vx":0.57762, "vy":-0.74606, "omega":0.0721, "ax":5.50807, "ay":-7.11428, "alpha":-0.01776, "fx":[93.62666,93.60578,93.75456,93.77562], "fy":[-121.06095,-121.0778,-120.96274,-120.9457]}, + {"t":2.7429, "x":4.06645, "y":5.48604, "heading":-2.62166, "vx":0.83079, "vy":-1.07307, "omega":0.07128, "ax":3.9916, "ay":-5.1558, "alpha":-1.46213, "fx":[62.50107,64.73494,73.16369,71.18404], "fy":[-88.04344,-93.03582,-87.43658,-82.27876]}, + {"t":2.78887, "x":4.10885, "y":5.43127, "heading":-2.61838, "vx":1.01427, "vy":-1.31005, "omega":0.00407, "ax":-5.50765, "ay":7.11383, "alpha":-0.03617, "fx":[-93.81475,-93.85584,-93.55201,-93.51171], "fy":[120.90358,120.87022,121.10533,121.13792]}, + {"t":2.83483, "x":4.14965, "y":5.37857, "heading":-2.6182, "vx":0.76111, "vy":-0.98306, "omega":0.00241, "ax":-5.51691, "ay":7.12577, "alpha":-0.02124, "fx":[-93.91823,-93.94243,-93.76393,-93.73996], "fy":[121.14789,121.12867,121.26684,121.28582]}, + {"t":2.8808, "x":4.17881, "y":5.34091, "heading":-2.61809, "vx":0.50752, "vy":-0.65553, "omega":0.00143, "ax":-5.51998, "ay":7.12973, "alpha":-0.01671, "fx":[-93.95401,-93.97308,-93.8326,-93.81368], "fy":[121.22778,121.21276,121.32151,121.33638]}, + {"t":2.92676, "x":4.19631, "y":5.31831, "heading":-2.61802, "vx":0.2538, "vy":-0.32781, "omega":0.00067, "ax":-5.52151, "ay":7.1317, "alpha":-0.01451, "fx":[-93.97207,-93.98865,-93.86665,-93.85019], "fy":[121.26749,121.25449,121.34894,121.36182]}, + {"t":2.97273, "x":4.20214, "y":5.31078, "heading":-2.61799, "vx":0.0, "vy":0.0, "omega":0.0, "ax":-2.05036, "ay":0.92388, "alpha":-2.69953, "fx":[-43.88746,-38.34753,-25.26513,-32.00428], "fy":[18.05669,5.27364,13.38991,26.13919]}, + {"t":3.01417, "x":4.20038, "y":5.31157, "heading":-2.61799, "vx":-0.08497, "vy":0.03829, "omega":-0.11188, "ax":-2.05085, "ay":0.92409, "alpha":-2.35468, "fx":[-42.96845,-37.60674,-26.58418,-32.3781], "fy":[17.73477,6.64467,13.69988,24.79497]}, + {"t":3.05561, "x":4.1951, "y":5.31395, "heading":-2.62263, "vx":-0.16997, "vy":0.07659, "omega":-0.20946, "ax":-2.05083, "ay":0.92409, "alpha":-2.04343, "fx":[-41.7349,-37.4738,-27.67347,-32.65406], "fy":[17.52443,7.81022,13.92426,23.61481]}, + {"t":3.09706, "x":4.18629, "y":5.31792, "heading":-2.63131, "vx":-0.25496, "vy":0.11488, "omega":-0.29415, "ax":-2.05081, "ay":0.92408, "alpha":-1.77121, "fx":[-40.96385,-36.9935,-28.6825,-32.89507], "fy":[17.32151,8.92531,14.10155,22.52472]}, + {"t":3.1385, "x":4.17396, "y":5.32348, "heading":-2.6435, "vx":-0.33995, "vy":0.15318, "omega":-0.36755, "ax":-2.05079, "ay":0.92407, "alpha":-1.52207, "fx":[-39.91042,-36.97253,-29.55688,-33.09365], "fy":[17.19159,9.84599,14.2558,21.57905]}, + {"t":3.17994, "x":4.15811, "y":5.33062, "heading":-2.65873, "vx":-0.42494, "vy":0.19147, "omega":-0.43063, "ax":-2.05077, "ay":0.92406, "alpha":-1.30297, "fx":[-39.33255,-36.54673,-30.36965,-33.28302], "fy":[17.02824,10.77136,14.3817,20.6904]}, + {"t":3.22139, "x":4.13874, "y":5.33935, "heading":-2.67658, "vx":-0.50993, "vy":0.22977, "omega":-0.48463, "ax":-2.05074, "ay":0.92404, "alpha":-1.11722, "fx":[-38.59367,-36.53779,-31.00892,-33.38991], "fy":[16.91498,11.49261,14.5203,19.94303]}, + {"t":3.26283, "x":4.11585, "y":5.34966, "heading":-2.69666, "vx":-0.59492, "vy":0.26806, "omega":-0.53093, "ax":-2.05072, "ay":0.92403, "alpha":-0.92575, "fx":[-38.01353,-36.17806,-31.72063,-33.61627], "fy":[16.77523,12.26068,14.62294,19.21123]}, + {"t":3.30427, "x":4.08943, "y":5.36156, "heading":-2.71866, "vx":-0.67991, "vy":0.30636, "omega":-0.56929, "ax":-2.05069, "ay":0.92402, "alpha":-0.78005, "fx":[-37.4008,-36.20511,-32.21405,-33.70658], "fy":[16.67427,12.81114,14.76342,18.62032]}, + {"t":3.34571, "x":4.05949, "y":5.37505, "heading":-2.74226, "vx":-0.76489, "vy":0.34465, "omega":-0.60162, "ax":-2.05066, "ay":0.924, "alpha":-0.62104, "fx":[-36.95519,-35.84376,-32.7959,-33.92954], "fy":[16.52541,13.45741,14.86176,18.02355]}, + {"t":3.38716, "x":4.02603, "y":5.39013, "heading":-2.76719, "vx":-0.84988, "vy":0.38295, "omega":-0.62736, "ax":-2.05062, "ay":0.92399, "alpha":-0.50804, "fx":[-36.44604,-35.89742,-33.16781,-34.01077], "fy":[16.42766,13.86406,15.01297,17.56234]}, + {"t":3.4286, "x":3.98905, "y":5.4068, "heading":-2.79319, "vx":-0.93486, "vy":0.42124, "omega":-0.64842, "ax":-2.05058, "ay":0.92397, "alpha":-0.37427, "fx":[-36.1144,-35.52417,-33.64441,-34.23647], "fy":[16.2647,14.41449,15.1102,17.07643]}, + {"t":3.47004, "x":3.94855, "y":5.42505, "heading":-2.82006, "vx":-1.01984, "vy":0.45953, "omega":-0.66393, "ax":-2.05054, "ay":0.92395, "alpha":-0.28865, "fx":[-35.68943,-35.60592,-33.91288,-34.30835], "fy":[16.16901,14.69694,15.27401,16.7245]}, + {"t":3.51149, "x":3.90452, "y":5.44488, "heading":-2.84758, "vx":-1.10482, "vy":0.49782, "omega":-0.67589, "ax":-2.0505, "ay":0.92393, "alpha":-0.17479, "fx":[-35.45629,-35.21432,-34.30445,-34.53832], "fy":[15.99405,15.1704,15.36692,16.33157]}, + {"t":3.55293, "x":3.85697, "y":5.46631, "heading":-2.87559, "vx":-1.1898, "vy":0.53611, "omega":-0.68313, "ax":-2.05044, "ay":0.9239, "alpha":-0.11274, "fx":[-35.0987,-35.33303,-34.48214,-34.59591], "fy":[15.90249,15.34439,15.54209,16.0723]}, + {"t":3.59437, "x":3.8059, "y":5.48932, "heading":-2.9039, "vx":-1.27478, "vy":0.5744, "omega":-0.6878, "ax":-2.05038, "ay":0.92387, "alpha":-0.01415, "fx":[-34.95326,-34.91648,-34.80611,-34.82989], "fy":[15.71805,15.76072,15.62488,15.75568]}, + {"t":3.63581, "x":3.75131, "y":5.51392, "heading":-2.9324, "vx":-1.35975, "vy":0.61269, "omega":-0.68839, "ax":-2.05032, "ay":0.92384, "alpha":0.02683, "fx":[-34.65185,-35.07511,-34.90527,-34.86889], "fy":[15.63723,15.83443,15.80719,15.57834]}, + {"t":3.67726, "x":3.6932, "y":5.5401, "heading":-2.96093, "vx":-1.44472, "vy":0.65098, "omega":-0.68728, "ax":-2.05024, "ay":0.92381, "alpha":0.11284, "fx":[-34.58282,-34.63867,-35.1727,-35.10165], "fy":[15.4493,16.20653,15.87272,15.32613]}, + {"t":3.7187, "x":3.63157, "y":5.56788, "heading":-2.98941, "vx":-1.52969, "vy":0.68926, "omega":-0.6826, "ax":-2.05015, "ay":0.92376, "alpha":0.13368, "fx":[-34.3243,-34.85572,-35.19796,-35.11171], "fy":[15.38641,16.18648,16.05688,15.22202]}, + {"t":3.76014, "x":3.56641, "y":5.59723, "heading":-3.0177, "vx":-1.61466, "vy":0.72754, "omega":-0.67706, "ax":-2.05004, "ay":0.92371, "alpha":0.20898, "fx":[-34.32736,-34.392,-35.42194,-35.34122], "fy":[15.2042,16.51877,16.09839,15.02697]}, + {"t":3.80159, "x":3.49773, "y":5.62818, "heading":-3.04576, "vx":-1.69961, "vy":0.76583, "omega":-0.6684, "ax":-2.04992, "ay":0.92365, "alpha":0.20932, "fx":[-34.09798,-34.69623,-35.37228,-35.30743], "fy":[15.16584,16.41453,16.27574,14.98823]}, + {"t":3.84303, "x":3.42554, "y":5.66071, "heading":-3.07346, "vx":-1.78457, "vy":0.80411, "omega":-0.65973, "ax":-2.04976, "ay":0.92358, "alpha":0.2763, "fx":[-34.1743,-34.18941,-35.56657,-35.53328], "fy":[14.99529,16.72377,16.27944,14.84088]}, + {"t":3.88447, "x":3.34982, "y":5.69483, "heading":-3.1008, "vx":-1.86952, "vy":0.84238, "omega":-0.64828, "ax":-2.04957, "ay":0.92349, "alpha":0.2542, "fx":[-33.96735,-34.59898,-35.44203,-35.44235], "fy":[14.99447,16.52853,16.44359,14.8668]}, + {"t":3.92591, "x":3.27058, "y":5.73053, "heading":-3.12767, "vx":-1.95446, "vy":0.88065, "omega":-0.63774, "ax":-2.04934, "ay":0.92338, "alpha":0.31442, "fx":[-34.11533,-34.0487,-35.61336,-35.65712], "fy":[14.83827,16.8461,16.38677,14.75449]}, + {"t":3.96736, "x":3.18782, "y":5.76782, "heading":3.12908, "vx":-2.03939, "vy":0.91892, "omega":-0.62471, "ax":-2.04902, "ay":0.92323, "alpha":0.26319, "fx":[-33.91601,-34.61652,-35.3999,-35.48079], "fy":[14.8975,16.52941,16.53465,14.85413]}, + {"t":4.0088, "x":3.10154, "y":5.8067, "heading":3.10319, "vx":-2.12431, "vy":0.95718, "omega":-0.6138, "ax":-2.0486, "ay":0.92303, "alpha":0.31563, "fx":[-34.14508,-33.99787,-35.56023,-35.6812], "fy":[14.77616,16.84532,16.40112,14.77918]}, + {"t":4.05024, "x":3.01175, "y":5.84716, "heading":3.07776, "vx":-2.20921, "vy":0.99543, "omega":-0.60072, "ax":-2.04798, "ay":0.92274, "alpha":0.2301, "fx":[-33.94767,-34.76127,-35.24427,-35.38928], "fy":[14.90867,16.41209,16.50923,14.95222]}, + {"t":4.09169, "x":2.91843, "y":5.8892, "heading":3.05286, "vx":-2.29408, "vy":1.03368, "omega":-0.59119, "ax":-2.04703, "ay":0.92227, "alpha":0.27285, "fx":[-34.26185,-34.06823,-35.39194,-35.55525], "fy":[14.83053,16.74469,16.26492,14.90995]}, + {"t":4.13313, "x":2.8216, "y":5.93283, "heading":3.02836, "vx":-2.37891, "vy":1.0719, "omega":-0.57988, "ax":-2.04528, "ay":0.92146, "alpha":0.14896, "fx":[-34.08357,-34.97227,-34.97498,-35.12804], "fy":[15.06993,16.16271,16.29963,15.16257]}, + {"t":4.17457, "x":2.72126, "y":5.97805, "heading":3.00433, "vx":-2.46368, "vy":1.11009, "omega":-0.57371, "ax":-2.04126, "ay":0.9195, "alpha":0.15941, "fx":[-34.41961,-34.28153,-35.02962,-35.15416], "fy":[15.10392,16.32862,15.94145,15.18741]}, + {"t":4.21601, "x":2.6174, "y":6.02484, "heading":2.98055, "vx":-2.54827, "vy":1.14819, "omega":-0.5671, "ax":-2.02096, "ay":0.91033, "alpha":-0.04799, "fx":[-33.7628,-35.67492,-34.00598,-34.06031], "fy":[15.30949,15.59382,15.67907,15.35545]}, + {"t":4.25746, "x":2.51006, "y":6.07321, "heading":2.95705, "vx":-2.63203, "vy":1.18592, "omega":-0.56909, "ax":2.02144, "ay":-0.90817, "alpha":-0.08154, "fx":[34.28492,34.21669,34.49027,34.54478], "fy":[-15.08434,-16.18785,-15.39032,-15.12812]}, + {"t":4.2989, "x":2.40272, "y":6.12158, "heading":2.93347, "vx":-2.54825, "vy":1.14828, "omega":-0.57247, "ax":2.041, "ay":-0.91994, "alpha":-0.07313, "fx":[34.17853,35.13119,34.69581,34.86202], "fy":[-15.21563,-15.92599,-16.09885,-15.3513]}, + {"t":4.34034, "x":2.29886, "y":6.16837, "heading":2.90974, "vx":-2.46367, "vy":1.11016, "omega":-0.5755, "ax":2.04515, "ay":-0.92171, "alpha":-0.21956, "fx":[34.42525,34.1226,35.16188,35.43986], "fy":[-14.89774,-16.51511,-16.18129,-15.11829]}, + {"t":4.38179, "x":2.19852, "y":6.21359, "heading":2.88589, "vx":-2.37891, "vy":1.07196, "omega":-0.5846, "ax":2.04694, "ay":-0.92244, "alpha":-0.18844, "fx":[34.1304,34.78627,34.99175,35.36293], "fy":[-14.87621,-16.17302,-16.53074,-15.18178]}, + {"t":4.42323, "x":2.10169, "y":6.25722, "heading":2.86166, "vx":-2.29408, "vy":1.03373, "omega":-0.59241, "ax":2.04792, "ay":-0.92286, "alpha":-0.29657, "fx":[34.38228,33.89297,35.30281,35.76037], "fy":[-14.63314,-16.65107,-16.49542,-15.01067]}, + {"t":4.46467, "x":2.00837, "y":6.29927, "heading":2.83711, "vx":-2.20921, "vy":0.99548, "omega":-0.6047, "ax":2.04855, "ay":-0.92313, "alpha":-0.24677, "fx":[34.16525,34.49744,35.09756,35.62081], "fy":[-14.69508,-16.2432,-16.73411,-15.13615]}, + {"t":4.50611, "x":1.91857, "y":6.33973, "heading":2.81205, "vx":-2.12431, "vy":0.95723, "omega":-0.61493, "ax":2.04898, "ay":-0.92331, "alpha":-0.31617, "fx":[34.41387,33.81194,35.30578,35.87893], "fy":[-14.55489,-16.57511,-16.647,-15.04427]}, + {"t":4.54756, "x":1.8323, "y":6.37861, "heading":2.78657, "vx":-2.03939, "vy":0.91896, "omega":-0.62803, "ax":2.0493, "ay":-0.92345, "alpha":-0.25884, "fx":[34.26854,34.3511,35.10333,35.70921], "fy":[-14.66144,-16.20878,-16.77497,-15.18526]}, + {"t":4.589, "x":1.74954, "y":6.4159, "heading":2.76054, "vx":-1.95447, "vy":0.88069, "omega":-0.63875, "ax":2.04955, "ay":-0.92355, "alpha":-0.29718, "fx":[34.49968,33.85939,35.23787,35.85177], "fy":[-14.60138,-16.45515,-16.63946,-15.14155]}, + {"t":4.63044, "x":1.6703, "y":6.45161, "heading":2.73407, "vx":-1.86953, "vy":0.84242, "omega":-0.65107, "ax":2.04974, "ay":-0.92364, "alpha":-0.23226, "fx":[34.40423,34.35844,35.04617,35.65293], "fy":[-14.7587,-16.1078,-16.68139,-15.29525]}, + {"t":4.67189, "x":1.59458, "y":6.48573, "heading":2.70709, "vx":-1.78458, "vy":0.80414, "omega":-0.6607, "ax":2.04989, "ay":-0.9237, "alpha":-0.24484, "fx":[34.61382,34.02497,35.13327,35.70028], "fy":[-14.77512,-16.27923,-16.50575,-15.28756]}, + {"t":4.71333, "x":1.52238, "y":6.51826, "heading":2.6797, "vx":-1.69963, "vy":0.76586, "omega":-0.67084, "ax":2.05002, "ay":-0.92376, "alpha":-0.17168, "fx":[34.54712,34.51504,34.95387,35.46504], "fy":[-14.9788,-15.96955,-16.46409,-15.43897]}, + {"t":4.75477, "x":1.45371, "y":6.54921, "heading":2.6519, "vx":-1.61467, "vy":0.72757, "omega":-0.67796, "ax":2.05013, "ay":-0.9238, "alpha":-0.16332, "fx":[34.73596,34.30199,35.0174,35.43305], "fy":[-15.06416,-16.10102,-16.24105,-15.44833]}, + {"t":4.79621, "x":1.38855, "y":6.57857, "heading":2.62381, "vx":-1.5297, "vy":0.68929, "omega":-0.68473, "ax":2.05022, "ay":-0.92384, "alpha":-0.08085, "fx":[34.68586,34.79366,34.85769,35.15742], "fy":[-15.32203,-15.81882,-16.1225,-15.5939]}, + {"t":4.83766, "x":1.32692, "y":6.60634, "heading":2.59543, "vx":-1.44474, "vy":0.651, "omega":-0.68808, "ax":2.0503, "ay":-0.92388, "alpha":-0.05203, "fx":[34.84671,34.6946,34.91054,35.04817], "fy":[-15.4804,-15.91786,-15.84983,-15.61147]}, + {"t":4.8791, "x":1.2688, "y":6.63252, "heading":2.56691, "vx":-1.35977, "vy":0.61271, "omega":-0.69023, "ax":2.05037, "ay":-0.92391, "alpha":0.04219, "fx":[34.79785,35.21103,34.77412,34.72171], "fy":[-15.79622,-15.67539,-15.64936,-15.7406]}, + {"t":4.92054, "x":1.21421, "y":6.65712, "heading":2.53831, "vx":-1.27479, "vy":0.57442, "omega":-0.68849, "ax":2.05043, "ay":-0.92393, "alpha":0.09069, "fx":[34.92824,35.21001,34.83278,34.53779], "fy":[-16.02896,-15.76636,-15.31586,-15.75217]}, + {"t":4.96199, "x":1.16314, "y":6.68014, "heading":2.50978, "vx":-1.18982, "vy":0.53613, "omega":-0.68473, "ax":2.05048, "ay":-0.92396, "alpha":0.19959, "fx":[34.86905,35.76486,34.72744,34.15111], "fy":[-16.41495,-15.56022,-15.03009,-15.85966]}, + {"t":5.00343, "x":1.11559, "y":6.70156, "heading":2.4814, "vx":-1.10484, "vy":0.49784, "omega":-0.67646, "ax":2.05053, "ay":-0.92398, "alpha":0.26958, "fx":[34.96177,35.86287,34.80397,33.8871], "fy":[-16.73061,-15.65502,-14.6256,-15.8551]}, + {"t":5.04487, "x":1.07156, "y":6.7214, "heading":2.45336, "vx":-1.01986, "vy":0.45955, "omega":-0.66528, "ax":2.05057, "ay":-0.924, "alpha":0.39699, "fx":[34.88006,36.47319,34.73785,33.42753], "fy":[-17.19846,-15.49319,-14.24401,-15.9319]}, + {"t":5.08631, "x":1.03106, "y":6.73965, "heading":2.42579, "vx":-0.93488, "vy":0.42126, "omega":-0.64883, "ax":2.05061, "ay":-0.92401, "alpha":0.49134, "fx":[34.92845,36.67251,34.84536,33.07495], "fy":[-17.60986,-15.60217,-13.75503,-15.90164]}, + {"t":5.12776, "x":0.99408, "y":6.75632, "heading":2.3989, "vx":-0.8499, "vy":0.38296, "omega":-0.62847, "ax":2.05065, "ay":-0.92403, "alpha":0.64247, "fx":[34.81155,37.3601,34.82654,32.52547], "fy":[-18.1747,-15.49394,-13.26299,-15.93811]}, + {"t":5.1692, "x":0.96062, "y":6.77139, "heading":2.37286, "vx":-0.76491, "vy":0.34467, "omega":-0.60184, "ax":2.05068, "ay":-0.92404, "alpha":0.76526, "fx":[34.80977,37.66533,34.97903,32.0717], "fy":[-18.69606,-15.63503,-12.66887,-15.87071]}, + {"t":5.21064, "x":0.93068, "y":6.78488, "heading":2.34792, "vx":-0.67992, "vy":0.30637, "omega":-0.57013, "ax":2.05071, "ay":-0.92405, "alpha":0.94644, "fx":[34.64746,38.45104,35.01739,31.41193], "fy":[-19.38112,-15.58119,-12.04901,-15.86021]}, + {"t":5.25209, "x":0.90426, "y":6.79679, "heading":2.32429, "vx":-0.59494, "vy":0.26808, "omega":-0.5309, "ax":2.05073, "ay":-0.92406, "alpha":1.10404, "fx":[34.5892,38.87844,35.22601,30.836], "fy":[-20.03584,-15.76392,-11.326,-15.74655]}, + {"t":5.29353, "x":0.88136, "y":6.8071, "heading":2.30229, "vx":-0.50995, "vy":0.22978, "omega":-0.48515, "ax":2.05076, "ay":-0.92408, "alpha":1.32326, "fx":[34.37437,39.78748,35.33082,30.03866], "fy":[-20.86865,-15.76869,-10.55085,-15.68485]}, + {"t":5.33497, "x":0.86199, "y":6.81583, "heading":2.28218, "vx":-0.42496, "vy":0.19149, "omega":-0.43031, "ax":2.05078, "ay":-0.92409, "alpha":1.52438, "fx":[34.25716,40.36241,35.60359,29.30974], "fy":[-21.68847,-15.99909,-9.66551,-15.52062]}, + {"t":5.37641, "x":0.84614, "y":6.82298, "heading":2.26435, "vx":-0.33997, "vy":0.15319, "omega":-0.36714, "ax":2.0508, "ay":-0.92409, "alpha":1.76425, "fx":[34.11783,41.08062,35.93288,28.403], "fy":[-22.68153,-16.1044,-8.68788,-15.40052]}, + {"t":5.41786, "x":0.83381, "y":6.82853, "heading":2.24913, "vx":-0.25498, "vy":0.11489, "omega":-0.29402, "ax":2.05082, "ay":-0.9241, "alpha":2.04674, "fx":[33.82003,42.1843,36.11664,27.41471], "fy":[-23.73111,-16.33153,-7.61054,-15.20173]}, + {"t":5.4593, "x":0.82501, "y":6.8325, "heading":2.23695, "vx":-0.16999, "vy":0.0766, "omega":-0.2092, "ax":2.05084, "ay":-0.92411, "alpha":2.34985, "fx":[33.63377,43.12441,36.51461,26.26414], "fy":[-24.95429,-16.47821,-6.39365,-15.0493]}, + {"t":5.50074, "x":0.81972, "y":6.83488, "heading":2.22828, "vx":-0.08499, "vy":0.0383, "omega":-0.11181, "ax":2.05086, "ay":-0.92412, "alpha":2.698, "fx":[33.31412,44.4396,36.74721,25.03718], "fy":[-26.2697,-16.72361,-5.05087,-14.83178]}, + {"t":5.54219, "x":0.81796, "y":6.83567, "heading":2.22364, "vx":0.0, "vy":0.0, "omega":0.0, "ax":2.11214, "ay":-0.77224, "alpha":2.77882, "fx":[34.43712,45.54463,37.96064,25.76538], "fy":[-24.11015,-14.2516,-2.07623,-12.1045]}, + {"t":5.58338, "x":0.81975, "y":6.83502, "heading":2.22364, "vx":0.087, "vy":-0.03181, "omega":0.11446, "ax":2.11265, "ay":-0.77243, "alpha":2.43073, "fx":[34.53151,44.50201,37.57447,27.134], "fy":[-22.704,-14.13853,-3.49735,-12.2151]}, + {"t":5.62457, "x":0.82513, "y":6.83305, "heading":2.22836, "vx":0.17402, "vy":-0.06363, "omega":0.21458, "ax":2.11263, "ay":-0.77242, "alpha":2.11077, "fx":[34.80062,43.27668,37.41317,28.2502], "fy":[-21.48901,-13.93665,-4.73412,-12.3947]}, + {"t":5.66576, "x":0.83409, "y":6.82978, "heading":2.2372, "vx":0.26104, "vy":-0.09544, "omega":0.30153, "ax":2.11261, "ay":-0.77241, "alpha":1.83363, "fx":[34.94328,42.43343,37.06096,29.30156], "fy":[-20.35701,-13.81217,-5.85361,-12.53116]}, + {"t":5.70695, "x":0.84664, "y":6.82519, "heading":2.24962, "vx":0.34806, "vy":-0.12726, "omega":0.37705, "ax":2.11258, "ay":-0.7724, "alpha":1.57254, "fx":[35.21173,41.40016,36.9212,30.20459], "fy":[-19.38689,-13.60815,-6.84614,-12.7122]}, + {"t":5.74814, "x":0.86276, "y":6.81929, "heading":2.26515, "vx":0.43508, "vy":-0.15907, "omega":0.44183, "ax":2.11256, "ay":-0.77239, "alpha":1.35318, "fx":[35.32536,40.76348,36.61694,31.03022], "fy":[-18.46703,-13.50802,-7.7467,-12.831]}, + {"t":5.78933, "x":0.88248, "y":6.81209, "heading":2.28335, "vx":0.52209, "vy":-0.19089, "omega":0.49757, "ax":2.11253, "ay":-0.77238, "alpha":1.17013, "fx":[35.42164,40.26213,36.36671,31.68371], "fy":[-17.70854,-13.29265,-8.56264,-12.98827]}, + {"t":5.83052, "x":0.90577, "y":6.80357, "heading":2.30384, "vx":0.60911, "vy":-0.2227, "omega":0.54576, "ax":2.1125, "ay":-0.77237, "alpha":0.96563, "fx":[35.62626,39.40314,36.27892,32.42389], "fy":[-16.93589,-13.2814,-9.27814,-13.05592]}, + {"t":5.87171, "x":0.93266, "y":6.79374, "heading":2.32632, "vx":0.69612, "vy":-0.25452, "omega":0.58554, "ax":2.11247, "ay":-0.77236, "alpha":0.82237, "fx":[35.67209,39.03817,36.08082,32.93897], "fy":[-16.32994,-13.10424,-9.94632,-13.17005]}, + {"t":5.9129, "x":0.96312, "y":6.7826, "heading":2.35044, "vx":0.78314, "vy":-0.28633, "omega":0.61941, "ax":2.11244, "ay":-0.77235, "alpha":0.65287, "fx":[35.8314,38.29124,36.05195,33.55309], "fy":[-15.69343,-13.14749,-10.51873,-13.19002]}, + {"t":5.95409, "x":0.99717, "y":6.77015, "heading":2.37595, "vx":0.87015, "vy":-0.31814, "omega":0.6463, "ax":2.1124, "ay":-0.77233, "alpha":0.54191, "fx":[35.82523,38.04134,35.90189,33.9566], "fy":[-15.21118,-13.00695,-11.06908,-13.26151]}, + {"t":5.99528, "x":1.0348, "y":6.75639, "heading":2.40258, "vx":0.95716, "vy":-0.34996, "omega":0.66862, "ax":2.11235, "ay":-0.77232, "alpha":0.40018, "fx":[35.94404,37.38197,35.92658,34.46959], "fy":[-14.68704,-13.09982,-11.52334,-13.23742]}, + {"t":6.03647, "x":1.07602, "y":6.74132, "heading":2.43012, "vx":1.04417, "vy":-0.38177, "omega":0.68511, "ax":2.11231, "ay":-0.7723, "alpha":0.31638, "fx":[35.88836,37.23817,35.81457,34.77784], "fy":[-14.30697,-12.99177,-11.97611,-13.27159]}, + {"t":6.07766, "x":1.12082, "y":6.72494, "heading":2.45834, "vx":1.13117, "vy":-0.41358, "omega":0.69814, "ax":2.11225, "ay":-0.77228, "alpha":0.19645, "fx":[35.97669,36.64304,35.8865,35.20909], "fy":[-13.87529,-13.13369,-12.32743,-13.20867]}, + {"t":6.11885, "x":1.16921, "y":6.70725, "heading":2.48709, "vx":1.21818, "vy":-0.44539, "omega":0.70623, "ax":2.11219, "ay":-0.77226, "alpha":0.13604, "fx":[35.87738,36.59871,35.80179,35.43335], "fy":[-13.58483,-13.04338,-12.69937,-13.216]}, + {"t":6.16004, "x":1.22118, "y":6.68825, "heading":2.51618, "vx":1.30518, "vy":-0.4772, "omega":0.71184, "ax":2.11213, "ay":-0.77223, "alpha":0.03371, "fx":[35.94591,36.05217,35.91239,35.79612], "fy":[-13.23241,-13.23036,-12.95783,-13.12124]}, + {"t":6.20123, "x":1.27673, "y":6.66794, "heading":2.5455, "vx":1.39218, "vy":-0.50901, "omega":0.71322, "ax":2.11205, "ay":-0.7722, "alpha":-0.00559, "fx":[35.80927,36.10712,35.84262,35.94223], "fy":[-13.02221,-13.14245,-13.26161,-13.1136]}, + {"t":6.24242, "x":1.33587, "y":6.64632, "heading":2.57488, "vx":1.47918, "vy":-0.54082, "omega":0.71299, "ax":2.11196, "ay":-0.77217, "alpha":-0.09354, "fx":[35.86985,35.5949,35.98365,36.24666], "fy":[-12.73883,-13.36722,-13.4345,-12.997]}, + {"t":6.28361, "x":1.39859, "y":6.62339, "heading":2.60425, "vx":1.56617, "vy":-0.57262, "omega":0.70914, "ax":2.11185, "ay":-0.77213, "alpha":-0.11167, "fx":[35.69891,35.76351,35.91235,36.313], "fy":[-12.60428,-13.26728,-13.6784,-12.98492]}, + {"t":6.3248, "x":1.46489, "y":6.59914, "heading":2.63346, "vx":1.65316, "vy":-0.60443, "omega":0.70454, "ax":2.11172, "ay":-0.77208, "alpha":-0.1883, "fx":[35.76777,35.26171,36.07949,36.57015], "fy":[-12.38332,-13.5245,-13.7686,-12.85525]}, + {"t":6.36599, "x":1.53477, "y":6.57359, "heading":2.66248, "vx":1.74014, "vy":-0.63623, "omega":0.69678, "ax":2.11157, "ay":-0.77203, "alpha":-0.18399, "fx":[35.56627,35.56192,35.98935,36.5511], "fy":[-12.32275,-13.39561,-13.95791,-12.85151]}, + {"t":6.40718, "x":1.60824, "y":6.54673, "heading":2.69118, "vx":1.82711, "vy":-0.66803, "omega":0.68921, "ax":2.11138, "ay":-0.77196, "alpha":-0.25088, "fx":[35.65967,35.05054,36.17719,36.76831], "fy":[-12.16234,-13.6746,-13.96594,-12.72007]}, + {"t":6.44837, "x":1.68529, "y":6.51856, "heading":2.71957, "vx":1.91408, "vy":-0.69983, "omega":0.67887, "ax":2.11114, "ay":-0.77187, "alpha":-0.22157, "fx":[35.43281,35.50362,36.0491,36.65378], "fy":[-12.17651,-13.5024,-14.10063,-12.73737]}, + {"t":6.48956, "x":1.76593, "y":6.48908, "heading":2.74753, "vx":2.00104, "vy":-0.73162, "omega":0.66975, "ax":2.11082, "ay":-0.77175, "alpha":-0.27945, "fx":[35.56834,34.96394,36.25085,36.83474], "fy":[-12.07243,-13.80934,-14.01605,-12.61112]}, + {"t":6.53075, "x":1.85014, "y":6.45829, "heading":2.77512, "vx":2.08799, "vy":-0.76341, "omega":0.65824, "ax":2.11039, "ay":-0.77159, "alpha":-0.21859, "fx":[35.31703,35.61474,36.05512,36.60175], "fy":[-12.17338,-13.55528,-14.0977,-12.6718]}, + {"t":6.57194, "x":1.93793, "y":6.42619, "heading":2.80223, "vx":2.17491, "vy":-0.79519, "omega":0.64923, "ax":2.10977, "ay":-0.77136, "alpha":-0.26806, "fx":[35.51963,35.01269,36.26498,36.74923], "fy":[-12.12416,-13.89457,-13.90444,-12.5591]}, + {"t":6.61313, "x":2.02931, "y":6.39278, "heading":2.82897, "vx":2.26182, "vy":-0.82696, "omega":0.63819, "ax":2.1088, "ay":-0.771, "alpha":-0.16427, "fx":[35.23791,35.93399,35.95323,36.35494], "fy":[-12.33005,-13.51295,-13.92439,-12.69068]}, + {"t":6.65432, "x":2.12426, "y":6.35806, "heading":2.85526, "vx":2.34868, "vy":-0.85872, "omega":0.63142, "ax":2.10704, "ay":-0.77036, "alpha":-0.20197, "fx":[35.53489,35.212,36.15463,36.45907], "fy":[-12.35764,-13.82127,-13.61249,-12.62301]}, + {"t":6.69551, "x":2.22279, "y":6.32204, "heading":2.88127, "vx":2.43547, "vy":-0.89045, "omega":0.6231, "ax":2.10295, "ay":-0.76886, "alpha":-0.0564, "fx":[35.24008,36.28567,35.68486,35.87157], "fy":[-12.65652,-13.31408,-13.5185,-12.82349]}, + {"t":6.7367, "x":2.3249, "y":6.28471, "heading":2.90694, "vx":2.52209, "vy":-0.92212, "omega":0.62078, "ax":2.08225, "ay":-0.76238, "alpha":-0.0659, "fx":[35.33088,35.25789,35.51071,35.57415], "fy":[-12.68376,-13.46039,-12.98838,-12.73907]}, + {"t":6.7779, "x":2.43055, "y":6.24608, "heading":2.93251, "vx":2.60786, "vy":-0.95352, "omega":0.61807, "ax":-2.08206, "ay":0.76157, "alpha":-0.05442, "fx":[-34.82589,-36.70491,-35.03395,-35.09631], "fy":[12.78526,13.04795,13.13993,12.84306]}, + {"t":6.81909, "x":2.5362, "y":6.20745, "heading":2.95796, "vx":2.5221, "vy":-0.92215, "omega":0.61583, "ax":-2.10279, "ay":0.76915, "alpha":0.14012, "fx":[-35.50462,-35.35464,-36.03397,-36.17807], "fy":[12.6115,13.57087,13.42489,12.72507]}, + {"t":6.86028, "x":2.6383, "y":6.17012, "heading":2.98333, "vx":2.43548, "vy":-0.89047, "omega":0.6216, "ax":-2.10701, "ay":0.77039, "alpha":0.12795, "fx":[-35.16873,-36.11626,-35.94617,-36.1273], "fy":[12.51836,13.52991,13.71102,12.65734]}, + {"t":6.90147, "x":2.73683, "y":6.13409, "heading":3.00893, "vx":2.34869, "vy":-0.85874, "omega":0.62687, "ax":-2.10878, "ay":0.77103, "alpha":0.24803, "fx":[-35.38367,-35.16541,-36.36659,-36.563], "fy":[12.30782,14.01709,13.6945,12.44069]}, + {"t":6.94266, "x":2.83179, "y":6.09938, "heading":3.03475, "vx":2.26183, "vy":-0.82698, "omega":0.63708, "ax":-2.10976, "ay":0.77139, "alpha":0.20199, "fx":[-35.06734,-35.90709,-36.194,-36.37689], "fy":[12.36463,13.74253,13.90346,12.4738]}, + {"t":6.98385, "x":2.92316, "y":6.06597, "heading":3.061, "vx":2.17493, "vy":-0.79521, "omega":0.6454, "ax":-2.11038, "ay":0.77161, "alpha":0.2828, "fx":[-35.29303,-35.11414,-36.51037,-36.67023], "fy":[12.26006,14.09548,13.80897,12.33528]}, + {"t":7.02504, "x":3.01096, "y":6.03387, "heading":3.08758, "vx":2.088, "vy":-0.76342, "omega":0.65705, "ax":-2.11081, "ay":0.77177, "alpha":0.2299, "fx":[-35.07607,-35.7358,-36.34129,-36.46402], "fy":[12.36809,13.8334,13.90882,12.40004]}, + {"t":7.06623, "x":3.09517, "y":6.00308, "heading":3.11465, "vx":2.00106, "vy":-0.73163, "omega":0.66652, "ax":-2.11113, "ay":0.77188, "alpha":0.27259, "fx":[-35.28734,-35.18606,-36.53999,-36.62532], "fy":[12.34137,14.06855,13.774,12.33421]}, + {"t":7.10742, "x":3.17581, "y":5.97359, "heading":-3.14109, "vx":1.9141, "vy":-0.69984, "omega":0.67775, "ax":-2.11137, "ay":0.77197, "alpha":0.21125, "fx":[-35.15187,-35.74293,-36.35819,-36.4022], "fy":[12.48704,13.80339,13.79392,12.4397]}, + {"t":7.14861, "x":3.25286, "y":5.94542, "heading":-3.11317, "vx":1.82713, "vy":-0.66804, "omega":0.68645, "ax":-2.11156, "ay":0.77204, "alpha":0.22639, "fx":[-35.37325,-35.34874,-36.46785,-36.47836], "fy":[12.51195,13.94934,13.62957,12.43787]}, + {"t":7.1898, "x":3.32633, "y":5.91856, "heading":-3.08489, "vx":1.74016, "vy":-0.63624, "omega":0.69578, "ax":-2.11172, "ay":0.7721, "alpha":0.15527, "fx":[-35.31255,-35.86324,-36.26076,-36.24219], "fy":[12.68672,13.65521,13.59691,12.5937]}, + {"t":7.23099, "x":3.39621, "y":5.89301, "heading":-3.05623, "vx":1.65317, "vy":-0.60444, "omega":0.70217, "ax":-2.11184, "ay":0.77214, "alpha":0.14632, "fx":[-35.55787,-35.57906,-36.29165,-36.25884], "fy":[12.75394,13.7016,13.4179,12.66223]}, + {"t":7.27218, "x":3.46252, "y":5.86877, "heading":-3.02731, "vx":1.56619, "vy":-0.57263, "omega":0.7082, "ax":-2.11195, "ay":0.77218, "alpha":0.06617, "fx":[-35.57513,-36.05191,-36.05082,-36.01686], "fy":[12.94125,13.38495,13.34317,12.86892]}, + {"t":7.31337, "x":3.52524, "y":5.84583, "heading":-2.99814, "vx":1.4792, "vy":-0.54083, "omega":0.71093, "ax":-2.11204, "ay":0.77221, "alpha":0.03535, "fx":[-35.85353,-35.85746,-36.00195,-35.98801], "fy":[13.03494,13.34052,13.15727,13.00781]}, + {"t":7.35456, "x":3.58437, "y":5.82421, "heading":-2.96886, "vx":1.3922, "vy":-0.50902, "omega":0.71238, "ax":-2.11212, "ay":0.77224, "alpha":-0.05749, "fx":[-35.94736,-36.31038,-35.71001,-35.73857], "fy":[13.23177,12.97756,13.05323,13.27992]}, + {"t":7.39575, "x":3.63993, "y":5.8039, "heading":-2.93951, "vx":1.3052, "vy":-0.47721, "omega":0.71001, "ax":-2.11219, "ay":0.77227, "alpha":-0.10941, "fx":[-36.2763,-36.17028,-35.58308,-35.68132], "fy":[13.34311,12.84067,12.86237,13.498]}, + {"t":7.43694, "x":3.6919, "y":5.7849, "heading":-2.91027, "vx":1.2182, "vy":-0.4454, "omega":0.70551, "ax":-2.11225, "ay":0.77229, "alpha":-0.21703, "fx":[-36.45671,-36.59971,-35.22832,-35.43036], "fy":[13.54115,12.41639,12.74238,13.84571]}, + {"t":7.47813, "x":3.74028, "y":5.76721, "heading":-2.88121, "vx":1.13119, "vy":-0.41359, "omega":0.69657, "ax":-2.1123, "ay":0.77231, "alpha":-0.29246, "fx":[-36.84732,-36.50706,-35.01281,-35.35153], "fy":[13.66502,12.17093,12.55486,14.15614]}, + {"t":7.51932, "x":3.78508, "y":5.75083, "heading":-2.85252, "vx":1.04419, "vy":-0.38178, "omega":0.68452, "ax":-2.11235, "ay":0.77233, "alpha":-0.41818, "fx":[-37.12475,-36.91701,-34.57854,-35.10166], "fy":[13.85561,11.67544,12.42455,14.59252]}, + {"t":7.56051, "x":3.8263, "y":5.73576, "heading":-2.82432, "vx":0.95718, "vy":-0.34997, "omega":0.6673, "ax":-2.11239, "ay":0.77234, "alpha":-0.51955, "fx":[-37.59348,-36.85909,-34.26295,-35.00935], "fy":[13.98394,11.31256,12.24478,15.00788]}, + {"t":7.6017, "x":3.86394, "y":5.722, "heading":-2.79684, "vx":0.87017, "vy":-0.31815, "omega":0.6459, "ax":-2.11243, "ay":0.77235, "alpha":-0.66873, "fx":[-37.9822,-37.25335,-33.72954,-34.76241], "fy":[14.16393,10.72194,12.11081,15.55343]}, + {"t":7.64289, "x":3.89799, "y":5.70955, "heading":-2.77023, "vx":0.78316, "vy":-0.28634, "omega":0.61835, "ax":-2.11247, "ay":0.77237, "alpha":-0.80086, "fx":[-38.5477,-37.22276,-33.29741,-34.66202], "fy":[14.29406,10.21944,11.94329,16.09418]}, + {"t":7.68408, "x":3.92845, "y":5.69841, "heading":-2.74476, "vx":0.69614, "vy":-0.25453, "omega":0.58536, "ax":-2.1125, "ay":0.77238, "alpha":-0.97953, "fx":[-39.06703,-37.60518,-32.64152,-34.41832], "fy":[14.45973,9.51394,11.80782,16.77027]}, + {"t":7.72527, "x":3.95534, "y":5.68858, "heading":-2.72065, "vx":0.60913, "vy":-0.22271, "omega":0.54502, "ax":-2.11253, "ay":0.77239, "alpha":-1.14868, "fx":[-39.75106,-37.60134,-32.07048,-34.31116], "fy":[14.59118,8.84922,11.6514,17.46067]}, + {"t":7.76646, "x":3.97864, "y":5.68006, "heading":-2.6982, "vx":0.52211, "vy":-0.1909, "omega":0.4977, "ax":-2.11256, "ay":0.7724, "alpha":-1.3511, "fx":[-40.25615,-38.03282,-31.32307,-34.12382], "fy":[14.76227,7.99365,11.50888,18.28833]}, + {"t":7.80765, "x":3.99835, "y":5.67285, "heading":-2.6777, "vx":0.4351, "vy":-0.15908, "omega":0.44205, "ax":-2.11258, "ay":0.77241, "alpha":-1.57969, "fx":[-41.25288,-38.01157,-30.52522,-33.94787], "fy":[14.88609,7.13907,11.36171,19.16687]}, + {"t":7.84884, "x":4.01448, "y":5.66696, "heading":-2.65949, "vx":0.34808, "vy":-0.12727, "omega":0.37698, "ax":-2.1126, "ay":0.77242, "alpha":-1.83007, "fx":[-41.94665,-38.45626,-29.59073,-33.74545], "fy":[15.05849,6.10448,11.20468,20.18665]}, + {"t":7.89003, "x":4.02702, "y":5.66237, "heading":-2.64396, "vx":0.26106, "vy":-0.09545, "omega":0.3016, "ax":-2.11262, "ay":0.77242, "alpha":-2.11514, "fx":[-43.11411,-38.4943,-28.58901,-33.5431], "fy":[15.21061,5.01631,11.04093,21.28697]}, + {"t":7.93122, "x":4.03599, "y":5.65909, "heading":-2.63154, "vx":0.17404, "vy":-0.06363, "omega":0.21448, "ax":-2.11264, "ay":0.77243, "alpha":-2.42717, "fx":[-44.03324,-38.98842,-27.42307,-33.29714], "fy":[15.41586,3.75637,10.83897,22.54409]}, + {"t":7.97241, "x":4.04136, "y":5.65713, "heading":-2.62271, "vx":0.08702, "vy":-0.03182, "omega":0.1145, "ax":-2.11266, "ay":0.77244, "alpha":-2.77977, "fx":[-45.24893,-39.33051,-26.14413,-33.01955], "fy":[15.64806,2.37855,10.60105,23.92809]}, + {"t":8.0136, "x":4.04315, "y":5.65647, "heading":-2.61799, "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,71,80,142] }, "events":[] } diff --git a/auto/BlueLong.traj b/auto/BlueLong.traj index 612b212..1d2028f 100644 --- a/auto/BlueLong.traj +++ b/auto/BlueLong.traj @@ -3,28 +3,26 @@ "version":1, "snapshot":{ "waypoints":[ - {"x":7.5, "y":7.0, "heading":0.0, "intervals":40, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":4.857022285461426, "y":5.825005054473877, "heading":0.0, "intervals":38, "split":false, "fixTranslation":true, "fixHeading":false, "overrideIntervals":false}, + {"x":7.5, "y":7.0, "heading":0.0, "intervals":52, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, {"x":2.5, "y":7.0, "heading":0.0, "intervals":40, "split":true, "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}, - {"from":0, "to":2, "data":{"type":"MaxAcceleration", "props":{"max":3.0}}, "enabled":true}, - {"from":0, "to":2, "data":{"type":"MaxVelocity", "props":{"max":4.0}}, "enabled":true}], + {"from":0, "to":1, "data":{"type":"MaxAcceleration", "props":{"max":3.0}}, "enabled":true}, + {"from":0, "to":1, "data":{"type":"MaxVelocity", "props":{"max":4.0}}, "enabled":true}], "targetDt":0.05 }, "params":{ "waypoints":[ - {"x":{"exp":"7.5 m", "val":7.5}, "y":{"exp":"7 m", "val":7.0}, "heading":{"exp":"0 deg", "val":0.0}, "intervals":40, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, - {"x":{"exp":"4.857022285461426 m", "val":4.857022285461426}, "y":{"exp":"5.825005054473877 m", "val":5.825005054473877}, "heading":{"exp":"0 deg", "val":0.0}, "intervals":38, "split":false, "fixTranslation":true, "fixHeading":false, "overrideIntervals":false}, + {"x":{"exp":"7.5 m", "val":7.5}, "y":{"exp":"7 m", "val":7.0}, "heading":{"exp":"0 deg", "val":0.0}, "intervals":52, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, {"x":{"exp":"2.5 m", "val":2.5}, "y":{"exp":"7 m", "val":7.0}, "heading":{"exp":"0 rad", "val":0.0}, "intervals":40, "split":true, "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}, - {"from":0, "to":2, "data":{"type":"MaxAcceleration", "props":{"max":{"exp":"3 m / s ^ 2", "val":3.0}}}, "enabled":true}, - {"from":0, "to":2, "data":{"type":"MaxVelocity", "props":{"max":{"exp":"4 m / s", "val":4.0}}}, "enabled":true}], + {"from":0, "to":1, "data":{"type":"MaxAcceleration", "props":{"max":{"exp":"3 m / s ^ 2", "val":3.0}}}, "enabled":true}, + {"from":0, "to":1, "data":{"type":"MaxVelocity", "props":{"max":{"exp":"4 m / s", "val":4.0}}}, "enabled":true}], "targetDt":{ "exp":"0.05 s", "val":0.05 @@ -32,87 +30,61 @@ }, "trajectory":{ "sampleType":"Swerve", - "waypoints":[0.0,1.49946,2.91895], + "waypoints":[0.0,2.58252], "samples":[ - {"t":0.0, "x":7.5, "y":7.0, "heading":0.0, "vx":0.0, "vy":0.0, "omega":0.0, "ax":-2.13002, "ay":-2.11027, "alpha":-0.00085, "fx":[-36.25468,-36.18859,-36.23813,-36.24283], "fy":[-35.88779,-35.90531,-35.89459,-35.89265]}, - {"t":0.03749, "x":7.4985, "y":6.99852, "heading":0.0, "vx":-0.07985, "vy":-0.07911, "omega":-0.00003, "ax":-2.1498, "ay":-2.09124, "alpha":-0.00004, "fx":[-36.58661,-36.54101,-36.56854,-36.57359], "fy":[-35.56547,-35.57625,-35.57351,-35.57068]}, - {"t":0.07497, "x":7.494, "y":6.99408, "heading":0.0, "vx":-0.16043, "vy":-0.1575, "omega":-0.00003, "ax":-2.17026, "ay":-2.06995, "alpha":-0.00043, "fx":[-36.91467,-36.92952,-36.90635,-36.91157], "fy":[-35.21569,-35.1657,-35.23512,-35.22072]}, - {"t":0.11246, "x":7.48646, "y":6.98672, "heading":0.0, "vx":-0.24179, "vy":-0.23509, "omega":-0.00005, "ax":-2.19211, "ay":-2.04675, "alpha":0.00021, "fx":[-37.31024,-37.25468,-37.28933,-37.29451], "fy":[-34.8061,-34.82332,-34.81756,-34.81145]}, - {"t":0.14995, "x":7.47586, "y":6.97647, "heading":0.0, "vx":-0.32396, "vy":-0.31182, "omega":-0.00004, "ax":-2.21548, "ay":-2.02137, "alpha":-0.00038, "fx":[-37.68546,-37.70087,-37.67354,-37.67892], "fy":[-34.3909,-34.33093,-34.41405,-34.39609]}, - {"t":0.18743, "x":7.46216, "y":6.96336, "heading":-0.00001, "vx":-0.40701, "vy":-0.38759, "omega":-0.00006, "ax":-2.24052, "ay":-1.99353, "alpha":0.00073, "fx":[-38.1373,-38.07437,-38.11256,-38.11794], "fy":[-33.89789,-33.92211,-33.91383,-33.90348]}, - {"t":0.22492, "x":7.44532, "y":6.94743, "heading":-0.00001, "vx":-0.491, "vy":-0.46232, "omega":-0.00003, "ax":-2.26738, "ay":-1.96285, "alpha":0.00032, "fx":[-38.57054,-38.58558,-38.55418,-38.55979], "fy":[-33.39362,-33.33587,-33.4215,-33.39904]}, - {"t":0.2624, "x":7.42533, "y":6.92872, "heading":-0.00001, "vx":-0.576, "vy":-0.5359, "omega":-0.00002, "ax":-2.29626, "ay":-1.92892, "alpha":0.0017, "fx":[-39.08765,-39.02527,-39.0581,-39.06375], "fy":[-32.796,-32.82579,-32.81751,-32.80188]}, - {"t":0.29989, "x":7.40212, "y":6.90728, "heading":-0.00001, "vx":-0.66208, "vy":-0.60821, "omega":0.00005, "ax":-2.32734, "ay":-1.89121, "alpha":0.00095, "fx":[-39.5929,-39.60866,-39.57116,-39.57707], "fy":[-32.1743,-32.11339,-32.20804,-32.18]}, - {"t":0.33738, "x":7.37567, "y":6.88315, "heading":-0.00001, "vx":-0.74932, "vy":-0.67911, "omega":0.00008, "ax":-2.36085, "ay":-1.84912, "alpha":0.0026, "fx":[-40.19119,-40.12079,-40.15581,-40.16179], "fy":[-31.43448,-31.47396,-31.4628,-31.44073]}, - {"t":0.37486, "x":7.34592, "y":6.85639, "heading":0.0, "vx":-0.83782, "vy":-0.74842, "omega":0.00018, "ax":-2.39701, "ay":-1.80189, "alpha":0.00148, "fx":[-40.78101,-40.79705,-40.75283,-40.75907], "fy":[-30.65527,-30.58591,-30.69622,-30.6613]}, - {"t":0.41235, "x":7.31283, "y":6.82707, "heading":0.0, "vx":-0.92768, "vy":-0.81597, "omega":0.00024, "ax":-2.43606, "ay":-1.74862, "alpha":0.00333, "fx":[-41.47836,-41.38996,-41.43614,-41.44247], "fy":[-29.71975,-29.77167,-29.75622,-29.72639]}, - {"t":0.44984, "x":7.27634, "y":6.79526, "heading":0.00001, "vx":-1.019, "vy":-0.88152, "omega":0.00036, "ax":-2.47824, "ay":-1.68817, "alpha":0.00248, "fx":[-42.16653,-42.18173,-42.13097,-42.13753], "fy":[-28.7188,-28.6492,-28.76823,-28.72514]}, - {"t":0.48732, "x":7.2364, "y":6.76103, "heading":0.00002, "vx":-1.1119, "vy":-0.9448, "omega":0.00045, "ax":-2.52376, "ay":-1.61918, "alpha":0.00413, "fx":[-42.979,-42.87022,-42.929,-42.93561], "fy":[-27.51224,-27.5772,-27.55831,-27.51921]}, - {"t":0.52481, "x":7.19295, "y":6.72447, "heading":0.00004, "vx":-1.2065, "vy":-1.0055, "omega":0.00061, "ax":-2.57278, "ay":-1.53991, "alpha":-0.00578, "fx":[-43.77197,-43.81647,-43.72562,-43.73525], "fy":[-26.25254,-25.92249,-26.33849,-26.26022]}, - {"t":0.5623, "x":7.14591, "y":6.6857, "heading":0.00006, "vx":-1.30295, "vy":-1.06323, "omega":0.00039, "ax":-2.62536, "ay":-1.44824, "alpha":0.00461, "fx":[-44.71765,-44.58103,-44.66054,-44.66715], "fy":[-24.59871,-24.67815,-24.65428,-24.60569]}, - {"t":0.59978, "x":7.09522, "y":6.64482, "heading":0.00008, "vx":-1.40136, "vy":-1.11752, "omega":0.00056, "ax":-2.68133, "ay":-1.34152, "alpha":-0.005, "fx":[-45.62289,-45.66154,-45.57053,-45.57963], "fy":[-22.87572,-22.54626,-22.97087,-22.88296]}, - {"t":0.63727, "x":7.04081, "y":6.60199, "heading":0.0001, "vx":-1.50188, "vy":-1.1678, "omega":0.00038, "ax":-2.74018, "ay":-1.21648, "alpha":0.0047, "fx":[-46.67968,-46.51727,-46.61801,-46.62401], "fy":[-20.65234,-20.74161,-20.71538,-20.6587]}, - {"t":0.67476, "x":6.98258, "y":6.55736, "heading":0.00011, "vx":-1.6046, "vy":-1.21341, "omega":0.00055, "ax":-2.80082, "ay":-1.06909, "alpha":-0.00363, "fx":[-47.6599,-47.68831,-47.60446,-47.61205], "fy":[-18.23437,-17.92997,-18.33523,-18.24036]}, - {"t":0.71224, "x":6.92046, "y":6.51112, "heading":0.00013, "vx":-1.70959, "vy":-1.25348, "omega":0.00042, "ax":-2.86118, "ay":-0.89457, "alpha":0.00359, "fx":[-48.74798,-48.54855,-48.68512,-48.68966], "fy":[-15.17514,-15.268,-15.24251,-15.17997]}, - {"t":0.74973, "x":6.85437, "y":6.4635, "heading":0.00015, "vx":-1.81684, "vy":-1.28702, "omega":0.00055, "ax":-2.9177, "ay":-0.68745, "alpha":-0.00388, "fx":[-49.65099,-49.6685,-49.59626,-49.60109], "fy":[-11.74275,-11.4396,-11.84424,-11.74645]}, - {"t":0.78721, "x":6.78421, "y":6.41477, "heading":0.00017, "vx":-1.92622, "vy":-1.31279, "omega":0.00041, "ax":-2.96463, "ay":-0.44201, "alpha":0.00125, "fx":[-50.51563,-50.28012,-50.45613,-50.45818], "fy":[-7.48105,-7.56233,-7.54741,-7.48324]}, - {"t":0.8247, "x":6.70992, "y":6.36525, "heading":0.00019, "vx":-2.03735, "vy":-1.32936, "omega":0.00045, "ax":-2.99327, "ay":-0.15344, "alpha":0.00348, "fx":[-50.93885,-50.93997,-50.88961,-50.89039], "fy":[-2.61583,-2.49823,-2.70982,-2.61622]}, - {"t":0.86219, "x":6.63144, "y":6.31531, "heading":0.0002, "vx":-2.14956, "vy":-1.33511, "omega":0.00058, "ax":-2.99157, "ay":0.1804, "alpha":-0.00171, "fx":[-50.97409,-50.72554,-50.92239,-50.92127], "fy":[3.0947,3.04708,3.0362,3.09591]}, - {"t":0.89967, "x":6.54876, "y":6.26539, "heading":0.00023, "vx":-2.2617, "vy":-1.32835, "omega":0.00052, "ax":-2.94489, "ay":0.55555, "alpha":0.01353, "fx":[-50.11182,-50.11619,-50.07117,-50.06769], "fy":[9.49866,9.3788,9.41997,9.50161]}, - {"t":0.93716, "x":6.46191, "y":6.21598, "heading":0.00024, "vx":-2.37209, "vy":-1.30752, "omega":0.00103, "ax":-2.839, "ay":0.95932, "alpha":-0.00282, "fx":[-48.36394,-48.15867,-48.3216,-48.31786], "fy":[16.32986,16.32325,16.28419,16.33385]}, - {"t":0.97465, "x":6.37099, "y":6.16764, "heading":0.00028, "vx":-2.47852, "vy":-1.27156, "omega":0.00092, "ax":-2.66561, "ay":1.36905, "alpha":0.03193, "fx":[-45.34707,-45.39621,-45.31381,-45.30789], "fy":[23.4257,22.92681,23.36544,23.43044]}, - {"t":1.01213, "x":6.27621, "y":6.12094, "heading":0.00032, "vx":-2.57844, "vy":-1.22024, "omega":0.00212, "ax":-2.42782, "ay":1.75655, "alpha":-0.03588, "fx":[-41.52944,-40.70557,-41.47802,-41.4729], "fy":[29.86138,29.95532,29.82892,29.86814]}, - {"t":1.04962, "x":6.17785, "y":6.07643, "heading":0.0004, "vx":-2.66945, "vy":-1.15439, "omega":0.00077, "ax":-2.14194, "ay":2.09579, "alpha":0.03914, "fx":[-36.42696,-36.51436,-36.39962,-36.39435], "fy":[35.81991,35.17347,35.77746,35.82403]}, - {"t":1.08711, "x":6.07628, "y":6.03463, "heading":0.00043, "vx":-2.74975, "vy":-1.07583, "omega":0.00224, "ax":-1.83147, "ay":2.37208, "alpha":-0.02244, "fx":[-31.30528,-30.77607,-31.26677,-31.26324], "fy":[40.33772,40.39729,40.31626,40.34236]}, - {"t":1.12459, "x":5.97191, "y":5.99597, "heading":0.00051, "vx":-2.8184, "vy":-0.98691, "omega":0.0014, "ax":-1.52063, "ay":2.5826, "alpha":0.01323, "fx":[-25.86789,-25.90337,-25.84647,-25.84423], "fy":[43.97903,43.79809,43.95862,43.98116]}, - {"t":1.16208, "x":5.86519, "y":5.96079, "heading":0.00056, "vx":-2.8754, "vy":-0.89009, "omega":0.0019, "ax":-1.2263, "ay":2.73486, "alpha":-0.01445, "fx":[-20.95664,-20.61236,-20.93415,-20.93267], "fy":[46.51512,46.54196,46.50296,46.51704]}, - {"t":1.19956, "x":5.75654, "y":5.92934, "heading":0.00063, "vx":-2.92137, "vy":-0.78757, "omega":0.00135, "ax":-0.95867, "ay":2.83997, "alpha":0.00944, "fx":[-16.30541,-16.33094,-16.2955,-16.29492], "fy":[48.34597,48.19823,48.33752,48.34652]}, - {"t":1.23705, "x":5.64635, "y":5.90181, "heading":0.00068, "vx":-2.95731, "vy":-0.68111, "omega":0.00171, "ax":-0.72091, "ay":2.90962, "alpha":-0.00955, "fx":[-12.31454,-12.11249,-12.31137,-12.31123], "fy":[49.48935,49.50146,49.487,49.48951]}, - {"t":1.27454, "x":5.53499, "y":5.87833, "heading":0.00075, "vx":-2.98434, "vy":-0.57204, "omega":0.00135, "ax":-0.51263, "ay":2.95362, "alpha":0.00481, "fx":[-8.71505,-8.7276,-8.718,-8.71822], "fy":[50.26452,50.16409,50.2679,50.26433]}, - {"t":1.31202, "x":5.42276, "y":5.85896, "heading":0.0008, "vx":-3.00355, "vy":-0.46132, "omega":0.00153, "ax":-0.33136, "ay":2.97957, "alpha":-0.00618, "fx":[-5.64882,-5.56646,-5.66477,-5.66504], "fy":[50.67722,50.68791,50.68432,50.67685]}, - {"t":1.34951, "x":5.30993, "y":5.84376, "heading":0.00086, "vx":-3.01597, "vy":-0.34963, "omega":0.0013, "ax":-0.17384, "ay":2.99303, "alpha":0.00079, "fx":[-2.94837,-2.95172,-2.96374,-2.96398], "fy":[50.9219,50.86264,50.93645,50.92168]}, - {"t":1.387, "x":5.19675, "y":5.83275, "heading":0.00091, "vx":-3.02249, "vy":-0.23743, "omega":0.00133, "ax":-0.0368, "ay":2.99798, "alpha":-0.00506, "fx":[-0.61114,-0.60243,-0.64497,-0.64502], "fy":[50.98681,51.00294,51.00283,50.98674]}, - {"t":1.42448, "x":5.08342, "y":5.82596, "heading":0.00095, "vx":-3.02387, "vy":-0.12505, "omega":0.00114, "ax":0.08282, "ay":2.99718, "alpha":-0.00198, "fx":[1.42187,1.4235,1.39462,1.39484], "fy":[50.98443,50.94597,51.00971,50.98463]}, - {"t":1.46197, "x":4.97013, "y":5.82338, "heading":0.001, "vx":-3.02076, "vy":-0.01269, "omega":0.00106, "ax":0.18764, "ay":2.99255, "alpha":-0.00465, "fx":[3.22976,3.17902,3.17887,3.17943], "fy":[50.88975,50.91489,50.91466,50.89047]}, - {"t":1.49946, "x":4.85702, "y":5.82501, "heading":0.00104, "vx":-3.01373, "vy":0.09949, "omega":0.00089, "ax":0.29082, "ay":2.9827, "alpha":-0.00428, "fx":[4.99793,4.91056,4.93874,4.93959], "fy":[50.71894,50.75112,50.7496,50.7201]}, - {"t":1.53681, "x":4.74465, "y":5.8308, "heading":0.00107, "vx":-3.00287, "vy":0.2109, "omega":0.00073, "ax":0.41339, "ay":2.96969, "alpha":-0.00486, "fx":[7.05245,7.05893,7.00672,7.00824], "fy":[50.51081,50.47812,50.55292,50.51222]}, - {"t":1.57417, "x":4.63276, "y":5.84075, "heading":0.0011, "vx":-2.98743, "vy":0.32184, "omega":0.00055, "ax":0.55171, "ay":2.94701, "alpha":-0.00378, "fx":[9.46183,9.30488,9.38437,9.3866], "fy":[50.10501,50.15206,50.14613,50.10793]}, - {"t":1.61152, "x":4.52155, "y":5.85483, "heading":0.00112, "vx":-2.96682, "vy":0.43192, "omega":0.00041, "ax":0.70819, "ay":2.91324, "alpha":-0.0063, "fx":[12.07185,12.08351,12.01284,12.01599], "fy":[49.54968,49.50692,49.60435,49.55261]}, - {"t":1.64888, "x":4.41122, "y":5.873, "heading":0.00113, "vx":-2.94036, "vy":0.54075, "omega":0.00017, "ax":0.8849, "ay":2.86437, "alpha":-0.00261, "fx":[15.16005,14.91264,15.06547,15.06965], "fy":[48.68985,48.75994,48.74351,48.69531]}, - {"t":1.68623, "x":4.302, "y":5.8952, "heading":0.00114, "vx":-2.90731, "vy":0.64775, "omega":0.00007, "ax":1.08361, "ay":2.7951, "alpha":-0.00662, "fx":[18.4612,18.48047,18.39015,18.39549], "fy":[47.54482,47.46889,47.61209,47.54982]}, - {"t":1.72359, "x":4.19415, "y":5.92134, "heading":0.00114, "vx":-2.86683, "vy":0.75216, "omega":-0.00017, "ax":1.30486, "ay":2.69874, "alpha":-0.00086, "fx":[22.33577,21.98337,22.22759,22.2342], "fy":[45.8604,45.96339,45.92668,45.86905]}, - {"t":1.76094, "x":4.08797, "y":5.95132, "heading":0.00114, "vx":-2.81808, "vy":0.85297, "omega":-0.0002, "ax":1.54727, "ay":2.56727, "alpha":-0.00738, "fx":[26.35051,26.37299,26.2715,26.27914], "fy":[43.66854,43.58336,43.74677,43.67574]}, - {"t":1.7983, "x":3.98378, "y":5.98498, "heading":0.00113, "vx":-2.76029, "vy":0.94887, "omega":-0.00048, "ax":1.80584, "ay":2.39226, "alpha":0.00471, "fx":[30.90607,30.36966,30.79155,30.80034], "fy":[40.63241,40.78146,40.70915,40.64394]}, - {"t":1.83565, "x":3.88193, "y":6.02209, "heading":0.00111, "vx":-2.69283, "vy":1.03823, "omega":-0.0003, "ax":2.07126, "ay":2.16635, "alpha":-0.00615, "fx":[35.26317,35.28556,35.18423,35.19306], "fy":[36.85457,36.7397,36.9388,36.86297]}, - {"t":1.87301, "x":3.78279, "y":6.06239, "heading":0.0011, "vx":-2.61546, "vy":1.11916, "omega":-0.00053, "ax":2.32879, "ay":1.88661, "alpha":0.01364, "fx":[39.85436,39.09221,39.74613,39.75525], "fy":[32.0195,32.21303,32.09889,32.03148]}, - {"t":1.91036, "x":3.68671, "y":6.10551, "heading":0.00108, "vx":-2.52847, "vy":1.18963, "omega":-0.00002, "ax":2.56092, "ay":1.55687, "alpha":0.0014, "fx":[43.5843,43.61726,43.51535,43.52539], "fy":[26.52558,26.23722,26.63143,26.53358]}, - {"t":1.94772, "x":3.59405, "y":6.15103, "heading":0.00108, "vx":-2.4328, "vy":1.24779, "omega":0.00003, "ax":2.75046, "ay":1.19043, "alpha":-0.00405, "fx":[46.86288,46.66767,46.80101,46.80646], "fy":[20.20504,20.31052,20.26897,20.21089]}, - {"t":1.98507, "x":3.50509, "y":6.19848, "heading":0.00108, "vx":-2.33006, "vy":1.29226, "omega":-0.00012, "ax":2.8864, "ay":0.80691, "alpha":-0.0047, "fx":[49.11785,49.12116,49.07179,49.07678], "fy":[13.72061,13.6515,13.8045,13.72474]}, - {"t":2.02243, "x":3.42006, "y":6.24731, "heading":0.00108, "vx":-2.22224, "vy":1.3224, "omega":-0.0003, "ax":2.96641, "ay":0.42829, "alpha":0.00164, "fx":[50.5331,50.31121,50.4924,50.49429], "fy":[7.25735,7.32202,7.30162,7.25937]}, - {"t":2.05978, "x":3.33912, "y":6.29701, "heading":0.00106, "vx":-2.11143, "vy":1.3384, "omega":-0.00024, "ax":2.99642, "ay":0.07261, "alpha":-0.0134, "fx":[50.98109,50.97883,50.95619,50.95673], "fy":[1.17456,1.35829,1.23204,1.17514]}, - {"t":2.09714, "x":3.26234, "y":6.34705, "heading":0.00105, "vx":-1.99949, "vy":1.34111, "omega":-0.00074, "ax":2.98711, "ay":-0.24869, "alpha":0.00562, "fx":[50.87286,50.66631,50.85059,50.85004], "fy":[-4.23999,-4.22367,-4.21631,-4.24059]}, - {"t":2.13449, "x":3.18973, "y":6.39698, "heading":0.00103, "vx":-1.88791, "vy":1.33182, "omega":-0.00053, "ax":2.95021, "ay":-0.53095, "alpha":-0.01994, "fx":[50.18308,50.19865,50.17437,50.17275], "fy":[-9.12903,-8.77046,-9.09551,-9.13023]}, - {"t":2.17185, "x":3.12127, "y":6.44636, "heading":0.00101, "vx":-1.77771, "vy":1.31199, "omega":-0.00127, "ax":2.89596, "ay":-0.77458, "alpha":0.00859, "fx":[49.31221,49.11946,49.30393,49.30251], "fy":[-13.17211,-13.19048,-13.16508,-13.17362]}, - {"t":2.2092, "x":3.05688, "y":6.49483, "heading":0.00096, "vx":-1.66953, "vy":1.28305, "omega":-0.00095, "ax":2.83225, "ay":-0.98277, "alpha":-0.02303, "fx":[48.16571,48.20308,48.1681,48.16606], "fy":[-16.83078,-16.38835,-16.81523,-16.83233]}, - {"t":2.24656, "x":2.99649, "y":6.54207, "heading":0.00092, "vx":-1.56373, "vy":1.24634, "omega":-0.00181, "ax":2.76455, "ay":-1.15998, "alpha":0.00865, "fx":[47.06093,46.91305,47.06217,47.0608], "fy":[-19.72104,-19.75511,-19.72519,-19.72249]}, - {"t":2.28391, "x":2.94001, "y":6.58782, "heading":0.00086, "vx":-1.46046, "vy":1.20301, "omega":-0.00149, "ax":2.69645, "ay":-1.31082, "alpha":-0.01918, "fx":[45.85053,45.89516,45.85965,45.85788], "fy":[-22.39178,-22.01399,-22.38756,-22.39311]}, - {"t":2.32127, "x":2.88733, "y":6.63184, "heading":0.0008, "vx":-1.35973, "vy":1.15405, "omega":-0.00221, "ax":2.63011, "ay":-1.43954, "alpha":0.00826, "fx":[44.76332,44.64712,44.77023,44.76915], "fy":[-24.47347,-24.5127,-24.48393,-24.4746]}, - {"t":2.35862, "x":2.83838, "y":6.67395, "heading":0.00072, "vx":-1.26148, "vy":1.10027, "omega":-0.0019, "ax":2.56677, "ay":-1.54986, "alpha":-0.00496, "fx":[43.64857,43.6707,43.66099,43.66016], "fy":[-26.38934,-26.27421,-26.39696,-26.39017]}, - {"t":2.39598, "x":2.79304, "y":6.71397, "heading":0.00065, "vx":-1.1656, "vy":1.04238, "omega":-0.00208, "ax":2.50705, "ay":-1.6449, "alpha":0.00831, "fx":[42.66468,42.56183,42.67544,42.67467], "fy":[-27.96511,-28.00634,-27.97954,-27.96588]}, - {"t":2.43333, "x":2.75125, "y":6.75176, "heading":0.00057, "vx":-1.07195, "vy":0.98093, "omega":-0.00177, "ax":2.45116, "ay":-1.72723, "alpha":-0.00344, "fx":[41.6802,41.70249,41.69588,41.6954], "fy":[-29.39996,-29.3064,-29.41171,-29.40047]}, - {"t":2.47069, "x":2.71292, "y":6.78719, "heading":0.0005, "vx":-0.98039, "vy":0.91641, "omega":-0.0019, "ax":2.3991, "ay":-1.79897, "alpha":0.00787, "fx":[40.82178,40.73832,40.83604,40.83563], "fy":[-30.58541,-30.62537,-30.60328,-30.5858]}, - {"t":2.50804, "x":2.67797, "y":6.82017, "heading":0.00043, "vx":-0.89077, "vy":0.84921, "omega":-0.00161, "ax":2.35073, "ay":-1.86184, "alpha":-0.00187, "fx":[39.97054,39.99207,39.98923,39.9891], "fy":[-31.68329,-31.61219,-31.69861,-31.68347]}, - {"t":2.5454, "x":2.64634, "y":6.85059, "heading":0.00037, "vx":-0.80296, "vy":0.77966, "omega":-0.00168, "ax":2.30584, "ay":-1.91725, "alpha":0.00742, "fx":[39.22939,39.16406,39.24678,39.24667], "fy":[-32.59708,-32.63557,-32.61791,-32.59713]}, - {"t":2.58275, "x":2.61795, "y":6.87838, "heading":0.00031, "vx":-0.71682, "vy":0.70804, "omega":-0.0014, "ax":2.2642, "ay":-1.96635, "alpha":-0.00104, "fx":[38.49719,38.51889,38.51859,38.51875], "fy":[-33.45801,-33.39592,-33.47634,-33.45792]}, - {"t":2.62011, "x":2.59275, "y":6.90346, "heading":0.00026, "vx":-0.63224, "vy":0.63459, "omega":-0.00144, "ax":2.22554, "ay":-2.01008, "alpha":0.00714, "fx":[37.85881,37.80678,37.87885,37.87898], "fy":[-34.17563,-34.21322,-34.19894,-34.17542]}, - {"t":2.65746, "x":2.57069, "y":6.92576, "heading":0.0002, "vx":-0.54911, "vy":0.5595, "omega":-0.00117, "ax":2.18963, "ay":-2.04921, "alpha":0.00008, "fx":[37.22807,37.24813,37.25179,37.25214], "fy":[-34.86305,-34.81605,-34.8838,-34.86278]}, - {"t":2.69482, "x":2.5517, "y":6.94523, "heading":0.00016, "vx":-0.46731, "vy":0.48295, "omega":-0.00117, "ax":2.15623, "ay":-2.08439, "alpha":0.00761, "fx":[36.6792,36.62536,36.70142,36.7017], "fy":[-35.43879,-35.47798,-35.46416,-35.4384]}, - {"t":2.73217, "x":2.53575, "y":6.96182, "heading":0.00012, "vx":-0.38677, "vy":0.40509, "omega":-0.00088, "ax":2.12513, "ay":-2.11615, "alpha":0.00076, "fx":[36.12987,36.1498,36.15557,36.15606], "fy":[-35.99921,-35.96054,-36.02189,-35.99883]}, - {"t":2.76953, "x":2.52279, "y":6.97547, "heading":0.00008, "vx":-0.30738, "vy":0.32604, "omega":-0.00086, "ax":2.09612, "ay":-2.14495, "alpha":0.0074, "fx":[35.65354,35.60838,35.67752,35.67789], "fy":[-36.46882,-36.50663,-36.4959,-36.46833]}, - {"t":2.80688, "x":2.51277, "y":6.98616, "heading":0.00005, "vx":-0.22908, "vy":0.24592, "omega":-0.00058, "ax":2.06901, "ay":-2.17115, "alpha":0.0013, "fx":[35.17468,35.19407,35.20206,35.2026], "fy":[-36.93283,-36.9002,-36.95706,-36.9324]}, - {"t":2.84424, "x":2.50565, "y":6.99383, "heading":0.00003, "vx":-0.15179, "vy":0.16481, "omega":-0.00053, "ax":2.04366, "ay":-2.19508, "alpha":0.00715, "fx":[34.75862,34.72144,34.7839,34.78428], "fy":[-37.32157,-37.35795,-37.34999,-37.32105]}, - {"t":2.88159, "x":2.50141, "y":6.99845, "heading":0.00001, "vx":-0.07545, "vy":0.08282, "omega":-0.00026, "ax":2.0199, "ay":-2.217, "alpha":0.00708, "fx":[34.35345,34.31909,34.37936,34.37974], "fy":[-37.69445,-37.73039,-37.72356,-37.69393]}, - {"t":2.91895, "x":2.5, "y":7.0, "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]}], + {"t":0.0, "x":7.5, "y":7.0, "heading":0.0, "vx":0.0, "vy":0.0, "omega":0.0, "ax":-2.99877, "ay":0.0, "alpha":-0.00462, "fx":[-51.03528,-50.93402,-51.03174,-51.03174], "fy":[-0.00126,0.00124,0.00127,-0.00125]}, + {"t":0.04966, "x":7.4963, "y":7.0, "heading":0.0, "vx":-0.14893, "vy":0.0, "omega":-0.00023, "ax":-2.99936, "ay":0.0, "alpha":-0.00294, "fx":[-51.03741,-50.96939,-51.03308,-51.03308], "fy":[-0.00096,0.00095,0.00096,-0.00095]}, + {"t":0.09933, "x":7.48521, "y":7.0, "heading":-0.00001, "vx":-0.29789, "vy":0.0, "omega":-0.00038, "ax":-2.99933, "ay":0.0, "alpha":-0.0004, "fx":[-51.01246,-51.01246,-51.02309,-51.02309], "fy":[0.00318,0.00406,-0.01043,0.00318]}, + {"t":0.14899, "x":7.46671, "y":7.0, "heading":-0.00003, "vx":-0.44685, "vy":0.0, "omega":-0.0004, "ax":-2.9993, "ay":0.0, "alpha":-0.00321, "fx":[-51.03938,-50.96162,-51.03404,-51.03404], "fy":[-0.00046,0.00045,0.00047,-0.00046]}, + {"t":0.19866, "x":7.44082, "y":7.0, "heading":-0.00005, "vx":-0.59581, "vy":0.0, "omega":-0.00055, "ax":-2.99927, "ay":0.0, "alpha":-0.00005, "fx":[-51.01211,-51.01211,-51.02132,-51.02132], "fy":[0.0043,0.00299,-0.0116,0.00431]}, + {"t":0.24832, "x":7.40753, "y":7.0, "heading":-0.00008, "vx":-0.74476, "vy":0.0, "omega":-0.00056, "ax":-2.99923, "ay":0.0, "alpha":-0.00328, "fx":[-51.04242,-50.95292,-51.03454,-51.03455], "fy":[0.0008,-0.00082,-0.0008,0.00081]}, + {"t":0.29798, "x":7.36685, "y":7.0, "heading":-0.0001, "vx":-0.89371, "vy":0.0, "omega":-0.00072, "ax":-2.99919, "ay":0.0, "alpha":0.00054, "fx":[-51.01204,-51.01203,-51.01884,-51.01884], "fy":[0.00628,0.00123,-0.0138,0.00629]}, + {"t":0.34765, "x":7.31876, "y":7.0, "heading":-0.00014, "vx":-1.04267, "vy":0.0, "omega":-0.00069, "ax":-2.99915, "ay":0.0, "alpha":-0.00332, "fx":[-51.0471,-50.94106,-51.03531,-51.03532], "fy":[0.00279,-0.00281,-0.00277,0.0028]}, + {"t":0.39731, "x":7.26328, "y":7.0, "heading":-0.00018, "vx":-1.19161, "vy":0.0, "omega":-0.00086, "ax":-2.9991, "ay":0.0, "alpha":0.00137, "fx":[-51.01215,-51.01215,-51.01559,-51.01559], "fy":[0.00907,-0.00118,-0.01698,0.00908]}, + {"t":0.44697, "x":7.2004, "y":7.0, "heading":-0.00022, "vx":-1.34056, "vy":0.0, "omega":-0.00079, "ax":-2.99905, "ay":0.0, "alpha":-0.00342, "fx":[-51.05385,-50.92437,-51.03678,-51.03678], "fy":[0.00549,-0.00552,-0.00547,0.0055]}, + {"t":0.49664, "x":7.13013, "y":7.0, "heading":-0.00026, "vx":-1.48951, "vy":0.0, "omega":-0.00096, "ax":-2.99899, "ay":0.0, "alpha":0.00245, "fx":[-51.01237,-51.01237,-51.01142,-51.01142], "fy":[0.01268,-0.00424,-0.02112,0.01269]}, + {"t":0.5463, "x":7.05245, "y":7.0, "heading":-0.0003, "vx":-1.63845, "vy":0.0, "omega":-0.00084, "ax":-2.99892, "ay":0.0, "alpha":-0.00352, "fx":[-51.0623,-50.90341,-51.03856,-51.03856], "fy":[0.00894,-0.00898,-0.00892,0.00895]}, + {"t":0.59597, "x":6.96738, "y":7.0, "heading":-0.00035, "vx":-1.78739, "vy":0.0, "omega":-0.00101, "ax":-2.99884, "ay":0.0, "alpha":0.00379, "fx":[-51.01258,-51.01258,-51.0061,-51.0061], "fy":[0.0171,-0.00799,-0.02622,0.01711]}, + {"t":0.64563, "x":6.87492, "y":7.0, "heading":-0.0004, "vx":-1.93632, "vy":0.0, "omega":-0.00083, "ax":-2.99874, "ay":0.0, "alpha":-0.00391, "fx":[-51.07373,-50.87346,-51.04191,-51.04191], "fy":[0.01318,-0.01323,-0.01314,0.01319]}, + {"t":0.69529, "x":6.77505, "y":7.0, "heading":-0.00044, "vx":-2.08525, "vy":0.0, "omega":-0.00102, "ax":-2.99863, "ay":0.0, "alpha":0.00538, "fx":[-51.01248,-51.01249,-50.99929,-50.99929], "fy":[0.02226,-0.01238,-0.03216,0.02228]}, + {"t":0.74496, "x":6.66779, "y":7.0, "heading":-0.00049, "vx":-2.23417, "vy":0.0, "omega":-0.00075, "ax":-2.9985, "ay":0.0, "alpha":-0.0047, "fx":[-51.08799,-50.83278,-51.04695,-51.04695], "fy":[0.0181,-0.01817,-0.01804,0.01812]}, + {"t":0.79462, "x":6.55314, "y":7.0, "heading":-0.00053, "vx":-2.38309, "vy":0.0, "omega":-0.00099, "ax":-2.99834, "ay":0.0, "alpha":0.00711, "fx":[-51.01139,-51.01139,-50.99058,-50.99058], "fy":[0.02777,-0.01709,-0.03846,0.02779]}, + {"t":0.84429, "x":6.43109, "y":7.0, "heading":-0.00057, "vx":-2.532, "vy":0.0, "omega":-0.00063, "ax":-2.99815, "ay":0.0, "alpha":-0.00552, "fx":[-51.10091,-50.78875,-51.05051,-51.05051], "fy":[0.02322,-0.02332,-0.02314,0.02325]}, + {"t":0.89395, "x":6.30164, "y":7.0, "heading":-0.00061, "vx":-2.6809, "vy":0.0, "omega":-0.00091, "ax":-2.9979, "ay":0.0, "alpha":0.00872, "fx":[-51.00763,-51.00764,-50.9793,-50.9793], "fy":[0.03266,-0.02133,-0.044,0.03268]}, + {"t":0.94361, "x":6.1648, "y":7.0, "heading":-0.00065, "vx":-2.82978, "vy":0.0, "omega":-0.00047, "ax":-2.99758, "ay":0.0, "alpha":-0.00853, "fx":[-51.11831,-50.71168,-51.06094,-51.06094], "fy":[0.02724,-0.02738,-0.02711,0.02726]}, + {"t":0.99328, "x":6.02057, "y":7.0, "heading":-0.00067, "vx":-2.97866, "vy":0.0, "omega":-0.0009, "ax":-2.99714, "ay":0.0, "alpha":0.00928, "fx":[-50.99639,-50.9964,-50.96455,-50.96454], "fy":[0.03389,-0.02245,-0.04533,0.03391]}, + {"t":1.04294, "x":5.86894, "y":7.0, "heading":-0.00072, "vx":-3.12751, "vy":0.0, "omega":-0.00044, "ax":-2.9965, "ay":0.0, "alpha":-0.00975, "fx":[-51.10137,-50.68222,-51.04748,-51.04748], "fy":[0.02558,-0.02574,-0.02543,0.02559]}, + {"t":1.0926, "x":5.70992, "y":7.0, "heading":-0.00074, "vx":-3.27632, "vy":0.0, "omega":-0.00092, "ax":-2.9955, "ay":0.0, "alpha":0.00827, "fx":[-50.96315,-50.96316,-50.94206,-50.94205], "fy":[0.03383,-0.03209,-0.03555,0.03385]}, + {"t":1.14227, "x":5.54351, "y":7.0, "heading":-0.00079, "vx":-3.42509, "vy":0.0, "omega":-0.00051, "ax":-2.9937, "ay":0.0, "alpha":0.00116, "fx":[-50.95088,-50.88626,-50.92532,-50.92531], "fy":[0.00962,-0.0097,-0.00953,0.00962]}, + {"t":1.19193, "x":5.36971, "y":7.0, "heading":-0.00081, "vx":-3.57377, "vy":0.0, "omega":-0.00045, "ax":-2.98949, "ay":0.0, "alpha":-0.00133, "fx":[-50.84093,-50.84094,-50.8598,-50.85979], "fy":[0.00222,0.0001,-0.00482,0.00222]}, + {"t":1.2416, "x":5.18854, "y":7.0, "heading":-0.00083, "vx":-3.72224, "vy":0.0, "omega":-0.00052, "ax":-2.96846, "ay":0.0, "alpha":0.11819, "fx":[-49.78714,-52.52792,-49.82762,-49.82762], "fy":[-0.031,0.03092,0.03101,-0.03101]}, + {"t":1.29126, "x":5.00002, "y":7.0, "heading":-0.00086, "vx":-3.86966, "vy":0.0, "omega":0.00535, "ax":2.96795, "ay":0.0, "alpha":-0.006, "fx":[50.50144,50.50145,50.46655,50.46654], "fy":[-0.01472,0.01695,0.01276,-0.01471]}, + {"t":1.34092, "x":4.8115, "y":7.0, "heading":-0.00059, "vx":-3.72226, "vy":0.0, "omega":0.00505, "ax":2.98943, "ay":0.0, "alpha":-0.0605, "fx":[50.55447,51.76922,50.537,50.537], "fy":[-0.01218,0.01216,0.01221,-0.01218]}, + {"t":1.39059, "x":4.63032, "y":7.0, "heading":-0.00034, "vx":-3.5738, "vy":0.0, "omega":0.00205, "ax":2.99368, "ay":0.0, "alpha":-0.00853, "fx":[50.94018,50.94018,50.90303,50.90303], "fy":[-0.02723,0.02828,0.02618,-0.02723]}, + {"t":1.44025, "x":4.45652, "y":7.0, "heading":-0.00024, "vx":-3.42512, "vy":0.0, "omega":0.00163, "ax":2.99549, "ay":0.0, "alpha":0.0046, "fx":[51.07395,50.71133,51.01224,51.01222], "fy":[-0.03514,0.03528,0.03501,-0.03515]}, + {"t":1.48992, "x":4.29011, "y":7.0, "heading":-0.00016, "vx":-3.27635, "vy":0.0, "omega":0.00185, "ax":2.9965, "ay":0.0, "alpha":-0.01423, "fx":[50.99731,50.99733,50.94175,50.94174], "fy":[-0.0486,0.04954,0.04767,-0.04861]}, + {"t":1.53958, "x":4.13109, "y":7.0, "heading":-0.00007, "vx":-3.12754, "vy":0.0, "omega":0.00115, "ax":2.99713, "ay":0.0, "alpha":0.00542, "fx":[51.12333,50.6986,51.04985,51.04983], "fy":[-0.04035,0.0405,0.04021,-0.04036]}, + {"t":1.58924, "x":3.97946, "y":7.0, "heading":-0.00001, "vx":-2.97869, "vy":0.0, "omega":0.00142, "ax":2.99758, "ay":0.0, "alpha":-0.01309, "fx":[51.01472,51.01474,50.96112,50.9611], "fy":[-0.04347,0.03591,0.05104,-0.04348]}, + {"t":1.63891, "x":3.83523, "y":7.0, "heading":0.00006, "vx":-2.82981, "vy":0.0, "omega":0.00077, "ax":2.9979, "ay":0.0, "alpha":0.00392, "fx":[51.12041,50.7505,51.05141,51.0514], "fy":[-0.0369,0.03702,0.03679,-0.03691]}, + {"t":1.68857, "x":3.69839, "y":7.0, "heading":0.0001, "vx":-2.68093, "vy":0.0, "omega":0.00096, "ax":2.99815, "ay":0.0, "alpha":-0.01139, "fx":[51.01983,51.01984,50.97545,50.97544], "fy":[-0.03893,0.03101,0.04685,-0.03893]}, + {"t":1.73823, "x":3.56894, "y":7.0, "heading":0.00014, "vx":-2.53203, "vy":0.0, "omega":0.0004, "ax":2.99834, "ay":0.0, "alpha":0.0023, "fx":[51.10251,50.81348,51.04393,51.04393], "fy":[-0.0306,0.03069,0.03053,-0.03062]}, + {"t":1.7879, "x":3.44689, "y":7.0, "heading":0.00016, "vx":-2.38312, "vy":0.0, "omega":0.00051, "ax":2.9985, "ay":0.0, "alpha":-0.0092, "fx":[51.02066,51.02067,50.98664,50.98664], "fy":[-0.03238,0.02479,0.03998,-0.03239]}, + {"t":1.83756, "x":3.33223, "y":7.0, "heading":0.00019, "vx":-2.2342, "vy":0.0, "omega":0.00005, "ax":2.99863, "ay":0.0, "alpha":0.00169, "fx":[51.08632,50.85901,51.03909,51.03908], "fy":[-0.02415,0.02421,0.0241,-0.02416]}, + {"t":1.88723, "x":3.22497, "y":7.0, "heading":0.00019, "vx":-2.08528, "vy":0.0, "omega":0.00014, "ax":2.99874, "ay":0.0, "alpha":-0.00711, "fx":[51.02008,51.02008,50.9954,50.9954], "fy":[-0.02583,0.01883,0.03283,-0.02584]}, + {"t":1.93689, "x":3.1251, "y":7.0, "heading":0.0002, "vx":-1.93635, "vy":0.0, "omega":-0.00022, "ax":2.99884, "ay":0.0, "alpha":0.00144, "fx":[51.0721,50.89437,51.03542,51.03542], "fy":[-0.01834,0.01839,0.01831,-0.01836]}, + {"t":1.98655, "x":3.03263, "y":7.0, "heading":0.00019, "vx":-1.78742, "vy":0.0, "omega":-0.00015, "ax":2.99892, "ay":0.0, "alpha":-0.00526, "fx":[51.01906,51.01906,51.00233,51.00233], "fy":[-0.01984,0.01352,0.02617,-0.01986]}, + {"t":2.03622, "x":2.94756, "y":7.0, "heading":0.00018, "vx":-1.63848, "vy":0.0, "omega":-0.00041, "ax":2.99899, "ay":0.0, "alpha":0.00157, "fx":[51.06097,50.91929,51.03364,51.03365], "fy":[-0.01332,0.01336,0.0133,-0.01333]}, + {"t":2.08588, "x":2.86989, "y":7.0, "heading":0.00016, "vx":-1.48954, "vy":0.0, "omega":-0.00033, "ax":2.99905, "ay":0.0, "alpha":-0.00364, "fx":[51.01794,51.01793,51.00793,51.00794], "fy":[-0.01454,0.00888,0.02021,-0.01455]}, + {"t":2.13555, "x":2.79961, "y":7.0, "heading":0.00014, "vx":-1.34059, "vy":0.0, "omega":-0.00051, "ax":2.9991, "ay":0.0, "alpha":0.00193, "fx":[51.05226,50.9368,51.0332,51.0332], "fy":[-0.00895,0.00897,0.00893,-0.00896]}, + {"t":2.18521, "x":2.73673, "y":7.0, "heading":0.00012, "vx":-1.19165, "vy":0.0, "omega":-0.00041, "ax":2.99915, "ay":0.0, "alpha":-0.00221, "fx":[51.01675,51.01674,51.01264,51.01264], "fy":[-0.00978,0.00472,0.01485,-0.00979]}, + {"t":2.23487, "x":2.68125, "y":7.0, "heading":0.0001, "vx":-1.0427, "vy":0.0, "omega":-0.00052, "ax":2.99919, "ay":0.0, "alpha":0.00247, "fx":[51.04525,50.94907,51.03371,51.03371], "fy":[-0.005,0.00502,0.00499,-0.00501]}, + {"t":2.28454, "x":2.63316, "y":7.0, "heading":0.00007, "vx":-0.89374, "vy":0.0, "omega":-0.0004, "ax":2.99923, "ay":0.0, "alpha":-0.00087, "fx":[51.01542,51.01542,51.01679,51.01679], "fy":[-0.00537,0.00084,0.0099,-0.00537]}, + {"t":2.3342, "x":2.59247, "y":7.0, "heading":0.00005, "vx":-0.74479, "vy":0.0, "omega":-0.00044, "ax":2.99927, "ay":0.0, "alpha":0.0031, "fx":[51.03871,50.95893,51.0346,51.03461], "fy":[-0.00123,0.00125,0.00123,-0.00124]}, + {"t":2.38386, "x":2.55918, "y":7.0, "heading":0.00003, "vx":-0.59584, "vy":0.0, "omega":-0.00029, "ax":2.9993, "ay":0.0, "alpha":0.00044, "fx":[51.01384,51.01384,51.02069,51.02069], "fy":[-0.00106,-0.00299,0.00512,-0.00107]}, + {"t":2.43353, "x":2.53329, "y":7.0, "heading":0.00002, "vx":-0.44688, "vy":0.0, "omega":-0.00027, "ax":2.99933, "ay":0.0, "alpha":0.00395, "fx":[51.03354,50.96476,51.03639,51.03639], "fy":[0.00261,-0.0026,-0.00262,0.00261]}, + {"t":2.48319, "x":2.5148, "y":7.0, "heading":0.0, "vx":-0.29792, "vy":0.0, "omega":-0.00007, "ax":2.99936, "ay":0.0, "alpha":0.00182, "fx":[51.01185,51.01185,51.02462,51.02462], "fy":[0.00339,-0.00705,0.00027,0.00339]}, + {"t":2.53286, "x":2.5037, "y":7.0, "heading":0.0, "vx":-0.14896, "vy":0.0, "omega":0.00002, "ax":2.99938, "ay":0.0, "alpha":-0.00039, "fx":[51.02585,51.02585,51.03494,50.98801], "fy":[0.00859,-0.00511,-0.00511,0.00164]}, + {"t":2.58252, "x":2.5, "y":7.0, "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/auto/TushPush1.traj b/auto/TushPush1.traj new file mode 100644 index 0000000..0032aa3 --- /dev/null +++ b/auto/TushPush1.traj @@ -0,0 +1,193 @@ +{ + "name":"TushPush1", + "version":1, + "snapshot":{ + "waypoints":[ + {"x":7.16530704498291, "y":4.919252395629883, "heading":1.5707963267948966, "intervals":39, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":7.85153865814209, "y":4.919252395629883, "heading":1.5707963267948966, "intervals":31, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":6.889065742492676, "y":3.818342685699463, "heading":1.5707963267948966, "intervals":49, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":6.163188457489014, "y":3.73522686958313, "heading":1.5707963267948966, "intervals":17, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":5.769199371337891, "y":3.898647785186768, "heading":1.5707963267948966, "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}, + {"from":4, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":1, "to":4, "data":{"type":"MaxAcceleration", "props":{"max":2.5}}, "enabled":true}, + {"from":2, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":false}, + {"from":1, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":0, "to":1, "data":{"type":"MaxAcceleration", "props":{"max":0.75}}, "enabled":true}, + {"from":1, "to":2, "data":{"type":"MaxAcceleration", "props":{"max":2.5}}, "enabled":true}, + {"from":2, "to":3, "data":{"type":"MaxAcceleration", "props":{"max":0.5}}, "enabled":true}, + {"from":3, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}], + "targetDt":0.05 + }, + "params":{ + "waypoints":[ + {"x":{"exp":"7.16530704498291 m", "val":7.16530704498291}, "y":{"exp":"4.919252395629883 m", "val":4.919252395629883}, "heading":{"exp":"90 deg", "val":1.5707963267948966}, "intervals":39, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"7.85153865814209 m", "val":7.85153865814209}, "y":{"exp":"4.919252395629883 m", "val":4.919252395629883}, "heading":{"exp":"90 deg", "val":1.5707963267948966}, "intervals":31, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"6.889065742492676 m", "val":6.889065742492676}, "y":{"exp":"3.818342685699463 m", "val":3.818342685699463}, "heading":{"exp":"90 deg", "val":1.5707963267948966}, "intervals":49, "split":false, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"6.163188457489014 m", "val":6.163188457489014}, "y":{"exp":"3.73522686958313 m", "val":3.73522686958313}, "heading":{"exp":"90 deg", "val":1.5707963267948966}, "intervals":17, "split":true, "fixTranslation":true, "fixHeading":true, "overrideIntervals":false}, + {"x":{"exp":"5.769199371337891 m", "val":5.769199371337891}, "y":{"exp":"3.8986477851867676 m", "val":3.898647785186768}, "heading":{"exp":"90 deg", "val":1.5707963267948966}, "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}, + {"from":4, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":1, "to":4, "data":{"type":"MaxAcceleration", "props":{"max":{"exp":"2.5 m / s ^ 2", "val":2.5}}}, "enabled":true}, + {"from":2, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":false}, + {"from":1, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}, + {"from":0, "to":1, "data":{"type":"MaxAcceleration", "props":{"max":{"exp":"0.75 m / s ^ 2", "val":0.75}}}, "enabled":true}, + {"from":1, "to":2, "data":{"type":"MaxAcceleration", "props":{"max":{"exp":"2.5 m / s ^ 2", "val":2.5}}}, "enabled":true}, + {"from":2, "to":3, "data":{"type":"MaxAcceleration", "props":{"max":{"exp":"0.5 m / s ^ 2", "val":0.5}}}, "enabled":true}, + {"from":3, "to":null, "data":{"type":"StopPoint", "props":{}}, "enabled":true}], + "targetDt":{ + "exp":"0.05 s", + "val":0.05 + } + }, + "trajectory":{ + "sampleType":"Swerve", + "waypoints":[0.0,1.91411,3.26985,4.98724,5.85437], + "samples":[ + {"t":0.0, "x":7.16531, "y":4.91925, "heading":1.5708, "vx":0.0, "vy":0.0, "omega":0.0, "ax":0.74969, "ay":0.0, "alpha":0.00158, "fx":[12.74857,12.75535,12.75535,12.74857], "fy":[-0.00502,-0.00517,0.00509,0.00509]}, + {"t":0.04908, "x":7.16621, "y":4.91925, "heading":1.5708, "vx":0.03679, "vy":0.0, "omega":0.00008, "ax":0.74983, "ay":0.0, "alpha":0.00157, "fx":[12.75108,12.75787,12.75787,12.75108], "fy":[-0.00496,-0.00511,0.00504,0.00504]}, + {"t":0.09816, "x":7.16892, "y":4.91925, "heading":1.5708, "vx":0.0736, "vy":0.0, "omega":0.00015, "ax":0.74982, "ay":0.0, "alpha":-0.00087, "fx":[12.73448,12.74451,12.74451,12.79372], "fy":[-0.0052,-0.00506,0.00513,0.00513]}, + {"t":0.14724, "x":7.17343, "y":4.91925, "heading":1.57081, "vx":0.1104, "vy":0.0, "omega":0.00011, "ax":0.74981, "ay":0.0, "alpha":0.00167, "fx":[12.75042,12.75783,12.75783,12.75042], "fy":[-0.00522,-0.00534,0.00528,0.00528]}, + {"t":0.19632, "x":7.17976, "y":4.91925, "heading":1.57081, "vx":0.1472, "vy":0.0, "omega":0.00019, "ax":0.7498, "ay":0.0, "alpha":-0.0011, "fx":[12.73179,12.74253,12.74253,12.79879], "fy":[-0.00554,-0.00543,0.00549,0.00549]}, + {"t":0.2454, "x":7.18788, "y":4.91925, "heading":1.57082, "vx":0.184, "vy":0.0, "omega":0.00014, "ax":0.74979, "ay":0.0, "alpha":0.00185, "fx":[12.74947,12.75787,12.75787,12.74947], "fy":[-0.00568,-0.00579,0.00574,0.00574]}, + {"t":0.29448, "x":7.19782, "y":4.91925, "heading":1.57083, "vx":0.2208, "vy":0.0, "omega":0.00023, "ax":0.74977, "ay":0.0, "alpha":-0.00137, "fx":[12.7282,12.74003,12.74003,12.8053], "fy":[-0.00608,-0.00598,0.00603,0.00603]}, + {"t":0.34356, "x":7.20956, "y":4.91925, "heading":1.57084, "vx":0.2576, "vy":0.0, "omega":0.00016, "ax":0.74975, "ay":0.0, "alpha":0.00208, "fx":[12.74824,12.7579,12.7579,12.74823], "fy":[-0.00631,-0.00639,0.00635,0.00635]}, + {"t":0.39264, "x":7.2231, "y":4.91925, "heading":1.57085, "vx":0.29439, "vy":0.0, "omega":0.00027, "ax":0.74973, "ay":0.0, "alpha":-0.00175, "fx":[12.72342,12.73659,12.73658,12.81414], "fy":[-0.00674,-0.00666,0.0067,0.0067]}, + {"t":0.44172, "x":7.23845, "y":4.91925, "heading":1.57086, "vx":0.33119, "vy":0.0, "omega":0.00018, "ax":0.7497, "ay":0.0, "alpha":0.00235, "fx":[12.74667,12.75778,12.75778,12.74667], "fy":[-0.00702,-0.00709,0.00706,0.00706]}, + {"t":0.4908, "x":7.25561, "y":4.91925, "heading":1.57087, "vx":0.36798, "vy":0.0, "omega":0.0003, "ax":0.74967, "ay":0.0, "alpha":-0.00239, "fx":[12.71685,12.73143,12.73143,12.82694], "fy":[-0.00746,-0.00738,0.00742,0.00742]}, + {"t":0.53988, "x":7.27457, "y":4.91925, "heading":1.57089, "vx":0.40478, "vy":0.0, "omega":0.00018, "ax":0.74963, "ay":0.0, "alpha":0.00261, "fx":[12.74468,12.75724,12.75724,12.74468], "fy":[-0.0077,-0.00777,0.00774,0.00774]}, + {"t":0.58896, "x":7.29534, "y":4.91925, "heading":1.57089, "vx":0.44157, "vy":0.0, "omega":0.00031, "ax":0.74957, "ay":0.0, "alpha":-0.00356, "fx":[12.70717,12.72294,12.72294,12.84717], "fy":[-0.00806,-0.00798,0.00802,0.00802]}, + {"t":0.63804, "x":7.31792, "y":4.91925, "heading":1.57091, "vx":0.47836, "vy":0.0, "omega":0.00013, "ax":0.7495, "ay":0.0, "alpha":0.00279, "fx":[12.74203,12.75567,12.75567,12.74203], "fy":[-0.00813,-0.00821,0.00817,0.00817]}, + {"t":0.68711, "x":7.3423, "y":4.91925, "heading":1.57092, "vx":0.51514, "vy":0.0, "omega":0.00027, "ax":0.7494, "ay":0.0, "alpha":-0.00591, "fx":[12.69111,12.70723,12.70723,12.88308], "fy":[-0.00824,-0.00815,0.0082,0.00819]}, + {"t":0.73619, "x":7.36848, "y":4.91925, "heading":1.57093, "vx":0.55192, "vy":0.0, "omega":-0.00002, "ax":0.74926, "ay":0.0, "alpha":0.00273, "fx":[12.73787,12.7514,12.7514,12.73786], "fy":[-0.00785,-0.00795,0.0079,0.0079]}, + {"t":0.78527, "x":7.39648, "y":4.91925, "heading":1.57093, "vx":0.5887, "vy":0.0, "omega":0.00011, "ax":0.74901, "ay":0.0, "alpha":-0.01145, "fx":[12.65729,12.67164,12.67164,12.9611], "fy":[-0.00736,-0.00724,0.0073,0.00729]}, + {"t":0.83435, "x":7.42627, "y":4.91925, "heading":1.57093, "vx":0.62546, "vy":0.0, "omega":-0.00045, "ax":0.74851, "ay":0.0, "alpha":0.00207, "fx":[12.72678,12.73721,12.73721,12.72677], "fy":[-0.00586,-0.00596,0.00591,0.00591]}, + {"t":0.88343, "x":7.45787, "y":4.91925, "heading":1.57091, "vx":0.6622, "vy":0.0, "omega":-0.00035, "ax":0.74703, "ay":0.0, "alpha":-0.03079, "fx":[12.529,12.53724,12.53724,13.22348], "fy":[-0.00426,-0.00414,0.0042,0.00419]}, + {"t":0.93251, "x":7.49127, "y":4.91925, "heading":1.57089, "vx":0.69886, "vy":0.0, "omega":-0.00186, "ax":0.00016, "ay":0.0, "alpha":-0.00008, "fx":[0.00285,0.00248,0.00248,0.00285], "fy":[0.00024,0.00024,-0.00024,-0.00024]}, + {"t":0.98159, "x":7.52557, "y":4.91925, "heading":1.5708, "vx":0.69887, "vy":0.0, "omega":-0.00186, "ax":-0.74703, "ay":0.0, "alpha":0.03132, "fx":[-12.5248,-12.53394,-12.53394,-13.23428], "fy":[0.00472,0.0046,-0.00466,-0.00466]}, + {"t":1.03067, "x":7.55897, "y":4.91925, "heading":1.57071, "vx":0.6622, "vy":0.0, "omega":-0.00033, "ax":-0.74851, "ay":0.0, "alpha":-0.00221, "fx":[-12.72646,-12.73752,-12.73752,-12.72646], "fy":[0.00628,0.00639,-0.00634,-0.00634]}, + {"t":1.07975, "x":7.59057, "y":4.91925, "heading":1.5707, "vx":0.62547, "vy":0.0, "omega":-0.00043, "ax":-0.74901, "ay":0.0, "alpha":0.01146, "fx":[-12.65613,-12.67121,-12.67122,-12.96311], "fy":[0.00773,0.00761,-0.00767,-0.00767]}, + {"t":1.12883, "x":7.62036, "y":4.91925, "heading":1.57067, "vx":0.58871, "vy":0.0, "omega":0.00013, "ax":-0.74926, "ay":0.0, "alpha":-0.00284, "fx":[-12.73763,-12.75163,-12.75163,-12.73764], "fy":[0.00817,0.00828,-0.00822,-0.00823]}, + {"t":1.17791, "x":7.64836, "y":4.91925, "heading":1.57068, "vx":0.55193, "vy":0.0, "omega":-0.00001, "ax":-0.7494, "ay":0.0, "alpha":0.00586, "fx":[-12.69051,-12.70719,-12.70719,-12.88376], "fy":[0.00853,0.00844,-0.00848,-0.00848]}, + {"t":1.22699, "x":7.67454, "y":4.91925, "heading":1.57068, "vx":0.51515, "vy":0.0, "omega":0.00028, "ax":-0.7495, "ay":0.0, "alpha":-0.00287, "fx":[-12.74187,-12.75583,-12.75583,-12.74187], "fy":[0.00839,0.00848,-0.00843,-0.00843]}, + {"t":1.27607, "x":7.69892, "y":4.91925, "heading":1.57069, "vx":0.47837, "vy":0.0, "omega":0.00014, "ax":-0.74957, "ay":0.0, "alpha":0.0035, "fx":[-12.70676,-12.723,-12.72301,-12.84745], "fy":[0.00829,0.00822,-0.00826,-0.00826]}, + {"t":1.32515, "x":7.7215, "y":4.91925, "heading":1.5707, "vx":0.44158, "vy":0.0, "omega":0.00031, "ax":-0.74963, "ay":0.0, "alpha":-0.00268, "fx":[-12.74454,-12.75737,-12.75737,-12.74455], "fy":[0.00793,0.00801,-0.00796,-0.00797]}, + {"t":1.37423, "x":7.74227, "y":4.91925, "heading":1.57072, "vx":0.40479, "vy":0.0, "omega":0.00018, "ax":-0.74967, "ay":0.0, "alpha":0.00232, "fx":[-12.71651,-12.73155,-12.73155,-12.82704], "fy":[0.00768,0.00761,-0.00765,-0.00765]}, + {"t":1.42331, "x":7.76123, "y":4.91925, "heading":1.57072, "vx":0.36799, "vy":0.0, "omega":0.00029, "ax":-0.7497, "ay":0.0, "alpha":-0.00242, "fx":[-12.74652,-12.75792,-12.75792,-12.74653], "fy":[0.00726,0.00734,-0.0073,-0.0073]}, + {"t":1.47239, "x":7.77839, "y":4.91925, "heading":1.57074, "vx":0.3312, "vy":0.0, "omega":0.00017, "ax":-0.74973, "ay":0.0, "alpha":0.00166, "fx":[-12.72308,-12.73678,-12.73678,-12.81409], "fy":[0.00701,0.00694,-0.00698,-0.00698]}, + {"t":1.52147, "x":7.79374, "y":4.91925, "heading":1.57075, "vx":0.2944, "vy":0.0, "omega":0.00025, "ax":-0.74975, "ay":0.0, "alpha":-0.00218, "fx":[-12.74804,-12.7581,-12.7581,-12.74804], "fy":[0.00663,0.00671,-0.00667,-0.00667]}, + {"t":1.57055, "x":7.80729, "y":4.91925, "heading":1.57076, "vx":0.2576, "vy":0.0, "omega":0.00015, "ax":-0.74977, "ay":0.0, "alpha":0.00124, "fx":[-12.72778,-12.74035,-12.74035,-12.80509], "fy":[0.00645,0.00636,-0.00641,-0.00641]}, + {"t":1.61963, "x":7.81903, "y":4.91925, "heading":1.57077, "vx":0.2208, "vy":0.0, "omega":0.00021, "ax":-0.74979, "ay":0.0, "alpha":-0.00199, "fx":[-12.74916,-12.75818,-12.75818,-12.74916], "fy":[0.00614,0.00624,-0.00619,-0.00619]}, + {"t":1.66871, "x":7.82896, "y":4.91925, "heading":1.57078, "vx":0.18401, "vy":0.0, "omega":0.00011, "ax":-0.7498, "ay":0.0, "alpha":0.0009, "fx":[-12.73119,-12.74304,-12.74304,-12.79837], "fy":[0.0061,0.00599,-0.00605,-0.00605]}, + {"t":1.71779, "x":7.83709, "y":4.91925, "heading":1.57078, "vx":0.14721, "vy":0.0, "omega":0.00015, "ax":-0.74981, "ay":0.0, "alpha":-0.0019, "fx":[-12.74991,-12.75834,-12.75834,-12.74991], "fy":[0.00591,0.00603,-0.00597,-0.00597]}, + {"t":1.76687, "x":7.84341, "y":4.91925, "heading":1.57079, "vx":0.1104, "vy":0.0, "omega":0.00006, "ax":-0.74982, "ay":0.0, "alpha":0.00056, "fx":[-12.7336,-12.74532,-12.74532,-12.79298], "fy":[0.00605,0.00592,-0.00599,-0.00599]}, + {"t":1.81595, "x":7.84793, "y":4.91925, "heading":1.57079, "vx":0.0736, "vy":0.0, "omega":0.00009, "ax":-0.74983, "ay":0.0, "alpha":-0.00192, "fx":[-12.75025,-12.75869,-12.75869,-12.75025], "fy":[0.00603,0.00616,-0.0061,-0.0061]}, + {"t":1.86503, "x":7.85064, "y":4.91925, "heading":1.5708, "vx":0.0368, "vy":0.0, "omega":-0.00001, "ax":-0.74984, "ay":0.0, "alpha":0.00014, "fx":[-12.73513,-12.74752,-12.74752,-12.78831], "fy":[0.0064,0.00626,-0.00633,-0.00633]}, + {"t":1.91411, "x":7.85154, "y":4.91925, "heading":1.5708, "vx":0.0, "vy":0.0, "omega":0.0, "ax":-0.36565, "ay":-0.65419, "alpha":-0.01008, "fx":[-6.17826,-6.26096,-6.26172,-6.17764], "fy":[-11.03697,-11.19352,-11.13982,-11.14033]}, + {"t":1.95784, "x":7.85119, "y":4.91863, "heading":1.5708, "vx":-0.01599, "vy":-0.02861, "omega":-0.00044, "ax":-1.22491, "ay":-2.17802, "alpha":-0.00795, "fx":[-20.77695,-20.85856,-20.85234,-20.85366], "fy":[-37.05982,-36.98974,-37.07254,-37.06755]}, + {"t":2.00157, "x":7.84932, "y":4.91529, "heading":1.57078, "vx":-0.06956, "vy":-0.12386, "omega":-0.00079, "ax":-1.23133, "ay":-2.17431, "alpha":-0.01154, "fx":[-20.90905,-20.99021,-20.9758,-20.90322], "fy":[-36.92876,-36.99287,-37.00549,-37.0103]}, + {"t":2.04531, "x":7.8451, "y":4.9078, "heading":1.57074, "vx":-0.12341, "vy":-0.21895, "omega":-0.00129, "ax":-1.2386, "ay":-2.17008, "alpha":-0.00675, "fx":[-21.009,-21.08816,-21.08181,-21.09386], "fy":[-36.93297,-36.85291,-36.93499,-36.92883]}, + {"t":2.08904, "x":7.83852, "y":4.89615, "heading":1.57069, "vx":-0.17758, "vy":-0.31386, "omega":-0.00159, "ax":-1.2469, "ay":-2.16521, "alpha":-0.01169, "fx":[-21.17205,-21.25773,-21.24207,-21.16569], "fy":[-36.76972,-36.84503,-36.84912,-36.85457]}, + {"t":2.13277, "x":7.82956, "y":4.88035, "heading":1.57062, "vx":-0.23211, "vy":-0.40855, "omega":-0.0021, "ax":-1.25646, "ay":-2.15955, "alpha":-0.00662, "fx":[-21.3061,-21.39266,-21.3854,-21.40419], "fy":[-36.76342,-36.66594,-36.75539,-36.7483]}, + {"t":2.17651, "x":7.81821, "y":4.86042, "heading":1.57052, "vx":-0.28706, "vy":-0.503, "omega":-0.00239, "ax":-1.26761, "ay":-2.15287, "alpha":-0.01346, "fx":[-21.5183,-21.61814,-21.59951,-21.51057], "fy":[-36.55133,-36.63808,-36.64136,-36.64834]}, + {"t":2.22024, "x":7.80444, "y":4.83636, "heading":1.57042, "vx":-0.3425, "vy":-0.59715, "omega":-0.00298, "ax":-1.28075, "ay":-2.1449, "alpha":-0.00729, "fx":[-21.70305,-21.80976,-21.80064,-21.82744], "fy":[-36.52975,-36.40038,-36.50728,-36.49932]}, + {"t":2.26397, "x":7.78824, "y":4.80819, "heading":1.57029, "vx":-0.39851, "vy":-0.69095, "omega":-0.0033, "ax":-1.29649, "ay":-2.13521, "alpha":0.00308, "fx":[-22.01613,-22.07489,-22.11531,-22.00543], "fy":[-36.14197,-36.61401,-36.25583,-36.26553]}, + {"t":2.30771, "x":7.76957, "y":4.77593, "heading":1.57015, "vx":-0.45521, "vy":-0.78433, "omega":-0.00316, "ax":-1.31567, "ay":-2.12318, "alpha":0.00592, "fx":[-22.21888,-22.4262,-22.41387,-22.45761], "fy":[-36.4638,-35.91133,-36.04688,-36.03703]}, + {"t":2.35144, "x":7.7484, "y":4.7396, "heading":1.57001, "vx":-0.51275, "vy":-0.87719, "omega":-0.0029, "ax":-1.33954, "ay":-2.10787, "alpha":0.00502, "fx":[-22.74193,-22.80998,-22.8602,-22.72896], "fy":[-35.63704,-36.22482,-35.77151,-35.78362]}, + {"t":2.39518, "x":7.7247, "y":4.69922, "heading":1.56988, "vx":-0.57133, "vy":-0.96937, "omega":-0.00268, "ax":-1.37007, "ay":-2.08773, "alpha":0.01204, "fx":[-23.1102,-23.35156,-23.33759,-23.41837], "fy":[-35.97391,-35.2594,-35.41408,-35.39915]}, + {"t":2.43891, "x":7.6984, "y":4.65483, "heading":1.56976, "vx":-0.63125, "vy":-1.06068, "omega":-0.00216, "ax":-1.41042, "ay":-2.06009, "alpha":0.01227, "fx":[-23.94631,-24.00871,-24.07648,-23.93208], "fy":[-34.76996,-35.54794,-34.91744,-34.93094]}, + {"t":2.48264, "x":7.66944, "y":4.60647, "heading":1.56967, "vx":-0.69293, "vy":-1.15077, "omega":-0.00162, "ax":-1.46618, "ay":-2.01995, "alpha":0.02873, "fx":[-24.69081,-24.95884,-24.94474,-25.16313], "fy":[-35.00828,-34.04335,-34.20596,-34.17748]}, + {"t":2.52638, "x":7.63774, "y":4.55422, "heading":1.5696, "vx":-0.75705, "vy":-1.23911, "omega":-0.00036, "ax":-1.54792, "ay":-1.95673, "alpha":0.03053, "fx":[-26.29343,-26.32372,-26.42159,-26.27964], "fy":[-32.92345,-34.05682,-33.07029,-33.08329]}, + {"t":2.57011, "x":7.60315, "y":4.49815, "heading":1.56958, "vx":-0.82475, "vy":-1.32469, "omega":0.00097, "ax":-1.67804, "ay":-1.8441, "alpha":0.07022, "fx":[-28.20185,-28.47602,-28.46442,-29.0299], "fy":[-32.40119,-30.94373,-31.09277,-31.03274]}, + {"t":2.61384, "x":7.56547, "y":4.43846, "heading":1.56962, "vx":-0.89814, "vy":-1.40534, "omega":0.00404, "ax":-1.90977, "ay":-1.59796, "alpha":0.06314, "fx":[-32.46869,-32.44446,-32.56624,-32.45937], "fy":[-26.69885,-28.38135,-26.8175,-26.82593]}, + {"t":2.65758, "x":7.52437, "y":4.37547, "heading":1.5698, "vx":-0.98166, "vy":-1.47522, "omega":0.0068, "ax":-2.33823, "ay":-0.83498, "alpha":0.14985, "fx":[-39.13247,-39.24978,-39.24713,-41.46122], "fy":[-15.09571,-13.87227,-13.96336,-13.87998]}, + {"t":2.70131, "x":7.4792, "y":4.31015, "heading":1.5701, "vx":-1.08392, "vy":-1.51174, "omega":0.01336, "ax":-1.93055, "ay":1.5499, "alpha":-0.06571, "fx":[-32.84799,-32.78393,-32.87068,-32.84996], "fy":[26.02706,27.42647,25.99937,26.00069]}, + {"t":2.74504, "x":7.42995, "y":4.24552, "heading":1.57068, "vx":-1.16835, "vy":-1.44395, "omega":0.01048, "ax":-0.32154, "ay":2.46519, "alpha":-0.09177, "fx":[-5.43965,-5.46088,-5.46037,-5.51603], "fy":[43.46059,41.40652,41.43193,41.42986]}, + {"t":2.78878, "x":7.37855, "y":4.18473, "heading":1.57114, "vx":-1.18241, "vy":-1.33614, "omega":0.00647, "ax":0.28637, "ay":2.47497, "alpha":-0.06004, "fx":[4.84859,4.8782,4.90985,4.84751], "fy":[41.6952,43.19263,41.75259,41.7534]}, + {"t":2.83251, "x":7.32711, "y":4.12866, "heading":1.57142, "vx":-1.16989, "vy":-1.2279, "omega":0.00384, "ax":0.54502, "ay":2.43369, "alpha":-0.06529, "fx":[9.03051,9.16036,9.15781,9.73418], "fy":[42.18284,41.0871,41.16621,41.1494]}, + {"t":2.87625, "x":7.27647, "y":4.07729, "heading":1.57159, "vx":-1.14605, "vy":-1.12147, "omega":0.00099, "ax":0.68351, "ay":2.39992, "alpha":-0.02481, "fx":[11.5957,11.63509,11.68331,11.59129], "fy":[40.56894,41.40753,40.65404,40.65754]}, + {"t":2.91998, "x":7.227, "y":4.03054, "heading":1.57164, "vx":-1.11616, "vy":-1.01651, "omega":-0.0001, "ax":0.76898, "ay":2.37484, "alpha":-0.04132, "fx":[12.85003,12.99674,12.99218,13.48145], "fy":[40.88176,40.18073,40.27178,40.24703]}, + {"t":2.96371, "x":7.17892, "y":3.98835, "heading":1.57163, "vx":-1.08253, "vy":-0.91265, "omega":-0.0019, "ax":0.82677, "ay":2.35598, "alpha":-0.01224, "fx":[14.03287,14.0757,14.11623,14.02786], "fy":[39.89157,40.4547,39.97378,39.9779]}, + {"t":3.00745, "x":7.13237, "y":3.95069, "heading":1.57155, "vx":-1.04637, "vy":-0.80962, "omega":-0.00244, "ax":0.86839, "ay":2.34142, "alpha":-0.01455, "fx":[14.6154,14.69248,14.68837,15.0878], "fy":[39.88425,39.76446,39.84233,39.81667]}, + {"t":3.05118, "x":7.08744, "y":3.91752, "heading":1.57144, "vx":-1.00839, "vy":-0.70722, "omega":-0.00307, "ax":0.89976, "ay":2.3299, "alpha":0.01042, "fx":[15.26708,15.35227,15.3358,15.26322], "fy":[39.57925,39.64971,39.6458,39.64916]}, + {"t":3.09491, "x":7.0442, "y":3.88882, "heading":1.57131, "vx":-0.96904, "vy":-0.60532, "omega":-0.00262, "ax":0.92423, "ay":2.32058, "alpha":-0.01214, "fx":[15.59105,15.65006,15.64681,15.99583], "fy":[39.50148,39.42861,39.49239,39.46721]}, + {"t":3.13865, "x":7.0027, "y":3.86457, "heading":1.57119, "vx":-0.92862, "vy":-0.50384, "omega":-0.00315, "ax":0.94386, "ay":2.31289, "alpha":0.00968, "fx":[16.0234,16.09524,16.08012,16.0204], "fy":[39.3036,39.34153,39.35945,39.36205]}, + {"t":3.18238, "x":6.96299, "y":3.84475, "heading":1.57106, "vx":-0.88734, "vy":-0.40268, "omega":-0.00273, "ax":0.95994, "ay":2.30645, "alpha":-0.01067, "fx":[16.21295,16.26088,16.25828,16.58139], "fy":[39.23992,39.20111,39.25566,39.23158]}, + {"t":3.22611, "x":6.92511, "y":3.82934, "heading":1.57094, "vx":-0.84536, "vy":-0.30181, "omega":-0.00319, "ax":0.97336, "ay":2.30098, "alpha":0.00888, "fx":[16.52957,16.59168,16.57819,16.52712], "fy":[39.10808,39.131,39.15732,39.15936]}, + {"t":3.26985, "x":6.88907, "y":3.81834, "heading":1.5708, "vx":-0.80279, "vy":-0.20118, "omega":-0.0028, "ax":0.22333, "ay":0.44523, "alpha":0.01822, "fx":[3.71991,3.9945,3.76091,3.71986], "fy":[7.55465,7.55399,7.59215,7.59222]}, + {"t":3.3049, "x":6.86107, "y":3.81156, "heading":1.5707, "vx":-0.79497, "vy":-0.18558, "omega":-0.00217, "ax":0.27406, "ay":0.41712, "alpha":-0.00222, "fx":[4.64553,4.67746,4.6781,4.64545], "fy":[7.03103,7.2153,7.06701,7.06707]}, + {"t":3.33995, "x":6.83337, "y":3.80532, "heading":1.57062, "vx":-0.78536, "vy":-0.17096, "omega":-0.00224, "ax":0.31613, "ay":0.38627, "alpha":0.01468, "fx":[5.31298,5.53903,5.34448,5.31293], "fy":[6.55637,6.55559,6.58478,6.58484]}, + {"t":3.37499, "x":6.80604, "y":3.79956, "heading":1.57054, "vx":-0.77428, "vy":-0.15742, "omega":-0.00173, "ax":0.35052, "ay":0.35544, "alpha":-0.00134, "fx":[5.95037,5.97388,5.9744,5.95031], "fy":[5.99978,6.13025,6.02677,6.02681]}, + {"t":3.41004, "x":6.77912, "y":3.79426, "heading":1.57048, "vx":-0.762, "vy":-0.14496, "omega":-0.00178, "ax":0.37822, "ay":0.32588, "alpha":0.01347, "fx":[6.37173,6.59566,6.39489,6.37169], "fy":[5.53302,5.5322,5.55365,5.55368]}, + {"t":3.44509, "x":6.75264, "y":3.78938, "heading":1.57042, "vx":-0.74874, "vy":-0.13354, "omega":-0.0013, "ax":0.40039, "ay":0.29831, "alpha":-0.00074, "fx":[6.80221,6.81876,6.81912,6.80217], "fy":[5.04242,5.13051,5.06177,5.06178]}, + {"t":3.48014, "x":6.72665, "y":3.78488, "heading":1.57037, "vx":-0.73471, "vy":-0.12309, "omega":-0.00133, "ax":0.4181, "ay":0.27302, "alpha":0.01181, "fx":[7.05563,7.26394,7.07183,7.05561], "fy":[4.63706,4.63634,4.65128,4.65129]}, + {"t":3.51519, "x":6.70115, "y":3.78074, "heading":1.57033, "vx":-0.72005, "vy":-0.11352, "omega":-0.00092, "ax":0.43227, "ay":0.25007, "alpha":-0.00048, "fx":[7.34724,7.3582,7.35843,7.34721], "fy":[4.23236,4.29098,4.24544,4.24542]}, + {"t":3.55024, "x":6.67618, "y":3.77691, "heading":1.5703, "vx":-0.7049, "vy":-0.10475, "omega":-0.00093, "ax":0.44365, "ay":0.22934, "alpha":0.01012, "fx":[7.4968,7.68477,7.50738,7.49678], "fy":[3.89667,3.89608,3.9058,3.90578]}, + {"t":3.58529, "x":6.65175, "y":3.77338, "heading":1.57026, "vx":-0.68935, "vy":-0.09672, "omega":-0.00058, "ax":0.45285, "ay":0.21068, "alpha":-0.00045, "fx":[7.69957,7.70614,7.70628,7.69954], "fy":[3.56989,3.60892,3.57797,3.57793]}, + {"t":3.62034, "x":6.62786, "y":3.77012, "heading":1.57024, "vx":-0.67348, "vy":-0.08933, "omega":-0.00059, "ax":0.46033, "ay":0.19389, "alpha":0.0086, "fx":[7.78655,7.95444,7.79269,7.78654], "fy":[3.2955,3.29504,3.30067,3.30063]}, + {"t":3.65539, "x":6.60454, "y":3.76711, "heading":1.57022, "vx":-0.65735, "vy":-0.08254, "omega":-0.00029, "ax":0.46644, "ay":0.17875, "alpha":-0.00053, "fx":[7.93248,7.93568,7.93576,7.93246], "fy":[3.0319,3.05807,3.03606,3.03601]}, + {"t":3.69043, "x":6.58179, "y":3.76433, "heading":1.57021, "vx":-0.641, "vy":-0.07627, "omega":-0.00031, "ax":0.47148, "ay":0.16509, "alpha":0.00731, "fx":[7.98168,8.13136,7.98436,7.98166], "fy":[2.80713,2.80677,2.80928,2.80923]}, + {"t":3.72548, "x":6.55961, "y":3.76176, "heading":1.5702, "vx":-0.62447, "vy":-0.07048, "omega":-0.00006, "ax":0.47565, "ay":0.15272, "alpha":-0.00066, "fx":[8.09043,8.09107,8.09111,8.09041], "fy":[2.59281,2.61061,2.59393,2.59388]}, + {"t":3.76053, "x":6.53802, "y":3.75938, "heading":1.5702, "vx":-0.6078, "vy":-0.06513, "omega":-0.00008, "ax":0.47913, "ay":0.14151, "alpha":0.00623, "fx":[8.11647,8.25035,8.11647,8.11645], "fy":[2.40716,2.40688,2.40701,2.40696]}, + {"t":3.79558, "x":6.51701, "y":3.75718, "heading":1.5702, "vx":-0.59101, "vy":-0.06017, "omega":0.00014, "ax":0.48205, "ay":0.1313, "alpha":-0.00081, "fx":[8.2002,8.19891,8.19893,8.20018], "fy":[2.23095,2.24321,2.22974,2.22968]}, + {"t":3.83063, "x":6.49659, "y":3.75516, "heading":1.5702, "vx":-0.57411, "vy":-0.05557, "omega":0.00011, "ax":0.48451, "ay":0.12199, "alpha":0.00534, "fx":[8.21183,8.33215,8.20977,8.21181], "fy":[2.07596,2.07575,2.0741,2.07405]}, + {"t":3.86568, "x":6.47677, "y":3.75328, "heading":1.57021, "vx":-0.55713, "vy":-0.05129, "omega":0.0003, "ax":0.48659, "ay":0.11346, "alpha":-0.00094, "fx":[8.27821,8.27546,8.27547,8.27819], "fy":[1.92935,1.93799,1.92632,1.92626]}, + {"t":3.90073, "x":6.45754, "y":3.75155, "heading":1.57022, "vx":-0.54008, "vy":-0.04732, "omega":0.00027, "ax":0.48837, "ay":0.10564, "alpha":0.0046, "fx":[8.28075,8.38945,8.27708,8.28073], "fy":[1.79855,1.79838,1.79538,1.79533]}, + {"t":3.93578, "x":6.43891, "y":3.74996, "heading":1.57023, "vx":-0.52296, "vy":-0.04361, "omega":0.00043, "ax":0.48988, "ay":0.09844, "alpha":-0.00107, "fx":[8.33472,8.33087,8.33087,8.33471], "fy":[1.67509,1.68142,1.67065,1.67059]}, + {"t":3.97082, "x":6.42088, "y":3.74849, "heading":1.57024, "vx":-0.50579, "vy":-0.04016, "omega":0.00039, "ax":0.49119, "ay":0.0918, "alpha":0.00398, "fx":[8.33148,8.43022,8.32655,8.33146], "fy":[1.56355,1.56343,1.55938,1.55933]}, + {"t":4.00587, "x":6.40346, "y":3.74714, "heading":1.57025, "vx":-0.48857, "vy":-0.03695, "omega":0.00053, "ax":0.49231, "ay":0.08565, "alpha":-0.00119, "fx":[8.37637,8.37165,8.37164,8.37635], "fy":[1.45846,1.46332,1.45287,1.45282]}, + {"t":4.04092, "x":6.38664, "y":3.7459, "heading":1.57027, "vx":-0.47132, "vy":-0.03395, "omega":0.00049, "ax":0.49328, "ay":0.07995, "alpha":0.00346, "fx":[8.36946,8.45956,8.36349,8.36944], "fy":[1.36242,1.36232,1.35744,1.3574]}, + {"t":4.07597, "x":6.37042, "y":3.74476, "heading":1.57029, "vx":-0.45403, "vy":-0.03114, "omega":0.00061, "ax":0.49412, "ay":0.07465, "alpha":-0.0013, "fx":[8.4075,8.40207,8.40207,8.40748], "fy":[1.27203,1.27602,1.2655,1.26546]}, + {"t":4.11102, "x":6.35481, "y":3.74371, "heading":1.57031, "vx":-0.43671, "vy":-0.02853, "omega":0.00056, "ax":0.49485, "ay":0.06971, "alpha":0.003, "fx":[8.39828,8.48084,8.39145,8.39826], "fy":[1.18862,1.18853,1.18297,1.18294]}, + {"t":4.14607, "x":6.33981, "y":3.74276, "heading":1.57033, "vx":-0.41937, "vy":-0.02608, "omega":0.00067, "ax":0.49548, "ay":0.0651, "alpha":-0.00141, "fx":[8.43105,8.42502,8.42502,8.43104], "fy":[1.11015,1.11367,1.10281,1.10277]}, + {"t":4.18112, "x":6.32541, "y":3.74188, "heading":1.57035, "vx":-0.402, "vy":-0.0238, "omega":0.00062, "ax":0.49604, "ay":0.06079, "alpha":0.0026, "fx":[8.42042,8.49631,8.41283,8.42041], "fy":[1.03713,1.03706,1.0309,1.03087]}, + {"t":4.21617, "x":6.31163, "y":3.74108, "heading":1.57038, "vx":-0.38462, "vy":-0.02167, "omega":0.00071, "ax":0.49653, "ay":0.05675, "alpha":-0.00152, "fx":[8.44906,8.44249,8.44249,8.44905], "fy":[0.96843,0.97177,0.96036,0.96032]}, + {"t":4.25122, "x":6.29845, "y":3.74036, "heading":1.5704, "vx":-0.36721, "vy":-0.01968, "omega":0.00066, "ax":0.49695, "ay":0.05295, "alpha":0.00224, "fx":[8.43763,8.50756,8.42932,8.43762], "fy":[0.90405,0.904,0.89728,0.89725]}, + {"t":4.28626, "x":6.28589, "y":3.7397, "heading":1.57042, "vx":-0.3498, "vy":-0.01783, "omega":0.00074, "ax":0.49733, "ay":0.04938, "alpha":-0.00164, "fx":[8.46296,8.45585,8.45585,8.46295], "fy":[0.84345,0.84681,0.83467,0.83464]}, + {"t":4.32131, "x":6.27393, "y":3.73911, "heading":1.57045, "vx":-0.33237, "vy":-0.0161, "omega":0.00068, "ax":0.49766, "ay":0.04601, "alpha":0.0019, "fx":[8.45112,8.51567,8.44211,8.45111], "fy":[0.78633,0.78628,0.779,0.77898]}, + {"t":4.35636, "x":6.26259, "y":3.73857, "heading":1.57047, "vx":-0.31492, "vy":-0.01448, "omega":0.00074, "ax":0.49795, "ay":0.04284, "alpha":-0.00176, "fx":[8.47376,8.46611,8.46611,8.47376], "fy":[0.7325,0.73602,0.723,0.72298]}, + {"t":4.39141, "x":6.25186, "y":3.73809, "heading":1.5705, "vx":-0.29747, "vy":-0.01298, "omega":0.00068, "ax":0.4982, "ay":0.03983, "alpha":0.00159, "fx":[8.46181,8.52142,8.45206,8.4618], "fy":[0.68152,0.68148,0.67362,0.67361]}, + {"t":4.42646, "x":6.24174, "y":3.73766, "heading":1.57052, "vx":-0.28001, "vy":-0.01159, "omega":0.00074, "ax":0.49843, "ay":0.03699, "alpha":-0.0019, "fx":[8.48222,8.47397,8.47397,8.48222], "fy":[0.63341,0.6372,0.62315,0.62313]}, + {"t":4.46151, "x":6.23223, "y":3.73728, "heading":1.57055, "vx":-0.26254, "vy":-0.01029, "omega":0.00067, "ax":0.49862, "ay":0.0343, "alpha":0.00128, "fx":[8.47034,8.52536,8.4598,8.47034], "fy":[0.58768,0.58765,0.57915,0.57914]}, + {"t":4.49656, "x":6.22333, "y":3.73694, "heading":1.57057, "vx":-0.24506, "vy":-0.00909, "omega":0.00072, "ax":0.4988, "ay":0.03174, "alpha":-0.00206, "fx":[8.48888,8.47997,8.47997,8.48888], "fy":[0.54445,0.54856,0.53335,0.53334]}, + {"t":4.53161, "x":6.21505, "y":3.73664, "heading":1.5706, "vx":-0.22758, "vy":-0.00797, "omega":0.00064, "ax":0.49895, "ay":0.02931, "alpha":0.00097, "fx":[8.47722,8.52791,8.4658,8.47722], "fy":[0.50323,0.50321,0.49399,0.49398]}, + {"t":4.56666, "x":6.20738, "y":3.73638, "heading":1.57062, "vx":-0.21009, "vy":-0.00695, "omega":0.00068, "ax":0.49909, "ay":0.027, "alpha":-0.00223, "fx":[8.49417,8.48449,8.4845,8.49417], "fy":[0.46418,0.46868,0.45214,0.45213]}, + {"t":4.6017, "x":6.20032, "y":3.73615, "heading":1.57064, "vx":-0.1926, "vy":-0.006, "omega":0.0006, "ax":0.49921, "ay":0.0248, "alpha":0.00065, "fx":[8.48283,8.52936,8.47039,8.48283], "fy":[0.42689,0.42686,0.4168,0.41679]}, + {"t":4.63675, "x":6.19388, "y":3.73595, "heading":1.57067, "vx":-0.17511, "vy":-0.00513, "omega":0.00062, "ax":0.49931, "ay":0.0227, "alpha":-0.00244, "fx":[8.49841,8.48783,8.48783,8.49841], "fy":[0.39147,0.39638,0.37833,0.37832]}, + {"t":4.6718, "x":6.18805, "y":3.73579, "heading":1.57069, "vx":-0.15761, "vy":-0.00434, "omega":0.00054, "ax":0.4994, "ay":0.0207, "alpha":0.00031, "fx":[8.48746,8.52993,8.47383,8.48746], "fy":[0.35758,0.35756,0.34651,0.3465]}, + {"t":4.70685, "x":6.18283, "y":3.73565, "heading":1.57071, "vx":-0.1401, "vy":-0.00361, "omega":0.00055, "ax":0.49948, "ay":0.01878, "alpha":-0.00268, "fx":[8.50185,8.49019,8.4902,8.50185], "fy":[0.32535,0.33069,0.31091,0.3109]}, + {"t":4.7419, "x":6.17823, "y":3.73553, "heading":1.57072, "vx":-0.1226, "vy":-0.00295, "omega":0.00045, "ax":0.49955, "ay":0.01695, "alpha":-0.00005, "fx":[8.49136,8.52977,8.47631,8.49136], "fy":[0.29445,0.29444,0.28218,0.28217]}, + {"t":4.77695, "x":6.17424, "y":3.73544, "heading":1.57074, "vx":-0.10509, "vy":-0.00236, "omega":0.00045, "ax":0.49961, "ay":0.0152, "alpha":-0.00297, "fx":[8.5047,8.49173,8.49173,8.5047], "fy":[0.26504,0.27083,0.24904,0.24903]}, + {"t":4.812, "x":6.17086, "y":3.73537, "heading":1.57076, "vx":-0.08758, "vy":-0.00183, "omega":0.00035, "ax":0.49966, "ay":0.01352, "alpha":-0.00046, "fx":[8.49472,8.52898,8.47796,8.49472], "fy":[0.23678,0.23677,0.22304,0.22304]}, + {"t":4.84705, "x":6.1681, "y":3.73531, "heading":1.57077, "vx":-0.07006, "vy":-0.00135, "omega":0.00033, "ax":0.49971, "ay":0.0119, "alpha":-0.00332, "fx":[8.50714,8.49255,8.49255,8.50714], "fy":[0.20988,0.21613,0.19199,0.19198]}, + {"t":4.88209, "x":6.16595, "y":3.73527, "heading":1.57078, "vx":-0.05255, "vy":-0.00093, "omega":0.00022, "ax":0.49974, "ay":0.01036, "alpha":-0.00093, "fx":[8.49772,8.52762,8.47887,8.49772], "fy":[0.18397,0.18396,0.16841,0.16841]}, + {"t":4.91714, "x":6.16442, "y":3.73525, "heading":1.57079, "vx":-0.03503, "vy":-0.00057, "omega":0.00018, "ax":0.49977, "ay":0.00887, "alpha":-0.00374, "fx":[8.50932,8.49272,8.49272,8.50932], "fy":[0.15936,0.16606,0.13913,0.13912]}, + {"t":4.95219, "x":6.1635, "y":3.73523, "heading":1.57079, "vx":-0.01752, "vy":-0.00026, "omega":0.00005, "ax":0.4998, "ay":0.00744, "alpha":-0.00148, "fx":[8.50052,8.52574,8.47909,8.50052], "fy":[0.13554,0.13553,0.11771,0.11771]}, + {"t":4.98724, "x":6.16319, "y":3.73523, "heading":1.5708, "vx":0.0, "vy":0.0, "omega":0.0, "ax":-0.46141, "ay":0.19139, "alpha":0.00294, "fx":[-7.85962,-7.83731,-7.83732,-7.85946], "fy":[3.22094,3.28067,3.26026,3.26012]}, + {"t":5.03825, "x":6.16259, "y":3.73548, "heading":1.5708, "vx":-0.02354, "vy":0.00976, "omega":0.00015, "ax":-2.30872, "ay":0.95765, "alpha":0.00178, "fx":[-39.28114,-39.26394,-39.26024,-39.27757], "fy":[16.32053,16.25639,16.28784,16.29284]}, + {"t":5.08926, "x":6.15838, "y":3.73722, "heading":1.5708, "vx":-0.1413, "vy":0.05861, "omega":0.00024, "ax":-2.30864, "ay":0.95762, "alpha":0.00063, "fx":[-39.27784,-39.26094,-39.26363,-39.27472], "fy":[16.25344,16.33159,16.2866,16.28391]}, + {"t":5.14026, "x":6.14817, "y":3.74145, "heading":1.57082, "vx":-0.25906, "vy":0.10746, "omega":0.00027, "ax":-2.30852, "ay":0.95758, "alpha":0.00059, "fx":[-39.27417,-39.26041,-39.25722,-39.27727], "fy":[16.33702,16.24988,16.27889,16.28683]}, + {"t":5.19127, "x":6.13196, "y":3.74818, "heading":1.57083, "vx":-0.37681, "vy":0.1563, "omega":0.0003, "ax":-2.30834, "ay":0.95752, "alpha":-0.00095, "fx":[-39.27344,-39.25354,-39.25929,-39.27074], "fy":[16.24473,16.35533,16.27524,16.27297]}, + {"t":5.24228, "x":6.10973, "y":3.7574, "heading":1.57085, "vx":-0.49455, "vy":0.20514, "omega":0.00025, "ax":-2.30805, "ay":0.95741, "alpha":-0.00219, "fx":[-39.2597,-39.25224,-39.24967,-39.27525], "fy":[16.37779,16.23284,16.25858,16.2719]}, + {"t":5.29329, "x":6.0815, "y":3.76911, "heading":1.57086, "vx":-0.61228, "vy":0.25398, "omega":0.00014, "ax":-2.30745, "ay":0.9572, "alpha":-0.00532, "fx":[-39.25884,-39.23384,-39.24707,-39.25683], "fy":[16.22081,16.41713,16.2453,16.24372]}, + {"t":5.3443, "x":6.04727, "y":3.78331, "heading":1.57087, "vx":-0.72998, "vy":0.3028, "omega":-0.00013, "ax":-2.30568, "ay":0.95659, "alpha":0.01587, "fx":[-39.03829,-39.0468,-39.0452,-39.74577], "fy":[16.52275,16.19557,16.21521,16.15191]}, + {"t":5.3953, "x":6.00704, "y":3.8, "heading":1.57086, "vx":-0.84759, "vy":0.3516, "omega":0.00068, "ax":-1.84768, "ay":0.76532, "alpha":-0.01682, "fx":[-31.43958,-31.40628,-31.42977,-31.43867], "fy":[12.89863,13.33887,12.91733,12.91677]}, + {"t":5.44631, "x":5.9614, "y":3.81893, "heading":1.57089, "vx":-0.94183, "vy":0.39063, "omega":-0.00018, "ax":2.30578, "ay":-0.9562, "alpha":-0.01834, "fx":[38.88026,38.93261,38.93346,40.13647], "fy":[-16.77188,-16.13607,-16.12417,-16.02695]}, + {"t":5.49732, "x":5.91636, "y":3.83761, "heading":1.57089, "vx":-0.82422, "vy":0.34186, "omega":-0.00111, "ax":2.30751, "ay":-0.95702, "alpha":0.01089, "fx":[39.25633,39.2329,39.2549,39.25648], "fy":[-16.21614,-16.47064,-16.21408,-16.2139]}, + {"t":5.54833, "x":5.87732, "y":3.8538, "heading":1.57083, "vx":-0.70652, "vy":0.29304, "omega":-0.00056, "ax":2.30809, "ay":-0.9573, "alpha":0.00635, "fx":[39.24909,39.26072,39.26014,39.26962], "fy":[-16.39877,-16.23502,-16.24042,-16.25923]}, + {"t":5.59933, "x":5.84428, "y":3.8675, "heading":1.5708, "vx":-0.58879, "vy":0.24421, "omega":-0.00023, "ax":2.30837, "ay":-0.95743, "alpha":0.00307, "fx":[39.27258,39.25279,39.26208,39.27159], "fy":[-16.25018,-16.36878,-16.26252,-16.26124]}, + {"t":5.65034, "x":5.81725, "y":3.87872, "heading":1.57079, "vx":-0.47104, "vy":0.19538, "omega":-0.00008, "ax":2.30854, "ay":-0.95752, "alpha":0.00236, "fx":[39.26721,39.26658,39.26517,39.27176], "fy":[-16.34942,-16.25362,-16.2669,-16.2783]}, + {"t":5.70135, "x":5.79623, "y":3.88744, "heading":1.57078, "vx":-0.35329, "vy":0.14654, "omega":0.00004, "ax":2.30866, "ay":-0.95757, "alpha":0.00091, "fx":[39.27747,39.25995,39.26512,39.27598], "fy":[-16.25993,-16.34001,-16.27688,-16.2751]}, + {"t":5.75236, "x":5.78121, "y":3.89366, "heading":1.57079, "vx":-0.23553, "vy":0.09769, "omega":0.00009, "ax":2.30874, "ay":-0.95761, "alpha":0.00033, "fx":[39.27862,39.26231,39.26621,39.27695], "fy":[-16.26298,-16.33139,-16.28104,-16.2791]}, + {"t":5.80337, "x":5.7722, "y":3.8974, "heading":1.57079, "vx":-0.11777, "vy":0.04885, "omega":0.00011, "ax":2.3088, "ay":-0.95764, "alpha":-0.0021, "fx":[39.27841,39.26975,39.26377,39.27633], "fy":[-16.27924,-16.28711,-16.29594,-16.29419]}, + {"t":5.85437, "x":5.7692, "y":3.89865, "heading":1.5708, "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,39,119] + }, + "events":[] +} diff --git a/src/auto/mod.rs b/src/auto/mod.rs index 8310414..54f5757 100644 --- a/src/auto/mod.rs +++ b/src/auto/mod.rs @@ -3,16 +3,20 @@ mod path; use crate::auto::path::drive; use nalgebra::Vector2; use serde::{Deserialize, Serialize}; -use std::cell::RefMut; +use std::cell::{RefCell, RefMut}; use std::ops::Deref; +use std::rc::Rc; use std::time::Duration; +use frcrs::alliance_station; use tokio::join; use tokio::time::{sleep, Instant, timeout}; use uom::si::{f64::Length, length::meter}; +use uom::si::angle::degree; +use uom::si::f64::Angle; use crate::subsystems::{Drivetrain, Elevator, ElevatorPosition, Indexer, LineupSide}; use crate::{constants, score, Ferris}; -use crate::constants::indexer::LASER_TRIP_DISTANCE_MM; +use crate::constants::indexer::{BOTTOM_SPEED, INTAKE_SPEED, L2_SPEED, L3_SPEED, L4_SPEED, LASER_TRIP_DISTANCE_MM}; #[derive(Serialize, Deserialize)] pub enum Auto { @@ -22,6 +26,8 @@ pub enum Auto { BlueLong, Blue2, RotationTest, + BlueMidLeft2, + TushPush1, } impl Auto { @@ -33,6 +39,8 @@ impl Auto { "BlueLong" => Auto::BlueLong, "Blue2" => Auto::Blue2, "RotationTest" => Auto::RotationTest, + "BlueMidLeft2" => Auto::BlueMidLeft2, + "TushPush1" => Auto::TushPush1, _ => Auto::Nothing, } } @@ -45,6 +53,8 @@ impl Auto { Auto::BlueLong => "BlueLong", Auto::Blue2 => "Blue2", Auto::RotationTest => "RotationTest", + Auto::BlueMidLeft2 => "BlueMidLeft2", + Auto::TushPush1 => "TushPush1", _ => "none", } } @@ -53,10 +63,12 @@ impl Auto { vec![ Auto::Nothing, Auto::BlueTriangle, - Auto::Blue180, + // Auto::Blue180, Auto::BlueLong, Auto::Blue2, - Auto::RotationTest, + // Auto::RotationTest, + Auto::BlueMidLeft2, + Auto::TushPush1, ] } @@ -67,20 +79,22 @@ impl Auto { .collect() } - pub async fn run_auto<'a>(ferris: Ferris, chosen: Auto) { + pub async fn run_auto<'a>(ferris: Rc>, chosen: Auto) { match chosen { Auto::Nothing => { println!("No auto was selected!"); } Auto::BlueTriangle => { - blue_triangle(ferris).await.expect("Failed running auto"); + blue_triangle(Rc::clone(&ferris)).await.expect("Failed running auto"); } Auto::Blue180 => { - blue_180(ferris).await.expect("Failed running auto"); + blue_180(Rc::clone(&ferris)).await.expect("Failed running auto"); } - Auto::BlueLong => blue_long(ferris).await.expect("Failed running auto"), - Auto::Blue2 => blue_2(ferris).await.expect("Failed running auto"), - Auto::RotationTest => rotation_test(ferris).await.expect("Failed running auto"), + Auto::BlueLong => blue_long(Rc::clone(&ferris)).await.expect("Failed running auto"), + Auto::Blue2 => blue_2(Rc::clone(&ferris)).await.expect("Failed running auto"), + Auto::RotationTest => rotation_test(Rc::clone(&ferris)).await.expect("Failed running auto"), + Auto::BlueMidLeft2 => blue_mid_left_2(Rc::clone(&ferris)).await.expect("Failed running auto"), + Auto::TushPush1 => tush_push_1(Rc::clone(&ferris)).await.expect("Failed running auto"), } } } @@ -99,46 +113,52 @@ pub async fn async_score( elevator: &mut Elevator, indexer: &mut Indexer, elevator_position: ElevatorPosition, + dt: Duration, + use_tag: Option, ) -> bool { elevator.set_target(elevator_position); join!( - async { + timeout(Duration::from_secs_f64(2.), async { loop { drivetrain.update_limelight().await; drivetrain.post_odo().await; - if drivetrain.lineup(lineup_side, elevator_position).await { + if drivetrain.lineup(lineup_side, elevator_position, dt, use_tag).await { break; } sleep(Duration::from_millis(20)).await; } - }, + }), elevator.run_to_target_trapezoid_async() ); drivetrain.stop(); - while indexer.get_laser_dist() < constants::indexer::LASER_TRIP_DISTANCE_MM { - let indexer_speed = match elevator_position { - ElevatorPosition::Bottom => -0.5, - ElevatorPosition::L2 => -0.5, - ElevatorPosition::L3 => -0.5, - ElevatorPosition::L4 => -0.25, - }; - indexer.set_speed(indexer_speed); - } - sleep(Duration::from_secs_f64(0.5)).await; + let indexer_speed = match elevator_position { + ElevatorPosition::Bottom => BOTTOM_SPEED, + ElevatorPosition::L2 => L2_SPEED, + ElevatorPosition::L3 => L3_SPEED, + ElevatorPosition::L4 => L4_SPEED, + }; + indexer.set_speed(indexer_speed); + + wait(|| indexer.get_laser_dist() > LASER_TRIP_DISTANCE_MM || indexer.get_laser_dist() == -1).await; + + sleep(Duration::from_secs_f64(0.2)).await; indexer.stop(); true } -pub async fn blue_triangle(robot: Ferris) -> Result<(), Box> { - let mut drivetrain = robot.drivetrain.deref().borrow_mut(); +pub async fn blue_triangle(robot: Rc>) -> Result<(), Box> { + let mut robot_ref = robot.borrow_mut(); + let mut drivetrain = robot_ref.drivetrain.deref().borrow_mut(); - drivetrain.odometry.set_abs(Vector2::new( + drivetrain.reset_heading(); + + drivetrain.odometry.set(Vector2::new( Length::new::(8.075126647949219), Length::new::(2.0993127822875977), )); @@ -159,8 +179,11 @@ pub async fn blue_triangle(robot: Ferris) -> Result<(), Box Result<(), Box> { - let mut drivetrain = robot.drivetrain.deref().borrow_mut(); +pub async fn blue_180(robot: Rc>) -> Result<(), Box> { + let mut robot_ref = robot.borrow_mut(); + let mut drivetrain = robot_ref.drivetrain.deref().borrow_mut(); + let mut elevator = robot_ref.elevator.deref().borrow_mut(); + let mut indexer = robot_ref.indexer.deref().borrow_mut(); drivetrain.odometry.set_abs(Vector2::new( Length::new::(7.8775811195373535), @@ -173,12 +196,20 @@ pub async fn blue_180(robot: Ferris) -> Result<(), Box> { Ok(()) } -pub async fn blue_long(robot: Ferris) -> Result<(), Box> { - let mut drivetrain = robot.drivetrain.deref().borrow_mut(); +pub async fn blue_long(robot: Rc>) -> Result<(), Box> { + let mut robot_ref = robot.borrow_mut(); + let mut drivetrain = robot_ref.drivetrain.deref().borrow_mut(); + let mut elevator = robot_ref.elevator.deref().borrow_mut(); + let mut indexer = robot_ref.indexer.deref().borrow_mut(); - drivetrain.reset_heading(); + drivetrain.reset_heading_offset( + if alliance_station().red() { + Angle::new::(180.) + } else { + Angle::new::(0.) + }); - drivetrain.odometry.set_abs(Vector2::new( + drivetrain.odometry.set(Vector2::new( Length::new::(7.5), Length::new::(7.), )); @@ -189,27 +220,40 @@ pub async fn blue_long(robot: Ferris) -> Result<(), Box> Ok(()) } -pub async fn blue_2(robot: Ferris) -> Result<(), Box> { - let mut drivetrain = robot.drivetrain.deref().borrow_mut(); - let mut elevator = robot.elevator.deref().borrow_mut(); - let mut indexer = robot.indexer.deref().borrow_mut(); - - drivetrain.reset_heading(); - - drivetrain.odometry.set_abs(Vector2::new( - Length::new::(8.020708084106445), - Length::new::(7.632927417755127), +pub async fn blue_2(robot: Rc>) -> Result<(), Box> { + let mut robot_ref = robot.borrow_mut(); + let mut drivetrain = robot_ref.drivetrain.deref().borrow_mut(); + let mut elevator = robot_ref.elevator.deref().borrow_mut(); + let mut indexer = robot_ref.indexer.deref().borrow_mut(); + + drivetrain.reset_heading_offset( + if alliance_station().red() { + Angle::new::(0.) + } else { + Angle::new::(180.) + }); + drivetrain.odometry.set(Vector2::new( + Length::new::(7.215517520904541), + Length::new::(5.439107418060303), )); join!(drive("Blue2", &mut drivetrain, 1), async { - sleep(Duration::from_secs_f64(2.5)).await; + elevator.set_target(ElevatorPosition::L2); + elevator.run_to_target_trapezoid(); + + indexer.set_speed(INTAKE_SPEED); + wait(|| indexer.get_laser_dist() < LASER_TRIP_DISTANCE_MM && indexer.get_laser_dist() != -1).await; + indexer.stop(); + elevator.set_target(ElevatorPosition::L4); elevator.run_to_target_trapezoid(); }); - let _ = timeout(Duration::from_secs_f64(0.5), async { + let _ = timeout(Duration::from_secs_f64(1.5), async { loop { drivetrain.update_limelight().await; + drivetrain.post_odo().await; + sleep(Duration::from_millis(20)).await; } }).await; @@ -220,6 +264,8 @@ pub async fn blue_2(robot: Ferris) -> Result<(), Box> { &mut elevator, &mut indexer, ElevatorPosition::L4, + robot_ref.dt, + if alliance_station().red() {Some(6)} else { Some(19)} ) .await; @@ -227,7 +273,7 @@ pub async fn blue_2(robot: Ferris) -> Result<(), Box> { elevator.set_target(ElevatorPosition::Bottom); elevator.run_to_target_trapezoid_async().await; - indexer.set_speed(-0.25); + indexer.set_speed(INTAKE_SPEED); wait(|| indexer.get_laser_dist() < LASER_TRIP_DISTANCE_MM && indexer.get_laser_dist() != -1).await; @@ -240,7 +286,7 @@ pub async fn blue_2(robot: Ferris) -> Result<(), Box> { elevator.run_to_target_trapezoid(); }); - let _ = timeout(Duration::from_secs_f64(0.5), async { + let _ = timeout(Duration::from_secs_f64(1.25), async { loop { drivetrain.update_limelight().await; sleep(Duration::from_millis(20)).await; @@ -253,14 +299,19 @@ pub async fn blue_2(robot: Ferris) -> Result<(), Box> { &mut elevator, &mut indexer, ElevatorPosition::L4, + robot_ref.dt, + if alliance_station().red() {Some(6)} else { Some(19)} ) .await; Ok(()) } -async fn rotation_test(robot: Ferris) -> Result<(), Box> { - let mut drivetrain = robot.drivetrain.deref().borrow_mut(); +async fn rotation_test(robot: Rc>) -> Result<(), Box> { + let mut robot_ref = robot.borrow_mut(); + let mut drivetrain = robot_ref.drivetrain.deref().borrow_mut(); + let mut elevator = robot_ref.elevator.deref().borrow_mut(); + let mut indexer = robot_ref.indexer.deref().borrow_mut(); drivetrain.reset_heading(); @@ -273,3 +324,135 @@ async fn rotation_test(robot: Ferris) -> Result<(), Box> Ok(()) } + +async fn blue_mid_left_2(robot: Rc>) -> Result<(), Box> { + let mut robot_ref = robot.borrow_mut(); + let mut drivetrain = robot_ref.drivetrain.deref().borrow_mut(); + let mut elevator = robot_ref.elevator.deref().borrow_mut(); + let mut indexer = robot_ref.indexer.deref().borrow_mut(); + + drivetrain.reset_heading_offset(Angle::new::(180.)); + + drivetrain.odometry.set_abs(Vector2::new( + Length::new::(7.2230658531188965), + Length::new::(5.444962978363037) + )); + + join!( + drive("BlueHighMid2", &mut drivetrain, 1), + async { + sleep(Duration::from_secs_f64(0.5)).await; + elevator.set_target(ElevatorPosition::L4); + elevator.run_to_target_trapezoid(); + } + ); + + let _ = timeout(Duration::from_secs_f64(0.5), async { + loop { + drivetrain.update_limelight().await; + sleep(Duration::from_millis(20)).await; + } + }).await; + + async_score( + &mut drivetrain, + LineupSide::Right, + &mut elevator, + &mut indexer, + ElevatorPosition::L4, + robot_ref.dt, + None, + ).await; + + join!(drive("BlueHighMid2", &mut drivetrain, 3), async { + elevator.set_target(ElevatorPosition::Bottom); + elevator.run_to_target_trapezoid_async().await; + + indexer.set_speed(INTAKE_SPEED); + + wait(|| indexer.get_laser_dist() < LASER_TRIP_DISTANCE_MM && indexer.get_laser_dist() != -1).await; + + indexer.stop(); + }); + + join!(drive("BlueHighMid2", &mut drivetrain, 4), async { + sleep(Duration::from_secs_f64(1.25)).await; + elevator.set_target(ElevatorPosition::L4); + elevator.run_to_target_trapezoid(); + }); + + let _ = timeout(Duration::from_secs_f64(0.5), async { + loop { + drivetrain.update_limelight().await; + sleep(Duration::from_millis(20)).await; + } + }).await; + + async_score( + &mut drivetrain, + LineupSide::Left, + &mut elevator, + &mut indexer, + ElevatorPosition::L4, + robot_ref.dt, + None, + ) + .await; + + Ok(()) +} + +async fn tush_push_1(robot: Rc>) -> Result<(), Box> { + let mut robot = robot.borrow_mut(); + let mut drivetrain = robot.drivetrain.deref().borrow_mut(); + let mut elevator = robot.elevator.deref().borrow_mut(); + let mut indexer = robot.indexer.deref().borrow_mut(); + + drivetrain.reset_heading_offset( + if alliance_station().red() { + Angle::new::(-90.) + } else { + Angle::new::(90.) + }); + + drivetrain.odometry.set(Vector2::new( + Length::new::(7.16530704498291), + Length::new::(4.919252395629883) + )); + + drive("TushPush1", &mut drivetrain, 1).await?; + + join!(drive("TushPush1", &mut drivetrain, 2), async { + elevator.set_target(ElevatorPosition::L2); + elevator.run_to_target_trapezoid(); + + indexer.set_speed(INTAKE_SPEED); + wait(|| indexer.get_laser_dist() < LASER_TRIP_DISTANCE_MM && indexer.get_laser_dist() != -1).await; + indexer.stop(); + + elevator.set_target(ElevatorPosition::L4); + elevator.run_to_target_trapezoid(); + }); + + let _ = timeout(Duration::from_secs_f64(1.25), async { + loop { + drivetrain.update_limelight().await; + drivetrain.post_odo().await; + + sleep(Duration::from_millis(20)).await; + } + }).await; + + async_score( + &mut drivetrain, + LineupSide::Right, + &mut elevator, + &mut indexer, + ElevatorPosition::L4, + robot.dt, + if alliance_station().red() {Some(10)} else { Some(21)} + ) + .await; + + Ok(()) +} \ No newline at end of file diff --git a/src/auto/path.rs b/src/auto/path.rs index c4b1968..b2bf5b1 100644 --- a/src/auto/path.rs +++ b/src/auto/path.rs @@ -2,6 +2,7 @@ use frcrs::telemetry::Telemetry; use std::f64::consts::PI; use std::ops::{Add, Neg}; use std::time::Duration; +use frcrs::alliance_station; use frcrs::input::RobotState; use tokio::fs::File; @@ -26,6 +27,7 @@ use crate::{ }, subsystems::Drivetrain, }; +use crate::constants::{HALF_FIELD_LENGTH_METERS, HALF_FIELD_WIDTH_METERS}; // TODO: Test pub async fn drive( @@ -70,6 +72,7 @@ pub async fn follow_path_segment( let mut last_error = Vector2::zeros(); let mut last_loop = Instant::now(); let mut i = Vector2::zeros(); + let red = alliance_station().red(); loop { let state = RobotState::get(); @@ -78,8 +81,8 @@ pub async fn follow_path_segment( break } - drivetrain.post_odo().await; drivetrain.update_limelight().await; + drivetrain.post_odo().await; let now = Instant::now(); let dt = now - last_loop; @@ -94,7 +97,14 @@ pub async fn follow_path_segment( break; } - let setpoint = path.get(Time::new::(elapsed)); + let setpoint = if red { + path.get(Time::new::(elapsed)).mirror( + Length::new::(HALF_FIELD_WIDTH_METERS), + Length::new::(HALF_FIELD_LENGTH_METERS)) + } else { + path.get(Time::new::(elapsed)) + }; + let mut angle = -setpoint.heading; // let mut angle_radians: f64 = setpoint.heading.get::(); @@ -153,6 +163,7 @@ pub async fn follow_path_segment( speed += (speed - last_error) * SWERVE_DRIVE_KD * dt.as_secs_f64(); last_error = speed_s; + drivetrain.set_speeds( speed.x, speed.y, @@ -160,8 +171,9 @@ pub async fn follow_path_segment( SwerveControlStyle::FieldOriented, ); - Telemetry::put_number("path_turn_err", error_angle).await; - Telemetry::put_number("path_target_angle", angle.get::()).await; + Telemetry::put_number("target_x", position.x).await; + Telemetry::put_number("target_y", position.y).await; + Telemetry::put_number("target_angle", angle.get::()).await; sleep(Duration::from_millis(20)).await; } diff --git a/src/constants.rs b/src/constants.rs index 12b0e44..af2aff4 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -1,3 +1,6 @@ +use uom::si::f64::Length; +use uom::si::length::meter; + pub const FPS_LIMIT: f64 = 250.; pub mod robotmap { @@ -29,6 +32,7 @@ pub mod robotmap { pub mod indexer { pub const MOTOR: i32 = 12; pub const LASER_CAN: i32 = 0; // Cant save can id + } pub mod climber { @@ -38,16 +42,20 @@ pub mod robotmap { } // TODO: get 2025 field dimensions -pub const HALF_FIELD_WIDTH_METERS: f64 = 4.1148; // 54/4 feet -pub const HALF_FIELD_LENGTH_METERS: f64 = 8.2296; // 54/2 feet +pub const HALF_FIELD_WIDTH_METERS: f64 = 17.55 / 2.; +pub const HALF_FIELD_LENGTH_METERS: f64 = 8.05 / 2.; pub mod vision { use nalgebra::Vector2; - pub const LIMELIGHT_UPPER_PITCH_DEGREES: f64 = -35.15; + pub const LIMELIGHT_UPPER_PITCH_DEGREES: f64 = -34.5; //Last measured: -37.0 pub const LIMELIGHT_UPPER_YAW_DEGREES: f64 = 90.; // Counterclockwise positive - pub const LIMELIGHT_UPPER_HEIGHT_INCHES: f64 = 20.8; + pub const LIMELIGHT_UPPER_HEIGHT_INCHES: f64 = 20.92; pub const ROBOT_CENTER_TO_LIMELIGHT_UPPER_INCHES: Vector2 = Vector2::new(11.118, 10.352); + + // Increase distance by 10% for every 20 degrees of absolute value of tx + // Set this to 0 for new robots + pub const TX_FUDGE_FACTOR: f64 = 0.135 / 20.; } pub mod drivetrain { @@ -58,11 +66,11 @@ pub mod drivetrain { pub const BR_OFFSET_DEGREES: f64 = -0.056641 * 360.; pub const BL_OFFSET_DEGREES: f64 = 0.170898 * 360.; - pub const PIGEON_OFFSET: f64 = -1.5; + pub const PIGEON_OFFSET: f64 = -0.4; pub const SWERVE_TURN_KP: f64 = 0.6; - pub const SWERVE_ROTATIONS_TO_INCHES: f64 = (1. / 6.75) * (3.84 * PI); + pub const SWERVE_ROTATIONS_TO_INCHES: f64 = (1. / 6.75) * (3.65 * PI); pub const SWERVE_TURN_RATIO: f64 = 12.8; pub const SWERVE_DRIVE_KP: f64 = 0.7; @@ -86,6 +94,11 @@ pub mod drivetrain { pub const TX_ACCEPTABLE_ERROR: f64 = 1.8; pub const TY_ACCEPTABLE_ERROR: f64 = 1.8; pub const YAW_ACCEPTABLE_ERROR: f64 = 0.02; + + pub const LINEUP_DRIVE_KP: f64 = 1.; + pub const LINEUP_DRIVE_KI: f64 = 10.; + pub const LINEUP_DRIVE_KD: f64 = 10.; + pub const LINEUP_DRIVE_IE: f64 = 0.25; } pub mod pose_estimation { pub const ARC_ODOMETRY_MINIMUM_DELTA_THETA_RADIANS: f64 = 0.000001; @@ -98,15 +111,20 @@ pub mod pose_estimation { pub const LIMELIGHT_INACCURACY_PER_LINEAR_VELOCITY: f64 = 2.; // Meters of inaccuracy per (meter/second) of drivetrain linear velocity } pub mod elevator { - pub const BOTTOM: f64 = 0.0; // unit is rotations - pub const L2: f64 = 2.; // unit is rotations - pub const L3: f64 = 16.5; // unit is rotations - pub const L4: f64 = 39.1; // unit is rotations + pub const BOTTOM: f64 = 0.25; // unit is rotations + pub const L2: f64 = 1.5; // unit is rotations + pub const L3: f64 = 13.; // unit is rotations + pub const L4: f64 = 39.5; // unit is rotations pub const ELEVATOR_TRAPEZOID_DT_MS: u64 = 50; // sleep.await this long in between updating the elevator trapezoidal when running its async function pub const POSITION_TOLERANCE: f64 = 0.25; // unit is rotations. finish elevator async move when within this distance of target } pub mod indexer { pub const LASER_TRIP_DISTANCE_MM: i32 = 2; + pub const INTAKE_SPEED: f64 = -0.25; + pub const BOTTOM_SPEED: f64 = -0.35; + pub const L2_SPEED: f64 = -0.4; + pub const L3_SPEED: f64 = -0.4; + pub const L4_SPEED: f64 = -0.4; } pub mod joystick_map { // Joystick IDs (set in driver station) diff --git a/src/container.rs b/src/container.rs index 59c7eea..ef7a1de 100644 --- a/src/container.rs +++ b/src/container.rs @@ -2,7 +2,8 @@ use crate::constants::drivetrain::SWERVE_TURN_KP; use crate::constants::joystick_map::*; use crate::subsystems::{Drivetrain, DrivetrainControlState, SwerveControlStyle}; use crate::Controllers; -use frcrs::deadzone; +use frcrs::{alliance_station, deadzone}; +use frcrs::input::RobotState; use nalgebra::ComplexField; use uom::si::angle::{degree, radian}; @@ -45,8 +46,8 @@ pub async fn control_drivetrain( } else { 0.0..1. }; - let deadly = deadzone(left_drive.get_y(), &joystick_range, &power_translate); - let deadlx = deadzone(left_drive.get_x(), &joystick_range, &power_translate); + let mut deadly = deadzone(left_drive.get_y(), &joystick_range, &power_translate); + let mut deadlx = deadzone(left_drive.get_x(), &joystick_range, &power_translate); let deadrz = deadzone(right_drive.get_z(), &joystick_range, &power_rotate); let hold_angle = deadrz == 0. && right_drive.get(3); @@ -73,6 +74,12 @@ pub async fn control_drivetrain( deadrz }; + // Flip because the driver is facing the other way + if alliance_station().red() { + deadlx *= -1.; + deadly *= -1.; + } + drivetrain.set_speeds(deadly, deadlx, rot, SwerveControlStyle::FieldOriented); if right_drive.get(RESET_HEADING) { diff --git a/src/lib.rs b/src/lib.rs index a3aa3cb..8ca7104 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -23,12 +23,14 @@ use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::ops::Deref; use std::rc::Rc; use std::sync::Arc; -use std::time::{Duration, Instant}; +use std::time::Duration; +use tokio::time::Instant; use axum::response::IntoResponse; use tokio::runtime::Handle; use tokio::task::{spawn_local, AbortHandle}; use tokio::time::sleep; use uom::si::angle::degree; +use crate::constants::indexer::{BOTTOM_SPEED, L2_SPEED, L3_SPEED, L4_SPEED}; #[derive(Clone)] pub struct Controllers { @@ -58,6 +60,8 @@ pub struct Ferris { elevator_trapezoid_handle: Option, indexer_intake_handle: Option, pub climb_handle: Option, + + pub dt: Duration, } impl Default for Ferris { @@ -86,6 +90,8 @@ impl Ferris { elevator_trapezoid_handle: None, indexer_intake_handle: None, climb_handle: None, + + dt: Duration::from_millis(0), } } @@ -104,210 +110,209 @@ impl Ferris { } } -impl Robot for Ferris { - async fn robot_init(&mut self) { - Telemetry::init(5807); - - NetworkTable::init(); - - Telemetry::put_selector("auto chooser", Auto::names()).await; - } - - fn disabled_init(&mut self) { - if let Ok(drivetrain) = self.drivetrain.try_borrow_mut() { - drivetrain.stop(); - - let offsets = drivetrain.get_offsets(); - - for offset in offsets { - print!("{} : ", offset.get::()) - } - - println!(); - } - - if let Some(handle) = self.auto_handle.take() { - println!("Aborted"); - handle.abort(); - } - } - - fn autonomous_init(&mut self) { - println!("Autonomous init"); - } - - fn teleop_init(&mut self) { - println!("Teleop init"); - } - - fn test_init(&mut self) { - println!("Test init"); - } - - async fn disabled_periodic(&mut self) { - let metrics = Handle::current().metrics(); - - let n = metrics.num_alive_tasks(); - // println!("Active tasks: {}", n); - - &self.stop(); - - let mut drivetrain = self.drivetrain.deref().borrow_mut(); - - drivetrain.stop(); - - if let Ok(mut drivetrain) = self.drivetrain.try_borrow_mut() { - //drivetrain.update_limelight().await; - drivetrain.post_odo().await; - drivetrain.stop(); - } - - if let Some(handle) = self.auto_handle.take() { - println!("Aborted"); - handle.abort(); - } - } - - async fn autonomous_periodic(&mut self) { - if let Ok(mut drivetrain) = self.drivetrain.try_borrow_mut() { - drivetrain.update_limelight().await; - drivetrain.post_odo().await; - } - - if self.auto_handle.is_none() { - let f = self.clone(); - - if let Some(selected_auto) = Telemetry::get_selection("auto chooser").await { - let chosen = Auto::from_dashboard(selected_auto.as_str()); - - let handle = spawn_local(Auto::run_auto(f, chosen)).abort_handle(); - self.auto_handle = Some(handle); - } else { - eprintln!("Failed to get selected auto from telemetry, running default"); - - let handle = spawn_local(Auto::run_auto(f, Auto::Nothing)).abort_handle(); - self.auto_handle = Some(handle); - } - } - } - - async fn teleop_periodic(&mut self) { - let TeleopState { - ref mut drivetrain_state, - } = *self.teleop_state.deref().borrow_mut(); - - if let Ok(mut drivetrain) = self.drivetrain.try_borrow_mut() { - if let Ok(mut elevator) = self.elevator.try_borrow_mut() { - if let Ok(mut indexer) = self.indexer.try_borrow_mut() { - drivetrain.update_limelight().await; - drivetrain.post_odo().await; - - let drivetrain_aligned = if self.controllers.right_drive.get(LINEUP_LEFT) { - drivetrain - .lineup(LineupSide::Left, elevator.get_target()) - .await - } else if self.controllers.right_drive.get(LINEUP_RIGHT) { - drivetrain - .lineup(LineupSide::Right, elevator.get_target()) - .await - } else if self.controllers.operator.get(WHEELS_ZERO) { - drivetrain.set_wheels_zero(); - false - } else { - control_drivetrain( - &mut drivetrain, - &mut self.controllers, - drivetrain_state, - ) - .await; - - false - }; - - if self.controllers.left_drive.get(SCORE_L2) { - score( - drivetrain_aligned, - &mut elevator, - &mut indexer, - ElevatorPosition::L2, - ) - } else if self.controllers.left_drive.get(SCORE_L3) { - score( - drivetrain_aligned, - &mut elevator, - &mut indexer, - ElevatorPosition::L3, - ) - } else if self.controllers.left_drive.get(SCORE_L4) { - score( - drivetrain_aligned, - &mut elevator, - &mut indexer, - ElevatorPosition::L4, - ) - } else if self.controllers.right_drive.get(INTAKE) { - elevator.set_target(ElevatorPosition::Bottom); - elevator.run_to_target_trapezoid(); - - if indexer.get_laser_dist() > constants::indexer::LASER_TRIP_DISTANCE_MM - || indexer.get_laser_dist() == -1 - { - indexer.set_speed(-0.25); - } else { - indexer.stop(); - } - } else if self.controllers.left_drive.get(14) { - elevator.set_speed(1.); - } else if self.controllers.left_drive.get(15) { - elevator.set_speed(-1.) - } else { - elevator.stop(); - indexer.stop(); - } - } - } - } - - if self.controllers.right_drive.get(CLIMB) { - if self.climb_handle.is_none() { - let f = self.clone(); - let climb_task = Climber::climb(f); - let handle = spawn_local(climb_task).abort_handle(); - self.climb_handle = Some(handle); - } - } else if self.controllers.right_drive.get(CLIMB_FALL) { - if let Some(handle) = self.climb_handle.take() { - handle.abort(); - } - - if let Ok(mut climber) = self.climber.try_borrow_mut() { - climber.fall() - } - } else { - if let Some(handle) = self.climb_handle.take() { - handle.abort(); - } - - if let Ok(mut climber) = self.climber.try_borrow_mut() { - if self.controllers.right_drive.get(CLIMBER_RAISE) { - climber.set_raise(true); - } else { - climber.set_raise(false); - } - - if self.controllers.right_drive.get(CLIMBER_GRAB) { - climber.set_grab(true); - } else { - climber.set_grab(false); - } - } - } - } - - async fn test_periodic(&mut self) { - // println!("Test periodic"); - } -} +// impl Robot for Ferris { +// async fn robot_init(&mut self) { +// Telemetry::init(5807); +// +// NetworkTable::init(); +// +// Telemetry::put_selector("auto chooser", Auto::names()).await; +// } +// +// fn disabled_init(&mut self) { +// if let Ok(drivetrain) = self.drivetrain.try_borrow_mut() { +// drivetrain.stop(); +// +// let offsets = drivetrain.get_offsets(); +// +// for offset in offsets { +// print!("{} : ", offset.get::()) +// } +// +// println!(); +// } +// +// if let Some(handle) = self.auto_handle.take() { +// println!("Aborted"); +// handle.abort(); +// } +// } +// +// fn autonomous_init(&mut self) { +// println!("Autonomous init"); +// } +// +// fn teleop_init(&mut self) { +// println!("Teleop init"); +// } +// +// fn test_init(&mut self) { +// println!("Test init"); +// } +// +// async fn disabled_periodic(&mut self) { +// let metrics = Handle::current().metrics(); +// +// let n = metrics.num_alive_tasks(); +// // println!("Active tasks: {}", n); +// +// &self.stop(); +// +// let mut drivetrain = self.drivetrain.deref().borrow_mut(); +// +// drivetrain.stop(); +// +// if let Ok(mut drivetrain) = self.drivetrain.try_borrow_mut() { +// //drivetrain.update_limelight().await; +// drivetrain.post_odo().await; +// drivetrain.stop(); +// } +// +// if let Some(handle) = self.auto_handle.take() { +// println!("Aborted"); +// handle.abort(); +// } +// } +// +// async fn autonomous_periodic(&mut self) { +// if let Ok(mut drivetrain) = self.drivetrain.try_borrow_mut() { +// drivetrain.update_limelight().await; +// drivetrain.post_odo().await; +// } +// +// if self.auto_handle.is_none() { +// let f = self.clone(); +// +// if let Some(selected_auto) = Telemetry::get_selection("auto chooser").await { +// let chosen = Auto::from_dashboard(selected_auto.as_str()); +// +// let handle = spawn_local(Auto::run_auto(f, chosen)).abort_handle(); +// self.auto_handle = Some(handle); +// } else { +// eprintln!("Failed to get selected auto from telemetry, running default"); +// +// let handle = spawn_local(Auto::run_auto(f, Auto::Nothing)).abort_handle(); +// self.auto_handle = Some(handle); +// } +// } +// } +// +// async fn teleop_periodic(&mut self) { +// let TeleopState { +// ref mut drivetrain_state, +// } = *self.teleop_state.deref().borrow_mut(); +// +// if let Ok(mut drivetrain) = self.drivetrain.try_borrow_mut() { +// if let Ok(mut elevator) = self.elevator.try_borrow_mut() { +// if let Ok(mut indexer) = self.indexer.try_borrow_mut() { +// drivetrain.update_limelight().await; +// drivetrain.post_odo().await; +// +// let drivetrain_aligned = if self.controllers.right_drive.get(LINEUP_LEFT) { +// drivetrain +// .lineup(LineupSide::Left, elevator.get_target()) +// .await +// } else if self.controllers.right_drive.get(LINEUP_RIGHT) { +// drivetrain +// .lineup(LineupSide::Right, elevator.get_target()) +// .await +// } else if self.controllers.operator.get(WHEELS_ZERO) { +// drivetrain.set_wheels_zero(); +// false +// } else { +// control_drivetrain( +// &mut drivetrain, +// &mut self.controllers, +// drivetrain_state, +// ) +// .await; +// +// false +// }; +// if self.controllers.left_drive.get(SCORE_L2) { +// score( +// drivetrain_aligned, +// &mut elevator, +// &mut indexer, +// ElevatorPosition::L2, +// ) +// } else if self.controllers.left_drive.get(SCORE_L3) { +// score( +// drivetrain_aligned, +// &mut elevator, +// &mut indexer, +// ElevatorPosition::L3, +// ) +// } else if self.controllers.left_drive.get(SCORE_L4) { +// score( +// drivetrain_aligned, +// &mut elevator, +// &mut indexer, +// ElevatorPosition::L4, +// ) +// } else if self.controllers.right_drive.get(INTAKE) { +// elevator.set_target(ElevatorPosition::Bottom); +// elevator.run_to_target_trapezoid(); +// +// if indexer.get_laser_dist() > constants::indexer::LASER_TRIP_DISTANCE_MM +// || indexer.get_laser_dist() == -1 +// { +// indexer.set_speed(-0.25); +// } else { +// indexer.stop(); +// } +// } else if self.controllers.left_drive.get(14) { +// elevator.set_speed(1.); +// } else if self.controllers.left_drive.get(15) { +// elevator.set_speed(-1.) +// } else { +// elevator.stop(); +// indexer.stop(); +// } +// } +// } +// } +// +// if self.controllers.right_drive.get(CLIMB) { +// if self.climb_handle.is_none() { +// let f = self.clone(); +// let climb_task = Climber::climb(f); +// let handle = spawn_local(climb_task).abort_handle(); +// self.climb_handle = Some(handle); +// } +// } else if self.controllers.right_drive.get(CLIMB_FALL) { +// if let Some(handle) = self.climb_handle.take() { +// handle.abort(); +// } +// +// if let Ok(mut climber) = self.climber.try_borrow_mut() { +// climber.fall() +// } +// } else { +// if let Some(handle) = self.climb_handle.take() { +// handle.abort(); +// } +// +// if let Ok(mut climber) = self.climber.try_borrow_mut() { +// if self.controllers.right_drive.get(CLIMBER_RAISE) { +// climber.set_raise(true); +// } else { +// climber.set_raise(false); +// } +// +// if self.controllers.right_drive.get(CLIMBER_GRAB) { +// climber.set_grab(true); +// } else { +// climber.set_grab(false); +// } +// } +// } +// } +// +// async fn test_periodic(&mut self) { +// // println!("Test periodic"); +// } +// } pub async fn elevator_move_to_target_async(robot: Ferris) { println!("Called elevator_move_to_target_async"); if let Ok(mut elevator) = robot.elevator.try_borrow_mut() { @@ -333,16 +338,17 @@ pub fn score( indexer: &mut Indexer, elevator_position: ElevatorPosition, ) { + // println!("dt_aligned: {}", drivetrain_aligned); elevator.set_target(elevator_position); let elevator_at_target = elevator.run_to_target_trapezoid(); if elevator_at_target && drivetrain_aligned { if indexer.get_laser_dist() < constants::indexer::LASER_TRIP_DISTANCE_MM { let indexer_speed = match elevator_position { - ElevatorPosition::Bottom => -0.5, - ElevatorPosition::L2 => -0.5, - ElevatorPosition::L3 => -0.5, - ElevatorPosition::L4 => -0.25, + ElevatorPosition::Bottom => BOTTOM_SPEED, + ElevatorPosition::L2 => L2_SPEED, + ElevatorPosition::L3 => L3_SPEED, + ElevatorPosition::L4 => L4_SPEED, }; indexer.set_speed(indexer_speed); } else { @@ -351,6 +357,8 @@ pub fn score( //elevator.set_target(ElevatorPosition::Bottom); //elevator.run_to_target_trapezoid(); } + } else { + //indexer.stop(); } } diff --git a/src/main.rs b/src/main.rs index a72a4ad..b774c5d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,10 +1,16 @@ #![warn(non_snake_case)] +use std::cell::RefCell; use std::ops::Deref; -use std::time::{Duration, Instant}; +use std::process::exit; +use std::rc::Rc; +use std::sync::Arc; +use std::sync::atomic::{AtomicU64, Ordering}; +use std::time::SystemTime; +use tokio::time::{Duration, Instant}; use frcrs::{init_hal, observe_user_program_starting, refresh_data, Robot}; use frcrs::input::{RobotMode, RobotState}; -use frcrs::networktables::NetworkTable; +use frcrs::networktables::{NetworkTable, SmartDashboard}; use frcrs::telemetry::Telemetry; use tokio::task; use tokio::task::{AbortHandle, spawn_local}; @@ -13,13 +19,14 @@ use RobotCode2025::constants::joystick_map::{CLIMB, CLIMB_FALL, CLIMBER_GRAB, CL use RobotCode2025::container::control_drivetrain; use RobotCode2025::{constants, Ferris, score, TeleopState}; use RobotCode2025::auto::Auto; +use RobotCode2025::constants::indexer::INTAKE_SPEED; use RobotCode2025::subsystems::{Climber, ElevatorPosition, LineupSide}; fn main() { let runtime = tokio::runtime::Runtime::new().unwrap(); let local = task::LocalSet::new(); - let mut ferris = Ferris::new(); + let mut ferris = Rc::new(RefCell::new(Ferris::new())); // ferris.start_competition(runtime, local); runtime.block_on(local.run_until(async { @@ -35,45 +42,90 @@ fn main() { Telemetry::put_selector("auto chooser", Auto::names()).await; + SmartDashboard::start_camera_server(); + let mut last_loop = Instant::now(); - let mut dt = Duration::from_millis(0); let mut auto: Option = None; + // Watchdog setup + let last_loop_time = Arc::new(AtomicU64::new(0)); + let watchdog_last_loop = Arc::clone(&last_loop_time); + let watchdog_ferris = ferris.clone(); + + // Spawn watchdog task + spawn_local(async move { + loop { + sleep(Duration::from_millis(20)).await; + let last = watchdog_last_loop.load(Ordering::Relaxed); + let now = SystemTime::now() + .duration_since(SystemTime::UNIX_EPOCH) + .unwrap() + .as_millis() as u64; + + if last != 0 && now - last > 150 { + println!("Loop Overrun: {}ms", now - last); + if let Ok(ferris) = watchdog_ferris.try_borrow_mut() { + ferris.stop(); + } else { + println!("FAILED TO GET FERRIS TO STOP"); + // exit(1); + } + println!("Watchdog triggered: Motors stopped"); + } + } + }); + loop { refresh_data(); let state = RobotState::get(); + let dt = last_loop.elapsed(); if !state.enabled() { - if let Some(handle) = auto.take() { - println!("Aborted"); - handle.abort(); + // if let Some(handle) = auto.take() { + // println!("Aborted"); + // handle.abort(); + // } + + if let Ok(f) = ferris.try_borrow() { + f.stop(); + } else { + println!("Didnt borrow ferris"); } } if state.enabled() && state.teleop() { - teleop(&mut ferris).await; + if let Ok(mut robot) = ferris.try_borrow_mut() { + robot.dt = dt; + teleop(&mut robot).await; + } } if state.enabled() && state.auto() { - if let Ok(mut drivetrain) = ferris.drivetrain.try_borrow_mut() { - drivetrain.update_limelight().await; - drivetrain.post_odo().await; + // Update dt before using it in auto + if let Ok(mut ferris_mut) = ferris.try_borrow_mut() { + ferris_mut.dt = dt; + + // Now access drivetrain + if let Ok(mut drivetrain) = ferris_mut.drivetrain.try_borrow_mut() { + drivetrain.update_limelight().await; + drivetrain.post_odo().await; + } } - if let None = auto { - let f = ferris.clone(); + if auto.is_none() { + let ferris_clone = Rc::clone(&ferris); if let Some(selected_auto) = Telemetry::get_selection("auto chooser").await { let chosen = Auto::from_dashboard(selected_auto.as_str()); - let run = Auto::run_auto(f, chosen); + let run = Auto::run_auto(ferris_clone, chosen); auto = Some(local.spawn_local(run).abort_handle()); } else { eprintln!("Failed to get selected auto from telemetry, running default"); - let run = Auto::run_auto(f, Auto::Nothing); + let run = Auto::run_auto(ferris_clone, Auto::Nothing); auto = Some(local.spawn_local(run).abort_handle()); } } @@ -82,7 +134,14 @@ fn main() { auto.abort(); } - dt = last_loop.elapsed(); + Telemetry::put_number("Loop Rate", 1. / dt.as_secs_f64()).await; + + let now_millis = SystemTime::now() + .duration_since(SystemTime::UNIX_EPOCH) + .unwrap() + .as_millis() as u64; + last_loop_time.store(now_millis, Ordering::Relaxed); + let elapsed = dt.as_secs_f64(); let left = (1. / 250. - elapsed).max(0.); sleep(Duration::from_secs_f64(left)).await; @@ -104,11 +163,11 @@ async fn teleop(robot: &mut Ferris) { let drivetrain_aligned = if robot.controllers.right_drive.get(LINEUP_LEFT) { drivetrain - .lineup(LineupSide::Left, elevator.get_target()) + .lineup(LineupSide::Left, elevator.get_target(), robot.dt, None) .await } else if robot.controllers.right_drive.get(LINEUP_RIGHT) { drivetrain - .lineup(LineupSide::Right, elevator.get_target()) + .lineup(LineupSide::Right, elevator.get_target(), robot.dt, None) .await } else if robot.controllers.operator.get(WHEELS_ZERO) { drivetrain.set_wheels_zero(); @@ -152,7 +211,7 @@ async fn teleop(robot: &mut Ferris) { if indexer.get_laser_dist() > constants::indexer::LASER_TRIP_DISTANCE_MM || indexer.get_laser_dist() == -1 { - indexer.set_speed(-0.25); + indexer.set_speed(INTAKE_SPEED); } else { indexer.stop(); } diff --git a/src/subsystems/climber.rs b/src/subsystems/climber.rs index 32f945d..989113f 100644 --- a/src/subsystems/climber.rs +++ b/src/subsystems/climber.rs @@ -18,8 +18,8 @@ impl Default for Climber { impl Climber { pub fn new() -> Self { Self { - raise: Solenoid::new(ModuleType::Rev, RAISE), - grab: Solenoid::new(ModuleType::Rev, GRAB), + raise: Solenoid::new(ModuleType::CTRE, RAISE), + grab: Solenoid::new(ModuleType::CTRE, GRAB), } } @@ -42,7 +42,7 @@ impl Climber { pub async fn climb(ferris: Ferris) { if let Ok(climber) = ferris.climber.try_borrow_mut() { climber.set_raise(true); - sleep(Duration::from_secs(1)).await; + sleep(Duration::from_secs_f64(1.75)).await; climber.set_grab(true); sleep(Duration::from_secs_f64(0.25)).await; climber.set_raise(false); diff --git a/src/subsystems/drivetrain.rs b/src/subsystems/drivetrain.rs index 87fba47..0ce6297 100644 --- a/src/subsystems/drivetrain.rs +++ b/src/subsystems/drivetrain.rs @@ -1,18 +1,14 @@ +use std::collections::HashMap; use frcrs::alliance_station; use std::f64::consts::PI; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::ops::{Add, Sub}; +use std::time::Duration; use frcrs::ctre::{talon_encoder_tick, CanCoder, ControlMode, Pigeon, Talon}; -use crate::constants::drivetrain::{ - BL_OFFSET_DEGREES, BR_OFFSET_DEGREES, FL_OFFSET_DEGREES, FR_OFFSET_DEGREES, - LINEUP_2D_TX_FWD_KP, LINEUP_2D_TX_STR_KP, LINEUP_2D_TY_FWD_KP, PIGEON_OFFSET, SWERVE_DRIVE_IE, - SWERVE_DRIVE_KP, SWERVE_ROTATIONS_TO_INCHES, SWERVE_TURN_KP, SWERVE_TURN_RATIO, TARGET_TX_LEFT, - TARGET_TX_RIGHT, TARGET_TY_LEFT, TARGET_TY_RIGHT, TX_ACCEPTABLE_ERROR, TY_ACCEPTABLE_ERROR, - YAW_ACCEPTABLE_ERROR, -}; +use crate::constants::drivetrain::{BL_OFFSET_DEGREES, BR_OFFSET_DEGREES, FL_OFFSET_DEGREES, FR_OFFSET_DEGREES, LINEUP_2D_TX_FWD_KP, LINEUP_2D_TX_STR_KP, LINEUP_2D_TY_FWD_KP, LINEUP_DRIVE_IE, LINEUP_DRIVE_KD, LINEUP_DRIVE_KI, LINEUP_DRIVE_KP, PIGEON_OFFSET, SWERVE_DRIVE_IE, SWERVE_DRIVE_KD, SWERVE_DRIVE_KI, SWERVE_DRIVE_KP, SWERVE_ROTATIONS_TO_INCHES, SWERVE_TURN_KP, SWERVE_TURN_RATIO, TARGET_TX_LEFT, TARGET_TX_RIGHT, TARGET_TY_LEFT, TARGET_TY_RIGHT, TX_ACCEPTABLE_ERROR, TY_ACCEPTABLE_ERROR, YAW_ACCEPTABLE_ERROR}; use crate::constants::robotmap::swerve::*; use crate::swerve::kinematics::{ModuleState, Swerve}; use crate::swerve::odometry::{ModuleReturn, Odometry}; @@ -21,6 +17,7 @@ use frcrs::telemetry::Telemetry; use nalgebra::{Quaternion, Rotation2, Vector2}; use serde::Deserialize; use serde::Serialize; +use tokio::time::{Instant, timeout}; use crate::constants; use crate::constants::vision::ROBOT_CENTER_TO_LIMELIGHT_UPPER_INCHES; @@ -51,6 +48,12 @@ pub struct LineupTarget { pub angle: Angle, } +#[derive(Copy, Clone)] +pub struct LineupLocation { + side_distance: Length, + forward_distance: Length, +} + pub struct Drivetrain { pigeon: Pigeon, @@ -78,6 +81,8 @@ pub struct Drivetrain { pub limelight: Vision, abs_offsets: [Angle; 4], + + lineup_locations: HashMap } #[derive(Serialize, Deserialize)] @@ -133,12 +138,6 @@ impl Drivetrain { 5807, )); - let offset = if alliance_station().red() { - Angle::new::(180.) - } else { - Angle::new::(0.) - }; - let abs_offsets = [ Angle::new::((-fr_encoder.get_absolute() * 360.) - FR_OFFSET_DEGREES), Angle::new::((-fl_encoder.get_absolute() * 360.) - FL_OFFSET_DEGREES), @@ -146,6 +145,16 @@ impl Drivetrain { Angle::new::((-br_encoder.get_absolute() * 360.) - BR_OFFSET_DEGREES), ]; + let mut lineup_locations = HashMap::new(); + + /// default is: + // side_distance: Length::new::(13. / 2.), + // forward_distance: Length::new::(16.275), + lineup_locations.insert(17, LineupLocation { + side_distance: Length::new::(13. / 2.), + forward_distance: Length::new::(16.), + }); + Self { pigeon: Pigeon::new(PIGEON, Some("can0".to_owned())), @@ -168,21 +177,22 @@ impl Drivetrain { kinematics: Swerve::rectangle(Length::new::(21.5), Length::new::(21.5)), odometry: Odometry::new(), - offset, + offset: Angle::new::(0.), limelight: limelight, abs_offsets, + + lineup_locations, } } pub async fn update_limelight(&mut self) { - self.limelight + let _ = timeout(Duration::from_millis(10), self.limelight .update( self.get_offset_wrapped(), self.odometry.robot_pose_estimate.get_position(), - ) - .await; + )).await; Telemetry::put_number( "limelight upper fom", self.limelight.get_figure_of_merit().get::(), @@ -507,11 +517,7 @@ impl Drivetrain { } pub fn get_angle(&self) -> Angle { - if alliance_station().red() { - Angle::new::(-self.pigeon.get_rotation().z + 180. + PIGEON_OFFSET) - } else { - Angle::new::(-self.pigeon.get_rotation().z + PIGEON_OFFSET) - } + Angle::new::(-self.pigeon.get_rotation().z + PIGEON_OFFSET) } pub fn get_offset(&self) -> Angle { @@ -536,14 +542,20 @@ impl Drivetrain { } pub fn reset_heading(&mut self) { + println!("Resetting heading: {}", self.get_offset_wrapped().get::()); + self.offset = self.get_angle(); } - pub async fn lineup(&mut self, side: LineupSide, target_level: ElevatorPosition) -> bool { + pub fn reset_heading_offset(&mut self, offset: Angle) { + self.offset = self.get_angle() + offset; + } + + pub async fn lineup(&mut self, side: LineupSide, target_level: ElevatorPosition, dt: Duration, use_tag: Option) -> bool { let mut last_error = Vector2::zeros(); let mut i = Vector2::zeros(); - if let Some(target) = self.calculate_target_lineup_position(side, target_level) { + if let Some(target) = self.calculate_target_lineup_position(side, target_level, use_tag) { let mut error_position = target.position - self.odometry.robot_pose_estimate.get_position_meters(); @@ -558,22 +570,25 @@ impl Drivetrain { let mut error_angle = (-target.angle - dt_angle).get::(); - if error_position.abs().max() < SWERVE_DRIVE_IE { + if error_position.abs().max() < LINEUP_DRIVE_IE { i += error_position; } error_angle *= SWERVE_TURN_KP; - error_position *= -SWERVE_DRIVE_KP * 1.25; + error_position *= -LINEUP_DRIVE_KP; + + // Give KP boost when close + if error_position.magnitude().abs() < 0.15 { + error_position *= 2.; + } let mut speed = error_position; + speed += i * -LINEUP_DRIVE_KI * dt.as_secs_f64(); + speed += (speed - last_error) * LINEUP_DRIVE_KD * dt.as_secs_f64(); let speed_s = speed; last_error = speed_s; - if alliance_station().red() { - speed.x *= -1. - } - Telemetry::put_number("error_position_x", error_position.x).await; Telemetry::put_number("error_position_y", error_position.y).await; Telemetry::put_number("error_angle", error_angle).await; @@ -584,9 +599,11 @@ impl Drivetrain { Telemetry::put_number("target_x", target.position.x).await; Telemetry::put_number("target_y", target.position.y).await; Telemetry::put_number("target_angle", target.angle.get::()).await; - if error_position.magnitude().abs() < 0.015 && error_angle.abs() < 0.015 { + if error_position.magnitude().abs() < 0.015 + && error_angle.abs() < 0.015 + { self.stop(); - self.set_speeds(0., 0., 0., SwerveControlStyle::RobotOriented); + // self.set_speeds(0., 0.1, 0., SwerveControlStyle::RobotOriented); // println!("dt at position"); true } else { @@ -612,8 +629,14 @@ impl Drivetrain { &mut self, side: LineupSide, target_level: ElevatorPosition, + use_tag: Option, ) -> Option { - let tag_id = self.limelight.get_saved_id(); + let tag_id = if use_tag.is_some() { + use_tag.unwrap() + } else { + self.limelight.get_saved_id() + }; + if tag_id == -1 { return None; } @@ -624,12 +647,23 @@ impl Drivetrain { let yaw = quaternion_to_yaw(tag_rotation); - let mut side_distance = Length::new::(13. / 2.); // theoretical is 13. / 2. - let forward_distance = Length::new::(16.75); //theoretical is 16.75 + let lineup_location = match self.lineup_locations.get(&tag_id) { + None => { + LineupLocation { + side_distance: Length::new::(13. / 2.), + forward_distance: Length::new::(16.275), + } + } + Some(l) => { *l } + }; + + let mut side_distance = lineup_location.side_distance; + let mut forward_distance = lineup_location.forward_distance; + let elevator_position = match target_level { - ElevatorPosition::Bottom => Length::new::(-10.5), - ElevatorPosition::L2 => Length::new::(-10.5), - ElevatorPosition::L3 => Length::new::(-10.5), + ElevatorPosition::Bottom => Length::new::(-9.), + ElevatorPosition::L2 => Length::new::(-9.), + ElevatorPosition::L3 => Length::new::(-9.), ElevatorPosition::L4 => Length::new::(-9.), }; //theoretical is -11.0 @@ -813,18 +847,19 @@ pub fn calculate_relative_target(current: f64, target: f64) -> f64 { #[cfg(test)] mod tests { + use std::collections::HashMap; use nalgebra::{Quaternion, Vector2, Vector3}; use std::f64::consts::PI; + use std::ops::{Add, Sub}; use crate::subsystems::drivetrain::{calculate_relative_target, quaternion_to_yaw}; - use crate::subsystems::{FieldPosition, LineupSide}; - use uom::si::angle::radian; + use crate::subsystems::{ElevatorPosition, FieldPosition, LineupLocation, LineupSide, LineupTarget}; + use uom::si::angle::{degree, radian}; use uom::si::f32::Angle; use uom::si::f64::Length; - use uom::si::length::meter; + use uom::si::length::{inch, meter}; #[test] - #[ignore] fn calculate_target_lineup_position() { let side = LineupSide::Right; @@ -847,18 +882,36 @@ mod tests { let yaw = quaternion_to_yaw(tag_rotation); - let side_distance = Length::new::(0.5); - let forward_distance = Length::new::(0.5); + let mut lineup_locations = HashMap::new(); + + lineup_locations.insert(17, LineupLocation { + side_distance: Length::new::(13. / 2.), + forward_distance: Length::new::(20.275), + }); + + let lineup_location = match lineup_locations.get(&17) { + None => { + LineupLocation { + side_distance: Length::new::(13. / 2.), + forward_distance: Length::new::(16.275), + } + } + Some(l) => { *l } + }; + + let mut side_distance = lineup_location.side_distance; + let mut forward_distance = lineup_location.forward_distance; let side_multiplier = match side { LineupSide::Left => -1.0, LineupSide::Right => 1.0, }; + side_distance *= side_multiplier; let perpendicular_yaw = yaw + std::f64::consts::PI / 2.0; - let offset_x = side_distance.get::() * f64::cos(perpendicular_yaw) * side_multiplier; - let offset_y = side_distance.get::() * f64::sin(perpendicular_yaw) * side_multiplier; + let offset_x = side_distance.get::() * f64::cos(perpendicular_yaw); + let offset_y = side_distance.get::() * f64::sin(perpendicular_yaw); let forward_x = forward_distance.get::() * f64::cos(yaw); let forward_y = forward_distance.get::() * f64::sin(yaw); @@ -870,7 +923,19 @@ mod tests { .get::(), ); - let robot_angle = Angle::new::(yaw as f32); + let mut robot_angle = uom::si::f64::Angle::new::(yaw) + .add(uom::si::f64::Angle::new::(PI)) + .sub(uom::si::f64::Angle::new::(PI / 2.)); + + // robot_angle = uom::si::f64::Angle::new::(calculate_relative_target( + // self.get_offset_wrapped().get::(), + // robot_angle.get::(), + // )); + if robot_angle.get::() > 180. { + robot_angle -= uom::si::f64::Angle::new::(360.) + } else if robot_angle.get::() < -180. { + robot_angle += uom::si::f64::Angle::new::(360.) + } println!("{:?}", target_pos); println!("{:?}", robot_angle); diff --git a/src/subsystems/elevator.rs b/src/subsystems/elevator.rs index 6147a71..40381b2 100644 --- a/src/subsystems/elevator.rs +++ b/src/subsystems/elevator.rs @@ -4,6 +4,7 @@ use frcrs::ctre::{ControlMode, Talon}; use std::fmt::Display; use std::time::Duration; use tokio::time::sleep; +use crate::auto::wait; pub struct Elevator { left: Talon, @@ -101,12 +102,11 @@ impl Elevator { ElevatorPosition::L4 => elevator::L4, }; - while (self.right.get_position() - target_position).abs() > elevator::POSITION_TOLERANCE { - self.right.set(ControlMode::MotionMagic, target_position); - self.left.follow(&self.right, true); + self.right.set(ControlMode::MotionMagic, target_position); + self.left.follow(&self.right, true); + + wait(|| (self.right.get_position() - target_position).abs() < elevator::POSITION_TOLERANCE).await; - sleep(Duration::from_millis(20)).await; - } println!("elevator at target"); } diff --git a/src/subsystems/indexer.rs b/src/subsystems/indexer.rs index 00af9c3..dba0857 100644 --- a/src/subsystems/indexer.rs +++ b/src/subsystems/indexer.rs @@ -7,6 +7,7 @@ use std::rc::Rc; use std::time::Duration; use std::time::Instant; use tokio::time::sleep; +use crate::constants::indexer::INTAKE_SPEED; pub struct Indexer { motor: Talon, @@ -37,7 +38,7 @@ impl Indexer { || indexer.laser_can.get_measurement() == -1 { println!("Dist: {}", indexer.get_laser_dist()); - indexer.set_speed(-0.3); + indexer.set_speed(INTAKE_SPEED); } indexer.motor.stop(); diff --git a/src/subsystems/vision.rs b/src/subsystems/vision.rs index a390499..d49fe3a 100644 --- a/src/subsystems/vision.rs +++ b/src/subsystems/vision.rs @@ -1,8 +1,9 @@ +use std::f64::consts::PI; use frcrs::limelight::{Limelight, LimelightResults}; use std::fs::File; use crate::constants::vision; -use crate::constants::vision::ROBOT_CENTER_TO_LIMELIGHT_UPPER_INCHES; +use crate::constants::vision::{ROBOT_CENTER_TO_LIMELIGHT_UPPER_INCHES, TX_FUDGE_FACTOR}; use frcrs::telemetry::Telemetry; use nalgebra::{Quaternion, Rotation2, Vector2, Vector3}; use serde_json::Value; @@ -20,6 +21,7 @@ use crate::constants::pose_estimation::{ }; use crate::swerve::odometry::PoseEstimate; use std::net::SocketAddr; +use frcrs::alliance_station; use tokio::time::Instant; #[derive(Clone)] @@ -80,12 +82,12 @@ impl Vision { self.drivetrain_angle = dt_angle; self.last_update_time = Instant::now(); - if self.limelight - .update_robot_orientation(-dt_angle.get::()) // Why do we use clockwise positive - .await - .is_err() { - eprintln!("Failed to update robot orientation on limelight") - } + // if self.limelight + // .update_robot_orientation(-dt_angle.get::()) // Why do we use clockwise positive + // .await + // .is_err() { + // eprintln!("Failed to update robot orientation on limelight") + // } if !self.results.Fiducial.is_empty() { if self.results.Fiducial[0].fID != -1 && self.results.Fiducial[0].fID != self.saved_id { @@ -146,7 +148,9 @@ impl Vision { let pitch_to_tag: Angle = Angle::new::( vision::LIMELIGHT_UPPER_PITCH_DEGREES + self.get_ty().get::(), ); - Some(Length::new::(height_diff) / f64::tan(pitch_to_tag.get::())) + let mut dist = Length::new::(height_diff) / f64::tan(pitch_to_tag.get::()); + dist += (dist * TX_FUDGE_FACTOR * self.get_tx().get::().abs()); + Some(dist) } None => None, } @@ -203,7 +207,8 @@ impl Vision { pub fn get_position_from_tag_2d(&self) -> Option> { let id = self.get_id(); let dist = self.get_dist()?; - let drivetrain_angle = Angle::new::(-self.drivetrain_angle.get::()); + + let drivetrain_angle = -self.drivetrain_angle; //println!("dist: {}", dist.get::()); diff --git a/src/swerve/odometry.rs b/src/swerve/odometry.rs index 864697d..7867531 100644 --- a/src/swerve/odometry.rs +++ b/src/swerve/odometry.rs @@ -11,6 +11,7 @@ use uom::si::{ f64::{Angle, Length}, length::meter, }; +use crate::constants::{HALF_FIELD_LENGTH_METERS, HALF_FIELD_WIDTH_METERS}; #[derive(Default, Clone)] pub struct ModuleReturn { @@ -88,6 +89,23 @@ impl Odometry { self.robot_pose_estimate.figure_of_merit = Length::new::(START_POSITION_FOM); } + /// Set position, mirrored for red + pub fn set(&mut self, position: Vector2) { + self.robot_pose_estimate.figure_of_merit = Length::new::(START_POSITION_FOM); + + if alliance_station().red() { + let half_width = Length::new::(HALF_FIELD_WIDTH_METERS); + let half_length = Length::new::(HALF_FIELD_LENGTH_METERS); + + self.robot_pose_estimate.set_absolute(Vector2::new( + half_width - position.x + half_width, + half_length - position.y + half_length + )); + } else { + self.robot_pose_estimate.set_absolute(position); + } + } + pub fn calculate( &mut self, positions: Vec,