YAMS
Yet Another Mechanism System
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
yams::telemetry::SwerveDriveTelemetryConfig Class Reference

#include <SwerveDriveTelemetryConfig.hpp>

Public Types

enum class  StructTelemetryField { Pose , DesiredRobotRelativeChassisSpeeds , CurrentRobotRelativeChassisSpeeds , FieldRelativeChassisSpeeds }
 
enum class  StructArrayTelemetryField { DesiredModuleStates , CurrentModuleStates }
 
enum class  DoubleTelemetryField {
  TranslationP , TranslationI , TranslationD , RotationP ,
  RotationI , RotationD , AutoAlignPoseX , AutoAlignPoseY ,
  AutoAlignPoseRotation , ModulesDriveP , ModulesDriveI , ModulesDriveD ,
  ModulesDriveKs , ModulesDriveKv , ModulesDriveKa , ModulesDriveVelocity ,
  ModulesDriveVoltage , ModulesAzimuthP , ModulesAzimuthI , ModulesAzimuthD ,
  ModulesAzimuthKs , ModulesAzimuthKv , ModulesAzimuthKa , ModulesAzimuthAngle ,
  ModulesAzimuthVoltage , Gyro
}
 
enum class  BooleanTelemetryField {
  AutoAlignEnabled , ModulesDriveTuningEnabled , ModulesDriveInPlace , ModulesDriveVoltageEnabled ,
  ModulesAzimuthTuningEnabled , ModulesAzimuthVoltageEnabled
}
 
using TelemetryVerbosity = motorcontrollers::SmartMotorControllerConfig::TelemetryVerbosity
 

Public Member Functions

 SwerveDriveTelemetryConfig ()
 
 SwerveDriveTelemetryConfig (TelemetryVerbosity verbosity)
 
SwerveDriveTelemetryConfig & WithDataLogName (const std::string &dataLogName)
 
SwerveDriveTelemetryConfig & WithNetworkTables (bool enabled)
 
SwerveDriveTelemetryConfig & WithoutNetworkTables ()
 
SwerveDriveTelemetryConfig & WithTelemetryVerbosity (TelemetryVerbosity verbosity)
 
SwerveDriveTelemetryConfig & WithPose ()
 
SwerveDriveTelemetryConfig & WithGyro ()
 
SwerveDriveTelemetryConfig & WithDesiredRobotRelativeChassisSpeeds ()
 
SwerveDriveTelemetryConfig & WithCurrentRobotRelativeChassisSpeeds ()
 
SwerveDriveTelemetryConfig & WithFieldRelativeChassisSpeeds ()
 
SwerveDriveTelemetryConfig & WithDesiredModuleStates ()
 
SwerveDriveTelemetryConfig & WithCurrentModuleStates ()
 
std::optional< std::string > GetDataLogName () const
 
bool GetNT4Enabled () const
 
std::unordered_map< DoubleTelemetryField, DoubleTelemetry< DoubleTelemetryField > > & GetDoubleFields ()
 
std::unordered_map< BooleanTelemetryField, BooleanTelemetry< BooleanTelemetryField > > & GetBoolFields ()
 
std::unordered_map< StructTelemetryField, StructTelemetry< wpi::math::Pose2d, StructTelemetryField > > & GetPoseFields ()
 
std::unordered_map< StructTelemetryField, StructTelemetry< wpi::math::ChassisVelocities, StructTelemetryField > > & GetChassisSpeedsFields ()
 
std::unordered_map< StructArrayTelemetryField, StructArrayTelemetry< wpi::math::SwerveModuleVelocity, StructArrayTelemetryField > > & GetModuleStatesFields ()
 
SwerveDriveTelemetryConfig & WithCustom (DoubleTelemetryField field, bool value)
 
SwerveDriveTelemetryConfig & WithCustom (StructTelemetryField field, bool value)
 
SwerveDriveTelemetryConfig & WithCustom (StructArrayTelemetryField field, bool value)
 
