|
YAMS
Yet Another Mechanism System
|
#include <SwerveDriveTelemetry.hpp>
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 () |
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(...).
| using yams::telemetry::SwerveDriveTelemetry::BooleanTelemetryField = SwerveDriveTelemetryConfig::BooleanTelemetryField |
| using yams::telemetry::SwerveDriveTelemetry::DoubleTelemetryField = SwerveDriveTelemetryConfig::DoubleTelemetryField |
| using yams::telemetry::SwerveDriveTelemetry::StructArrayTelemetryField = SwerveDriveTelemetryConfig::StructArrayTelemetryField |
| using yams::telemetry::SwerveDriveTelemetry::StructTelemetryField = SwerveDriveTelemetryConfig::StructTelemetryField |
|
explicit |
Create SwerveDrive telemetry for logging in NetworkTables and DataLog.
| config | Telemetry configuration selecting which fields to publish. |
| void yams::telemetry::SwerveDriveTelemetry::ApplyTuningValues | ( | mechanisms::swerve::SwerveDrive< NumModules > * | drive | ) |
Apply the tuning values from NetworkTables to the drive.
| drive | Drive to control. |
| void yams::telemetry::SwerveDriveTelemetry::Close | ( | ) |
Release all NT4 pub/sub handles.
| void yams::telemetry::SwerveDriveTelemetry::Publish | ( | mechanisms::swerve::SwerveDrive< NumModules > * | drive | ) |
Publish telemetry to NetworkTables and DataLog.
| drive | Drive to publish telemetry from. |
| void yams::telemetry::SwerveDriveTelemetry::SetupTelemetry | ( | mechanisms::swerve::SwerveDrive< NumModules > * | drive | ) |
Setup telemetry for the drive; also sets up telemetry for each module.
| drive | Drive to set up telemetry for. |
| 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.
| drive | Drive being tuned. |