Add code for swerve drivebase experiments

Signed-off-by: Maxwell Henderson <maxwell.henderson@mailbox.org>
Change-Id: I24701125e0826d46845cc85abdae8dff52b7c678
diff --git a/y2023_bot4/constants.h b/y2023_bot4/constants.h
new file mode 100644
index 0000000..676ae06
--- /dev/null
+++ b/y2023_bot4/constants.h
@@ -0,0 +1,55 @@
+#ifndef Y2023_BOT4_CONSTANTS_H
+#define Y2023_BOT4_CONSTANTS_H
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+#include <cstdint>
+
+#include "frc971/constants.h"
+
+namespace y2023_bot4 {
+namespace constants {
+struct Values {
+  static const int kZeroingSampleSize = 200;
+
+  static const int kDrivetrainWriterPriority = 35;
+  static const int kDrivetrainTxPriority = 36;
+  static const int kDrivetrainRxPriority = 36;
+
+  // TODO (maxwell): Make this the real value;
+  static constexpr double kDrivetrainCyclesPerRevolution() { return 512.0; }
+  static constexpr double kDrivetrainEncoderRatio() { return 1.0; }
+
+  static constexpr double kDrivetrainStatorCurrentLimit() { return 35.0; }
+  static constexpr double kDrivetrainSupplyCurrentLimit() { return 60.0; }
+
+  // TODO (maxwell): Make this the real value
+  static constexpr double kFollowerWheelCountsPerRevolution() { return 512.0; }
+  static constexpr double kFollowerWheelEncoderRatio() { return 1.0; }
+  static constexpr double kFollowerWheelRadius() { return 3.25 / 2 * 0.0254; }
+  static constexpr double kDrivetrainEncoderCountsPerRevolution() {
+    return 2048.0;
+  }
+
+  static constexpr double kMaxDrivetrainEncoderPulsesPerSecond() {
+    return 1200000;
+  }
+
+  frc971::constants::ContinuousAbsoluteEncoderZeroingConstants
+      front_left_zeroing_constants,
+      front_right_zeroing_constants, back_left_zeroing_constants,
+      back_right_zeroing_constants;
+};
+// Creates and returns a Values instance for the constants.
+// Should be called before realtime because this allocates memory.
+// Only the first call to either of these will be used.
+Values MakeValues(uint16_t team);
+
+// Calls MakeValues with aos::network::GetTeamNumber()
+Values MakeValues();
+}  // namespace constants
+}  // namespace y2023_bot4
+
+#endif  // Y2023_BOT4_CONSTANTS_H