libstp
Robotics library for Botball
Loading...
Searching...
No Matches
libstp::hal::motor::IMotor Struct Referenceabstract

Interface for motor abstraction. More...

#include <IMotor.hpp>

Inheritance diagram for libstp::hal::motor::IMotor:
[legend]

Public Member Functions

virtual ~IMotor ()=default
virtual void setSpeed (int percent)=0
 Open-loop percent output.
virtual void setVelocity (int velocity)=0
 Set a velocity target in firmware-specific BEMF units.
virtual void moveToPosition (int velocity, int goalPosition)=0
 Move to an absolute position using firmware-side control.
virtual void moveRelative (int velocity, int deltaPosition)=0
 Move by a relative position delta using firmware-side control.
virtual int getPosition () const =0
virtual int getBemf () const =0
virtual bool isDone () const =0
virtual void brake ()=0
 Stop this motor using the implementation's preferred strategy.
virtual void off ()=0
 Disable this motor completely (no power, no brake — free-spinning).
virtual void resetPositionCounter ()=0
 Reset the position counter to zero.
virtual const foundation::MotorCalibration & getCalibration () const =0
virtual void setCalibration (const foundation::MotorCalibration &calibration)=0
virtual int getPort () const =0
virtual bool isInverted () const =0
virtual void setFirmwarePidGains (float kp, float ki, float kd)
 Push per-motor firmware-side velocity PID gains to the driver.
virtual void getLastFirmwarePidGains (float &kp, float &ki, float &kd) const
 Read back the gains last passed to setFirmwarePidGains().

Detailed Description

Interface for motor abstraction.

This interface allows for mocking motors in unit tests and enables dependency injection in kinematics classes.

Definition at line 16 of file IMotor.hpp.

Constructor & Destructor Documentation

◆ ~IMotor()

virtual libstp::hal::motor::IMotor::~IMotor ( )
virtualdefault

Member Function Documentation

◆ brake()

virtual void libstp::hal::motor::IMotor::brake ( )
pure virtual

Stop this motor using the implementation's preferred strategy.

Implemented in libstp::hal::motor::Motor.

◆ getBemf()

virtual int libstp::hal::motor::IMotor::getBemf ( ) const
nodiscardpure virtual

Implemented in libstp::hal::motor::Motor.

◆ getCalibration()

virtual const foundation::MotorCalibration & libstp::hal::motor::IMotor::getCalibration ( ) const
nodiscardpure virtual

Implemented in libstp::hal::motor::Motor.

◆ getLastFirmwarePidGains()

virtual void libstp::hal::motor::IMotor::getLastFirmwarePidGains ( float & kp,
float & ki,
float & kd ) const
inlinevirtual

Read back the gains last passed to setFirmwarePidGains().

Default no-op (returns zeros) so platforms that don't store the gains keep compiling unchanged. Override in concrete platforms (wombat, mock) to expose the cached value — primarily useful in tuner/test code that needs to revert to a previous gain set.

Reimplemented in libstp::hal::motor::Motor.

Definition at line 66 of file IMotor.hpp.

◆ getPort()

virtual int libstp::hal::motor::IMotor::getPort ( ) const
nodiscardpure virtual

Implemented in libstp::hal::motor::Motor.

◆ getPosition()

virtual int libstp::hal::motor::IMotor::getPosition ( ) const
nodiscardpure virtual

Implemented in libstp::hal::motor::Motor.

◆ isDone()

virtual bool libstp::hal::motor::IMotor::isDone ( ) const
nodiscardpure virtual

Implemented in libstp::hal::motor::Motor.

◆ isInverted()

virtual bool libstp::hal::motor::IMotor::isInverted ( ) const
nodiscardpure virtual

Implemented in libstp::hal::motor::Motor.

◆ moveRelative()

virtual void libstp::hal::motor::IMotor::moveRelative ( int velocity,
int deltaPosition )
pure virtual

Move by a relative position delta using firmware-side control.

Implemented in libstp::hal::motor::Motor.

◆ moveToPosition()

virtual void libstp::hal::motor::IMotor::moveToPosition ( int velocity,
int goalPosition )
pure virtual

Move to an absolute position using firmware-side control.

Implemented in libstp::hal::motor::Motor.

◆ off()

virtual void libstp::hal::motor::IMotor::off ( )
pure virtual

Disable this motor completely (no power, no brake — free-spinning).

Implemented in libstp::hal::motor::Motor.

◆ resetPositionCounter()

virtual void libstp::hal::motor::IMotor::resetPositionCounter ( )
pure virtual

Reset the position counter to zero.

Implemented in libstp::hal::motor::Motor.

◆ setCalibration()

virtual void libstp::hal::motor::IMotor::setCalibration ( const foundation::MotorCalibration & calibration)
pure virtual

Implemented in libstp::hal::motor::Motor.

◆ setFirmwarePidGains()

virtual void libstp::hal::motor::IMotor::setFirmwarePidGains ( float kp,
float ki,
float kd )
inlinevirtual

Push per-motor firmware-side velocity PID gains to the driver.

Default no-op so platforms that don't expose a per-motor firmware PID channel keep compiling unchanged. The wombat platform forwards to TransportWriter::setMotorPid(); the mock platform stores the gains for test introspection.

Reimplemented in libstp::hal::motor::Motor.

Definition at line 51 of file IMotor.hpp.

◆ setSpeed()

virtual void libstp::hal::motor::IMotor::setSpeed ( int percent)
pure virtual

Open-loop percent output.

Implemented in libstp::hal::motor::Motor.

◆ setVelocity()

virtual void libstp::hal::motor::IMotor::setVelocity ( int velocity)
pure virtual

Set a velocity target in firmware-specific BEMF units.

Implemented in libstp::hal::motor::Motor.


The documentation for this struct was generated from the following file:
  • /home/runner/work/raccoon-lib/raccoon-lib/modules/libstp-hal/include/hal/IMotor.hpp