Move camera.h to the frc971/ folder

The code for dealing with camera transformations is reasonably
year-generic, so move it into frc971/.

Change-Id: I7751ccd01c3e45093c8e548d65e0087b615f0ae0
diff --git a/frc971/control_loops/drivetrain/BUILD b/frc971/control_loops/drivetrain/BUILD
index a120c0c..5350240 100644
--- a/frc971/control_loops/drivetrain/BUILD
+++ b/frc971/control_loops/drivetrain/BUILD
@@ -678,3 +678,22 @@
         "@org_tuxfamily_eigen//:eigen",
     ],
 )
+
+cc_library(
+    name = "camera",
+    srcs = ["camera.h"],
+    visibility = ["//visibility:public"],
+    deps = [
+        "//aos/containers:sized_array",
+        "//frc971/control_loops:pose",
+    ],
+)
+
+cc_test(
+    name = "camera_test",
+    srcs = ["camera_test.cc"],
+    deps = [
+        ":camera",
+        "//aos/testing:googletest",
+    ],
+)
diff --git a/y2019/control_loops/drivetrain/camera.h b/frc971/control_loops/drivetrain/camera.h
similarity index 99%
rename from y2019/control_loops/drivetrain/camera.h
rename to frc971/control_loops/drivetrain/camera.h
index e21bf87..02e7e65 100644
--- a/y2019/control_loops/drivetrain/camera.h
+++ b/frc971/control_loops/drivetrain/camera.h
@@ -6,7 +6,7 @@
 #include "aos/containers/sized_array.h"
 #include "frc971/control_loops/pose.h"
 
-namespace y2019 {
+namespace frc971 {
 namespace control_loops {
 
 // Represents a target on the field. Currently just consists of a pose and a
@@ -369,6 +369,6 @@
 }
 
 }  // namespace control_loops
-}  // namespace y2019
+}  // namespace frc971
 
 #endif  // Y2019_CONTROL_LOOPS_DRIVETRAIN_CAMERA_H_
diff --git a/y2019/control_loops/drivetrain/camera_test.cc b/frc971/control_loops/drivetrain/camera_test.cc
similarity index 98%
rename from y2019/control_loops/drivetrain/camera_test.cc
rename to frc971/control_loops/drivetrain/camera_test.cc
index f9b6e8d..c830038 100644
--- a/y2019/control_loops/drivetrain/camera_test.cc
+++ b/frc971/control_loops/drivetrain/camera_test.cc
@@ -1,8 +1,8 @@
-#include "y2019/control_loops/drivetrain/camera.h"
+#include "frc971/control_loops/drivetrain/camera.h"
 
 #include "gtest/gtest.h"
 
-namespace y2019 {
+namespace frc971 {
 namespace control_loops {
 namespace testing {
 
@@ -210,4 +210,4 @@
 
 }  // namespace testing
 }  // namespace control_loops
-}  // namespace y2019
+}  // namespace frc971
diff --git a/y2019/BUILD b/y2019/BUILD
index 328c93f..e286fc7 100644
--- a/y2019/BUILD
+++ b/y2019/BUILD
@@ -36,7 +36,7 @@
         "//frc971:constants",
         "//frc971/control_loops:pose",
         "//frc971/control_loops:static_zeroing_single_dof_profiled_subsystem",
-        "//y2019/control_loops/drivetrain:camera",
+        "//frc971/control_loops/drivetrain:camera",
         "//y2019/control_loops/drivetrain:polydrivetrain_plants",
         "//y2019/control_loops/superstructure/elevator:elevator_plants",
         "//y2019/control_loops/superstructure/intake:intake_plants",
diff --git a/y2019/constants.h b/y2019/constants.h
index 5b00847..d1d0c7c 100644
--- a/y2019/constants.h
+++ b/y2019/constants.h
@@ -6,13 +6,13 @@
 #include <stdint.h>
 
 #include "frc971/constants.h"
+#include "frc971/control_loops/drivetrain/camera.h"
 #include "frc971/control_loops/static_zeroing_single_dof_profiled_subsystem.h"
 #include "y2019/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
 #include "y2019/control_loops/superstructure/elevator/elevator_plant.h"
 #include "y2019/control_loops/superstructure/intake/intake_plant.h"
 #include "y2019/control_loops/superstructure/stilts/stilts_plant.h"
 #include "y2019/control_loops/superstructure/wrist/wrist_plant.h"
