diff --git a/docs/allclasses-index.html b/docs/allclasses-index.html index a8d1f3e..a1383b4 100644 --- a/docs/allclasses-index.html +++ b/docs/allclasses-index.html @@ -1,7 +1,7 @@ - + All Classes and Interfaces @@ -192,59 +192,68 @@ loadScripts(document, 'script');
SwerveDrive JSON parsed class.
-
SwerveDriveTelemetry
+
SwerveDriveOdometry2
+
Clone of SwerveDriveOdometry except uses gyro pitch and roll to achieve a more accurate estimation.
+
+
SwerveDriveTelemetry
+
Telemetry to describe the SwerveDrive following frc-web-components.
-
SwerveDriveTelemetry.TelemetryVerbosity
-
+
SwerveDriveTelemetry.TelemetryVerbosity
+
Verbosity of telemetry data sent back.
-
SwerveIMU
-
+ +
Swerve IMU abstraction to define a standard interface with a swerve drive.
- -
+ +
Simulation for SwerveDrive IMU.
- -
+ +
Clone of WPI SwerveKinematics, which implements second order kinematics when calculating modules states from chassis speed.
- -
+ +
Mathematical functions which pertain to swerve drive.
- -
+ +
The Swerve Module class which represents and controls Swerve Modules for the swerve drive.
- -
+ +
Swerve Module configuration class which is used to configure SwerveModule.
- -
+ +
Configuration class which stores physical characteristics shared between every swerve module.
- -
+ +
Class to hold simulation data for SwerveModule
- -
+ +
Second order kinematics swerve module state.
- -
+ +
Swerve motor abstraction which defines a standard interface for motors within a swerve module.
- -
+ +
Helper class used to parse the JSON directory with specified configuration options.
+ +
+
Clone of SwerveDrivePoseEstimator which takes into account gyroscope pitch and roll to achieve a more + accurate estimation, originally made by Team 1466.
+
Holds information about a simulated TalonFX.
diff --git a/docs/allpackages-index.html b/docs/allpackages-index.html index fd449a9..7587ccd 100644 --- a/docs/allpackages-index.html +++ b/docs/allpackages-index.html @@ -1,7 +1,7 @@ - + All Packages diff --git a/docs/constant-values.html b/docs/constant-values.html index 3410f69..f42246a 100644 --- a/docs/constant-values.html +++ b/docs/constant-values.html @@ -1,7 +1,7 @@ - + Constant Field Values diff --git a/docs/help-doc.html b/docs/help-doc.html index 20e517e..626a8ab 100644 --- a/docs/help-doc.html +++ b/docs/help-doc.html @@ -1,7 +1,7 @@ - + API Help diff --git a/docs/index-files/index-1.html b/docs/index-files/index-1.html index 72d36dd..9d8089a 100644 --- a/docs/index-files/index-1.html +++ b/docs/index-files/index-1.html @@ -1,7 +1,7 @@ - + A-Index @@ -113,6 +113,10 @@ loadScripts(document, 'script');
Adds a VictorSPX controller to the simulator.
+
addVisionMeasurement(Pose2d, double) - Method in class swervelib.math.SwervePoseEstimator2
+
+
Adds a vision measurement to the Kalman Filter.
+
addVisionMeasurement(Pose2d, double, boolean, double) - Method in class swervelib.SwerveDrive
Add a vision measurement to the SwerveDrivePoseEstimator and update the SwerveIMU gyro reading with @@ -123,6 +127,10 @@ loadScripts(document, 'script');
Add a vision measurement to the SwerveDrivePoseEstimator and update the SwerveIMU gyro reading with the given timestamp of the vision measurement.
+
addVisionMeasurement(Pose2d, double, Matrix<N3, N1>) - Method in class swervelib.math.SwervePoseEstimator2
+
+
Adds a vision measurement to the Kalman Filter.
+
ADIS16448Swerve - Class in swervelib.imu
IMU Swerve class for the ADIS16448_IMU device.
diff --git a/docs/index-files/index-10.html b/docs/index-files/index-10.html index 68c7935..e5ee233 100644 --- a/docs/index-files/index-10.html +++ b/docs/index-files/index-10.html @@ -1,7 +1,7 @@ - + K-Index diff --git a/docs/index-files/index-11.html b/docs/index-files/index-11.html index a5285f8..5f54f82 100644 --- a/docs/index-files/index-11.html +++ b/docs/index-files/index-11.html @@ -1,7 +1,7 @@ - + L-Index diff --git a/docs/index-files/index-12.html b/docs/index-files/index-12.html index 9c7cdf7..748a668 100644 --- a/docs/index-files/index-12.html +++ b/docs/index-files/index-12.html @@ -1,7 +1,7 @@ - + M-Index @@ -57,10 +57,22 @@ loadScripts(document, 'script');
Forward kinematics matrix.
+
m_gyroOffset - Variable in class swervelib.math.SwerveDriveOdometry2
+
+
Gyro offset.
+
m_inverseKinematics - Variable in class swervelib.math.SwerveKinematics2
Inverse kinematics matrix.
+
m_kinematics - Variable in class swervelib.math.SwerveDriveOdometry2
+
+
Swerve drive kinematics.
+
+
m_kinematics - Variable in class swervelib.math.SwervePoseEstimator2
+
+
Swerve drive kinematics.
+
m_moduleAccelTimer - Variable in class swervelib.math.SwerveKinematics2
 
m_modules - Variable in class swervelib.math.SwerveKinematics2
@@ -71,18 +83,58 @@ loadScripts(document, 'script');
Swerve module states.
+
m_numModules - Variable in class swervelib.math.SwerveDriveOdometry2
+
+
Number of swerve modules.
+
m_numModules - Variable in class swervelib.math.SwerveKinematics2
Number of swerve modules.
+
m_numModules - Variable in class swervelib.math.SwervePoseEstimator2
+
+
Number of swerve modules.
+
+
m_odometry - Variable in class swervelib.math.SwervePoseEstimator2
+
+
Enhanced swerve drive odometry.
+
+
m_poseBuffer - Variable in class swervelib.math.SwervePoseEstimator2
+
+
Interpolation buffer.
+
+
m_poseMeters - Variable in class swervelib.math.SwerveDriveOdometry2
+
+
Estimated pose.
+
m_prevChassisSpeeds - Variable in class swervelib.math.SwerveKinematics2
 
m_prevCoR - Variable in class swervelib.math.SwerveKinematics2
Previous CoR
+
m_previousAngle - Variable in class swervelib.math.SwerveDriveOdometry2
+
+
Previous gyroscope angle.
+
+
m_previousModulePositions - Variable in class swervelib.math.SwerveDriveOdometry2
+
+
Previous swerve module positions.
+
m_prevModuleAccelTime - Variable in class swervelib.math.SwerveKinematics2
 
+
m_q - Variable in class swervelib.math.SwervePoseEstimator2
+
+
Matrix quotient.
+
+
m_visionK - Variable in class swervelib.math.SwervePoseEstimator2
+
+
Vision standard deviations.
+
+
m_zeroModuleStates - Variable in class swervelib.math.SwerveDriveOdometry2
+
+
Zero module states.
+
MACHINE - Enum constant in enum class swervelib.telemetry.SwerveDriveTelemetry.TelemetryVerbosity
Only send the machine readable data related to swerve drive.
@@ -186,6 +238,8 @@ loadScripts(document, 'script');
Module number for kinematics, usually 0 to 3.
+
modulePositions - Variable in class swervelib.math.SwervePoseEstimator2.InterpolationRecord
+
 
modules - Variable in class swervelib.parser.json.SwerveDriveJson
Module JSONs in order clockwise order starting from front left.
diff --git a/docs/index-files/index-13.html b/docs/index-files/index-13.html index 3c4f20c..332fe88 100644 --- a/docs/index-files/index-13.html +++ b/docs/index-files/index-13.html @@ -1,7 +1,7 @@ - + N-Index diff --git a/docs/index-files/index-14.html b/docs/index-files/index-14.html index 634bbc5..8eee079 100644 --- a/docs/index-files/index-14.html +++ b/docs/index-files/index-14.html @@ -1,7 +1,7 @@ - + O-Index diff --git a/docs/index-files/index-15.html b/docs/index-files/index-15.html index 43e9390..72eeab9 100644 --- a/docs/index-files/index-15.html +++ b/docs/index-files/index-15.html @@ -1,7 +1,7 @@ - + P-Index @@ -157,6 +157,8 @@ loadScripts(document, 'script');
Logical inverse of the Pose exponential from 254.
+
poseMeters - Variable in class swervelib.math.SwervePoseEstimator2.InterpolationRecord
+
 
position - Variable in class swervelib.math.Matter
Position in meters from robot center in 3d space.
diff --git a/docs/index-files/index-16.html b/docs/index-files/index-16.html index e34adaf..542b87f 100644 --- a/docs/index-files/index-16.html +++ b/docs/index-files/index-16.html @@ -1,7 +1,7 @@ - + Q-Index diff --git a/docs/index-files/index-17.html b/docs/index-files/index-17.html index 82e14b1..aca9e50 100644 --- a/docs/index-files/index-17.html +++ b/docs/index-files/index-17.html @@ -1,7 +1,7 @@ - + R-Index @@ -78,6 +78,14 @@ loadScripts(document, 'script');
Resets odometry to the given pose.
+
resetPosition(Rotation2d, SwerveModulePosition[], Pose2d) - Method in class swervelib.math.SwerveDriveOdometry2
+
+
Resets the robot's position on the field.
+
+
resetPosition(Rotation2d, SwerveModulePosition[], Pose2d) - Method in class swervelib.math.SwervePoseEstimator2
+
+
Resets the robot's position on the field.
+
robotRotation - Static variable in class swervelib.telemetry.SwerveDriveTelemetry
The robot's current rotation based on odometry or gyro readings
diff --git a/docs/index-files/index-18.html b/docs/index-files/index-18.html index c2784fa..1f4f1b9 100644 --- a/docs/index-files/index-18.html +++ b/docs/index-files/index-18.html @@ -1,7 +1,7 @@ - + S-Index @@ -328,6 +328,10 @@ loadScripts(document, 'script');
Set the closed loop PID controller reference point.
+
setVisionMeasurementStdDevs(Matrix<N3, N1>) - Method in class swervelib.math.SwervePoseEstimator2
+
+
Sets the pose estimator's trust of global measurements.
+
setVoltageCompensation(double) - Method in class swervelib.motors.SparkMaxBrushedMotorSwerve
Set the voltage compensation for the swerve module motor.
@@ -480,6 +484,18 @@ loadScripts(document, 'script');
SwerveDriveJson() - Constructor for class swervelib.parser.json.SwerveDriveJson
 
+
SwerveDriveOdometry2 - Class in swervelib.math
+
+
Clone of SwerveDriveOdometry except uses gyro pitch and roll to achieve a more accurate estimation.
+
+
SwerveDriveOdometry2(SwerveDriveKinematics, Rotation2d, SwerveModulePosition[]) - Constructor for class swervelib.math.SwerveDriveOdometry2
+
+
Constructs a SwerveDriveOdometry object with the default pose at the origin.
+
+
SwerveDriveOdometry2(SwerveDriveKinematics, Rotation2d, SwerveModulePosition[], Pose2d) - Constructor for class swervelib.math.SwerveDriveOdometry2
+
+
Constructs a SwerveDriveOdometry object.
+
swerveDrivePoseEstimator - Variable in class swervelib.SwerveDrive
Swerve odometry.
@@ -645,6 +661,23 @@ loadScripts(document, 'script');
Construct a swerve parser.
+
SwervePoseEstimator2 - Class in swervelib.math
+
+
Clone of SwerveDrivePoseEstimator which takes into account gyroscope pitch and roll to achieve a more + accurate estimation, originally made by Team 1466.
+
+
SwervePoseEstimator2(SwerveDriveKinematics, Rotation2d, SwerveModulePosition[], Pose2d) - Constructor for class swervelib.math.SwervePoseEstimator2
+
+
Constructs a SwerveDrivePoseEstimator with default standard deviations for the model and vision measurements.
+
+
SwervePoseEstimator2(SwerveDriveKinematics, Rotation2d, SwerveModulePosition[], Pose2d, Matrix<N3, N1>, Matrix<N3, N1>) - Constructor for class swervelib.math.SwervePoseEstimator2
+
+
Constructs a SwerveDrivePoseEstimator.
+
+
SwervePoseEstimator2.InterpolationRecord - Class in swervelib.math
+
+
Represents an odometry record.
+
synchronizeEncoderQueued - Variable in class swervelib.SwerveModule
Encoder synchronization queued.
diff --git a/docs/index-files/index-19.html b/docs/index-files/index-19.html index c7e98df..8feca65 100644 --- a/docs/index-files/index-19.html +++ b/docs/index-files/index-19.html @@ -1,7 +1,7 @@ - + T-Index diff --git a/docs/index-files/index-2.html b/docs/index-files/index-2.html index eaefbca..dde57f5 100644 --- a/docs/index-files/index-2.html +++ b/docs/index-files/index-2.html @@ -1,7 +1,7 @@ - + B-Index diff --git a/docs/index-files/index-20.html b/docs/index-files/index-20.html index 0089e5e..4ac3b7c 100644 --- a/docs/index-files/index-20.html +++ b/docs/index-files/index-20.html @@ -1,7 +1,7 @@ - + U-Index @@ -53,6 +53,14 @@ loadScripts(document, 'script'); A B C D E F G H I K L M N O P Q R S T U V W X Y Z _ 
All Classes and Interfaces|All Packages|Constant Field Values

U

+
update(Rotation2d, Rotation2d, Rotation2d, SwerveModulePosition[]) - Method in class swervelib.math.SwerveDriveOdometry2
+
+
Updates the robot's position on the field using forward kinematics and integration of the pose over time.
+
+
update(Rotation2d, Rotation2d, Rotation2d, SwerveModulePosition[]) - Method in class swervelib.math.SwervePoseEstimator2
+
+
Updates the pose estimator with wheel encoder and gyro information.
+
updateData() - Static method in class swervelib.telemetry.SwerveDriveTelemetry
Upload data to smartdashboard
@@ -70,6 +78,10 @@ loadScripts(document, 'script');
Update the position and state of the module.
+
updateWithTime(double, Rotation2d, Rotation2d, Rotation2d, SwerveModulePosition[]) - Method in class swervelib.math.SwervePoseEstimator2
+
+
Updates the pose estimator with wheel encoder and gyro information.
+
A B C D E F G H I K L M N O P Q R S T U V W X Y Z _ 
All Classes and Interfaces|All Packages|Constant Field Values
diff --git a/docs/index-files/index-21.html b/docs/index-files/index-21.html index 4a504cf..965fc1c 100644 --- a/docs/index-files/index-21.html +++ b/docs/index-files/index-21.html @@ -1,7 +1,7 @@ - + V-Index diff --git a/docs/index-files/index-22.html b/docs/index-files/index-22.html index 8041e87..fd021b2 100644 --- a/docs/index-files/index-22.html +++ b/docs/index-files/index-22.html @@ -1,7 +1,7 @@ - + W-Index diff --git a/docs/index-files/index-23.html b/docs/index-files/index-23.html index eb60462..aef98b8 100644 --- a/docs/index-files/index-23.html +++ b/docs/index-files/index-23.html @@ -1,7 +1,7 @@ - + X-Index diff --git a/docs/index-files/index-24.html b/docs/index-files/index-24.html index 4ddfeb2..5b8a600 100644 --- a/docs/index-files/index-24.html +++ b/docs/index-files/index-24.html @@ -1,7 +1,7 @@ - + Y-Index diff --git a/docs/index-files/index-25.html b/docs/index-files/index-25.html index 6b1841b..dcab04c 100644 --- a/docs/index-files/index-25.html +++ b/docs/index-files/index-25.html @@ -1,7 +1,7 @@ - + Z-Index diff --git a/docs/index-files/index-26.html b/docs/index-files/index-26.html index 3ae8341..ad18f64 100644 --- a/docs/index-files/index-26.html +++ b/docs/index-files/index-26.html @@ -1,7 +1,7 @@ - + _-Index diff --git a/docs/index-files/index-3.html b/docs/index-files/index-3.html index 76483a6..5cb7487 100644 --- a/docs/index-files/index-3.html +++ b/docs/index-files/index-3.html @@ -1,7 +1,7 @@ - + C-Index diff --git a/docs/index-files/index-4.html b/docs/index-files/index-4.html index 9c5860b..3df8b24 100644 --- a/docs/index-files/index-4.html +++ b/docs/index-files/index-4.html @@ -1,7 +1,7 @@ - + D-Index diff --git a/docs/index-files/index-5.html b/docs/index-files/index-5.html index 9d27da5..5a97fd6 100644 --- a/docs/index-files/index-5.html +++ b/docs/index-files/index-5.html @@ -1,7 +1,7 @@ - + E-Index @@ -81,6 +81,8 @@ loadScripts(document, 'script');
Encoder pulse per rotation for non-integrated encoders.
+
equals(Object) - Method in class swervelib.math.SwervePoseEstimator2.InterpolationRecord
+
 
A B C D E F G H I K L M N O P Q R S T U V W X Y Z _ 
All Classes and Interfaces|All Packages|Constant Field Values
diff --git a/docs/index-files/index-6.html b/docs/index-files/index-6.html index 47373a3..3fe8159 100644 --- a/docs/index-files/index-6.html +++ b/docs/index-files/index-6.html @@ -1,7 +1,7 @@ - + F-Index diff --git a/docs/index-files/index-7.html b/docs/index-files/index-7.html index bbdac66..4fc161f 100644 --- a/docs/index-files/index-7.html +++ b/docs/index-files/index-7.html @@ -1,7 +1,7 @@ - + G-Index @@ -145,6 +145,10 @@ loadScripts(document, 'script');
Get the drive SwerveMotor for the SwerveModule.
+
getEstimatedPosition() - Method in class swervelib.math.SwervePoseEstimator2
+
+
Gets the estimated robot pose.
+
getFieldVelocity() - Method in class swervelib.SwerveDrive
Gets the current field-relative velocity (x, y and omega) of the robot
@@ -245,6 +249,10 @@ loadScripts(document, 'script');
Gets the current pose (position and rotation) of the robot, as reported by odometry.
+
getPoseMeters() - Method in class swervelib.math.SwerveDriveOdometry2
+
+
Returns the position of the robot on the field.
+
getPosition() - Method in class swervelib.motors.SparkMaxBrushedMotorSwerve
Get the position of the integrated encoder.
@@ -439,6 +447,12 @@ loadScripts(document, 'script');
NavX IMU.
+
gyroAngle - Variable in class swervelib.math.SwervePoseEstimator2.InterpolationRecord
+
 
+
gyroPitch - Variable in class swervelib.math.SwervePoseEstimator2.InterpolationRecord
+
 
+
gyroRoll - Variable in class swervelib.math.SwervePoseEstimator2.InterpolationRecord
+
 
A B C D E F G H I K L M N O P Q R S T U V W X Y Z _ 
All Classes and Interfaces|All Packages|Constant Field Values
diff --git a/docs/index-files/index-8.html b/docs/index-files/index-8.html index 773fcd7..eac9071 100644 --- a/docs/index-files/index-8.html +++ b/docs/index-files/index-8.html @@ -1,7 +1,7 @@ - + H-Index @@ -53,6 +53,8 @@ loadScripts(document, 'script'); A B C D E F G H I K L M N O P Q R S T U V W X Y Z _ 
All Classes and Interfaces|All Packages|Constant Field Values

H

+
hashCode() - Method in class swervelib.math.SwervePoseEstimator2.InterpolationRecord
+
 
