Make AutoNav Autonomouses

Change-Id: I7c036cdf16f3b850f4c91dfb5deb0d133d7f0a50
diff --git a/y2020/actors/auto_splines.h b/y2020/actors/auto_splines.h
index 4690fb8..5f53651 100644
--- a/y2020/actors/auto_splines.h
+++ b/y2020/actors/auto_splines.h
@@ -28,7 +28,19 @@
         spline_red_b_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
             "splines/spline_red_b.json")),
         spline_blue_b_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
-            "splines/spline_blue_b.json")) {}
+            "splines/spline_blue_b.json")),
+        autonav_bounce_1_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
+            "splines/autonav_bounce_1.json")),
+        autonav_bounce_2_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
+            "splines/autonav_bounce_2.json")),
+        autonav_bounce_3_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
+            "splines/autonav_bounce_3.json")),
+        autonav_bounce_4_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
+            "splines/autonav_bounce_4.json")),
+        autonav_barrel_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
+            "splines/autonav_barrel.json")),
+        autonav_slalom_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
+            "splines/autonav_slalom.json")) {}
 
   static flatbuffers::Offset<frc971::MultiSpline> BasicSSpline(
       aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
@@ -61,6 +73,36 @@
     return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_blue_b_,
                                                     builder->fbb());
   }
+  flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce1(
+      aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
+    return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_1_,
+                                                    builder->fbb());
+  }
+  flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce2(
+      aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
+    return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_2_,
+                                                    builder->fbb());
+  }
+  flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce3(
+      aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
+    return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_3_,
+                                                    builder->fbb());
+  }
+  flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce4(
+      aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
+    return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_4_,
+                                                    builder->fbb());
+  }
+  flatbuffers::Offset<frc971::MultiSpline> AutoNavBarrel(
+      aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
+    return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_barrel_,
+                                                    builder->fbb());
+  }
+  flatbuffers::Offset<frc971::MultiSpline> AutoNavSlalom(
+      aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
+    return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_slalom_,
+                                                    builder->fbb());
+  }
 
  private:
   aos::FlatbufferDetachedBuffer<frc971::MultiSpline> test_spline_;
@@ -68,6 +110,12 @@
   aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_blue_a_;
   aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_red_b_;
   aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_blue_b_;
+  aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_1_;
+  aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_2_;
+  aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_3_;
+  aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_4_;
+  aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_barrel_;
+  aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_slalom_;
 };
 
 }  // namespace actors
diff --git a/y2020/actors/autonomous_actor.cc b/y2020/actors/autonomous_actor.cc
index 4223332..d4306ac 100644
--- a/y2020/actors/autonomous_actor.cc
+++ b/y2020/actors/autonomous_actor.cc
@@ -15,6 +15,9 @@
 DEFINE_bool(spline_auto, true, "If true, define a spline autonomous mode");
 DEFINE_bool(galactic_search, false,
             "If true, do the galactic search autonomous");
+DEFINE_bool(bounce, false, "If true, run the AutoNav Bounce autonomous");
+DEFINE_bool(barrel, false, "If true, run the AutoNav Barrel autonomous");
+DEFINE_bool(slalom, false, "If true, run the AutoNav Slalom autonomous");
 
 namespace y2020 {
 namespace actors {
@@ -59,6 +62,12 @@
   }
   if (FLAGS_galactic_search) {
     GalacticSearch();
+  } else if (FLAGS_bounce) {
+    AutoNavBounce();
+  } else if (FLAGS_barrel) {
+    AutoNavBarrel();
+  } else if (FLAGS_slalom) {
+    AutoNavSlalom();
   } else if (FLAGS_spline_auto) {
     SplineAuto();
   } else {
@@ -129,6 +138,93 @@
   }
 }
 