-#include "y2019/control_loops/drivetrain/camera.h"
 #include "frc971/control_loops/pose.h"
 
 namespace y2019 {
@@ -32,7 +32,7 @@
 class Field {
  public:
   typedef ::frc971::control_loops::TypedPose<double> Pose;
-  typedef ::y2019::control_loops::TypedTarget<double> Target;
+  typedef ::frc971::control_loops::TypedTarget<double> Target;
   typedef ::frc971::control_loops::TypedLineSegment<double> Obstacle;
 
   static constexpr size_t kNumTargets = 32;
@@ -201,8 +201,9 @@
 
   static constexpr size_t kNumCameras = 5;
   ::std::array<CameraCalibration, kNumCameras> cameras;
-  control_loops::TypedCamera<Field::kNumTargets, Field::kNumObstacles,
-                             double>::NoiseParameters camera_noise_parameters;
+  frc971::control_loops::TypedCamera<Field::kNumTargets, Field::kNumObstacles,
+                                     double>::NoiseParameters
+      camera_noise_parameters;
 };
 
 // Creates (once) a Values instance for ::aos::network::GetTeamNumber() and
diff --git a/y2019/control_loops/drivetrain/BUILD b/y2019/control_loops/drivetrain/BUILD
index bc76d7a..aabd3e5 100644
--- a/y2019/control_loops/drivetrain/BUILD
+++ b/y2019/control_loops/drivetrain/BUILD
@@ -100,30 +100,11 @@
 )
 
 cc_library(
-    name = "camera",
-    srcs = ["camera.h"],
-    visibility = ["//y2019:__pkg__"],
-    deps = [
-        "//aos/containers:sized_array",
-        "//frc971/control_loops:pose",
-    ],
-)
-
-cc_test(
-    name = "camera_test",
-    srcs = ["camera_test.cc"],
-    deps = [
-        ":camera",
-        "//aos/testing:googletest",
-    ],
-)
-
-cc_library(
     name = "localizer",
     hdrs = ["localizer.h"],
     deps = [
-        ":camera",
         "//frc971/control_loops:pose",
+        "//frc971/control_loops/drivetrain:camera",
         "//frc971/control_loops/drivetrain:hybrid_ekf",
     ],
 )
@@ -133,9 +114,9 @@
     srcs = ["target_selector.cc"],
     hdrs = ["target_selector.h"],
     deps = [
-        ":camera",
         ":target_selector_fbs",
         "//frc971/control_loops:pose",
+        "//frc971/control_loops/drivetrain:camera",
         "//frc971/control_loops/drivetrain:localizer",
         "//y2019:constants",
         "//y2019/control_loops/superstructure:superstructure_goal_fbs",
diff --git a/y2019/control_loops/drivetrain/localizer.h b/y2019/control_loops/drivetrain/localizer.h
index d716535..1575efb 100644
--- a/y2019/control_loops/drivetrain/localizer.h
+++ b/y2019/control_loops/drivetrain/localizer.h
@@ -5,7 +5,7 @@
 #include <memory>
 
 #include "frc971/control_loops/pose.h"
-#include "y2019/control_loops/drivetrain/camera.h"
+#include "frc971/control_loops/drivetrain/camera.h"
 #include "frc971/control_loops/drivetrain/hybrid_ekf.h"
 
 namespace y2019 {
@@ -16,9 +16,11 @@
 class TypedLocalizer
     : public ::frc971::control_loops::drivetrain::HybridEkf<Scalar> {
  public:
-  typedef TypedCamera<num_targets, num_obstacles, Scalar> Camera;
+  typedef frc971::control_loops::TypedCamera<num_targets, num_obstacles, Scalar>
+      Camera;
   typedef typename Camera::TargetView TargetView;
   typedef typename Camera::Pose Pose;
+  typedef typename frc971::control_loops::Target Target;
   typedef ::frc971::control_loops::drivetrain::HybridEkf<Scalar> HybridEkf;
   typedef typename HybridEkf::State State;
   typedef typename HybridEkf::StateSquare StateSquare;
diff --git a/y2019/control_loops/drivetrain/localizer_test.cc b/y2019/control_loops/drivetrain/localizer_test.cc
index 319065e..aa7f22f 100644
--- a/y2019/control_loops/drivetrain/localizer_test.cc
+++ b/y2019/control_loops/drivetrain/localizer_test.cc
@@ -30,6 +30,7 @@
                        kNumTargetsPerFrame, double>
     TestLocalizer;
 typedef typename TestLocalizer::Camera TestCamera;
+typedef typename TestLocalizer::Target Target;
 typedef typename TestCamera::Pose Pose;
 typedef typename TestCamera::LineSegment Obstacle;
 
diff --git a/y2019/control_loops/drivetrain/target_selector.h b/y2019/control_loops/drivetrain/target_selector.h
index 4ab65ef..fdc183f 100644
--- a/y2019/control_loops/drivetrain/target_selector.h
+++ b/y2019/control_loops/drivetrain/target_selector.h
@@ -4,7 +4,7 @@
 #include "frc971/control_loops/pose.h"
 #include "frc971/control_loops/drivetrain/localizer.h"
 #include "y2019/constants.h"
-#include "y2019/control_loops/drivetrain/camera.h"
+#include "frc971/control_loops/drivetrain/camera.h"
 #include "y2019/control_loops/drivetrain/target_selector_generated.h"
 #include "y2019/control_loops/superstructure/superstructure_goal_generated.h"
 
@@ -24,10 +24,12 @@
     : public ::frc971::control_loops::drivetrain::TargetSelectorInterface {
  public:
   typedef ::frc971::control_loops::TypedPose<double> Pose;
+  typedef frc971::control_loops::Target Target;
   // For the virtual camera that we use to identify targets, ignore all
   // obstacles and just assume that we have perfect field of view.
-  typedef TypedCamera<y2019::constants::Field::kNumTargets,
-                      /*num_obstacles=*/0, double> FakeCamera;
+  typedef frc971::control_loops::TypedCamera<
+      y2019::constants::Field::kNumTargets,
+      /*num_obstacles=*/0, double> FakeCamera;
 
   TargetSelector(::aos::EventLoop *event_loop);