39 [[nodiscard]]
virtual std::size_t
wheelCount()
const = 0;
57 return std::numeric_limits<double>::infinity();
110 [[nodiscard]]
virtual std::vector<hal::motor::IMotor*>
getMotors() = 0;
151 return {1.0, 1.0, 1.0};
175 int power_percent) = 0;
std::array< std::array< float, 4 >, 3 > inv_matrix
std::array< std::array< float, 3 >, 4 > fwd_matrix
std::array< float, 4 > ticks_to_rad
std::array< float, 4 > bemf_offset
virtual ~IKinematics()=default
virtual double getWheelRadius() const =0
Get the wheel radius used by this kinematics model.
virtual double maxYawRateForArcRadius(double, bool) const
virtual MotorCommands applyCommand(const foundation::ChassisVelocity &cmd, double dt)=0
virtual foundation::ChassisVelocity estimateState() const =0
virtual bool supportsLateralMotion() const =0
Query whether this kinematics model supports direct lateral (vy) motion.
virtual void hardStop()=0
virtual std::array< double, 3 > getVelocityCommandGains() const
virtual std::vector< hal::motor::IMotor * > getMotors()=0
Get pointers to all drive motors managed by this kinematics model.
virtual void resetEncoders()=0
Reset encoder/BEMF counters to prepare for new odometry origin.
virtual StmOdometryConfig getStmOdometryConfig()=0
virtual void applyPowerCommand(const foundation::ChassisVelocity &direction, int power_percent)=0
virtual std::size_t wheelCount() const =0
virtual void setVelocityCommandGains(double, double, double)
std::vector< double > wheel_velocities
std::uint32_t saturation_mask