Open FFBoard
Open source force feedback firmware
Axis Class Reference

#include <Axis.h>

Inheritance diagram for Axis:
PersistentStorage CommandHandler ErrorHandler

Public Member Functions

 Axis (char axis, volatile Control_t *control)
 
virtual ~Axis ()
 
const ClassIdentifier getInfo ()
 Command handlers always have class infos. Works well with ChoosableClass. More...
 
const ClassType getClassType () override
 
virtual std::string getHelpstring ()
 
void setupTMC4671 ()
 
void setDrvType (uint8_t drvtype)
 
void setEncType (uint8_t enctype)
 
uint8_t getDrvType ()
 
uint8_t getEncType ()
 
EncodergetEncoder ()
 
MotorDrivergetDriver ()
 
void usbSuspend ()
 
void usbResume ()
 
void saveFlash () override
 
void restoreFlash () override
 
void prepareForUpdate ()
 
void updateDriveTorque ()
 
void emergencyStop (bool reset)
 
void setPos (uint16_t val)
 
void zeroPos ()
 
bool getFfbActive ()
 
std::pair< int32_t, float > scaleEncValue (float angle, uint16_t degrees)
 
float getEncAngle (Encoder *enc)
 
void setPower (uint16_t power)
 
void errorCallback (const Error &error, bool cleared) override
 
void registerCommands ()
 
CommandStatus command (const ParsedCommand &cmd, std::vector< CommandReply > &replies)
 
int32_t getLastScaledEnc ()
 
void resetMetrics (float new_pos)
 
void updateMetrics (float new_pos)
 
int32_t updateIdleSpringForce ()
 
void setIdleSpringStrength (uint8_t spring)
 
void setFxStrengthAndFilter (uint8_t val, uint8_t &valToSet, Biquad &filter)
 
void calculateAxisEffects (bool ffb_on)
 
int32_t getTorque ()
 
int16_t updateEndstop ()
 
void startForceFadeIn (float start=0, float fadeTime=0.5)
 
metric_tgetMetrics ()
 
void setEffectTorque (int32_t torque)
 
bool updateTorque (int32_t *totalTorque)
 
void setGearRatio (uint8_t numerator, uint8_t denominator)
 
- Public Member Functions inherited from PersistentStorage
 PersistentStorage ()
 
virtual ~PersistentStorage ()
 
void restoreFlashDelayed ()
 
- Public Member Functions inherited from CommandHandler
 CommandHandler (const char *clsname, uint16_t clsid, uint8_t instance=0)
 
virtual ~CommandHandler ()
 
virtual bool hasCommands ()
 
virtual void setCommandsEnabled (bool enable)
 
void registerCommands ()
 
virtual CommandStatus internalCommand (const ParsedCommand &cmd, std::vector< CommandReply > &replies)
 
virtual std::string getCommandsHelpstring ()
 
virtual std::string getCsvHelpstring ()
 
virtual uint8_t getCommandHandlerInstance ()
 
void broadcastCommandReply (CommandReply reply, uint32_t cmdId, CMDtype type)
 
void sendCommandReplyAsync (CommandReply reply, uint32_t cmdId, CMDtype type, CommandInterface *interface=nullptr)
 
virtual uint16_t getCommandHandlerID ()
 
virtual CmdHandlerInfogetCommandHandlerInfo ()
 
virtual bool isValidCommandId (uint32_t cmdid, uint32_t ignoredFlags=0, uint32_t requiredFlag=0)
 
virtual CmdHandlerCommanddefgetCommandFromName (const std::string &cmd, uint32_t ignoredFlags=0)
 
virtual CmdHandlerCommanddefgetCommandFromId (const uint32_t id, uint32_t ignoredFlags=0)
 
template<typename ID >
void registerCommand (const char *cmd, const ID cmdid, const char *help=nullptr, uint32_t flags=0)
 
- Public Member Functions inherited from ErrorHandler
 ErrorHandler ()
 
virtual ~ErrorHandler ()
 

Public Attributes

ClassChooser< MotorDriverdrv_chooser
 
ClassChooser< Encoderenc_chooser
 

Static Public Attributes

static ClassIdentifier info
 
static const std::vector< class_entry< MotorDriver > > axis1_drivers
 
static const std::vector< class_entry< MotorDriver > > axis2_drivers
 
- Static Public Attributes inherited from CommandHandler
static bool logEnabled = true
 