+void AutonomousActor::AutoNavBounce() {
+  SplineHandle spline1 = PlanSpline(
+      [this](aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder
+                 *builder) {
+        flatbuffers::Offset<frc971::MultiSpline> target_spline =
+            auto_splines_.AutoNavBounce1(builder);
+        const frc971::MultiSpline *const spline =
+            flatbuffers::GetTemporaryPointer(*builder->fbb(), target_spline);
+        SendStartingPosition(CHECK_NOTNULL(spline));
+        return target_spline;
+      },
+      SplineDirection::kForward);
+
+  if (!spline1.WaitForPlan()) return;
+  spline1.Start();
+
+  SplineHandle spline2 = PlanSpline(
+      [this](aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder
+                 *builder) { return auto_splines_.AutoNavBounce2(builder); },
+      SplineDirection::kBackward);
+
+  if (!spline1.WaitForSplineDistanceRemaining(0.02)) return;
+
+  if (!spline2.WaitForPlan()) return;
+  spline2.Start();
+
+  SplineHandle spline3 = PlanSpline(
+      [this](aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder
+                 *builder) { return auto_splines_.AutoNavBounce3(builder); },
+      SplineDirection::kForward);
+
+  if (!spline2.WaitForSplineDistanceRemaining(0.02)) return;
+
+  if (!spline3.WaitForPlan()) return;
+  spline3.Start();
+
+  SplineHandle spline4 = PlanSpline(
+      [this](aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder
+                 *builder) { return auto_splines_.AutoNavBounce4(builder); },
+      SplineDirection::kBackward);
+
+  if (!spline3.WaitForSplineDistanceRemaining(0.02)) return;
+
+  if (!spline4.WaitForPlan()) return;
+  spline4.Start();
+
+  if (!spline4.WaitForSplineDistanceRemaining(0.02)) return;
+}
+
+void AutonomousActor::AutoNavBarrel() {
+  SplineHandle spline1 = PlanSpline(
+      [this](aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder
+                 *builder) {
+        flatbuffers::Offset<frc971::MultiSpline> target_spline;
+        target_spline = auto_splines_.AutoNavBarrel(builder);
+        const frc971::MultiSpline *const spline =
+            flatbuffers::GetTemporaryPointer(*builder->fbb(), target_spline);
+        SendStartingPosition(CHECK_NOTNULL(spline));
+        return target_spline;
+      },
+      SplineDirection::kForward);
+
+  if (!spline1.WaitForPlan()) return;
+  spline1.Start();
+
+  if (!spline1.WaitForSplineDistanceRemaining(0.02)) return;
+}
+
+void AutonomousActor::AutoNavSlalom() {
+  SplineHandle spline1 = PlanSpline(
+      [this](aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder
+                 *builder) {
+        flatbuffers::Offset<frc971::MultiSpline> target_spline;
+        target_spline = auto_splines_.AutoNavSlalom(builder);
+        const frc971::MultiSpline *const spline =
+            flatbuffers::GetTemporaryPointer(*builder->fbb(), target_spline);
+        SendStartingPosition(CHECK_NOTNULL(spline));
+        return target_spline;
+      },
+      SplineDirection::kForward);
+
+  if (!spline1.WaitForPlan()) return;
+  spline1.Start();
+
+  if (!spline1.WaitForSplineDistanceRemaining(0.02)) return;
+}
+
 void AutonomousActor::SplineAuto() {
   SplineHandle spline1 = PlanSpline(
       [this](aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder
diff --git a/y2020/actors/autonomous_actor.h b/y2020/actors/autonomous_actor.h
index 12b8e77..79bcce5 100644
--- a/y2020/actors/autonomous_actor.h
+++ b/y2020/actors/autonomous_actor.h
@@ -26,6 +26,9 @@
   void SendStartingPosition(double x, double y, double theta);
   void SendStartingPosition(const frc971::MultiSpline *const spline);
   void GalacticSearch();
+  void AutoNavBounce();
+  void AutoNavBarrel();
+  void AutoNavSlalom();
   bool DriveFwd();
 
   ::aos::Sender<::frc971::control_loops::drivetrain::LocalizerControl>
diff --git a/y2020/actors/splines/autonav_barrel.json b/y2020/actors/splines/autonav_barrel.json
index 6d2a316..f47f657 100644
--- a/y2020/actors/splines/autonav_barrel.json
+++ b/y2020/actors/splines/autonav_barrel.json
@@ -1 +1 @@
-{"spline_count": 4, "spline_x": [-3.5151586543642246, -1.2633519160829738, -2.297498255657327, 1.1754522292564646, 0.25745854323814676, -0.7822290779903016, -1.8219166992187499, -2.9832982556573286, 1.6870655879579743, 3.523102997036638, 2.9234051993534482, 2.3237074016702586, -0.7117256027747842, 3.7385689150053842, 4.347868692753233, 4.316222188173492, 4.284575683593751, 3.6119828966864205, 2.755791372575431, -0.025793453663793216, -3.4092430664062503], "spline_y": [-0.018909511382004314, -0.3377051286368535, -0.43696450700431033, 0.21068866345635773, -1.5383952720905172, -1.337796770608836, -1.137198269127155, 1.0130826693830821, -1.773396164466595, 0.1875150979929956, 1.0503166436557112, 1.9131181893184268, 1.6778100181842674, -2.026659294181035, -1.4836913136449355, -0.8316111479660561, -0.17953098228717668, 0.5816613685344825, 0.013016687432650737, 0.35339494881465516, 0.2666422649515086], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 10.0}]}
\ No newline at end of file
+{"spline_count": 4, "spline_x": [-3.5151586543642246, -1.2633519160829738, -2.297498255657327, 1.1754522292564646, 0.25745854323814676, -0.7822290779903016, -1.8219166992187499, -2.9832982556573286, 1.6870655879579743, 3.523102997036638, 2.9234051993534482, 2.3237074016702586, -0.7117256027747842, 3.7385689150053842, 4.347868692753233, 4.316222188173492, 4.284575683593751, 3.6119828966864205, 2.755791372575431, -0.025793453663793216, -3.4092430664062503], "spline_y": [-0.018909511382004314, -0.3377051286368535, -0.43696450700431033, 0.21068866345635773, -1.5383952720905172, -1.337796770608836, -1.137198269127155, 1.0130826693830821, -1.773396164466595, 0.1875150979929956, 1.0503166436557112, 1.9131181893184268, 1.6778100181842674, -2.026659294181035, -1.4836913136449355, -0.8316111479660561, -0.17953098228717668, 0.5816613685344825, 0.013016687432650737, 0.35339494881465516, 0.2666422649515086], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 2.0}]}
diff --git a/y2020/actors/splines/autonav_bounce_1.json b/y2020/actors/splines/autonav_bounce_1.json
index 37190d3..7a6803b 100644
--- a/y2020/actors/splines/autonav_bounce_1.json
+++ b/y2020/actors/splines/autonav_bounce_1.json
@@ -1 +1 @@
-{"spline_count": 1, "spline_x": [-3.841487603305785, -3.186545454545455, -2.7835041322314047, -2.58198347107438, -2.405652892561984, -2.304892561983471], "spline_y": [0.0503801652892562, 0.1007603305785124, 0.22671074380165293, 0.4786115702479339, 0.8564628099173552, 1.5617851239669422], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 10.0}]}
\ No newline at end of file
+{"spline_count": 1, "spline_x": [-3.841487603305785, -3.186545454545455, -2.7835041322314047, -2.58198347107438, -2.405652892561984, -2.304892561983471], "spline_y": [0.0503801652892562, 0.1007603305785124, 0.22671074380165293, 0.4786115702479339, 0.8564628099173552, 1.5617851239669422], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 2.0}]}
diff --git a/y2020/actors/splines/autonav_bounce_2.json b/y2020/actors/splines/autonav_bounce_2.json
index d20748b..e3046fe 100644
--- a/y2020/actors/splines/autonav_bounce_2.json
+++ b/y2020/actors/splines/autonav_bounce_2.json
@@ -1 +1 @@
-{"spline_count": 1, "spline_x": [-2.304892561983471, -2.1789421487603304, -1.6751404958677685, -0.3904462809917355, 0.08816528925619875, -0.012595041322314211], "spline_y": [1.5617851239669422, 0.251900826446281, -1.2846942148760332, -2.6701487603305787, -1.4106446280991736, 1.5114049586776859], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 10.0}]}
\ No newline at end of file
+{"spline_count": 1, "spline_x": [-2.304892561983471, -2.1789421487603304, -1.6751404958677685, -0.3904462809917355, 0.08816528925619875, -0.012595041322314211], "spline_y": [1.5617851239669422, 0.251900826446281, -1.2846942148760332, -2.6701487603305787, -1.4106446280991736, 1.5114049586776859], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 2.0}]}
diff --git a/y2020/actors/splines/autonav_bounce_3.json b/y2020/actors/splines/autonav_bounce_3.json
index 50bf312..abbd8ab 100644
--- a/y2020/actors/splines/autonav_bounce_3.json
+++ b/y2020/actors/splines/autonav_bounce_3.json
@@ -1 +1 @@
-{"spline_count": 1, "spline_x": [0.012595041322314211, -0.11335537190082647, -0.18892561983471026, 2.3804628099173564, 2.3804628099173564, 2.304892561983471], "spline_y": [1.5869752066115703, -1.234314049586777, -2.241917355371901, -2.4182479338842975, -1.209123966942149, 1.536595041322314], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 10.0}]}
\ No newline at end of file
+{"spline_count": 1, "spline_x": [0.012595041322314211, -0.11335537190082647, -0.18892561983471026, 2.3804628099173564, 2.3804628099173564, 2.304892561983471], "spline_y": [1.5869752066115703, -1.234314049586777, -2.241917355371901, -2.4182479338842975, -1.209123966942149, 1.536595041322314], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 2.0}]}
diff --git a/y2020/actors/splines/autonav_bounce_4.json b/y2020/actors/splines/autonav_bounce_4.json
index 448abde..c1045a6 100644
--- a/y2020/actors/splines/autonav_bounce_4.json
+++ b/y2020/actors/splines/autonav_bounce_4.json
@@ -1 +1 @@
-{"spline_count": 1, "spline_x": [2.2545123966942158, 2.2545123966942158, 2.4056528925619842, 2.5567933884297522, 3.010214876033058, 3.765917355371901], "spline_y": [1.536595041322314, 0.9572231404958678, 0.6297520661157024, 0.2015206611570248, 0.0251900826446281, 0.0503801652892562], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 10.0}]}
\ No newline at end of file
+{"spline_count": 1, "spline_x": [2.2545123966942158, 2.2545123966942158, 2.4056528925619842, 2.5567933884297522, 3.010214876033058, 3.765917355371901], "spline_y": [1.536595041322314, 0.9572231404958678, 0.6297520661157024, 0.2015206611570248, 0.0251900826446281, 0.0503801652892562], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 2.0}]}
diff --git a/y2020/actors/splines/autonav_slalom.json b/y2020/actors/splines/autonav_slalom.json
index 49ce11d..d1b6483 100644
--- a/y2020/actors/splines/autonav_slalom.json
+++ b/y2020/actors/splines/autonav_slalom.json
@@ -1 +1 @@
-{"spline_count": 4, "spline_x": [-2.83922621565194, -1.7877183054956893, -2.4347485789331897, 2.727561499865301, 2.2675927835398713, 2.4492272460937508, 2.6308617086476302, 3.454099350080819, 4.289633273841593, 3.7436675612877157, 3.1282709624191813, 2.512874363550647, 1.8280468783674575, -0.3996907596982755, -1.1217406721443965, -1.6508708445581897, -2.180001016971983, -2.516211449353448, -2.5429838328394396, -2.9055060513200424, -3.3566797952586205], "spline_y": [-1.331782061557112, -0.236435287580819, -0.006246290746228449, 0.3664071457435343, -0.39485641163793095, -0.8548764480064655, -1.314896484375, -1.4736729997306037, -1.1858400474811426, -0.044964055765086164, -0.2042390170393319, -0.3635139783135776, -1.8229398925781257, -1.3602454404633617, -1.3556067500673492, -1.2883043625404096, -1.22100197501347, -1.0910358903556032, -0.785399373653017, -0.41416686085668103, -0.06881761179956897], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 10.0}]}
\ No newline at end of file
+{"spline_count": 4, "spline_x": [-2.83922621565194, -1.7877183054956893, -2.4347485789331897, 2.727561499865301, 2.2675927835398713, 2.4492272460937508, 2.6308617086476302, 3.454099350080819, 4.289633273841593, 3.7436675612877157, 3.1282709624191813, 2.512874363550647, 1.8280468783674575, -0.3996907596982755, -1.1217406721443965, -1.6508708445581897, -2.180001016971983, -2.516211449353448, -2.5429838328394396, -2.9055060513200424, -3.3566797952586205], "spline_y": [-1.331782061557112, -0.236435287580819, -0.006246290746228449, 0.3664071457435343, -0.39485641163793095, -0.8548764480064655, -1.314896484375, -1.4736729997306037, -1.1858400474811426, -0.044964055765086164, -0.2042390170393319, -0.3635139783135776, -1.8229398925781257, -1.3602454404633617, -1.3556067500673492, -1.2883043625404096, -1.22100197501347, -1.0910358903556032, -0.785399373653017, -0.41416686085668103, -0.06881761179956897], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 2.0}]}
diff --git a/y2020/actors/splines/spline_blue_a.json b/y2020/actors/splines/spline_blue_a.json
index 28c90f4..063a27b 100644
--- a/y2020/actors/splines/spline_blue_a.json
+++ b/y2020/actors/splines/spline_blue_a.json
@@ -1 +1 @@
-{"spline_count": 3, "spline_x": [-3.8589564582257236, -2.706301079868285, -1.8662093637009298, -1.3063849916064052, -0.4873721348786154, -0.00625139624225228, 0.4748693423941108, 0.6180979629390473, -0.009563129519629676, 0.15372038836518587, 0.6260651875645665, 1.0984099867639472, 1.879816067277893, 2.9980503292871896, 3.5245728709323347, 4.3991472026730385], "spline_y": [-1.6780186596074382, -1.8082232817342458, -1.892411108600207, -1.749871279377583, -1.9347886872094529, -1.488971578802944, -1.0431544703964353, 0.03339715424845213, -0.09653840876807873, 0.6210084137719525, 0.8305055244382749, 1.0400026351045972, 0.7414500338972108, -0.9412994536092459, -1.2421690381262913, -1.7536811563791324], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 4.0}]}
+{"spline_count": 3, "spline_x": [-3.8589564582257236, -2.706301079868285, -1.8662093637009298, -1.3063849916064052, -0.4873721348786154, -0.00625139624225228, 0.4748693423941108, 0.6180979629390473, -0.009563129519629676, 0.15372038836518587, 0.6260651875645665, 1.0984099867639472, 1.879816067277893, 2.9980503292871896, 3.5245728709323347, 4.3991472026730385], "spline_y": [-1.6780186596074382, -1.8082232817342458, -1.892411108600207, -1.749871279377583, -1.9347886872094529, -1.488971578802944, -1.0431544703964353, 0.03339715424845213, -0.09653840876807873, 0.6210084137719525, 0.8305055244382749, 1.0400026351045972, 0.7414500338972108, -0.9412994536092459, -1.2421690381262913, -1.7536811563791324], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 2.0}]}
diff --git a/y2020/actors/splines/spline_blue_b.json b/y2020/actors/splines/spline_blue_b.json
index 7ef0494..fb78187 100644
--- a/y2020/actors/splines/spline_blue_b.json
+++ b/y2020/actors/splines/spline_blue_b.json
@@ -1 +1 @@
-{"spline_count": 3, "spline_x": [-4.150494304057981, -3.3986216889688787, -2.2755236069860536, -0.7710065615315085, -0.3059309707515497, 0.07081943278667355, 0.4475698363248968, 0.7359950526213844, 0.6477528893336757, 0.9985598447184914, 1.5433015318310954, 2.0880432189436995, 2.826719637784092, 2.54224882166839, 3.098134168388431, 4.279168364217459], "spline_y": [-1.8370325937822833, -1.7225587047230115, -1.4951960691341684, -1.2591343681398501, -1.052224068633781, -0.746549088407154, -0.44087410818052697, -0.03643444723334266, 0.4353676213035902, 0.7416545188210228, 0.7718694725351886, 0.8020844262493543, 0.5562274361602532, -0.9685113232825411, -0.8008121610278923, -1.6595312237700157], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 4.0}]}
+{"spline_count": 3, "spline_x": [-4.150494304057981, -3.3986216889688787, -2.2755236069860536, -0.7710065615315085, -0.3059309707515497, 0.07081943278667355, 0.4475698363248968, 0.7359950526213844, 0.6477528893336757, 0.9985598447184914, 1.5433015318310954, 2.0880432189436995, 2.826719637784092, 2.54224882166839, 3.098134168388431, 4.279168364217459], "spline_y": [-1.8370325937822833, -1.7225587047230115, -1.4951960691341684, -1.2591343681398501, -1.052224068633781, -0.746549088407154, -0.44087410818052697, -0.03643444723334266, 0.4353676213035902, 0.7416545188210228, 0.7718694725351886, 0.8020844262493543, 0.5562274361602532, -0.9685113232825411, -0.8008121610278923, -1.6595312237700157], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 2.0}]}
diff --git a/y2020/actors/splines/spline_red_a.json b/y2020/actors/splines/spline_red_a.json
index 5de7e30..eae42c9 100644
--- a/y2020/actors/splines/spline_red_a.json
+++ b/y2020/actors/splines/spline_red_a.json
@@ -1 +1 @@
-{"spline_count": 3, "spline_x": [-3.5430995125258264, -2.833856622869318, -2.2671351126678716, -1.5517361505681804, -1.0942218895273754, -0.7058266076962806, -0.3174313258651858, 0.0018449767561987526, -0.7213536245803214, -0.46077833241864685, 0.08654170971074387, 0.6338617518401346, 1.4679265439372415, 1.8681219896048553, 2.4377923876549588, 4.128750484245868], "spline_y": [1.345144878292872, 0.563397477079029, -0.10274521807205578, -0.6578218499806299, -0.8755060450025827, -0.6711287448347107, -0.4667514446668389, 0.15968735069085743, 0.5673580271823342, 1.1876484375, 1.4852908501743287, 1.7829332628486574, 1.7579276778796489, 1.8390174812758264, 1.9139266125387395, 1.8437913586324897], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 4.0}]}
+{"spline_count": 3, "spline_x": [-3.5430995125258264, -2.833856622869318, -2.2671351126678716, -1.5517361505681804, -1.0942218895273754, -0.7058266076962806, -0.3174313258651858, 0.0018449767561987526, -0.7213536245803214, -0.46077833241864685, 0.08654170971074387, 0.6338617518401346, 1.4679265439372415, 1.8681219896048553, 2.4377923876549588, 4.128750484245868], "spline_y": [1.345144878292872, 0.563397477079029, -0.10274521807205578, -0.6578218499806299, -0.8755060450025827, -0.6711287448347107, -0.4667514446668389, 0.15968735069085743, 0.5673580271823342, 1.1876484375, 1.4852908501743287, 1.7829332628486574, 1.7579276778796489, 1.8390174812758264, 1.9139266125387395, 1.8437913586324897], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3.0}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2.0}, {"constraint_type": "VOLTAGE", "value": 2.0}]}
diff --git a/y2020/actors/splines/spline_red_b.json b/y2020/actors/splines/spline_red_b.json
index ab5ec8f..ace02fe 100644
--- a/y2020/actors/splines/spline_red_b.json
+++ b/y2020/actors/splines/spline_red_b.json
@@ -1 +1 @@
-{"spline_count": 2, "spline_x": [-3.392645926339286, -2.154575892857143, -1.9643174545865811, -1.8674530715821605, -1.4586490399672885, -0.7749665868973982, -0.09128413382750789, 0.8672767406974007, 0.3081139946408683, 0.39452214556653653, 4.533722882231405], "spline_y": [1.5839347098214285, 0.8960059988839286, 0.540389038357809, -0.3293477472090389, -0.755995497807628, -0.7561097332951151, -0.7562239687826022, -0.3298046891589874, 1.1545971581813754, 1.2564632146958519, 1.674700392037384], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2}, {"constraint_type": "VOLTAGE", "value": 4.0}]}
+{"spline_count": 2, "spline_x": [-3.392645926339286, -2.154575892857143, -1.9643174545865811, -1.8674530715821605, -1.4586490399672885, -0.7749665868973982, -0.09128413382750789, 0.8672767406974007, 0.3081139946408683, 0.39452214556653653, 4.533722882231405], "spline_y": [1.5839347098214285, 0.8960059988839286, 0.540389038357809, -0.3293477472090389, -0.755995497807628, -0.7561097332951151, -0.7562239687826022, -0.3298046891589874, 1.1545971581813754, 1.2564632146958519, 1.674700392037384], "constraints": [{"constraint_type": "LONGITUDINAL_ACCELERATION", "value": 3}, {"constraint_type": "LATERAL_ACCELERATION", "value": 2}, {"constraint_type": "VOLTAGE", "value": 2.0}]}