Convert imu_values to event loops.
Change-Id: Ia31a022550ef076526e2198e1dbf60570caf6a16
diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index 4e13a40..e7cfae6 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -21,7 +21,6 @@
#include "frc971/wpilib/imu.q.h"
using frc971::sensors::gyro_reading;
-using frc971::imu_values;
using ::aos::monotonic_clock;
namespace chrono = ::std::chrono;
@@ -38,6 +37,8 @@
dt_config_(dt_config),
localizer_control_fetcher_(event_loop->MakeFetcher<LocalizerControl>(
".frc971.control_loops.drivetrain.localizer_control")),
+ imu_values_fetcher_(
+ event_loop->MakeFetcher<::frc971::IMUValues>(".frc971.imu_values")),
localizer_(localizer),
kf_(dt_config_.make_kf_drivetrain_loop()),
dt_openloop_(dt_config_, &kf_),
@@ -134,28 +135,26 @@
status->gear_logging.controller_index = kf_.index();
}
- const bool is_latest_imu_values = ::frc971::imu_values.FetchLatest();
+ const bool is_latest_imu_values = imu_values_fetcher_.Fetch();
if (is_latest_imu_values) {
- const double rate = -::frc971::imu_values->gyro_y;
- const double accel_squared = ::frc971::imu_values->accelerometer_x *
- ::frc971::imu_values->accelerometer_x +
- ::frc971::imu_values->accelerometer_y *
- ::frc971::imu_values->accelerometer_y +
- ::frc971::imu_values->accelerometer_z *
- ::frc971::imu_values->accelerometer_z;
- const double angle = ::std::atan2(::frc971::imu_values->accelerometer_x,
- ::frc971::imu_values->accelerometer_z) +
+ const double rate = -imu_values_fetcher_->gyro_y;
+ const double accel_squared =
+ ::std::pow(imu_values_fetcher_->accelerometer_x, 2.0) +
+ ::std::pow(imu_values_fetcher_->accelerometer_y, 2.0) +
+ ::std::pow(imu_values_fetcher_->accelerometer_z, 2.0);
+ const double angle = ::std::atan2(imu_values_fetcher_->accelerometer_x,
+ imu_values_fetcher_->accelerometer_z) +
0.008;
switch (dt_config_.imu_type) {
case IMUType::IMU_X:
- last_accel_ = -::frc971::imu_values->accelerometer_x;
+ last_accel_ = -imu_values_fetcher_->accelerometer_x;
break;
case IMUType::IMU_FLIPPED_X:
- last_accel_ = ::frc971::imu_values->accelerometer_x;
+ last_accel_ = imu_values_fetcher_->accelerometer_x;
break;
case IMUType::IMU_Y:
- last_accel_ = -::frc971::imu_values->accelerometer_y;
+ last_accel_ = -imu_values_fetcher_->accelerometer_y;
break;
}
@@ -183,29 +182,29 @@
switch (dt_config_.gyro_type) {
case GyroType::IMU_X_GYRO:
if (is_latest_imu_values) {
- LOG_STRUCT(DEBUG, "using", *imu_values.get());
- last_gyro_rate_ = imu_values->gyro_x;
+ LOG_STRUCT(DEBUG, "using", *imu_values_fetcher_.get());
+ last_gyro_rate_ = imu_values_fetcher_->gyro_x;
last_gyro_time_ = monotonic_now;
}
break;
case GyroType::IMU_Y_GYRO:
if (is_latest_imu_values) {
- LOG_STRUCT(DEBUG, "using", *imu_values.get());
- last_gyro_rate_ = imu_values->gyro_y;
+ LOG_STRUCT(DEBUG, "using", *imu_values_fetcher_.get());
+ last_gyro_rate_ = imu_values_fetcher_->gyro_y;
last_gyro_time_ = monotonic_now;
}
break;
case GyroType::IMU_Z_GYRO:
if (is_latest_imu_values) {
- LOG_STRUCT(DEBUG, "using", *imu_values.get());
- last_gyro_rate_ = imu_values->gyro_z;
+ LOG_STRUCT(DEBUG, "using", *imu_values_fetcher_.get());
+ last_gyro_rate_ = imu_values_fetcher_->gyro_z;
last_gyro_time_ = monotonic_now;
}
break;
case GyroType::FLIPPED_IMU_Z_GYRO:
if (is_latest_imu_values) {
- LOG_STRUCT(DEBUG, "using", *imu_values.get());
- last_gyro_rate_ = -imu_values->gyro_z;
+ LOG_STRUCT(DEBUG, "using", *imu_values_fetcher_.get());
+ last_gyro_rate_ = -imu_values_fetcher_->gyro_z;
last_gyro_time_ = monotonic_now;
}
break;