- Static Public Attributes inherited from ErrorHandler
static std::vector< ErrorHandler * > errorHandlers
 

Private Member Functions

void setDegrees (uint16_t degrees)
 
uint16_t getPower ()
 
float getTorqueScaler ()
 
bool isInverted ()
 
void setFxRatio (uint8_t val)
 
void updateTorqueScaler ()
 

Static Private Member Functions

static AxisConfig decodeConfFromInt (uint16_t val)
 
static uint16_t encodeConfToInt (AxisConfig conf)
 

Private Attributes

const float AXIS_DAMPER_RATIO = INTERNAL_SCALER_DAMPER * INTERNAL_AXIS_DAMPER_SCALER / 255.0
 
const float AXIS_INERTIA_RATIO = INTERNAL_SCALER_INERTIA * INTERNAL_AXIS_INERTIA_SCALER / 255.0
 
AxisFlashAddrs flashAddrs
 
volatile Control_tcontrol
 
AxisConfig conf
 
std::unique_ptr< MotorDriverdrv = std::make_unique<MotorDriver>()
 
std::shared_ptr< Encoderenc = nullptr
 
bool outOfBounds = false
 
const Error outOfBoundsError = Error(ErrorCode::axisOutOfRange,ErrorType::warning,"Axis out of bounds")
 
float forceFadeTime = 1.0
 
float forceFadeCurMult = 1.0
 
TMC4671Limits tmclimits
 
float encoderOffset = 0
 
uint16_t degreesOfRotation = 900
 
uint16_t lastdegreesOfRotation = degreesOfRotation
 
uint16_t nextDegreesOfRotation = degreesOfRotation
 
uint16_t maxSpeedDegS = 0
 
uint32_t maxTorqueRateMS = 0
 
float speedLimiterP = AXIS_SPEEDLIMITER_P
 
float speedLimiterI = AXIS_SPEEDLIMITER_I
 
float spdlimitreducerI = 0
 
char axis
 
axis_metric_t metric
 
float _lastSpeed = 0
 
int32_t effectTorque = 0
 
int32_t axisEffectTorque = 0
 
uint8_t fx_ratio_i = 204
 
uint16_t power = 5000
 
float torqueScaler = 0
 
float effect_margin_scaler = 0
 
bool invertAxis = true
 
uint8_t endstopStrength = 127
 
const float endstopGain = 25
 
uint8_t idlespringstrength = 127
 
int16_t idlespringclip = 0
 
float idlespringscale = 0
 
bool motorWasNotReady = true
 
const std::array< biquad_constant_t, 4 > filterSpeedCst = { {{ 40, 55 }, { 70, 55 }, { 120, 55 }, {180, 55}} }
 
const std::array< biquad_constant_t, 4 > filterAccelCst = { {{ 40, 30 }, { 55, 30 }, { 70, 30 }, {120, 55}} }
 
const biquad_constant_t filterDamperCst = {60, 55}
 
const biquad_constant_t filterFrictionCst = {50, 20}
 
const biquad_constant_t filterInertiaCst = {20, 20}
 
uint8_t filterProfileId = 1
 
const float filter_f = 1000
 
const int32_t intFxClip = 20000
 
uint8_t damperIntensity = 30
 
uint8_t frictionIntensity = 0
 
uint8_t inertiaIntensity = 0
 
Biquad speedFilter = Biquad(BiquadType::lowpass, filterSpeedCst[filterProfileId].freq/filter_f, filterSpeedCst[filterProfileId].q/100.0, 0.0)
 
Biquad accelFilter = Biquad(BiquadType::lowpass, filterAccelCst[filterProfileId].freq/filter_f, filterAccelCst[filterProfileId].q/100.0, 0.0)
 
Biquad damperFilter = Biquad(BiquadType::lowpass, filterDamperCst.freq/filter_f, filterDamperCst.q / 100.0, 0.0)
 
Biquad frictionFilter = Biquad(BiquadType::lowpass, filterFrictionCst.freq/filter_f, filterFrictionCst.q / 100.0, 0.0)
 
Biquad inertiaFilter = Biquad(BiquadType::lowpass, filterInertiaCst.freq/filter_f, filterInertiaCst.q / 100.0, 0.0)
 
GearRatio_t gearRatio
 

Additional Inherited Members

- Static Public Member Functions inherited from PersistentStorage
static std::vector< PersistentStorage * > & getFlashHandlers ()
 
static void restoreFlashStartupCb ()
 
