2023-02-13 14:37:05 -06:00
<!DOCTYPE HTML>
< html lang = "en" >
< head >
2024-02-12 18:59:40 -06:00
<!-- Generated by javadoc (17) on Mon Feb 12 18:58:20 CST 2024 -->
2024-01-15 14:39:17 -06:00
< title > SwerveMath< / title >
2023-02-14 22:03:02 -06:00
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
2023-02-13 14:37:05 -06:00
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
2024-02-12 18:59:40 -06:00
< meta name = "dc.created" content = "2024-02-12" >
2023-02-14 22:03:02 -06:00
< meta name = "description" content = "declaration: package: swervelib.math, class: SwerveMath" >
< meta name = "generator" content = "javadoc/ClassWriterImpl" >
2023-02-13 15:03:55 -06:00
< link rel = "stylesheet" type = "text/css" href = "../../stylesheet.css" title = "Style" >
2023-02-14 22:03:02 -06:00
< link rel = "stylesheet" type = "text/css" href = "../../script-dir/jquery-ui.min.css" title = "Style" >
2023-02-13 15:03:55 -06:00
< link rel = "stylesheet" type = "text/css" href = "../../jquery-ui.overrides.css" title = "Style" >
< script type = "text/javascript" src = "../../script.js" > < / script >
2024-01-15 14:39:17 -06:00
< script type = "text/javascript" src = "../../script-dir/jquery-3.5.1.min.js" > < / script >
2023-02-14 22:03:02 -06:00
< script type = "text/javascript" src = "../../script-dir/jquery-ui.min.js" > < / script >
2023-02-13 14:37:05 -06:00
< / head >
2023-02-14 22:03:02 -06:00
< body class = "class-declaration-page" >
< script type = "text/javascript" > v a r e v e n R o w C o l o r = " e v e n - r o w - c o l o r " ;
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
2023-02-13 15:03:55 -06:00
var pathtoroot = "../../";
2023-02-13 14:37:05 -06:00
loadScripts(document, 'script');< / script >
< noscript >
< div > JavaScript is disabled on your browser.< / div >
< / noscript >
2023-02-14 22:03:02 -06:00
< div class = "flex-box" >
< header role = "banner" class = "flex-header" >
2023-02-13 14:37:05 -06:00
< nav role = "navigation" >
<!-- ========= START OF TOP NAVBAR ======= -->
2023-02-14 22:03:02 -06:00
< div class = "top-nav" id = "navbar-top" >
< div class = "skip-nav" > < a href = "#skip-navbar-top" title = "Skip navigation links" > Skip navigation links< / a > < / div >
< ul id = "navbar-top-firstrow" class = "nav-list" title = "Navigation" >
2023-02-13 15:03:55 -06:00
< li > < a href = "../../index.html" > Overview< / a > < / li >
2023-02-13 14:37:05 -06:00
< li > < a href = "package-summary.html" > Package< / a > < / li >
2023-02-14 22:03:02 -06:00
< li class = "nav-bar-cell1-rev" > Class< / li >
2023-02-13 14:37:05 -06:00
< li > < a href = "package-tree.html" > Tree< / a > < / li >
2024-01-15 14:39:17 -06:00
< li > < a href = "../../index-files/index-1.html" > Index< / a > < / li >
2023-02-14 22:03:02 -06:00
< li > < a href = "../../help-doc.html#class" > Help< / a > < / li >
2023-02-13 14:37:05 -06:00
< / ul >
< / div >
2023-02-14 22:03:02 -06:00
< div class = "sub-nav" >
2023-02-13 14:37:05 -06:00
< div >
2023-02-14 22:03:02 -06:00
< ul class = "sub-nav-list" >
2023-02-13 14:37:05 -06:00
< li > Summary: < / li >
< li > Nested | < / li >
< li > Field | < / li >
2023-02-14 22:03:02 -06:00
< li > < a href = "#constructor-summary" > Constr< / a > | < / li >
< li > < a href = "#method-summary" > Method< / a > < / li >
2023-02-13 14:37:05 -06:00
< / ul >
2023-02-14 22:03:02 -06:00
< ul class = "sub-nav-list" >
2023-02-13 14:37:05 -06:00
< li > Detail: < / li >
< li > Field | < / li >
2023-02-14 22:03:02 -06:00
< li > < a href = "#constructor-detail" > Constr< / a > | < / li >
< li > < a href = "#method-detail" > Method< / a > < / li >
2023-02-13 14:37:05 -06:00
< / ul >
< / div >
2023-02-14 22:03:02 -06:00
< div class = "nav-list-search" > < label for = "search-input" > SEARCH:< / label >
< input type = "text" id = "search-input" value = "search" disabled = "disabled" >
< input type = "reset" id = "reset-button" value = "reset" disabled = "disabled" >
2023-02-13 14:37:05 -06:00
< / div >
2023-02-14 22:03:02 -06:00
< / div >
<!-- ========= END OF TOP NAVBAR ========= -->
< span class = "skip-nav" id = "skip-navbar-top" > < / span > < / nav >
2023-02-13 14:37:05 -06:00
< / header >
2023-02-14 22:03:02 -06:00
< div class = "flex-content" >
2023-02-13 14:37:05 -06:00
< main role = "main" >
2023-02-14 22:03:02 -06:00
<!-- ======== START OF CLASS DATA ======== -->
2023-02-13 14:37:05 -06:00
< div class = "header" >
2023-02-14 22:03:02 -06:00
< div class = "sub-title" > < span class = "package-label-in-type" > Package< / span > < a href = "package-summary.html" > swervelib.math< / a > < / div >
< h1 title = "Class SwerveMath" class = "title" > Class SwerveMath< / h1 >
2023-02-13 14:37:05 -06:00
< / div >
2023-02-14 22:03:02 -06:00
< div class = "inheritance" title = "Inheritance Tree" > < a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title = "class or interface in java.lang" class = "external-link" > java.lang.Object< / a >
< div class = "inheritance" > swervelib.math.SwerveMath< / div >
< / div >
< section class = "class-description" id = "class-description" >
2023-02-13 14:37:05 -06:00
< hr >
2023-02-14 22:03:02 -06:00
< div class = "type-signature" > < span class = "modifiers" > public class < / span > < span class = "element-name type-name-label" > SwerveMath< / span >
< span class = "extends-implements" > extends < a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title = "class or interface in java.lang" class = "external-link" > Object< / a > < / span > < / div >
2023-02-13 14:37:05 -06:00
< div class = "block" > Mathematical functions which pertain to swerve drive.< / div >
2023-02-14 22:03:02 -06:00
< / section >
< section class = "summary" >
< ul class = "summary-list" >
2023-02-13 14:37:05 -06:00
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
2023-02-14 22:03:02 -06:00
< li >
< section class = "constructor-summary" id = "constructor-summary" >
< h2 > Constructor Summary< / h2 >
< div class = "caption" > < span > Constructors< / span > < / div >
< div class = "summary-table two-column-summary" >
< div class = "table-header col-first" > Constructor< / div >
< div class = "table-header col-last" > Description< / div >
< div class = "col-constructor-name even-row-color" > < code > < a href = "#%3Cinit%3E()" class = "member-name-link" > SwerveMath< / a > ()< / code > < / div >
< div class = "col-last even-row-color" > < / div >
< / div >
2023-02-13 14:37:05 -06:00
< / section >
2023-02-14 22:03:02 -06:00
< / li >
2023-02-13 14:37:05 -06:00
<!-- ========== METHOD SUMMARY =========== -->
2023-02-14 22:03:02 -06:00
< li >
< section class = "method-summary" id = "method-summary" >
< h2 > Method Summary< / h2 >
< div id = "method-summary-table" >
< div class = "table-tabs" role = "tablist" aria-orientation = "horizontal" > < button id = "method-summary-table-tab0" role = "tab" aria-selected = "true" aria-controls = "method-summary-table.tabpanel" tabindex = "0" onkeydown = "switchTab(event)" onclick = "show('method-summary-table', 'method-summary-table', 3)" class = "active-table-tab" > All Methods< / button > < button id = "method-summary-table-tab1" role = "tab" aria-selected = "false" aria-controls = "method-summary-table.tabpanel" tabindex = "-1" onkeydown = "switchTab(event)" onclick = "show('method-summary-table', 'method-summary-table-tab1', 3)" class = "table-tab" > Static Methods< / button > < button id = "method-summary-table-tab4" role = "tab" aria-selected = "false" aria-controls = "method-summary-table.tabpanel" tabindex = "-1" onkeydown = "switchTab(event)" onclick = "show('method-summary-table', 'method-summary-table-tab4', 3)" class = "table-tab" > Concrete Methods< / button > < / div >
< div id = "method-summary-table.tabpanel" role = "tabpanel" >
< div class = "summary-table three-column-summary" aria-labelledby = "method-summary-table-tab0" >
< div class = "table-header col-first" > Modifier and Type< / div >
< div class = "table-header col-second" > Method< / div >
< div class = "table-header col-last" > Description< / div >
2023-03-29 07:24:24 -05:00
< div class = "col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static void< / code > < / div >
2023-08-29 21:03:58 -05:00
< div class = "col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#antiJitter(edu.wpi.first.math.kinematics.SwerveModuleState,edu.wpi.first.math.kinematics.SwerveModuleState,double)" class = "member-name-link" > antiJitter< / a > < wbr > (edu.wpi.first.math.kinematics.SwerveModuleState moduleState,
edu.wpi.first.math.kinematics.SwerveModuleState lastModuleState,
2023-03-29 07:24:24 -05:00
double maxSpeed)< / code > < / div >
< div class = "col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
< div class = "block" > Perform anti-jitter within modules if the speed requested is too low.< / div >
< / div >
< div class = "col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static double< / code > < / div >
< div class = "col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#applyDeadband(double,boolean,double)" class = "member-name-link" > applyDeadband< / a > < wbr > (double value,
2023-02-14 22:03:02 -06:00
boolean scaled,
double deadband)< / code > < / div >
2023-03-29 07:24:24 -05:00
< div class = "col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
2023-02-13 14:37:05 -06:00
< div class = "block" > Algebraically apply a deadband using a piece wise function.< / div >
2023-02-14 22:03:02 -06:00
< / div >
2024-01-15 14:39:17 -06:00
< div class = "col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > private static double< / code > < / div >
< div class = "col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d,java.util.List,double,swervelib.parser.SwerveDriveConfiguration)" class = "member-name-link" > calcMaxAccel< / a > < wbr > (edu.wpi.first.math.geometry.Rotation2d angle,
< a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title = "class or interface in java.util" class = "external-link" > List< / a > < < a href = "Matter.html" title = "class in swervelib.math" > Matter< / a > > matter,
double robotMass,
< a href = "../parser/SwerveDriveConfiguration.html" title = "class in swervelib.parser" > SwerveDriveConfiguration< / a > config)< / code > < / div >
2023-03-29 07:24:24 -05:00
< div class = "col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
2024-01-15 14:39:17 -06:00
< div class = "block" > Calculates the maximum acceleration allowed in a direction without tipping the robot.< / div >
2023-02-14 22:03:02 -06:00
< / div >
2023-03-29 07:24:24 -05:00
< div class = "col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static double< / code > < / div >
2024-01-18 17:54:43 -06:00
< div class = "col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#calculateDegreesPerSteeringRotation(double)" class = "member-name-link" > calculateDegreesPerSteeringRotation< / a > < wbr > (double angleGearRatio)< / code > < / div >
2023-03-29 07:24:24 -05:00
< div class = "col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
2024-01-15 14:39:17 -06:00
< div class = "block" > Calculate the degrees per steering rotation for the integrated encoder.< / div >
2023-08-29 19:59:07 -05:00
< / div >
2024-01-15 14:37:13 -06:00
< div class = "col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static double< / code > < / div >
2024-01-18 17:54:43 -06:00
< div class = "col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#calculateDegreesPerSteeringRotation(double,double)" class = "member-name-link" > calculateDegreesPerSteeringRotation< / a > < wbr > (double angleGearRatio,
double pulsePerRotation)< / code > < / div >
2024-01-15 14:39:17 -06:00
< div class = "col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
2024-01-18 17:54:43 -06:00
< div class = "block" > Calculate the degrees per steering rotation for the integrated encoder.< / div >
2024-01-15 14:39:17 -06:00
< / div >
< div class = "col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static double< / code > < / div >
2024-01-18 17:54:43 -06:00
< div class = "col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#calculateMaxAcceleration(double)" class = "member-name-link" > calculateMaxAcceleration< / a > < wbr > (double cof)< / code > < / div >
< div class = "col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
< div class = "block" > Calculate the practical maximum acceleration of the robot using the wheel coefficient of friction.< / div >
< / div >
< div class = "col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static double< / code > < / div >
< div class = "col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#calculateMaxAcceleration(double,double,double,double,double)" class = "member-name-link" > calculateMaxAcceleration< / a > < wbr > (double stallTorqueNm,
2023-02-14 22:03:02 -06:00
double gearRatio,
double moduleCount,
double wheelDiameter,
double robotMass)< / code > < / div >
2024-01-18 17:54:43 -06:00
< div class = "col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
2023-02-13 14:37:05 -06:00
< div class = "block" > Calculate the maximum theoretical acceleration without friction.< / div >
2023-02-14 22:03:02 -06:00
< / div >
2024-01-18 17:54:43 -06:00
< div class = "col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static double< / code > < / div >
< div class = "col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#calculateMaxAngularVelocity(double,double,double)" class = "member-name-link" > calculateMaxAngularVelocity< / a > < wbr > (double maxSpeed,
2023-02-14 22:03:02 -06:00
double furthestModuleX,
double furthestModuleY)< / code > < / div >
2024-01-18 17:54:43 -06:00
< div class = "col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
2023-02-13 14:37:05 -06:00
< div class = "block" > Calculate the maximum angular velocity.< / div >
2023-02-14 22:03:02 -06:00
< / div >
2024-01-18 17:54:43 -06:00
< div class = "col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static double< / code > < / div >
< div class = "col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#calculateMetersPerRotation(double,double)" class = "member-name-link" > calculateMetersPerRotation< / a > < wbr > (double wheelDiameter,
double driveGearRatio)< / code > < / div >
< div class = "col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
< div class = "block" > Calculate the meters per rotation for the integrated encoder.< / div >
< / div >
2024-01-15 14:39:17 -06:00
< div class = "col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static double< / code > < / div >
< div class = "col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#calculateMetersPerRotation(double,double,double)" class = "member-name-link" > calculateMetersPerRotation< / a > < wbr > (double wheelDiameter,
2023-02-14 22:03:02 -06:00
double driveGearRatio,
double pulsePerRotation)< / code > < / div >
2024-01-15 14:39:17 -06:00
< div class = "col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
2023-02-13 14:37:05 -06:00
< div class = "block" > Calculate the meters per rotation for the integrated encoder.< / div >
2023-02-14 22:03:02 -06:00
< / div >
2024-01-15 14:39:17 -06:00
< div class = "col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static edu.wpi.first.math.controller.SimpleMotorFeedforward< / code > < / div >
< div class = "col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#createDriveFeedforward(double,double,double)" class = "member-name-link" > createDriveFeedforward< / a > < wbr > (double optimalVoltage,
2023-11-09 18:54:46 -06:00
double maxSpeed,
double wheelGripCoefficientOfFriction)< / code > < / div >
2024-01-15 14:39:17 -06:00
< div class = "col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
2023-11-09 18:54:46 -06:00
< div class = "block" > Create the drive feedforward for swerve modules.< / div >
< / div >
2024-01-15 14:39:17 -06:00
< div class = "col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static < a href = "../parser/SwerveModuleConfiguration.html" title = "class in swervelib.parser" > SwerveModuleConfiguration< / a > < / code > < / div >
< div class = "col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#getSwerveModule(swervelib.SwerveModule%5B%5D,boolean,boolean)" class = "member-name-link" > getSwerveModule< / a > < wbr > (< a href = "../SwerveModule.html" title = "class in swervelib" > SwerveModule< / a > [] modules,
2023-02-20 22:04:54 -06:00
boolean front,
boolean left)< / code > < / div >
2024-01-15 14:39:17 -06:00
< div class = "col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
2023-02-20 22:04:54 -06:00
< div class = "block" > Get the fruthest module from center based on the module locations.< / div >
< / div >
2024-01-15 14:39:17 -06:00
< div class = "col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static edu.wpi.first.math.geometry.Translation2d< / code > < / div >
< div class = "col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#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)" class = "member-name-link" > limitVelocity< / a > < wbr > (edu.wpi.first.math.geometry.Translation2d commandedVelocity,
2023-02-14 22:03:02 -06:00
edu.wpi.first.math.kinematics.ChassisSpeeds fieldVelocity,
edu.wpi.first.math.geometry.Pose2d robotPose,
double loopTime,
double robotMass,
2023-02-24 22:10:33 -06:00
< a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title = "class or interface in java.util" class = "external-link" > List< / a > < < a href = "Matter.html" title = "class in swervelib.math" > Matter< / a > > matter,
2023-02-14 22:03:02 -06:00
< a href = "../parser/SwerveDriveConfiguration.html" title = "class in swervelib.parser" > SwerveDriveConfiguration< / a > config)< / code > < / div >
2023-11-09 18:54:46 -06:00
< div class = "col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
2024-01-15 14:39:17 -06:00
< div class = "block" > Limits a commanded velocity to prevent exceeding the maximum acceleration given by < a href = "#calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d,java.util.List,double,swervelib.parser.SwerveDriveConfiguration)" > < code > calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d, java.util.List< swervelib.math.Matter> , double, swervelib.parser.SwerveDriveConfiguration)< / code > < / a > .< / div >
2023-08-29 19:59:07 -05:00
< / div >
2024-01-15 14:37:13 -06:00
< div class = "col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static double< / code > < / div >
2024-01-15 14:39:17 -06:00
< div class = "col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#normalizeAngle(double)" class = "member-name-link" > normalizeAngle< / a > < wbr > (double angle)< / code > < / div >
2023-11-09 18:54:46 -06:00
< div class = "col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
2024-01-15 14:39:17 -06:00
< div class = "block" > Normalize an angle to be within 0 to 360.< / div >
2024-01-15 14:37:13 -06:00
< / div >
2024-01-15 14:39:17 -06:00
< div class = "col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static double< / code > < / div >
< div class = "col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#placeInAppropriate0To360Scope(double,double)" class = "member-name-link" > placeInAppropriate0To360Scope< / a > < wbr > (double scopeReference,
double newAngle)< / code > < / div >
2024-01-15 14:37:13 -06:00
< div class = "col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
2024-01-15 14:39:17 -06:00
< div class = "block" > Put an angle within the 360 deg scope of a reference.< / div >
< / div >
< div class = "col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > static edu.wpi.first.math.geometry.Twist2d< / code > < / div >
< div class = "col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" > < code > < a href = "#PoseLog(edu.wpi.first.math.geometry.Pose2d)" class = "member-name-link" > PoseLog< / a > < wbr > (edu.wpi.first.math.geometry.Pose2d transform)< / code > < / div >
< div class = "col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4" >
2023-04-08 12:31:07 -05:00
< div class = "block" > Logical inverse of the Pose exponential from 254.< / div >
< / div >
2023-02-14 22:03:02 -06:00
< / div >
< / div >
< / div >
< div class = "inherited-list" >
< h3 id = "methods-inherited-from-class-java.lang.Object" > Methods inherited from class java.lang.< a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title = "class or interface in java.lang" class = "external-link" > Object< / a > < / h3 >
< code > < a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title = "class or interface in java.lang" class = "external-link" > clone< / a > , < a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title = "class or interface in java.lang" class = "external-link" > equals< / a > , < a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title = "class or interface in java.lang" class = "external-link" > finalize< / a > , < a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title = "class or interface in java.lang" class = "external-link" > getClass< / a > , < a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title = "class or interface in java.lang" class = "external-link" > hashCode< / a > , < a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title = "class or interface in java.lang" class = "external-link" > notify< / a > , < a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title = "class or interface in java.lang" class = "external-link" > notifyAll< / a > , < a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title = "class or interface in java.lang" class = "external-link" > toString< / a > , < a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title = "class or interface in java.lang" class = "external-link" > wait< / a > , < a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title = "class or interface in java.lang" class = "external-link" > wait< / a > , < a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title = "class or interface in java.lang" class = "external-link" > wait< / a > < / code > < / div >
2023-02-13 14:37:05 -06:00
< / section >
< / li >
< / ul >
2023-02-14 22:03:02 -06:00
< / section >
< section class = "details" >
< ul class = "details-list" >
2023-02-13 14:37:05 -06:00
<!-- ========= CONSTRUCTOR DETAIL ======== -->
2023-02-14 22:03:02 -06:00
< li >
< section class = "constructor-details" id = "constructor-detail" >
< h2 > Constructor Details< / h2 >
< ul class = "member-list" >
< li >
< section class = "detail" id = "<init>()" >
< h3 > SwerveMath< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public< / span > < span class = "element-name" > SwerveMath< / span > ()< / div >
< / section >
2023-02-13 14:37:05 -06:00
< / li >
< / ul >
< / section >
2023-02-14 22:03:02 -06:00
< / li >
2023-02-13 14:37:05 -06:00
<!-- ============ METHOD DETAIL ========== -->
2023-02-14 22:03:02 -06:00
< li >
< section class = "method-details" id = "method-detail" >
< h2 > Method Details< / h2 >
< ul class = "member-list" >
< li >
< section class = "detail" id = "calculateMetersPerRotation(double,double,double)" >
< h3 > calculateMetersPerRotation< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > double< / span > < span class = "element-name" > calculateMetersPerRotation< / span > < wbr > < span class = "parameters" > (double wheelDiameter,
double driveGearRatio,
double pulsePerRotation)< / span > < / div >
2023-12-05 16:25:42 -06:00
< div class = "block" > Calculate the meters per rotation for the integrated encoder. Calculation: (PI * WHEEL DIAMETER IN METERS) / (GEAR
RATIO * ENCODER RESOLUTION)< / div >
2023-02-14 22:03:02 -06:00
< dl class = "notes" >
< dt > Parameters:< / dt >
2023-02-13 14:37:05 -06:00
< dd > < code > wheelDiameter< / code > - Wheel diameter in meters.< / dd >
< dd > < code > driveGearRatio< / code > - The gear ratio of the drive motor.< / dd >
2023-08-29 19:59:07 -05:00
< dd > < code > pulsePerRotation< / code > - The number of encoder pulses per rotation. 1 if using an integrated encoder.< / dd >
2023-02-14 22:03:02 -06:00
< dt > Returns:< / dt >
2023-02-13 14:37:05 -06:00
< dd > Meters per rotation for the drive motor.< / dd >
< / dl >
2023-02-14 22:03:02 -06:00
< / section >
2023-02-13 14:37:05 -06:00
< / li >
2023-02-14 22:03:02 -06:00
< li >
2024-01-18 17:54:43 -06:00
< section class = "detail" id = "calculateMetersPerRotation(double,double)" >
< h3 > calculateMetersPerRotation< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > double< / span > < span class = "element-name" > calculateMetersPerRotation< / span > < wbr > < span class = "parameters" > (double wheelDiameter,
double driveGearRatio)< / span > < / div >
< div class = "block" > Calculate the meters per rotation for the integrated encoder. Calculation: (PI * WHEEL DIAMETER IN METERS) / (GEAR
RATIO)< / div >
< dl class = "notes" >
< dt > Parameters:< / dt >
< dd > < code > wheelDiameter< / code > - Wheel diameter in meters.< / dd >
< dd > < code > driveGearRatio< / code > - The gear ratio of the drive motor.< / dd >
< dt > Returns:< / dt >
< dd > Meters per rotation for the drive motor.< / dd >
< / dl >
< / section >
< / li >
< li >
2023-02-16 21:21:26 -06:00
< section class = "detail" id = "normalizeAngle(double)" >
< h3 > normalizeAngle< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > double< / span > < span class = "element-name" > normalizeAngle< / span > < wbr > < span class = "parameters" > (double angle)< / span > < / div >
< div class = "block" > Normalize an angle to be within 0 to 360.< / div >
< dl class = "notes" >
< dt > Parameters:< / dt >
< dd > < code > angle< / code > - Angle in degrees.< / dd >
< dt > Returns:< / dt >
< dd > Normalized angle in degrees.< / dd >
< / dl >
< / section >
< / li >
< li >
2023-02-14 22:03:02 -06:00
< section class = "detail" id = "applyDeadband(double,boolean,double)" >
< h3 > applyDeadband< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > double< / span > < span class = "element-name" > applyDeadband< / span > < wbr > < span class = "parameters" > (double value,
boolean scaled,
double deadband)< / span > < / div >
2023-02-13 14:37:05 -06:00
< div class = "block" > Algebraically apply a deadband using a piece wise function.< / div >
2023-02-14 22:03:02 -06:00
< dl class = "notes" >
< dt > Parameters:< / dt >
2023-02-13 14:37:05 -06:00
< dd > < code > value< / code > - value to apply deadband to.< / dd >
< dd > < code > scaled< / code > - Use algebra to determine deadband by starting the value at 0 past deadband.< / dd >
< dd > < code > deadband< / code > - The deadbnad to apply.< / dd >
2023-02-14 22:03:02 -06:00
< dt > Returns:< / dt >
2023-02-13 14:37:05 -06:00
< dd > Value with deadband applied.< / dd >
< / dl >
2023-02-14 22:03:02 -06:00
< / section >
2023-02-13 14:37:05 -06:00
< / li >
2023-02-14 22:03:02 -06:00
< li >
2023-11-09 18:54:46 -06:00
< section class = "detail" id = "createDriveFeedforward(double,double,double)" >
< h3 > createDriveFeedforward< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > edu.wpi.first.math.controller.SimpleMotorFeedforward< / span > < span class = "element-name" > createDriveFeedforward< / span > < wbr > < span class = "parameters" > (double optimalVoltage,
double maxSpeed,
double wheelGripCoefficientOfFriction)< / span > < / div >
< div class = "block" > Create the drive feedforward for swerve modules.< / div >
< dl class = "notes" >
< dt > Parameters:< / dt >
< dd > < code > optimalVoltage< / code > - Optimal voltage to calculate kV (voltage/max Velocity)< / dd >
< dd > < code > maxSpeed< / code > - Maximum velocity in meters per second to use for the feed forward, should be
as close to physical max as possible.< / dd >
< dd > < code > wheelGripCoefficientOfFriction< / code > - Wheel grip coefficient of friction for kA (voltage/(cof*9.81))< / dd >
< dt > Returns:< / dt >
< dd > Drive feedforward for drive motor on a swerve module.< / dd >
< / dl >
< / section >
< / li >
< li >
2023-02-14 22:03:02 -06:00
< section class = "detail" id = "calculateDegreesPerSteeringRotation(double,double)" >
< h3 > calculateDegreesPerSteeringRotation< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > double< / span > < span class = "element-name" > calculateDegreesPerSteeringRotation< / span > < wbr > < span class = "parameters" > (double angleGearRatio,
double pulsePerRotation)< / span > < / div >
2023-08-29 19:59:07 -05:00
< div class = "block" > 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.< / div >
2023-02-14 22:03:02 -06:00
< dl class = "notes" >
< dt > Parameters:< / dt >
2023-02-13 14:37:05 -06:00
< dd > < code > angleGearRatio< / code > - The gear ratio of the steering motor.< / dd >
2023-08-29 19:59:07 -05:00
< dd > < code > pulsePerRotation< / code > - The number of pulses in a complete rotation for the encoder, 1 if integrated.< / dd >
2023-02-14 22:03:02 -06:00
< dt > Returns:< / dt >
2023-02-13 14:37:05 -06:00
< dd > Degrees per steering rotation for the angle motor.< / dd >
< / dl >
2023-02-14 22:03:02 -06:00
< / section >
2023-02-13 14:37:05 -06:00
< / li >
2023-02-14 22:03:02 -06:00
< li >
2024-01-18 17:54:43 -06:00
< section class = "detail" id = "calculateDegreesPerSteeringRotation(double)" >
< h3 > calculateDegreesPerSteeringRotation< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > double< / span > < span class = "element-name" > calculateDegreesPerSteeringRotation< / span > < wbr > < span class = "parameters" > (double angleGearRatio)< / span > < / div >
< div class = "block" > 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.< / div >
< dl class = "notes" >
< dt > Parameters:< / dt >
< dd > < code > angleGearRatio< / code > - The gear ratio of the steering motor.< / dd >
< dt > Returns:< / dt >
< dd > Degrees per steering rotation for the angle motor.< / dd >
< / dl >
< / section >
< / li >
< li >
2023-02-14 22:03:02 -06:00
< section class = "detail" id = "calculateMaxAngularVelocity(double,double,double)" >
< h3 > calculateMaxAngularVelocity< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > double< / span > < span class = "element-name" > calculateMaxAngularVelocity< / span > < wbr > < span class = "parameters" > (double maxSpeed,
double furthestModuleX,
double furthestModuleY)< / span > < / div >
2023-02-13 14:37:05 -06:00
< div class = "block" > Calculate the maximum angular velocity.< / div >
2023-02-14 22:03:02 -06:00
< dl class = "notes" >
< dt > Parameters:< / dt >
2023-02-13 14:37:05 -06:00
< dd > < code > maxSpeed< / code > - Max speed of the robot in meters per second.< / dd >
< dd > < code > furthestModuleX< / code > - X of the furthest module in meters.< / dd >
< dd > < code > furthestModuleY< / code > - Y of the furthest module in meters.< / dd >
2023-02-14 22:03:02 -06:00
< dt > Returns:< / dt >
2023-02-13 14:37:05 -06:00
< dd > Maximum angular velocity in rad/s.< / dd >
< / dl >
2023-02-14 22:03:02 -06:00
< / section >
2023-02-13 14:37:05 -06:00
< / li >
2023-02-14 22:03:02 -06:00
< li >
< section class = "detail" id = "calculateMaxAcceleration(double)" >
< h3 > calculateMaxAcceleration< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > double< / span > < span class = "element-name" > calculateMaxAcceleration< / span > < wbr > < span class = "parameters" > (double cof)< / span > < / div >
2023-08-29 19:59:07 -05:00
< div class = "block" > Calculate the practical maximum acceleration of the robot using the wheel coefficient of friction.< / div >
2023-02-14 22:03:02 -06:00
< dl class = "notes" >
< dt > Parameters:< / dt >
2023-02-13 14:37:05 -06:00
< dd > < code > cof< / code > - Coefficient of Friction of the wheel grip tape.< / dd >
2023-02-14 22:03:02 -06:00
< dt > Returns:< / dt >
2023-02-13 14:37:05 -06:00
< dd > Practical maximum acceleration in m/s/s.< / dd >
< / dl >
2023-02-14 22:03:02 -06:00
< / section >
2023-02-13 14:37:05 -06:00
< / li >
2023-02-14 22:03:02 -06:00
< li >
< section class = "detail" id = "calculateMaxAcceleration(double,double,double,double,double)" >
< h3 > calculateMaxAcceleration< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > double< / span > < span class = "element-name" > calculateMaxAcceleration< / span > < wbr > < span class = "parameters" > (double stallTorqueNm,
double gearRatio,
double moduleCount,
double wheelDiameter,
double robotMass)< / span > < / div >
2023-02-13 14:37:05 -06:00
< div class = "block" > Calculate the maximum theoretical acceleration without friction.< / div >
2023-02-14 22:03:02 -06:00
< dl class = "notes" >
< dt > Parameters:< / dt >
2023-02-13 14:37:05 -06:00
< dd > < code > stallTorqueNm< / code > - Stall torque of driving motor in nM.< / dd >
2023-08-29 19:59:07 -05:00
< dd > < code > gearRatio< / code > - Gear ratio for driving motor number of motor rotations until one wheel rotation.< / dd >
2023-02-13 14:37:05 -06:00
< dd > < code > moduleCount< / code > - Number of swerve modules.< / dd >
< dd > < code > wheelDiameter< / code > - Wheel diameter in meters.< / dd >
< dd > < code > robotMass< / code > - Mass of the robot in kg.< / dd >
2023-02-14 22:03:02 -06:00
< dt > Returns:< / dt >
2023-02-13 14:37:05 -06:00
< dd > Theoretical maximum acceleration in m/s/s.< / dd >
< / dl >
2023-02-14 22:03:02 -06:00
< / section >
2023-02-13 14:37:05 -06:00
< / li >
2023-02-14 22:03:02 -06:00
< li >
2024-01-15 14:39:17 -06:00
< section class = "detail" id = "calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d,java.util.List,double,swervelib.parser.SwerveDriveConfiguration)" >
< h3 > calcMaxAccel< / h3 >
< div class = "member-signature" > < span class = "modifiers" > private static< / span > < span class = "return-type" > double< / span > < span class = "element-name" > calcMaxAccel< / span > < wbr > < span class = "parameters" > (edu.wpi.first.math.geometry.Rotation2d angle,
< a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title = "class or interface in java.util" class = "external-link" > List< / a > < < a href = "Matter.html" title = "class in swervelib.math" > Matter< / a > > matter,
double robotMass,
< a href = "../parser/SwerveDriveConfiguration.html" title = "class in swervelib.parser" > SwerveDriveConfiguration< / a > config)< / span > < / div >
< div class = "block" > Calculates the maximum acceleration allowed in a direction without tipping the robot. Reads arm position from
NetworkTables and is passed the direction in question.< / div >
< dl class = "notes" >
< dt > Parameters:< / dt >
< dd > < code > angle< / code > - The direction in which to calculate max acceleration, as a Rotation2d. Note that this is
robot-relative.< / dd >
< dd > < code > matter< / code > - Matter that the robot is composed of in kg. (Includes chassis)< / dd >
< dd > < code > robotMass< / code > - The weight of the robot in kg. (Including manipulators, etc).< / dd >
< dd > < code > config< / code > - The swerve drive configuration.< / dd >
< dt > Returns:< / dt >
< dd > Maximum acceleration allowed in the robot direction.< / dd >
< / dl >
< / section >
< / li >
< li >
2023-04-08 12:31:07 -05:00
< section class = "detail" id = "PoseLog(edu.wpi.first.math.geometry.Pose2d)" >
< h3 > PoseLog< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > edu.wpi.first.math.geometry.Twist2d< / span > < span class = "element-name" > PoseLog< / span > < wbr > < span class = "parameters" > (edu.wpi.first.math.geometry.Pose2d transform)< / span > < / div >
< div class = "block" > Logical inverse of the Pose exponential from 254. Taken from team 3181.< / div >
< dl class = "notes" >
< dt > Parameters:< / dt >
< dd > < code > transform< / code > - Pose to perform the log on.< / dd >
2023-04-08 13:35:46 -05:00
< dt > Returns:< / dt >
< dd > < code > Twist2d< / code > of the transformed pose.< / dd >
2023-04-08 12:31:07 -05:00
< / dl >
< / section >
< / li >
< li >
2023-02-24 22:10:33 -06:00
< section class = "detail" id = "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)" >
2023-02-14 22:03:02 -06:00
< h3 > limitVelocity< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > edu.wpi.first.math.geometry.Translation2d< / span > < span class = "element-name" > limitVelocity< / span > < wbr > < span class = "parameters" > (edu.wpi.first.math.geometry.Translation2d commandedVelocity,
edu.wpi.first.math.kinematics.ChassisSpeeds fieldVelocity,
edu.wpi.first.math.geometry.Pose2d robotPose,
double loopTime,
double robotMass,
2023-02-24 22:10:33 -06:00
< a href = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title = "class or interface in java.util" class = "external-link" > List< / a > < < a href = "Matter.html" title = "class in swervelib.math" > Matter< / a > > matter,
2023-02-14 22:03:02 -06:00
< a href = "../parser/SwerveDriveConfiguration.html" title = "class in swervelib.parser" > SwerveDriveConfiguration< / a > config)< / span > < / div >
2024-01-15 14:39:17 -06:00
< div class = "block" > Limits a commanded velocity to prevent exceeding the maximum acceleration given by < a href = "#calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d,java.util.List,double,swervelib.parser.SwerveDriveConfiguration)" > < code > calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d, java.util.List< swervelib.math.Matter> , double, swervelib.parser.SwerveDriveConfiguration)< / code > < / a > .
2023-08-29 19:59:07 -05:00
Note that this takes and returns field-relative velocities.< / div >
2023-02-14 22:03:02 -06:00
< dl class = "notes" >
< dt > Parameters:< / dt >
2023-02-13 14:37:05 -06:00
< dd > < code > commandedVelocity< / code > - The desired velocity< / dd >
< dd > < code > fieldVelocity< / code > - The velocity of the robot within a field relative state.< / dd >
< dd > < code > robotPose< / code > - The current pose of the robot.< / dd >
2023-08-29 19:59:07 -05:00
< dd > < code > loopTime< / code > - The time it takes to update the velocity in seconds. < b > Note: this should include the
100ms that it takes for a SparkMax velocity to update.< / b > < / dd >
2023-02-24 22:10:33 -06:00
< dd > < code > matter< / code > - Matter that the robot is composed of with position in meters and mass in kg.< / dd >
2023-02-13 14:37:05 -06:00
< dd > < code > robotMass< / code > - The weight of the robot in kg. (Including manipulators, etc).< / dd >
< dd > < code > config< / code > - The swerve drive configuration.< / dd >
2023-02-14 22:03:02 -06:00
< dt > Returns:< / dt >
2023-08-29 19:59:07 -05:00
< dd > The limited velocity. This is either the commanded velocity, if attainable, or the closest attainable
velocity.< / dd >
2023-02-13 14:37:05 -06:00
< / dl >
2023-02-14 22:03:02 -06:00
< / section >
2023-02-13 14:37:05 -06:00
< / li >
2023-02-20 22:04:54 -06:00
< li >
< section class = "detail" id = "getSwerveModule(swervelib.SwerveModule[],boolean,boolean)" >
< h3 > getSwerveModule< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > < a href = "../parser/SwerveModuleConfiguration.html" title = "class in swervelib.parser" > SwerveModuleConfiguration< / a > < / span > < span class = "element-name" > getSwerveModule< / span > < wbr > < span class = "parameters" > (< a href = "../SwerveModule.html" title = "class in swervelib" > SwerveModule< / a > [] modules,
boolean front,
boolean left)< / span > < / div >
< div class = "block" > Get the fruthest module from center based on the module locations.< / div >
< dl class = "notes" >
< dt > Parameters:< / dt >
< dd > < code > modules< / code > - Swerve module list.< / dd >
< dd > < code > front< / code > - True = furthest front, False = furthest back.< / dd >
< dd > < code > left< / code > - True = furthest left, False = furthest right.< / dd >
< dt > Returns:< / dt >
< dd > Module location which is the furthest from center and abides by parameters.< / dd >
< / dl >
< / section >
< / li >
2023-03-29 07:24:24 -05:00
< li >
< section class = "detail" id = "placeInAppropriate0To360Scope(double,double)" >
< h3 > placeInAppropriate0To360Scope< / h3 >
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > double< / span > < span class = "element-name" > placeInAppropriate0To360Scope< / span > < wbr > < span class = "parameters" > (double scopeReference,
double newAngle)< / span > < / div >
2023-08-29 19:59:07 -05:00
< div class = "block" > 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.< / div >
2023-03-29 07:24:24 -05:00
< dl class = "notes" >
< dt > Parameters:< / dt >
< dd > < code > scopeReference< / code > - Current Angle (deg)< / dd >
< dd > < code > newAngle< / code > - Target Angle (deg)< / dd >
< dt > Returns:< / dt >
< dd > Closest angle within scope (deg)< / dd >
< / dl >
< / section >
< / li >
< li >
2023-08-29 21:03:58 -05:00
< section class = "detail" id = "antiJitter(edu.wpi.first.math.kinematics.SwerveModuleState,edu.wpi.first.math.kinematics.SwerveModuleState,double)" >
2023-03-29 07:24:24 -05:00
< h3 > antiJitter< / h3 >
2023-08-29 21:03:58 -05:00
< div class = "member-signature" > < span class = "modifiers" > public static< / span > < span class = "return-type" > void< / span > < span class = "element-name" > antiJitter< / span > < wbr > < span class = "parameters" > (edu.wpi.first.math.kinematics.SwerveModuleState moduleState,
edu.wpi.first.math.kinematics.SwerveModuleState lastModuleState,
2023-03-29 07:24:24 -05:00
double maxSpeed)< / span > < / div >
< div class = "block" > Perform anti-jitter within modules if the speed requested is too low.< / div >
< dl class = "notes" >
< dt > Parameters:< / dt >
2023-08-29 21:03:58 -05:00
< dd > < code > moduleState< / code > - Current < code > SwerveModuleState< / code > requested.< / dd >
< dd > < code > lastModuleState< / code > - Previous < code > SwerveModuleState< / code > used.< / dd >
2023-11-09 18:54:46 -06:00
< dd > < code > maxSpeed< / code > - Maximum speed of the modules.< / dd >
2023-03-29 07:24:24 -05:00
< / dl >
< / section >
< / li >
2023-02-13 14:37:05 -06:00
< / ul >
< / section >
< / li >
< / ul >
2023-02-14 22:03:02 -06:00
< / section >
2023-02-13 14:37:05 -06:00
<!-- ========= END OF CLASS DATA ========= -->
2023-02-14 22:03:02 -06:00
< / main >
2023-02-13 14:37:05 -06:00
< / div >
< / div >
< / body >
< / html >