16 Differential(std::vector<std::unique_ptr<BaseController>> leftMotors, std::vector<std::unique_ptr<BaseController>> rightMotors,
17 std::unique_ptr<gyro::Gyro> gyro, units::meter_t trackWidth, units::meter_t wheelDiameter);
27 frc::DifferentialDriveWheelPositions GetWheelPositions()
const;
28 frc::DifferentialDriveWheelSpeeds GetWheelSpeeds()
const;
33 void ResetOdometry(frc::Pose2d pose);
35 void StartOdomThread(units::hertz_t freq) { odomThread.StartPeriodic(1 / freq); }
38 virtual void UpdateOdometry();
40 std::vector<std::unique_ptr<BaseController>> leftMotors;
41 std::vector<std::unique_ptr<BaseController>> rightMotors;
42 std::unique_ptr<gyro::Gyro> gyro;
45 decltype(1_m / 1_tr) wheelConversion;
46 frc::DifferentialDriveKinematics kinematics;
47 frc::Notifier odomThread{[
this] { UpdateOdometry(); }};
49 GetWheelPositions().right, frc::Pose2d{}};
53 GetWheelPositions().right, frc::Pose2d{}};