- Static Public Member Functions inherited from CommandHandler
static void logSerial (std::string string)
 Send a log formatted sequence. More...
 
static void logSerialDebug (std::string string)
 Send a log formatted sequence if debug is on. More...
 
static bool logsEnabled ()
 
static void setLogsEnabled (bool enabled)
 
static uint32_t getClassIdFromName (const char *name)
 
static const char * getClassNameFromId (const uint32_t id)
 
static CommandHandlergetHandlerFromHandlerId (const uint16_t cmdhandlerID)
 
static CommandHandlergetHandlerFromId (const uint16_t id, const uint8_t instance=0xFF)
 
static CommandHandlergetHandlerFromClassName (const char *name, const uint8_t instance=0xFF)
 
static std::vector< CommandHandler * > getHandlersFromClassName (const char *name)
 
static std::vector< CommandHandler * > getHandlersFromId (const uint16_t id)
 
static bool isInHandlerList (CommandHandler *handler)
 
static std::string getAllHelpstrings ()
 
static std::vector< CommandHandler * > & getCommandHandlers ()
 
template<typename TVal >
static CommandStatus handleGetSet (const ParsedCommand &cmd, std::vector< CommandReply > &replies, TVal &value)
 
template<typename TVal , class cls , class cls1 >
static CommandStatus handleGetSetFunc (const ParsedCommand &cmd, std::vector< CommandReply > &replies, TVal &value, void(cls1::*setfunc)(TVal), cls *obj)
 
template<typename TVal , class cls , class cls1 , class cls2 >
static CommandStatus handleGetFuncSetFunc (const ParsedCommand &cmd, std::vector< CommandReply > &replies, TVal(cls1::*getfunc)(), void(cls2::*setfunc)(TVal), cls *obj)
 
template<typename TVal , class cls , class cls1 >
static CommandStatus handleGetFuncSet (const ParsedCommand &cmd, std::vector< CommandReply > &replies, TVal &value, TVal(cls1::*getfunc)(), cls *obj)
 
- Static Public Member Functions inherited from ErrorHandler
static void addError (const Error &error)
 
static void clearError (const Error &error)
 
static void clearError (ErrorCode errorcode)
 
static void clearTemp ()
 
static void clearAll ()
 
static std::span< ErrorgetErrors ()
 
- Protected Member Functions inherited from CommandHandler
void setInstance (uint8_t instance)
 
virtual void addCommandHandler ()
 
virtual void removeCommandHandler ()
 
- Static Protected Member Functions inherited from CommandHandler
static std::vector< uint16_t > & getCommandHandlerIds ()
 
- Static Protected Member Functions inherited from ErrorHandler
static void sortErrors ()
 
- Protected Attributes inherited from PersistentStorage
bool restoreDelayedFlag = false
 
- Protected Attributes inherited from CommandHandler
bool commandsEnabled = true
 
std::vector< CmdHandlerCommanddefregisteredCommands
 
CmdHandlerInfo cmdHandlerInfo
 
- Static Protected Attributes inherited from PersistentStorage
static bool startupComplete = false
 
- Static Protected Attributes inherited from ErrorHandler
static std::array< Error, ERRORHANDLER_MAXERRORS > errors
 

Detailed Description

Definition at line 98 of file Axis.h.

Constructor & Destructor Documentation

◆ Axis()

Axis::Axis ( char  axis,
volatile Control_t control 
)

Axis class manages motor drivers and passes effect torque to the motor drivers

Definition at line 88 of file Axis.cpp.

◆ ~Axis()

Axis::~Axis ( )
virtual

Definition at line 123 of file Axis.cpp.

Member Function Documentation

◆ calculateAxisEffects()

void Axis::calculateAxisEffects ( bool  ffb_on)

Called before HID effects are calculated Should calculate always on and idle effects specific to the axis like idlespring and friction

Definition at line 577 of file Axis.cpp.

◆ command()

CommandStatus Axis::command ( const ParsedCommand cmd,
std::vector< CommandReply > &  replies 
)
virtual
Parameters
[in]cmdThe parsed command to be executed.
[out]repliesA vector to return one or multiple reply objects into. Replies to the interface will be generated based on the reply objects. A string reply may not contain start, end and separation markers: [,],| Other characters are allowed.

Reimplemented from CommandHandler.

Definition at line 788 of file Axis.cpp.

◆ decodeConfFromInt()

