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 ()
 
int32_t calculateExpoTorque (int32_t torque)
 
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 ()
 
void setExpo (int val)
 

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
 
int expoValInt = 0
 
float expo = 1
 
float expoScaler = 50
 

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 100 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 588 of file Axis.cpp.

◆ calculateExpoTorque()

int32_t Axis::calculateExpoTorque ( int32_t  torque)

Calculates an exponential torque correction curve

Definition at line 672 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 830 of file Axis.cpp.

◆ decodeConfFromInt()

AxisConfig Axis::decodeConfFromInt ( uint16_t  val)
staticprivate

Definition at line 1062 of file Axis.cpp.

◆ emergencyStop()

void Axis::emergencyStop ( bool  reset)

Stops the motor driver and sets torque to 0

Definition at line 516 of file Axis.cpp.

◆ encodeConfToInt()

uint16_t Axis::encodeConfToInt ( AxisConfig  conf)
staticprivate

Definition at line 1071 of file Axis.cpp.

◆ errorCallback()

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

Reimplemented from ErrorHandler.

Definition at line 353 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 108 of file Axis.h.

◆ getDriver()

MotorDriver * Axis::getDriver ( )

Definition at line 290 of file Axis.cpp.

◆ getDrvType()

uint8_t Axis::getDrvType ( )

Definition at line 270 of file Axis.cpp.

◆ getEncAngle()

float Axis::getEncAngle ( Encoder enc)

Returns the encoder position in degrees

Definition at line 500 of file Axis.cpp.

◆ getEncoder()

Encoder * Axis::getEncoder ( )

Definition at line 294 of file Axis.cpp.

◆ getEncType()

uint8_t Axis::getEncType ( )

Definition at line 274 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 110 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 554 of file Axis.cpp.

◆ getMetrics()

metric_t * Axis::getMetrics ( )

Definition at line 547 of file Axis.cpp.

◆ getPower()

uint16_t Axis::getPower ( )
private

Definition at line 665 of file Axis.cpp.

◆ getTorque()

int32_t Axis::getTorque ( )

Definition at line 691 of file Axis.cpp.

◆ getTorqueScaler()

float Axis::getTorqueScaler ( )
private

Definition at line 686 of file Axis.cpp.

◆ isInverted()

bool Axis::isInverted ( )
private

Definition at line 693 of file Axis.cpp.

◆ prepareForUpdate()

void Axis::prepareForUpdate ( )

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

Definition at line 301 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 634 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 167 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 247 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 486 of file Axis.cpp.

◆ setDegrees()

void Axis::setDegrees ( uint16_t  degrees)
private

Changes gamepad range in degrees for effect scaling

Definition at line 803 of file Axis.cpp.

◆ setDrvType()

void Axis::setDrvType ( uint8_t  drvtype)

create and setup a motor driver

Definition at line 391 of file Axis.cpp.

◆ setEffectTorque()

void Axis::setEffectTorque ( int32_t  torque)

Definition at line 712 of file Axis.cpp.

◆ setEncType()

void Axis::setEncType ( uint8_t  enctype)

Init the encoder and reset metrics

Definition at line 451 of file Axis.cpp.

◆ setExpo()

void Axis::setExpo ( int  val)
private

Definition at line 815 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 626 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 577 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 475 of file Axis.cpp.

◆ setIdleSpringStrength()

void Axis::setIdleSpringStrength ( uint8_t  spring)

Definition at line 568 of file Axis.cpp.

◆ setPos()

void Axis::setPos ( uint16_t  val)

Definition at line 282 of file Axis.cpp.

◆ setPower()

void Axis::setPower ( uint16_t  power)

Definition at line 371 of file Axis.cpp.

◆ setupTMC4671()

void Axis::setupTMC4671 ( )

Definition at line 429 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 794 of file Axis.cpp.

◆ updateDriveTorque()

void Axis::updateDriveTorque ( )

Definition at line 361 of file Axis.cpp.

◆ updateEndstop()

int16_t Axis::updateEndstop ( )

Calculate soft endstop effect

Definition at line 700 of file Axis.cpp.

◆ updateIdleSpringForce()

int32_t Axis::updateIdleSpringForce ( )

Changes intensity of idle spring when FFB is off

Definition at line 561 of file Axis.cpp.

◆ updateMetrics()

void Axis::updateMetrics ( float  new_pos)

Updates metrics

Definition at line 647 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 720 of file Axis.cpp.

◆ updateTorqueScaler()

void Axis::updateTorqueScaler ( )
private

Definition at line 681 of file Axis.cpp.

◆ usbResume()

void Axis::usbResume ( )

Enables motor driver

Definition at line 538 of file Axis.cpp.

◆ usbSuspend()

void Axis::usbSuspend ( )

Disables torque and motor driver

Definition at line 528 of file Axis.cpp.

◆ zeroPos()

void Axis::zeroPos ( )

Member Data Documentation

◆ _lastSpeed

float Axis::_lastSpeed = 0
private

Definition at line 238 of file Axis.h.

◆ accelFilter

Definition at line 270 of file Axis.h.

◆ axis

char Axis::axis
private

Definition at line 233 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 176 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 177 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 181 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 182 of file Axis.h.

◆ axisEffectTorque

int32_t Axis::axisEffectTorque = 0
private

Definition at line 240 of file Axis.h.

◆ conf

AxisConfig Axis::conf
private

