Provide 2023 target selector

This should let us do the exact same logic as y2019. This means that the
driver has to control drivetrain velocity directly (not, e.g.,
position), but is a logical first step.

This has an extremely initial tuning that should work sanely.

Does not support going backwards yet.

Change-Id: I29675be6e6d73106563f4abc6e823a1ffcb39946
Signed-off-by: James Kuszmaul <jabukuszmaul@gmail.com>
diff --git a/y2023/control_loops/drivetrain/drivetrain_main.cc b/y2023/control_loops/drivetrain/drivetrain_main.cc
index 32b2455..b13e76f 100644
--- a/y2023/control_loops/drivetrain/drivetrain_main.cc
+++ b/y2023/control_loops/drivetrain/drivetrain_main.cc
@@ -5,6 +5,7 @@
 #include "frc971/control_loops/drivetrain/drivetrain.h"
 #include "frc971/control_loops/drivetrain/localization/puppet_localizer.h"
 #include "y2023/control_loops/drivetrain/drivetrain_base.h"
+#include "y2023/control_loops/drivetrain/target_selector.h"
 
 using ::frc971::control_loops::drivetrain::DrivetrainLoop;
 
@@ -19,7 +20,9 @@
       localizer = std::make_unique<
           ::frc971::control_loops::drivetrain::PuppetLocalizer>(
           &event_loop,
-          ::y2023::control_loops::drivetrain::GetDrivetrainConfig());
+          ::y2023::control_loops::drivetrain::GetDrivetrainConfig(),
+          std::make_unique<::y2023::control_loops::drivetrain::TargetSelector>(
+              &event_loop));
   std::unique_ptr<DrivetrainLoop> drivetrain = std::make_unique<DrivetrainLoop>(
       y2023::control_loops::drivetrain::GetDrivetrainConfig(), &event_loop,
       localizer.get());