libstp
Robotics library for Botball
Loading...
Searching...
No Matches
libstp::kinematics::differential::DifferentialKinematics Class Reference

#include <differential.hpp>

Inheritance diagram for libstp::kinematics::differential::DifferentialKinematics:
[legend]
Collaboration diagram for libstp::kinematics::differential::DifferentialKinematics:
[legend]

Public Member Functions

 DifferentialKinematics (hal::motor::IMotor *left_motor, hal::motor::IMotor *right_motor, double wheelbase, double wheelRadius)
 ~DifferentialKinematics () override=default
std::size_t wheelCount () const override
MotorCommands applyCommand (const foundation::ChassisVelocity &cmd, double dt) override
foundation::ChassisVelocity estimateState () const override
void hardStop () override
bool supportsLateralMotion () const override
void resetEncoders () override
double getWheelRadius () const override
 Get the wheel radius used by this kinematics model.
std::vector< hal::motor::IMotor * > getMotors () override
StmOdometryConfig getStmOdometryConfig () override
void applyPowerCommand (const foundation::ChassisVelocity &direction, int power_percent) override
void setMaxWheelSpeed (double max_wheel_speed)
double getMaxWheelSpeed () const
double maxYawRateForArcRadius (double radius_m, bool) const override
Public Member Functions inherited from libstp::kinematics::IKinematics
virtual ~IKinematics ()=default
virtual void setVelocityCommandGains (double, double, double)
virtual std::array< double, 3 > getVelocityCommandGains () const

Detailed Description

Differential-drive implementation of IKinematics.

The model assumes two independently driven wheels separated by m_wheelbase, with no direct lateral degree of freedom.

Definition at line 15 of file differential.hpp.

Constructor & Destructor Documentation

◆ DifferentialKinematics()

libstp::kinematics::differential::DifferentialKinematics::DifferentialKinematics ( hal::motor::IMotor * left_motor,
hal::motor::IMotor * right_motor,
double wheelbase,
double wheelRadius )
Parameters
left_motorNon-owning pointer to the left drive motor.
right_motorNon-owning pointer to the right drive motor.
wheelbaseDistance between left and right wheel contact lines.
wheelRadiusRadius of each drive wheel in meters.

◆ ~DifferentialKinematics()

libstp::kinematics::differential::DifferentialKinematics::~DifferentialKinematics ( )
overridedefault

Member Function Documentation

◆ applyCommand()

MotorCommands libstp::kinematics::differential::DifferentialKinematics::applyCommand ( const foundation::ChassisVelocity & cmd,
double dt )
overridevirtual

Convert (vx, wz) into left and right wheel angular velocities.

Implements libstp::kinematics::IKinematics.

◆ applyPowerCommand()

void libstp::kinematics::differential::DifferentialKinematics::applyPowerCommand ( const foundation::ChassisVelocity & direction,
int power_percent )
overridevirtual

Command motors at raw open-loop power using differential inverse kinematics for direction.

Implements libstp::kinematics::IKinematics.

◆ estimateState()

foundation::ChassisVelocity libstp::kinematics::differential::DifferentialKinematics::estimateState ( ) const
nodiscardoverridevirtual

Recover (vx, wz) from the measured left and right wheel speeds.

Implements libstp::kinematics::IKinematics.

◆ getMaxWheelSpeed()

double libstp::kinematics::differential::DifferentialKinematics::getMaxWheelSpeed ( ) const
inlinenodiscard

Definition at line 68 of file differential.hpp.

◆ getMotors()

std::vector< hal::motor::IMotor * > libstp::kinematics::differential::DifferentialKinematics::getMotors ( )
nodiscardoverridevirtual

Return the underlying motors in left, right order.

Implements libstp::kinematics::IKinematics.

◆ getStmOdometryConfig()

StmOdometryConfig libstp::kinematics::differential::DifferentialKinematics::getStmOdometryConfig ( )
nodiscardoverridevirtual

◆ getWheelRadius()

double libstp::kinematics::differential::DifferentialKinematics::getWheelRadius ( ) const
inlinenodiscardoverridevirtual

Get the wheel radius used by this kinematics model.

Returns
Wheel radius in meters

Implements libstp::kinematics::IKinematics.

Definition at line 56 of file differential.hpp.

◆ hardStop()

void libstp::kinematics::differential::DifferentialKinematics::hardStop ( )
overridevirtual

Brake both drive motors immediately.

Implements libstp::kinematics::IKinematics.

◆ maxYawRateForArcRadius()

double libstp::kinematics::differential::DifferentialKinematics::maxYawRateForArcRadius ( double radius_m,
bool  ) const
inlinenodiscardoverridevirtual

Outer wheel on an arc travels at omega * (radius + wheelbase/2); keep it inside the wheel-speed limit. lateral is irrelevant — a differential base has no strafe arcs.

Reimplemented from libstp::kinematics::IKinematics.

Definition at line 75 of file differential.hpp.

◆ resetEncoders()

void libstp::kinematics::differential::DifferentialKinematics::resetEncoders ( )
overridevirtual

Clear encoder history in both MotorAdapter instances.

Implements libstp::kinematics::IKinematics.

◆ setMaxWheelSpeed()

void libstp::kinematics::differential::DifferentialKinematics::setMaxWheelSpeed ( double max_wheel_speed)
inline

Definition at line 67 of file differential.hpp.

◆ supportsLateralMotion()

bool libstp::kinematics::differential::DifferentialKinematics::supportsLateralMotion ( ) const
nodiscardoverridevirtual

Differential drivetrains cannot command lateral motion directly.

Implements libstp::kinematics::IKinematics.

◆ wheelCount()

std::size_t libstp::kinematics::differential::DifferentialKinematics::wheelCount ( ) const
nodiscardoverridevirtual

Always returns 2.

Implements libstp::kinematics::IKinematics.


The documentation for this class was generated from the following file:
  • /home/runner/work/raccoon-lib/raccoon-lib/modules/libstp-kinematics/models/differential/include/kinematics/differential/differential.hpp