Definition at line 188 of file Axis.h.

◆ control

volatile Control_t* Axis::control
private

Definition at line 185 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 271 of file Axis.h.

◆ damperIntensity

uint8_t Axis::damperIntensity = 30
private

Definition at line 264 of file Axis.h.

◆ degreesOfRotation

uint16_t Axis::degreesOfRotation = 900
private

Definition at line 213 of file Axis.h.

◆ drv

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

Definition at line 190 of file Axis.h.

◆ drv_chooser

ClassChooser<MotorDriver> Axis::drv_chooser

Definition at line 151 of file Axis.h.

◆ effect_margin_scaler

float Axis::effect_margin_scaler = 0
private

Definition at line 244 of file Axis.h.

◆ effectTorque

int32_t Axis::effectTorque = 0
private

Definition at line 239 of file Axis.h.

◆ enc

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

Definition at line 191 of file Axis.h.

◆ enc_chooser

ClassChooser<Encoder> Axis::enc_chooser

Definition at line 152 of file Axis.h.

◆ encoderOffset

float Axis::encoderOffset = 0
private

Definition at line 212 of file Axis.h.

◆ endstopGain

const float Axis::endstopGain = 25
private

Definition at line 247 of file Axis.h.

◆ endstopStrength

uint8_t Axis::endstopStrength = 127
private

Definition at line 246 of file Axis.h.

◆ expo

float Axis::expo = 1
private

Definition at line 285 of file Axis.h.

◆ expoScaler

float Axis::expoScaler = 50
private

Definition at line 286 of file Axis.h.

◆ expoValInt

int Axis::expoValInt = 0
private

Definition at line 284 of file Axis.h.

◆ filter_f

const float Axis::filter_f = 1000
private

Definition at line 262 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 257 of file Axis.h.

◆ filterDamperCst

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

Definition at line 258 of file Axis.h.

◆ filterFrictionCst

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

Definition at line 259 of file Axis.h.

◆ filterInertiaCst

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

Definition at line 260 of file Axis.h.

◆ filterProfileId

uint8_t Axis::filterProfileId = 1
private

Definition at line 261 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 256 of file Axis.h.

◆ flashAddrs

AxisFlashAddrs Axis::flashAddrs
private

Definition at line 184 of file Axis.h.

◆ forceFadeCurMult

float Axis::forceFadeCurMult = 1.0
private

Definition at line 201 of file Axis.h.

◆ forceFadeTime

float Axis::forceFadeTime = 1.0
private

Definition at line 200 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 272 of file Axis.h.

◆ frictionIntensity

uint8_t Axis::frictionIntensity = 0
private

Definition at line 266 of file Axis.h.

◆ fx_ratio_i

uint8_t Axis::fx_ratio_i = 204
private

Definition at line 241 of file Axis.h.

◆ gearRatio

GearRatio_t Axis::gearRatio
private

Definition at line 282 of file Axis.h.

◆ idlespringclip

int16_t Axis::idlespringclip = 0
private

Definition at line 251 of file Axis.h.

◆ idlespringscale

float Axis::idlespringscale = 0
private

Definition at line 252 of file Axis.h.

◆ idlespringstrength

uint8_t Axis::idlespringstrength = 127
private

Definition at line 250 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 273 of file Axis.h.

◆ inertiaIntensity

uint8_t Axis::inertiaIntensity = 0
private

Definition at line 267 of file Axis.h.

◆ info

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

Definition at line 106 of file Axis.h.

◆ intFxClip

const int32_t Axis::intFxClip = 20000
private

Definition at line 263 of file Axis.h.

◆ invertAxis

bool Axis::invertAxis = true
private

Definition at line 245 of file Axis.h.

◆ lastdegreesOfRotation

uint16_t Axis::lastdegreesOfRotation = degreesOfRotation
private

Definition at line 214 of file Axis.h.

◆ maxSpeedDegS

uint16_t Axis::maxSpeedDegS = 0
private

Definition at line 218 of file Axis.h.

◆ maxTorqueRateMS

uint32_t Axis::maxTorqueRateMS = 0
private

Definition at line 220 of file Axis.h.

◆ metric

axis_metric_t Axis::metric
private

Definition at line 237 of file Axis.h.

◆ motorWasNotReady

bool Axis::motorWasNotReady = true
private

Definition at line 253 of file Axis.h.

◆ nextDegreesOfRotation

uint16_t Axis::nextDegreesOfRotation = degreesOfRotation
private

Definition at line 215 of file Axis.h.

◆ outOfBounds

bool Axis::outOfBounds = false
private

Definition at line 193 of file Axis.h.

◆ outOfBoundsError

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

Definition at line 198 of file Axis.h.

◆ power

uint16_t Axis::power = 5000
private

Definition at line 242 of file Axis.h.

◆ spdlimitreducerI

float Axis::spdlimitreducerI = 0
private

Definition at line 224 of file Axis.h.

◆ speedFilter

Definition at line 269 of file Axis.h.

◆ speedLimiterI

float Axis::speedLimiterI = AXIS_SPEEDLIMITER_I
private

Definition at line 222 of file Axis.h.

◆ speedLimiterP

float Axis::speedLimiterP = AXIS_SPEEDLIMITER_P
private

Definition at line 221 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 204 of file Axis.h.

◆ torqueScaler

float Axis::torqueScaler = 0
private

Definition at line 243 of file Axis.h.


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