AxisConfig Axis::decodeConfFromInt ( uint16_t  val)
staticprivate

Definition at line 1012 of file Axis.cpp.

◆ emergencyStop()

void Axis::emergencyStop ( bool  reset)

Stops the motor driver and sets torque to 0

Definition at line 505 of file Axis.cpp.

◆ encodeConfToInt()

uint16_t Axis::encodeConfToInt ( AxisConfig  conf)
staticprivate

Definition at line 1021 of file Axis.cpp.

◆ errorCallback()

void Axis::errorCallback ( const Error error,
bool  cleared 
)
overridevirtual

Reimplemented from ErrorHandler.

Definition at line 342 of file Axis.cpp.

◆ getClassType()

const ClassType Axis::getClassType ( )
inlineoverridevirtual

Type of this class. Mainclass, motordriver... Should be implemented by the parent class so it is not in the info struct

Reimplemented from CommandHandler.

Definition at line 106 of file Axis.h.

◆ getDriver()

MotorDriver * Axis::getDriver ( )

Definition at line 279 of file Axis.cpp.

◆ getDrvType()

uint8_t Axis::getDrvType ( )

Definition at line 259 of file Axis.cpp.

◆ getEncAngle()

float Axis::getEncAngle ( Encoder enc)

Returns the encoder position in degrees

Definition at line 489 of file Axis.cpp.

◆ getEncoder()

Encoder * Axis::getEncoder ( )

Definition at line 283 of file Axis.cpp.

◆ getEncType()

uint8_t Axis::getEncType ( )

Definition at line 263 of file Axis.cpp.

◆ getFfbActive()

bool Axis::getFfbActive ( )

◆ getHelpstring()

virtual std::string Axis::getHelpstring ( )
inlinevirtual

Returns a description of this class

Reimplemented from CommandHandler.

Definition at line 108 of file Axis.h.

◆ getInfo()

const ClassIdentifier Axis::getInfo ( )
virtual

Command handlers always have class infos. Works well with ChoosableClass.

Implements CommandHandler.

Definition at line 128 of file Axis.cpp.

◆ getLastScaledEnc()

int32_t Axis::getLastScaledEnc ( )

Returns position as 16b int scaled to gamepad range

Definition at line 543 of file Axis.cpp.

◆ getMetrics()

metric_t * Axis::getMetrics ( )

Definition at line 536 of file Axis.cpp.

◆ getPower()

uint16_t Axis::getPower ( )
private

Definition at line 654 of file Axis.cpp.

◆ getTorque()

int32_t Axis::getTorque ( )

Definition at line 668 of file Axis.cpp.

◆ getTorqueScaler()

float Axis::getTorqueScaler ( )
private

Definition at line 663 of file Axis.cpp.

◆ isInverted()

bool Axis::isInverted ( )
private

Definition at line 670 of file Axis.cpp.

◆ prepareForUpdate()

void Axis::prepareForUpdate ( )

Called from FFBWheel->Update() via AxesManager->Update()

Definition at line 290 of file Axis.cpp.

◆ registerCommands()

void Axis::registerCommands ( )

Definition at line 133 of file Axis.cpp.

◆ resetMetrics()

void Axis::resetMetrics ( float  new_pos = 0)

Resets the metrics and filters

Definition at line 623 of file Axis.cpp.

◆ restoreFlash()

void Axis::restoreFlash ( )
overridevirtual

Should be implemented to restore settings. This is not automatically called and should be called when appropriate.

Reimplemented from PersistentStorage.

Definition at line 165 of file Axis.cpp.

◆ saveFlash()

void Axis::saveFlash ( )
overridevirtual

Called when the user uses the "save" command and presses the save button in the configurator Automatically called by the command parser thread for every class that inherits from PersistentStorage

Reimplemented from PersistentStorage.

Definition at line 240 of file Axis.cpp.

◆ scaleEncValue()

std::pair< int32_t, float > Axis::scaleEncValue ( float  angle,
uint16_t  degrees 
)

Returns a scaled encoder value between -0x7fff and 0x7fff with a range of degrees and a float between -1 and 1 Takes an encoder angle in degrees

Definition at line 475 of file Axis.cpp.

◆ setDegrees()

void Axis::setDegrees ( uint16_t  degrees)
private

Changes gamepad range in degrees for effect scaling

Definition at line 776 of file Axis.cpp.

◆ setDrvType()

void Axis::setDrvType ( uint8_t  drvtype)

