Updated wpilib interface and constants.
Updated files for robot to handle drivetrain.
Change-Id: I6743c58b52027a4114b14032972a4f6e29a25cb3
diff --git a/y2019/BUILD b/y2019/BUILD
index 7c987f6..2b9d39b 100644
--- a/y2019/BUILD
+++ b/y2019/BUILD
@@ -13,6 +13,7 @@
"//aos/mutex",
"//aos/network:team_number",
"//frc971:constants",
+ "//y2019/control_loops/drivetrain:polydrivetrain_plants",
],
)
@@ -23,6 +24,7 @@
],
restricted_to = ["//tools:roborio"],
deps = [
+ ":constants",
"//aos:init",
"//aos:make_unique",
"//aos:math",
diff --git a/y2019/constants.h b/y2019/constants.h
index e4dda86..e7c178b 100644
--- a/y2019/constants.h
+++ b/y2019/constants.h
@@ -5,6 +5,7 @@
#include <math.h>
#include "frc971/constants.h"
+#include "y2019/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
namespace y2019 {
namespace constants {
@@ -21,6 +22,20 @@
struct Values {
static const int kZeroingSampleSize = 200;
+
+ static constexpr double kDrivetrainCyclesPerRevolution() { return 512.0; }
+ static constexpr double kDrivetrainEncoderCountsPerRevolution() {
+ return kDrivetrainCyclesPerRevolution() * 4;
+ }
+ static constexpr double kDrivetrainEncoderRatio() {
+ return (52.0 / 24.0);
+ }
+ static constexpr double kMaxDrivetrainEncoderPulsesPerSecond() {
+ return control_loops::drivetrain::kFreeSpeed / (2.0 * M_PI) *
+ control_loops::drivetrain::kHighOutputRatio /
+ constants::Values::kDrivetrainEncoderRatio() *
+ kDrivetrainEncoderCountsPerRevolution();
+ }
};
// Creates (once) a Values instance for ::aos::network::GetTeamNumber() and
diff --git a/y2019/wpilib_interface.cc b/y2019/wpilib_interface.cc
index 9395489..ff5839f 100644
--- a/y2019/wpilib_interface.cc
+++ b/y2019/wpilib_interface.cc
@@ -40,12 +40,14 @@
#include "frc971/wpilib/sensor_reader.h"
#include "frc971/wpilib/wpilib_interface.h"
#include "frc971/wpilib/wpilib_robot_base.h"
+#include "y2019/constants.h"
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
using ::frc971::control_loops::drivetrain_queue;
+using ::y2019::constants::Values;
using ::aos::monotonic_clock;
namespace chrono = ::std::chrono;
using aos::make_unique;
@@ -73,18 +75,18 @@
}
double drivetrain_translate(int32_t in) {
- return ((static_cast<double>(in)
- /* / Values::kDrivetrainEncoderCountsPerRevolution()) *
+ return ((static_cast<double>(in) /
+ Values::kDrivetrainEncoderCountsPerRevolution()) *
(2.0 * M_PI)) *
Values::kDrivetrainEncoderRatio() *
- control_loops::drivetrain::kWheelRadius*/));
+ control_loops::drivetrain::kWheelRadius;
}
double drivetrain_velocity_translate(double in) {
- return (((1.0 / in) /* / Values::kDrivetrainCyclesPerRevolution()) *
+ return (((1.0 / in) / Values::kDrivetrainCyclesPerRevolution()) *
(2.0 * M_PI)) *
Values::kDrivetrainEncoderRatio() *
- control_loops::drivetrain::kWheelRadius*/));
+ control_loops::drivetrain::kWheelRadius;
}
constexpr double kMaxFastEncoderPulsesPerSecond =