Use ADIS16448 in y2020
This updates the IMU transform to be correct for the yaw axis, but may
have the X/Y axes/signs wrong if we care about accelerometer or
roll/pitch data.
Change-Id: I73d86c8be18f447bb35fc13666ccfdda29fef257
Signed-off-by: James Kuszmaul <jabukuszmaul@gmail.com>
diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index 2cc9f35..928d418 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -142,21 +142,23 @@
imu_zeroer_.ProcessMeasurements();
got_imu_reading = true;
CHECK(imu_values_fetcher_->has_readings());
- const IMUValues *value = imu_values_fetcher_->readings()->Get(
- imu_values_fetcher_->readings()->size() - 1);
- switch (dt_config_.imu_type) {
- case IMUType::IMU_X:
- last_accel_ = -value->accelerometer_x();
- break;
- case IMUType::IMU_FLIPPED_X:
- last_accel_ = value->accelerometer_x();
- break;
- case IMUType::IMU_Y:
- last_accel_ = -value->accelerometer_y();
- break;
- case IMUType::IMU_Z:
- last_accel_ = value->accelerometer_z();
- break;
+ if (imu_values_fetcher_->readings()->size() > 0) {
+ const IMUValues *value = imu_values_fetcher_->readings()->Get(
+ imu_values_fetcher_->readings()->size() - 1);
+ switch (dt_config_.imu_type) {
+ case IMUType::IMU_X:
+ last_accel_ = -value->accelerometer_x();
+ break;
+ case IMUType::IMU_FLIPPED_X:
+ last_accel_ = value->accelerometer_x();
+ break;
+ case IMUType::IMU_Y:
+ last_accel_ = -value->accelerometer_y();
+ break;
+ case IMUType::IMU_Z:
+ last_accel_ = value->accelerometer_z();
+ break;
+ }
}
}