create and setup a motor driver

Definition at line 380 of file Axis.cpp.

◆ setEffectTorque()

void Axis::setEffectTorque ( int32_t  torque)

Definition at line 689 of file Axis.cpp.

◆ setEncType()

void Axis::setEncType ( uint8_t  enctype)

Init the encoder and reset metrics

Definition at line 440 of file Axis.cpp.

◆ setFxRatio()

void Axis::setFxRatio ( uint8_t  val)
private

Changes the ratio of effects to endstop strength. 255 = same strength, 0 = no effects

Definition at line 615 of file Axis.cpp.

◆ setFxStrengthAndFilter()

void Axis::setFxStrengthAndFilter ( uint8_t  val,
uint8_t &  valToSet,
Biquad filter 
)

Sets friction, inertia or damper values and resets filter

Definition at line 566 of file Axis.cpp.

◆ setGearRatio()

void Axis::setGearRatio ( uint8_t  numerator,
uint8_t  denominator 
)

Changes the internal gearRatio scaler Encoder angle is multiplied with (numerator+1)/(denominator+1)

Definition at line 464 of file Axis.cpp.

◆ setIdleSpringStrength()

void Axis::setIdleSpringStrength ( uint8_t  spring)

Definition at line 557 of file Axis.cpp.

◆ setPos()

void Axis::setPos ( uint16_t  val)

Definition at line 271 of file Axis.cpp.

◆ setPower()

void Axis::setPower ( uint16_t  power)

Definition at line 360 of file Axis.cpp.

◆ setupTMC4671()

void Axis::setupTMC4671 ( )

Definition at line 418 of file Axis.cpp.

◆ startForceFadeIn()

void Axis::startForceFadeIn ( float  start = 0,
float  fadeTime = 0.5 
)

Starts fading in force from start to 1 over fadeTime

Definition at line 767 of file Axis.cpp.

◆ updateDriveTorque()

void Axis::updateDriveTorque ( )

Definition at line 350 of file Axis.cpp.

◆ updateEndstop()

int16_t Axis::updateEndstop ( )

Calculate soft endstop effect

Definition at line 677 of file Axis.cpp.

◆ updateIdleSpringForce()

int32_t Axis::updateIdleSpringForce ( )

Changes intensity of idle spring when FFB is off

Definition at line 550 of file Axis.cpp.

◆ updateMetrics()

void Axis::updateMetrics ( float  new_pos)

Updates metrics

Definition at line 636 of file Axis.cpp.

◆ updateTorque()

bool Axis::updateTorque ( int32_t *  totalTorque)

pass in ptr to receive the sum of the effects + endstop torque return true if torque has changed

Definition at line 697 of file Axis.cpp.

◆ updateTorqueScaler()

void Axis::updateTorqueScaler ( )
private

Definition at line 658 of file Axis.cpp.

◆ usbResume()

void Axis::usbResume ( )

Enables motor driver

Definition at line 527 of file Axis.cpp.

◆ usbSuspend()

void Axis::usbSuspend ( )

Disables torque and motor driver

Definition at line 517 of file Axis.cpp.

◆ zeroPos()

void Axis::zeroPos ( )

Member Data Documentation

◆ _lastSpeed

float Axis::_lastSpeed = 0
private

Definition at line 233 of file Axis.h.

◆ accelFilter

Definition at line 265 of file Axis.h.

◆ axis

char Axis::axis
private

Definition at line 228 of file Axis.h.

◆ axis1_drivers

const std::vector< class_entry< MotorDriver > > Axis::axis1_drivers
static
Initial value:
=
{
add_class<MotorDriver, MotorDriver>(0),
#ifdef TMC4671DRIVER
add_class<TMC_1, MotorDriver>(1),
#endif
#ifdef PWMDRIVER
add_class<MotorPWM, MotorDriver>(4),
#endif
#ifdef ODRIVE
add_class<ODriveCAN1,MotorDriver>(5),
#endif
#ifdef VESC
add_class<VESC_1,MotorDriver>(7),
#endif
#ifdef SIMPLEMOTION
add_class<MotorSimplemotion1,MotorDriver>(9),
#endif
#ifdef RMDCAN
add_class<RmdMotorCAN1,MotorDriver>(11),
#endif
}

List of motor drivers available to the first axis

Definition at line 171 of file Axis.h.

◆ axis2_drivers