SwerveDriveTelemetryConfig & WithCustom (BooleanTelemetryField field, bool value)
 
SwerveDriveTelemetryConfig & WithCustom (const std::vector< DoubleTelemetryField > &fields, bool value)
 
SwerveDriveTelemetryConfig & WithCustom (const std::vector< StructTelemetryField > &fields, bool value)
 
SwerveDriveTelemetryConfig & WithCustom (const std::vector< StructArrayTelemetryField > &fields, bool value)
 
SwerveDriveTelemetryConfig & WithCustom (const std::vector< BooleanTelemetryField > &fields, bool value)
 

Detailed Description

Swerve drive telemetry configuration.

Use this builder to select exactly which fields are published to NetworkTables and/or DataLog. Every field is disabled by default; call the individual With*() methods to opt in, or use WithTelemetryVerbosity() to enable a predefined set.

The field enums are owned by this class (rather than by SwerveDriveTelemetry) so that this config header has no dependency on SwerveDriveTelemetry.hpp; SwerveDriveTelemetry re-exposes them via type aliases for API parity.

Example

.WithTelemetryVerbosity(TelemetryVerbosity::HIGH)
.WithDataLogName("swerve");
Definition SwerveDriveTelemetryConfig.hpp:51
SwerveDriveTelemetryConfig & WithGyro()
SwerveDriveTelemetryConfig & WithCurrentRobotRelativeChassisSpeeds()
SwerveDriveTelemetryConfig & WithDesiredRobotRelativeChassisSpeeds()
SwerveDriveTelemetryConfig & WithDesiredModuleStates()
SwerveDriveTelemetryConfig & WithDataLogName(const std::string &dataLogName)
SwerveDriveTelemetryConfig & WithFieldRelativeChassisSpeeds()
SwerveDriveTelemetryConfig & WithTelemetryVerbosity(TelemetryVerbosity verbosity)
SwerveDriveTelemetryConfig & WithCurrentModuleStates()
SwerveDriveTelemetryConfig & WithoutNetworkTables()
SwerveDriveTelemetryConfig & WithPose()

Member Typedef Documentation

◆ TelemetryVerbosity

Member Enumeration Documentation

◆ BooleanTelemetryField

Boolean telemetry field for a SwerveDrive.

Enumerator
AutoAlignEnabled 

Enables or disables driving to the auto-align target pose.

ModulesDriveTuningEnabled 

Enables or disables live tuning of every module's drive motor PID gains and velocity setpoint.

ModulesDriveInPlace 

When enabled ensures drive testing is done with all modules oriented so the swerve drive will drive counter-clockwise positive.

ModulesDriveVoltageEnabled 

While drive tuning is on, drive every module's drive motor at ModulesDriveVoltage instead of the velocity setpoint, without its closed-loop controller, as for characterizing it.

ModulesAzimuthTuningEnabled 

Enables or disables live tuning of every module's azimuth motor PID gains and angle setpoint.

ModulesAzimuthVoltageEnabled 

While azimuth tuning is on, turn every module's azimuth motor at ModulesAzimuthVoltage instead of the angle setpoint, without its closed-loop controller, as for characterizing it.

◆ DoubleTelemetryField

Double telemetry field for a SwerveDrive.

Enumerator
TranslationP 

Translational proportional gain for auto-aligning the robot.

TranslationI 

Translational integral gain for auto-aligning the robot.

TranslationD 

Translational derivative gain for auto-aligning the robot.

RotationP 

Rotational proportional gain for auto-aligning the robot.

RotationI 

Rotational integral gain for auto-aligning the robot.

RotationD 

Rotational derivative gain for auto-aligning the robot.

AutoAlignPoseX 

X position of the auto-align target pose, in meters.

AutoAlignPoseY 

Y position of the auto-align target pose, in meters.

AutoAlignPoseRotation 

Rotation of the auto-align target pose, in degrees.

ModulesDriveP 

Proportional gain for tuning every module's drive motor closed-loop controller.

