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

#include <SwerveDriveTelemetry.hpp>

Public Types

using DoubleTelemetryField = SwerveDriveTelemetryConfig::DoubleTelemetryField
 
using BooleanTelemetryField = SwerveDriveTelemetryConfig::BooleanTelemetryField
 
using StructTelemetryField = SwerveDriveTelemetryConfig::StructTelemetryField
 
using StructArrayTelemetryField = SwerveDriveTelemetryConfig::StructArrayTelemetryField
 

Public Member Functions

 SwerveDriveTelemetry (SwerveDriveTelemetryConfig config)
 
template<std::size_t NumModules>
void SetupTelemetry (mechanisms::swerve::SwerveDrive< NumModules > *drive)
 
template<std::size_t NumModules>
void Publish (mechanisms::swerve::SwerveDrive< NumModules > *drive)
 
template<std::size_t NumModules>
void ApplyTuningValues (mechanisms::swerve::SwerveDrive< NumModules > *drive)
 
template<std::size_t NumModules>
void StopTuning (mechanisms::swerve::SwerveDrive< NumModules > *drive)
 
void Close ()
 

Detailed Description

Swerve drive telemetry.

Publishes pose, chassis speeds, gyro angle, and module states to NetworkTables and/or a WPILib DataLog, and exposes auto-align (DriveToPose) PID gains plus a live-tunable target pose for on-the-fly tuning. Also drives per-module telemetry setup via SwerveModule::SetupTelemetry().

SetupTelemetry(), Publish(), and ApplyTuningValues() are templated on the SwerveDrive's module count so that this class itself does not need to be templated; their bodies are defined at the bottom of SwerveDrive.hpp (after SwerveDrive<NumModules> is fully defined), which is the only place both this class's members and SwerveDrive<NumModules>'s interface are simultaneously complete.

This class is managed internally by SwerveDrive. You do not normally instantiate it directly; instead configure telemetry through SwerveDriveConfig::WithTelemetry(...).

Member Typedef Documentation

◆ BooleanTelemetryField

◆ DoubleTelemetryField

◆ StructArrayTelemetryField

◆ StructTelemetryField

Constructor & Destructor Documentation

◆ SwerveDriveTelemetry()

yams::telemetry::SwerveDriveTelemetry::SwerveDriveTelemetry ( SwerveDriveTelemetryConfig  config)
explicit

Create SwerveDrive telemetry for logging in NetworkTables and DataLog.

Parameters
configTelemetry configuration selecting which fields to publish.

Member Function Documentation

◆ ApplyTuningValues()

template<std::size_t NumModules>
void yams::telemetry::SwerveDriveTelemetry::ApplyTuningValues ( mechanisms::swerve::SwerveDrive< NumModules > *  drive)

Apply the tuning values from NetworkTables to the drive.

Parameters
driveDrive to control.

◆ Close()

void yams::telemetry::SwerveDriveTelemetry::Close ( )

Release all NT4 pub/sub handles.

◆ Publish()

template<std::size_t NumModules>
void yams::telemetry::SwerveDriveTelemetry::Publish ( mechanisms::swerve::SwerveDrive< NumModules > *  drive)

Publish telemetry to NetworkTables and DataLog.

Parameters
driveDrive to publish telemetry from.

◆ SetupTelemetry()

template<std::size_t NumModules>
void yams::telemetry::SwerveDriveTelemetry::SetupTelemetry ( mechanisms::swerve::SwerveDrive< NumModules > *  drive)

Setup telemetry for the drive; also sets up telemetry for each module.

Parameters
driveDrive to set up telemetry for.

◆ StopTuning()

template<std::size_t NumModules>
void yams::telemetry::SwerveDriveTelemetry::StopTuning ( mechanisms::swerve::SwerveDrive< NumModules > *  drive)

Stop applying a tuning voltage, as when the tuning command ends, and hold every wheel still where it is with its closed-loop controller.

Parameters
driveDrive being tuned.

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