const std::vector< class_entry< MotorDriver > > Axis::axis2_drivers
static
Initial value:
=
{
add_class<MotorDriver, MotorDriver>(0),
#ifdef TMC4671DRIVER
add_class<TMC_2, MotorDriver>(2),
#endif
#ifdef PWMDRIVER
add_class<MotorPWM, MotorDriver>(4),
#endif
#ifdef ODRIVE
add_class<ODriveCAN2,MotorDriver>(6),
#endif
#ifdef VESC
add_class<VESC_2,MotorDriver>(8),
#endif
#ifdef RMDCAN
add_class<RmdMotorCAN2,MotorDriver>(12),
#endif
}

List of motor drivers available to the second axis

Definition at line 172 of file Axis.h.

◆ AXIS_DAMPER_RATIO

const float Axis::AXIS_DAMPER_RATIO = INTERNAL_SCALER_DAMPER * INTERNAL_AXIS_DAMPER_SCALER / 255.0
private

Definition at line 176 of file Axis.h.

◆ AXIS_INERTIA_RATIO

const float Axis::AXIS_INERTIA_RATIO = INTERNAL_SCALER_INERTIA * INTERNAL_AXIS_INERTIA_SCALER / 255.0
private

Definition at line 177 of file Axis.h.

◆ axisEffectTorque

int32_t Axis::axisEffectTorque = 0
private

Definition at line 235 of file Axis.h.

◆ conf

AxisConfig Axis::conf
private

Definition at line 183 of file Axis.h.

◆ control

volatile Control_t* Axis::control
private

Definition at line 180 of file Axis.h.

◆ damperFilter

Biquad Axis::damperFilter = Biquad(BiquadType::lowpass, filterDamperCst.freq/filter_f, filterDamperCst.q / 100.0, 0.0)
private

Definition at line 266 of file Axis.h.

◆ damperIntensity

uint8_t Axis::damperIntensity = 30
private

Definition at line 259 of file Axis.h.

◆ degreesOfRotation

uint16_t Axis::degreesOfRotation = 900
private

Definition at line 208 of file Axis.h.

◆ drv

std::unique_ptr<MotorDriver> Axis::drv = std::make_unique<MotorDriver>()
private

Definition at line 185 of file Axis.h.

◆ drv_chooser

ClassChooser<MotorDriver> Axis::drv_chooser

Definition at line 149 of file Axis.h.

◆ effect_margin_scaler

float Axis::effect_margin_scaler = 0
private

Definition at line 239 of file Axis.h.

◆ effectTorque

int32_t Axis::effectTorque = 0
private

Definition at line 234 of file Axis.h.

◆ enc

std::shared_ptr<Encoder> Axis::enc = nullptr
private

Definition at line 186 of file Axis.h.

◆ enc_chooser

ClassChooser<Encoder> Axis::enc_chooser

Definition at line 150 of file Axis.h.

◆ encoderOffset

float Axis::encoderOffset = 0
private

Definition at line 207 of file Axis.h.

◆ endstopGain

const float Axis::endstopGain = 25
private

Definition at line 242 of file Axis.h.

◆ endstopStrength

uint8_t Axis::endstopStrength = 127
private

Definition at line 241 of file Axis.h.

◆ filter_f

const float Axis::filter_f = 1000
private

Definition at line 257 of file Axis.h.

◆ filterAccelCst

const std::array<biquad_constant_t,4> Axis::filterAccelCst = { {{ 40, 30 }, { 55, 30 }, { 70, 30 }, {120, 55}} }
private

Definition at line 252 of file Axis.h.

◆ filterDamperCst

const biquad_constant_t Axis::filterDamperCst = {60, 55}
private

Definition at line 253 of file Axis.h.

◆ filterFrictionCst

const biquad_constant_t Axis::filterFrictionCst = {50, 20}
private

Definition at line 254 of file Axis.h.

◆ filterInertiaCst

const biquad_constant_t Axis::filterInertiaCst = {20, 20}
private

Definition at line 255 of file Axis.h.

◆ filterProfileId

uint8_t Axis::filterProfileId = 1
private

Definition at line 256 of file Axis.h.

◆ filterSpeedCst

const std::array<biquad_constant_t,4> Axis::filterSpeedCst = { {{ 40, 55 }, { 70, 55 }, { 120, 55 }, {180, 55}} }
private

Definition at line 251 of file Axis.h.

◆ flashAddrs

AxisFlashAddrs Axis::flashAddrs
private