heading - Variable in class swervelib.parser.json.ControllerPropertiesJson
The PID used to control the robot heading.
diff --git a/docs/index-files/index-9.html b/docs/index-files/index-9.html index d12ea57..fd1d7d9 100644 --- a/docs/index-files/index-9.html +++ b/docs/index-files/index-9.html @@ -1,7 +1,7 @@ - + I-Index @@ -93,6 +93,14 @@ loadScripts(document, 'script');
Swerve IMU device for sensing the heading of the robot.
+
interpolate(SwervePoseEstimator2.InterpolationRecord, double) - Method in class swervelib.math.SwervePoseEstimator2.InterpolationRecord
+
+
Return the interpolated record.
+
+
InterpolationRecord(Pose2d, Rotation2d, Rotation2d, Rotation2d, SwerveModulePosition[]) - Constructor for class swervelib.math.SwervePoseEstimator2.InterpolationRecord
+
+
Constructs an Interpolation Record with the specified parameters.
+
inverted - Variable in class swervelib.encoders.AnalogAbsoluteEncoderSwerve
Inversion state of the encoder.
diff --git a/docs/index.html b/docs/index.html index ecf236d..ef7fe07 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,7 +1,7 @@ - + Overview diff --git a/docs/member-search-index.js b/docs/member-search-index.js index a9ebd83..5b285e7 100644 --- a/docs/member-search-index.js +++ b/docs/member-search-index.js @@ -1 +1 @@ -memberSearchIndex = [{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"_accelToFullTime"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"_accelToFullTime"},{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"_falcon"},{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"_fullVel"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"_fullVel"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim.SimProfile","l":"_lastTime"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim.SimProfile","l":"_running"},{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"_sensorPhase"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"_sensorPhase"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"_simProfiles"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"_talon"},{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"_vel"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"_vel"},{"p":"swervelib.simulation.ctre","c":"VictorSPXSimProfile","l":"_victor"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"absoluteEncoder"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"absoluteEncoder"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"absoluteEncoder"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"absoluteEncoder"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"absoluteEncoder"},{"p":"swervelib","c":"SwerveModule","l":"absoluteEncoder"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"absoluteEncoderInverted"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"absoluteEncoderInverted"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"absoluteEncoderOffset"},{"p":"swervelib","c":"SwerveController","l":"addSlewRateLimiters(SlewRateLimiter, SlewRateLimiter, SlewRateLimiter)","u":"addSlewRateLimiters(edu.wpi.first.math.filter.SlewRateLimiter,edu.wpi.first.math.filter.SlewRateLimiter,edu.wpi.first.math.filter.SlewRateLimiter)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"addTalonFX(TalonFX, double, double)","u":"addTalonFX(com.ctre.phoenix.motorcontrol.can.TalonFX,double,double)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"addTalonFX(TalonFX, double, double, boolean)","u":"addTalonFX(com.ctre.phoenix.motorcontrol.can.TalonFX,double,double,boolean)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"addTalonSRX(TalonSRX, double, double)","u":"addTalonSRX(com.ctre.phoenix.motorcontrol.can.TalonSRX,double,double)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"addTalonSRX(TalonSRX, double, double, boolean)","u":"addTalonSRX(com.ctre.phoenix.motorcontrol.can.TalonSRX,double,double,boolean)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"addVictorSPX(VictorSPX)","u":"addVictorSPX(com.ctre.phoenix.motorcontrol.can.VictorSPX)"},{"p":"swervelib","c":"SwerveDrive","l":"addVisionMeasurement(Pose2d, double, boolean, double)","u":"addVisionMeasurement(edu.wpi.first.math.geometry.Pose2d,double,boolean,double)"},{"p":"swervelib","c":"SwerveDrive","l":"addVisionMeasurement(Pose2d, double, boolean, Matrix)","u":"addVisionMeasurement(edu.wpi.first.math.geometry.Pose2d,double,boolean,edu.wpi.first.math.Matrix)"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"ADIS16448Swerve()","u":"%3Cinit%3E()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"ADIS16470Swerve()","u":"%3Cinit%3E()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"ADXRS450Swerve()","u":"%3Cinit%3E()"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"AnalogAbsoluteEncoderSwerve(AnalogInput)","u":"%3Cinit%3E(edu.wpi.first.wpilibj.AnalogInput)"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"AnalogAbsoluteEncoderSwerve(int)","u":"%3Cinit%3E(int)"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"AnalogGyroSwerve(int)","u":"%3Cinit%3E(int)"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"angle"},{"p":"swervelib.parser.json.modules","c":"BoolMotorJson","l":"angle"},{"p":"swervelib.parser.json","c":"MotorConfigDouble","l":"angle"},{"p":"swervelib.parser.json","c":"MotorConfigInt","l":"angle"},{"p":"swervelib.parser.json","c":"PIDFPropertiesJson","l":"angle"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"angle"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"angleEncoderPulsePerRevolution"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"angleEncoderPulsePerRotation"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"angleGearRatio"},{"p":"swervelib.parser.json","c":"ControllerPropertiesJson","l":"angleJoystickRadiusDeadband"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"angleJoyStickRadiusDeadband"},{"p":"swervelib","c":"SwerveController","l":"angleLimiter"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"angleMotor"},{"p":"swervelib","c":"SwerveModule","l":"angleMotor"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"angleMotorCurrentLimit"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"angleMotorEncoderPulsePerRevolution"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"angleMotorFreeSpeedRPM"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"angleMotorInverted"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"angleMotorRampRate"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"angleOffset"},{"p":"swervelib","c":"SwerveModule","l":"angleOffset"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"anglePIDF"},{"p":"swervelib.math","c":"SwerveMath","l":"antiJitter(SwerveModuleState2, SwerveModuleState2, double)","u":"antiJitter(swervelib.math.SwerveModuleState2,swervelib.math.SwerveModuleState2,double)"},{"p":"swervelib.math","c":"SwerveMath","l":"applyDeadband(double, boolean, double)","u":"applyDeadband(double,boolean,double)"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"attainableMaxRotationalVelocityRadiansPerSecond"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"attainableMaxTranslationalSpeedMetersPerSecond"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"bigInverseKinematics"},{"p":"swervelib.parser.json.modules","c":"BoolMotorJson","l":"BoolMotorJson()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"burnFlash()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"burnFlash()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"burnFlash()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"burnFlash()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"burnFlash()"},{"p":"swervelib.math","c":"SwerveMath","l":"calcMaxAccel(Rotation2d, List, double, SwerveDriveConfiguration)","u":"calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d,java.util.List,double,swervelib.parser.SwerveDriveConfiguration)"},{"p":"swervelib.math","c":"SwerveMath","l":"calculateDegreesPerSteeringRotation(double, double)","u":"calculateDegreesPerSteeringRotation(double,double)"},{"p":"swervelib.math","c":"SwerveMath","l":"calculateMaxAcceleration(double)"},{"p":"swervelib.math","c":"SwerveMath","l":"calculateMaxAcceleration(double, double, double, double, double)","u":"calculateMaxAcceleration(double,double,double,double,double)"},{"p":"swervelib.math","c":"SwerveMath","l":"calculateMaxAngularVelocity(double, double, double)","u":"calculateMaxAngularVelocity(double,double,double)"},{"p":"swervelib.math","c":"SwerveMath","l":"calculateMetersPerRotation(double, double, double)","u":"calculateMetersPerRotation(double,double,double)"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"canbus"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"CANCoderSwerve(int)","u":"%3Cinit%3E(int)"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"CANCoderSwerve(int, String)","u":"%3Cinit%3E(int,java.lang.String)"},{"p":"swervelib.parser","c":"SwerveParser","l":"checkDirectory(File)","u":"checkDirectory(java.io.File)"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"clearStickyFaults()"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"clearStickyFaults()"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"clearStickyFaults()"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"NavXSwerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"clearStickyFaults()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"clearStickyFaults()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"clearStickyFaults()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"clearStickyFaults()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"clearStickyFaults()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"clearStickyFaults()"},{"p":"swervelib","c":"SwerveController","l":"config"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configChanged"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configChanged"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configuration"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configuration"},{"p":"swervelib","c":"SwerveModule","l":"configuration"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"configure(boolean)"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"configure(boolean)"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"configure(boolean)"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"configure(boolean)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configureCANStatusFrames(int)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configureCANStatusFrames(int)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"configureCANStatusFrames(int, int, int, int, int)","u":"configureCANStatusFrames(int,int,int,int,int)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"configureCANStatusFrames(int, int, int, int, int)","u":"configureCANStatusFrames(int,int,int,int,int)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configureCANStatusFrames(int, int, int, int, int, int, int, int, int, int, int)","u":"configureCANStatusFrames(int,int,int,int,int,int,int,int,int,int,int)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configureCANStatusFrames(int, int, int, int, int, int, int, int, int, int, int)","u":"configureCANStatusFrames(int,int,int,int,int,int,int,int,int,int,int)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"configureIntegratedEncoder(double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"configureIntegratedEncoder(double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"configureIntegratedEncoder(double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configureIntegratedEncoder(double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configureIntegratedEncoder(double)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"configurePIDF(PIDFConfig)","u":"configurePIDF(swervelib.parser.PIDFConfig)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"configurePIDF(PIDFConfig)","u":"configurePIDF(swervelib.parser.PIDFConfig)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"configurePIDF(PIDFConfig)","u":"configurePIDF(swervelib.parser.PIDFConfig)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configurePIDF(PIDFConfig)","u":"configurePIDF(swervelib.parser.PIDFConfig)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configurePIDF(PIDFConfig)","u":"configurePIDF(swervelib.parser.PIDFConfig)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"configurePIDWrapping(double, double)","u":"configurePIDWrapping(double,double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"configurePIDWrapping(double, double)","u":"configurePIDWrapping(double,double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"configurePIDWrapping(double, double)","u":"configurePIDWrapping(double,double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configurePIDWrapping(double, double)","u":"configurePIDWrapping(double,double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configurePIDWrapping(double, double)","u":"configurePIDWrapping(double,double)"},{"p":"swervelib.parser","c":"SwerveParser","l":"controllerPropertiesJson"},{"p":"swervelib.parser.json","c":"ControllerPropertiesJson","l":"ControllerPropertiesJson()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"convertToNativeSensorUnits(double, double)","u":"convertToNativeSensorUnits(double,double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"convertToNativeSensorUnits(double, double)","u":"convertToNativeSensorUnits(double,double)"},{"p":"swervelib.parser.json","c":"ControllerPropertiesJson","l":"createControllerConfiguration(SwerveDriveConfiguration)","u":"createControllerConfiguration(swervelib.parser.SwerveDriveConfiguration)"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"createDriveFeedforward()"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"createEncoder()"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"createIMU()"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"createIntegratedEncoder(SwerveMotor)","u":"createIntegratedEncoder(swervelib.motors.SwerveMotor)"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"createModuleConfiguration(PIDFConfig, PIDFConfig, double, SwerveModulePhysicalCharacteristics, String)","u":"createModuleConfiguration(swervelib.parser.PIDFConfig,swervelib.parser.PIDFConfig,double,swervelib.parser.SwerveModulePhysicalCharacteristics,java.lang.String)"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"createModules(SwerveModuleConfiguration[])","u":"createModules(swervelib.parser.SwerveModuleConfiguration[])"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"createMotor(boolean)"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"createPhysicalProperties(double)"},{"p":"swervelib.parser","c":"PIDFConfig","l":"createPIDController()"},{"p":"swervelib.parser","c":"SwerveParser","l":"createSwerveDrive()"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"currentLimit"},{"p":"swervelib.parser","c":"PIDFConfig","l":"d"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"desaturateWheelSpeeds(SwerveModuleState2[], ChassisSpeeds, double, double, double)","u":"desaturateWheelSpeeds(swervelib.math.SwerveModuleState2[],edu.wpi.first.math.kinematics.ChassisSpeeds,double,double,double)"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"desaturateWheelSpeeds(SwerveModuleState2[], double)","u":"desaturateWheelSpeeds(swervelib.math.SwerveModuleState2[],double)"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"desiredChassisSpeeds"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"desiredStates"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"DeviceJson()","u":"%3Cinit%3E()"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"drive"},{"p":"swervelib.parser.json.modules","c":"BoolMotorJson","l":"drive"},{"p":"swervelib.parser.json","c":"MotorConfigDouble","l":"drive"},{"p":"swervelib.parser.json","c":"MotorConfigInt","l":"drive"},{"p":"swervelib.parser.json","c":"PIDFPropertiesJson","l":"drive"},{"p":"swervelib","c":"SwerveDrive","l":"drive(Translation2d, double, boolean, boolean)","u":"drive(edu.wpi.first.math.geometry.Translation2d,double,boolean,boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"drive(Translation2d, double, boolean, boolean, boolean)","u":"drive(edu.wpi.first.math.geometry.Translation2d,double,boolean,boolean,boolean)"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"driveEncoderPulsePerRotation"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"driveGearRatio"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"driveMotor"},{"p":"swervelib","c":"SwerveModule","l":"driveMotor"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"driveMotorCurrentLimit"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"driveMotorInverted"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"driveMotorRampRate"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"dt"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"encoder"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"encoder"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"encoder"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"encoder"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"encoder"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"encoder"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"encoderPulsePerRotation"},{"p":"swervelib.parser","c":"PIDFConfig","l":"f"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"factoryDefault()"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"factoryDefault()"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"factoryDefault()"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"factoryDefault()"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"NavXSwerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"factoryDefault()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"factoryDefaultOccurred"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"factoryDefaultOccurred"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"factoryDefaultOccurred"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"factoryDefaultOccurred"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"factoryDefaults()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"factoryDefaults()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"factoryDefaults()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"factoryDefaults()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"factoryDefaults()"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"fakePos"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"fakeSpeed"},{"p":"swervelib","c":"SwerveModule","l":"feedforward"},{"p":"swervelib","c":"SwerveDrive","l":"field"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"forwardDirection"},{"p":"swervelib.parser.json.modules","c":"LocationJson","l":"front"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"gearRatio"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"getAbsolutePosition()"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"getAbsolutePosition()"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"getAbsolutePosition()"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"getAbsolutePosition()"},{"p":"swervelib","c":"SwerveModule","l":"getAbsolutePosition()"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"getAccel()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"getAccel()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"getAccel()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"getAccel()"},{"p":"swervelib.imu","c":"NavXSwerve","l":"getAccel()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"getAccel()"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"getAccel()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"getAccel()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"getAccel()"},{"p":"swervelib","c":"SwerveDrive","l":"getAccel()"},{"p":"swervelib","c":"SwerveModule","l":"getAngleMotor()"},{"p":"swervelib","c":"SwerveModule","l":"getConfiguration()"},{"p":"swervelib","c":"SwerveModule","l":"getDriveMotor()"},{"p":"swervelib","c":"SwerveDrive","l":"getFieldVelocity()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"getGyroRotation3d()"},{"p":"swervelib","c":"SwerveDrive","l":"getGyroRotation3d()"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"getIMU()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"getIMU()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"getIMU()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"getIMU()"},{"p":"swervelib.imu","c":"NavXSwerve","l":"getIMU()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"getIMU()"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"getIMU()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"getIMU()"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"getInstance()"},{"p":"swervelib","c":"SwerveController","l":"getJoystickAngle(double, double)","u":"getJoystickAngle(double,double)"},{"p":"swervelib.parser","c":"SwerveParser","l":"getModuleConfigurationByName(String, SwerveDriveConfiguration)","u":"getModuleConfigurationByName(java.lang.String,swervelib.parser.SwerveDriveConfiguration)"},{"p":"swervelib","c":"SwerveDrive","l":"getModulePositions()"},{"p":"swervelib","c":"SwerveDrive","l":"getModules()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"getMotor()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"getMotor()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"getMotor()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"getMotor()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"getMotor()"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim.SimProfile","l":"getPeriod()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"getPitch()"},{"p":"swervelib","c":"SwerveDrive","l":"getPitch()"},{"p":"swervelib","c":"SwerveDrive","l":"getPose()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"getPosition()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"getPosition()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"getPosition()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"getPosition()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"getPosition()"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"getPosition()"},{"p":"swervelib","c":"SwerveModule","l":"getPosition()"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"getPositionEncoderConversion(boolean)"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"NavXSwerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"getRawRotation3d()"},{"p":"swervelib","c":"SwerveController","l":"getRawTargetSpeeds(double, double, double)","u":"getRawTargetSpeeds(double,double,double)"},{"p":"swervelib","c":"SwerveController","l":"getRawTargetSpeeds(double, double, double, double)","u":"getRawTargetSpeeds(double,double,double,double)"},{"p":"swervelib","c":"SwerveModule","l":"getRelativePosition()"},{"p":"swervelib","c":"SwerveDrive","l":"getRobotVelocity()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"getRoll()"},{"p":"swervelib","c":"SwerveDrive","l":"getRoll()"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"NavXSwerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"getRotation3d()"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"getState()"},{"p":"swervelib","c":"SwerveModule","l":"getState()"},{"p":"swervelib","c":"SwerveDrive","l":"getStates()"},{"p":"swervelib","c":"SwerveDrive","l":"getSwerveController()"},{"p":"swervelib.math","c":"SwerveMath","l":"getSwerveModule(SwerveModule[], boolean, boolean)","u":"getSwerveModule(swervelib.SwerveModule[],boolean,boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"getSwerveModulePoses(Pose2d)","u":"getSwerveModulePoses(edu.wpi.first.math.geometry.Pose2d)"},{"p":"swervelib","c":"SwerveController","l":"getTargetSpeeds(double, double, double, double)","u":"getTargetSpeeds(double,double,double,double)"},{"p":"swervelib","c":"SwerveController","l":"getTargetSpeeds(double, double, double, double, double)","u":"getTargetSpeeds(double,double,double,double,double)"},{"p":"swervelib","c":"SwerveController","l":"getTranslation2d(ChassisSpeeds)","u":"getTranslation2d(edu.wpi.first.math.kinematics.ChassisSpeeds)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"getVelocity()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"getVelocity()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"getVelocity()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"getVelocity()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"getVelocity()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"getYaw()"},{"p":"swervelib","c":"SwerveDrive","l":"getYaw()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"gyro"},{"p":"swervelib.imu","c":"NavXSwerve","l":"gyro"},{"p":"swervelib.parser.json","c":"ControllerPropertiesJson","l":"heading"},{"p":"swervelib","c":"SwerveController","l":"headingCalculate(double, double)","u":"headingCalculate(double,double)"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"headingPIDF"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"HIGH"},{"p":"swervelib.parser","c":"PIDFConfig","l":"i"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"id"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"imu"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"imu"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"imu"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"imu"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"imu"},{"p":"swervelib.parser.json","c":"SwerveDriveJson","l":"imu"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"imu"},{"p":"swervelib","c":"SwerveDrive","l":"imu"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"inverted"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"inverted"},{"p":"swervelib.parser.json","c":"SwerveDriveJson","l":"invertedIMU"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"invertedIMU"},{"p":"swervelib","c":"SwerveDrive","l":"invertOdometry"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"isAttachedAbsoluteEncoder()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"isAttachedAbsoluteEncoder()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"isAttachedAbsoluteEncoder()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"isAttachedAbsoluteEncoder()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"isAttachedAbsoluteEncoder()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"isDriveMotor"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"isSimulation"},{"p":"swervelib.parser","c":"PIDFConfig","l":"iz"},{"p":"swervelib","c":"SwerveDrive","l":"kinematics"},{"p":"swervelib","c":"SwerveController","l":"lastAngleScalar"},{"p":"swervelib","c":"SwerveDrive","l":"lastHeadingRadians"},{"p":"swervelib","c":"SwerveModule","l":"lastState"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"lastTime"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"lastTime"},{"p":"swervelib.parser.json.modules","c":"LocationJson","l":"left"},{"p":"swervelib.math","c":"SwerveMath","l":"limitVelocity(Translation2d, ChassisSpeeds, Pose2d, double, double, List, SwerveDriveConfiguration)","u":"limitVelocity(edu.wpi.first.math.geometry.Translation2d,edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.geometry.Pose2d,double,double,java.util.List,swervelib.parser.SwerveDriveConfiguration)"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"location"},{"p":"swervelib.parser.json.modules","c":"LocationJson","l":"LocationJson()","u":"%3Cinit%3E()"},{"p":"swervelib","c":"SwerveDrive","l":"lockPose()"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"LOW"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_forwardKinematics"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_inverseKinematics"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_moduleAccelTimer"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_modules"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_moduleStates"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_numModules"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_prevChassisSpeeds"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_prevCoR"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_prevModuleAccelTime"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"MACHINE"},{"p":"swervelib.math","c":"Matter","l":"mass"},{"p":"swervelib.math","c":"Matter","l":"massMoment()"},{"p":"swervelib.math","c":"Matter","l":"Matter(Translation3d, double)","u":"%3Cinit%3E(edu.wpi.first.math.geometry.Translation3d,double)"},{"p":"swervelib.parser.deserializer","c":"PIDFRange","l":"max"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"maxAngularVelocity"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"maxAngularVelocity"},{"p":"swervelib.parser.json","c":"SwerveDriveJson","l":"maxSpeed"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"maxSpeed"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"maxSpeed"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"maxSpeed"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"maxSpeed"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"measuredChassisSpeeds"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"measuredStates"},{"p":"swervelib.parser.deserializer","c":"PIDFRange","l":"min"},{"p":"swervelib.parser","c":"SwerveParser","l":"moduleConfigs"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"moduleCount"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"moduleCount"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"moduleFeedForwardClosedLoop"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"ModuleJson()","u":"%3Cinit%3E()"},{"p":"swervelib.parser","c":"SwerveParser","l":"moduleJsons"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"moduleLocation"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"moduleLocationsMeters"},{"p":"swervelib","c":"SwerveModule","l":"moduleNumber"},{"p":"swervelib.parser.json","c":"SwerveDriveJson","l":"modules"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"modules"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"moduleSteerFFCL"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"moduleSteerFFCL"},{"p":"swervelib","c":"SwerveDrive","l":"moduleSynchronizationCounter"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"motor"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"motor"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"motor"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"motor"},{"p":"swervelib.parser.json","c":"MotorConfigDouble","l":"MotorConfigDouble()","u":"%3Cinit%3E()"},{"p":"swervelib.parser.json","c":"MotorConfigDouble","l":"MotorConfigDouble(double, double)","u":"%3Cinit%3E(double,double)"},{"p":"swervelib.parser.json","c":"MotorConfigInt","l":"MotorConfigInt()","u":"%3Cinit%3E()"},{"p":"swervelib.parser.json","c":"MotorConfigInt","l":"MotorConfigInt(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"name"},{"p":"swervelib.imu","c":"NavXSwerve","l":"NavXSwerve(SerialPort.Port)","u":"%3Cinit%3E(edu.wpi.first.wpilibj.SerialPort.Port)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"nominalVoltage"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"nominalVoltage"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"NONE"},{"p":"swervelib.math","c":"SwerveMath","l":"normalizeAngle(double)"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"offset"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"offset"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"offset"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"offset"},{"p":"swervelib.imu","c":"NavXSwerve","l":"offset"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"offset"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"offset"},{"p":"swervelib.math","c":"SwerveModuleState2","l":"omegaRadPerSecond"},{"p":"swervelib.parser","c":"SwerveParser","l":"openJson(File)","u":"openJson(java.io.File)"},{"p":"swervelib.parser.json","c":"SwerveDriveJson","l":"optimalVoltage"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"optimalVoltage"},{"p":"swervelib.math","c":"SwerveModuleState2","l":"optimize(SwerveModuleState2, Rotation2d, SwerveModuleState2, double)","u":"optimize(swervelib.math.SwerveModuleState2,edu.wpi.first.math.geometry.Rotation2d,swervelib.math.SwerveModuleState2,double)"},{"p":"swervelib.parser","c":"PIDFConfig","l":"output"},{"p":"swervelib.parser","c":"PIDFConfig","l":"p"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"physicalCharacteristics"},{"p":"swervelib.parser","c":"SwerveParser","l":"physicalPropertiesJson"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"PhysicalPropertiesJson()","u":"%3Cinit%3E()"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"PhysicsSim()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"pid"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"pid"},{"p":"swervelib.parser","c":"PIDFConfig","l":"PIDFConfig()","u":"%3Cinit%3E()"},{"p":"swervelib.parser","c":"PIDFConfig","l":"PIDFConfig(double, double)","u":"%3Cinit%3E(double,double)"},{"p":"swervelib.parser","c":"PIDFConfig","l":"PIDFConfig(double, double, double)","u":"%3Cinit%3E(double,double,double)"},{"p":"swervelib.parser","c":"PIDFConfig","l":"PIDFConfig(double, double, double, double)","u":"%3Cinit%3E(double,double,double,double)"},{"p":"swervelib.parser","c":"PIDFConfig","l":"PIDFConfig(double, double, double, double, double)","u":"%3Cinit%3E(double,double,double,double,double)"},{"p":"swervelib.parser","c":"SwerveParser","l":"pidfPropertiesJson"},{"p":"swervelib.parser.json","c":"PIDFPropertiesJson","l":"PIDFPropertiesJson()","u":"%3Cinit%3E()"},{"p":"swervelib.parser.deserializer","c":"PIDFRange","l":"PIDFRange()","u":"%3Cinit%3E()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"Pigeon2Swerve(int)","u":"%3Cinit%3E(int)"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"Pigeon2Swerve(int, String)","u":"%3Cinit%3E(int,java.lang.String)"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"PigeonSwerve(int)","u":"%3Cinit%3E(int)"},{"p":"swervelib.math","c":"SwerveMath","l":"placeInAppropriate0To360Scope(double, double)","u":"placeInAppropriate0To360Scope(double,double)"},{"p":"swervelib.math","c":"SwerveMath","l":"PoseLog(Pose2d)","u":"PoseLog(edu.wpi.first.math.geometry.Pose2d)"},{"p":"swervelib.math","c":"Matter","l":"position"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"Position"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"positionConversionFactor"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"positionConversionFactor"},{"p":"swervelib","c":"SwerveDrive","l":"postTrajectory(Trajectory)","u":"postTrajectory(edu.wpi.first.math.trajectory.Trajectory)"},{"p":"swervelib","c":"SwerveModule","l":"queueSynchronizeEncoders()"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"rampRate"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"random(double)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"random(double, double)","u":"random(double,double)"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"readingError"},{"p":"swervelib","c":"SwerveDrive","l":"replaceSwerveModuleFeedforward(SimpleMotorFeedforward)","u":"replaceSwerveModuleFeedforward(edu.wpi.first.math.controller.SimpleMotorFeedforward)"},{"p":"swervelib","c":"SwerveDrive","l":"resetEncoders()"},{"p":"swervelib","c":"SwerveDrive","l":"resetOdometry(Pose2d)","u":"resetOdometry(edu.wpi.first.math.geometry.Pose2d)"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"robotRotation"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"rotationUnit"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"run()"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim.SimProfile","l":"run()"},{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"run()"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"run()"},{"p":"swervelib.simulation.ctre","c":"VictorSPXSimProfile","l":"run()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"set(double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"set(double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"set(double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"set(double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"set(double)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setAbsoluteEncoder(SwerveAbsoluteEncoder)","u":"setAbsoluteEncoder(swervelib.encoders.SwerveAbsoluteEncoder)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setAbsoluteEncoder(SwerveAbsoluteEncoder)","u":"setAbsoluteEncoder(swervelib.encoders.SwerveAbsoluteEncoder)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setAbsoluteEncoder(SwerveAbsoluteEncoder)","u":"setAbsoluteEncoder(swervelib.encoders.SwerveAbsoluteEncoder)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setAbsoluteEncoder(SwerveAbsoluteEncoder)","u":"setAbsoluteEncoder(swervelib.encoders.SwerveAbsoluteEncoder)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setAbsoluteEncoder(SwerveAbsoluteEncoder)","u":"setAbsoluteEncoder(swervelib.encoders.SwerveAbsoluteEncoder)"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"setAngle(double)"},{"p":"swervelib","c":"SwerveModule","l":"setAngle(double)"},{"p":"swervelib","c":"SwerveDrive","l":"setChassisSpeeds(ChassisSpeeds)","u":"setChassisSpeeds(edu.wpi.first.math.kinematics.ChassisSpeeds)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setCurrentLimit(int)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setCurrentLimit(int)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setCurrentLimit(int)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setCurrentLimit(int)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setCurrentLimit(int)"},{"p":"swervelib","c":"SwerveModule","l":"setDesiredState(SwerveModuleState2, boolean, boolean)","u":"setDesiredState(swervelib.math.SwerveModuleState2,boolean,boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"setGyro(Rotation3d)","u":"setGyro(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setInverted(boolean)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setInverted(boolean)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setInverted(boolean)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setInverted(boolean)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setInverted(boolean)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setLoopRampRate(double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setLoopRampRate(double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setLoopRampRate(double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setLoopRampRate(double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setLoopRampRate(double)"},{"p":"swervelib","c":"SwerveController","l":"setMaximumAngularVelocity(double)"},{"p":"swervelib","c":"SwerveDrive","l":"setMaximumSpeed(double)"},{"p":"swervelib","c":"SwerveDrive","l":"setMaximumSpeed(double, boolean)","u":"setMaximumSpeed(double,boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"setMaximumSpeeds(double, double, double)","u":"setMaximumSpeeds(double,double,double)"},{"p":"swervelib","c":"SwerveDrive","l":"setModuleStates(SwerveModuleState2[], boolean)","u":"setModuleStates(swervelib.math.SwerveModuleState2[],boolean)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setMotorBrake(boolean)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setMotorBrake(boolean)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setMotorBrake(boolean)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setMotorBrake(boolean)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setMotorBrake(boolean)"},{"p":"swervelib","c":"SwerveModule","l":"setMotorBrake(boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"setMotorIdleMode(boolean)"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"NavXSwerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"SwerveIMU","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setPosition(double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setPosition(double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setPosition(double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setPosition(double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setPosition(double)"},{"p":"swervelib","c":"SwerveDrive","l":"setRawModuleStates(SwerveModuleState2[], boolean)","u":"setRawModuleStates(swervelib.math.SwerveModuleState2[],boolean)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setReference(double, double)","u":"setReference(double,double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setReference(double, double)","u":"setReference(double,double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setReference(double, double)","u":"setReference(double,double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setReference(double, double)","u":"setReference(double,double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setReference(double, double)","u":"setReference(double,double)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setReference(double, double, double)","u":"setReference(double,double,double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setReference(double, double, double)","u":"setReference(double,double,double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setReference(double, double, double)","u":"setReference(double,double,double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setReference(double, double, double)","u":"setReference(double,double,double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setReference(double, double, double)","u":"setReference(double,double,double)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setVoltageCompensation(double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setVoltageCompensation(double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setVoltageCompensation(double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setVoltageCompensation(double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setVoltageCompensation(double)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"sim"},{"p":"swervelib","c":"SwerveDrive","l":"simIMU"},{"p":"swervelib","c":"SwerveModule","l":"simModule"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim.SimProfile","l":"SimProfile()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"Simulation"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"sizeFrontBack"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"sizeLeftRight"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"SparkMAX_slotIdx()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"SparkMaxBrushedMotorSwerve(CANSparkMax, boolean, SparkMaxRelativeEncoder.Type, int, boolean)","u":"%3Cinit%3E(com.revrobotics.CANSparkMax,boolean,com.revrobotics.SparkMaxRelativeEncoder.Type,int,boolean)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"SparkMaxBrushedMotorSwerve(int, boolean, SparkMaxRelativeEncoder.Type, int, boolean)","u":"%3Cinit%3E(int,boolean,com.revrobotics.SparkMaxRelativeEncoder.Type,int,boolean)"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"SparkMaxEncoderSwerve(SwerveMotor)","u":"%3Cinit%3E(swervelib.motors.SwerveMotor)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"SparkMaxSwerve(CANSparkMax, boolean)","u":"%3Cinit%3E(com.revrobotics.CANSparkMax,boolean)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"SparkMaxSwerve(int, boolean)","u":"%3Cinit%3E(int,boolean)"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"state"},{"p":"swervelib","c":"SwerveDrive","l":"stateStdDevs"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"SwerveAbsoluteEncoder()","u":"%3Cinit%3E()"},{"p":"swervelib","c":"SwerveDrive","l":"swerveController"},{"p":"swervelib","c":"SwerveController","l":"SwerveController(SwerveControllerConfiguration)","u":"%3Cinit%3E(swervelib.parser.SwerveControllerConfiguration)"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"SwerveControllerConfiguration(SwerveDriveConfiguration, PIDFConfig)","u":"%3Cinit%3E(swervelib.parser.SwerveDriveConfiguration,swervelib.parser.PIDFConfig)"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"SwerveControllerConfiguration(SwerveDriveConfiguration, PIDFConfig, double)","u":"%3Cinit%3E(swervelib.parser.SwerveDriveConfiguration,swervelib.parser.PIDFConfig,double)"},{"p":"swervelib","c":"SwerveDrive","l":"SwerveDrive(SwerveDriveConfiguration, SwerveControllerConfiguration)","u":"%3Cinit%3E(swervelib.parser.SwerveDriveConfiguration,swervelib.parser.SwerveControllerConfiguration)"},{"p":"swervelib","c":"SwerveDrive","l":"swerveDriveConfiguration"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"SwerveDriveConfiguration(SwerveModuleConfiguration[], SwerveIMU, double, boolean)","u":"%3Cinit%3E(swervelib.parser.SwerveModuleConfiguration[],swervelib.imu.SwerveIMU,double,boolean)"},{"p":"swervelib.parser","c":"SwerveParser","l":"swerveDriveJson"},{"p":"swervelib.parser.json","c":"SwerveDriveJson","l":"SwerveDriveJson()","u":"%3Cinit%3E()"},{"p":"swervelib","c":"SwerveDrive","l":"swerveDrivePoseEstimator"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"SwerveDriveTelemetry()","u":"%3Cinit%3E()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"SwerveIMU()","u":"%3Cinit%3E()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"SwerveIMUSimulation()","u":"%3Cinit%3E()"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"SwerveKinematics2(Translation2d...)","u":"%3Cinit%3E(edu.wpi.first.math.geometry.Translation2d...)"},{"p":"swervelib.math","c":"SwerveMath","l":"SwerveMath()","u":"%3Cinit%3E()"},{"p":"swervelib","c":"SwerveModule","l":"SwerveModule(int, SwerveModuleConfiguration)","u":"%3Cinit%3E(int,swervelib.parser.SwerveModuleConfiguration)"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"SwerveModuleConfiguration(SwerveMotor, SwerveMotor, SwerveAbsoluteEncoder, double, double, double, PIDFConfig, PIDFConfig, double, SwerveModulePhysicalCharacteristics, boolean, boolean, boolean, double, String)","u":"%3Cinit%3E(swervelib.motors.SwerveMotor,swervelib.motors.SwerveMotor,swervelib.encoders.SwerveAbsoluteEncoder,double,double,double,swervelib.parser.PIDFConfig,swervelib.parser.PIDFConfig,double,swervelib.parser.SwerveModulePhysicalCharacteristics,boolean,boolean,boolean,double,java.lang.String)"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"SwerveModuleConfiguration(SwerveMotor, SwerveMotor, SwerveAbsoluteEncoder, double, double, double, PIDFConfig, PIDFConfig, double, SwerveModulePhysicalCharacteristics, String)","u":"%3Cinit%3E(swervelib.motors.SwerveMotor,swervelib.motors.SwerveMotor,swervelib.encoders.SwerveAbsoluteEncoder,double,double,double,swervelib.parser.PIDFConfig,swervelib.parser.PIDFConfig,double,swervelib.parser.SwerveModulePhysicalCharacteristics,java.lang.String)"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"SwerveModulePhysicalCharacteristics(double, double, double, double, double, int, int)","u":"%3Cinit%3E(double,double,double,double,double,int,int)"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"SwerveModulePhysicalCharacteristics(double, double, double, double, double, int, int, double, double, int, int, double)","u":"%3Cinit%3E(double,double,double,double,double,int,int,double,double,int,int,double)"},{"p":"swervelib","c":"SwerveDrive","l":"swerveModules"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"SwerveModuleSimulation()","u":"%3Cinit%3E()"},{"p":"swervelib.math","c":"SwerveModuleState2","l":"SwerveModuleState2()","u":"%3Cinit%3E()"},{"p":"swervelib.math","c":"SwerveModuleState2","l":"SwerveModuleState2(double, Rotation2d, double)","u":"%3Cinit%3E(double,edu.wpi.first.math.geometry.Rotation2d,double)"},{"p":"swervelib.math","c":"SwerveModuleState2","l":"SwerveModuleState2(SwerveModuleState, double)","u":"%3Cinit%3E(edu.wpi.first.math.kinematics.SwerveModuleState,double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"SwerveMotor()","u":"%3Cinit%3E()"},{"p":"swervelib.parser","c":"SwerveParser","l":"SwerveParser(File)","u":"%3Cinit%3E(java.io.File)"},{"p":"swervelib","c":"SwerveModule","l":"synchronizeEncoderQueued"},{"p":"swervelib","c":"SwerveDrive","l":"synchronizeModuleEncoders()"},{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"TalonFXSimProfile(TalonFX, double, double, boolean)","u":"%3Cinit%3E(com.ctre.phoenix.motorcontrol.can.TalonFX,double,double,boolean)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"TalonFXSwerve(int, boolean)","u":"%3Cinit%3E(int,boolean)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"TalonFXSwerve(int, String, boolean)","u":"%3Cinit%3E(int,java.lang.String,boolean)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"TalonFXSwerve(WPI_TalonFX, boolean)","u":"%3Cinit%3E(com.ctre.phoenix.motorcontrol.can.WPI_TalonFX,boolean)"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"TalonSRXSimProfile(TalonSRX, double, double, boolean)","u":"%3Cinit%3E(com.ctre.phoenix.motorcontrol.can.TalonSRX,double,double,boolean)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"TalonSRXSwerve(int, boolean)","u":"%3Cinit%3E(int,boolean)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"TalonSRXSwerve(WPI_TalonSRX, boolean)","u":"%3Cinit%3E(com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX,boolean)"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"TelemetryVerbosity()","u":"%3Cinit%3E()"},{"p":"swervelib","c":"SwerveController","l":"thetaController"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"timer"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"timer"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"toChassisSpeeds(SwerveModuleState2...)","u":"toChassisSpeeds(swervelib.math.SwerveModuleState2...)"},{"p":"swervelib.math","c":"SwerveModuleState2","l":"toSwerveModuleState()"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"toSwerveModuleStates(ChassisSpeeds)","u":"toSwerveModuleStates(edu.wpi.first.math.kinematics.ChassisSpeeds)"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"toSwerveModuleStates(ChassisSpeeds, Translation2d)","u":"toSwerveModuleStates(edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.geometry.Translation2d)"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"toTwist2d(SwerveModulePosition...)","u":"toTwist2d(edu.wpi.first.math.kinematics.SwerveModulePosition...)"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"type"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"updateData()"},{"p":"swervelib","c":"SwerveDrive","l":"updateOdometry()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"updateOdometry(SwerveKinematics2, SwerveModuleState2[], Pose2d[], Field2d)","u":"updateOdometry(swervelib.math.SwerveKinematics2,swervelib.math.SwerveModuleState2[],edu.wpi.first.math.geometry.Pose2d[],edu.wpi.first.wpilibj.smartdashboard.Field2d)"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"updateStateAndPosition(SwerveModuleState2)","u":"updateStateAndPosition(swervelib.math.SwerveModuleState2)"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"values()"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"values()"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"Velocity"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"velocityPIDF"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"verbosity"},{"p":"swervelib.simulation.ctre","c":"VictorSPXSimProfile","l":"VictorSPXSimProfile(VictorSPX)","u":"%3Cinit%3E(com.ctre.phoenix.motorcontrol.can.VictorSPX)"},{"p":"swervelib","c":"SwerveDrive","l":"visionMeasurementStdDevs"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"wheelDiameter"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"wheelDiameter"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"wheelGripCoefficientOfFriction"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"wheelGripCoefficientOfFriction"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"wheelLocations"},{"p":"swervelib","c":"SwerveController","l":"withinHypotDeadband(double, double)","u":"withinHypotDeadband(double,double)"},{"p":"swervelib.parser.json.modules","c":"LocationJson","l":"x"},{"p":"swervelib","c":"SwerveController","l":"xLimiter"},{"p":"swervelib.parser.json.modules","c":"LocationJson","l":"y"},{"p":"swervelib","c":"SwerveController","l":"yLimiter"},{"p":"swervelib","c":"SwerveDrive","l":"zeroGyro()"}];updateSearchResults(); \ No newline at end of file +memberSearchIndex = [{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"_accelToFullTime"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"_accelToFullTime"},{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"_falcon"},{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"_fullVel"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"_fullVel"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim.SimProfile","l":"_lastTime"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim.SimProfile","l":"_running"},{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"_sensorPhase"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"_sensorPhase"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"_simProfiles"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"_talon"},{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"_vel"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"_vel"},{"p":"swervelib.simulation.ctre","c":"VictorSPXSimProfile","l":"_victor"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"absoluteEncoder"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"absoluteEncoder"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"absoluteEncoder"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"absoluteEncoder"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"absoluteEncoder"},{"p":"swervelib","c":"SwerveModule","l":"absoluteEncoder"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"absoluteEncoderInverted"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"absoluteEncoderInverted"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"absoluteEncoderOffset"},{"p":"swervelib","c":"SwerveController","l":"addSlewRateLimiters(SlewRateLimiter, SlewRateLimiter, SlewRateLimiter)","u":"addSlewRateLimiters(edu.wpi.first.math.filter.SlewRateLimiter,edu.wpi.first.math.filter.SlewRateLimiter,edu.wpi.first.math.filter.SlewRateLimiter)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"addTalonFX(TalonFX, double, double)","u":"addTalonFX(com.ctre.phoenix.motorcontrol.can.TalonFX,double,double)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"addTalonFX(TalonFX, double, double, boolean)","u":"addTalonFX(com.ctre.phoenix.motorcontrol.can.TalonFX,double,double,boolean)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"addTalonSRX(TalonSRX, double, double)","u":"addTalonSRX(com.ctre.phoenix.motorcontrol.can.TalonSRX,double,double)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"addTalonSRX(TalonSRX, double, double, boolean)","u":"addTalonSRX(com.ctre.phoenix.motorcontrol.can.TalonSRX,double,double,boolean)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"addVictorSPX(VictorSPX)","u":"addVictorSPX(com.ctre.phoenix.motorcontrol.can.VictorSPX)"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"addVisionMeasurement(Pose2d, double)","u":"addVisionMeasurement(edu.wpi.first.math.geometry.Pose2d,double)"},{"p":"swervelib","c":"SwerveDrive","l":"addVisionMeasurement(Pose2d, double, boolean, double)","u":"addVisionMeasurement(edu.wpi.first.math.geometry.Pose2d,double,boolean,double)"},{"p":"swervelib","c":"SwerveDrive","l":"addVisionMeasurement(Pose2d, double, boolean, Matrix)","u":"addVisionMeasurement(edu.wpi.first.math.geometry.Pose2d,double,boolean,edu.wpi.first.math.Matrix)"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"addVisionMeasurement(Pose2d, double, Matrix)","u":"addVisionMeasurement(edu.wpi.first.math.geometry.Pose2d,double,edu.wpi.first.math.Matrix)"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"ADIS16448Swerve()","u":"%3Cinit%3E()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"ADIS16470Swerve()","u":"%3Cinit%3E()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"ADXRS450Swerve()","u":"%3Cinit%3E()"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"AnalogAbsoluteEncoderSwerve(AnalogInput)","u":"%3Cinit%3E(edu.wpi.first.wpilibj.AnalogInput)"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"AnalogAbsoluteEncoderSwerve(int)","u":"%3Cinit%3E(int)"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"AnalogGyroSwerve(int)","u":"%3Cinit%3E(int)"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"angle"},{"p":"swervelib.parser.json.modules","c":"BoolMotorJson","l":"angle"},{"p":"swervelib.parser.json","c":"MotorConfigDouble","l":"angle"},{"p":"swervelib.parser.json","c":"MotorConfigInt","l":"angle"},{"p":"swervelib.parser.json","c":"PIDFPropertiesJson","l":"angle"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"angle"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"angleEncoderPulsePerRevolution"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"angleEncoderPulsePerRotation"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"angleGearRatio"},{"p":"swervelib.parser.json","c":"ControllerPropertiesJson","l":"angleJoystickRadiusDeadband"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"angleJoyStickRadiusDeadband"},{"p":"swervelib","c":"SwerveController","l":"angleLimiter"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"angleMotor"},{"p":"swervelib","c":"SwerveModule","l":"angleMotor"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"angleMotorCurrentLimit"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"angleMotorEncoderPulsePerRevolution"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"angleMotorFreeSpeedRPM"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"angleMotorInverted"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"angleMotorRampRate"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"angleOffset"},{"p":"swervelib","c":"SwerveModule","l":"angleOffset"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"anglePIDF"},{"p":"swervelib.math","c":"SwerveMath","l":"antiJitter(SwerveModuleState2, SwerveModuleState2, double)","u":"antiJitter(swervelib.math.SwerveModuleState2,swervelib.math.SwerveModuleState2,double)"},{"p":"swervelib.math","c":"SwerveMath","l":"applyDeadband(double, boolean, double)","u":"applyDeadband(double,boolean,double)"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"attainableMaxRotationalVelocityRadiansPerSecond"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"attainableMaxTranslationalSpeedMetersPerSecond"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"bigInverseKinematics"},{"p":"swervelib.parser.json.modules","c":"BoolMotorJson","l":"BoolMotorJson()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"burnFlash()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"burnFlash()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"burnFlash()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"burnFlash()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"burnFlash()"},{"p":"swervelib.math","c":"SwerveMath","l":"calcMaxAccel(Rotation2d, List, double, SwerveDriveConfiguration)","u":"calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d,java.util.List,double,swervelib.parser.SwerveDriveConfiguration)"},{"p":"swervelib.math","c":"SwerveMath","l":"calculateDegreesPerSteeringRotation(double, double)","u":"calculateDegreesPerSteeringRotation(double,double)"},{"p":"swervelib.math","c":"SwerveMath","l":"calculateMaxAcceleration(double)"},{"p":"swervelib.math","c":"SwerveMath","l":"calculateMaxAcceleration(double, double, double, double, double)","u":"calculateMaxAcceleration(double,double,double,double,double)"},{"p":"swervelib.math","c":"SwerveMath","l":"calculateMaxAngularVelocity(double, double, double)","u":"calculateMaxAngularVelocity(double,double,double)"},{"p":"swervelib.math","c":"SwerveMath","l":"calculateMetersPerRotation(double, double, double)","u":"calculateMetersPerRotation(double,double,double)"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"canbus"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"CANCoderSwerve(int)","u":"%3Cinit%3E(int)"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"CANCoderSwerve(int, String)","u":"%3Cinit%3E(int,java.lang.String)"},{"p":"swervelib.parser","c":"SwerveParser","l":"checkDirectory(File)","u":"checkDirectory(java.io.File)"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"clearStickyFaults()"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"clearStickyFaults()"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"clearStickyFaults()"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"NavXSwerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"clearStickyFaults()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"clearStickyFaults()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"clearStickyFaults()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"clearStickyFaults()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"clearStickyFaults()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"clearStickyFaults()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"clearStickyFaults()"},{"p":"swervelib","c":"SwerveController","l":"config"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configChanged"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configChanged"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configuration"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configuration"},{"p":"swervelib","c":"SwerveModule","l":"configuration"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"configure(boolean)"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"configure(boolean)"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"configure(boolean)"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"configure(boolean)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configureCANStatusFrames(int)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configureCANStatusFrames(int)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"configureCANStatusFrames(int, int, int, int, int)","u":"configureCANStatusFrames(int,int,int,int,int)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"configureCANStatusFrames(int, int, int, int, int)","u":"configureCANStatusFrames(int,int,int,int,int)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configureCANStatusFrames(int, int, int, int, int, int, int, int, int, int, int)","u":"configureCANStatusFrames(int,int,int,int,int,int,int,int,int,int,int)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configureCANStatusFrames(int, int, int, int, int, int, int, int, int, int, int)","u":"configureCANStatusFrames(int,int,int,int,int,int,int,int,int,int,int)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"configureIntegratedEncoder(double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"configureIntegratedEncoder(double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"configureIntegratedEncoder(double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configureIntegratedEncoder(double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configureIntegratedEncoder(double)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"configurePIDF(PIDFConfig)","u":"configurePIDF(swervelib.parser.PIDFConfig)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"configurePIDF(PIDFConfig)","u":"configurePIDF(swervelib.parser.PIDFConfig)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"configurePIDF(PIDFConfig)","u":"configurePIDF(swervelib.parser.PIDFConfig)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configurePIDF(PIDFConfig)","u":"configurePIDF(swervelib.parser.PIDFConfig)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configurePIDF(PIDFConfig)","u":"configurePIDF(swervelib.parser.PIDFConfig)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"configurePIDWrapping(double, double)","u":"configurePIDWrapping(double,double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"configurePIDWrapping(double, double)","u":"configurePIDWrapping(double,double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"configurePIDWrapping(double, double)","u":"configurePIDWrapping(double,double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"configurePIDWrapping(double, double)","u":"configurePIDWrapping(double,double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"configurePIDWrapping(double, double)","u":"configurePIDWrapping(double,double)"},{"p":"swervelib.parser","c":"SwerveParser","l":"controllerPropertiesJson"},{"p":"swervelib.parser.json","c":"ControllerPropertiesJson","l":"ControllerPropertiesJson()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"convertToNativeSensorUnits(double, double)","u":"convertToNativeSensorUnits(double,double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"convertToNativeSensorUnits(double, double)","u":"convertToNativeSensorUnits(double,double)"},{"p":"swervelib.parser.json","c":"ControllerPropertiesJson","l":"createControllerConfiguration(SwerveDriveConfiguration)","u":"createControllerConfiguration(swervelib.parser.SwerveDriveConfiguration)"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"createDriveFeedforward()"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"createEncoder()"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"createIMU()"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"createIntegratedEncoder(SwerveMotor)","u":"createIntegratedEncoder(swervelib.motors.SwerveMotor)"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"createModuleConfiguration(PIDFConfig, PIDFConfig, double, SwerveModulePhysicalCharacteristics, String)","u":"createModuleConfiguration(swervelib.parser.PIDFConfig,swervelib.parser.PIDFConfig,double,swervelib.parser.SwerveModulePhysicalCharacteristics,java.lang.String)"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"createModules(SwerveModuleConfiguration[])","u":"createModules(swervelib.parser.SwerveModuleConfiguration[])"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"createMotor(boolean)"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"createPhysicalProperties(double)"},{"p":"swervelib.parser","c":"PIDFConfig","l":"createPIDController()"},{"p":"swervelib.parser","c":"SwerveParser","l":"createSwerveDrive()"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"currentLimit"},{"p":"swervelib.parser","c":"PIDFConfig","l":"d"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"desaturateWheelSpeeds(SwerveModuleState2[], ChassisSpeeds, double, double, double)","u":"desaturateWheelSpeeds(swervelib.math.SwerveModuleState2[],edu.wpi.first.math.kinematics.ChassisSpeeds,double,double,double)"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"desaturateWheelSpeeds(SwerveModuleState2[], double)","u":"desaturateWheelSpeeds(swervelib.math.SwerveModuleState2[],double)"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"desiredChassisSpeeds"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"desiredStates"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"DeviceJson()","u":"%3Cinit%3E()"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"drive"},{"p":"swervelib.parser.json.modules","c":"BoolMotorJson","l":"drive"},{"p":"swervelib.parser.json","c":"MotorConfigDouble","l":"drive"},{"p":"swervelib.parser.json","c":"MotorConfigInt","l":"drive"},{"p":"swervelib.parser.json","c":"PIDFPropertiesJson","l":"drive"},{"p":"swervelib","c":"SwerveDrive","l":"drive(Translation2d, double, boolean, boolean)","u":"drive(edu.wpi.first.math.geometry.Translation2d,double,boolean,boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"drive(Translation2d, double, boolean, boolean, boolean)","u":"drive(edu.wpi.first.math.geometry.Translation2d,double,boolean,boolean,boolean)"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"driveEncoderPulsePerRotation"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"driveGearRatio"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"driveMotor"},{"p":"swervelib","c":"SwerveModule","l":"driveMotor"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"driveMotorCurrentLimit"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"driveMotorInverted"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"driveMotorRampRate"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"dt"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"encoder"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"encoder"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"encoder"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"encoder"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"encoder"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"encoder"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"encoderPulsePerRotation"},{"p":"swervelib.math","c":"SwervePoseEstimator2.InterpolationRecord","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"swervelib.parser","c":"PIDFConfig","l":"f"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"factoryDefault()"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"factoryDefault()"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"factoryDefault()"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"factoryDefault()"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"NavXSwerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"factoryDefault()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"factoryDefault()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"factoryDefaultOccurred"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"factoryDefaultOccurred"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"factoryDefaultOccurred"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"factoryDefaultOccurred"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"factoryDefaults()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"factoryDefaults()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"factoryDefaults()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"factoryDefaults()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"factoryDefaults()"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"fakePos"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"fakeSpeed"},{"p":"swervelib","c":"SwerveModule","l":"feedforward"},{"p":"swervelib","c":"SwerveDrive","l":"field"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"forwardDirection"},{"p":"swervelib.parser.json.modules","c":"LocationJson","l":"front"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"gearRatio"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"getAbsolutePosition()"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"getAbsolutePosition()"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"getAbsolutePosition()"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"getAbsolutePosition()"},{"p":"swervelib","c":"SwerveModule","l":"getAbsolutePosition()"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"getAccel()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"getAccel()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"getAccel()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"getAccel()"},{"p":"swervelib.imu","c":"NavXSwerve","l":"getAccel()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"getAccel()"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"getAccel()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"getAccel()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"getAccel()"},{"p":"swervelib","c":"SwerveDrive","l":"getAccel()"},{"p":"swervelib","c":"SwerveModule","l":"getAngleMotor()"},{"p":"swervelib","c":"SwerveModule","l":"getConfiguration()"},{"p":"swervelib","c":"SwerveModule","l":"getDriveMotor()"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"getEstimatedPosition()"},{"p":"swervelib","c":"SwerveDrive","l":"getFieldVelocity()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"getGyroRotation3d()"},{"p":"swervelib","c":"SwerveDrive","l":"getGyroRotation3d()"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"getIMU()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"getIMU()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"getIMU()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"getIMU()"},{"p":"swervelib.imu","c":"NavXSwerve","l":"getIMU()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"getIMU()"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"getIMU()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"getIMU()"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"getInstance()"},{"p":"swervelib","c":"SwerveController","l":"getJoystickAngle(double, double)","u":"getJoystickAngle(double,double)"},{"p":"swervelib.parser","c":"SwerveParser","l":"getModuleConfigurationByName(String, SwerveDriveConfiguration)","u":"getModuleConfigurationByName(java.lang.String,swervelib.parser.SwerveDriveConfiguration)"},{"p":"swervelib","c":"SwerveDrive","l":"getModulePositions()"},{"p":"swervelib","c":"SwerveDrive","l":"getModules()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"getMotor()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"getMotor()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"getMotor()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"getMotor()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"getMotor()"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim.SimProfile","l":"getPeriod()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"getPitch()"},{"p":"swervelib","c":"SwerveDrive","l":"getPitch()"},{"p":"swervelib","c":"SwerveDrive","l":"getPose()"},{"p":"swervelib.math","c":"SwerveDriveOdometry2","l":"getPoseMeters()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"getPosition()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"getPosition()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"getPosition()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"getPosition()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"getPosition()"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"getPosition()"},{"p":"swervelib","c":"SwerveModule","l":"getPosition()"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"getPositionEncoderConversion(boolean)"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"NavXSwerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"getRawRotation3d()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"getRawRotation3d()"},{"p":"swervelib","c":"SwerveController","l":"getRawTargetSpeeds(double, double, double)","u":"getRawTargetSpeeds(double,double,double)"},{"p":"swervelib","c":"SwerveController","l":"getRawTargetSpeeds(double, double, double, double)","u":"getRawTargetSpeeds(double,double,double,double)"},{"p":"swervelib","c":"SwerveModule","l":"getRelativePosition()"},{"p":"swervelib","c":"SwerveDrive","l":"getRobotVelocity()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"getRoll()"},{"p":"swervelib","c":"SwerveDrive","l":"getRoll()"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"NavXSwerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"getRotation3d()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"getRotation3d()"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"getState()"},{"p":"swervelib","c":"SwerveModule","l":"getState()"},{"p":"swervelib","c":"SwerveDrive","l":"getStates()"},{"p":"swervelib","c":"SwerveDrive","l":"getSwerveController()"},{"p":"swervelib.math","c":"SwerveMath","l":"getSwerveModule(SwerveModule[], boolean, boolean)","u":"getSwerveModule(swervelib.SwerveModule[],boolean,boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"getSwerveModulePoses(Pose2d)","u":"getSwerveModulePoses(edu.wpi.first.math.geometry.Pose2d)"},{"p":"swervelib","c":"SwerveController","l":"getTargetSpeeds(double, double, double, double)","u":"getTargetSpeeds(double,double,double,double)"},{"p":"swervelib","c":"SwerveController","l":"getTargetSpeeds(double, double, double, double, double)","u":"getTargetSpeeds(double,double,double,double,double)"},{"p":"swervelib","c":"SwerveController","l":"getTranslation2d(ChassisSpeeds)","u":"getTranslation2d(edu.wpi.first.math.kinematics.ChassisSpeeds)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"getVelocity()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"getVelocity()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"getVelocity()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"getVelocity()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"getVelocity()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"getYaw()"},{"p":"swervelib","c":"SwerveDrive","l":"getYaw()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"gyro"},{"p":"swervelib.imu","c":"NavXSwerve","l":"gyro"},{"p":"swervelib.math","c":"SwervePoseEstimator2.InterpolationRecord","l":"gyroAngle"},{"p":"swervelib.math","c":"SwervePoseEstimator2.InterpolationRecord","l":"gyroPitch"},{"p":"swervelib.math","c":"SwervePoseEstimator2.InterpolationRecord","l":"gyroRoll"},{"p":"swervelib.math","c":"SwervePoseEstimator2.InterpolationRecord","l":"hashCode()"},{"p":"swervelib.parser.json","c":"ControllerPropertiesJson","l":"heading"},{"p":"swervelib","c":"SwerveController","l":"headingCalculate(double, double)","u":"headingCalculate(double,double)"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"headingPIDF"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"HIGH"},{"p":"swervelib.parser","c":"PIDFConfig","l":"i"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"id"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"imu"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"imu"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"imu"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"imu"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"imu"},{"p":"swervelib.parser.json","c":"SwerveDriveJson","l":"imu"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"imu"},{"p":"swervelib","c":"SwerveDrive","l":"imu"},{"p":"swervelib.math","c":"SwervePoseEstimator2.InterpolationRecord","l":"interpolate(SwervePoseEstimator2.InterpolationRecord, double)","u":"interpolate(swervelib.math.SwervePoseEstimator2.InterpolationRecord,double)"},{"p":"swervelib.math","c":"SwervePoseEstimator2.InterpolationRecord","l":"InterpolationRecord(Pose2d, Rotation2d, Rotation2d, Rotation2d, SwerveModulePosition[])","u":"%3Cinit%3E(edu.wpi.first.math.geometry.Pose2d,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.kinematics.SwerveModulePosition[])"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"inverted"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"inverted"},{"p":"swervelib.parser.json","c":"SwerveDriveJson","l":"invertedIMU"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"invertedIMU"},{"p":"swervelib","c":"SwerveDrive","l":"invertOdometry"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"isAttachedAbsoluteEncoder()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"isAttachedAbsoluteEncoder()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"isAttachedAbsoluteEncoder()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"isAttachedAbsoluteEncoder()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"isAttachedAbsoluteEncoder()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"isDriveMotor"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"isSimulation"},{"p":"swervelib.parser","c":"PIDFConfig","l":"iz"},{"p":"swervelib","c":"SwerveDrive","l":"kinematics"},{"p":"swervelib","c":"SwerveController","l":"lastAngleScalar"},{"p":"swervelib","c":"SwerveDrive","l":"lastHeadingRadians"},{"p":"swervelib","c":"SwerveModule","l":"lastState"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"lastTime"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"lastTime"},{"p":"swervelib.parser.json.modules","c":"LocationJson","l":"left"},{"p":"swervelib.math","c":"SwerveMath","l":"limitVelocity(Translation2d, ChassisSpeeds, Pose2d, double, double, List, SwerveDriveConfiguration)","u":"limitVelocity(edu.wpi.first.math.geometry.Translation2d,edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.geometry.Pose2d,double,double,java.util.List,swervelib.parser.SwerveDriveConfiguration)"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"location"},{"p":"swervelib.parser.json.modules","c":"LocationJson","l":"LocationJson()","u":"%3Cinit%3E()"},{"p":"swervelib","c":"SwerveDrive","l":"lockPose()"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"LOW"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_forwardKinematics"},{"p":"swervelib.math","c":"SwerveDriveOdometry2","l":"m_gyroOffset"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_inverseKinematics"},{"p":"swervelib.math","c":"SwerveDriveOdometry2","l":"m_kinematics"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"m_kinematics"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_moduleAccelTimer"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_modules"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_moduleStates"},{"p":"swervelib.math","c":"SwerveDriveOdometry2","l":"m_numModules"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_numModules"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"m_numModules"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"m_odometry"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"m_poseBuffer"},{"p":"swervelib.math","c":"SwerveDriveOdometry2","l":"m_poseMeters"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_prevChassisSpeeds"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_prevCoR"},{"p":"swervelib.math","c":"SwerveDriveOdometry2","l":"m_previousAngle"},{"p":"swervelib.math","c":"SwerveDriveOdometry2","l":"m_previousModulePositions"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"m_prevModuleAccelTime"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"m_q"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"m_visionK"},{"p":"swervelib.math","c":"SwerveDriveOdometry2","l":"m_zeroModuleStates"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"MACHINE"},{"p":"swervelib.math","c":"Matter","l":"mass"},{"p":"swervelib.math","c":"Matter","l":"massMoment()"},{"p":"swervelib.math","c":"Matter","l":"Matter(Translation3d, double)","u":"%3Cinit%3E(edu.wpi.first.math.geometry.Translation3d,double)"},{"p":"swervelib.parser.deserializer","c":"PIDFRange","l":"max"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"maxAngularVelocity"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"maxAngularVelocity"},{"p":"swervelib.parser.json","c":"SwerveDriveJson","l":"maxSpeed"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"maxSpeed"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"maxSpeed"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"maxSpeed"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"maxSpeed"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"measuredChassisSpeeds"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"measuredStates"},{"p":"swervelib.parser.deserializer","c":"PIDFRange","l":"min"},{"p":"swervelib.parser","c":"SwerveParser","l":"moduleConfigs"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"moduleCount"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"moduleCount"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"moduleFeedForwardClosedLoop"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"ModuleJson()","u":"%3Cinit%3E()"},{"p":"swervelib.parser","c":"SwerveParser","l":"moduleJsons"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"moduleLocation"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"moduleLocationsMeters"},{"p":"swervelib","c":"SwerveModule","l":"moduleNumber"},{"p":"swervelib.math","c":"SwervePoseEstimator2.InterpolationRecord","l":"modulePositions"},{"p":"swervelib.parser.json","c":"SwerveDriveJson","l":"modules"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"modules"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"moduleSteerFFCL"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"moduleSteerFFCL"},{"p":"swervelib","c":"SwerveDrive","l":"moduleSynchronizationCounter"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"motor"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"motor"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"motor"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"motor"},{"p":"swervelib.parser.json","c":"MotorConfigDouble","l":"MotorConfigDouble()","u":"%3Cinit%3E()"},{"p":"swervelib.parser.json","c":"MotorConfigDouble","l":"MotorConfigDouble(double, double)","u":"%3Cinit%3E(double,double)"},{"p":"swervelib.parser.json","c":"MotorConfigInt","l":"MotorConfigInt()","u":"%3Cinit%3E()"},{"p":"swervelib.parser.json","c":"MotorConfigInt","l":"MotorConfigInt(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"name"},{"p":"swervelib.imu","c":"NavXSwerve","l":"NavXSwerve(SerialPort.Port)","u":"%3Cinit%3E(edu.wpi.first.wpilibj.SerialPort.Port)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"nominalVoltage"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"nominalVoltage"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"NONE"},{"p":"swervelib.math","c":"SwerveMath","l":"normalizeAngle(double)"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"offset"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"offset"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"offset"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"offset"},{"p":"swervelib.imu","c":"NavXSwerve","l":"offset"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"offset"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"offset"},{"p":"swervelib.math","c":"SwerveModuleState2","l":"omegaRadPerSecond"},{"p":"swervelib.parser","c":"SwerveParser","l":"openJson(File)","u":"openJson(java.io.File)"},{"p":"swervelib.parser.json","c":"SwerveDriveJson","l":"optimalVoltage"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"optimalVoltage"},{"p":"swervelib.math","c":"SwerveModuleState2","l":"optimize(SwerveModuleState2, Rotation2d, SwerveModuleState2, double)","u":"optimize(swervelib.math.SwerveModuleState2,edu.wpi.first.math.geometry.Rotation2d,swervelib.math.SwerveModuleState2,double)"},{"p":"swervelib.parser","c":"PIDFConfig","l":"output"},{"p":"swervelib.parser","c":"PIDFConfig","l":"p"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"physicalCharacteristics"},{"p":"swervelib.parser","c":"SwerveParser","l":"physicalPropertiesJson"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"PhysicalPropertiesJson()","u":"%3Cinit%3E()"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"PhysicsSim()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"pid"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"pid"},{"p":"swervelib.parser","c":"PIDFConfig","l":"PIDFConfig()","u":"%3Cinit%3E()"},{"p":"swervelib.parser","c":"PIDFConfig","l":"PIDFConfig(double, double)","u":"%3Cinit%3E(double,double)"},{"p":"swervelib.parser","c":"PIDFConfig","l":"PIDFConfig(double, double, double)","u":"%3Cinit%3E(double,double,double)"},{"p":"swervelib.parser","c":"PIDFConfig","l":"PIDFConfig(double, double, double, double)","u":"%3Cinit%3E(double,double,double,double)"},{"p":"swervelib.parser","c":"PIDFConfig","l":"PIDFConfig(double, double, double, double, double)","u":"%3Cinit%3E(double,double,double,double,double)"},{"p":"swervelib.parser","c":"SwerveParser","l":"pidfPropertiesJson"},{"p":"swervelib.parser.json","c":"PIDFPropertiesJson","l":"PIDFPropertiesJson()","u":"%3Cinit%3E()"},{"p":"swervelib.parser.deserializer","c":"PIDFRange","l":"PIDFRange()","u":"%3Cinit%3E()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"Pigeon2Swerve(int)","u":"%3Cinit%3E(int)"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"Pigeon2Swerve(int, String)","u":"%3Cinit%3E(int,java.lang.String)"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"PigeonSwerve(int)","u":"%3Cinit%3E(int)"},{"p":"swervelib.math","c":"SwerveMath","l":"placeInAppropriate0To360Scope(double, double)","u":"placeInAppropriate0To360Scope(double,double)"},{"p":"swervelib.math","c":"SwerveMath","l":"PoseLog(Pose2d)","u":"PoseLog(edu.wpi.first.math.geometry.Pose2d)"},{"p":"swervelib.math","c":"SwervePoseEstimator2.InterpolationRecord","l":"poseMeters"},{"p":"swervelib.math","c":"Matter","l":"position"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"Position"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"positionConversionFactor"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"positionConversionFactor"},{"p":"swervelib","c":"SwerveDrive","l":"postTrajectory(Trajectory)","u":"postTrajectory(edu.wpi.first.math.trajectory.Trajectory)"},{"p":"swervelib","c":"SwerveModule","l":"queueSynchronizeEncoders()"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"rampRate"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"random(double)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"random(double, double)","u":"random(double,double)"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"readingError"},{"p":"swervelib","c":"SwerveDrive","l":"replaceSwerveModuleFeedforward(SimpleMotorFeedforward)","u":"replaceSwerveModuleFeedforward(edu.wpi.first.math.controller.SimpleMotorFeedforward)"},{"p":"swervelib","c":"SwerveDrive","l":"resetEncoders()"},{"p":"swervelib","c":"SwerveDrive","l":"resetOdometry(Pose2d)","u":"resetOdometry(edu.wpi.first.math.geometry.Pose2d)"},{"p":"swervelib.math","c":"SwerveDriveOdometry2","l":"resetPosition(Rotation2d, SwerveModulePosition[], Pose2d)","u":"resetPosition(edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.kinematics.SwerveModulePosition[],edu.wpi.first.math.geometry.Pose2d)"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"resetPosition(Rotation2d, SwerveModulePosition[], Pose2d)","u":"resetPosition(edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.kinematics.SwerveModulePosition[],edu.wpi.first.math.geometry.Pose2d)"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"robotRotation"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"rotationUnit"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"run()"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim.SimProfile","l":"run()"},{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"run()"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"run()"},{"p":"swervelib.simulation.ctre","c":"VictorSPXSimProfile","l":"run()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"set(double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"set(double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"set(double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"set(double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"set(double)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setAbsoluteEncoder(SwerveAbsoluteEncoder)","u":"setAbsoluteEncoder(swervelib.encoders.SwerveAbsoluteEncoder)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setAbsoluteEncoder(SwerveAbsoluteEncoder)","u":"setAbsoluteEncoder(swervelib.encoders.SwerveAbsoluteEncoder)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setAbsoluteEncoder(SwerveAbsoluteEncoder)","u":"setAbsoluteEncoder(swervelib.encoders.SwerveAbsoluteEncoder)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setAbsoluteEncoder(SwerveAbsoluteEncoder)","u":"setAbsoluteEncoder(swervelib.encoders.SwerveAbsoluteEncoder)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setAbsoluteEncoder(SwerveAbsoluteEncoder)","u":"setAbsoluteEncoder(swervelib.encoders.SwerveAbsoluteEncoder)"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"setAngle(double)"},{"p":"swervelib","c":"SwerveModule","l":"setAngle(double)"},{"p":"swervelib","c":"SwerveDrive","l":"setChassisSpeeds(ChassisSpeeds)","u":"setChassisSpeeds(edu.wpi.first.math.kinematics.ChassisSpeeds)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setCurrentLimit(int)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setCurrentLimit(int)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setCurrentLimit(int)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setCurrentLimit(int)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setCurrentLimit(int)"},{"p":"swervelib","c":"SwerveModule","l":"setDesiredState(SwerveModuleState2, boolean, boolean)","u":"setDesiredState(swervelib.math.SwerveModuleState2,boolean,boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"setGyro(Rotation3d)","u":"setGyro(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setInverted(boolean)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setInverted(boolean)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setInverted(boolean)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setInverted(boolean)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setInverted(boolean)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setLoopRampRate(double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setLoopRampRate(double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setLoopRampRate(double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setLoopRampRate(double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setLoopRampRate(double)"},{"p":"swervelib","c":"SwerveController","l":"setMaximumAngularVelocity(double)"},{"p":"swervelib","c":"SwerveDrive","l":"setMaximumSpeed(double)"},{"p":"swervelib","c":"SwerveDrive","l":"setMaximumSpeed(double, boolean)","u":"setMaximumSpeed(double,boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"setMaximumSpeeds(double, double, double)","u":"setMaximumSpeeds(double,double,double)"},{"p":"swervelib","c":"SwerveDrive","l":"setModuleStates(SwerveModuleState2[], boolean)","u":"setModuleStates(swervelib.math.SwerveModuleState2[],boolean)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setMotorBrake(boolean)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setMotorBrake(boolean)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setMotorBrake(boolean)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setMotorBrake(boolean)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setMotorBrake(boolean)"},{"p":"swervelib","c":"SwerveModule","l":"setMotorBrake(boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"setMotorIdleMode(boolean)"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"NavXSwerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.imu","c":"SwerveIMU","l":"setOffset(Rotation3d)","u":"setOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setPosition(double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setPosition(double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setPosition(double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setPosition(double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setPosition(double)"},{"p":"swervelib","c":"SwerveDrive","l":"setRawModuleStates(SwerveModuleState2[], boolean)","u":"setRawModuleStates(swervelib.math.SwerveModuleState2[],boolean)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setReference(double, double)","u":"setReference(double,double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setReference(double, double)","u":"setReference(double,double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setReference(double, double)","u":"setReference(double,double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setReference(double, double)","u":"setReference(double,double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setReference(double, double)","u":"setReference(double,double)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setReference(double, double, double)","u":"setReference(double,double,double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setReference(double, double, double)","u":"setReference(double,double,double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setReference(double, double, double)","u":"setReference(double,double,double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setReference(double, double, double)","u":"setReference(double,double,double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setReference(double, double, double)","u":"setReference(double,double,double)"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"setVisionMeasurementStdDevs(Matrix)","u":"setVisionMeasurementStdDevs(edu.wpi.first.math.Matrix)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setVoltageCompensation(double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setVoltageCompensation(double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setVoltageCompensation(double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setVoltageCompensation(double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setVoltageCompensation(double)"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim","l":"sim"},{"p":"swervelib","c":"SwerveDrive","l":"simIMU"},{"p":"swervelib","c":"SwerveModule","l":"simModule"},{"p":"swervelib.simulation.ctre","c":"PhysicsSim.SimProfile","l":"SimProfile()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"Simulation"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"sizeFrontBack"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"sizeLeftRight"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"SparkMAX_slotIdx()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"SparkMaxBrushedMotorSwerve(CANSparkMax, boolean, SparkMaxRelativeEncoder.Type, int, boolean)","u":"%3Cinit%3E(com.revrobotics.CANSparkMax,boolean,com.revrobotics.SparkMaxRelativeEncoder.Type,int,boolean)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"SparkMaxBrushedMotorSwerve(int, boolean, SparkMaxRelativeEncoder.Type, int, boolean)","u":"%3Cinit%3E(int,boolean,com.revrobotics.SparkMaxRelativeEncoder.Type,int,boolean)"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"SparkMaxEncoderSwerve(SwerveMotor)","u":"%3Cinit%3E(swervelib.motors.SwerveMotor)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"SparkMaxSwerve(CANSparkMax, boolean)","u":"%3Cinit%3E(com.revrobotics.CANSparkMax,boolean)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"SparkMaxSwerve(int, boolean)","u":"%3Cinit%3E(int,boolean)"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"state"},{"p":"swervelib","c":"SwerveDrive","l":"stateStdDevs"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"SwerveAbsoluteEncoder()","u":"%3Cinit%3E()"},{"p":"swervelib","c":"SwerveDrive","l":"swerveController"},{"p":"swervelib","c":"SwerveController","l":"SwerveController(SwerveControllerConfiguration)","u":"%3Cinit%3E(swervelib.parser.SwerveControllerConfiguration)"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"SwerveControllerConfiguration(SwerveDriveConfiguration, PIDFConfig)","u":"%3Cinit%3E(swervelib.parser.SwerveDriveConfiguration,swervelib.parser.PIDFConfig)"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"SwerveControllerConfiguration(SwerveDriveConfiguration, PIDFConfig, double)","u":"%3Cinit%3E(swervelib.parser.SwerveDriveConfiguration,swervelib.parser.PIDFConfig,double)"},{"p":"swervelib","c":"SwerveDrive","l":"SwerveDrive(SwerveDriveConfiguration, SwerveControllerConfiguration)","u":"%3Cinit%3E(swervelib.parser.SwerveDriveConfiguration,swervelib.parser.SwerveControllerConfiguration)"},{"p":"swervelib","c":"SwerveDrive","l":"swerveDriveConfiguration"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"SwerveDriveConfiguration(SwerveModuleConfiguration[], SwerveIMU, double, boolean)","u":"%3Cinit%3E(swervelib.parser.SwerveModuleConfiguration[],swervelib.imu.SwerveIMU,double,boolean)"},{"p":"swervelib.parser","c":"SwerveParser","l":"swerveDriveJson"},{"p":"swervelib.parser.json","c":"SwerveDriveJson","l":"SwerveDriveJson()","u":"%3Cinit%3E()"},{"p":"swervelib.math","c":"SwerveDriveOdometry2","l":"SwerveDriveOdometry2(SwerveDriveKinematics, Rotation2d, SwerveModulePosition[])","u":"%3Cinit%3E(edu.wpi.first.math.kinematics.SwerveDriveKinematics,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.kinematics.SwerveModulePosition[])"},{"p":"swervelib.math","c":"SwerveDriveOdometry2","l":"SwerveDriveOdometry2(SwerveDriveKinematics, Rotation2d, SwerveModulePosition[], Pose2d)","u":"%3Cinit%3E(edu.wpi.first.math.kinematics.SwerveDriveKinematics,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.kinematics.SwerveModulePosition[],edu.wpi.first.math.geometry.Pose2d)"},{"p":"swervelib","c":"SwerveDrive","l":"swerveDrivePoseEstimator"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"SwerveDriveTelemetry()","u":"%3Cinit%3E()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"SwerveIMU()","u":"%3Cinit%3E()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"SwerveIMUSimulation()","u":"%3Cinit%3E()"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"SwerveKinematics2(Translation2d...)","u":"%3Cinit%3E(edu.wpi.first.math.geometry.Translation2d...)"},{"p":"swervelib.math","c":"SwerveMath","l":"SwerveMath()","u":"%3Cinit%3E()"},{"p":"swervelib","c":"SwerveModule","l":"SwerveModule(int, SwerveModuleConfiguration)","u":"%3Cinit%3E(int,swervelib.parser.SwerveModuleConfiguration)"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"SwerveModuleConfiguration(SwerveMotor, SwerveMotor, SwerveAbsoluteEncoder, double, double, double, PIDFConfig, PIDFConfig, double, SwerveModulePhysicalCharacteristics, boolean, boolean, boolean, double, String)","u":"%3Cinit%3E(swervelib.motors.SwerveMotor,swervelib.motors.SwerveMotor,swervelib.encoders.SwerveAbsoluteEncoder,double,double,double,swervelib.parser.PIDFConfig,swervelib.parser.PIDFConfig,double,swervelib.parser.SwerveModulePhysicalCharacteristics,boolean,boolean,boolean,double,java.lang.String)"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"SwerveModuleConfiguration(SwerveMotor, SwerveMotor, SwerveAbsoluteEncoder, double, double, double, PIDFConfig, PIDFConfig, double, SwerveModulePhysicalCharacteristics, String)","u":"%3Cinit%3E(swervelib.motors.SwerveMotor,swervelib.motors.SwerveMotor,swervelib.encoders.SwerveAbsoluteEncoder,double,double,double,swervelib.parser.PIDFConfig,swervelib.parser.PIDFConfig,double,swervelib.parser.SwerveModulePhysicalCharacteristics,java.lang.String)"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"SwerveModulePhysicalCharacteristics(double, double, double, double, double, int, int)","u":"%3Cinit%3E(double,double,double,double,double,int,int)"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"SwerveModulePhysicalCharacteristics(double, double, double, double, double, int, int, double, double, int, int, double)","u":"%3Cinit%3E(double,double,double,double,double,int,int,double,double,int,int,double)"},{"p":"swervelib","c":"SwerveDrive","l":"swerveModules"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"SwerveModuleSimulation()","u":"%3Cinit%3E()"},{"p":"swervelib.math","c":"SwerveModuleState2","l":"SwerveModuleState2()","u":"%3Cinit%3E()"},{"p":"swervelib.math","c":"SwerveModuleState2","l":"SwerveModuleState2(double, Rotation2d, double)","u":"%3Cinit%3E(double,edu.wpi.first.math.geometry.Rotation2d,double)"},{"p":"swervelib.math","c":"SwerveModuleState2","l":"SwerveModuleState2(SwerveModuleState, double)","u":"%3Cinit%3E(edu.wpi.first.math.kinematics.SwerveModuleState,double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"SwerveMotor()","u":"%3Cinit%3E()"},{"p":"swervelib.parser","c":"SwerveParser","l":"SwerveParser(File)","u":"%3Cinit%3E(java.io.File)"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"SwervePoseEstimator2(SwerveDriveKinematics, Rotation2d, SwerveModulePosition[], Pose2d)","u":"%3Cinit%3E(edu.wpi.first.math.kinematics.SwerveDriveKinematics,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.kinematics.SwerveModulePosition[],edu.wpi.first.math.geometry.Pose2d)"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"SwervePoseEstimator2(SwerveDriveKinematics, Rotation2d, SwerveModulePosition[], Pose2d, Matrix, Matrix)","u":"%3Cinit%3E(edu.wpi.first.math.kinematics.SwerveDriveKinematics,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.kinematics.SwerveModulePosition[],edu.wpi.first.math.geometry.Pose2d,edu.wpi.first.math.Matrix,edu.wpi.first.math.Matrix)"},{"p":"swervelib","c":"SwerveModule","l":"synchronizeEncoderQueued"},{"p":"swervelib","c":"SwerveDrive","l":"synchronizeModuleEncoders()"},{"p":"swervelib.simulation.ctre","c":"TalonFXSimProfile","l":"TalonFXSimProfile(TalonFX, double, double, boolean)","u":"%3Cinit%3E(com.ctre.phoenix.motorcontrol.can.TalonFX,double,double,boolean)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"TalonFXSwerve(int, boolean)","u":"%3Cinit%3E(int,boolean)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"TalonFXSwerve(int, String, boolean)","u":"%3Cinit%3E(int,java.lang.String,boolean)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"TalonFXSwerve(WPI_TalonFX, boolean)","u":"%3Cinit%3E(com.ctre.phoenix.motorcontrol.can.WPI_TalonFX,boolean)"},{"p":"swervelib.simulation.ctre","c":"TalonSRXSimProfile","l":"TalonSRXSimProfile(TalonSRX, double, double, boolean)","u":"%3Cinit%3E(com.ctre.phoenix.motorcontrol.can.TalonSRX,double,double,boolean)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"TalonSRXSwerve(int, boolean)","u":"%3Cinit%3E(int,boolean)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"TalonSRXSwerve(WPI_TalonSRX, boolean)","u":"%3Cinit%3E(com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX,boolean)"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"TelemetryVerbosity()","u":"%3Cinit%3E()"},{"p":"swervelib","c":"SwerveController","l":"thetaController"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"timer"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"timer"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"toChassisSpeeds(SwerveModuleState2...)","u":"toChassisSpeeds(swervelib.math.SwerveModuleState2...)"},{"p":"swervelib.math","c":"SwerveModuleState2","l":"toSwerveModuleState()"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"toSwerveModuleStates(ChassisSpeeds)","u":"toSwerveModuleStates(edu.wpi.first.math.kinematics.ChassisSpeeds)"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"toSwerveModuleStates(ChassisSpeeds, Translation2d)","u":"toSwerveModuleStates(edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.geometry.Translation2d)"},{"p":"swervelib.math","c":"SwerveKinematics2","l":"toTwist2d(SwerveModulePosition...)","u":"toTwist2d(edu.wpi.first.math.kinematics.SwerveModulePosition...)"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"type"},{"p":"swervelib.math","c":"SwerveDriveOdometry2","l":"update(Rotation2d, Rotation2d, Rotation2d, SwerveModulePosition[])","u":"update(edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.kinematics.SwerveModulePosition[])"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"update(Rotation2d, Rotation2d, Rotation2d, SwerveModulePosition[])","u":"update(edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.kinematics.SwerveModulePosition[])"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"updateData()"},{"p":"swervelib","c":"SwerveDrive","l":"updateOdometry()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"updateOdometry(SwerveKinematics2, SwerveModuleState2[], Pose2d[], Field2d)","u":"updateOdometry(swervelib.math.SwerveKinematics2,swervelib.math.SwerveModuleState2[],edu.wpi.first.math.geometry.Pose2d[],edu.wpi.first.wpilibj.smartdashboard.Field2d)"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"updateStateAndPosition(SwerveModuleState2)","u":"updateStateAndPosition(swervelib.math.SwerveModuleState2)"},{"p":"swervelib.math","c":"SwervePoseEstimator2","l":"updateWithTime(double, Rotation2d, Rotation2d, Rotation2d, SwerveModulePosition[])","u":"updateWithTime(double,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.kinematics.SwerveModulePosition[])"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"values()"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"values()"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"Velocity"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"velocityPIDF"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"verbosity"},{"p":"swervelib.simulation.ctre","c":"VictorSPXSimProfile","l":"VictorSPXSimProfile(VictorSPX)","u":"%3Cinit%3E(com.ctre.phoenix.motorcontrol.can.VictorSPX)"},{"p":"swervelib","c":"SwerveDrive","l":"visionMeasurementStdDevs"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"wheelDiameter"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"wheelDiameter"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"wheelGripCoefficientOfFriction"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"wheelGripCoefficientOfFriction"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"wheelLocations"},{"p":"swervelib","c":"SwerveController","l":"withinHypotDeadband(double, double)","u":"withinHypotDeadband(double,double)"},{"p":"swervelib.parser.json.modules","c":"LocationJson","l":"x"},{"p":"swervelib","c":"SwerveController","l":"xLimiter"},{"p":"swervelib.parser.json.modules","c":"LocationJson","l":"y"},{"p":"swervelib","c":"SwerveController","l":"yLimiter"},{"p":"swervelib","c":"SwerveDrive","l":"zeroGyro()"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/overview-summary.html b/docs/overview-summary.html index d3cc9bb..78e257c 100644 --- a/docs/overview-summary.html +++ b/docs/overview-summary.html @@ -1,7 +1,7 @@ - + Generated Documentation (Untitled) diff --git a/docs/overview-tree.html b/docs/overview-tree.html index 9d01504..53f98f4 100644 --- a/docs/overview-tree.html +++ b/docs/overview-tree.html @@ -1,7 +1,7 @@ - + Class Hierarchy @@ -107,6 +107,11 @@ loadScripts(document, 'script');
  • swervelib.math.SwerveKinematics2
  • +
  • edu.wpi.first.math.kinematics.SwerveDriveOdometry + +
  • swervelib.telemetry.SwerveDriveTelemetry
  • swervelib.imu.SwerveIMU
      @@ -139,6 +144,8 @@ loadScripts(document, 'script');
  • swervelib.parser.SwerveParser
  • +
  • swervelib.math.SwervePoseEstimator2
  • +
  • swervelib.math.SwervePoseEstimator2.InterpolationRecord (implements edu.wpi.first.math.interpolation.Interpolatable<T>)
  • diff --git a/docs/swervelib/SwerveController.html b/docs/swervelib/SwerveController.html index b2a1a3f..3379716 100644 --- a/docs/swervelib/SwerveController.html +++ b/docs/swervelib/SwerveController.html @@ -1,7 +1,7 @@ - + SwerveController diff --git a/docs/swervelib/SwerveDrive.html b/docs/swervelib/SwerveDrive.html index 267bd0b..e2a60ce 100644 --- a/docs/swervelib/SwerveDrive.html +++ b/docs/swervelib/SwerveDrive.html @@ -1,7 +1,7 @@ - + SwerveDrive @@ -142,7 +142,7 @@ loadScripts(document, 'script');
    Swerve drive configuration.
    -
    final edu.wpi.first.math.estimator.SwerveDrivePoseEstimator
    +
    Swerve odometry.
    @@ -416,7 +416,7 @@ loadScripts(document, 'script');
  • swerveDrivePoseEstimator

    -
    public final edu.wpi.first.math.estimator.SwerveDrivePoseEstimator swerveDrivePoseEstimator
    +
    public final SwervePoseEstimator2 swerveDrivePoseEstimator
    Swerve odometry.
  • diff --git a/docs/swervelib/SwerveModule.html b/docs/swervelib/SwerveModule.html index 6f247b8..5201f64 100644 --- a/docs/swervelib/SwerveModule.html +++ b/docs/swervelib/SwerveModule.html @@ -1,7 +1,7 @@ - + SwerveModule diff --git a/docs/swervelib/encoders/AnalogAbsoluteEncoderSwerve.html b/docs/swervelib/encoders/AnalogAbsoluteEncoderSwerve.html index 366b18e..1bc95b5 100644 --- a/docs/swervelib/encoders/AnalogAbsoluteEncoderSwerve.html +++ b/docs/swervelib/encoders/AnalogAbsoluteEncoderSwerve.html @@ -1,7 +1,7 @@ - + AnalogAbsoluteEncoderSwerve diff --git a/docs/swervelib/encoders/CANCoderSwerve.html b/docs/swervelib/encoders/CANCoderSwerve.html index eb3e16b..c5ea199 100644 --- a/docs/swervelib/encoders/CANCoderSwerve.html +++ b/docs/swervelib/encoders/CANCoderSwerve.html @@ -1,7 +1,7 @@ - + CANCoderSwerve diff --git a/docs/swervelib/encoders/SparkMaxEncoderSwerve.html b/docs/swervelib/encoders/SparkMaxEncoderSwerve.html index 9d3ae70..016ab82 100644 --- a/docs/swervelib/encoders/SparkMaxEncoderSwerve.html +++ b/docs/swervelib/encoders/SparkMaxEncoderSwerve.html @@ -1,7 +1,7 @@ - + SparkMaxEncoderSwerve diff --git a/docs/swervelib/encoders/SwerveAbsoluteEncoder.html b/docs/swervelib/encoders/SwerveAbsoluteEncoder.html index 9681252..19d353a 100644 --- a/docs/swervelib/encoders/SwerveAbsoluteEncoder.html +++ b/docs/swervelib/encoders/SwerveAbsoluteEncoder.html @@ -1,7 +1,7 @@ - + SwerveAbsoluteEncoder diff --git a/docs/swervelib/encoders/package-summary.html b/docs/swervelib/encoders/package-summary.html index e57b810..d39835b 100644 --- a/docs/swervelib/encoders/package-summary.html +++ b/docs/swervelib/encoders/package-summary.html @@ -1,7 +1,7 @@ - + swervelib.encoders diff --git a/docs/swervelib/encoders/package-tree.html b/docs/swervelib/encoders/package-tree.html index a81e744..7ee5078 100644 --- a/docs/swervelib/encoders/package-tree.html +++ b/docs/swervelib/encoders/package-tree.html @@ -1,7 +1,7 @@ - + swervelib.encoders Class Hierarchy diff --git a/docs/swervelib/imu/ADIS16448Swerve.html b/docs/swervelib/imu/ADIS16448Swerve.html index 7d4822a..8f91144 100644 --- a/docs/swervelib/imu/ADIS16448Swerve.html +++ b/docs/swervelib/imu/ADIS16448Swerve.html @@ -1,7 +1,7 @@ - + ADIS16448Swerve diff --git a/docs/swervelib/imu/ADIS16470Swerve.html b/docs/swervelib/imu/ADIS16470Swerve.html index 887b1c7..c4867ee 100644 --- a/docs/swervelib/imu/ADIS16470Swerve.html +++ b/docs/swervelib/imu/ADIS16470Swerve.html @@ -1,7 +1,7 @@ - + ADIS16470Swerve diff --git a/docs/swervelib/imu/ADXRS450Swerve.html b/docs/swervelib/imu/ADXRS450Swerve.html index cf884da..79169e9 100644 --- a/docs/swervelib/imu/ADXRS450Swerve.html +++ b/docs/swervelib/imu/ADXRS450Swerve.html @@ -1,7 +1,7 @@ - + ADXRS450Swerve diff --git a/docs/swervelib/imu/AnalogGyroSwerve.html b/docs/swervelib/imu/AnalogGyroSwerve.html index aac0517..855b72f 100644 --- a/docs/swervelib/imu/AnalogGyroSwerve.html +++ b/docs/swervelib/imu/AnalogGyroSwerve.html @@ -1,7 +1,7 @@ - + AnalogGyroSwerve diff --git a/docs/swervelib/imu/NavXSwerve.html b/docs/swervelib/imu/NavXSwerve.html index 5487bda..8c9701f 100644 --- a/docs/swervelib/imu/NavXSwerve.html +++ b/docs/swervelib/imu/NavXSwerve.html @@ -1,7 +1,7 @@ - + NavXSwerve diff --git a/docs/swervelib/imu/Pigeon2Swerve.html b/docs/swervelib/imu/Pigeon2Swerve.html index 4a6114b..92618fc 100644 --- a/docs/swervelib/imu/Pigeon2Swerve.html +++ b/docs/swervelib/imu/Pigeon2Swerve.html @@ -1,7 +1,7 @@ - + Pigeon2Swerve diff --git a/docs/swervelib/imu/PigeonSwerve.html b/docs/swervelib/imu/PigeonSwerve.html index b73fe21..bcc73b7 100644 --- a/docs/swervelib/imu/PigeonSwerve.html +++ b/docs/swervelib/imu/PigeonSwerve.html @@ -1,7 +1,7 @@ - + PigeonSwerve diff --git a/docs/swervelib/imu/SwerveIMU.html b/docs/swervelib/imu/SwerveIMU.html index 3cb9e56..6245e84 100644 --- a/docs/swervelib/imu/SwerveIMU.html +++ b/docs/swervelib/imu/SwerveIMU.html @@ -1,7 +1,7 @@ - + SwerveIMU diff --git a/docs/swervelib/imu/package-summary.html b/docs/swervelib/imu/package-summary.html index 5f7b8a6..423d948 100644 --- a/docs/swervelib/imu/package-summary.html +++ b/docs/swervelib/imu/package-summary.html @@ -1,7 +1,7 @@ - + swervelib.imu diff --git a/docs/swervelib/imu/package-tree.html b/docs/swervelib/imu/package-tree.html index f989c03..b870bce 100644 --- a/docs/swervelib/imu/package-tree.html +++ b/docs/swervelib/imu/package-tree.html @@ -1,7 +1,7 @@ - + swervelib.imu Class Hierarchy diff --git a/docs/swervelib/math/Matter.html b/docs/swervelib/math/Matter.html index e0de3a3..8a3e5f5 100644 --- a/docs/swervelib/math/Matter.html +++ b/docs/swervelib/math/Matter.html @@ -1,7 +1,7 @@ - + Matter diff --git a/docs/swervelib/math/SwerveDriveOdometry2.html b/docs/swervelib/math/SwerveDriveOdometry2.html new file mode 100644 index 0000000..1921ad6 --- /dev/null +++ b/docs/swervelib/math/SwerveDriveOdometry2.html @@ -0,0 +1,376 @@ + + + + +SwerveDriveOdometry2 + + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class SwerveDriveOdometry2

    +
    +
    java.lang.Object +
    edu.wpi.first.math.kinematics.SwerveDriveOdometry +
    swervelib.math.SwerveDriveOdometry2
    +
    +
    +
    +
    +
    public class SwerveDriveOdometry2 +extends edu.wpi.first.math.kinematics.SwerveDriveOdometry
    +
    Clone of SwerveDriveOdometry except uses gyro pitch and roll to achieve a more accurate estimation. + Originally made by Team 1466.
    +
    +
    +
      + +
    • +
      +

      Field Summary

      +
      Fields
      +
      +
      Modifier and Type
      +
      Field
      +
      Description
      +
      private edu.wpi.first.math.geometry.Rotation2d
      + +
      +
      Gyro offset.
      +
      +
      private final edu.wpi.first.math.kinematics.SwerveDriveKinematics
      + +
      +
      Swerve drive kinematics.
      +
      +
      private final int
      + +
      +
      Number of swerve modules.
      +
      +
      private edu.wpi.first.math.geometry.Pose2d
      + +
      +
      Estimated pose.
      +
      +
      private edu.wpi.first.math.geometry.Rotation2d
      + +
      +
      Previous gyroscope angle.
      +
      +
      private final edu.wpi.first.math.kinematics.SwerveModulePosition[]
      + +
      +
      Previous swerve module positions.
      +
      +
      private final edu.wpi.first.math.kinematics.SwerveModuleState[]
      + +
      +
      Zero module states.
      +
      +
      +
      +
    • + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      SwerveDriveOdometry2(edu.wpi.first.math.kinematics.SwerveDriveKinematics kinematics, + edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions)
      +
      +
      Constructs a SwerveDriveOdometry object with the default pose at the origin.
      +
      +
      SwerveDriveOdometry2(edu.wpi.first.math.kinematics.SwerveDriveKinematics kinematics, + edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions, + edu.wpi.first.math.geometry.Pose2d initialPose)
      +
      +
      Constructs a SwerveDriveOdometry object.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      edu.wpi.first.math.geometry.Pose2d
      + +
      +
      Returns the position of the robot on the field.
      +
      +
      void
      +
      resetPosition(edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions, + edu.wpi.first.math.geometry.Pose2d pose)
      +
      +
      Resets the robot's position on the field.
      +
      +
      edu.wpi.first.math.geometry.Pose2d
      +
      update(edu.wpi.first.math.geometry.Rotation2d gyroYaw, + edu.wpi.first.math.geometry.Rotation2d pitch, + edu.wpi.first.math.geometry.Rotation2d roll, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions)
      +
      +
      Updates the robot's position on the field using forward kinematics and integration of the pose over time.
      +
      +
      +
      +
      +
      +

      Methods inherited from class edu.wpi.first.math.kinematics.SwerveDriveOdometry

      +update
      +
      +

      Methods inherited from class java.lang.Object

      +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Field Details

      +
        +
      • +
        +

        m_kinematics

        +
        private final edu.wpi.first.math.kinematics.SwerveDriveKinematics m_kinematics
        +
        Swerve drive kinematics.
        +
        +
      • +
      • +
        +

        m_numModules

        +
        private final int m_numModules
        +
        Number of swerve modules.
        +
        +
      • +
      • +
        +

        m_previousModulePositions

        +
        private final edu.wpi.first.math.kinematics.SwerveModulePosition[] m_previousModulePositions
        +
        Previous swerve module positions.
        +
        +
      • +
      • +
        +

        m_zeroModuleStates

        +
        private final edu.wpi.first.math.kinematics.SwerveModuleState[] m_zeroModuleStates
        +
        Zero module states.
        +
        +
      • +
      • +
        +

        m_poseMeters

        +
        private edu.wpi.first.math.geometry.Pose2d m_poseMeters
        +
        Estimated pose.
        +
        +
      • +
      • +
        +

        m_gyroOffset

        +
        private edu.wpi.first.math.geometry.Rotation2d m_gyroOffset
        +
        Gyro offset.
        +
        +
      • +
      • +
        +

        m_previousAngle

        +
        private edu.wpi.first.math.geometry.Rotation2d m_previousAngle
        +
        Previous gyroscope angle.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        SwerveDriveOdometry2

        +
        public SwerveDriveOdometry2(edu.wpi.first.math.kinematics.SwerveDriveKinematics kinematics, + edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions, + edu.wpi.first.math.geometry.Pose2d initialPose)
        +
        Constructs a SwerveDriveOdometry object.
        +
        +
        Parameters:
        +
        kinematics - The swerve drive kinematics for your drivetrain.
        +
        gyroAngle - The angle reported by the gyroscope.
        +
        modulePositions - The wheel positions reported by each module.
        +
        initialPose - The starting position of the robot on the field.
        +
        +
        +
      • +
      • +
        +

        SwerveDriveOdometry2

        +
        public SwerveDriveOdometry2(edu.wpi.first.math.kinematics.SwerveDriveKinematics kinematics, + edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions)
        +
        Constructs a SwerveDriveOdometry object with the default pose at the origin.
        +
        +
        Parameters:
        +
        kinematics - The swerve drive kinematics for your drivetrain.
        +
        gyroAngle - The angle reported by the gyroscope.
        +
        modulePositions - The wheel positions reported by each module.
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        resetPosition

        +
        public void resetPosition(edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions, + edu.wpi.first.math.geometry.Pose2d pose)
        +
        Resets the robot's position on the field. + +

        The gyroscope angle does not need to be reset here on the user's robot code. The library + automatically takes care of offsetting the gyro angle. + +

        Similarly, module positions do not need to be reset in user code.

        +
        +
        Overrides:
        +
        resetPosition in class edu.wpi.first.math.kinematics.SwerveDriveOdometry
        +
        Parameters:
        +
        gyroAngle - The angle reported by the gyroscope.
        +
        modulePositions - The wheel positions reported by each module.,
        +
        pose - The position on the field that your robot is at.
        +
        +
        +
      • +
      • +
        +

        getPoseMeters

        +
        public edu.wpi.first.math.geometry.Pose2d getPoseMeters()
        +
        Returns the position of the robot on the field.
        +
        +
        Overrides:
        +
        getPoseMeters in class edu.wpi.first.math.kinematics.SwerveDriveOdometry
        +
        Returns:
        +
        The pose of the robot (x and y are in meters).
        +
        +
        +
      • +
      • +
        +

        update

        +
        public edu.wpi.first.math.geometry.Pose2d update(edu.wpi.first.math.geometry.Rotation2d gyroYaw, + edu.wpi.first.math.geometry.Rotation2d pitch, + edu.wpi.first.math.geometry.Rotation2d roll, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions)
        +
        Updates the robot's position on the field using forward kinematics and integration of the pose over time. This + method automatically calculates the current time to calculate period (difference between two timestamps). The + period is used to calculate the change in distance from a velocity. This also takes in an angle parameter which is + used instead of the angular rate that is calculated from forward kinematics. This also takes in pitch and roll to + allow for more accurate pose estimation on angled surfaces using a rotation matrix.
        +
        +
        Parameters:
        +
        gyroYaw - The yaw reported by the gyro.
        +
        pitch - The pitch reported by the gyro.
        +
        roll - The roll reported by the gyro.
        +
        modulePositions - The current position of all swerve modules. Please provide the positions in the same order + in which you instantiated your SwerveDriveKinematics.
        +
        Returns:
        +
        The new pose of the robot.
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/docs/swervelib/math/SwerveKinematics2.html b/docs/swervelib/math/SwerveKinematics2.html index ba2cb71..5cd257d 100644 --- a/docs/swervelib/math/SwerveKinematics2.html +++ b/docs/swervelib/math/SwerveKinematics2.html @@ -1,7 +1,7 @@ - + SwerveKinematics2 diff --git a/docs/swervelib/math/SwerveMath.html b/docs/swervelib/math/SwerveMath.html index 16e0129..5d8c6b5 100644 --- a/docs/swervelib/math/SwerveMath.html +++ b/docs/swervelib/math/SwerveMath.html @@ -1,7 +1,7 @@ - + SwerveMath diff --git a/docs/swervelib/math/SwerveModuleState2.html b/docs/swervelib/math/SwerveModuleState2.html index 834eca5..c0e6c73 100644 --- a/docs/swervelib/math/SwerveModuleState2.html +++ b/docs/swervelib/math/SwerveModuleState2.html @@ -1,7 +1,7 @@ - + SwerveModuleState2 diff --git a/docs/swervelib/math/SwervePoseEstimator2.InterpolationRecord.html b/docs/swervelib/math/SwervePoseEstimator2.InterpolationRecord.html new file mode 100644 index 0000000..a3187c7 --- /dev/null +++ b/docs/swervelib/math/SwervePoseEstimator2.InterpolationRecord.html @@ -0,0 +1,295 @@ + + + + +SwervePoseEstimator2.InterpolationRecord + + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class SwervePoseEstimator2.InterpolationRecord

    +
    +
    java.lang.Object +
    swervelib.math.SwervePoseEstimator2.InterpolationRecord
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    edu.wpi.first.math.interpolation.Interpolatable<SwervePoseEstimator2.InterpolationRecord>
    +
    +
    +
    Enclosing class:
    +
    SwervePoseEstimator2
    +
    +
    +
    private class SwervePoseEstimator2.InterpolationRecord +extends Object +implements edu.wpi.first.math.interpolation.Interpolatable<SwervePoseEstimator2.InterpolationRecord>
    +
    Represents an odometry record. The record contains the inputs provided as well as the pose that was observed based + on these inputs, as well as the previous record and its inputs.
    +
    +
    +
      + +
    • +
      +

      Field Summary

      +
      Fields
      +
      +
      Modifier and Type
      +
      Field
      +
      Description
      +
      private final edu.wpi.first.math.geometry.Rotation2d
      + +
       
      +
      private final edu.wpi.first.math.geometry.Rotation2d
      + +
       
      +
      private final edu.wpi.first.math.geometry.Rotation2d
      + +
       
      +
      private final edu.wpi.first.math.kinematics.SwerveModulePosition[]
      + +
       
      +
      private final edu.wpi.first.math.geometry.Pose2d
      + +
       
      +
      +
      +
    • + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Modifier
      +
      Constructor
      +
      Description
      +
      private
      +
      InterpolationRecord(edu.wpi.first.math.geometry.Pose2d poseMeters, + edu.wpi.first.math.geometry.Rotation2d gyro, + edu.wpi.first.math.geometry.Rotation2d gyroPitch, + edu.wpi.first.math.geometry.Rotation2d gyroRoll, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions)
      +
      +
      Constructs an Interpolation Record with the specified parameters.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      boolean
      + +
       
      +
      int
      + +
       
      + + +
      +
      Return the interpolated record.
      +
      +
      +
      +
      +
      +

      Methods inherited from class java.lang.Object

      +clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Field Details

      +
        +
      • +
        +

        poseMeters

        +
        private final edu.wpi.first.math.geometry.Pose2d poseMeters
        +
        +
      • +
      • +
        +

        gyroAngle

        +
        private final edu.wpi.first.math.geometry.Rotation2d gyroAngle
        +
        +
      • +
      • +
        +

        gyroPitch

        +
        private final edu.wpi.first.math.geometry.Rotation2d gyroPitch
        +
        +
      • +
      • +
        +

        gyroRoll

        +
        private final edu.wpi.first.math.geometry.Rotation2d gyroRoll
        +
        +
      • +
      • +
        +

        modulePositions

        +
        private final edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        InterpolationRecord

        +
        private InterpolationRecord(edu.wpi.first.math.geometry.Pose2d poseMeters, + edu.wpi.first.math.geometry.Rotation2d gyro, + edu.wpi.first.math.geometry.Rotation2d gyroPitch, + edu.wpi.first.math.geometry.Rotation2d gyroRoll, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions)
        +
        Constructs an Interpolation Record with the specified parameters.
        +
        +
        Parameters:
        +
        poseMeters - The pose observed given the current sensor inputs and the previous pose.
        +
        gyro - The current gyro angle.
        +
        gyroPitch - The current gyro pitch.
        +
        gyroRoll - The current gyro roll.
        +
        modulePositions - The distances and rotations measured at each wheel.
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      + +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/docs/swervelib/math/SwervePoseEstimator2.html b/docs/swervelib/math/SwervePoseEstimator2.html new file mode 100644 index 0000000..f750411 --- /dev/null +++ b/docs/swervelib/math/SwervePoseEstimator2.html @@ -0,0 +1,502 @@ + + + + +SwervePoseEstimator2 + + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class SwervePoseEstimator2

    +
    +
    java.lang.Object +
    swervelib.math.SwervePoseEstimator2
    +
    +
    +
    +
    public class SwervePoseEstimator2 +extends Object
    +
    Clone of SwerveDrivePoseEstimator which takes into account gyroscope pitch and roll to achieve a more + accurate estimation, originally made by Team 1466.
    +
    +
    +
      + +
    • +
      +

      Nested Class Summary

      +
      Nested Classes
      +
      +
      Modifier and Type
      +
      Class
      +
      Description
      +
      private class 
      + +
      +
      Represents an odometry record.
      +
      +
      +
      +
    • + +
    • +
      +

      Field Summary

      +
      Fields
      +
      +
      Modifier and Type
      +
      Field
      +
      Description
      +
      private final edu.wpi.first.math.kinematics.SwerveDriveKinematics
      + +
      +
      Swerve drive kinematics.
      +
      +
      private final int
      + +
      +
      Number of swerve modules.
      +
      +
      private final SwerveDriveOdometry2
      + +
      +
      Enhanced swerve drive odometry.
      +
      +
      private final edu.wpi.first.math.interpolation.TimeInterpolatableBuffer<SwervePoseEstimator2.InterpolationRecord>
      + +
      +
      Interpolation buffer.
      +
      +
      private final edu.wpi.first.math.Matrix<edu.wpi.first.math.numbers.N3,edu.wpi.first.math.numbers.N1>
      + +
      +
      Matrix quotient.
      +
      +
      private final edu.wpi.first.math.Matrix<edu.wpi.first.math.numbers.N3,edu.wpi.first.math.numbers.N3>
      + +
      +
      Vision standard deviations.
      +
      +
      +
      +
    • + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      SwervePoseEstimator2(edu.wpi.first.math.kinematics.SwerveDriveKinematics kinematics, + edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions, + edu.wpi.first.math.geometry.Pose2d initialPoseMeters)
      +
      +
      Constructs a SwerveDrivePoseEstimator with default standard deviations for the model and vision measurements.
      +
      +
      SwervePoseEstimator2(edu.wpi.first.math.kinematics.SwerveDriveKinematics kinematics, + edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions, + edu.wpi.first.math.geometry.Pose2d initialPoseMeters, + edu.wpi.first.math.Matrix<edu.wpi.first.math.numbers.N3,edu.wpi.first.math.numbers.N1> stateStdDevs, + edu.wpi.first.math.Matrix<edu.wpi.first.math.numbers.N3,edu.wpi.first.math.numbers.N1> visionMeasurementStdDevs)
      +
      +
      Constructs a SwerveDrivePoseEstimator.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      void
      +
      addVisionMeasurement(edu.wpi.first.math.geometry.Pose2d visionRobotPoseMeters, + double timestampSeconds)
      +
      +
      Adds a vision measurement to the Kalman Filter.
      +
      +
      void
      +
      addVisionMeasurement(edu.wpi.first.math.geometry.Pose2d visionRobotPoseMeters, + double timestampSeconds, + edu.wpi.first.math.Matrix<edu.wpi.first.math.numbers.N3,edu.wpi.first.math.numbers.N1> visionMeasurementStdDevs)
      +
      +
      Adds a vision measurement to the Kalman Filter.
      +
      +
      edu.wpi.first.math.geometry.Pose2d
      + +
      +
      Gets the estimated robot pose.
      +
      +
      void
      +
      resetPosition(edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions, + edu.wpi.first.math.geometry.Pose2d poseMeters)
      +
      +
      Resets the robot's position on the field.
      +
      +
      void
      +
      setVisionMeasurementStdDevs(edu.wpi.first.math.Matrix<edu.wpi.first.math.numbers.N3,edu.wpi.first.math.numbers.N1> visionMeasurementStdDevs)
      +
      +
      Sets the pose estimator's trust of global measurements.
      +
      +
      edu.wpi.first.math.geometry.Pose2d
      +
      update(edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.geometry.Rotation2d gyroPitch, + edu.wpi.first.math.geometry.Rotation2d gyroRoll, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions)
      +
      +
      Updates the pose estimator with wheel encoder and gyro information.
      +
      +
      edu.wpi.first.math.geometry.Pose2d
      +
      updateWithTime(double currentTimeSeconds, + edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.geometry.Rotation2d gyroPitch, + edu.wpi.first.math.geometry.Rotation2d gyroRoll, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions)
      +
      +
      Updates the pose estimator with wheel encoder and gyro information.
      +
      +
      +
      +
      +
      +

      Methods inherited from class java.lang.Object

      +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Field Details

      +
        +
      • +
        +

        m_kinematics

        +
        private final edu.wpi.first.math.kinematics.SwerveDriveKinematics m_kinematics
        +
        Swerve drive kinematics.
        +
        +
      • +
      • +
        +

        m_odometry

        +
        private final SwerveDriveOdometry2 m_odometry
        +
        Enhanced swerve drive odometry.
        +
        +
      • +
      • +
        +

        m_q

        +
        private final edu.wpi.first.math.Matrix<edu.wpi.first.math.numbers.N3,edu.wpi.first.math.numbers.N1> m_q
        +
        Matrix quotient.
        +
        +
      • +
      • +
        +

        m_numModules

        +
        private final int m_numModules
        +
        Number of swerve modules.
        +
        +
      • +
      • +
        +

        m_poseBuffer

        +
        private final edu.wpi.first.math.interpolation.TimeInterpolatableBuffer<SwervePoseEstimator2.InterpolationRecord> m_poseBuffer
        +
        Interpolation buffer.
        +
        +
      • +
      • +
        +

        m_visionK

        +
        private final edu.wpi.first.math.Matrix<edu.wpi.first.math.numbers.N3,edu.wpi.first.math.numbers.N3> m_visionK
        +
        Vision standard deviations.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        SwervePoseEstimator2

        +
        public SwervePoseEstimator2(edu.wpi.first.math.kinematics.SwerveDriveKinematics kinematics, + edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions, + edu.wpi.first.math.geometry.Pose2d initialPoseMeters)
        +
        Constructs a SwerveDrivePoseEstimator with default standard deviations for the model and vision measurements. + +

        The default standard deviations of the model states are 0.1 meters for x, 0.1 meters for y, + and 0.1 radians for heading. The default standard deviations of the vision measurements are 0.9 meters for x, 0.9 + meters for y, and 0.9 radians for heading.

        +
        +
        Parameters:
        +
        kinematics - A correctly-configured kinematics object for your drivetrain.
        +
        gyroAngle - The current gyro angle.
        +
        modulePositions - The current distance measurements and rotations of the swerve modules.
        +
        initialPoseMeters - The starting pose estimate.
        +
        +
        +
      • +
      • +
        +

        SwervePoseEstimator2

        +
        public SwervePoseEstimator2(edu.wpi.first.math.kinematics.SwerveDriveKinematics kinematics, + edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions, + edu.wpi.first.math.geometry.Pose2d initialPoseMeters, + edu.wpi.first.math.Matrix<edu.wpi.first.math.numbers.N3,edu.wpi.first.math.numbers.N1> stateStdDevs, + edu.wpi.first.math.Matrix<edu.wpi.first.math.numbers.N3,edu.wpi.first.math.numbers.N1> visionMeasurementStdDevs)
        +
        Constructs a SwerveDrivePoseEstimator.
        +
        +
        Parameters:
        +
        kinematics - A correctly-configured kinematics object for your drivetrain.
        +
        gyroAngle - The current gyro angle.
        +
        modulePositions - The current distance and rotation measurements of the swerve modules.
        +
        initialPoseMeters - The starting pose estimate.
        +
        stateStdDevs - Standard deviations of the pose estimate (x position in meters, y position in + meters, and heading in radians). Increase these numbers to trust your state + estimate less.
        +
        visionMeasurementStdDevs - Standard deviations of the vision pose measurement (x position in meters, y + position in meters, and heading in radians). Increase these numbers to trust the + vision pose measurement less.
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        setVisionMeasurementStdDevs

        +
        public void setVisionMeasurementStdDevs(edu.wpi.first.math.Matrix<edu.wpi.first.math.numbers.N3,edu.wpi.first.math.numbers.N1> visionMeasurementStdDevs)
        +
        Sets the pose estimator's trust of global measurements. This might be used to change trust in vision measurements + after the autonomous period, or to change trust as distance to a vision target increases.
        +
        +
        Parameters:
        +
        visionMeasurementStdDevs - Standard deviations of the vision measurements. Increase these numbers to trust + global measurements from vision less. This matrix is in the form [x, y, theta]áµ€, + with units in meters and radians.
        +
        +
        +
      • +
      • +
        +

        resetPosition

        +
        public void resetPosition(edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions, + edu.wpi.first.math.geometry.Pose2d poseMeters)
        +
        Resets the robot's position on the field. + +

        The gyroscope angle does not need to be reset in the user's robot code. The library + automatically takes care of offsetting the gyro angle.

        +
        +
        Parameters:
        +
        gyroAngle - The angle reported by the gyroscope.
        +
        modulePositions - The current distance measurements and rotations of the swerve modules.
        +
        poseMeters - The position on the field that your robot is at.
        +
        +
        +
      • +
      • +
        +

        getEstimatedPosition

        +
        public edu.wpi.first.math.geometry.Pose2d getEstimatedPosition()
        +
        Gets the estimated robot pose.
        +
        +
        Returns:
        +
        The estimated robot pose in meters.
        +
        +
        +
      • +
      • +
        +

        addVisionMeasurement

        +
        public void addVisionMeasurement(edu.wpi.first.math.geometry.Pose2d visionRobotPoseMeters, + double timestampSeconds)
        +
        Adds a vision measurement to the Kalman Filter. This will correct the odometry pose estimate while still accounting + for measurement noise. + +

        This method can be called as infrequently as you want, as long as you are calling SwerveDrivePoseEstimator.update(edu.wpi.first.math.geometry.Rotation2d, edu.wpi.first.math.kinematics.SwerveModulePosition[]) every loop. + +

        To promote stability of the pose estimate and make it robust to bad vision data, we + recommend only adding vision measurements that are already within one meter or so of the current pose estimate.

        +
        +
        Parameters:
        +
        visionRobotPoseMeters - The pose of the robot as measured by the vision camera.
        +
        timestampSeconds - The timestamp of the vision measurement in seconds. Note that if you don't use your + own time source by calling + SwerveDrivePoseEstimator.updateWithTime(double, Rotation2d, SwerveModulePosition[]) then you must use a timestamp with an epoch since FPGA + startup (i.e., the epoch of this timestamp is the same epoch as + Timer.getFPGATimestamp().) This means that you should + use Timer.getFPGATimestamp() as your time source or sync + the epochs.
        +
        +
        +
      • +
      • +
        +

        addVisionMeasurement

        +
        public void addVisionMeasurement(edu.wpi.first.math.geometry.Pose2d visionRobotPoseMeters, + double timestampSeconds, + edu.wpi.first.math.Matrix<edu.wpi.first.math.numbers.N3,edu.wpi.first.math.numbers.N1> visionMeasurementStdDevs)
        +
        Adds a vision measurement to the Kalman Filter. This will correct the odometry pose estimate while still accounting + for measurement noise. + +

        This method can be called as infrequently as you want, as long as you are calling SwerveDrivePoseEstimator.update(edu.wpi.first.math.geometry.Rotation2d, edu.wpi.first.math.kinematics.SwerveModulePosition[]) every loop. + +

        To promote stability of the pose estimate and make it robust to bad vision data, we + recommend only adding vision measurements that are already within one meter or so of the current pose estimate. + +

        Note that the vision measurement standard deviations passed into this method will continue + to apply to future measurements until a subsequent call to + SwerveDrivePoseEstimator.setVisionMeasurementStdDevs(Matrix) or this method.

        +
        +
        Parameters:
        +
        visionRobotPoseMeters - The pose of the robot as measured by the vision camera.
        +
        timestampSeconds - The timestamp of the vision measurement in seconds. Note that if you don't use your + own time source by calling + SwerveDrivePoseEstimator.updateWithTime(double, Rotation2d, SwerveModulePosition[]), then you must use a timestamp with an epoch since FPGA + startup (i.e., the epoch of this timestamp is the same epoch as + Timer.getFPGATimestamp()). This means that you should + use Timer.getFPGATimestamp() as your time source in + this case.
        +
        visionMeasurementStdDevs - Standard deviations of the vision pose measurement (x position in meters, y + position in meters, and heading in radians). Increase these numbers to trust the + vision pose measurement less.
        +
        +
        +
      • +
      • +
        +

        update

        +
        public edu.wpi.first.math.geometry.Pose2d update(edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.geometry.Rotation2d gyroPitch, + edu.wpi.first.math.geometry.Rotation2d gyroRoll, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions)
        +
        Updates the pose estimator with wheel encoder and gyro information. This should be called every loop.
        +
        +
        Parameters:
        +
        gyroAngle - The current gyro angle.
        +
        gyroPitch - The current gyro pitch.
        +
        gyroRoll - The current gyro roll.
        +
        modulePositions - The current distance measurements and rotations of the swerve modules.
        +
        Returns:
        +
        The estimated pose of the robot in meters.
        +
        +
        +
      • +
      • +
        +

        updateWithTime

        +
        public edu.wpi.first.math.geometry.Pose2d updateWithTime(double currentTimeSeconds, + edu.wpi.first.math.geometry.Rotation2d gyroAngle, + edu.wpi.first.math.geometry.Rotation2d gyroPitch, + edu.wpi.first.math.geometry.Rotation2d gyroRoll, + edu.wpi.first.math.kinematics.SwerveModulePosition[] modulePositions)
        +
        Updates the pose estimator with wheel encoder and gyro information. This should be called every loop.
        +
        +
        Parameters:
        +
        currentTimeSeconds - Time at which this method was called, in seconds.
        +
        gyroAngle - The current gyro angle.
        +
        gyroPitch - The current gyro pitch.
        +
        gyroRoll - The current gyro roll.
        +
        modulePositions - The current distance measurements and rotations of the swerve modules.
        +
        Returns:
        +
        The estimated pose of the robot in meters.
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/docs/swervelib/math/package-summary.html b/docs/swervelib/math/package-summary.html index 638441b..8b0c221 100644 --- a/docs/swervelib/math/package-summary.html +++ b/docs/swervelib/math/package-summary.html @@ -1,7 +1,7 @@ - + swervelib.math @@ -90,19 +90,28 @@ loadScripts(document, 'script');
    Object with significant mass that needs to be taken into account.
    - +
    +
    Clone of SwerveDriveOdometry except uses gyro pitch and roll to achieve a more accurate estimation.
    +
    + +
    Clone of WPI SwerveKinematics, which implements second order kinematics when calculating modules states from chassis speed.
    - -
    + +
    Mathematical functions which pertain to swerve drive.
    - -
    + +
    Second order kinematics swerve module state.
    + +
    +
    Clone of SwerveDrivePoseEstimator which takes into account gyroscope pitch and roll to achieve a more + accurate estimation, originally made by Team 1466.
    +
    diff --git a/docs/swervelib/math/package-tree.html b/docs/swervelib/math/package-tree.html index f745b32..9e87c78 100644 --- a/docs/swervelib/math/package-tree.html +++ b/docs/swervelib/math/package-tree.html @@ -1,7 +1,7 @@ - + swervelib.math Class Hierarchy @@ -65,12 +65,19 @@ loadScripts(document, 'script');
  • swervelib.math.SwerveKinematics2
  • +
  • edu.wpi.first.math.kinematics.SwerveDriveOdometry + +
  • swervelib.math.SwerveMath
  • edu.wpi.first.math.kinematics.SwerveModuleState (implements java.lang.Comparable<T>)
  • +
  • swervelib.math.SwervePoseEstimator2
  • +
  • swervelib.math.SwervePoseEstimator2.InterpolationRecord (implements edu.wpi.first.math.interpolation.Interpolatable<T>)
  • diff --git a/docs/swervelib/motors/SparkMaxBrushedMotorSwerve.html b/docs/swervelib/motors/SparkMaxBrushedMotorSwerve.html index 4d6d2e9..aeed7c9 100644 --- a/docs/swervelib/motors/SparkMaxBrushedMotorSwerve.html +++ b/docs/swervelib/motors/SparkMaxBrushedMotorSwerve.html @@ -1,7 +1,7 @@ - + SparkMaxBrushedMotorSwerve diff --git a/docs/swervelib/motors/SparkMaxSwerve.SparkMAX_slotIdx.html b/docs/swervelib/motors/SparkMaxSwerve.SparkMAX_slotIdx.html index c91ea84..31d7c33 100644 --- a/docs/swervelib/motors/SparkMaxSwerve.SparkMAX_slotIdx.html +++ b/docs/swervelib/motors/SparkMaxSwerve.SparkMAX_slotIdx.html @@ -1,7 +1,7 @@ - + SparkMaxSwerve.SparkMAX_slotIdx diff --git a/docs/swervelib/motors/SparkMaxSwerve.html b/docs/swervelib/motors/SparkMaxSwerve.html index 55cc0d3..93bd318 100644 --- a/docs/swervelib/motors/SparkMaxSwerve.html +++ b/docs/swervelib/motors/SparkMaxSwerve.html @@ -1,7 +1,7 @@ - + SparkMaxSwerve diff --git a/docs/swervelib/motors/SwerveMotor.html b/docs/swervelib/motors/SwerveMotor.html index 757b059..fd87ef8 100644 --- a/docs/swervelib/motors/SwerveMotor.html +++ b/docs/swervelib/motors/SwerveMotor.html @@ -1,7 +1,7 @@ - + SwerveMotor diff --git a/docs/swervelib/motors/TalonFXSwerve.html b/docs/swervelib/motors/TalonFXSwerve.html index b2b2861..6cc0c55 100644 --- a/docs/swervelib/motors/TalonFXSwerve.html +++ b/docs/swervelib/motors/TalonFXSwerve.html @@ -1,7 +1,7 @@ - + TalonFXSwerve diff --git a/docs/swervelib/motors/TalonSRXSwerve.html b/docs/swervelib/motors/TalonSRXSwerve.html index f18d31b..2422d4c 100644 --- a/docs/swervelib/motors/TalonSRXSwerve.html +++ b/docs/swervelib/motors/TalonSRXSwerve.html @@ -1,7 +1,7 @@ - + TalonSRXSwerve diff --git a/docs/swervelib/motors/package-summary.html b/docs/swervelib/motors/package-summary.html index 14b1f7c..5f9c073 100644 --- a/docs/swervelib/motors/package-summary.html +++ b/docs/swervelib/motors/package-summary.html @@ -1,7 +1,7 @@ - + swervelib.motors diff --git a/docs/swervelib/motors/package-tree.html b/docs/swervelib/motors/package-tree.html index 207af10..4840c3a 100644 --- a/docs/swervelib/motors/package-tree.html +++ b/docs/swervelib/motors/package-tree.html @@ -1,7 +1,7 @@ - + swervelib.motors Class Hierarchy diff --git a/docs/swervelib/package-summary.html b/docs/swervelib/package-summary.html index 376c6ad..25cd61d 100644 --- a/docs/swervelib/package-summary.html +++ b/docs/swervelib/package-summary.html @@ -1,7 +1,7 @@ - + swervelib diff --git a/docs/swervelib/package-tree.html b/docs/swervelib/package-tree.html index efdb3cd..d13324c 100644 --- a/docs/swervelib/package-tree.html +++ b/docs/swervelib/package-tree.html @@ -1,7 +1,7 @@ - + swervelib Class Hierarchy diff --git a/docs/swervelib/parser/PIDFConfig.html b/docs/swervelib/parser/PIDFConfig.html index fdd116b..f84e7aa 100644 --- a/docs/swervelib/parser/PIDFConfig.html +++ b/docs/swervelib/parser/PIDFConfig.html @@ -1,7 +1,7 @@ - + PIDFConfig diff --git a/docs/swervelib/parser/SwerveControllerConfiguration.html b/docs/swervelib/parser/SwerveControllerConfiguration.html index fb24cee..dfd754d 100644 --- a/docs/swervelib/parser/SwerveControllerConfiguration.html +++ b/docs/swervelib/parser/SwerveControllerConfiguration.html @@ -1,7 +1,7 @@ - + SwerveControllerConfiguration diff --git a/docs/swervelib/parser/SwerveDriveConfiguration.html b/docs/swervelib/parser/SwerveDriveConfiguration.html index 0e4d302..af6aee1 100644 --- a/docs/swervelib/parser/SwerveDriveConfiguration.html +++ b/docs/swervelib/parser/SwerveDriveConfiguration.html @@ -1,7 +1,7 @@ - + SwerveDriveConfiguration diff --git a/docs/swervelib/parser/SwerveModuleConfiguration.html b/docs/swervelib/parser/SwerveModuleConfiguration.html index e7dbf45..e58520d 100644 --- a/docs/swervelib/parser/SwerveModuleConfiguration.html +++ b/docs/swervelib/parser/SwerveModuleConfiguration.html @@ -1,7 +1,7 @@ - + SwerveModuleConfiguration diff --git a/docs/swervelib/parser/SwerveModulePhysicalCharacteristics.html b/docs/swervelib/parser/SwerveModulePhysicalCharacteristics.html index 7e6d68c..2211d64 100644 --- a/docs/swervelib/parser/SwerveModulePhysicalCharacteristics.html +++ b/docs/swervelib/parser/SwerveModulePhysicalCharacteristics.html @@ -1,7 +1,7 @@ - + SwerveModulePhysicalCharacteristics diff --git a/docs/swervelib/parser/SwerveParser.html b/docs/swervelib/parser/SwerveParser.html index 18287bd..44ce32a 100644 --- a/docs/swervelib/parser/SwerveParser.html +++ b/docs/swervelib/parser/SwerveParser.html @@ -1,7 +1,7 @@ - + SwerveParser diff --git a/docs/swervelib/parser/deserializer/PIDFRange.html b/docs/swervelib/parser/deserializer/PIDFRange.html index 025b276..9b9f84a 100644 --- a/docs/swervelib/parser/deserializer/PIDFRange.html +++ b/docs/swervelib/parser/deserializer/PIDFRange.html @@ -1,7 +1,7 @@ - + PIDFRange diff --git a/docs/swervelib/parser/deserializer/package-summary.html b/docs/swervelib/parser/deserializer/package-summary.html index 9a834d3..572e014 100644 --- a/docs/swervelib/parser/deserializer/package-summary.html +++ b/docs/swervelib/parser/deserializer/package-summary.html @@ -1,7 +1,7 @@ - + swervelib.parser.deserializer diff --git a/docs/swervelib/parser/deserializer/package-tree.html b/docs/swervelib/parser/deserializer/package-tree.html index ab52627..2ebdd56 100644 --- a/docs/swervelib/parser/deserializer/package-tree.html +++ b/docs/swervelib/parser/deserializer/package-tree.html @@ -1,7 +1,7 @@ - + swervelib.parser.deserializer Class Hierarchy diff --git a/docs/swervelib/parser/json/ControllerPropertiesJson.html b/docs/swervelib/parser/json/ControllerPropertiesJson.html index 4264d01..3b7dff8 100644 --- a/docs/swervelib/parser/json/ControllerPropertiesJson.html +++ b/docs/swervelib/parser/json/ControllerPropertiesJson.html @@ -1,7 +1,7 @@ - + ControllerPropertiesJson diff --git a/docs/swervelib/parser/json/DeviceJson.html b/docs/swervelib/parser/json/DeviceJson.html index 63e8c20..a82d44f 100644 --- a/docs/swervelib/parser/json/DeviceJson.html +++ b/docs/swervelib/parser/json/DeviceJson.html @@ -1,7 +1,7 @@ - + DeviceJson diff --git a/docs/swervelib/parser/json/ModuleJson.html b/docs/swervelib/parser/json/ModuleJson.html index 301dcae..af29591 100644 --- a/docs/swervelib/parser/json/ModuleJson.html +++ b/docs/swervelib/parser/json/ModuleJson.html @@ -1,7 +1,7 @@ - + ModuleJson diff --git a/docs/swervelib/parser/json/MotorConfigDouble.html b/docs/swervelib/parser/json/MotorConfigDouble.html index db9d818..343f609 100644 --- a/docs/swervelib/parser/json/MotorConfigDouble.html +++ b/docs/swervelib/parser/json/MotorConfigDouble.html @@ -1,7 +1,7 @@ - + MotorConfigDouble diff --git a/docs/swervelib/parser/json/MotorConfigInt.html b/docs/swervelib/parser/json/MotorConfigInt.html index 798b52e..23d29cb 100644 --- a/docs/swervelib/parser/json/MotorConfigInt.html +++ b/docs/swervelib/parser/json/MotorConfigInt.html @@ -1,7 +1,7 @@ - + MotorConfigInt diff --git a/docs/swervelib/parser/json/PIDFPropertiesJson.html b/docs/swervelib/parser/json/PIDFPropertiesJson.html index a71a782..3d1b4a0 100644 --- a/docs/swervelib/parser/json/PIDFPropertiesJson.html +++ b/docs/swervelib/parser/json/PIDFPropertiesJson.html @@ -1,7 +1,7 @@ - + PIDFPropertiesJson diff --git a/docs/swervelib/parser/json/PhysicalPropertiesJson.html b/docs/swervelib/parser/json/PhysicalPropertiesJson.html index 375e419..4a1e503 100644 --- a/docs/swervelib/parser/json/PhysicalPropertiesJson.html +++ b/docs/swervelib/parser/json/PhysicalPropertiesJson.html @@ -1,7 +1,7 @@ - + PhysicalPropertiesJson diff --git a/docs/swervelib/parser/json/SwerveDriveJson.html b/docs/swervelib/parser/json/SwerveDriveJson.html index c502379..d8b2be0 100644 --- a/docs/swervelib/parser/json/SwerveDriveJson.html +++ b/docs/swervelib/parser/json/SwerveDriveJson.html @@ -1,7 +1,7 @@ - + SwerveDriveJson diff --git a/docs/swervelib/parser/json/modules/BoolMotorJson.html b/docs/swervelib/parser/json/modules/BoolMotorJson.html index 17c1432..983749c 100644 --- a/docs/swervelib/parser/json/modules/BoolMotorJson.html +++ b/docs/swervelib/parser/json/modules/BoolMotorJson.html @@ -1,7 +1,7 @@ - + BoolMotorJson diff --git a/docs/swervelib/parser/json/modules/LocationJson.html b/docs/swervelib/parser/json/modules/LocationJson.html index f98bd3c..96c4830 100644 --- a/docs/swervelib/parser/json/modules/LocationJson.html +++ b/docs/swervelib/parser/json/modules/LocationJson.html @@ -1,7 +1,7 @@ - + LocationJson diff --git a/docs/swervelib/parser/json/modules/package-summary.html b/docs/swervelib/parser/json/modules/package-summary.html index da4a656..bd80b31 100644 --- a/docs/swervelib/parser/json/modules/package-summary.html +++ b/docs/swervelib/parser/json/modules/package-summary.html @@ -1,7 +1,7 @@ - + swervelib.parser.json.modules diff --git a/docs/swervelib/parser/json/modules/package-tree.html b/docs/swervelib/parser/json/modules/package-tree.html index 47a8d13..781d8bf 100644 --- a/docs/swervelib/parser/json/modules/package-tree.html +++ b/docs/swervelib/parser/json/modules/package-tree.html @@ -1,7 +1,7 @@ - + swervelib.parser.json.modules Class Hierarchy diff --git a/docs/swervelib/parser/json/package-summary.html b/docs/swervelib/parser/json/package-summary.html index c7fc94f..d142da6 100644 --- a/docs/swervelib/parser/json/package-summary.html +++ b/docs/swervelib/parser/json/package-summary.html @@ -1,7 +1,7 @@ - + swervelib.parser.json diff --git a/docs/swervelib/parser/json/package-tree.html b/docs/swervelib/parser/json/package-tree.html index 1bf9224..87e5c0b 100644 --- a/docs/swervelib/parser/json/package-tree.html +++ b/docs/swervelib/parser/json/package-tree.html @@ -1,7 +1,7 @@ - + swervelib.parser.json Class Hierarchy diff --git a/docs/swervelib/parser/package-summary.html b/docs/swervelib/parser/package-summary.html index ff7d729..2d8c845 100644 --- a/docs/swervelib/parser/package-summary.html +++ b/docs/swervelib/parser/package-summary.html @@ -1,7 +1,7 @@ - + swervelib.parser diff --git a/docs/swervelib/parser/package-tree.html b/docs/swervelib/parser/package-tree.html index 4a33daf..9a424b5 100644 --- a/docs/swervelib/parser/package-tree.html +++ b/docs/swervelib/parser/package-tree.html @@ -1,7 +1,7 @@ - + swervelib.parser Class Hierarchy diff --git a/docs/swervelib/simulation/SwerveIMUSimulation.html b/docs/swervelib/simulation/SwerveIMUSimulation.html index e373b40..20f01f9 100644 --- a/docs/swervelib/simulation/SwerveIMUSimulation.html +++ b/docs/swervelib/simulation/SwerveIMUSimulation.html @@ -1,7 +1,7 @@ - + SwerveIMUSimulation diff --git a/docs/swervelib/simulation/SwerveModuleSimulation.html b/docs/swervelib/simulation/SwerveModuleSimulation.html index f7e368c..50915d0 100644 --- a/docs/swervelib/simulation/SwerveModuleSimulation.html +++ b/docs/swervelib/simulation/SwerveModuleSimulation.html @@ -1,7 +1,7 @@ - + SwerveModuleSimulation diff --git a/docs/swervelib/simulation/ctre/PhysicsSim.SimProfile.html b/docs/swervelib/simulation/ctre/PhysicsSim.SimProfile.html index ba9597d..b5baa95 100644 --- a/docs/swervelib/simulation/ctre/PhysicsSim.SimProfile.html +++ b/docs/swervelib/simulation/ctre/PhysicsSim.SimProfile.html @@ -1,7 +1,7 @@ - + PhysicsSim.SimProfile diff --git a/docs/swervelib/simulation/ctre/PhysicsSim.html b/docs/swervelib/simulation/ctre/PhysicsSim.html index f636626..eafb3e4 100644 --- a/docs/swervelib/simulation/ctre/PhysicsSim.html +++ b/docs/swervelib/simulation/ctre/PhysicsSim.html @@ -1,7 +1,7 @@ - + PhysicsSim diff --git a/docs/swervelib/simulation/ctre/TalonFXSimProfile.html b/docs/swervelib/simulation/ctre/TalonFXSimProfile.html index 29cb582..6053d1e 100644 --- a/docs/swervelib/simulation/ctre/TalonFXSimProfile.html +++ b/docs/swervelib/simulation/ctre/TalonFXSimProfile.html @@ -1,7 +1,7 @@ - + TalonFXSimProfile diff --git a/docs/swervelib/simulation/ctre/TalonSRXSimProfile.html b/docs/swervelib/simulation/ctre/TalonSRXSimProfile.html index 0144707..ecec8a0 100644 --- a/docs/swervelib/simulation/ctre/TalonSRXSimProfile.html +++ b/docs/swervelib/simulation/ctre/TalonSRXSimProfile.html @@ -1,7 +1,7 @@ - + TalonSRXSimProfile diff --git a/docs/swervelib/simulation/ctre/VictorSPXSimProfile.html b/docs/swervelib/simulation/ctre/VictorSPXSimProfile.html index 86a59bb..3b982fc 100644 --- a/docs/swervelib/simulation/ctre/VictorSPXSimProfile.html +++ b/docs/swervelib/simulation/ctre/VictorSPXSimProfile.html @@ -1,7 +1,7 @@ - + VictorSPXSimProfile diff --git a/docs/swervelib/simulation/ctre/package-summary.html b/docs/swervelib/simulation/ctre/package-summary.html index fd8dc07..78f6430 100644 --- a/docs/swervelib/simulation/ctre/package-summary.html +++ b/docs/swervelib/simulation/ctre/package-summary.html @@ -1,7 +1,7 @@ - + swervelib.simulation.ctre diff --git a/docs/swervelib/simulation/ctre/package-tree.html b/docs/swervelib/simulation/ctre/package-tree.html index 839df8a..ab5f08e 100644 --- a/docs/swervelib/simulation/ctre/package-tree.html +++ b/docs/swervelib/simulation/ctre/package-tree.html @@ -1,7 +1,7 @@ - + swervelib.simulation.ctre Class Hierarchy diff --git a/docs/swervelib/simulation/package-summary.html b/docs/swervelib/simulation/package-summary.html index 9b0982a..1ce0161 100644 --- a/docs/swervelib/simulation/package-summary.html +++ b/docs/swervelib/simulation/package-summary.html @@ -1,7 +1,7 @@ - + swervelib.simulation diff --git a/docs/swervelib/simulation/package-tree.html b/docs/swervelib/simulation/package-tree.html index bec01a4..04b3705 100644 --- a/docs/swervelib/simulation/package-tree.html +++ b/docs/swervelib/simulation/package-tree.html @@ -1,7 +1,7 @@ - + swervelib.simulation Class Hierarchy diff --git a/docs/swervelib/telemetry/SwerveDriveTelemetry.TelemetryVerbosity.html b/docs/swervelib/telemetry/SwerveDriveTelemetry.TelemetryVerbosity.html index 4c405da..bc9a0c3 100644 --- a/docs/swervelib/telemetry/SwerveDriveTelemetry.TelemetryVerbosity.html +++ b/docs/swervelib/telemetry/SwerveDriveTelemetry.TelemetryVerbosity.html @@ -1,7 +1,7 @@ - + SwerveDriveTelemetry.TelemetryVerbosity diff --git a/docs/swervelib/telemetry/SwerveDriveTelemetry.html b/docs/swervelib/telemetry/SwerveDriveTelemetry.html index 95309ae..ec96133 100644 --- a/docs/swervelib/telemetry/SwerveDriveTelemetry.html +++ b/docs/swervelib/telemetry/SwerveDriveTelemetry.html @@ -1,7 +1,7 @@ - + SwerveDriveTelemetry diff --git a/docs/swervelib/telemetry/package-summary.html b/docs/swervelib/telemetry/package-summary.html index 0019313..96f31fd 100644 --- a/docs/swervelib/telemetry/package-summary.html +++ b/docs/swervelib/telemetry/package-summary.html @@ -1,7 +1,7 @@ - + swervelib.telemetry diff --git a/docs/swervelib/telemetry/package-tree.html b/docs/swervelib/telemetry/package-tree.html index eda414b..b799c24 100644 --- a/docs/swervelib/telemetry/package-tree.html +++ b/docs/swervelib/telemetry/package-tree.html @@ -1,7 +1,7 @@ - + swervelib.telemetry Class Hierarchy diff --git a/docs/type-search-index.js b/docs/type-search-index.js index 8c42835..fd1ed39 100644 --- a/docs/type-search-index.js +++ b/docs/type-search-index.js @@ -1 +1 @@ -typeSearchIndex = [{"p":"swervelib.imu","l":"ADIS16448Swerve"},{"p":"swervelib.imu","l":"ADIS16470Swerve"},{"p":"swervelib.imu","l":"ADXRS450Swerve"},{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"swervelib.encoders","l":"AnalogAbsoluteEncoderSwerve"},{"p":"swervelib.imu","l":"AnalogGyroSwerve"},{"p":"swervelib.parser.json.modules","l":"BoolMotorJson"},{"p":"swervelib.encoders","l":"CANCoderSwerve"},{"p":"swervelib.parser.json","l":"ControllerPropertiesJson"},{"p":"swervelib.parser.json","l":"DeviceJson"},{"p":"swervelib.parser.json.modules","l":"LocationJson"},{"p":"swervelib.math","l":"Matter"},{"p":"swervelib.parser.json","l":"ModuleJson"},{"p":"swervelib.parser.json","l":"MotorConfigDouble"},{"p":"swervelib.parser.json","l":"MotorConfigInt"},{"p":"swervelib.imu","l":"NavXSwerve"},{"p":"swervelib.parser.json","l":"PhysicalPropertiesJson"},{"p":"swervelib.simulation.ctre","l":"PhysicsSim"},{"p":"swervelib.parser","l":"PIDFConfig"},{"p":"swervelib.parser.json","l":"PIDFPropertiesJson"},{"p":"swervelib.parser.deserializer","l":"PIDFRange"},{"p":"swervelib.imu","l":"Pigeon2Swerve"},{"p":"swervelib.imu","l":"PigeonSwerve"},{"p":"swervelib.simulation.ctre","l":"PhysicsSim.SimProfile"},{"p":"swervelib.motors","l":"SparkMaxSwerve.SparkMAX_slotIdx"},{"p":"swervelib.motors","l":"SparkMaxBrushedMotorSwerve"},{"p":"swervelib.encoders","l":"SparkMaxEncoderSwerve"},{"p":"swervelib.motors","l":"SparkMaxSwerve"},{"p":"swervelib.encoders","l":"SwerveAbsoluteEncoder"},{"p":"swervelib","l":"SwerveController"},{"p":"swervelib.parser","l":"SwerveControllerConfiguration"},{"p":"swervelib","l":"SwerveDrive"},{"p":"swervelib.parser","l":"SwerveDriveConfiguration"},{"p":"swervelib.parser.json","l":"SwerveDriveJson"},{"p":"swervelib.telemetry","l":"SwerveDriveTelemetry"},{"p":"swervelib.imu","l":"SwerveIMU"},{"p":"swervelib.simulation","l":"SwerveIMUSimulation"},{"p":"swervelib.math","l":"SwerveKinematics2"},{"p":"swervelib.math","l":"SwerveMath"},{"p":"swervelib","l":"SwerveModule"},{"p":"swervelib.parser","l":"SwerveModuleConfiguration"},{"p":"swervelib.parser","l":"SwerveModulePhysicalCharacteristics"},{"p":"swervelib.simulation","l":"SwerveModuleSimulation"},{"p":"swervelib.math","l":"SwerveModuleState2"},{"p":"swervelib.motors","l":"SwerveMotor"},{"p":"swervelib.parser","l":"SwerveParser"},{"p":"swervelib.simulation.ctre","l":"TalonFXSimProfile"},{"p":"swervelib.motors","l":"TalonFXSwerve"},{"p":"swervelib.simulation.ctre","l":"TalonSRXSimProfile"},{"p":"swervelib.motors","l":"TalonSRXSwerve"},{"p":"swervelib.telemetry","l":"SwerveDriveTelemetry.TelemetryVerbosity"},{"p":"swervelib.simulation.ctre","l":"VictorSPXSimProfile"}];updateSearchResults(); \ No newline at end of file +typeSearchIndex = [{"p":"swervelib.imu","l":"ADIS16448Swerve"},{"p":"swervelib.imu","l":"ADIS16470Swerve"},{"p":"swervelib.imu","l":"ADXRS450Swerve"},{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"swervelib.encoders","l":"AnalogAbsoluteEncoderSwerve"},{"p":"swervelib.imu","l":"AnalogGyroSwerve"},{"p":"swervelib.parser.json.modules","l":"BoolMotorJson"},{"p":"swervelib.encoders","l":"CANCoderSwerve"},{"p":"swervelib.parser.json","l":"ControllerPropertiesJson"},{"p":"swervelib.parser.json","l":"DeviceJson"},{"p":"swervelib.math","l":"SwervePoseEstimator2.InterpolationRecord"},{"p":"swervelib.parser.json.modules","l":"LocationJson"},{"p":"swervelib.math","l":"Matter"},{"p":"swervelib.parser.json","l":"ModuleJson"},{"p":"swervelib.parser.json","l":"MotorConfigDouble"},{"p":"swervelib.parser.json","l":"MotorConfigInt"},{"p":"swervelib.imu","l":"NavXSwerve"},{"p":"swervelib.parser.json","l":"PhysicalPropertiesJson"},{"p":"swervelib.simulation.ctre","l":"PhysicsSim"},{"p":"swervelib.parser","l":"PIDFConfig"},{"p":"swervelib.parser.json","l":"PIDFPropertiesJson"},{"p":"swervelib.parser.deserializer","l":"PIDFRange"},{"p":"swervelib.imu","l":"Pigeon2Swerve"},{"p":"swervelib.imu","l":"PigeonSwerve"},{"p":"swervelib.simulation.ctre","l":"PhysicsSim.SimProfile"},{"p":"swervelib.motors","l":"SparkMaxSwerve.SparkMAX_slotIdx"},{"p":"swervelib.motors","l":"SparkMaxBrushedMotorSwerve"},{"p":"swervelib.encoders","l":"SparkMaxEncoderSwerve"},{"p":"swervelib.motors","l":"SparkMaxSwerve"},{"p":"swervelib.encoders","l":"SwerveAbsoluteEncoder"},{"p":"swervelib","l":"SwerveController"},{"p":"swervelib.parser","l":"SwerveControllerConfiguration"},{"p":"swervelib","l":"SwerveDrive"},{"p":"swervelib.parser","l":"SwerveDriveConfiguration"},{"p":"swervelib.parser.json","l":"SwerveDriveJson"},{"p":"swervelib.math","l":"SwerveDriveOdometry2"},{"p":"swervelib.telemetry","l":"SwerveDriveTelemetry"},{"p":"swervelib.imu","l":"SwerveIMU"},{"p":"swervelib.simulation","l":"SwerveIMUSimulation"},{"p":"swervelib.math","l":"SwerveKinematics2"},{"p":"swervelib.math","l":"SwerveMath"},{"p":"swervelib","l":"SwerveModule"},{"p":"swervelib.parser","l":"SwerveModuleConfiguration"},{"p":"swervelib.parser","l":"SwerveModulePhysicalCharacteristics"},{"p":"swervelib.simulation","l":"SwerveModuleSimulation"},{"p":"swervelib.math","l":"SwerveModuleState2"},{"p":"swervelib.motors","l":"SwerveMotor"},{"p":"swervelib.parser","l":"SwerveParser"},{"p":"swervelib.math","l":"SwervePoseEstimator2"},{"p":"swervelib.simulation.ctre","l":"TalonFXSimProfile"},{"p":"swervelib.motors","l":"TalonFXSwerve"},{"p":"swervelib.simulation.ctre","l":"TalonSRXSimProfile"},{"p":"swervelib.motors","l":"TalonSRXSwerve"},{"p":"swervelib.telemetry","l":"SwerveDriveTelemetry.TelemetryVerbosity"},{"p":"swervelib.simulation.ctre","l":"VictorSPXSimProfile"}];updateSearchResults(); \ No newline at end of file diff --git a/swervelib/SwerveDrive.java b/swervelib/SwerveDrive.java index a5896a5..0857150 100644 --- a/swervelib/SwerveDrive.java +++ b/swervelib/SwerveDrive.java @@ -28,6 +28,7 @@ import swervelib.imu.SwerveIMU; import swervelib.math.SwerveKinematics2; import swervelib.math.SwerveMath; import swervelib.math.SwerveModuleState2; +import swervelib.math.SwervePoseEstimator2; import swervelib.parser.SwerveControllerConfiguration; import swervelib.parser.SwerveDriveConfiguration; import swervelib.simulation.SwerveIMUSimulation; @@ -51,7 +52,7 @@ public class SwerveDrive /** * Swerve odometry. */ - public final SwerveDrivePoseEstimator swerveDrivePoseEstimator; + public final SwervePoseEstimator2 swerveDrivePoseEstimator; /** * Swerve modules. */ @@ -129,7 +130,7 @@ public class SwerveDrive // odometry = new SwerveDriveOdometry(kinematics, getYaw(), getModulePositions()); swerveDrivePoseEstimator = - new SwerveDrivePoseEstimator( + new SwervePoseEstimator2( kinematics, getYaw(), getModulePositions(), @@ -685,7 +686,7 @@ public class SwerveDrive public void updateOdometry() { // Update odometry - swerveDrivePoseEstimator.update(getYaw(), getModulePositions()); + swerveDrivePoseEstimator.update(getYaw(), getPitch(), getRoll(), getModulePositions()); // Update angle accumulator if the robot is simulated if (SwerveDriveTelemetry.verbosity.ordinal() >= TelemetryVerbosity.HIGH.ordinal()) diff --git a/swervelib/math/SwerveDriveOdometry2.java b/swervelib/math/SwerveDriveOdometry2.java new file mode 100644 index 0000000..8cc71cd --- /dev/null +++ b/swervelib/math/SwerveDriveOdometry2.java @@ -0,0 +1,246 @@ +package swervelib.math; + +import edu.wpi.first.math.MathSharedStore; +import edu.wpi.first.math.MathUsageId; +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.kinematics.ChassisSpeeds; +import edu.wpi.first.math.kinematics.SwerveDriveKinematics; +import edu.wpi.first.math.kinematics.SwerveDriveOdometry; +import edu.wpi.first.math.kinematics.SwerveModulePosition; +import edu.wpi.first.math.kinematics.SwerveModuleState; +import org.ejml.simple.SimpleMatrix; + +/** + * Clone of {@link SwerveDriveOdometry} except uses gyro pitch and roll to achieve a more accurate estimation. + * Originally made by Team 1466. + */ +public class SwerveDriveOdometry2 extends SwerveDriveOdometry +{ + + /** + * Swerve drive kinematics. + */ + private final SwerveDriveKinematics m_kinematics; + /** + * Number of swerve modules. + */ + private final int m_numModules; + /** + * Previous swerve module positions. + */ + private final SwerveModulePosition[] m_previousModulePositions; + /** + * Zero module states. + */ + private final SwerveModuleState[] m_zeroModuleStates; + /** + * Estimated pose. + */ + private Pose2d m_poseMeters; + /** + * Gyro offset. + */ + private Rotation2d m_gyroOffset; + /** + * Previous gyroscope angle. + */ + private Rotation2d m_previousAngle; + + /** + * Constructs a SwerveDriveOdometry object. + * + * @param kinematics The swerve drive kinematics for your drivetrain. + * @param gyroAngle The angle reported by the gyroscope. + * @param modulePositions The wheel positions reported by each module. + * @param initialPose The starting position of the robot on the field. + */ + public SwerveDriveOdometry2( + SwerveDriveKinematics kinematics, + Rotation2d gyroAngle, + SwerveModulePosition[] modulePositions, + Pose2d initialPose) + { + super(kinematics, gyroAngle, modulePositions, initialPose); + m_kinematics = kinematics; + m_poseMeters = initialPose; + m_gyroOffset = m_poseMeters.getRotation().minus(gyroAngle); + m_previousAngle = initialPose.getRotation(); + m_numModules = modulePositions.length; + + m_previousModulePositions = new SwerveModulePosition[m_numModules]; + for (int index = 0; index < m_numModules; index++) + { + m_previousModulePositions[index] = + new SwerveModulePosition( + modulePositions[index].distanceMeters, modulePositions[index].angle); + } + m_zeroModuleStates = m_kinematics.toSwerveModuleStates(new ChassisSpeeds(1, 0, 0)); + + MathSharedStore.reportUsage(MathUsageId.kOdometry_SwerveDrive, 1); + } + + /** + * Constructs a SwerveDriveOdometry object with the default pose at the origin. + * + * @param kinematics The swerve drive kinematics for your drivetrain. + * @param gyroAngle The angle reported by the gyroscope. + * @param modulePositions The wheel positions reported by each module. + */ + public SwerveDriveOdometry2( + SwerveDriveKinematics kinematics, + Rotation2d gyroAngle, + SwerveModulePosition[] modulePositions) + { + this(kinematics, gyroAngle, modulePositions, new Pose2d()); + } + + /** + * Resets the robot's position on the field. + * + *

    The gyroscope angle does not need to be reset here on the user's robot code. The library + * automatically takes care of offsetting the gyro angle. + * + *

    Similarly, module positions do not need to be reset in user code. + * + * @param gyroAngle The angle reported by the gyroscope. + * @param modulePositions The wheel positions reported by each module., + * @param pose The position on the field that your robot is at. + */ + public void resetPosition( + Rotation2d gyroAngle, SwerveModulePosition[] modulePositions, Pose2d pose) + { + super.resetPosition(gyroAngle, modulePositions, pose); + if (modulePositions.length != m_numModules) + { + throw new IllegalArgumentException( + "Number of modules is not consistent with number of wheel locations provided in " + + "constructor"); + } + + m_poseMeters = pose; + m_previousAngle = pose.getRotation(); + m_gyroOffset = m_poseMeters.getRotation().minus(gyroAngle); + for (int index = 0; index < m_numModules; index++) + { + m_previousModulePositions[index] = + new SwerveModulePosition( + modulePositions[index].distanceMeters, modulePositions[index].angle); + } + } + + /** + * Returns the position of the robot on the field. + * + * @return The pose of the robot (x and y are in meters). + */ + public Pose2d getPoseMeters() + { + return m_poseMeters; + } + + /** + * Updates the robot's position on the field using forward kinematics and integration of the pose over time. This + * method automatically calculates the current time to calculate period (difference between two timestamps). The + * period is used to calculate the change in distance from a velocity. This also takes in an angle parameter which is + * used instead of the angular rate that is calculated from forward kinematics. This also takes in pitch and roll to + * allow for more accurate pose estimation on angled surfaces using a rotation matrix. + * + * @param gyroYaw The yaw reported by the gyro. + * @param pitch The pitch reported by the gyro. + * @param roll The roll reported by the gyro. + * @param modulePositions The current position of all swerve modules. Please provide the positions in the same order + * in which you instantiated your SwerveDriveKinematics. + * @return The new pose of the robot. + */ + public Pose2d update( + Rotation2d gyroYaw, + Rotation2d pitch, + Rotation2d roll, + SwerveModulePosition[] modulePositions) + { + super.update(gyroYaw, modulePositions); + if (modulePositions.length != m_numModules) + { + throw new IllegalArgumentException( + "Number of modules is not consistent with number of wheel locations provided in " + + "constructor"); + } + + var moduleDeltas = new SwerveModulePosition[m_numModules]; + var yaw = gyroYaw.plus(m_gyroOffset); + + var rotationMatrix = new SimpleMatrix(3, 3); + var gyroZero = new Rotation2d(); // doing dist calcs robot relative + rotationMatrix.setRow( + 0, + 0, + gyroZero.getCos() * pitch.getCos(), + gyroZero.getCos() * pitch.getSin() * roll.getSin() - gyroZero.getSin() * roll.getCos(), + gyroZero.getCos() * pitch.getSin() * roll.getCos() + gyroZero.getSin() * roll.getSin()); + + rotationMatrix.setRow( + 1, + 0, + gyroZero.getSin() * pitch.getCos(), + gyroZero.getSin() * pitch.getSin() * roll.getSin() + gyroZero.getCos() * roll.getCos(), + gyroZero.getSin() * pitch.getSin() * roll.getCos() - gyroZero.getCos() * roll.getSin()); + + rotationMatrix.setRow( + 2, 0, -pitch.getSin(), pitch.getCos() * roll.getSin(), pitch.getCos() * roll.getCos()); + + for (int index = 0; index < m_numModules; index++) + { + var current = modulePositions[index]; + var previous = m_previousModulePositions[index]; + + var deltaDistanceInitial = current.distanceMeters - previous.distanceMeters; + var changedAngle = + current.angle.minus( + m_zeroModuleStates[index] + .angle); // does this return (-pi, pi)? shoudln't matter since Twist2d does sin + // cos + + var deltaMatrix = new SimpleMatrix(3, 1); + deltaMatrix.setColumn( + 0, + 0, + changedAngle.getCos() * deltaDistanceInitial, + changedAngle.getSin() * deltaDistanceInitial, + 0); + + var rotatedDeltaMatrix = rotationMatrix.mult(deltaMatrix); + var finalDeltaDistance = + deltaDistanceInitial >= 0 + ? Math.sqrt( + Math.pow(rotatedDeltaMatrix.get(0, 0), 2) + + Math.pow(rotatedDeltaMatrix.get(1, 0), 2)) + : -Math.sqrt( + Math.pow(rotatedDeltaMatrix.get(0, 0), 2) + + Math.pow(rotatedDeltaMatrix.get(1, 0), 2)); + + var deltaDistance = + (roll.getDegrees() > 10 || pitch.getDegrees() > 10) + ? finalDeltaDistance + : deltaDistanceInitial; + var updatedAngle = + (roll.getDegrees() > 10 || pitch.getDegrees() > 10) + ? Rotation2d.fromRadians( + Math.atan2(rotatedDeltaMatrix.get(0, 0), rotatedDeltaMatrix.get(1, 0))) + : current.angle; + + moduleDeltas[index] = new SwerveModulePosition(deltaDistance, updatedAngle); + previous.distanceMeters = current.distanceMeters; + } + + var twist = m_kinematics.toTwist2d(moduleDeltas); + twist.dtheta = yaw.minus(m_previousAngle).getRadians(); + + var newPose = m_poseMeters.exp(twist); + + m_previousAngle = yaw; + m_poseMeters = new Pose2d(newPose.getTranslation(), yaw); + + return m_poseMeters; + } +} diff --git a/swervelib/math/SwervePoseEstimator2.java b/swervelib/math/SwervePoseEstimator2.java new file mode 100644 index 0000000..332756c --- /dev/null +++ b/swervelib/math/SwervePoseEstimator2.java @@ -0,0 +1,459 @@ +package swervelib.math; + +import edu.wpi.first.math.MathUtil; +import edu.wpi.first.math.Matrix; +import edu.wpi.first.math.Nat; +import edu.wpi.first.math.VecBuilder; +import edu.wpi.first.math.estimator.SwerveDrivePoseEstimator; +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.geometry.Twist2d; +import edu.wpi.first.math.interpolation.Interpolatable; +import edu.wpi.first.math.interpolation.TimeInterpolatableBuffer; +import edu.wpi.first.math.kinematics.SwerveDriveKinematics; +import edu.wpi.first.math.kinematics.SwerveModulePosition; +import edu.wpi.first.math.numbers.N1; +import edu.wpi.first.math.numbers.N3; +import edu.wpi.first.util.WPIUtilJNI; +import java.util.Arrays; +import java.util.Map; +import java.util.Objects; + +/** + * Clone of {@link SwerveDrivePoseEstimator} which takes into account gyroscope pitch and roll to achieve a more + * accurate estimation, originally made by Team 1466. + */ +public class SwervePoseEstimator2 // extends SwerveDrivePoseEstimator +{ + + /** + * Swerve drive kinematics. + */ + private final SwerveDriveKinematics m_kinematics; + /** + * Enhanced swerve drive odometry. + */ + private final SwerveDriveOdometry2 m_odometry; + /** + * Matrix quotient. + */ + private final Matrix m_q = new Matrix<>(Nat.N3(), Nat.N1()); + /** + * Number of swerve modules. + */ + private final int m_numModules; + /** + * Interpolation buffer. + */ + private final TimeInterpolatableBuffer m_poseBuffer = TimeInterpolatableBuffer.createBuffer(1.5); + /** + * Vision standard deviations. + */ + private final Matrix m_visionK = new Matrix<>(Nat.N3(), Nat.N3()); + + /** + * Constructs a SwerveDrivePoseEstimator with default standard deviations for the model and vision measurements. + * + *

    The default standard deviations of the model states are 0.1 meters for x, 0.1 meters for y, + * and 0.1 radians for heading. The default standard deviations of the vision measurements are 0.9 meters for x, 0.9 + * meters for y, and 0.9 radians for heading. + * + * @param kinematics A correctly-configured kinematics object for your drivetrain. + * @param gyroAngle The current gyro angle. + * @param modulePositions The current distance measurements and rotations of the swerve modules. + * @param initialPoseMeters The starting pose estimate. + */ + public SwervePoseEstimator2( + SwerveDriveKinematics kinematics, + Rotation2d gyroAngle, + SwerveModulePosition[] modulePositions, + Pose2d initialPoseMeters) + { + this( + kinematics, + gyroAngle, + modulePositions, + initialPoseMeters, + VecBuilder.fill(0.1, 0.1, 0.1), + VecBuilder.fill(0.9, 0.9, 0.9)); + } + + /** + * Constructs a SwerveDrivePoseEstimator. + * + * @param kinematics A correctly-configured kinematics object for your drivetrain. + * @param gyroAngle The current gyro angle. + * @param modulePositions The current distance and rotation measurements of the swerve modules. + * @param initialPoseMeters The starting pose estimate. + * @param stateStdDevs Standard deviations of the pose estimate (x position in meters, y position in + * meters, and heading in radians). Increase these numbers to trust your state + * estimate less. + * @param visionMeasurementStdDevs Standard deviations of the vision pose measurement (x position in meters, y + * position in meters, and heading in radians). Increase these numbers to trust the + * vision pose measurement less. + */ + public SwervePoseEstimator2( + SwerveDriveKinematics kinematics, + Rotation2d gyroAngle, + SwerveModulePosition[] modulePositions, + Pose2d initialPoseMeters, + Matrix stateStdDevs, + Matrix visionMeasurementStdDevs) + { +// super(kinematics, gyroAngle, modulePositions, initialPoseMeters); + m_kinematics = kinematics; + m_odometry = + new SwerveDriveOdometry2(kinematics, gyroAngle, modulePositions, initialPoseMeters); + + for (int i = 0; i < 3; ++i) + { + m_q.set(i, 0, stateStdDevs.get(i, 0) * stateStdDevs.get(i, 0)); + } + + m_numModules = modulePositions.length; + + setVisionMeasurementStdDevs(visionMeasurementStdDevs); + } + + /** + * Sets the pose estimator's trust of global measurements. This might be used to change trust in vision measurements + * after the autonomous period, or to change trust as distance to a vision target increases. + * + * @param visionMeasurementStdDevs Standard deviations of the vision measurements. Increase these numbers to trust + * global measurements from vision less. This matrix is in the form [x, y, theta]ᵀ, + * with units in meters and radians. + */ + public void setVisionMeasurementStdDevs(Matrix visionMeasurementStdDevs) + { +// super.setVisionMeasurementStdDevs(visionMeasurementStdDevs); + var r = new double[3]; + for (int i = 0; i < 3; ++i) + { + r[i] = visionMeasurementStdDevs.get(i, 0) * visionMeasurementStdDevs.get(i, 0); + } + + // Solve for closed form Kalman gain for continuous Kalman filter with A = 0 + // and C = I. See wpimath/algorithms.md. + for (int row = 0; row < 3; ++row) + { + if (m_q.get(row, 0) == 0.0) + { + m_visionK.set(row, row, 0.0); + } else + { + m_visionK.set( + row, row, m_q.get(row, 0) / (m_q.get(row, 0) + Math.sqrt(m_q.get(row, 0) * r[row]))); + } + } + } + + /** + * Resets the robot's position on the field. + * + *

    The gyroscope angle does not need to be reset in the user's robot code. The library + * automatically takes care of offsetting the gyro angle. + * + * @param gyroAngle The angle reported by the gyroscope. + * @param modulePositions The current distance measurements and rotations of the swerve modules. + * @param poseMeters The position on the field that your robot is at. + */ + public void resetPosition( + Rotation2d gyroAngle, SwerveModulePosition[] modulePositions, Pose2d poseMeters) + { +// super.resetPosition(gyroAngle, modulePositions, poseMeters); + // Reset state estimate and error covariance + m_odometry.resetPosition(gyroAngle, modulePositions, poseMeters); + m_poseBuffer.clear(); + } + + /** + * Gets the estimated robot pose. + * + * @return The estimated robot pose in meters. + */ + public Pose2d getEstimatedPosition() + { + return m_odometry.getPoseMeters(); + } + + /** + * Adds a vision measurement to the Kalman Filter. This will correct the odometry pose estimate while still accounting + * for measurement noise. + * + *

    This method can be called as infrequently as you want, as long as you are calling {@link + * SwerveDrivePoseEstimator#update} every loop. + * + *

    To promote stability of the pose estimate and make it robust to bad vision data, we + * recommend only adding vision measurements that are already within one meter or so of the current pose estimate. + * + * @param visionRobotPoseMeters The pose of the robot as measured by the vision camera. + * @param timestampSeconds The timestamp of the vision measurement in seconds. Note that if you don't use your + * own time source by calling + * {@link SwerveDrivePoseEstimator#updateWithTime(double, Rotation2d, + * SwerveModulePosition[])} then you must use a timestamp with an epoch since FPGA + * startup (i.e., the epoch of this timestamp is the same epoch as + * {@link edu.wpi.first.wpilibj.Timer#getFPGATimestamp()}.) This means that you should + * use {@link edu.wpi.first.wpilibj.Timer#getFPGATimestamp()} as your time source or sync + * the epochs. + */ + public void addVisionMeasurement(Pose2d visionRobotPoseMeters, double timestampSeconds) + { +// super.addVisionMeasurement(visionRobotPoseMeters, timestampSeconds); + // Step 1: Get the pose odometry measured at the moment the vision measurement was made. + var sample = m_poseBuffer.getSample(timestampSeconds); + + if (sample.isEmpty()) + { + return; + } + + // Step 2: Measure the twist between the odometry pose and the vision pose. + var twist = sample.get().poseMeters.log(visionRobotPoseMeters); + + // Step 3: We should not trust the twist entirely, so instead we scale this twist by a Kalman + // gain matrix representing how much we trust vision measurements compared to our current pose. + var k_times_twist = m_visionK.times(VecBuilder.fill(twist.dx, twist.dy, twist.dtheta)); + + // Step 4: Convert back to Twist2d. + var scaledTwist = + new Twist2d(k_times_twist.get(0, 0), k_times_twist.get(1, 0), k_times_twist.get(2, 0)); + + // Step 5: Reset Odometry to state at sample with vision adjustment. + m_odometry.resetPosition( + sample.get().gyroAngle, + sample.get().modulePositions, + sample.get().poseMeters.exp(scaledTwist)); + + // Step 6: Replay odometry inputs between sample time and latest recorded sample to update the + // pose buffer and correct odometry. + for (Map.Entry entry : + m_poseBuffer.getInternalBuffer().tailMap(timestampSeconds).entrySet()) + { + updateWithTime( + entry.getKey(), + entry.getValue().gyroAngle, + entry.getValue().gyroPitch, + entry.getValue().gyroRoll, + entry.getValue().modulePositions); + } + } + + /** + * Adds a vision measurement to the Kalman Filter. This will correct the odometry pose estimate while still accounting + * for measurement noise. + * + *

    This method can be called as infrequently as you want, as long as you are calling {@link + * SwerveDrivePoseEstimator#update} every loop. + * + *

    To promote stability of the pose estimate and make it robust to bad vision data, we + * recommend only adding vision measurements that are already within one meter or so of the current pose estimate. + * + *

    Note that the vision measurement standard deviations passed into this method will continue + * to apply to future measurements until a subsequent call to + * {@link SwerveDrivePoseEstimator#setVisionMeasurementStdDevs(Matrix)} or this method. + * + * @param visionRobotPoseMeters The pose of the robot as measured by the vision camera. + * @param timestampSeconds The timestamp of the vision measurement in seconds. Note that if you don't use your + * own time source by calling + * {@link SwerveDrivePoseEstimator#updateWithTime(double, Rotation2d, + * SwerveModulePosition[])}, then you must use a timestamp with an epoch since FPGA + * startup (i.e., the epoch of this timestamp is the same epoch as + * {@link edu.wpi.first.wpilibj.Timer#getFPGATimestamp()}). This means that you should + * use {@link edu.wpi.first.wpilibj.Timer#getFPGATimestamp()} as your time source in + * this case. + * @param visionMeasurementStdDevs Standard deviations of the vision pose measurement (x position in meters, y + * position in meters, and heading in radians). Increase these numbers to trust the + * vision pose measurement less. + */ + public void addVisionMeasurement( + Pose2d visionRobotPoseMeters, + double timestampSeconds, + Matrix visionMeasurementStdDevs) + { + setVisionMeasurementStdDevs(visionMeasurementStdDevs); + addVisionMeasurement(visionRobotPoseMeters, timestampSeconds); + } + + /** + * Updates the pose estimator with wheel encoder and gyro information. This should be called every loop. + * + * @param gyroAngle The current gyro angle. + * @param gyroPitch The current gyro pitch. + * @param gyroRoll The current gyro roll. + * @param modulePositions The current distance measurements and rotations of the swerve modules. + * @return The estimated pose of the robot in meters. + */ + public Pose2d update( + Rotation2d gyroAngle, + Rotation2d gyroPitch, + Rotation2d gyroRoll, + SwerveModulePosition[] modulePositions) + { + return updateWithTime( + WPIUtilJNI.now() * 1.0e-6, gyroAngle, gyroPitch, gyroRoll, modulePositions); + } + + /** + * Updates the pose estimator with wheel encoder and gyro information. This should be called every loop. + * + * @param currentTimeSeconds Time at which this method was called, in seconds. + * @param gyroAngle The current gyro angle. + * @param gyroPitch The current gyro pitch. + * @param gyroRoll The current gyro roll. + * @param modulePositions The current distance measurements and rotations of the swerve modules. + * @return The estimated pose of the robot in meters. + */ + public Pose2d updateWithTime( + double currentTimeSeconds, + Rotation2d gyroAngle, + Rotation2d gyroPitch, + Rotation2d gyroRoll, + SwerveModulePosition[] modulePositions) + { +// super.updateWithTime(currentTimeSeconds, gyroAngle, modulePositions); + if (modulePositions.length != m_numModules) + { + throw new IllegalArgumentException( + "Number of modules is not consistent with number of wheel locations provided in " + + "constructor"); + } + + var internalModulePositions = new SwerveModulePosition[m_numModules]; + + for (int i = 0; i < m_numModules; i++) + { + internalModulePositions[i] = + new SwerveModulePosition(modulePositions[i].distanceMeters, modulePositions[i].angle); + } + + m_odometry.update(gyroAngle, gyroPitch, gyroRoll, internalModulePositions); + + m_poseBuffer.addSample( + currentTimeSeconds, + new InterpolationRecord( + getEstimatedPosition(), gyroAngle, gyroPitch, gyroRoll, internalModulePositions)); + + return getEstimatedPosition(); + } + + /** + * Represents an odometry record. The record contains the inputs provided as well as the pose that was observed based + * on these inputs, as well as the previous record and its inputs. + */ + private class InterpolationRecord implements Interpolatable + { + + // The pose observed given the current sensor inputs and the previous pose. + private final Pose2d poseMeters; + + // The current gyro angle. + private final Rotation2d gyroAngle; + + // The current gyro pitch. + private final Rotation2d gyroPitch; + + // The current gyro roll. + private final Rotation2d gyroRoll; + + // The distances and rotations measured at each module. + private final SwerveModulePosition[] modulePositions; + + /** + * Constructs an Interpolation Record with the specified parameters. + * + * @param poseMeters The pose observed given the current sensor inputs and the previous pose. + * @param gyro The current gyro angle. + * @param gyroPitch The current gyro pitch. + * @param gyroRoll The current gyro roll. + * @param modulePositions The distances and rotations measured at each wheel. + */ + private InterpolationRecord( + Pose2d poseMeters, + Rotation2d gyro, + Rotation2d gyroPitch, + Rotation2d gyroRoll, + SwerveModulePosition[] modulePositions) + { + this.poseMeters = poseMeters; + this.gyroAngle = gyro; + this.gyroPitch = gyroPitch; + this.gyroRoll = gyroRoll; + this.modulePositions = modulePositions; + } + + /** + * Return the interpolated record. This object is assumed to be the starting position, or lower bound. + * + * @param endValue The upper bound, or end. + * @param t How far between the lower and upper bound we are. This should be bounded in [0, 1]. + * @return The interpolated value. + */ + @Override + public InterpolationRecord interpolate(InterpolationRecord endValue, double t) + { + if (t < 0) + { + return this; + } else if (t >= 1) + { + return endValue; + } else + { + // Find the new wheel distances. + var modulePositions = new SwerveModulePosition[m_numModules]; + + // Find the distance travelled between this measurement and the interpolated measurement. + var moduleDeltas = new SwerveModulePosition[m_numModules]; + + for (int i = 0; i < m_numModules; i++) + { + double ds = + MathUtil.interpolate( + this.modulePositions[i].distanceMeters, + endValue.modulePositions[i].distanceMeters, + t); + Rotation2d theta = + this.modulePositions[i].angle.interpolate(endValue.modulePositions[i].angle, t); + modulePositions[i] = new SwerveModulePosition(ds, theta); + moduleDeltas[i] = + new SwerveModulePosition(ds - this.modulePositions[i].distanceMeters, theta); + } + + // Find the new gyro angle. + var gyro_lerp = gyroAngle.interpolate(endValue.gyroAngle, t); + var gyroPitch_lerp = gyroPitch.interpolate(endValue.gyroPitch, t); + var gyroRoll_lerp = gyroRoll.interpolate(endValue.gyroRoll, t); + + // Create a twist to represent this change based on the interpolated sensor inputs. + Twist2d twist = m_kinematics.toTwist2d(moduleDeltas); + twist.dtheta = gyro_lerp.minus(gyroAngle).getRadians(); + + return new InterpolationRecord( + poseMeters.exp(twist), gyro_lerp, gyroPitch_lerp, gyroRoll_lerp, modulePositions); + } + } + + @Override + public boolean equals(Object obj) + { + if (this == obj) + { + return true; + } + if (!(obj instanceof InterpolationRecord)) + { + return false; + } + InterpolationRecord record = (InterpolationRecord) obj; + return Objects.equals(gyroAngle, record.gyroAngle) + && Arrays.equals(modulePositions, record.modulePositions) + && Objects.equals(poseMeters, record.poseMeters); + } + + @Override + public int hashCode() + { + return Objects.hash(gyroAngle, Arrays.hashCode(modulePositions), poseMeters); + } + } +}