ModulesDriveI 

Integral gain for tuning every module's drive motor closed-loop controller.

ModulesDriveD 

Derivative gain for tuning every module's drive motor closed-loop controller.

ModulesDriveKs 

Static feedforward gain for tuning every module's drive motor.

ModulesDriveKv 

Velocity feedforward gain for tuning every module's drive motor.

ModulesDriveKa 

Acceleration feedforward gain for tuning every module's drive motor.

ModulesDriveVelocity 

Tunable velocity setpoint applied to every module's drive motor, in meters per second.

ModulesDriveVoltage 

Tunable voltage applied to every module's drive motor, without its closed-loop controller, while ModulesDriveVoltageEnabled is on.

ModulesAzimuthP 

Proportional gain for tuning every module's azimuth motor closed-loop controller.

ModulesAzimuthI 

Integral gain for tuning every module's azimuth motor closed-loop controller.

ModulesAzimuthD 

Derivative gain for tuning every module's azimuth motor closed-loop controller.

ModulesAzimuthKs 

Static feedforward gain for tuning every module's azimuth motor.

ModulesAzimuthKv 

Velocity feedforward gain for tuning every module's azimuth motor.

ModulesAzimuthKa 

Acceleration feedforward gain for tuning every module's azimuth motor.

ModulesAzimuthAngle 

Tunable angle setpoint applied to every module's azimuth motor, in degrees.

ModulesAzimuthVoltage 

Tunable voltage applied to every module's azimuth motor, without its closed-loop controller, while ModulesAzimuthVoltageEnabled is on.

Gyro 

Gyro angle, in degrees.

◆ StructArrayTelemetryField

Struct array telemetry field for a SwerveDrive, backed by wpi::math::SwerveModuleVelocity.

Enumerator
DesiredModuleStates 

Last-commanded desired module states.

CurrentModuleStates 

Measured module states.

◆ StructTelemetryField

Struct telemetry field for a SwerveDrive, backed by wpi::math::Pose2d.

Enumerator
Pose 

Estimated field-relative pose of the robot.

DesiredRobotRelativeChassisSpeeds 

Last-commanded desired robot-relative chassis speeds.

CurrentRobotRelativeChassisSpeeds 

Measured robot-relative chassis speeds.

FieldRelativeChassisSpeeds 

Measured field-relative chassis speeds.

Constructor & Destructor Documentation

◆ SwerveDriveTelemetryConfig() [1/2]

yams::telemetry::SwerveDriveTelemetryConfig::SwerveDriveTelemetryConfig ( )

◆ SwerveDriveTelemetryConfig() [2/2]

yams::telemetry::SwerveDriveTelemetryConfig::SwerveDriveTelemetryConfig ( TelemetryVerbosity  verbosity)
explicit

Construct with a verbosity preset.

Parameters
verbosityTelemetryVerbosity to use by default.

Member Function Documentation

◆ GetBoolFields()

std::unordered_map< BooleanTelemetryField, BooleanTelemetry< BooleanTelemetryField > > & yams::telemetry::SwerveDriveTelemetryConfig::GetBoolFields ( )
Returns
Configured BooleanTelemetry for each BooleanTelemetryField.

◆ GetChassisSpeedsFields()

std::unordered_map< StructTelemetryField, StructTelemetry< wpi::math::ChassisVelocities, StructTelemetryField > > & yams::telemetry::SwerveDriveTelemetryConfig::GetChassisSpeedsFields ( )
Returns
Configured StructTelemetry<ChassisSpeeds> for the chassis speeds fields.

◆ GetDataLogName()

std::optional< std::string > yams::telemetry::SwerveDriveTelemetryConfig::GetDataLogName ( ) const
Returns
Optional DataLog entry name.

◆ GetDoubleFields()

std::unordered_map< DoubleTelemetryField, DoubleTelemetry< DoubleTelemetryField > > & yams::telemetry::SwerveDriveTelemetryConfig::GetDoubleFields ( )
Returns
Configured DoubleTelemetry for each DoubleTelemetryField.

◆ GetModuleStatesFields()

std::unordered_map< StructArrayTelemetryField, StructArrayTelemetry< wpi::math::SwerveModuleVelocity, StructArrayTelemetryField > > & yams::telemetry::SwerveDriveTelemetryConfig::GetModuleStatesFields ( )
Returns
Configured StructArrayTelemetry<SwerveModuleState> for the module state fields.

◆ GetNT4Enabled()

bool yams::telemetry::SwerveDriveTelemetryConfig::GetNT4Enabled ( ) const
Returns
true if NT4 output is enabled.

◆ GetPoseFields()

std::unordered_map< StructTelemetryField, StructTelemetry< wpi::math::Pose2d, StructTelemetryField > > & yams::telemetry::SwerveDriveTelemetryConfig::GetPoseFields ( )
Returns
Configured StructTelemetry<Pose2d> for Pose.

◆ WithCurrentModuleStates()

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithCurrentModuleStates ( )

Enables the measured module states logging.

◆ WithCurrentRobotRelativeChassisSpeeds()

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithCurrentRobotRelativeChassisSpeeds ( )

Enables the measured robot relative chassis speeds logging.

◆ WithCustom() [1/8]

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithCustom ( BooleanTelemetryField  field,
bool  value 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ WithCustom() [2/8]

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithCustom ( const std::vector< BooleanTelemetryField > &  fields,
bool  value 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ WithCustom() [3/8]

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithCustom ( const std::vector< DoubleTelemetryField > &  fields,
bool  value 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ WithCustom() [4/8]

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithCustom ( const std::vector< StructArrayTelemetryField > &  fields,
bool  value 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ WithCustom() [5/8]

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithCustom ( const std::vector< StructTelemetryField > &  fields,
bool  value 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ WithCustom() [6/8]

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithCustom ( DoubleTelemetryField  field,
bool  value 
)

Escape hatch for unimplemented fields which should be enabled or disabled.

Parameters
fieldField to configure.
valueEnable on true, disable on false.
Returns
*this for chaining.

◆ WithCustom() [7/8]

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithCustom ( StructArrayTelemetryField  field,
bool  value 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ WithCustom() [8/8]

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithCustom ( StructTelemetryField  field,
bool  value 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ WithDataLogName()

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithDataLogName ( const std::string &  dataLogName)

Set up a DataLog entry for this drive.

Parameters
dataLogNameDataLog entry name.
Returns
*this for chaining.

◆ WithDesiredModuleStates()

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithDesiredModuleStates ( )

Enables the last-commanded desired module states logging.

◆ WithDesiredRobotRelativeChassisSpeeds()

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithDesiredRobotRelativeChassisSpeeds ( )

Enables the last-commanded desired robot relative chassis speeds logging.

◆ WithFieldRelativeChassisSpeeds()

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithFieldRelativeChassisSpeeds ( )

Enables the measured field relative chassis speeds logging.

◆ WithGyro()

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithGyro ( )

Enables the gyro angle logging.

Returns
*this for chaining.

◆ WithNetworkTables()

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithNetworkTables ( bool  enabled)

Enable or disable NT4 telemetry. This will not create NT4 entries and is generally only advisable during competition matches.

Parameters
enabledtrue to enable NT4 output.
Returns
*this for chaining.

◆ WithoutNetworkTables()

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithoutNetworkTables ( )

Disable NetworkTable output.

Returns
*this for chaining.

◆ WithPose()

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithPose ( )

Enables the pose logging.

Returns
*this for chaining.

◆ WithTelemetryVerbosity()

SwerveDriveTelemetryConfig & yams::telemetry::SwerveDriveTelemetryConfig::WithTelemetryVerbosity ( TelemetryVerbosity  verbosity)

Enable a preset bundle of fields based on verbosity level.

Parameters
verbosityVerbosity level to apply.
Returns
*this for chaining.

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