Definition at line 179 of file Axis.h.

◆ forceFadeCurMult

float Axis::forceFadeCurMult = 1.0
private

Definition at line 196 of file Axis.h.

◆ forceFadeTime

float Axis::forceFadeTime = 1.0
private

Definition at line 195 of file Axis.h.

◆ frictionFilter

Biquad Axis::frictionFilter = Biquad(BiquadType::lowpass, filterFrictionCst.freq/filter_f, filterFrictionCst.q / 100.0, 0.0)
private

Definition at line 267 of file Axis.h.

◆ frictionIntensity

uint8_t Axis::frictionIntensity = 0
private

Definition at line 261 of file Axis.h.

◆ fx_ratio_i

uint8_t Axis::fx_ratio_i = 204
private

Definition at line 236 of file Axis.h.

◆ gearRatio

GearRatio_t Axis::gearRatio
private

Definition at line 275 of file Axis.h.

◆ idlespringclip

int16_t Axis::idlespringclip = 0
private

Definition at line 246 of file Axis.h.

◆ idlespringscale

float Axis::idlespringscale = 0
private

Definition at line 247 of file Axis.h.

◆ idlespringstrength

uint8_t Axis::idlespringstrength = 127
private

Definition at line 245 of file Axis.h.

◆ inertiaFilter

Biquad Axis::inertiaFilter = Biquad(BiquadType::lowpass, filterInertiaCst.freq/filter_f, filterInertiaCst.q / 100.0, 0.0)
private

Definition at line 268 of file Axis.h.

◆ inertiaIntensity

uint8_t Axis::inertiaIntensity = 0
private

Definition at line 262 of file Axis.h.

◆ info

ClassIdentifier Axis::info
static
Initial value:
= {
.name = "Axis",
.id = CLSID_AXIS,
.visibility = ClassVisibility::visible}

Definition at line 104 of file Axis.h.

◆ intFxClip

const int32_t Axis::intFxClip = 20000
private

Definition at line 258 of file Axis.h.

◆ invertAxis

bool Axis::invertAxis = true
private

Definition at line 240 of file Axis.h.

◆ lastdegreesOfRotation

uint16_t Axis::lastdegreesOfRotation = degreesOfRotation
private

Definition at line 209 of file Axis.h.

◆ maxSpeedDegS

uint16_t Axis::maxSpeedDegS = 0
private

Definition at line 213 of file Axis.h.

◆ maxTorqueRateMS

uint32_t Axis::maxTorqueRateMS = 0
private

Definition at line 215 of file Axis.h.

◆ metric

axis_metric_t Axis::metric
private

Definition at line 232 of file Axis.h.

◆ motorWasNotReady

bool Axis::motorWasNotReady = true
private

Definition at line 248 of file Axis.h.

◆ nextDegreesOfRotation

uint16_t Axis::nextDegreesOfRotation = degreesOfRotation
private

Definition at line 210 of file Axis.h.

◆ outOfBounds

bool Axis::outOfBounds = false
private

Definition at line 188 of file Axis.h.

◆ outOfBoundsError

const Error Axis::outOfBoundsError = Error(ErrorCode::axisOutOfRange,ErrorType::warning,"Axis out of bounds")
private

Definition at line 193 of file Axis.h.

◆ power

uint16_t Axis::power = 5000
private

Definition at line 237 of file Axis.h.

◆ spdlimitreducerI

float Axis::spdlimitreducerI = 0
private

Definition at line 219 of file Axis.h.

◆ speedFilter

Definition at line 264 of file Axis.h.

◆ speedLimiterI

float Axis::speedLimiterI = AXIS_SPEEDLIMITER_I
private

Definition at line 217 of file Axis.h.

◆ speedLimiterP

float Axis::speedLimiterP = AXIS_SPEEDLIMITER_P
private

Definition at line 216 of file Axis.h.

◆ tmclimits

TMC4671Limits Axis::tmclimits
private
Initial value:
= TMC4671Limits({.pid_torque_flux_ddt = 32767,
.pid_uq_ud = 30000,
.pid_torque_flux = 30000,
.pid_acc_lim = 2147483647,
.pid_vel_lim = 2147483647,
.pid_pos_low = -2147483647,
.pid_pos_high = 2147483647})

Definition at line 199 of file Axis.h.

◆ torqueScaler

float Axis::torqueScaler = 0
private

Definition at line 238 of file Axis.h.


The documentation for this class was generated from the following files: