WPILibC++ 2025.2.1
|
Linear system ID utility functions. More...
#include <frc/system/plant/LinearSystemId.h>
Public Types | |
template<typename Distance > | |
using | Velocity_t |
template<typename Distance > | |
using | Acceleration_t |
Static Public Member Functions | |
static constexpr LinearSystem< 2, 1, 2 > | ElevatorSystem (DCMotor motor, units::kilogram_t mass, units::meter_t radius, double gearing) |
Create a state-space model of the elevator system. | |
static constexpr LinearSystem< 2, 1, 2 > | 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]. | |
template<typename Distance > requires std::same_as<units::meter, Distance> || std::same_as<units::radian, Distance> | |
static constexpr 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²)). | |
template<typename Distance > requires std::same_as<units::meter, Distance> || std::same_as<units::radian, Distance> | |
static constexpr 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²)). | |
static constexpr 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. | |
static constexpr 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. | |
static constexpr 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]. | |
static constexpr 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. | |
template<typename Distance > requires std::same_as<units::meter, Distance> || std::same_as<units::radian, Distance> | |
static constexpr 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²)). | |
static constexpr 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. | |
Linear system ID utility functions.
using frc::LinearSystemId::Acceleration_t |
using frc::LinearSystemId::Velocity_t |
|
inlinestaticconstexpr |
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].
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. |
|
inlinestaticconstexpr |
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
kV | The velocity gain, in volts/(unit/sec). |
kA | The acceleration gain, in volts/(unit/sec²). |
|
inlinestaticconstexpr |
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]
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. |
|
inlinestaticconstexpr |
Create a state-space model of the elevator system.
The states of the system are [position, velocity], inputs are [voltage], and outputs are [position].
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. |
|
inlinestaticconstexpr |
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].
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. |
|
inlinestaticconstexpr |
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]]
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). |
|
inlinestaticconstexpr |
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]]
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. |
|
inlinestaticconstexpr |
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
kV | The velocity gain, in volts/(unit/sec). |
kA | The acceleration gain, in volts/(unit/sec²). |
|
inlinestaticconstexpr |
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
kV | The velocity gain, in volts/(unit/sec). |
kA | The acceleration gain, in volts/(unit/sec²). |
|
inlinestaticconstexpr |
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].
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. |