WPILibC++ 2024.3.2
frc::LinearSystemId Class Reference

Linear system ID utility functions. More...

#include <frc/system/plant/LinearSystemId.h>

Public Types

template<typename Distance >
using Velocity_t = units::unit_t< units::compound_unit< Distance, units::inverse< units::seconds > > >

template<typename Distance >
using Acceleration_t = units::unit_t< units::compound_unit< units::compound_unit< Distance, units::inverse< units::seconds > >, units::inverse< units::seconds > > >

Static Public Member Functions

static LinearSystem< 2, 1, 1 > ElevatorSystem (DCMotor motor, units::kilogram_t mass, units::meter_t radius, double gearing)
Create a state-space model of the elevator system. More...

static LinearSystem< 2, 1, 1 > SingleJointedArmSystem (DCMotor motor, units::kilogram_square_meter_t J, double gearing)
Create a state-space model of a single-jointed arm system.The states of the system are [angle, angular velocity], inputs are [voltage], and outputs are [angle]. More...

template<typename Distance >
requires std::same_as<units::meter, Distance> || std::same_as<units::radian, Distance>
static LinearSystem< 1, 1, 1 > IdentifyVelocitySystem (decltype(1_V/Velocity_t< Distance >(1)) kV, decltype(1_V/Acceleration_t< Distance >(1)) kA)
Create a state-space model for a 1 DOF velocity system from its kV (volts/(unit/sec)) and kA (volts/(unit/sec²)). More...

template<typename Distance >
requires std::same_as<units::meter, Distance> || std::same_as<units::radian, Distance>
static LinearSystem< 2, 1, 1 > IdentifyPositionSystem (decltype(1_V/Velocity_t< Distance >(1)) kV, decltype(1_V/Acceleration_t< Distance >(1)) kA)
Create a state-space model for a 1 DOF position system from its kV (volts/(unit/sec)) and kA (volts/(unit/sec²)). More...

static LinearSystem< 2, 2, 2 > IdentifyDrivetrainSystem (decltype(1_V/1_mps) kVLinear, decltype(1_V/1_mps_sq) kALinear, decltype(1_V/1_mps) kVAngular, decltype(1_V/1_mps_sq) kAAngular)
Identify a differential drive drivetrain given the drivetrain's kV and kA in both linear {(volts/(meter/sec), (volts/(meter/sec²))} and angular {(volts/(radian/sec), (volts/(radian/sec²))} cases. More...

static LinearSystem< 2, 2, 2 > IdentifyDrivetrainSystem (decltype(1_V/1_mps) kVLinear, decltype(1_V/1_mps_sq) kALinear, decltype(1_V/1_rad_per_s) kVAngular, decltype(1_V/1_rad_per_s_sq) kAAngular, units::meter_t trackwidth)
Identify a differential drive drivetrain given the drivetrain's kV and kA in both linear {(volts/(meter/sec)), (volts/(meter/sec²))} and angular {(volts/(radian/sec)), (volts/(radian/sec²))} cases. More...

static LinearSystem< 1, 1, 1 > FlywheelSystem (DCMotor motor, units::kilogram_square_meter_t J, double gearing)
Create a state-space model of a flywheel system, the states of the system are [angular velocity], inputs are [voltage], and outputs are [angular velocity]. More...

static LinearSystem< 2, 1, 2 > DCMotorSystem (DCMotor motor, units::kilogram_square_meter_t J, double gearing)
Create a state-space model of a DC motor system. More...

template<typename Distance >
requires std::same_as<units::meter, Distance> || std::same_as<units::radian, Distance>
static LinearSystem< 2, 1, 2 > DCMotorSystem (decltype(1_V/Velocity_t< Distance >(1)) kV, decltype(1_V/Acceleration_t< Distance >(1)) kA)
Create a state-space model of a DC motor system from its kV (volts/(unit/sec)) and kA (volts/(unit/sec²)). More...

static LinearSystem< 2, 2, 2 > DrivetrainVelocitySystem (const DCMotor &motor, units::kilogram_t mass, units::meter_t r, units::meter_t rb, units::kilogram_square_meter_t J, double gearing)
Create a state-space model of differential drive drivetrain. More...

Detailed Description

Linear system ID utility functions.

◆ Acceleration_t

template<typename Distance >
 using frc::LinearSystemId::Acceleration_t = units::unit_t >, units::inverse >>

◆ Velocity_t

template<typename Distance >
 using frc::LinearSystemId::Velocity_t = units::unit_t< units::compound_unit >>

