DutyCycle encoders such as "US Digital MA3 with PWM Output, the CTRE Mag Encoder, the Rev Hex Encoder, and the AM Mag
- Encoder." attached via a PWM lane.
The Constants class provides a convenient place for teams to hold robot-wide numerical or boolean constants. This
- class should not be used for any other purpose. All constants should be declared globally (i.e. public static). Do
- not put anything functional in this class.
-
-
It is advised to statically import this class (or one of its inner classes) wherever the
- constants are needed, to reduce verbosity.
Do NOT add any static variables to this class, or any initialization at all. Unless you know what you are doing, do
- not modify this file except to change the parameter class to the startRobot call.
public class Robot
-extends edu.wpi.first.wpilibj.TimedRobot
-
The VM is configured to automatically run this class, and to call the functions corresponding to each mode, as
- described in the TimedRobot documentation. If you change the name of this class or the package after creating this
- project, you must also update the build.gradle file in the project.
-
-
-
-
-
-
-
Field Summary
-
-
Fields inherited from class edu.wpi.first.wpilibj.TimedRobot
This function is run when the robot is first started up and should be used for any initialization code.
-
-
Overrides:
-
robotInit in class edu.wpi.first.wpilibj.IterativeRobotBase
-
-
-
-
-
-
robotPeriodic
-
publicvoidrobotPeriodic()
-
This function is called every 20 ms, no matter the mode. Use this for items like diagnostics that you want ran
- during disabled, autonomous, teleoperated and test.
-
-
This runs after the mode specific periodic functions, but before LiveWindow and
- SmartDashboard integrated updating.
-
-
Overrides:
-
robotPeriodic in class edu.wpi.first.wpilibj.IterativeRobotBase
-
-
-
-
-
-
disabledInit
-
publicvoiddisabledInit()
-
This function is called once each time the robot enters Disabled mode.
-
-
Overrides:
-
disabledInit in class edu.wpi.first.wpilibj.IterativeRobotBase
-
-
-
-
-
-
disabledPeriodic
-
publicvoiddisabledPeriodic()
-
-
Overrides:
-
disabledPeriodic in class edu.wpi.first.wpilibj.IterativeRobotBase
-
-
-
-
-
-
autonomousInit
-
publicvoidautonomousInit()
-
This autonomous runs the autonomous command selected by your RobotContainer class.
-
-
Overrides:
-
autonomousInit in class edu.wpi.first.wpilibj.IterativeRobotBase
-
-
-
-
-
-
autonomousPeriodic
-
publicvoidautonomousPeriodic()
-
This function is called periodically during autonomous.
-
-
Overrides:
-
autonomousPeriodic in class edu.wpi.first.wpilibj.IterativeRobotBase
-
-
-
-
-
-
teleopInit
-
publicvoidteleopInit()
-
-
Overrides:
-
teleopInit in class edu.wpi.first.wpilibj.IterativeRobotBase
-
-
-
-
-
-
teleopPeriodic
-
publicvoidteleopPeriodic()
-
This function is called periodically during operator control.
-
-
Overrides:
-
teleopPeriodic in class edu.wpi.first.wpilibj.IterativeRobotBase
-
-
-
-
-
-
testInit
-
publicvoidtestInit()
-
-
Overrides:
-
testInit in class edu.wpi.first.wpilibj.IterativeRobotBase
-
-
-
-
-
-
testPeriodic
-
publicvoidtestPeriodic()
-
This function is called periodically during test mode.
-
-
Overrides:
-
testPeriodic in class edu.wpi.first.wpilibj.IterativeRobotBase
-
-
-
-
-
-
simulationInit
-
publicvoidsimulationInit()
-
This function is called once when the robot is first started up.
-
-
Overrides:
-
simulationInit in class edu.wpi.first.wpilibj.IterativeRobotBase
-
-
-
-
-
-
simulationPeriodic
-
publicvoidsimulationPeriodic()
-
This function is called periodically whilst in simulation.
-
-
Overrides:
-
simulationPeriodic in class edu.wpi.first.wpilibj.IterativeRobotBase
This class is where the bulk of the robot should be declared. Since Command-based is a "declarative" paradigm, very
- little robot logic should actually be handled in the Robot periodic methods (other than the scheduler calls).
- Instead, the structure of the robot (including subsystems, commands, and trigger mappings) should be declared here.
The initial subroutine of a command. Called once when the command is initially scheduled.
-
-
Overrides:
-
initialize in class edu.wpi.first.wpilibj2.command.Command
-
-
-
-
-
-
execute
-
publicvoidexecute()
-
The main body of a command. Called repeatedly while the command is scheduled. (That is, it is called repeatedly
- until isFinished()) returns true.)
-
-
Overrides:
-
execute in class edu.wpi.first.wpilibj2.command.Command
-
-
-
-
-
-
isFinished
-
publicbooleanisFinished()
-
- Returns whether this command has finished. Once a command finishes -- indicated by this method returning true --
- the scheduler will call its end(boolean) method.
-
- Returning false will result in the command never ending automatically. It may still be cancelled manually or
- interrupted by another command. Hard coding this command to always return true will result in the command executing
- once and finishing immediately. It is recommended to use *
- InstantCommand for such an operation.
-
-
-
Overrides:
-
isFinished in class edu.wpi.first.wpilibj2.command.Command
-
Returns:
-
whether this command has finished.
-
-
-
-
-
-
end
-
publicvoidend(boolean interrupted)
-
The action to take when the command ends. Called when either the command finishes normally -- that is it is called
- when isFinished() returns true -- or when it is interrupted/canceled. This is where you may want to wrap
- up loose ends, like shutting off a motor that was being used in the command.
-
-
Overrides:
-
end in class edu.wpi.first.wpilibj2.command.Command
-
Parameters:
-
interrupted - whether the command was interrupted/canceled
Used to drive a swerve robot in full field-centric mode. vX and vY supply translation inputs, where x is
- torwards/away from alliance wall and y is left/right. headingHorzontal and headingVertical are the Cartesian
- coordinates from which the robot's angle will be derived— they will be converted to a polar angle, which the robot
- will rotate to.
-
-
Parameters:
-
swerve - The swerve drivebase subsystem.
-
vX - DoubleSupplier that supplies the x-translation joystick input. Should be in the range -1
- to 1 with deadband already accounted for. Positive X is away from the alliance wall.
-
vY - DoubleSupplier that supplies the y-translation joystick input. Should be in the range -1
- to 1 with deadband already accounted for. Positive Y is towards the left wall when
- looking through the driver station glass.
-
headingHorizontal - DoubleSupplier that supplies the horizontal component of the robot's heading angle. In the
- robot coordinate system, this is along the same axis as vY. Should range from -1 to 1 with
- no deadband. Positive is towards the left wall when looking through the driver station
- glass.
-
headingVertical - DoubleSupplier that supplies the vertical component of the robot's heading angle. In the
- robot coordinate system, this is along the same axis as vX. Should range from -1 to 1
- with no deadband. Positive is away from the alliance wall.
-
-
-
-
-
-
-
-
-
-
Method Details
-
-
-
-
initialize
-
publicvoidinitialize()
-
-
Overrides:
-
initialize in class edu.wpi.first.wpilibj2.command.Command
-
-
-
-
-
-
execute
-
publicvoidexecute()
-
-
Overrides:
-
execute in class edu.wpi.first.wpilibj2.command.Command
-
-
-
-
-
-
end
-
publicvoidend(boolean interrupted)
-
-
Overrides:
-
end in class edu.wpi.first.wpilibj2.command.Command
-
-
-
-
-
-
isFinished
-
publicbooleanisFinished()
-
-
Overrides:
-
isFinished in class edu.wpi.first.wpilibj2.command.Command
Used to drive a swerve robot in full field-centric mode. vX and vY supply translation inputs, where x is
- torwards/away from alliance wall and y is left/right. Heading Adjust changes the current heading after being
- multipied by a constant. The look booleans are shortcuts to get the robot to face a certian direction.
- Based off of ideas in https://www.chiefdelphi.com/t/experiments-with-a-swerve-steering-knob/446172
-
-
Parameters:
-
swerve - The swerve drivebase subsystem.
-
vX - DoubleSupplier that supplies the x-translation joystick input. Should be in the range -1
- to 1 with deadband already accounted for. Positive X is away from the alliance wall.
-
vY - DoubleSupplier that supplies the y-translation joystick input. Should be in the range -1
- to 1 with deadband already accounted for. Positive Y is towards the left wall when
- looking through the driver station glass.
-
headingAdjust - DoubleSupplier that supplies the component of the robot's heading angle that should be adjusted.
- Should range from -1 to 1 with deadband already accounted for.
-
lookAway - Face the robot towards the opposing alliance's wall in the same direction the driver is facing
-
lookTowards - Face the robot towards the driver
-
lookLeft - Face the robot left
-
lookRight - Face the robot right
-
-
-
-
-
-
-
-
-
-
Method Details
-
-
-
-
initialize
-
publicvoidinitialize()
-
-
Overrides:
-
initialize in class edu.wpi.first.wpilibj2.command.Command
-
-
-
-
-
-
execute
-
publicvoidexecute()
-
-
Overrides:
-
execute in class edu.wpi.first.wpilibj2.command.Command
-
-
-
-
-
-
end
-
publicvoidend(boolean interrupted)
-
-
Overrides:
-
end in class edu.wpi.first.wpilibj2.command.Command
-
-
-
-
-
-
isFinished
-
publicbooleanisFinished()
-
-
Overrides:
-
isFinished in class edu.wpi.first.wpilibj2.command.Command
Used to drive a swerve robot in full field-centric mode. vX and vY supply translation inputs, where x is
- torwards/away from alliance wall and y is left/right. headingHorzontal and headingVertical are the Cartesian
- coordinates from which the robot's angle will be derived— they will be converted to a polar angle, which the robot
- will rotate to.
-
-
Parameters:
-
swerve - The swerve drivebase subsystem.
-
vX - DoubleSupplier that supplies the x-translation joystick input. Should be in the range -1 to 1 with
- deadband already accounted for. Positive X is away from the alliance wall.
-
vY - DoubleSupplier that supplies the y-translation joystick input. Should be in the range -1 to 1 with
- deadband already accounted for. Positive Y is towards the left wall when looking through the driver
- station glass.
-
heading - DoubleSupplier that supplies the robot's heading angle.
-
-
-
-
-
-
-
-
-
-
Method Details
-
-
-
-
initialize
-
publicvoidinitialize()
-
-
Overrides:
-
initialize in class edu.wpi.first.wpilibj2.command.Command
-
-
-
-
-
-
execute
-
publicvoidexecute()
-
-
Overrides:
-
execute in class edu.wpi.first.wpilibj2.command.Command
-
-
-
-
-
-
end
-
publicvoidend(boolean interrupted)
-
-
Overrides:
-
end in class edu.wpi.first.wpilibj2.command.Command
-
-
-
-
-
-
isFinished
-
publicbooleanisFinished()
-
-
Overrides:
-
isFinished in class edu.wpi.first.wpilibj2.command.Command
The VM is configured to automatically run this class, and to call the functions corresponding to each mode, as
- described in the TimedRobot documentation.
The primary method for controlling the drivebase. Takes a Translation2d and a rotation rate, and
- calculates and commands module states accordingly. Can use either open-loop or closed-loop velocity control for
- the wheel velocities. Also has field- and robot-relative modes, which affect how the translation vector is used.
-
-
Parameters:
-
translation - Translation2d that is the commanded linear velocity of the robot, in meters per
- second. In robot-relative mode, positive x is torwards the bow (front) and positive y is
- torwards port (left). In field-relative mode, positive x is away from the alliance wall
- (field North) and positive y is torwards the left wall when looking through the driver station
- glass (field West).
-
rotation - Robot angular rate, in radians per second. CCW positive. Unaffected by field/robot
- relativity.
-
fieldRelative - Drive mode. True for field-relative, false for robot-relative.
Resets odometry to the given pose. Gyro angle and module positions do not need to be reset when calling this
- method. However, if either gyro angle or module position is reset, this must be called in order for odometry to
- keep working.
-
-
Parameters:
-
initialHolonomicPose - The pose to set the odometry to
-
-
-
-
-
-
getPose
-
publicedu.wpi.first.math.geometry.Pose2dgetPose()
-
Gets the current pose (position and rotation) of the robot, as reported by odometry.
-Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces
-
-
Search
-
You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API, using some or all of the name, optionally using "camelCase" abbreviations. For example:
-
-
j.l.obj will match "java.lang.Object"
-
InpStr will match "java.io.InputStream"
-
HM.cK will match "java.util.HashMap.containsKey(Object)"
-The following sections describe the different kinds of pages in this collection.
-
-
Overview
-
The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.
-
-
-
Package
-
Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:
-
-
Interfaces
-
Classes
-
Enum Classes
-
Exceptions
-
Errors
-
Annotation Interfaces
-
-
-
-
Class or Interface
-
Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.
-
-
Class Inheritance Diagram
-
Direct Subclasses
-
All Known Subinterfaces
-
All Known Implementing Classes
-
Class or Interface Declaration
-
Class or Interface Description
-
-
-
-
Nested Class Summary
-
Enum Constant Summary
-
Field Summary
-
Property Summary
-
Constructor Summary
-
Method Summary
-
Required Element Summary
-
Optional Element Summary
-
-
-
-
Enum Constant Details
-
Field Details
-
Property Details
-
Constructor Details
-
Method Details
-
Element Details
-
-
Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.
-
The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
-
-
-
Other Files
-
Packages and modules may contain pages with additional information related to the declarations nearby.
-
-
-
Tree (Class Hierarchy)
-
There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.
-
-
When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
-
When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
The All Packages page contains an alphabetic index of all packages contained in the documentation.
-
-
-
All Classes and Interfaces
-
The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.
-
-
-
Index
-
The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.
-
-
-
-This help file applies to API documentation generated by the standard doclet.
-
SwerveControllerConfiguration object storing data to generate the PIDController for controlling the
- robot heading, and deadband for heading joystick.
Helper function to get the SwerveDrive.swerveController for the SwerveDrive which can be used to
- generate ChassisSpeeds for the robot to orient it correctly given axis or angles, and apply
- SlewRateLimiter to given inputs.
Limits a commanded velocity to prevent exceeding the maximum acceleration given by SwerveMath.calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d, java.util.List<swervelib.math.Matter>, double, swervelib.parser.SwerveDriveConfiguration).
DutyCycle encoders such as "US Digital MA3 with PWM Output, the CTRE Mag Encoder, the Rev Hex Encoder, and the AM Mag
- Encoder." attached via a PWM lane.
The VM is configured to automatically run this class, and to call the functions corresponding to each mode, as
- described in the TimedRobot documentation.
The standard deviation of the vision measurement, for best accuracy calculate the standard deviation at 2 or more
- points and fit a line to it and modify this using SwerveDrive.addVisionMeasurement(Pose2d, double, Matrix)
- with the calculated optimal standard deviation.
Logs output, position and velocuty info form the drive motor to the SysIdRoutineLog Although SysIdRoutine
- expects to be logging Voltage, this function logs in Duty-Cycle (percent output) because it results in correctly
- adjusted values in the analysis for use in this library.
DutyCycle encoders such as "US Digital MA3 with PWM Output, the CTRE Mag Encoder, the Rev Hex Encoder, and the AM Mag
- Encoder." attached via a PWM lane.
SwerveControllerConfiguration object storing data to generate the PIDController for controlling the
- robot heading, and deadband for heading joystick.
Helper function to get the SwerveDrive.swerveController for the SwerveDrive which can be used to
- generate ChassisSpeeds for the robot to orient it correctly given axis or angles, and apply
- SlewRateLimiter to given inputs.
Telemetry package for sending data to NT4 or SmartDashboard.
-
-
-
-
-
-
-
-
+
diff --git a/docs/jquery-ui.overrides.css b/docs/jquery-ui.overrides.css
deleted file mode 100644
index f89acb6..0000000
--- a/docs/jquery-ui.overrides.css
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-.ui-state-active,
-.ui-widget-content .ui-state-active,
-.ui-widget-header .ui-state-active,
-a.ui-button:active,
-.ui-button:active,
-.ui-button.ui-state-active:hover {
- /* Overrides the color of selection used in jQuery UI */
- background: #F8981D;
-}
diff --git a/docs/legal/ADDITIONAL_LICENSE_INFO b/docs/legal/ADDITIONAL_LICENSE_INFO
deleted file mode 100644
index b62cc3e..0000000
--- a/docs/legal/ADDITIONAL_LICENSE_INFO
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\ADDITIONAL_LICENSE_INFO
diff --git a/docs/legal/ASSEMBLY_EXCEPTION b/docs/legal/ASSEMBLY_EXCEPTION
deleted file mode 100644
index 0d4cfb4..0000000
--- a/docs/legal/ASSEMBLY_EXCEPTION
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\ASSEMBLY_EXCEPTION
diff --git a/docs/legal/LICENSE b/docs/legal/LICENSE
deleted file mode 100644
index 4ad9fe4..0000000
--- a/docs/legal/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\LICENSE
diff --git a/docs/legal/jquery.md b/docs/legal/jquery.md
deleted file mode 100644
index 8054a34..0000000
--- a/docs/legal/jquery.md
+++ /dev/null
@@ -1,72 +0,0 @@
-## jQuery v3.5.1
-
-### jQuery License
-```
-jQuery v 3.5.1
-Copyright JS Foundation and other contributors, https://js.foundation/
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-******************************************
-
-The jQuery JavaScript Library v3.5.1 also includes Sizzle.js
-
-Sizzle.js includes the following license:
-
-Copyright JS Foundation and other contributors, https://js.foundation/
-
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/jquery/sizzle
-
-The following license applies to all parts of this software except as
-documented below:
-
-====
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-====
-
-All files located in the node_modules and external directories are
-externally maintained libraries used by this software which have their
-own licenses; we recommend you read them, as their terms may differ from
-the terms above.
-
-*********************
-
-```
diff --git a/docs/legal/jqueryUI.md b/docs/legal/jqueryUI.md
deleted file mode 100644
index 8031bdb..0000000
--- a/docs/legal/jqueryUI.md
+++ /dev/null
@@ -1,49 +0,0 @@
-## jQuery UI v1.12.1
-
-### jQuery UI License
-```
-Copyright jQuery Foundation and other contributors, https://jquery.org/
-
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/jquery/jquery-ui
-
-The following license applies to all parts of this software except as
-documented below:
-
-====
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-====
-
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code contained within the demos directory.
-
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
-
-====
-
-All files located in the node_modules and external directories are
-externally maintained libraries used by this software which have their
-own licenses; we recommend you read them, as their terms may differ from
-the terms above.
-
-```
diff --git a/docs/member-search-index.js b/docs/member-search-index.js
deleted file mode 100644
index cc3321d..0000000
--- a/docs/member-search-index.js
+++ /dev/null
@@ -1 +0,0 @@
-memberSearchIndex = [{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"absoluteEncoder"},{"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","c":"SwerveModule","l":"absoluteEncoderIssueName"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"absoluteEncoderOffset"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"absoluteEncoderOffsetWarning"},{"p":"swervelib","c":"SwerveModule","l":"absolutePositionCache"},{"p":"swervelib.telemetry","c":"Alert","l":"active"},{"p":"swervelib.telemetry","c":"Alert","l":"activeStartTime"},{"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.math","c":"IMULinearMovingAverageFilter","l":"addValue(double)"},{"p":"swervelib","c":"SwerveDrive","l":"addVisionMeasurement(Pose2d, double)","u":"addVisionMeasurement(edu.wpi.first.math.geometry.Pose2d,double)"},{"p":"swervelib","c":"SwerveDrive","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","c":"SwerveModule","l":"adjAbsoluteAngleName"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"ADXRS450Swerve()","u":"%3Cinit%3E()"},{"p":"swervelib.telemetry","c":"Alert","l":"Alert(String, Alert.AlertType)","u":"%3Cinit%3E(java.lang.String,swervelib.telemetry.Alert.AlertType)"},{"p":"swervelib.telemetry","c":"Alert","l":"Alert(String, String, Alert.AlertType)","u":"%3Cinit%3E(java.lang.String,java.lang.String,swervelib.telemetry.Alert.AlertType)"},{"p":"swervelib.telemetry","c":"Alert.SendableAlerts","l":"alerts"},{"p":"swervelib.telemetry","c":"Alert.AlertType","l":"AlertType()","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.modules","c":"ConversionFactorsJson","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.modules","c":"AngleConversionFactorsJson","l":"AngleConversionFactorsJson()","u":"%3Cinit%3E()"},{"p":"swervelib.parser.json","c":"ControllerPropertiesJson","l":"angleJoystickRadiusDeadband"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"angleJoyStickRadiusDeadband"},{"p":"swervelib","c":"SwerveController","l":"angleLimiter"},{"p":"swervelib","c":"SwerveDriveTest","l":"angleModules(SwerveDrive, Rotation2d)","u":"angleModules(swervelib.SwerveDrive,edu.wpi.first.math.geometry.Rotation2d)"},{"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":"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","c":"SwerveDrive","l":"angularVelocityCoefficient"},{"p":"swervelib","c":"SwerveDrive","l":"angularVelocityCorrection"},{"p":"swervelib","c":"SwerveDrive","l":"angularVelocitySkewCorrection(ChassisSpeeds)","u":"angularVelocitySkewCorrection(edu.wpi.first.math.kinematics.ChassisSpeeds)"},{"p":"swervelib.math","c":"SwerveMath","l":"antiJitter(SwerveModuleState, SwerveModuleState, double)","u":"antiJitter(edu.wpi.first.math.kinematics.SwerveModuleState,edu.wpi.first.math.kinematics.SwerveModuleState,double)"},{"p":"swervelib","c":"SwerveModule","l":"antiJitterEnabled"},{"p":"swervelib.math","c":"SwerveMath","l":"applyDeadband(double, boolean, double)","u":"applyDeadband(double,boolean,double)"},{"p":"swervelib","c":"SwerveDrive","l":"attainableMaxRotationalVelocityRadiansPerSecond"},{"p":"swervelib","c":"SwerveDrive","l":"attainableMaxTranslationalSpeedMetersPerSecond"},{"p":"swervelib","c":"SwerveDrive","l":"autonomousAngularVelocityCorrection"},{"p":"swervelib","c":"SwerveDrive","l":"autonomousChassisVelocityCorrection"},{"p":"swervelib.parser.json.modules","c":"BoolMotorJson","l":"BoolMotorJson()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"burnFlash()"},{"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.parser","c":"Cache","l":"Cache(Supplier, long)","u":"%3Cinit%3E(java.util.function.Supplier,long)"},{"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":"IMULinearMovingAverageFilter","l":"calculate()"},{"p":"swervelib.parser.json.modules","c":"AngleConversionFactorsJson","l":"calculate()"},{"p":"swervelib.parser.json.modules","c":"DriveConversionFactorsJson","l":"calculate()"},{"p":"swervelib.math","c":"SwerveMath","l":"calculateDegreesPerSteeringRotation(double)"},{"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)","u":"calculateMetersPerRotation(double,double)"},{"p":"swervelib.math","c":"SwerveMath","l":"calculateMetersPerRotation(double, double, double)","u":"calculateMetersPerRotation(double,double,double)"},{"p":"swervelib.imu","c":"CanandgyroSwerve","l":"CanandgyroSwerve(int)","u":"%3Cinit%3E(int)"},{"p":"swervelib.encoders","c":"CanAndMagSwerve","l":"CanAndMagSwerve(int)","u":"%3Cinit%3E(int)"},{"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.telemetry","c":"SwerveDriveTelemetry","l":"canIdWarning"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"cannotSetOffset"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"cannotSetOffset"},{"p":"swervelib","c":"SwerveDriveTest","l":"centerModules(SwerveDrive)","u":"centerModules(swervelib.SwerveDrive)"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"cfg"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"cfg"},{"p":"swervelib","c":"SwerveDrive","l":"chassisVelocityCorrection"},{"p":"swervelib.parser","c":"SwerveParser","l":"checkDirectory(File)","u":"checkDirectory(java.io.File)"},{"p":"swervelib","c":"SwerveDrive","l":"checkIfTunerXCompatible()"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"clearStickyFaults()"},{"p":"swervelib.encoders","c":"CanAndMagSwerve","l":"clearStickyFaults()"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"clearStickyFaults()"},{"p":"swervelib.encoders","c":"PWMDutyCycleEncoderSwerve","l":"clearStickyFaults()"},{"p":"swervelib.encoders","c":"SparkMaxAnalogEncoderSwerve","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":"CanandgyroSwerve","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":"SparkFlexSwerve","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":"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":"CanAndMagSwerve","l":"configure(boolean)"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"configure(boolean)"},{"p":"swervelib.encoders","c":"PWMDutyCycleEncoderSwerve","l":"configure(boolean)"},{"p":"swervelib.encoders","c":"SparkMaxAnalogEncoderSwerve","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":"SparkFlexSwerve","l":"configureCANStatusFrames(int, int, int, int, int)","u":"configureCANStatusFrames(int,int,int,int,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, int, int)","u":"configureCANStatusFrames(int,int,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":"SparkFlexSwerve","l":"configureIntegratedEncoder(double)"},{"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":"SparkFlexSwerve","l":"configurePIDF(PIDFConfig)","u":"configurePIDF(swervelib.parser.PIDFConfig)"},{"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":"SparkFlexSwerve","l":"configurePIDWrapping(double, double)","u":"configurePIDWrapping(double,double)"},{"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.motors","c":"SparkFlexSwerve","l":"configureSparkFlex(Supplier)","u":"configureSparkFlex(java.util.function.Supplier)"},{"p":"swervelib.encoders","c":"SparkMaxAnalogEncoderSwerve","l":"configureSparkMax(Supplier)","u":"configureSparkMax(java.util.function.Supplier)"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"configureSparkMax(Supplier)","u":"configureSparkMax(java.util.function.Supplier)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"configureSparkMax(Supplier)","u":"configureSparkMax(java.util.function.Supplier)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"configureSparkMax(Supplier)","u":"configureSparkMax(java.util.function.Supplier)"},{"p":"swervelib.parser","c":"SwerveParser","l":"controllerPropertiesJson"},{"p":"swervelib.parser.json","c":"ControllerPropertiesJson","l":"ControllerPropertiesJson()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"conversionFactor"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"conversionFactor"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"conversionFactor"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"conversionFactor"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"conversionFactors"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"conversionFactors"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"conversionFactors"},{"p":"swervelib.parser.json.modules","c":"ConversionFactorsJson","l":"ConversionFactorsJson()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"convertToNativeSensorUnits(double, double)","u":"convertToNativeSensorUnits(double,double)"},{"p":"swervelib","c":"SwerveDriveTest","l":"createConfigCustomTimeout(double)"},{"p":"swervelib.parser.json","c":"ControllerPropertiesJson","l":"createControllerConfiguration(SwerveDriveConfiguration, double)","u":"createControllerConfiguration(swervelib.parser.SwerveDriveConfiguration,double)"},{"p":"swervelib.math","c":"SwerveMath","l":"createDriveFeedforward(double, double, double)","u":"createDriveFeedforward(double,double,double)"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"createEncoder(SwerveMotor)","u":"createEncoder(swervelib.motors.SwerveMotor)"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"createIMU()"},{"p":"swervelib.imu","c":"IMUVelocity","l":"createIMUVelocity(SwerveIMU)","u":"createIMUVelocity(swervelib.imu.SwerveIMU)"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"createModuleConfiguration(PIDFConfig, PIDFConfig, SwerveModulePhysicalCharacteristics, String)","u":"createModuleConfiguration(swervelib.parser.PIDFConfig,swervelib.parser.PIDFConfig,swervelib.parser.SwerveModulePhysicalCharacteristics,java.lang.String)"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"createModules(SwerveModuleConfiguration[], SimpleMotorFeedforward)","u":"createModules(swervelib.parser.SwerveModuleConfiguration[],edu.wpi.first.math.controller.SimpleMotorFeedforward)"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"createMotor(boolean)"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"createPhysicalProperties()"},{"p":"swervelib.parser","c":"PIDFConfig","l":"createPIDController()"},{"p":"swervelib.parser","c":"SwerveParser","l":"createSwerveDrive(double)"},{"p":"swervelib.parser","c":"SwerveParser","l":"createSwerveDrive(double, double, double)","u":"createSwerveDrive(double,double,double)"},{"p":"swervelib.parser","c":"SwerveParser","l":"createSwerveDrive(SimpleMotorFeedforward, double)","u":"createSwerveDrive(edu.wpi.first.math.controller.SimpleMotorFeedforward,double)"},{"p":"swervelib.parser","c":"SwerveParser","l":"createSwerveDrive(SimpleMotorFeedforward, double, double, double)","u":"createSwerveDrive(edu.wpi.first.math.controller.SimpleMotorFeedforward,double,double,double)"},{"p":"swervelib.math","c":"SwerveMath","l":"cubeTranslation(Translation2d)","u":"cubeTranslation(edu.wpi.first.math.geometry.Translation2d)"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"currentLimit"},{"p":"swervelib.parser","c":"PIDFConfig","l":"d"},{"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.modules","c":"DriveConversionFactorsJson","l":"diameter"},{"p":"swervelib","c":"SwerveDrive","l":"discretizationdtSeconds"},{"p":"swervelib.encoders","c":"SparkMaxAnalogEncoderSwerve","l":"doesNotSupportIntegratedOffsets"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"drive"},{"p":"swervelib.parser.json.modules","c":"BoolMotorJson","l":"drive"},{"p":"swervelib.parser.json.modules","c":"ConversionFactorsJson","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(ChassisSpeeds)","u":"drive(edu.wpi.first.math.kinematics.ChassisSpeeds)"},{"p":"swervelib","c":"SwerveDrive","l":"drive(ChassisSpeeds, boolean, Translation2d)","u":"drive(edu.wpi.first.math.kinematics.ChassisSpeeds,boolean,edu.wpi.first.math.geometry.Translation2d)"},{"p":"swervelib","c":"SwerveDrive","l":"drive(ChassisSpeeds, Translation2d)","u":"drive(edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.geometry.Translation2d)"},{"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, Translation2d)","u":"drive(edu.wpi.first.math.geometry.Translation2d,double,boolean,boolean,edu.wpi.first.math.geometry.Translation2d)"},{"p":"swervelib.parser.json.modules","c":"DriveConversionFactorsJson","l":"DriveConversionFactorsJson()","u":"%3Cinit%3E()"},{"p":"swervelib","c":"SwerveDrive","l":"driveFieldOriented(ChassisSpeeds)","u":"driveFieldOriented(edu.wpi.first.math.kinematics.ChassisSpeeds)"},{"p":"swervelib","c":"SwerveDrive","l":"driveFieldOriented(ChassisSpeeds, Translation2d)","u":"driveFieldOriented(edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.geometry.Translation2d)"},{"p":"swervelib","c":"SwerveDrive","l":"driveFieldOrientedandRobotOriented(ChassisSpeeds, ChassisSpeeds)","u":"driveFieldOrientedandRobotOriented(edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.kinematics.ChassisSpeeds)"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"driveMotor"},{"p":"swervelib","c":"SwerveModule","l":"driveMotor"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"driveMotorCurrentLimit"},{"p":"swervelib","c":"SwerveModule","l":"driveMotorFeedforward"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"driveMotorInverted"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"driveMotorRampRate"},{"p":"swervelib","c":"SwerveModule","l":"drivePositionCache"},{"p":"swervelib","c":"SwerveModule","l":"driveVelocityCache"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"dt"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"encoder"},{"p":"swervelib.encoders","c":"CanAndMagSwerve","l":"encoder"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"encoder"},{"p":"swervelib.encoders","c":"PWMDutyCycleEncoderSwerve","l":"encoder"},{"p":"swervelib.encoders","c":"SparkMaxAnalogEncoderSwerve","l":"encoder"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"encoder"},{"p":"swervelib.motors","c":"SparkFlexSwerve","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","c":"SwerveModule","l":"encoderOffsetWarning"},{"p":"swervelib.telemetry","c":"Alert.AlertType","l":"ERROR"},{"p":"swervelib.telemetry","c":"Alert.AlertType","l":"ERROR_TRACE"},{"p":"swervelib.parser","c":"PIDFConfig","l":"f"},{"p":"swervelib.parser.json.modules","c":"AngleConversionFactorsJson","l":"factor"},{"p":"swervelib.parser.json.modules","c":"DriveConversionFactorsJson","l":"factor"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"factoryDefault()"},{"p":"swervelib.encoders","c":"CanAndMagSwerve","l":"factoryDefault()"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"factoryDefault()"},{"p":"swervelib.encoders","c":"PWMDutyCycleEncoderSwerve","l":"factoryDefault()"},{"p":"swervelib.encoders","c":"SparkMaxAnalogEncoderSwerve","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":"CanandgyroSwerve","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":"SparkFlexSwerve","l":"factoryDefaultOccurred"},{"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":"SparkFlexSwerve","l":"factoryDefaults()"},{"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.encoders","c":"SparkMaxAnalogEncoderSwerve","l":"failureConfiguring"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"failureConfiguring"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"failureConfiguring"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"failureConfiguringAlert"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"fakePos"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"fakeSpeed"},{"p":"swervelib","c":"SwerveDrive","l":"field"},{"p":"swervelib","c":"SwerveDriveTest","l":"findCouplingRatio(SwerveDrive, double, boolean)","u":"findCouplingRatio(swervelib.SwerveDrive,double,boolean)"},{"p":"swervelib","c":"SwerveDriveTest","l":"findDriveMotorKV(SwerveDrive, double, double, double)","u":"findDriveMotorKV(swervelib.SwerveDrive,double,double,double)"},{"p":"swervelib.imu","c":"IMUVelocity","l":"firstCycle"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"forwardDirection"},{"p":"swervelib.parser.json.modules","c":"LocationJson","l":"front"},{"p":"swervelib.parser.json.modules","c":"AngleConversionFactorsJson","l":"gearRatio"},{"p":"swervelib.parser.json.modules","c":"DriveConversionFactorsJson","l":"gearRatio"},{"p":"swervelib","c":"SwerveDriveTest","l":"generateSysIdCommand(SysIdRoutine, double, double, double)","u":"generateSysIdCommand(edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine,double,double,double)"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"CanAndMagSwerve","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"PWMDutyCycleEncoderSwerve","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"SparkMaxAnalogEncoderSwerve","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"getAbsoluteEncoder()"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"getAbsoluteEncoder()"},{"p":"swervelib","c":"SwerveModule","l":"getAbsoluteEncoder()"},{"p":"swervelib","c":"SwerveModule","l":"getAbsoluteEncoderReadIssue()"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"getAbsolutePosition()"},{"p":"swervelib.encoders","c":"CanAndMagSwerve","l":"getAbsolutePosition()"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"getAbsolutePosition()"},{"p":"swervelib.encoders","c":"PWMDutyCycleEncoderSwerve","l":"getAbsolutePosition()"},{"p":"swervelib.encoders","c":"SparkMaxAnalogEncoderSwerve","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":"CanandgyroSwerve","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":"getAnglePIDF()"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"getAppliedOutput()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"getAppliedOutput()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"getAppliedOutput()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"getAppliedOutput()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"getAppliedOutput()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"getAppliedOutput()"},{"p":"swervelib","c":"SwerveModule","l":"getConfiguration()"},{"p":"swervelib","c":"SwerveModule","l":"getCosineCompensatedVelocity(SwerveModuleState)","u":"getCosineCompensatedVelocity(edu.wpi.first.math.kinematics.SwerveModuleState)"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"getDriveBaseRadiusMeters()"},{"p":"swervelib","c":"SwerveModule","l":"getDriveMotor()"},{"p":"swervelib","c":"SwerveModule","l":"getDrivePIDF()"},{"p":"swervelib","c":"SwerveDrive","l":"getFieldVelocity()"},{"p":"swervelib","c":"SwerveDrive","l":"getGyro()"},{"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":"CanandgyroSwerve","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","c":"SwerveController","l":"getJoystickAngle(double, double)","u":"getJoystickAngle(double,double)"},{"p":"swervelib","c":"SwerveDrive","l":"getMaximumAngularVelocity()"},{"p":"swervelib","c":"SwerveDrive","l":"getMaximumVelocity()"},{"p":"swervelib.parser","c":"SwerveParser","l":"getModuleConfigurationByName(String, SwerveDriveConfiguration)","u":"getModuleConfigurationByName(java.lang.String,swervelib.parser.SwerveDriveConfiguration)"},{"p":"swervelib","c":"SwerveDrive","l":"getModuleMap()"},{"p":"swervelib","c":"SwerveDrive","l":"getModulePositions()"},{"p":"swervelib","c":"SwerveDrive","l":"getModules()"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"getMotor()"},{"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","c":"SwerveDrive","l":"getOdometryHeading()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"getPitch()"},{"p":"swervelib","c":"SwerveDrive","l":"getPitch()"},{"p":"swervelib","c":"SwerveDrive","l":"getPose()"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"getPosition()"},{"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.imu","c":"ADIS16448Swerve","l":"getRate()"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"getRate()"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"getRate()"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"getRate()"},{"p":"swervelib.imu","c":"CanandgyroSwerve","l":"getRate()"},{"p":"swervelib.imu","c":"NavXSwerve","l":"getRate()"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"getRate()"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"getRate()"},{"p":"swervelib.imu","c":"SwerveIMU","l":"getRate()"},{"p":"swervelib","c":"SwerveModule","l":"getRawAbsolutePosition()"},{"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":"CanandgyroSwerve","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":"CanandgyroSwerve","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.telemetry","c":"Alert.SendableAlerts","l":"getStrings(Alert.AlertType)","u":"getStrings(swervelib.telemetry.Alert.AlertType)"},{"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, double)","u":"getTargetSpeeds(double,double,double,double,double)"},{"p":"swervelib","c":"SwerveController","l":"getTargetSpeeds(double, double, double, double, double, double)","u":"getTargetSpeeds(double,double,double,double,double,double)"},{"p":"swervelib","c":"SwerveController","l":"getTranslation2d(ChassisSpeeds)","u":"getTranslation2d(edu.wpi.first.math.kinematics.ChassisSpeeds)"},{"p":"swervelib.parser","c":"Cache","l":"getValue()"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"getVelocity()"},{"p":"swervelib.encoders","c":"CanAndMagSwerve","l":"getVelocity()"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"getVelocity()"},{"p":"swervelib.encoders","c":"PWMDutyCycleEncoderSwerve","l":"getVelocity()"},{"p":"swervelib.encoders","c":"SparkMaxAnalogEncoderSwerve","l":"getVelocity()"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"getVelocity()"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"getVelocity()"},{"p":"swervelib.imu","c":"IMUVelocity","l":"getVelocity()"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"getVelocity()"},{"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.motors","c":"SparkFlexSwerve","l":"getVoltage()"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"getVoltage()"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"getVoltage()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"getVoltage()"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"getVoltage()"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"getVoltage()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"getYaw()"},{"p":"swervelib","c":"SwerveDrive","l":"getYaw()"},{"p":"swervelib.telemetry","c":"Alert","l":"groups"},{"p":"swervelib.imu","c":"IMUVelocity","l":"gyro"},{"p":"swervelib.parser.json","c":"ControllerPropertiesJson","l":"heading"},{"p":"swervelib","c":"SwerveDrive","l":"HEADING_CORRECTION_DEADBAND"},{"p":"swervelib","c":"SwerveController","l":"headingCalculate(double, double)","u":"headingCalculate(double,double)"},{"p":"swervelib","c":"SwerveDrive","l":"headingCorrection"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"headingPIDF"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"HIGH"},{"p":"swervelib.parser","c":"PIDFConfig","l":"i"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"i2cLockupWarning"},{"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":"AnalogGyroSwerve","l":"imu"},{"p":"swervelib.imu","c":"CanandgyroSwerve","l":"imu"},{"p":"swervelib.imu","c":"NavXSwerve","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":"IMULinearMovingAverageFilter","l":"IMULinearMovingAverageFilter(int)","u":"%3Cinit%3E(int)"},{"p":"swervelib","c":"SwerveDrive","l":"imuReadingCache"},{"p":"swervelib","c":"SwerveDrive","l":"imuVelocity"},{"p":"swervelib.imu","c":"IMUVelocity","l":"IMUVelocity(SwerveIMU, double, int)","u":"%3Cinit%3E(swervelib.imu.SwerveIMU,double,int)"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"inaccurateVelocities"},{"p":"swervelib.encoders","c":"PWMDutyCycleEncoderSwerve","l":"inaccurateVelocities"},{"p":"swervelib.telemetry","c":"Alert.AlertType","l":"INFO"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"INFO"},{"p":"swervelib.telemetry","c":"Alert.SendableAlerts","l":"initSendable(SendableBuilder)","u":"initSendable(edu.wpi.first.util.sendable.SendableBuilder)"},{"p":"swervelib.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"inverted"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"inverted"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"invertedIMU"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"invertedIMU"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"invertedIMU"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"invertedIMU"},{"p":"swervelib.imu","c":"CanandgyroSwerve","l":"invertedIMU"},{"p":"swervelib.imu","c":"NavXSwerve","l":"invertedIMU"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"invertedIMU"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"invertedIMU"},{"p":"swervelib.parser.json","c":"SwerveDriveJson","l":"invertedIMU"},{"p":"swervelib.parser.json.modules","c":"ConversionFactorsJson","l":"isAngleEmpty()"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"isAttachedAbsoluteEncoder()"},{"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.parser.json.modules","c":"ConversionFactorsJson","l":"isDriveEmpty()"},{"p":"swervelib.motors","c":"SwerveMotor","l":"isDriveMotor"},{"p":"swervelib.encoders","c":"PWMDutyCycleEncoderSwerve","l":"isInverted"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"isSimulation"},{"p":"swervelib.parser","c":"Cache","l":"isStale()"},{"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","c":"SwerveDriveTest","l":"logAngularMotorActivity(SwerveModule, SysIdRoutineLog, Supplier)","u":"logAngularMotorActivity(swervelib.SwerveModule,edu.wpi.first.wpilibj.sysid.SysIdRoutineLog,java.util.function.Supplier)"},{"p":"swervelib","c":"SwerveDriveTest","l":"logAngularMotorDutyCycle(SwerveModule, SysIdRoutineLog)","u":"logAngularMotorDutyCycle(swervelib.SwerveModule,edu.wpi.first.wpilibj.sysid.SysIdRoutineLog)"},{"p":"swervelib","c":"SwerveDriveTest","l":"logAngularMotorVoltage(SwerveModule, SysIdRoutineLog)","u":"logAngularMotorVoltage(swervelib.SwerveModule,edu.wpi.first.wpilibj.sysid.SysIdRoutineLog)"},{"p":"swervelib","c":"SwerveDriveTest","l":"logDriveMotorActivity(SwerveModule, SysIdRoutineLog, Supplier)","u":"logDriveMotorActivity(swervelib.SwerveModule,edu.wpi.first.wpilibj.sysid.SysIdRoutineLog,java.util.function.Supplier)"},{"p":"swervelib","c":"SwerveDriveTest","l":"logDriveMotorDutyCycle(SwerveModule, SysIdRoutineLog)","u":"logDriveMotorDutyCycle(swervelib.SwerveModule,edu.wpi.first.wpilibj.sysid.SysIdRoutineLog)"},{"p":"swervelib","c":"SwerveDriveTest","l":"logDriveMotorVoltage(SwerveModule, SysIdRoutineLog)","u":"logDriveMotorVoltage(swervelib.SwerveModule,edu.wpi.first.wpilibj.sysid.SysIdRoutineLog)"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"LOW"},{"p":"swervelib","c":"SwerveDriveTest","l":"m_anglePosition"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"m_angleVoltageSetter"},{"p":"swervelib","c":"SwerveDriveTest","l":"m_angVelocity"},{"p":"swervelib","c":"SwerveDriveTest","l":"m_appliedVoltage"},{"p":"swervelib","c":"SwerveDriveTest","l":"m_distance"},{"p":"swervelib.math","c":"IMULinearMovingAverageFilter","l":"m_inputGain"},{"p":"swervelib.math","c":"IMULinearMovingAverageFilter","l":"m_inputs"},{"p":"swervelib","c":"SwerveDriveTest","l":"m_velocity"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"m_velocityVoltageSetter"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"MACHINE"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"magnetFieldLessThanIdeal"},{"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.encoders","c":"SwerveAbsoluteEncoder","l":"maximumRetries"},{"p":"swervelib.motors","c":"SwerveMotor","l":"maximumRetries"},{"p":"swervelib","c":"SwerveModule","l":"maxSpeed"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"maxSpeed"},{"p":"swervelib","c":"SwerveDrive","l":"maxSpeedMPS"},{"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":"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","c":"SwerveDrive","l":"moduleSynchronizationCounter"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"motor"},{"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","c":"SwerveDrive","l":"movementOptimizations(ChassisSpeeds, boolean, boolean)","u":"movementOptimizations(edu.wpi.first.math.kinematics.ChassisSpeeds,boolean,boolean)"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"name"},{"p":"swervelib.imu","c":"NavXSwerve","l":"navXError"},{"p":"swervelib.imu","c":"NavXSwerve","l":"NavXSwerve(I2C.Port)","u":"%3Cinit%3E(edu.wpi.first.wpilibj.I2C.Port)"},{"p":"swervelib.imu","c":"NavXSwerve","l":"NavXSwerve(SerialPort.Port)","u":"%3Cinit%3E(edu.wpi.first.wpilibj.SerialPort.Port)"},{"p":"swervelib.imu","c":"NavXSwerve","l":"NavXSwerve(SPI.Port)","u":"%3Cinit%3E(edu.wpi.first.wpilibj.SPI.Port)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"noEncoderAlert"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"noEncoderDefinedAlert"},{"p":"swervelib","c":"SwerveModule","l":"noEncoderWarning"},{"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":"IMUVelocity","l":"notifier"},{"p":"swervelib","c":"SwerveDrive","l":"odometryLock"},{"p":"swervelib","c":"SwerveDrive","l":"odometryThread"},{"p":"swervelib.encoders","c":"PWMDutyCycleEncoderSwerve","l":"offset"},{"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":"CanandgyroSwerve","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.encoders","c":"SparkMaxEncoderSwerve","l":"offsetFailure"},{"p":"swervelib.parser","c":"SwerveParser","l":"openJson(File)","u":"openJson(java.io.File)"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"optimalVoltage"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"optimalVoltage"},{"p":"swervelib.parser","c":"PIDFConfig","l":"output"},{"p":"swervelib.parser","c":"PIDFConfig","l":"p"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"physicalCharacteristics"},{"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.motors","c":"SparkFlexSwerve","l":"pid"},{"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.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"POSE"},{"p":"swervelib.math","c":"SwerveMath","l":"PoseLog(Pose2d)","u":"PoseLog(edu.wpi.first.math.geometry.Pose2d)"},{"p":"swervelib.imu","c":"IMUVelocity","l":"position"},{"p":"swervelib.math","c":"Matter","l":"position"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"position"},{"p":"swervelib.motors","c":"SparkFlexSwerve.SparkMAX_slotIdx","l":"Position"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"Position"},{"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":"SwerveDriveTest","l":"powerAngleMotorsDutyCycle(SwerveDrive, double)","u":"powerAngleMotorsDutyCycle(swervelib.SwerveDrive,double)"},{"p":"swervelib","c":"SwerveDriveTest","l":"powerAngleMotorsVoltage(SwerveDrive, double)","u":"powerAngleMotorsVoltage(swervelib.SwerveDrive,double)"},{"p":"swervelib","c":"SwerveDriveTest","l":"powerDriveMotorsDutyCycle(SwerveDrive, double)","u":"powerDriveMotorsDutyCycle(swervelib.SwerveDrive,double)"},{"p":"swervelib","c":"SwerveDriveTest","l":"powerDriveMotorsVoltage(SwerveDrive, double)","u":"powerDriveMotorsVoltage(swervelib.SwerveDrive,double)"},{"p":"swervelib.telemetry","c":"Alert","l":"printAlert(String)","u":"printAlert(java.lang.String)"},{"p":"swervelib","c":"SwerveDrive","l":"pushOffsetsToEncoders()"},{"p":"swervelib","c":"SwerveModule","l":"pushOffsetsToEncoders()"},{"p":"swervelib.encoders","c":"PWMDutyCycleEncoderSwerve","l":"PWMDutyCycleEncoderSwerve(int)","u":"%3Cinit%3E(int)"},{"p":"swervelib","c":"SwerveModule","l":"queueSynchronizeEncoders()"},{"p":"swervelib.parser.json","c":"PhysicalPropertiesJson","l":"rampRate"},{"p":"swervelib","c":"SwerveModule","l":"rawAbsoluteAngleName"},{"p":"swervelib","c":"SwerveModule","l":"rawAngleName"},{"p":"swervelib","c":"SwerveModule","l":"rawDriveName"},{"p":"swervelib","c":"SwerveModule","l":"rawDriveVelName"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"readingError"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"readingFaulty"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"readingIgnored"},{"p":"swervelib","c":"SwerveDrive","l":"replaceSwerveModuleFeedforward(SimpleMotorFeedforward)","u":"replaceSwerveModuleFeedforward(edu.wpi.first.math.controller.SimpleMotorFeedforward)"},{"p":"swervelib","c":"SwerveDrive","l":"resetDriveEncoders()"},{"p":"swervelib","c":"SwerveDrive","l":"resetOdometry(Pose2d)","u":"resetOdometry(edu.wpi.first.math.geometry.Pose2d)"},{"p":"swervelib","c":"SwerveDrive","l":"restoreInternalOffset()"},{"p":"swervelib","c":"SwerveModule","l":"restoreInternalOffset()"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"robotRotation"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"rotationUnit"},{"p":"swervelib.math","c":"SwerveMath","l":"scaleTranslation(Translation2d, double)","u":"scaleTranslation(edu.wpi.first.math.geometry.Translation2d,double)"},{"p":"swervelib.telemetry","c":"Alert.SendableAlerts","l":"SendableAlerts()","u":"%3Cinit%3E()"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"serialCommsIssueWarning"},{"p":"swervelib.telemetry","c":"Alert","l":"set(boolean)"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"set(double)"},{"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":"SparkFlexSwerve","l":"setAbsoluteEncoder(SwerveAbsoluteEncoder)","u":"setAbsoluteEncoder(swervelib.encoders.SwerveAbsoluteEncoder)"},{"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.encoders","c":"AnalogAbsoluteEncoderSwerve","l":"setAbsoluteEncoderOffset(double)"},{"p":"swervelib.encoders","c":"CanAndMagSwerve","l":"setAbsoluteEncoderOffset(double)"},{"p":"swervelib.encoders","c":"CANCoderSwerve","l":"setAbsoluteEncoderOffset(double)"},{"p":"swervelib.encoders","c":"PWMDutyCycleEncoderSwerve","l":"setAbsoluteEncoderOffset(double)"},{"p":"swervelib.encoders","c":"SparkMaxAnalogEncoderSwerve","l":"setAbsoluteEncoderOffset(double)"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"setAbsoluteEncoderOffset(double)"},{"p":"swervelib.encoders","c":"SwerveAbsoluteEncoder","l":"setAbsoluteEncoderOffset(double)"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"setAngle(double)"},{"p":"swervelib","c":"SwerveModule","l":"setAngle(double)"},{"p":"swervelib","c":"SwerveDrive","l":"setAngleMotorConversionFactor(double)"},{"p":"swervelib","c":"SwerveModule","l":"setAngleMotorConversionFactor(double)"},{"p":"swervelib","c":"SwerveModule","l":"setAngleMotorVoltageCompensation(double)"},{"p":"swervelib","c":"SwerveModule","l":"setAnglePIDF(PIDFConfig)","u":"setAnglePIDF(swervelib.parser.PIDFConfig)"},{"p":"swervelib","c":"SwerveDriveTest","l":"setAngleSysIdRoutine(SysIdRoutine.Config, SubsystemBase, SwerveDrive)","u":"setAngleSysIdRoutine(edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine.Config,edu.wpi.first.wpilibj2.command.SubsystemBase,swervelib.SwerveDrive)"},{"p":"swervelib","c":"SwerveDrive","l":"setAngularVelocityCompensation(boolean, boolean, double)","u":"setAngularVelocityCompensation(boolean,boolean,double)"},{"p":"swervelib","c":"SwerveModule","l":"setAntiJitter(boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"setAutoCenteringModules(boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"setChassisDiscretization(boolean, boolean, double)","u":"setChassisDiscretization(boolean,boolean,double)"},{"p":"swervelib","c":"SwerveDrive","l":"setChassisDiscretization(boolean, double)","u":"setChassisDiscretization(boolean,double)"},{"p":"swervelib","c":"SwerveDrive","l":"setChassisSpeeds(ChassisSpeeds)","u":"setChassisSpeeds(edu.wpi.first.math.kinematics.ChassisSpeeds)"},{"p":"swervelib","c":"SwerveDrive","l":"setCosineCompensator(boolean)"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"setCurrentLimit(int)"},{"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(SwerveModuleState, boolean, boolean)","u":"setDesiredState(edu.wpi.first.math.kinematics.SwerveModuleState,boolean,boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"setDriveMotorConversionFactor(double)"},{"p":"swervelib","c":"SwerveModule","l":"setDriveMotorConversionFactor(double)"},{"p":"swervelib","c":"SwerveModule","l":"setDriveMotorVoltageCompensation(double)"},{"p":"swervelib","c":"SwerveModule","l":"setDrivePIDF(PIDFConfig)","u":"setDrivePIDF(swervelib.parser.PIDFConfig)"},{"p":"swervelib","c":"SwerveDriveTest","l":"setDriveSysIdRoutine(SysIdRoutine.Config, SubsystemBase, SwerveDrive, double)","u":"setDriveSysIdRoutine(edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine.Config,edu.wpi.first.wpilibj2.command.SubsystemBase,swervelib.SwerveDrive,double)"},{"p":"swervelib","c":"SwerveModule","l":"setEncoderAutoSynchronize(boolean)"},{"p":"swervelib","c":"SwerveModule","l":"setEncoderAutoSynchronize(boolean, double)","u":"setEncoderAutoSynchronize(boolean,double)"},{"p":"swervelib","c":"SwerveModule","l":"setFeedforward(SimpleMotorFeedforward)","u":"setFeedforward(edu.wpi.first.math.controller.SimpleMotorFeedforward)"},{"p":"swervelib","c":"SwerveDrive","l":"setGyro(Rotation3d)","u":"setGyro(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib","c":"SwerveDrive","l":"setGyroOffset(Rotation3d)","u":"setGyroOffset(edu.wpi.first.math.geometry.Rotation3d)"},{"p":"swervelib","c":"SwerveDrive","l":"setHeadingCorrection(boolean)"},{"p":"swervelib","c":"SwerveDrive","l":"setHeadingCorrection(boolean, double)","u":"setHeadingCorrection(boolean,double)"},{"p":"swervelib.imu","c":"ADIS16448Swerve","l":"setInverted(boolean)"},{"p":"swervelib.imu","c":"ADIS16470Swerve","l":"setInverted(boolean)"},{"p":"swervelib.imu","c":"ADXRS450Swerve","l":"setInverted(boolean)"},{"p":"swervelib.imu","c":"AnalogGyroSwerve","l":"setInverted(boolean)"},{"p":"swervelib.imu","c":"CanandgyroSwerve","l":"setInverted(boolean)"},{"p":"swervelib.imu","c":"NavXSwerve","l":"setInverted(boolean)"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"setInverted(boolean)"},{"p":"swervelib.imu","c":"PigeonSwerve","l":"setInverted(boolean)"},{"p":"swervelib.imu","c":"SwerveIMU","l":"setInverted(boolean)"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"setInverted(boolean)"},{"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":"SparkFlexSwerve","l":"setLoopRampRate(double)"},{"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, double)","u":"setMaximumSpeed(double,boolean,double)"},{"p":"swervelib","c":"SwerveDrive","l":"setMaximumSpeeds(double, double, double)","u":"setMaximumSpeeds(double,double,double)"},{"p":"swervelib","c":"SwerveDrive","l":"setModuleEncoderAutoSynchronize(boolean, double)","u":"setModuleEncoderAutoSynchronize(boolean,double)"},{"p":"swervelib","c":"SwerveDrive","l":"setModuleStates(SwerveModuleState[], boolean)","u":"setModuleStates(edu.wpi.first.math.kinematics.SwerveModuleState[],boolean)"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"setMotorBrake(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","c":"SwerveDrive","l":"setOdometryPeriod(double)"},{"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":"CanandgyroSwerve","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":"SparkFlexSwerve","l":"setPosition(double)"},{"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(SwerveModuleState[], ChassisSpeeds, boolean)","u":"setRawModuleStates(edu.wpi.first.math.kinematics.SwerveModuleState[],edu.wpi.first.math.kinematics.ChassisSpeeds,boolean)"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"setReference(double, double)","u":"setReference(double,double)"},{"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":"SparkFlexSwerve","l":"setReference(double, double, double)","u":"setReference(double,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.telemetry","c":"Alert","l":"setText(String)","u":"setText(java.lang.String)"},{"p":"swervelib","c":"SwerveDrive","l":"setVisionMeasurementStdDevs(Matrix)","u":"setVisionMeasurementStdDevs(edu.wpi.first.math.Matrix)"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"setVoltage(double)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"setVoltage(double)"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"setVoltage(double)"},{"p":"swervelib.motors","c":"SwerveMotor","l":"setVoltage(double)"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"setVoltage(double)"},{"p":"swervelib.motors","c":"TalonSRXSwerve","l":"setVoltage(double)"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"setVoltageCompensation(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","c":"SwerveDrive","l":"simIMU"},{"p":"swervelib","c":"SwerveModule","l":"simModule"},{"p":"swervelib.motors","c":"SparkFlexSwerve.SparkMAX_slotIdx","l":"Simulation"},{"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":"SparkFlexSwerve","l":"SparkFlexSwerve(CANSparkFlex, boolean)","u":"%3Cinit%3E(com.revrobotics.CANSparkFlex,boolean)"},{"p":"swervelib.motors","c":"SparkFlexSwerve","l":"SparkFlexSwerve(int, boolean)","u":"%3Cinit%3E(int,boolean)"},{"p":"swervelib.motors","c":"SparkFlexSwerve.SparkMAX_slotIdx","l":"SparkMAX_slotIdx()","u":"%3Cinit%3E()"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"SparkMAX_slotIdx()","u":"%3Cinit%3E()"},{"p":"swervelib.encoders","c":"SparkMaxAnalogEncoderSwerve","l":"SparkMaxAnalogEncoderSwerve(SwerveMotor, double)","u":"%3Cinit%3E(swervelib.motors.SwerveMotor,double)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"SparkMaxBrushedMotorSwerve(CANSparkMax, boolean, SparkRelativeEncoder.Type, int, boolean)","u":"%3Cinit%3E(com.revrobotics.CANSparkMax,boolean,com.revrobotics.SparkRelativeEncoder.Type,int,boolean)"},{"p":"swervelib.motors","c":"SparkMaxBrushedMotorSwerve","l":"SparkMaxBrushedMotorSwerve(int, boolean, SparkRelativeEncoder.Type, int, boolean)","u":"%3Cinit%3E(int,boolean,com.revrobotics.SparkRelativeEncoder.Type,int,boolean)"},{"p":"swervelib.encoders","c":"SparkMaxEncoderSwerve","l":"SparkMaxEncoderSwerve(SwerveMotor, int)","u":"%3Cinit%3E(swervelib.motors.SwerveMotor,int)"},{"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.encoders","c":"CANCoderSwerve","l":"STATUS_TIMEOUT_SECONDS"},{"p":"swervelib.imu","c":"CanandgyroSwerve","l":"STATUS_TIMEOUT_SECONDS"},{"p":"swervelib.imu","c":"Pigeon2Swerve","l":"STATUS_TIMEOUT_SECONDS"},{"p":"swervelib.motors","c":"TalonFXSwerve","l":"STATUS_TIMEOUT_SECONDS"},{"p":"swervelib","c":"SwerveDrive","l":"stopOdometryThread()"},{"p":"swervelib.parser","c":"Cache","l":"supplier"},{"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, double)","u":"%3Cinit%3E(swervelib.parser.SwerveDriveConfiguration,swervelib.parser.PIDFConfig,double)"},{"p":"swervelib.parser","c":"SwerveControllerConfiguration","l":"SwerveControllerConfiguration(SwerveDriveConfiguration, PIDFConfig, double, double)","u":"%3Cinit%3E(swervelib.parser.SwerveDriveConfiguration,swervelib.parser.PIDFConfig,double,double)"},{"p":"swervelib","c":"SwerveDrive","l":"SwerveDrive(SwerveDriveConfiguration, SwerveControllerConfiguration, double)","u":"%3Cinit%3E(swervelib.parser.SwerveDriveConfiguration,swervelib.parser.SwerveControllerConfiguration,double)"},{"p":"swervelib","c":"SwerveDrive","l":"swerveDriveConfiguration"},{"p":"swervelib.parser","c":"SwerveDriveConfiguration","l":"SwerveDriveConfiguration(SwerveModuleConfiguration[], SwerveIMU, boolean, SimpleMotorFeedforward, SwerveModulePhysicalCharacteristics)","u":"%3Cinit%3E(swervelib.parser.SwerveModuleConfiguration[],swervelib.imu.SwerveIMU,boolean,edu.wpi.first.math.controller.SimpleMotorFeedforward,swervelib.parser.SwerveModulePhysicalCharacteristics)"},{"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","c":"SwerveDriveTest","l":"SwerveDriveTest()","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":"SwerveMath","l":"SwerveMath()","u":"%3Cinit%3E()"},{"p":"swervelib","c":"SwerveModule","l":"SwerveModule(int, SwerveModuleConfiguration, SimpleMotorFeedforward)","u":"%3Cinit%3E(int,swervelib.parser.SwerveModuleConfiguration,edu.wpi.first.math.controller.SimpleMotorFeedforward)"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"SwerveModuleConfiguration(SwerveMotor, SwerveMotor, MotorConfigDouble, SwerveAbsoluteEncoder, double, double, double, PIDFConfig, PIDFConfig, SwerveModulePhysicalCharacteristics, boolean, boolean, boolean, String, boolean)","u":"%3Cinit%3E(swervelib.motors.SwerveMotor,swervelib.motors.SwerveMotor,swervelib.parser.json.MotorConfigDouble,swervelib.encoders.SwerveAbsoluteEncoder,double,double,double,swervelib.parser.PIDFConfig,swervelib.parser.PIDFConfig,swervelib.parser.SwerveModulePhysicalCharacteristics,boolean,boolean,boolean,java.lang.String,boolean)"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"SwerveModuleConfiguration(SwerveMotor, SwerveMotor, MotorConfigDouble, SwerveAbsoluteEncoder, double, double, double, PIDFConfig, PIDFConfig, SwerveModulePhysicalCharacteristics, String, boolean)","u":"%3Cinit%3E(swervelib.motors.SwerveMotor,swervelib.motors.SwerveMotor,swervelib.parser.json.MotorConfigDouble,swervelib.encoders.SwerveAbsoluteEncoder,double,double,double,swervelib.parser.PIDFConfig,swervelib.parser.PIDFConfig,swervelib.parser.SwerveModulePhysicalCharacteristics,java.lang.String,boolean)"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"SwerveModulePhysicalCharacteristics(MotorConfigDouble, double, double)","u":"%3Cinit%3E(swervelib.parser.json.MotorConfigDouble,double,double)"},{"p":"swervelib.parser","c":"SwerveModulePhysicalCharacteristics","l":"SwerveModulePhysicalCharacteristics(MotorConfigDouble, double, double, int, int, double, double)","u":"%3Cinit%3E(swervelib.parser.json.MotorConfigDouble,double,double,int,int,double,double)"},{"p":"swervelib","c":"SwerveDrive","l":"swerveModules"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"SwerveModuleSimulation()","u":"%3Cinit%3E()"},{"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":"synchronizeEncoderDeadband"},{"p":"swervelib","c":"SwerveModule","l":"synchronizeEncoderEnabled"},{"p":"swervelib","c":"SwerveModule","l":"synchronizeEncoderQueued"},{"p":"swervelib","c":"SwerveDrive","l":"synchronizeModuleEncoders()"},{"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(TalonFX, boolean)","u":"%3Cinit%3E(com.ctre.phoenix6.hardware.TalonFX,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.telemetry","c":"Alert","l":"text"},{"p":"swervelib","c":"SwerveController","l":"thetaController"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"timer"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"timer"},{"p":"swervelib.imu","c":"IMUVelocity","l":"timestamp"},{"p":"swervelib.parser","c":"Cache","l":"timestamp"},{"p":"swervelib","c":"SwerveDrive","l":"tunerXRecommendation"},{"p":"swervelib.parser.json","c":"DeviceJson","l":"type"},{"p":"swervelib.telemetry","c":"Alert","l":"type"},{"p":"swervelib.imu","c":"IMUVelocity","l":"update()"},{"p":"swervelib.parser","c":"Cache","l":"update()"},{"p":"swervelib","c":"SwerveDrive","l":"updateCacheValidityPeriods(long, long, long)","u":"updateCacheValidityPeriods(long,long,long)"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"updateData()"},{"p":"swervelib","c":"SwerveDrive","l":"updateOdometry()"},{"p":"swervelib.simulation","c":"SwerveIMUSimulation","l":"updateOdometry(SwerveDriveKinematics, SwerveModuleState[], Pose2d[], Field2d)","u":"updateOdometry(edu.wpi.first.math.kinematics.SwerveDriveKinematics,edu.wpi.first.math.kinematics.SwerveModuleState[],edu.wpi.first.math.geometry.Pose2d[],edu.wpi.first.wpilibj.smartdashboard.Field2d)"},{"p":"swervelib.simulation","c":"SwerveModuleSimulation","l":"updateStateAndPosition(SwerveModuleState)","u":"updateStateAndPosition(edu.wpi.first.math.kinematics.SwerveModuleState)"},{"p":"swervelib.parser","c":"Cache","l":"updateSupplier(Supplier)","u":"updateSupplier(java.util.function.Supplier)"},{"p":"swervelib","c":"SwerveModule","l":"updateTelemetry()"},{"p":"swervelib.parser","c":"Cache","l":"updateValidityPeriod(long)"},{"p":"swervelib.parser.json","c":"ModuleJson","l":"useCosineCompensator"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"useCosineCompensator"},{"p":"swervelib.parser","c":"Cache","l":"validityPeriod"},{"p":"swervelib.parser","c":"Cache","l":"value"},{"p":"swervelib.motors","c":"SparkFlexSwerve.SparkMAX_slotIdx","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"swervelib.telemetry","c":"Alert.AlertType","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":"SparkFlexSwerve.SparkMAX_slotIdx","l":"values()"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"values()"},{"p":"swervelib.telemetry","c":"Alert.AlertType","l":"values()"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry.TelemetryVerbosity","l":"values()"},{"p":"swervelib.imu","c":"IMUVelocity","l":"velocity"},{"p":"swervelib.motors","c":"SparkMaxSwerve","l":"velocity"},{"p":"swervelib.motors","c":"SparkFlexSwerve.SparkMAX_slotIdx","l":"Velocity"},{"p":"swervelib.motors","c":"SparkMaxSwerve.SparkMAX_slotIdx","l":"Velocity"},{"p":"swervelib.imu","c":"IMUVelocity","l":"velocityFilter"},{"p":"swervelib.parser","c":"SwerveModuleConfiguration","l":"velocityPIDF"},{"p":"swervelib.telemetry","c":"SwerveDriveTelemetry","l":"verbosity"},{"p":"swervelib.telemetry","c":"Alert.AlertType","l":"WARNING"},{"p":"swervelib.telemetry","c":"Alert.AlertType","l":"WARNING_TRACE"},{"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/module-search-index.js b/docs/module-search-index.js
deleted file mode 100644
index 0d59754..0000000
--- a/docs/module-search-index.js
+++ /dev/null
@@ -1 +0,0 @@
-moduleSearchIndex = [];updateSearchResults();
\ No newline at end of file
diff --git a/docs/overview-summary.html b/docs/overview-summary.html
deleted file mode 100644
index e7074d2..0000000
--- a/docs/overview-summary.html
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-Generated Documentation (Untitled)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete});
\ No newline at end of file
diff --git a/docs/script-dir/jquery-ui.structure.min.css b/docs/script-dir/jquery-ui.structure.min.css
deleted file mode 100644
index e880892..0000000
--- a/docs/script-dir/jquery-ui.structure.min.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.12.1 - 2018-12-06
-* http://jqueryui.com
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
-
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}
\ No newline at end of file
diff --git a/docs/script.js b/docs/script.js
deleted file mode 100644
index 864989c..0000000
--- a/docs/script.js
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-var moduleSearchIndex;
-var packageSearchIndex;
-var typeSearchIndex;
-var memberSearchIndex;
-var tagSearchIndex;
-function loadScripts(doc, tag) {
- createElem(doc, tag, 'search.js');
-
- createElem(doc, tag, 'module-search-index.js');
- createElem(doc, tag, 'package-search-index.js');
- createElem(doc, tag, 'type-search-index.js');
- createElem(doc, tag, 'member-search-index.js');
- createElem(doc, tag, 'tag-search-index.js');
-}
-
-function createElem(doc, tag, path) {
- var script = doc.createElement(tag);
- var scriptElement = doc.getElementsByTagName(tag)[0];
- script.src = pathtoroot + path;
- scriptElement.parentNode.insertBefore(script, scriptElement);
-}
-
-function show(tableId, selected, columns) {
- if (tableId !== selected) {
- document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')')
- .forEach(function(elem) {
- elem.style.display = 'none';
- });
- }
- document.querySelectorAll('div.' + selected)
- .forEach(function(elem, index) {
- elem.style.display = '';
- var isEvenRow = index % (columns * 2) < columns;
- elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor);
- elem.classList.add(isEvenRow ? evenRowColor : oddRowColor);
- });
- updateTabs(tableId, selected);
-}
-
-function updateTabs(tableId, selected) {
- document.querySelector('div#' + tableId +' .summary-table')
- .setAttribute('aria-labelledby', selected);
- document.querySelectorAll('button[id^="' + tableId + '"]')
- .forEach(function(tab, index) {
- if (selected === tab.id || (tableId === selected && index === 0)) {
- tab.className = activeTableTab;
- tab.setAttribute('aria-selected', true);
- tab.setAttribute('tabindex',0);
- } else {
- tab.className = tableTab;
- tab.setAttribute('aria-selected', false);
- tab.setAttribute('tabindex',-1);
- }
- });
-}
-
-function switchTab(e) {
- var selected = document.querySelector('[aria-selected=true]');
- if (selected) {
- if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) {
- // left or up arrow key pressed: move focus to previous tab
- selected.previousSibling.click();
- selected.previousSibling.focus();
- e.preventDefault();
- } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) {
- // right or down arrow key pressed: move focus to next tab
- selected.nextSibling.click();
- selected.nextSibling.focus();
- e.preventDefault();
- }
- }
-}
-
-var updateSearchResults = function() {};
-
-function indexFilesLoaded() {
- return moduleSearchIndex
- && packageSearchIndex
- && typeSearchIndex
- && memberSearchIndex
- && tagSearchIndex;
-}
-
-// Workaround for scroll position not being included in browser history (8249133)
-document.addEventListener("DOMContentLoaded", function(e) {
- var contentDiv = document.querySelector("div.flex-content");
- window.addEventListener("popstate", function(e) {
- if (e.state !== null) {
- contentDiv.scrollTop = e.state;
- }
- });
- window.addEventListener("hashchange", function(e) {
- history.replaceState(contentDiv.scrollTop, document.title);
- });
- contentDiv.addEventListener("scroll", function(e) {
- var timeoutID;
- if (!timeoutID) {
- timeoutID = setTimeout(function() {
- history.replaceState(contentDiv.scrollTop, document.title);
- timeoutID = null;
- }, 100);
- }
- });
- if (!location.hash) {
- history.replaceState(contentDiv.scrollTop, document.title);
- }
-});
diff --git a/docs/search.js b/docs/search.js
deleted file mode 100644
index db3b2f4..0000000
--- a/docs/search.js
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-var noResult = {l: "No results found"};
-var loading = {l: "Loading search index..."};
-var catModules = "Modules";
-var catPackages = "Packages";
-var catTypes = "Classes and Interfaces";
-var catMembers = "Members";
-var catSearchTags = "Search Tags";
-var highlight = "$&";
-var searchPattern = "";
-var fallbackPattern = "";
-var RANKING_THRESHOLD = 2;
-var NO_MATCH = 0xffff;
-var MIN_RESULTS = 3;
-var MAX_RESULTS = 500;
-var UNNAMED = "";
-function escapeHtml(str) {
- return str.replace(//g, ">");
-}
-function getHighlightedText(item, matcher, fallbackMatcher) {
- var escapedItem = escapeHtml(item);
- var highlighted = escapedItem.replace(matcher, highlight);
- if (highlighted === escapedItem) {
- highlighted = escapedItem.replace(fallbackMatcher, highlight)
- }
- return highlighted;
-}
-function getURLPrefix(ui) {
- var urlPrefix="";
- var slash = "/";
- if (ui.item.category === catModules) {
- return ui.item.l + slash;
- } else if (ui.item.category === catPackages && ui.item.m) {
- return ui.item.m + slash;
- } else if (ui.item.category === catTypes || ui.item.category === catMembers) {
- if (ui.item.m) {
- urlPrefix = ui.item.m + slash;
- } else {
- $.each(packageSearchIndex, function(index, item) {
- if (item.m && ui.item.p === item.l) {
- urlPrefix = item.m + slash;
- }
- });
- }
- }
- return urlPrefix;
-}
-function createSearchPattern(term) {
- var pattern = "";
- var isWordToken = false;
- term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) {
- if (index > 0) {
- // whitespace between identifiers is significant
- pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*";
- }
- var tokens = w.split(/(?=[A-Z,.()<>[\/])/);
- for (var i = 0; i < tokens.length; i++) {
- var s = tokens[i];
- if (s === "") {
- continue;
- }
- pattern += $.ui.autocomplete.escapeRegex(s);
- isWordToken = /\w$/.test(s);
- if (isWordToken) {
- pattern += "([a-z0-9_$<>\\[\\]]*?)";
- }
- }
- });
- return pattern;
-}
-function createMatcher(pattern, flags) {
- var isCamelCase = /[A-Z]/.test(pattern);
- return new RegExp(pattern, flags + (isCamelCase ? "" : "i"));
-}
-var watermark = 'Search';
-$(function() {
- var search = $("#search-input");
- var reset = $("#reset-button");
- search.val('');
- search.prop("disabled", false);
- reset.prop("disabled", false);
- search.val(watermark).addClass('watermark');
- search.blur(function() {
- if ($(this).val().length === 0) {
- $(this).val(watermark).addClass('watermark');
- }
- });
- search.on('click keydown paste', function() {
- if ($(this).val() === watermark) {
- $(this).val('').removeClass('watermark');
- }
- });
- reset.click(function() {
- search.val('').focus();
- });
- search.focus()[0].setSelectionRange(0, 0);
-});
-$.widget("custom.catcomplete", $.ui.autocomplete, {
- _create: function() {
- this._super();
- this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)");
- },
- _renderMenu: function(ul, items) {
- var rMenu = this;
- var currentCategory = "";
- rMenu.menu.bindings = $();
- $.each(items, function(index, item) {
- var li;
- if (item.category && item.category !== currentCategory) {
- ul.append("
SwerveControllerConfiguration object storing data to generate the PIDController for controlling the
- robot heading, and deadband for heading joystick.
SwerveControllerConfiguration object storing data to generate the PIDController for controlling the
- robot heading, and deadband for heading joystick.
-
-
-
-
-
thetaController
-
public finaledu.wpi.first.math.controller.PIDControllerthetaController
-
PID Controller for the robot heading.
-
-
-
-
-
lastAngleScalar
-
publicdoublelastAngleScalar
-
Last angle as a scalar [-1,1] the robot was set to.
Helper function to get the swerveController for the SwerveDrive which can be used to
- generate ChassisSpeeds for the robot to orient it correctly given axis or angles, and apply
- SlewRateLimiter to given inputs.
Tertiary method of controlling the drive base given velocity in both field oriented and robot oriented at the same
- time. The inputs are added together so this is not intneded to be used to give the driver both methods of control.
-
-
Parameters:
-
fieldOrientedVelocity - The field oriented velocties to use
-
robotOrientedVelocity - The robot oriented velocties to use
The primary method for controlling the drivebase. Takes a Translation2d and a rotation rate, and calculates
- and commands module states accordingly. Can use either open-loop or closed-loop velocity control for the wheel
- velocities. Also has field- and robot-relative modes, which affect how the translation vector is used.
-
-
Parameters:
-
translation - Translation2d that is the commanded linear velocity of the robot, in meters
- per second. In robot-relative mode, positive x is torwards the bow (front) and
- positive y is torwards port (left). In field-relative mode, positive x is away from
- the alliance wall (field North) and positive y is torwards the left wall when looking
- through the driver station glass (field West).
-
rotation - Robot angular rate, in radians per second. CCW positive. Unaffected by field/robot
- relativity.
-
fieldRelative - Drive mode. True for field-relative, false for robot-relative.
-
isOpenLoop - Whether to use closed-loop velocity control. Set to true to disable closed-loop.
-
centerOfRotationMeters - The center of rotation in meters, 0 is the center of the robot.
The primary method for controlling the drivebase. Takes a Translation2d and a rotation rate, and calculates
- and commands module states accordingly. Can use either open-loop or closed-loop velocity control for the wheel
- velocities. Also has field- and robot-relative modes, which affect how the translation vector is used.
-
-
Parameters:
-
translation - Translation2d that is the commanded linear velocity of the robot, in meters per
- second. In robot-relative mode, positive x is torwards the bow (front) and positive y is
- torwards port (left). In field-relative mode, positive x is away from the alliance wall (field
- North) and positive y is torwards the left wall when looking through the driver station glass
- (field West).
-
rotation - Robot angular rate, in radians per second. CCW positive. Unaffected by field/robot
- relativity.
-
fieldRelative - Drive mode. True for field-relative, false for robot-relative.
-
isOpenLoop - Whether to use closed-loop velocity control. Set to true to disable closed-loop.
The primary method for controlling the drivebase. Takes a ChassisSpeeds, and calculates and commands module
- states accordingly. Can use either open-loop or closed-loop velocity control for the wheel velocities. Applies
- heading correction if enabled and necessary.
-
-
Parameters:
-
velocity - The chassis speeds to set the robot to achieve.
-
isOpenLoop - Whether to use closed-loop velocity control. Set to true to disable closed-loop.
-
centerOfRotationMeters - The center of rotation in meters, 0 is the center of the robot.
Set the module states (azimuth and velocity) directly. Used primarily for auto paths.
- Does not allow for usage of desaturateWheelSpeeds(SwerveModuleState[] moduleStates,
- ChassisSpeeds desiredChassisSpeed, double attainableMaxModuleSpeedMetersPerSecond,
- double attainableMaxTranslationalSpeedMetersPerSecond, double attainableMaxRotationalVelocityRadiansPerSecond)
-
-
Parameters:
-
desiredStates - A list of SwerveModuleStates to send to the modules.
-
isOpenLoop - Whether to use closed-loop velocity control. Set to true to disable closed-loop.
Resets odometry to the given pose. Gyro angle and module positions do not need to be reset when calling this
- method. However, if either gyro angle or module position is reset, this must be called in order for odometry to
- keep working.
Set the expected gyroscope angle using a Rotation3d object. To reset gyro, set to a new Rotation3d
- subtracted from the current gyroscopic readings SwerveIMU.getRotation3d().
-
-
Parameters:
-
gyro - expected gyroscope angle as Rotation3d.
-
-
-
-
-
-
zeroGyro
-
publicvoidzeroGyro()
-
Resets the gyro angle to zero and resets odometry to the same position, but facing toward 0.
maximumSpeed - Maximum speed for the drive motors in meters / second.
-
updateModuleFeedforward - Update the swerve module feedforward to account for the new maximum speed. This
- should be true unless you have replaced the drive motor feedforward with
- replaceSwerveModuleFeedforward(SimpleMotorFeedforward)
-
optimalVoltage - Optimal voltage to use for the feedforward.
driveFeedforward - Feedforward for the drive motor on swerve modules.
-
-
-
-
-
-
updateOdometry
-
publicvoidupdateOdometry()
-
Update odometry should be run every loop. Synchronizes module absolute encoders with relative encoders
- periodically. In simulation mode will also post the pose of each module. Updates SmartDashboard with module encoder
- readings and states.
-
-
-
-
-
synchronizeModuleEncoders
-
publicvoidsynchronizeModuleEncoders()
-
Synchronize angle motor integrated encoders with data from absolute encoders.
Add a vision measurement to the SwerveDrivePoseEstimator and update the SwerveIMU gyro reading with
- the given timestamp of the vision measurement.
-
-
Parameters:
-
robotPose - Robot Pose2d as measured by vision.
-
timestamp - Timestamp the measurement was taken as time since startup, should be taken from
- Timer.getFPGATimestamp() or similar sources.
-
visionMeasurementStdDevs - Vision measurement standard deviation that will be sent to the
- SwerveDrivePoseEstimator.The standard deviation of the vision measurement,
- for best accuracy calculate the standard deviation at 2 or more points and fit a
- line to it with the calculated optimal standard deviation. (Units should be meters
- per pixel). By optimizing this you can get * vision accurate to inches instead of
- feet.
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.
Reset the drive encoders on the robot, useful when manually resetting the robot without a reboot, like in
- autonomous.
-
-
-
-
-
pushOffsetsToEncoders
-
publicvoidpushOffsetsToEncoders()
-
Pushes the Absolute Encoder offsets to the Encoder or Motor Controller, depending on type. Also removes the
- internal offsets to prevent double offsetting.
-
-
-
-
-
restoreInternalOffset
-
publicvoidrestoreInternalOffset()
-
Restores Internal YAGSL Encoder offsets and sets the Encoder stored offset back to 0
Enable auto-centering module wheels. This has a side effect of causing some jitter to the robot when a PID is not
- tuned perfectly. This function is a wrapper for SwerveModule.setAntiJitter(boolean) to perform
- auto-centering.
Enables angular velocity skew correction in teleop and/or autonomous
- and sets the angular velocity coefficient for both modes
-
-
Parameters:
-
useInTeleop - Enables angular velocity correction in teleop.
-
useInAuto - Enables angular velocity correction in autonomous.
-
angularVelocityCoeff - The angular velocity coefficient. Expected values between -0.15 to 0.15.
- Start with a value of 0.1, test in teleop.
- When enabling for the first time if the skew is significantly worse try inverting the value.
- Tune by moving in a straight line while rotating. Testing is best done with angular velocity controls on the right stick.
- Change the value until you are visually happy with the skew.
- Ensure your tune works with different translational and rotational magnitudes.
- If this reduces skew in teleop, it may improve auto.
Logs output, position and velocuty info form the drive motor to the SysIdRoutineLog Although SysIdRoutine
- expects to be logging Voltage, this function logs in Duty-Cycle (percent output) because it results in correctly
- adjusted values in the analysis for use in this library.
automatic - Attempt to automatically spin the modules.
-
Returns:
-
Average coupling ratio.
-
-
-
-
-
-
createConfigCustomTimeout
-
public staticedu.wpi.first.wpilibj2.command.sysid.SysIdRoutine.ConfigcreateConfigCustomTimeout(double timeout)
-
Creates a SysIdRoutine.Config with a custom final timeout
-
-
Parameters:
-
timeout - - the most a SysIdRoutine should run
-
Returns:
-
A custom SysIdRoutine.Config
-
-
-
-
-
-
logDriveMotorDutyCycle
-
public staticvoidlogDriveMotorDutyCycle(SwerveModule module,
- edu.wpi.first.wpilibj.sysid.SysIdRoutineLog log)
-
Logs output, position and velocuty info form the drive motor to the SysIdRoutineLog Although SysIdRoutine
- expects to be logging Voltage, this function logs in Duty-Cycle (percent output) because it results in correctly
- adjusted values in the analysis for use in this library.
-
-
Parameters:
-
module - - the swerve module being logged
-
log - - the logger
-
-
-
-
-
-
logDriveMotorVoltage
-
public staticvoidlogDriveMotorVoltage(SwerveModule module,
- edu.wpi.first.wpilibj.sysid.SysIdRoutineLog log)
-
Logs voltage, position and velocuty info form the drive motor to the SysIdRoutineLog
-
-
Parameters:
-
module - - the swerve module being logged
-
log - - the logger
-
-
-
-
-
-
logDriveMotorActivity
-
public staticvoidlogDriveMotorActivity(SwerveModule module,
- edu.wpi.first.wpilibj.sysid.SysIdRoutineLog log,
- Supplier<Double> powerSupplied)
-
Logs power, position and velocuty info form the drive motor to the SysIdRoutineLog
-
-
Parameters:
-
module - - the swerve module being logged
-
log - - the logger
-
powerSupplied - - a functional supplier of the power to be logged
Sets up the SysId runner and logger for the drive motors
-
-
Parameters:
-
config - - The SysIdRoutine.Config to use
-
swerveSubsystem - - the subsystem to add to requirements
-
swerveDrive - - the SwerveDrive from which to access motor info
-
maxVolts - - The maximum voltage that should be applied to the drive motors.
-
Returns:
-
A SysIdRoutine runner
-
-
-
-
-
-
logAngularMotorDutyCycle
-
public staticvoidlogAngularMotorDutyCycle(SwerveModule module,
- edu.wpi.first.wpilibj.sysid.SysIdRoutineLog log)
-
Logs info about the angle motor to the SysIdRoutineLog. Although SysIdRoutine expects to be logging Voltage,
- this function logs in Duty-Cycle (percent output) because it results in correctly adjusted values in the analysis
- for use in this library.
-
-
Parameters:
-
module - - the swerve module being logged
-
log - - the logger
-
-
-
-
-
-
logAngularMotorVoltage
-
public staticvoidlogAngularMotorVoltage(SwerveModule module,
- edu.wpi.first.wpilibj.sysid.SysIdRoutineLog log)
-
Logs info about the angle motor to the SysIdRoutineLog
-
-
Parameters:
-
module - - the swerve module being logged
-
log - - the logger
-
-
-
-
-
-
logAngularMotorActivity
-
public staticvoidlogAngularMotorActivity(SwerveModule module,
- edu.wpi.first.wpilibj.sysid.SysIdRoutineLog log,
- Supplier<Double> powerSupplied)
-
Logs info about the angle motor to the SysIdRoutineLog
-
-
Parameters:
-
module - - the swerve module being logged
-
log - - the logger
-
powerSupplied - - a functional supplier of the power to be logged
-
-
-
-
-
-
setAngleSysIdRoutine
-
public staticedu.wpi.first.wpilibj2.command.sysid.SysIdRoutinesetAngleSysIdRoutine(edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine.Config config,
- edu.wpi.first.wpilibj2.command.SubsystemBase swerveSubsystem,
- SwerveDrive swerveDrive)
-
Sets up the SysId runner and logger for the angle motors
-
-
Parameters:
-
config - - The SysIdRoutine.Config to use
-
swerveSubsystem - - the subsystem to add to requirements
-
swerveDrive - - the SwerveDrive from which to access motor info
Set the desired state of the swerve module. WARNING: If you are not using one of the functions from
- SwerveDrive you may screw up SwerveDrive.kinematics
-
-
Parameters:
-
desiredState - Desired swerve module state.
-
isOpenLoop - Whether to use open loop (direct percent) or direct velocity control.
-
force - Disables optimizations that prevent movement in the angle motor and forces the desired state
- onto the swerve module.
DutyCycle encoders such as "US Digital MA3 with PWM Output, the CTRE Mag Encoder, the Rev Hex Encoder, and the AM Mag
- Encoder." attached via a PWM lane.
-
DutyCycle encoders such as "US Digital MA3 with PWM Output, the CTRE Mag Encoder, the Rev Hex Encoder, and the AM Mag
- Encoder." attached via a PWM lane.
Tracks the previous loop's position as a Rotation2d.
-
-
-
-
-
velocity
-
privatedoublevelocity
-
The calculated velocity of the robot based on averaged IMU measurements.
-
-
-
-
-
-
-
-
-
Constructor Details
-
-
-
-
IMUVelocity
-
publicIMUVelocity(SwerveIMU gyro,
- double periodSeconds,
- int averagingTaps)
-
Constructor for the IMU Velocity.
-
-
Parameters:
-
gyro - The SwerveIMU gyro.
-
periodSeconds - The rate to collect measurements from the gyro, in the form (1/number of samples per second),
- make sure this does not exceed the update rate of your IMU.
-
averagingTaps - The number of samples to used for the moving average linear filter. Higher values will not
- allow the system to update to changes in velocity, lower values may create a less smooth signal. Expected taps
- will probably be ~2-8, with the goal of having the lowest smooth value.
Static factory for IMU Velocity. Supported IMU rates will be as quick as possible
- but will not exceed 100hz and will use 5 taps (supported IMUs are listed in swervelib's IMU folder).
- Other gyroscopes will default to 50hz and 5 taps. For custom rates please use the IMUVelocity constructor.
-
-
Parameters:
-
gyro - The SwerveIMU gyro.
-
Returns:
-
IMUVelocity for the given gyro with adjusted period readings for velocity.
-
-
-
-
-
-
update
-
privatevoidupdate()
-
Update the robot's rotational velocity based on the current gyro position.
-
-
-
-
-
getVelocity
-
publicdoublegetVelocity()
-
Get the robot's angular velocity based on averaged meaasurements from the IMU.
- Velocity is multiplied by 1e+6 (1,000,000) because the timestamps are in microseconds.
public staticdoublecalculateMetersPerRotation(double wheelDiameter,
- double driveGearRatio,
- double pulsePerRotation)
-
Calculate the meters per rotation for the integrated encoder. Calculation: (PI * WHEEL DIAMETER IN METERS) / (GEAR
- RATIO * ENCODER RESOLUTION)
-
-
Parameters:
-
wheelDiameter - Wheel diameter in meters.
-
driveGearRatio - The gear ratio of the drive motor.
-
pulsePerRotation - The number of encoder pulses per rotation. 1 if using an integrated encoder.
-
Returns:
-
Meters per rotation for the drive motor.
-
-
-
-
-
-
calculateMetersPerRotation
-
public staticdoublecalculateMetersPerRotation(double wheelDiameter,
- double driveGearRatio)
-
Calculate the meters per rotation for the integrated encoder. Calculation: (PI * WHEEL DIAMETER IN METERS) / (GEAR
- RATIO)
-
-
Parameters:
-
wheelDiameter - Wheel diameter in meters.
-
driveGearRatio - The gear ratio of the drive motor.
-
Returns:
-
Meters per rotation for the drive motor.
-
-
-
-
-
-
normalizeAngle
-
public staticdoublenormalizeAngle(double angle)
-
Normalize an angle to be within 0 to 360.
-
-
Parameters:
-
angle - Angle in degrees.
-
Returns:
-
Normalized angle in degrees.
-
-
-
-
-
-
applyDeadband
-
public staticdoubleapplyDeadband(double value,
- boolean scaled,
- double deadband)
-
Algebraically apply a deadband using a piece wise function.
-
-
Parameters:
-
value - value to apply deadband to.
-
scaled - Use algebra to determine deadband by starting the value at 0 past deadband.
-
deadband - The deadbnad to apply.
-
Returns:
-
Value with deadband applied.
-
-
-
-
-
-
createDriveFeedforward
-
public staticedu.wpi.first.math.controller.SimpleMotorFeedforwardcreateDriveFeedforward(double optimalVoltage,
- double maxSpeed,
- double wheelGripCoefficientOfFriction)
-
Create the drive feedforward for swerve modules.
-
-
Parameters:
-
optimalVoltage - Optimal voltage to calculate kV (voltage/max Velocity)
-
maxSpeed - Maximum velocity in meters per second to use for the feed forward, should be
- as close to physical max as possible.
-
wheelGripCoefficientOfFriction - Wheel grip coefficient of friction for kA (voltage/(cof*9.81))
-
Returns:
-
Drive feedforward for drive motor on a swerve module.
-
-
-
-
-
-
calculateDegreesPerSteeringRotation
-
public staticdoublecalculateDegreesPerSteeringRotation(double angleGearRatio,
- double pulsePerRotation)
-
Calculate the degrees per steering rotation for the integrated encoder. Encoder conversion values. Drive converts
- motor rotations to linear wheel distance and steering converts motor rotations to module azimuth.
-
-
Parameters:
-
angleGearRatio - The gear ratio of the steering motor.
-
pulsePerRotation - The number of pulses in a complete rotation for the encoder, 1 if integrated.
-
Returns:
-
Degrees per steering rotation for the angle motor.
-
-
-
-
-
-
calculateDegreesPerSteeringRotation
-
public staticdoublecalculateDegreesPerSteeringRotation(double angleGearRatio)
-
Calculate the degrees per steering rotation for the integrated encoder. Encoder conversion values. Drive converts
- motor rotations to linear wheel distance and steering converts motor rotations to module azimuth.
-
-
Parameters:
-
angleGearRatio - The gear ratio of the steering motor.
-
Returns:
-
Degrees per steering rotation for the angle motor.
-
-
-
-
-
-
calculateMaxAngularVelocity
-
public staticdoublecalculateMaxAngularVelocity(double maxSpeed,
- double furthestModuleX,
- double furthestModuleY)
-
Calculate the maximum angular velocity.
-
-
Parameters:
-
maxSpeed - Max speed of the robot in meters per second.
-
furthestModuleX - X of the furthest module in meters.
-
furthestModuleY - Y of the furthest module in meters.
-
Returns:
-
Maximum angular velocity in rad/s.
-
-
-
-
-
-
calculateMaxAcceleration
-
public staticdoublecalculateMaxAcceleration(double cof)
-
Calculate the practical maximum acceleration of the robot using the wheel coefficient of friction.
-
-
Parameters:
-
cof - Coefficient of Friction of the wheel grip tape.
Calculates the maximum acceleration allowed in a direction without tipping the robot. Reads arm position from
- NetworkTables and is passed the direction in question.
-
-
Parameters:
-
angle - The direction in which to calculate max acceleration, as a Rotation2d. Note that this is
- robot-relative.
-
matter - Matter that the robot is composed of in kg. (Includes chassis)
-
robotMass - The weight of the robot in kg. (Including manipulators, etc).
-
config - The swerve drive configuration.
-
Returns:
-
Maximum acceleration allowed in the robot direction.
-
-
-
-
-
-
PoseLog
-
public staticedu.wpi.first.math.geometry.Twist2dPoseLog(edu.wpi.first.math.geometry.Pose2d transform)
-
Logical inverse of the Pose exponential from 254. Taken from team 3181.
Get the fruthest module from center based on the module locations.
-
-
Parameters:
-
modules - Swerve module list.
-
front - True = furthest front, False = furthest back.
-
left - True = furthest left, False = furthest right.
-
Returns:
-
Module location which is the furthest from center and abides by parameters.
-
-
-
-
-
-
placeInAppropriate0To360Scope
-
public staticdoubleplaceInAppropriate0To360Scope(double scopeReference,
- double newAngle)
-
Put an angle within the 360 deg scope of a reference. For example, given a scope reference of 756 degrees, assumes
- the full scope is (720-1080), and places an angle of 22 degrees into it, returning 742 deg.
-
- A more formal definition: returns the closest angle n to scopeReference such that n is
- congruent to newAngle.
-
-
Parameters:
-
scopeReference - Current Angle (deg)
-
newAngle - Target Angle (deg)
-
Returns:
-
Closest angle within scope (deg)
-
-
-
-
-
-
antiJitter
-
public staticvoidantiJitter(edu.wpi.first.math.kinematics.SwerveModuleState moduleState,
- edu.wpi.first.math.kinematics.SwerveModuleState lastModuleState,
- double maxSpeed)
-
Perform anti-jitter within modules if the speed requested is too low.
-
-
Parameters:
-
moduleState - Current SwerveModuleState requested.
Returns the enum constant of this class with the specified name.
-The string must match exactly an identifier used to declare an
-enum constant in this class. (Extraneous whitespace characters are
-not permitted.)
-
-
Parameters:
-
name - the name of the enum constant to be returned.
nominalVoltage - Nominal voltage for operation to output to.
-
-
-
-
-
-
setCurrentLimit
-
publicvoidsetCurrentLimit(int currentLimit)
-
Set the current limit for the swerve drive motor, remember this may cause jumping if used in conjunction with
- voltage compensation. This is useful to protect the motor from current spikes.
nominalVoltage - Nominal voltage for operation to output to.
-
-
-
-
-
-
setCurrentLimit
-
publicvoidsetCurrentLimit(int currentLimit)
-
Set the current limit for the swerve drive motor, remember this may cause jumping if used in conjunction with
- voltage compensation. This is useful to protect the motor from current spikes.
Returns the enum constant of this class with the specified name.
-The string must match exactly an identifier used to declare an
-enum constant in this class. (Extraneous whitespace characters are
-not permitted.)
-
-
Parameters:
-
name - the name of the enum constant to be returned.
nominalVoltage - Nominal voltage for operation to output to.
-
-
-
-
-
-
setCurrentLimit
-
publicvoidsetCurrentLimit(int currentLimit)
-
Set the current limit for the swerve drive motor, remember this may cause jumping if used in conjunction with
- voltage compensation. This is useful to protect the motor from current spikes.
publicvoidconfigureCANStatusFrames(int CANStatus0,
- int CANStatus1,
- int CANStatus2,
- int CANStatus3,
- int CANStatus4,
- int CANStatus5,
- int CANStatus6)
-
Set the CAN status frames.
-
-
Parameters:
-
CANStatus0 - Applied Output, Faults, Sticky Faults, Is Follower
-
CANStatus1 - Motor Velocity, Motor Temperature, Motor Voltage, Motor Current
-
CANStatus2 - Motor Position
-
CANStatus3 - Analog Sensor Voltage, Analog Sensor Velocity, Analog Sensor Position
-
CANStatus4 - Alternate Encoder Velocity, Alternate Encoder Position
public abstractvoidconfigureIntegratedEncoder(double positionConversionFactor)
-
Configure the integrated encoder for the swerve module. Sets the conversion factors for position and velocity.
-
-
Parameters:
-
positionConversionFactor - The conversion factor to apply for position.
-
-
-
-
-
-
configurePIDF
-
public abstractvoidconfigurePIDF(PIDFConfig config)
-
Configure the PIDF values for the closed loop controller. 0 is disabled or off.
-
-
Parameters:
-
config - Configuration class holding the PIDF values.
-
-
-
-
-
-
configurePIDWrapping
-
public abstractvoidconfigurePIDWrapping(double minInput,
- double maxInput)
-
Configure the PID wrapping for the position closed loop controller.
-
-
Parameters:
-
minInput - Minimum PID input.
-
maxInput - Maximum PID input.
-
-
-
-
-
-
setMotorBrake
-
public abstractvoidsetMotorBrake(boolean isBrakeMode)
-
Set the idle mode.
-
-
Parameters:
-
isBrakeMode - Set the brake mode.
-
-
-
-
-
-
setInverted
-
public abstractvoidsetInverted(boolean inverted)
-
Set the motor to be inverted.
-
-
Parameters:
-
inverted - State of inversion.
-
-
-
-
-
-
burnFlash
-
public abstractvoidburnFlash()
-
Save the configurations from flash to EEPROM.
-
-
-
-
-
set
-
public abstractvoidset(double percentOutput)
-
Set the percentage output.
-
-
Parameters:
-
percentOutput - percent out for the motor controller.
-
-
-
-
-
-
setReference
-
public abstractvoidsetReference(double setpoint,
- double feedforward)
-
Set the closed loop PID controller reference point.
-
-
Parameters:
-
setpoint - Setpoint in meters per second or angle in degrees.
-
feedforward - Feedforward in volt-meter-per-second or kV.
-
-
-
-
-
-
setReference
-
public abstractvoidsetReference(double setpoint,
- double feedforward,
- double position)
-
Set the closed loop PID controller reference point.
-
-
Parameters:
-
setpoint - Setpoint in meters per second or angle in degrees.
-
feedforward - Feedforward in volt-meter-per-second or kV.
-
position - Only used on the angle motor, the position of the motor in degrees.
-
-
-
-
-
-
getVoltage
-
public abstractdoublegetVoltage()
-
Get the voltage output of the motor controller.
-
-
Returns:
-
Voltage output.
-
-
-
-
-
-
setVoltage
-
public abstractvoidsetVoltage(double voltage)
-
Set the voltage of the motor.
-
-
Parameters:
-
voltage - Voltage to set.
-
-
-
-
-
-
getAppliedOutput
-
public abstractdoublegetAppliedOutput()
-
Get the applied dutycycle output.
-
-
Returns:
-
Applied dutycycle output to the motor.
-
-
-
-
-
-
getVelocity
-
public abstractdoublegetVelocity()
-
Get the velocity of the integrated encoder.
-
-
Returns:
-
velocity in meters per second or degrees per second.
-
-
-
-
-
-
getPosition
-
public abstractdoublegetPosition()
-
Get the position of the integrated encoder.
-
-
Returns:
-
Position in meters or degrees.
-
-
-
-
-
-
setPosition
-
public abstractvoidsetPosition(double position)
-
Set the integrated encoder position.
-
-
Parameters:
-
position - Integrated encoder position. Should be angle in degrees or meters per second.
-
-
-
-
-
-
setVoltageCompensation
-
public abstractvoidsetVoltageCompensation(double nominalVoltage)
-
Set the voltage compensation for the swerve module motor.
-
-
Parameters:
-
nominalVoltage - Nominal voltage for operation to output to.
-
-
-
-
-
-
setCurrentLimit
-
public abstractvoidsetCurrentLimit(int currentLimit)
-
Set the current limit for the swerve drive motor, remember this may cause jumping if used in conjunction with
- voltage compensation. This is useful to protect the motor from current spikes.
-
-
Parameters:
-
currentLimit - Current limit in AMPS at free speed.
-
-
-
-
-
-
setLoopRampRate
-
public abstractvoidsetLoopRampRate(double rampRate)
-
Set the maximum rate the open/closed loop output can change by.
-
-
Parameters:
-
rampRate - Time in seconds to go from 0 to full throttle.
configureCANStatusFrames(int CANStatus1,
- int CANStatus2,
- int CANStatus3,
- int CANStatus4,
- int CANStatus8,
- int CANStatus10,
- int CANStatus12,
- int CANStatus13,
- int CANStatus14,
- int CANStatus21,
- int CANStatusCurrent)
CANStatus1 - Applied Motor Output, Fault Information, Limit Switch Information
-
-
-
-
-
-
configureCANStatusFrames
-
publicvoidconfigureCANStatusFrames(int CANStatus1,
- int CANStatus2,
- int CANStatus3,
- int CANStatus4,
- int CANStatus8,
- int CANStatus10,
- int CANStatus12,
- int CANStatus13,
- int CANStatus14,
- int CANStatus21,
- int CANStatusCurrent)
-
Set the CAN status frames.
-
-
Parameters:
-
CANStatus1 - Applied Motor Output, Fault Information, Limit Switch Information
-
CANStatus2 - Selected Sensor Position (PID 0), Selected Sensor Velocity (PID 0), Brushed Supply Current
- Measurement, Sticky Fault Information
-
CANStatus3 - Quadrature Information
-
CANStatus4 - Analog Input, Supply Battery Voltage, Controller Temperature
-
CANStatus8 - Pulse Width Information
-
CANStatus10 - Motion Profiling/Motion Magic Information
nominalVoltage - Nominal voltage for operation to output to.
-
-
-
-
-
-
setCurrentLimit
-
publicvoidsetCurrentLimit(int currentLimit)
-
Set the current limit for the swerve drive motor, remember this may cause jumping if used in conjunction with
- voltage compensation. This is useful to protect the motor from current spikes.
configureCANStatusFrames(int CANStatus1,
- int CANStatus2,
- int CANStatus3,
- int CANStatus4,
- int CANStatus8,
- int CANStatus10,
- int CANStatus12,
- int CANStatus13,
- int CANStatus14,
- int CANStatus21,
- int CANStatusCurrent)
CANStatus1 - Applied Motor Output, Fault Information, Limit Switch Information
-
-
-
-
-
-
configureCANStatusFrames
-
publicvoidconfigureCANStatusFrames(int CANStatus1,
- int CANStatus2,
- int CANStatus3,
- int CANStatus4,
- int CANStatus8,
- int CANStatus10,
- int CANStatus12,
- int CANStatus13,
- int CANStatus14,
- int CANStatus21,
- int CANStatusCurrent)
-
Set the CAN status frames.
-
-
Parameters:
-
CANStatus1 - Applied Motor Output, Fault Information, Limit Switch Information
-
CANStatus2 - Selected Sensor Position (PID 0), Selected Sensor Velocity (PID 0), Brushed Supply Current
- Measurement, Sticky Fault Information
-
CANStatus3 - Quadrature Information
-
CANStatus4 - Analog Input, Supply Battery Voltage, Controller Temperature
-
CANStatus8 - Pulse Width Information
-
CANStatus10 - Motion Profiling/Motion Magic Information
nominalVoltage - Nominal voltage for operation to output to.
-
-
-
-
-
-
setCurrentLimit
-
publicvoidsetCurrentLimit(int currentLimit)
-
Set the current limit for the swerve drive motor, remember this may cause jumping if used in conjunction with
- voltage compensation. This is useful to protect the motor from current spikes.
Construct the swerve controller configuration. Assumes hypotenuse deadband of 0.5 (minimum radius for angle to be
- set on angle joystick is .5 of the controller).
-
-
Parameters:
-
driveCfg - Drive configuration.
-
headingPIDF - Heading PIDF configuration.
-
maxSpeedMPS - Maximum speed in meters per second for angular velocity, remember if you have feet per second
- use Units.feetToMeters(double).
Construct the swerve module physical characteristics. Assume coefficient of friction is 1.19 (taken from blue
- nitrile on carpet from Studica) and optimal voltage is 12v. Assumes the drive motor current limit is 40A, and the
- angle motor current limit is 20A.
Location JSON parsed class. Used to access the JSON data. Module locations, in inches, as distances to the center of
- the robot. +x is towards the robot front, and +y is towards robot left.
High priority alert - displayed first on the dashboard with a red "X" symbol. Use this type for problems which
- will seriously affect the robot's functionality and thus require immediate attention.
High priority alert - displayed first on the dashboard with a red "X" symbol. Use this type for problems which
- will seriously affect the robot's functionality and thus require immediate attention. Trace printed to driver
- station console.
Medium priority alert - displayed second on the dashboard with a yellow "!" symbol. Use this type for problems
- which could affect the robot's functionality but do not necessarily require immediate attention.
Medium priority alert - displayed second on the dashboard with a yellow "!" symbol. Use this type for problems
- which could affect the robot's functionality but do not necessarily require immediate attention. Trace printed to
- driver station console.
Low priority alert - displayed last on the dashboard with a green "i" symbol. Use this type for problems which
- are unlikely to affect the robot's functionality, or any other alerts which do not fall under "ERROR" or
- "WARNING".
Returns the enum constant of this class with the specified name.
-The string must match exactly an identifier used to declare an
-enum constant in this class. (Extraneous whitespace characters are
-not permitted.)
-
-
Parameters:
-
name - the name of the enum constant to be returned.
Creates a new Alert in the default group - "Alerts". If this is the first to be instantiated, the appropriate
- entries will be added to NetworkTables.
-
-
Parameters:
-
text - Text to be displayed when the alert is active.
Returns the enum constant of this class with the specified name.
-The string must match exactly an identifier used to declare an
-enum constant in this class. (Extraneous whitespace characters are
-not permitted.)
-
-
Parameters:
-
name - the name of the enum constant to be returned.
The direction the robot should be facing when the "Robot Rotation" is zero or blank. This option is often useful to
- align with odometry data or match videos. 'up', 'right', 'down' or 'left'
-
-
-
-
-
maxAngularVelocity
-
public staticdoublemaxAngularVelocity
-
The maximum achievable angular velocity of the robot. This is used to visualize the angular velocity from the
- chassis speeds properties.
-
-
-
-
-
measuredChassisSpeeds
-
public staticdouble[]measuredChassisSpeeds
-
The maximum achievable angular velocity of the robot. This is used to visualize the angular velocity from the
- chassis speeds properties.
-
-
-
-
-
desiredChassisSpeeds
-
public staticdouble[]desiredChassisSpeeds
-
Describes the desired forward, sideways and angular velocity of the robot.