38 const wpi::math::Rotation3d& gyroAttitude) {
42 const wpi::units::radian_t zero{0};
43 const wpi::units::radian_t quarterTurn{std::numbers::pi / 2};
44 const wpi::math::Rotation3d gyroToRobot =
45 axis ==
GyroAxis::ROLL ? wpi::math::Rotation3d{zero, -quarterTurn, zero}
46 : wpi::math::Rotation3d{quarterTurn, zero, zero};
47 const auto q = gyroToRobot.GetQuaternion();
48 return wpi::math::Rotation3d{q * gyroAttitude.GetQuaternion() * q.Inverse()};