◆ DCMotorSystem() [1/2]

 static LinearSystem< 2, 1, 2 > frc::LinearSystemId::DCMotorSystem ( DCMotor motor, units::kilogram_square_meter_t J, double gearing )
static

Create a state-space model of a DC motor system.

The states of the system are [angular position, angular velocity], inputs are [voltage], and outputs are [angular position, angular velocity].

Parameters
 motor The motor (or gearbox) attached to the system. J the moment of inertia J of the DC motor. gearing Gear ratio from motor to output.
Exceptions
 std::domain_error if J <= 0 or gearing <= 0.
https://github.com/wpilibsuite/sysid

◆ DCMotorSystem() [2/2]

template<typename Distance >
requires std::same_as<units::meter, Distance> || std::same_as<units::radian, Distance>
 static LinearSystem< 2, 1, 2 > frc::LinearSystemId::DCMotorSystem ( decltype(1_V/Velocity_t< Distance >(1)) kV, decltype(1_V/Acceleration_t< Distance >(1)) kA )
inlinestatic

Create a state-space model of a DC motor system from its kV (volts/(unit/sec)) and kA (volts/(unit/sec²)).

These constants can be found using SysId. the states of the system are [position, velocity], inputs are [voltage], and outputs are [position].

You MUST use an SI unit (i.e. meters or radians) for the Distance template argument. You may still use non-SI units (such as feet or inches) for the actual method arguments; they will automatically be converted to SI internally.

The parameters provided by the user are from this feedforward model:

u = K_v v + K_a a

Parameters
 kV The velocity gain, in volts/(unit/sec). kA The acceleration gain, in volts/(unit/sec²).
Exceptions
 std::domain_error if kV < 0 or kA <= 0.

◆ DrivetrainVelocitySystem()

 static LinearSystem< 2, 2, 2 > frc::LinearSystemId::DrivetrainVelocitySystem ( const DCMotor & motor, units::kilogram_t mass, units::meter_t r, units::meter_t rb, units::kilogram_square_meter_t J, double gearing )
static

Create a state-space model of differential drive drivetrain.

In this model, the states are [left velocity, right velocity], the inputs are [left voltage, right voltage], and the outputs are [left velocity, right velocity]

Parameters
 motor The motor (or gearbox) driving the drivetrain. mass The mass of the robot in kilograms. r The radius of the wheels in meters. rb The radius of the base (half of the track width), in meters. J The moment of inertia of the robot. gearing Gear ratio from motor to wheel.
Exceptions
 std::domain_error if mass <= 0, r <= 0, rb <= 0, J <= 0, or gearing <= 0.

◆ ElevatorSystem()

 static LinearSystem< 2, 1, 1 > frc::LinearSystemId::ElevatorSystem ( DCMotor motor, units::kilogram_t mass, units::meter_t radius, double gearing )
static

Create a state-space model of the elevator system.

The states of the system are [position, velocity], inputs are [voltage], and outputs are [position].

Parameters
 motor The motor (or gearbox) attached to the carriage. mass The mass of the elevator carriage, in kilograms. radius The radius of the elevator's driving drum, in meters. gearing Gear ratio from motor to carriage.
Exceptions
 std::domain_error if mass <= 0, radius <= 0, or gearing <= 0.

◆ FlywheelSystem()

 static LinearSystem< 1, 1, 1 > frc::LinearSystemId::FlywheelSystem ( DCMotor motor, units::kilogram_square_meter_t J, double gearing )
static

Create a state-space model of a flywheel system, the states of the system are [angular velocity], inputs are [voltage], and outputs are [angular velocity].

Parameters
 motor The motor (or gearbox) attached to the flywheel. J The moment of inertia J of the flywheel. gearing Gear ratio from motor to flywheel.
Exceptions
 std::domain_error if J <= 0 or gearing <= 0.

◆ IdentifyDrivetrainSystem() [1/2]

 static LinearSystem< 2, 2, 2 > frc::LinearSystemId::IdentifyDrivetrainSystem ( decltype(1_V/1_mps) kVLinear, decltype(1_V/1_mps_sq) kALinear, decltype(1_V/1_mps) kVAngular, decltype(1_V/1_mps_sq) kAAngular )
static

Identify a differential drive drivetrain given the drivetrain's kV and kA in both linear {(volts/(meter/sec), (volts/(meter/sec²))} and angular {(volts/(radian/sec), (volts/(radian/sec²))} cases.

These constants can be found using SysId.

States: [[left velocity], [right velocity]]
Inputs: [[left voltage], [right voltage]]
Outputs: [[left velocity], [right velocity]]

