20 double m_maxWheelSpeed{0.0};
56 [[nodiscard]]
double getWheelRadius()
const override {
return m_wheelRadius; }
59 [[nodiscard]] std::vector<hal::motor::IMotor*>
getMotors()
override;
65 int power_percent)
override;
78 if (m_maxWheelSpeed <= 0.0)
79 return std::numeric_limits<double>::infinity();
80 const double max_wheel_mps = m_maxWheelSpeed * m_wheelRadius;
81 return max_wheel_mps / (radius_m + 0.5 * m_wheelbase);
foundation::ChassisVelocity estimateState() const override
void applyPowerCommand(const foundation::ChassisVelocity &direction, int power_percent) override
double maxYawRateForArcRadius(double radius_m, bool) const override
MotorCommands applyCommand(const foundation::ChassisVelocity &cmd, double dt) override
DifferentialKinematics(hal::motor::IMotor *left_motor, hal::motor::IMotor *right_motor, double wheelbase, double wheelRadius)
~DifferentialKinematics() override=default
std::size_t wheelCount() const override
bool supportsLateralMotion() const override
double getWheelRadius() const override
Get the wheel radius used by this kinematics model.
StmOdometryConfig getStmOdometryConfig() override
std::vector< hal::motor::IMotor * > getMotors() override
void resetEncoders() override
void setMaxWheelSpeed(double max_wheel_speed)
double getMaxWheelSpeed() const
Interface for motor abstraction.