17 Differential(std::vector<std::unique_ptr<BaseController>> leftMotors, std::vector<std::unique_ptr<BaseController>> rightMotors,
18 std::unique_ptr<gyro::Gyro> gyro, units::meter_t trackWidth, units::meter_t wheelDiameter);
28 frc::DifferentialDriveWheelPositions GetWheelPositions()
const;
29 frc::DifferentialDriveWheelSpeeds GetWheelSpeeds()
const;
34 void ResetOdometry(frc::Pose2d pose);
37 void StartOdomThread(units::hertz_t freq) { odomThread.StartPeriodic(1 / freq); }
39 virtual void UpdateOdometry();
41 std::vector<std::unique_ptr<BaseController>> leftMotors;
42 std::vector<std::unique_ptr<BaseController>> rightMotors;
43 std::unique_ptr<gyro::Gyro> gyro;
46 decltype(1_m / 1_tr) wheelConversion;
47 frc::DifferentialDriveKinematics kinematics;
48 frc::Notifier odomThread{[
this] { UpdateOdometry(); }};
50 GetWheelPositions().right, frc::Pose2d{}};
54 GetWheelPositions().right, frc::Pose2d{}};