Parameters
 kVLinear The linear velocity gain in volts per (meters per second). kALinear The linear acceleration gain in volts per (meters per second squared). kVAngular The angular velocity gain in volts per (meters per second). kAAngular The angular acceleration gain in volts per (meters per second squared).
Exceptions
 domain_error if kVLinear <= 0, kALinear <= 0, kVAngular <= 0, or kAAngular <= 0.
https://github.com/wpilibsuite/sysid

◆ IdentifyDrivetrainSystem() [2/2]

 static LinearSystem< 2, 2, 2 > frc::LinearSystemId::IdentifyDrivetrainSystem ( decltype(1_V/1_mps) kVLinear, decltype(1_V/1_mps_sq) kALinear, decltype(1_V/1_rad_per_s) kVAngular, decltype(1_V/1_rad_per_s_sq) kAAngular, units::meter_t trackwidth )
static

Identify a differential drive drivetrain given the drivetrain's kV and kA in both linear {(volts/(meter/sec)), (volts/(meter/sec²))} and angular {(volts/(radian/sec)), (volts/(radian/sec²))} cases.

This can be found using SysId.

States: [[left velocity], [right velocity]]
Inputs: [[left voltage], [right voltage]]
Outputs: [[left velocity], [right velocity]]

Parameters
 kVLinear The linear velocity gain in volts per (meters per second). kALinear The linear acceleration gain in volts per (meters per second squared). kVAngular The angular velocity gain in volts per (radians per second). kAAngular The angular acceleration gain in volts per (radians per second squared). trackwidth The distance between the differential drive's left and right wheels, in meters.
Exceptions
 domain_error if kVLinear <= 0, kALinear <= 0, kVAngular <= 0, kAAngular <= 0, or trackwidth <= 0.
https://github.com/wpilibsuite/sysid

◆ IdentifyPositionSystem()

template<typename Distance >
requires std::same_as<units::meter, Distance> || std::same_as<units::radian, Distance>
 static LinearSystem< 2, 1, 1 > frc::LinearSystemId::IdentifyPositionSystem ( decltype(1_V/Velocity_t< Distance >(1)) kV, decltype(1_V/Acceleration_t< Distance >(1)) kA )
inlinestatic

Create a state-space model for a 1 DOF position system from its kV (volts/(unit/sec)) and kA (volts/(unit/sec²)).

These constants can be found using SysId. the states of the system are [position, velocity], inputs are [voltage], and outputs are [position].

You MUST use an SI unit (i.e. meters or radians) for the Distance template argument. You may still use non-SI units (such as feet or inches) for the actual method arguments; they will automatically be converted to SI internally.

The parameters provided by the user are from this feedforward model:

u = K_v v + K_a a

Parameters
 kV The velocity gain, in volts/(unit/sec). kA The acceleration gain, in volts/(unit/sec²).
Exceptions
 std::domain_error if kV < 0 or kA <= 0.
https://github.com/wpilibsuite/sysid

◆ IdentifyVelocitySystem()

template<typename Distance >
requires std::same_as<units::meter, Distance> || std::same_as<units::radian, Distance>
 static LinearSystem< 1, 1, 1 > frc::LinearSystemId::IdentifyVelocitySystem ( decltype(1_V/Velocity_t< Distance >(1)) kV, decltype(1_V/Acceleration_t< Distance >(1)) kA )
inlinestatic

Create a state-space model for a 1 DOF velocity system from its kV (volts/(unit/sec)) and kA (volts/(unit/sec²)).

These constants can be found using SysId. The states of the system are [velocity], inputs are [voltage], and outputs are [velocity].

You MUST use an SI unit (i.e. meters or radians) for the Distance template argument. You may still use non-SI units (such as feet or inches) for the actual method arguments; they will automatically be converted to SI internally.

The parameters provided by the user are from this feedforward model:

u = K_v v + K_a a

Parameters
 kV The velocity gain, in volts/(unit/sec). kA The acceleration gain, in volts/(unit/sec²).
Exceptions
 std::domain_error if kV < 0 or kA <= 0.
https://github.com/wpilibsuite/sysid

◆ SingleJointedArmSystem()

 static LinearSystem< 2, 1, 1 > frc::LinearSystemId::SingleJointedArmSystem ( DCMotor motor, units::kilogram_square_meter_t J, double gearing )
static

Create a state-space model of a single-jointed arm system.The states of the system are [angle, angular velocity], inputs are [voltage], and outputs are [angle].

Parameters
 motor The motor (or gearbox) attached to the arm. J The moment of inertia J of the arm. gearing Gear ratio from motor to arm.
Exceptions
 std::domain_error if J <= 0 or gearing <= 0.

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