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);