Updated swervelib documentation and merged @7910f6ba7ee4 PR

This commit is contained in:
thenetworkgrinch
2023-02-14 22:03:02 -06:00
parent 154bee371a
commit 9a7ba52cee
126 changed files with 12415 additions and 23714 deletions

View File

@@ -1,458 +1,327 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.17) on Mon Feb 13 17:20:01 CST 2023 -->
<!-- Generated by javadoc (17) on Tue Feb 14 22:01:24 CST 2023 -->
<title>SwerveKinematics2</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2023-02-13">
<meta name="dc.created" content="2023-02-14">
<meta name="description" content="declaration: package: swervelib.math, class: SwerveKinematics2">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../jquery/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SwerveKinematics2";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":9,"i2":10,"i3":10,"i4":10,"i5":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<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">
<li><a href="../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-files/index-1.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
<li><a href="../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div class="sub-nav">
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="subNavList">
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<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">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">swervelib.math</a></div>
<h2 title="Class SwerveKinematics2" class="title">Class SwerveKinematics2</h2>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">swervelib.math</a></div>
<h1 title="Class SwerveKinematics2" class="title">Class SwerveKinematics2</h1>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>edu.wpi.first.math.kinematics.SwerveDriveKinematics</li>
<li>
<ul class="inheritance">
<li>swervelib.math.SwerveKinematics2</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<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">edu.wpi.first.math.kinematics.SwerveDriveKinematics
<div class="inheritance">swervelib.math.SwerveKinematics2</div>
</div>
</div>
<section class="class-description" id="class-description">
<hr>
<pre>public class <span class="typeNameLabel">SwerveKinematics2</span>
extends edu.wpi.first.math.kinematics.SwerveDriveKinematics</pre>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SwerveKinematics2</span>
<span class="extends-implements">extends edu.wpi.first.math.kinematics.SwerveDriveKinematics</span></div>
<div class="block">Clone of WPI SwerveKinematics, which implements second order kinematics when calculating modules states from chassis
speed.
<p></p>
<p>
Makes use of <a href="SwerveModuleState2.html" title="class in swervelib.math"><code>SwerveModuleState2</code></a> to add the angular velocity that is required of the module as an output.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private org.ejml.simple.SimpleMatrix</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#bigInverseKinematics">bigInverseKinematics</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private org.ejml.simple.SimpleMatrix</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#m_forwardKinematics">m_forwardKinematics</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private org.ejml.simple.SimpleMatrix</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#m_inverseKinematics">m_inverseKinematics</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private edu.wpi.first.math.geometry.Translation2d[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#m_modules">m_modules</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#m_moduleStates">m_moduleStates</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#m_numModules">m_numModules</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private edu.wpi.first.math.geometry.Translation2d</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#m_prevCoR">m_prevCoR</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final org.ejml.simple.SimpleMatrix</code></div>
<div class="col-second even-row-color"><code><a href="#bigInverseKinematics" class="member-name-link">bigInverseKinematics</a></code></div>
<div class="col-last even-row-color">
<div class="block">Second order kinematics inverse matrix.</div>
</div>
<div class="col-first odd-row-color"><code>private final org.ejml.simple.SimpleMatrix</code></div>
<div class="col-second odd-row-color"><code><a href="#m_forwardKinematics" class="member-name-link">m_forwardKinematics</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Forward kinematics matrix.</div>
</div>
<div class="col-first even-row-color"><code>private final org.ejml.simple.SimpleMatrix</code></div>
<div class="col-second even-row-color"><code><a href="#m_inverseKinematics" class="member-name-link">m_inverseKinematics</a></code></div>
<div class="col-last even-row-color">
<div class="block">Inverse kinematics matrix.</div>
</div>
<div class="col-first odd-row-color"><code>private final edu.wpi.first.math.geometry.Translation2d[]</code></div>
<div class="col-second odd-row-color"><code><a href="#m_modules" class="member-name-link">m_modules</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Location of each swerve module in meters.</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]</code></div>
<div class="col-second even-row-color"><code><a href="#m_moduleStates" class="member-name-link">m_moduleStates</a></code></div>
<div class="col-last even-row-color">
<div class="block">Swerve module states.</div>
</div>
<div class="col-first odd-row-color"><code>private final int</code></div>
<div class="col-second odd-row-color"><code><a href="#m_numModules" class="member-name-link">m_numModules</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Number of swerve modules.</div>
</div>
<div class="col-first even-row-color"><code>private edu.wpi.first.math.geometry.Translation2d</code></div>
<div class="col-second even-row-color"><code><a href="#m_prevCoR" class="member-name-link">m_prevCoR</a></code></div>
<div class="col-last even-row-color">
<div class="block">Previous CoR</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(edu.wpi.first.math.geometry.Translation2d...)">SwerveKinematics2</a></span>&#8203;(edu.wpi.first.math.geometry.Translation2d...&nbsp;wheelsMeters)</code></th>
<td class="colLast">
<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(edu.wpi.first.math.geometry.Translation2d...)" class="member-name-link">SwerveKinematics2</a><wbr>(edu.wpi.first.math.geometry.Translation2d...&nbsp;wheelsMeters)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a swerve drive kinematics object.</div>
</td>
</tr>
</table>
</li>
</ul>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#desaturateWheelSpeeds(swervelib.math.SwerveModuleState2%5B%5D,double)">desaturateWheelSpeeds</a></span>&#8203;(<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]&nbsp;moduleStates,
double&nbsp;attainableMaxSpeedMetersPerSecond)</code></th>
<td class="colLast">
<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-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance 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>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#desaturateWheelSpeeds(swervelib.math.SwerveModuleState2%5B%5D,double)" class="member-name-link">desaturateWheelSpeeds</a><wbr>(<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]&nbsp;moduleStates,
double&nbsp;attainableMaxSpeedMetersPerSecond)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Renormalizes the wheel speeds if any individual speed is above the specified maximum.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#desaturateWheelSpeeds(swervelib.math.SwerveModuleState2%5B%5D,edu.wpi.first.math.kinematics.ChassisSpeeds,double,double,double)">desaturateWheelSpeeds</a></span>&#8203;(<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]&nbsp;moduleStates,
edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;currentChassisSpeed,
double&nbsp;attainableMaxModuleSpeedMetersPerSecond,
double&nbsp;attainableMaxTranslationalSpeedMetersPerSecond,
double&nbsp;attainableMaxRotationalVelocityRadiansPerSecond)</code></th>
<td class="colLast">
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#desaturateWheelSpeeds(swervelib.math.SwerveModuleState2%5B%5D,edu.wpi.first.math.kinematics.ChassisSpeeds,double,double,double)" class="member-name-link">desaturateWheelSpeeds</a><wbr>(<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]&nbsp;moduleStates,
edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;currentChassisSpeed,
double&nbsp;attainableMaxModuleSpeedMetersPerSecond,
double&nbsp;attainableMaxTranslationalSpeedMetersPerSecond,
double&nbsp;attainableMaxRotationalVelocityRadiansPerSecond)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Renormalizes the wheel speeds if any individual speed is above the specified maximum, as well as getting rid of
joystick saturation at edges of joystick.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>edu.wpi.first.math.kinematics.ChassisSpeeds</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toChassisSpeeds(swervelib.math.SwerveModuleState2...)">toChassisSpeeds</a></span>&#8203;(<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>...&nbsp;wheelStates)</code></th>
<td class="colLast">
<div class="block">Performs forward kinematics to return the resulting chassis state from the given module states.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toSwerveModuleStates(edu.wpi.first.math.kinematics.ChassisSpeeds)">toSwerveModuleStates</a></span>&#8203;(edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;chassisSpeeds)</code></th>
<td class="colLast">
<div class="block">Performs inverse kinematics.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toSwerveModuleStates(edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.geometry.Translation2d)">toSwerveModuleStates</a></span>&#8203;(edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;chassisSpeeds,
edu.wpi.first.math.geometry.Translation2d&nbsp;centerOfRotationMeters)</code></th>
<td class="colLast">
<div class="block">Performs inverse kinematics to return the module states from a desired chassis velocity.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>edu.wpi.first.math.geometry.Twist2d</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toTwist2d(edu.wpi.first.math.kinematics.SwerveModulePosition...)">toTwist2d</a></span>&#8203;(edu.wpi.first.math.kinematics.SwerveModulePosition...&nbsp;wheelDeltas)</code></th>
<td class="colLast">
<div class="block">Performs forward kinematics to return the resulting chassis state from the given module states.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.edu.wpi.first.math.kinematics.SwerveDriveKinematics">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;edu.wpi.first.math.kinematics.SwerveDriveKinematics</h3>
<code>desaturateWheelSpeeds, desaturateWheelSpeeds, toChassisSpeeds</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="m_inverseKinematics">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>m_inverseKinematics</h4>
<pre>private final&nbsp;org.ejml.simple.SimpleMatrix m_inverseKinematics</pre>
</li>
</ul>
<a id="m_forwardKinematics">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>m_forwardKinematics</h4>
<pre>private final&nbsp;org.ejml.simple.SimpleMatrix m_forwardKinematics</pre>
</li>
</ul>
<a id="bigInverseKinematics">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bigInverseKinematics</h4>
<pre>private final&nbsp;org.ejml.simple.SimpleMatrix bigInverseKinematics</pre>
</li>
</ul>
<a id="m_numModules">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>m_numModules</h4>
<pre>private final&nbsp;int m_numModules</pre>
</li>
</ul>
<a id="m_modules">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>m_modules</h4>
<pre>private final&nbsp;edu.wpi.first.math.geometry.Translation2d[] m_modules</pre>
</li>
</ul>
<a id="m_moduleStates">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>m_moduleStates</h4>
<pre>private final&nbsp;<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[] m_moduleStates</pre>
</li>
</ul>
<a id="m_prevCoR">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>m_prevCoR</h4>
<pre>private&nbsp;edu.wpi.first.math.geometry.Translation2d m_prevCoR</pre>
</li>
</ul>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>edu.wpi.first.math.kinematics.ChassisSpeeds</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toChassisSpeeds(swervelib.math.SwerveModuleState2...)" class="member-name-link">toChassisSpeeds</a><wbr>(<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>...&nbsp;wheelStates)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Performs forward kinematics to return the resulting chassis state from the given module states.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toSwerveModuleStates(edu.wpi.first.math.kinematics.ChassisSpeeds)" class="member-name-link">toSwerveModuleStates</a><wbr>(edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;chassisSpeeds)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Performs inverse kinematics.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toSwerveModuleStates(edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.geometry.Translation2d)" class="member-name-link">toSwerveModuleStates</a><wbr>(edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;chassisSpeeds,
edu.wpi.first.math.geometry.Translation2d&nbsp;centerOfRotationMeters)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Performs inverse kinematics to return the module states from a desired chassis velocity.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>edu.wpi.first.math.geometry.Twist2d</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toTwist2d(edu.wpi.first.math.kinematics.SwerveModulePosition...)" class="member-name-link">toTwist2d</a><wbr>(edu.wpi.first.math.kinematics.SwerveModulePosition...&nbsp;wheelDeltas)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Performs forward kinematics to return the resulting chassis state from the given module states.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-edu.wpi.first.math.kinematics.SwerveDriveKinematics">Methods inherited from class&nbsp;edu.wpi.first.math.kinematics.SwerveDriveKinematics</h3>
<code>desaturateWheelSpeeds, desaturateWheelSpeeds, toChassisSpeeds</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;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>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="m_inverseKinematics">
<h3>m_inverseKinematics</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">org.ejml.simple.SimpleMatrix</span>&nbsp;<span class="element-name">m_inverseKinematics</span></div>
<div class="block">Inverse kinematics matrix.</div>
</section>
</li>
<li>
<section class="detail" id="m_forwardKinematics">
<h3>m_forwardKinematics</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">org.ejml.simple.SimpleMatrix</span>&nbsp;<span class="element-name">m_forwardKinematics</span></div>
<div class="block">Forward kinematics matrix.</div>
</section>
</li>
<li>
<section class="detail" id="bigInverseKinematics">
<h3>bigInverseKinematics</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">org.ejml.simple.SimpleMatrix</span>&nbsp;<span class="element-name">bigInverseKinematics</span></div>
<div class="block">Second order kinematics inverse matrix.</div>
</section>
</li>
<li>
<section class="detail" id="m_numModules">
<h3>m_numModules</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">m_numModules</span></div>
<div class="block">Number of swerve modules.</div>
</section>
</li>
<li>
<section class="detail" id="m_modules">
<h3>m_modules</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">edu.wpi.first.math.geometry.Translation2d[]</span>&nbsp;<span class="element-name">m_modules</span></div>
<div class="block">Location of each swerve module in meters.</div>
</section>
</li>
<li>
<section class="detail" id="m_moduleStates">
<h3>m_moduleStates</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]</span>&nbsp;<span class="element-name">m_moduleStates</span></div>
<div class="block">Swerve module states.</div>
</section>
</li>
<li>
<section class="detail" id="m_prevCoR">
<h3>m_prevCoR</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">edu.wpi.first.math.geometry.Translation2d</span>&nbsp;<span class="element-name">m_prevCoR</span></div>
<div class="block">Previous CoR</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(edu.wpi.first.math.geometry.Translation2d...)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SwerveKinematics2</h4>
<pre>public&nbsp;SwerveKinematics2&#8203;(edu.wpi.first.math.geometry.Translation2d...&nbsp;wheelsMeters)</pre>
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(edu.wpi.first.math.geometry.Translation2d...)">
<h3>SwerveKinematics2</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SwerveKinematics2</span><wbr><span class="parameters">(edu.wpi.first.math.geometry.Translation2d...&nbsp;wheelsMeters)</span></div>
<div class="block">Constructs a swerve drive kinematics object. This takes in a variable number of wheel locations as Translation2ds.
The order in which you pass in the wheel locations is the same order that you will receive the module states when
performing inverse kinematics. It is also expected that you pass in the module states in the same order when
calling the forward kinematics methods.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>wheelsMeters</code> - The locations of the wheels relative to the physical center of the robot.</dd>
</dl>
</li>
</ul>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="desaturateWheelSpeeds(swervelib.math.SwerveModuleState2[],double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>desaturateWheelSpeeds</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;desaturateWheelSpeeds&#8203;(<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]&nbsp;moduleStates,
double&nbsp;attainableMaxSpeedMetersPerSecond)</pre>
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="desaturateWheelSpeeds(swervelib.math.SwerveModuleState2[],double)">
<h3>desaturateWheelSpeeds</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">desaturateWheelSpeeds</span><wbr><span class="parameters">(<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]&nbsp;moduleStates,
double&nbsp;attainableMaxSpeedMetersPerSecond)</span></div>
<div class="block">Renormalizes the wheel speeds if any individual speed is above the specified maximum.
<p>Sometimes, after inverse kinematics, the requested speed from one or more modules may be
above the max attainable speed for the driving motor on that module. To fix this issue, one can reduce all the
wheel speeds to make sure that all requested module speeds are at-or-below the absolute threshold, while
maintaining the ratio of speeds between modules.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>moduleStates</code> - Reference to array of module states. The array will be mutated with the
normalized speeds!</dd>
<dd><code>attainableMaxSpeedMetersPerSecond</code> - The absolute max speed that a module can reach.</dd>
</dl>
</section>
</li>
</ul>
<a id="desaturateWheelSpeeds(swervelib.math.SwerveModuleState2[],edu.wpi.first.math.kinematics.ChassisSpeeds,double,double,double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>desaturateWheelSpeeds</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;desaturateWheelSpeeds&#8203;(<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]&nbsp;moduleStates,
edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;currentChassisSpeed,
double&nbsp;attainableMaxModuleSpeedMetersPerSecond,
double&nbsp;attainableMaxTranslationalSpeedMetersPerSecond,
double&nbsp;attainableMaxRotationalVelocityRadiansPerSecond)</pre>
<li>
<section class="detail" id="desaturateWheelSpeeds(swervelib.math.SwerveModuleState2[],edu.wpi.first.math.kinematics.ChassisSpeeds,double,double,double)">
<h3>desaturateWheelSpeeds</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">desaturateWheelSpeeds</span><wbr><span class="parameters">(<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]&nbsp;moduleStates,
edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;currentChassisSpeed,
double&nbsp;attainableMaxModuleSpeedMetersPerSecond,
double&nbsp;attainableMaxTranslationalSpeedMetersPerSecond,
double&nbsp;attainableMaxRotationalVelocityRadiansPerSecond)</span></div>
<div class="block">Renormalizes the wheel speeds if any individual speed is above the specified maximum, as well as getting rid of
joystick saturation at edges of joystick.
@@ -460,8 +329,8 @@ extends edu.wpi.first.math.kinematics.SwerveDriveKinematics</pre>
above the max attainable speed for the driving motor on that module. To fix this issue, one can reduce all the
wheel speeds to make sure that all requested module speeds are at-or-below the absolute threshold, while
maintaining the ratio of speeds between modules.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>moduleStates</code> - Reference to array of module states. The array will be
mutated with the normalized speeds!</dd>
<dd><code>currentChassisSpeed</code> - The current speed of the robot</dd>
@@ -470,16 +339,13 @@ extends edu.wpi.first.math.kinematics.SwerveDriveKinematics</pre>
translating</dd>
<dd><code>attainableMaxRotationalVelocityRadiansPerSecond</code> - The absolute max speed the robot can reach while rotating</dd>
</dl>
</section>
</li>
</ul>
<a id="toSwerveModuleStates(edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.geometry.Translation2d)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toSwerveModuleStates</h4>
<pre class="methodSignature">public&nbsp;<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]&nbsp;toSwerveModuleStates&#8203;(edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;chassisSpeeds,
edu.wpi.first.math.geometry.Translation2d&nbsp;centerOfRotationMeters)</pre>
<li>
<section class="detail" id="toSwerveModuleStates(edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.geometry.Translation2d)">
<h3>toSwerveModuleStates</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]</span>&nbsp;<span class="element-name">toSwerveModuleStates</span><wbr><span class="parameters">(edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;chassisSpeeds,
edu.wpi.first.math.geometry.Translation2d&nbsp;centerOfRotationMeters)</span></div>
<div class="block">Performs inverse kinematics to return the module states from a desired chassis velocity. This method is often used
to convert joystick values into module speeds and angles.
@@ -490,150 +356,81 @@ extends edu.wpi.first.math.kinematics.SwerveDriveKinematics</pre>
<p>In the case that the desired chassis speeds are zero (i.e. the robot will be stationary),
the previously calculated module angle will be maintained.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code>toSwerveModuleStates</code>&nbsp;in class&nbsp;<code>edu.wpi.first.math.kinematics.SwerveDriveKinematics</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dt>Parameters:</dt>
<dd><code>chassisSpeeds</code> - The desired chassis speed.</dd>
<dd><code>centerOfRotationMeters</code> - The center of rotation. For example, if you set the center of rotation at one corner
of the robot and provide a chassis speed that only has a dtheta component, the robot
will rotate around that corner.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dt>Returns:</dt>
<dd>An array containing the module states. Use caution because these module states are not normalized.
Sometimes, a user input may cause one of the module speeds to go above the attainable max velocity. Use the
<a href="#desaturateWheelSpeeds(swervelib.math.SwerveModuleState2%5B%5D,double)"><code>DesaturateWheelSpeeds</code></a> function to rectify this issue.</dd>
</dl>
</section>
</li>
</ul>
<a id="toSwerveModuleStates(edu.wpi.first.math.kinematics.ChassisSpeeds)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toSwerveModuleStates</h4>
<pre class="methodSignature">public&nbsp;<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]&nbsp;toSwerveModuleStates&#8203;(edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;chassisSpeeds)</pre>
<li>
<section class="detail" id="toSwerveModuleStates(edu.wpi.first.math.kinematics.ChassisSpeeds)">
<h3>toSwerveModuleStates</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>[]</span>&nbsp;<span class="element-name">toSwerveModuleStates</span><wbr><span class="parameters">(edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;chassisSpeeds)</span></div>
<div class="block">Performs inverse kinematics. See <a href="#toSwerveModuleStates(edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.geometry.Translation2d)"><code>toSwerveModuleStates(ChassisSpeeds, Translation2d)</code></a> toSwerveModuleStates
for more information.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code>toSwerveModuleStates</code>&nbsp;in class&nbsp;<code>edu.wpi.first.math.kinematics.SwerveDriveKinematics</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dt>Parameters:</dt>
<dd><code>chassisSpeeds</code> - The desired chassis speed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dt>Returns:</dt>
<dd>An array containing the module states.</dd>
</dl>
</section>
</li>
</ul>
<a id="toChassisSpeeds(swervelib.math.SwerveModuleState2...)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toChassisSpeeds</h4>
<pre class="methodSignature">public&nbsp;edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;toChassisSpeeds&#8203;(<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>...&nbsp;wheelStates)</pre>
<li>
<section class="detail" id="toChassisSpeeds(swervelib.math.SwerveModuleState2...)">
<h3>toChassisSpeeds</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">edu.wpi.first.math.kinematics.ChassisSpeeds</span>&nbsp;<span class="element-name">toChassisSpeeds</span><wbr><span class="parameters">(<a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a>...&nbsp;wheelStates)</span></div>
<div class="block">Performs forward kinematics to return the resulting chassis state from the given module states. This method is
often used for odometry -- determining the robot's position on the field using data from the real-world speed and
angle of each module on the robot.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>wheelStates</code> - The state of the modules (as a SwerveModuleState type) as measured from respective encoders and
gyros. The order of the swerve module states should be same as passed into the constructor of
this class.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dt>Returns:</dt>
<dd>The resulting chassis speed.</dd>
</dl>
</section>
</li>
</ul>
<a id="toTwist2d(edu.wpi.first.math.kinematics.SwerveModulePosition...)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toTwist2d</h4>
<pre class="methodSignature">public&nbsp;edu.wpi.first.math.geometry.Twist2d&nbsp;toTwist2d&#8203;(edu.wpi.first.math.kinematics.SwerveModulePosition...&nbsp;wheelDeltas)</pre>
<li>
<section class="detail" id="toTwist2d(edu.wpi.first.math.kinematics.SwerveModulePosition...)">
<h3>toTwist2d</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">edu.wpi.first.math.geometry.Twist2d</span>&nbsp;<span class="element-name">toTwist2d</span><wbr><span class="parameters">(edu.wpi.first.math.kinematics.SwerveModulePosition...&nbsp;wheelDeltas)</span></div>
<div class="block">Performs forward kinematics to return the resulting chassis state from the given module states. This method is
often used for odometry -- determining the robot's position on the field using data from the real-world speed and
angle of each module on the robot.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code>toTwist2d</code>&nbsp;in class&nbsp;<code>edu.wpi.first.math.kinematics.SwerveDriveKinematics</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dt>Parameters:</dt>
<dd><code>wheelDeltas</code> - The latest change in position of the modules (as a SwerveModulePosition type) as measured from
respective encoders and gyros. The order of the swerve module states should be same as passed
into the constructor of this class.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dt>Returns:</dt>
<dd>The resulting Twist2d.</dd>
</dl>
</li>
</ul>
</section>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
</section>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-files/index-1.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</main>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>

View File

@@ -1,498 +1,371 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.17) on Mon Feb 13 17:20:01 CST 2023 -->
<!-- Generated by javadoc (17) on Tue Feb 14 22:01:24 CST 2023 -->
<title>SwerveMath</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2023-02-13">
<meta name="dc.created" content="2023-02-14">
<meta name="description" content="declaration: package: swervelib.math, class: SwerveMath">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../jquery/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SwerveMath";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<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">
<li><a href="../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-files/index-1.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
<li><a href="../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div class="sub-nav">
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="subNavList">
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<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">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">swervelib.math</a></div>
<h2 title="Class SwerveMath" class="title">Class SwerveMath</h2>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">swervelib.math</a></div>
<h1 title="Class SwerveMath" class="title">Class SwerveMath</h1>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>swervelib.math.SwerveMath</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<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">
<hr>
<pre>public class <span class="typeNameLabel">SwerveMath</span>
extends <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></pre>
<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>
<div class="block">Mathematical functions which pertain to swerve drive.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">SwerveMath</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<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">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#applyDeadband(double,boolean,double)">applyDeadband</a></span>&#8203;(double&nbsp;value,
boolean&nbsp;scaled,
double&nbsp;deadband)</code></th>
<td class="colLast">
<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>
<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="#applyDeadband(double,boolean,double)" class="member-name-link">applyDeadband</a><wbr>(double&nbsp;value,
boolean&nbsp;scaled,
double&nbsp;deadband)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Algebraically apply a deadband using a piece wise function.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>private static double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d,double,double,edu.wpi.first.math.geometry.Translation3d,swervelib.parser.SwerveDriveConfiguration)">calcMaxAccel</a></span>&#8203;(edu.wpi.first.math.geometry.Rotation2d&nbsp;angle,
double&nbsp;chassisMass,
double&nbsp;robotMass,
edu.wpi.first.math.geometry.Translation3d&nbsp;chassisCenterOfGravity,
<a href="../parser/SwerveDriveConfiguration.html" title="class in swervelib.parser">SwerveDriveConfiguration</a>&nbsp;config)</code></th>
<td class="colLast">
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>private 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="#calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d,double,double,edu.wpi.first.math.geometry.Translation3d,swervelib.parser.SwerveDriveConfiguration)" class="member-name-link">calcMaxAccel</a><wbr>(edu.wpi.first.math.geometry.Rotation2d&nbsp;angle,
double&nbsp;chassisMass,
double&nbsp;robotMass,
edu.wpi.first.math.geometry.Translation3d&nbsp;chassisCenterOfGravity,
<a href="../parser/SwerveDriveConfiguration.html" title="class in swervelib.parser">SwerveDriveConfiguration</a>&nbsp;config)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Calculates the maximum acceleration allowed in a direction without tipping the robot.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#calculateAngleKV(double,double,double)">calculateAngleKV</a></span>&#8203;(double&nbsp;optimalVoltage,
double&nbsp;motorFreeSpeedRPM,
double&nbsp;angleGearRatio)</code></th>
<td class="colLast">
</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="#calculateAngleKV(double,double,double)" class="member-name-link">calculateAngleKV</a><wbr>(double&nbsp;optimalVoltage,
double&nbsp;motorFreeSpeedRPM,
double&nbsp;angleGearRatio)</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 angle kV which will be multiplied by the radians per second for the feedforward.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#calculateDegreesPerSteeringRotation(double,double)">calculateDegreesPerSteeringRotation</a></span>&#8203;(double&nbsp;angleGearRatio,
double&nbsp;pulsePerRotation)</code></th>
<td class="colLast">
</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="#calculateDegreesPerSteeringRotation(double,double)" class="member-name-link">calculateDegreesPerSteeringRotation</a><wbr>(double&nbsp;angleGearRatio,
double&nbsp;pulsePerRotation)</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 degrees per steering rotation for the integrated encoder.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#calculateMaxAcceleration(double)">calculateMaxAcceleration</a></span>&#8203;(double&nbsp;cof)</code></th>
<td class="colLast">
</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)" class="member-name-link">calculateMaxAcceleration</a><wbr>(double&nbsp;cof)</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 practical maximum acceleration of the robot using the wheel coefficient of friction.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#calculateMaxAcceleration(double,double,double,double,double)">calculateMaxAcceleration</a></span>&#8203;(double&nbsp;stallTorqueNm,
double&nbsp;gearRatio,
double&nbsp;moduleCount,
double&nbsp;wheelDiameter,
double&nbsp;robotMass)</code></th>
<td class="colLast">
</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="#calculateMaxAcceleration(double,double,double,double,double)" class="member-name-link">calculateMaxAcceleration</a><wbr>(double&nbsp;stallTorqueNm,
double&nbsp;gearRatio,
double&nbsp;moduleCount,
double&nbsp;wheelDiameter,
double&nbsp;robotMass)</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 maximum theoretical acceleration without friction.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#calculateMaxAngularVelocity(double,double,double)">calculateMaxAngularVelocity</a></span>&#8203;(double&nbsp;maxSpeed,
double&nbsp;furthestModuleX,
double&nbsp;furthestModuleY)</code></th>
<td class="colLast">
</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="#calculateMaxAngularVelocity(double,double,double)" class="member-name-link">calculateMaxAngularVelocity</a><wbr>(double&nbsp;maxSpeed,
double&nbsp;furthestModuleX,
double&nbsp;furthestModuleY)</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 maximum angular velocity.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#calculateMetersPerRotation(double,double,double)">calculateMetersPerRotation</a></span>&#8203;(double&nbsp;wheelDiameter,
double&nbsp;driveGearRatio,
double&nbsp;pulsePerRotation)</code></th>
<td class="colLast">
</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="#calculateMetersPerRotation(double,double,double)" class="member-name-link">calculateMetersPerRotation</a><wbr>(double&nbsp;wheelDiameter,
double&nbsp;driveGearRatio,
double&nbsp;pulsePerRotation)</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 meters per rotation for the integrated encoder.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>static edu.wpi.first.math.geometry.Translation2d</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#limitVelocity(edu.wpi.first.math.geometry.Translation2d,edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.geometry.Pose2d,double,double,double,edu.wpi.first.math.geometry.Translation3d,swervelib.parser.SwerveDriveConfiguration)">limitVelocity</a></span>&#8203;(edu.wpi.first.math.geometry.Translation2d&nbsp;commandedVelocity,
edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;fieldVelocity,
edu.wpi.first.math.geometry.Pose2d&nbsp;robotPose,
double&nbsp;loopTime,
double&nbsp;chassisMass,
double&nbsp;robotMass,
edu.wpi.first.math.geometry.Translation3d&nbsp;chassisCenterOfGravity,
<a href="../parser/SwerveDriveConfiguration.html" title="class in swervelib.parser">SwerveDriveConfiguration</a>&nbsp;config)</code></th>
<td class="colLast">
</div>
<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,double,edu.wpi.first.math.geometry.Translation3d,swervelib.parser.SwerveDriveConfiguration)" class="member-name-link">limitVelocity</a><wbr>(edu.wpi.first.math.geometry.Translation2d&nbsp;commandedVelocity,
edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;fieldVelocity,
edu.wpi.first.math.geometry.Pose2d&nbsp;robotPose,
double&nbsp;loopTime,
double&nbsp;chassisMass,
double&nbsp;robotMass,
edu.wpi.first.math.geometry.Translation3d&nbsp;chassisCenterOfGravity,
<a href="../parser/SwerveDriveConfiguration.html" title="class in swervelib.parser">SwerveDriveConfiguration</a>&nbsp;config)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Limits a commanded velocity to prevent exceeding the maximum acceleration given by
<a href="#calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d,double,double,edu.wpi.first.math.geometry.Translation3d,swervelib.parser.SwerveDriveConfiguration)"><code>calcMaxAccel(Rotation2d, double, double, Translation3d, SwerveDriveConfiguration)</code></a>.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SwerveMath</h4>
<pre>public&nbsp;SwerveMath()</pre>
</li>
</ul>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;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>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>SwerveMath</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SwerveMath</span>()</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="calculateAngleKV(double,double,double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>calculateAngleKV</h4>
<pre class="methodSignature">public static&nbsp;double&nbsp;calculateAngleKV&#8203;(double&nbsp;optimalVoltage,
double&nbsp;motorFreeSpeedRPM,
double&nbsp;angleGearRatio)</pre>
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="calculateAngleKV(double,double,double)">
<h3>calculateAngleKV</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">calculateAngleKV</span><wbr><span class="parameters">(double&nbsp;optimalVoltage,
double&nbsp;motorFreeSpeedRPM,
double&nbsp;angleGearRatio)</span></div>
<div class="block">Calculate the angle kV which will be multiplied by the radians per second for the feedforward. Volt * seconds /
degree <=> (maxVolts) / (maxSpeed)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
degree &lt;=> (maxVolts) / (maxSpeed)</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>optimalVoltage</code> - Optimal voltage to use when calculating the angle kV.</dd>
<dd><code>motorFreeSpeedRPM</code> - Motor free speed in Rotations per Minute.</dd>
<dd><code>angleGearRatio</code> - Angle gear ratio, the amount of times the motor as to turn for the wheel rotation.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dt>Returns:</dt>
<dd>angle kV for feedforward.</dd>
</dl>
</section>
</li>
</ul>
<a id="calculateMetersPerRotation(double,double,double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>calculateMetersPerRotation</h4>
<pre class="methodSignature">public static&nbsp;double&nbsp;calculateMetersPerRotation&#8203;(double&nbsp;wheelDiameter,
double&nbsp;driveGearRatio,
double&nbsp;pulsePerRotation)</pre>
<li>
<section class="detail" id="calculateMetersPerRotation(double,double,double)">
<h3>calculateMetersPerRotation</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">calculateMetersPerRotation</span><wbr><span class="parameters">(double&nbsp;wheelDiameter,
double&nbsp;driveGearRatio,
double&nbsp;pulsePerRotation)</span></div>
<div class="block">Calculate the meters per rotation for the integrated encoder. Calculation: 4in diameter wheels * pi [circumfrence]
/ gear ratio.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<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>
<dd><code>pulsePerRotation</code> - The number of encoder pulses per rotation. 1 if using an integrated encoder.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dt>Returns:</dt>
<dd>Meters per rotation for the drive motor.</dd>
</dl>
</section>
</li>
</ul>
<a id="applyDeadband(double,boolean,double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>applyDeadband</h4>
<pre class="methodSignature">public static&nbsp;double&nbsp;applyDeadband&#8203;(double&nbsp;value,
boolean&nbsp;scaled,
double&nbsp;deadband)</pre>
<li>
<section class="detail" id="applyDeadband(double,boolean,double)">
<h3>applyDeadband</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">applyDeadband</span><wbr><span class="parameters">(double&nbsp;value,
boolean&nbsp;scaled,
double&nbsp;deadband)</span></div>
<div class="block">Algebraically apply a deadband using a piece wise function.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dl class="notes">
<dt>Parameters:</dt>
<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>
<dt><span class="returnLabel">Returns:</span></dt>
<dt>Returns:</dt>
<dd>Value with deadband applied.</dd>
</dl>
</section>
</li>
</ul>
<a id="calculateDegreesPerSteeringRotation(double,double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>calculateDegreesPerSteeringRotation</h4>
<pre class="methodSignature">public static&nbsp;double&nbsp;calculateDegreesPerSteeringRotation&#8203;(double&nbsp;angleGearRatio,
double&nbsp;pulsePerRotation)</pre>
<li>
<section class="detail" id="calculateDegreesPerSteeringRotation(double,double)">
<h3>calculateDegreesPerSteeringRotation</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">calculateDegreesPerSteeringRotation</span><wbr><span class="parameters">(double&nbsp;angleGearRatio,
double&nbsp;pulsePerRotation)</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>
<dt><span class="paramLabel">Parameters:</span></dt>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>angleGearRatio</code> - The gear ratio of the steering motor.</dd>
<dd><code>pulsePerRotation</code> - The number of pulses in a complete rotation for the encoder, 1 if integrated.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dt>Returns:</dt>
<dd>Degrees per steering rotation for the angle motor.</dd>
</dl>
</section>
</li>
</ul>
<a id="calculateMaxAngularVelocity(double,double,double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>calculateMaxAngularVelocity</h4>
<pre class="methodSignature">public static&nbsp;double&nbsp;calculateMaxAngularVelocity&#8203;(double&nbsp;maxSpeed,
double&nbsp;furthestModuleX,
double&nbsp;furthestModuleY)</pre>
<li>
<section class="detail" id="calculateMaxAngularVelocity(double,double,double)">
<h3>calculateMaxAngularVelocity</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">calculateMaxAngularVelocity</span><wbr><span class="parameters">(double&nbsp;maxSpeed,
double&nbsp;furthestModuleX,
double&nbsp;furthestModuleY)</span></div>
<div class="block">Calculate the maximum angular velocity.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dl class="notes">
<dt>Parameters:</dt>
<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>
<dt><span class="returnLabel">Returns:</span></dt>
<dt>Returns:</dt>
<dd>Maximum angular velocity in rad/s.</dd>
</dl>
</section>
</li>
</ul>
<a id="calculateMaxAcceleration(double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>calculateMaxAcceleration</h4>
<pre class="methodSignature">public static&nbsp;double&nbsp;calculateMaxAcceleration&#8203;(double&nbsp;cof)</pre>
<li>
<section class="detail" id="calculateMaxAcceleration(double)">
<h3>calculateMaxAcceleration</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">calculateMaxAcceleration</span><wbr><span class="parameters">(double&nbsp;cof)</span></div>
<div class="block">Calculate the practical maximum acceleration of the robot using the wheel coefficient of friction.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>cof</code> - Coefficient of Friction of the wheel grip tape.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dt>Returns:</dt>
<dd>Practical maximum acceleration in m/s/s.</dd>
</dl>
</section>
</li>
</ul>
<a id="calculateMaxAcceleration(double,double,double,double,double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>calculateMaxAcceleration</h4>
<pre class="methodSignature">public static&nbsp;double&nbsp;calculateMaxAcceleration&#8203;(double&nbsp;stallTorqueNm,
double&nbsp;gearRatio,
double&nbsp;moduleCount,
double&nbsp;wheelDiameter,
double&nbsp;robotMass)</pre>
<li>
<section class="detail" id="calculateMaxAcceleration(double,double,double,double,double)">
<h3>calculateMaxAcceleration</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">calculateMaxAcceleration</span><wbr><span class="parameters">(double&nbsp;stallTorqueNm,
double&nbsp;gearRatio,
double&nbsp;moduleCount,
double&nbsp;wheelDiameter,
double&nbsp;robotMass)</span></div>
<div class="block">Calculate the maximum theoretical acceleration without friction.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>stallTorqueNm</code> - Stall torque of driving motor in nM.</dd>
<dd><code>gearRatio</code> - Gear ratio for driving motor number of motor rotations until one wheel rotation.</dd>
<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>
<dt><span class="returnLabel">Returns:</span></dt>
<dt>Returns:</dt>
<dd>Theoretical maximum acceleration in m/s/s.</dd>
</dl>
</section>
</li>
</ul>
<a id="calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d,double,double,edu.wpi.first.math.geometry.Translation3d,swervelib.parser.SwerveDriveConfiguration)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>calcMaxAccel</h4>
<pre class="methodSignature">private static&nbsp;double&nbsp;calcMaxAccel&#8203;(edu.wpi.first.math.geometry.Rotation2d&nbsp;angle,
double&nbsp;chassisMass,
double&nbsp;robotMass,
edu.wpi.first.math.geometry.Translation3d&nbsp;chassisCenterOfGravity,
<a href="../parser/SwerveDriveConfiguration.html" title="class in swervelib.parser">SwerveDriveConfiguration</a>&nbsp;config)</pre>
<li>
<section class="detail" id="calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d,double,double,edu.wpi.first.math.geometry.Translation3d,swervelib.parser.SwerveDriveConfiguration)">
<h3>calcMaxAccel</h3>
<div class="member-signature"><span class="modifiers">private static</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">calcMaxAccel</span><wbr><span class="parameters">(edu.wpi.first.math.geometry.Rotation2d&nbsp;angle,
double&nbsp;chassisMass,
double&nbsp;robotMass,
edu.wpi.first.math.geometry.Translation3d&nbsp;chassisCenterOfGravity,
<a href="../parser/SwerveDriveConfiguration.html" title="class in swervelib.parser">SwerveDriveConfiguration</a>&nbsp;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>
<dt><span class="paramLabel">Parameters:</span></dt>
<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>chassisMass</code> - Chassis mass in kg. (The weight of just the chassis not anything else)</dd>
<dd><code>robotMass</code> - The weight of the robot in kg. (Including manipulators, etc).</dd>
<dd><code>chassisCenterOfGravity</code> - Chassis center of gravity.</dd>
<dd><code>config</code> - The swerve drive configuration.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dt>Returns:</dt>
<dd>Maximum acceleration allowed in the robot direction.</dd>
</dl>
</section>
</li>
</ul>
<a id="limitVelocity(edu.wpi.first.math.geometry.Translation2d,edu.wpi.first.math.kinematics.ChassisSpeeds,edu.wpi.first.math.geometry.Pose2d,double,double,double,edu.wpi.first.math.geometry.Translation3d,swervelib.parser.SwerveDriveConfiguration)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>limitVelocity</h4>
<pre class="methodSignature">public static&nbsp;edu.wpi.first.math.geometry.Translation2d&nbsp;limitVelocity&#8203;(edu.wpi.first.math.geometry.Translation2d&nbsp;commandedVelocity,
edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;fieldVelocity,
edu.wpi.first.math.geometry.Pose2d&nbsp;robotPose,
double&nbsp;loopTime,
double&nbsp;chassisMass,
double&nbsp;robotMass,
edu.wpi.first.math.geometry.Translation3d&nbsp;chassisCenterOfGravity,
<a href="../parser/SwerveDriveConfiguration.html" title="class in swervelib.parser">SwerveDriveConfiguration</a>&nbsp;config)</pre>
<li>
<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,double,edu.wpi.first.math.geometry.Translation3d,swervelib.parser.SwerveDriveConfiguration)">
<h3>limitVelocity</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">edu.wpi.first.math.geometry.Translation2d</span>&nbsp;<span class="element-name">limitVelocity</span><wbr><span class="parameters">(edu.wpi.first.math.geometry.Translation2d&nbsp;commandedVelocity,
edu.wpi.first.math.kinematics.ChassisSpeeds&nbsp;fieldVelocity,
edu.wpi.first.math.geometry.Pose2d&nbsp;robotPose,
double&nbsp;loopTime,
double&nbsp;chassisMass,
double&nbsp;robotMass,
edu.wpi.first.math.geometry.Translation3d&nbsp;chassisCenterOfGravity,
<a href="../parser/SwerveDriveConfiguration.html" title="class in swervelib.parser">SwerveDriveConfiguration</a>&nbsp;config)</span></div>
<div class="block">Limits a commanded velocity to prevent exceeding the maximum acceleration given by
<a href="#calcMaxAccel(edu.wpi.first.math.geometry.Rotation2d,double,double,edu.wpi.first.math.geometry.Translation3d,swervelib.parser.SwerveDriveConfiguration)"><code>calcMaxAccel(Rotation2d, double, double, Translation3d, SwerveDriveConfiguration)</code></a>. Note that
this takes and returns field-relative velocities.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dl class="notes">
<dt>Parameters:</dt>
<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>
@@ -502,80 +375,20 @@ extends <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/ja
<dd><code>robotMass</code> - The weight of the robot in kg. (Including manipulators, etc).</dd>
<dd><code>chassisCenterOfGravity</code> - Chassis center of gravity.</dd>
<dd><code>config</code> - The swerve drive configuration.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dt>Returns:</dt>
<dd>The limited velocity. This is either the commanded velocity, if attainable, or the closest attainable
velocity.</dd>
</dl>
</li>
</ul>
</section>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
</section>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-files/index-1.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</main>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>

View File

@@ -1,386 +1,217 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.17) on Mon Feb 13 17:20:01 CST 2023 -->
<!-- Generated by javadoc (17) on Tue Feb 14 22:01:24 CST 2023 -->
<title>SwerveModuleState2</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2023-02-13">
<meta name="dc.created" content="2023-02-14">
<meta name="description" content="declaration: package: swervelib.math, class: SwerveModuleState2">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../jquery/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SwerveModuleState2";
}
}
catch(err) {
}
//-->
var pathtoroot = "../../";
var useModuleDirectories = true;
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<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">
<li><a href="../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-files/index-1.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
<li><a href="../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div class="sub-nav">
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="subNavList">
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<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">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">swervelib.math</a></div>
<h2 title="Class SwerveModuleState2" class="title">Class SwerveModuleState2</h2>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">swervelib.math</a></div>
<h1 title="Class SwerveModuleState2" class="title">Class SwerveModuleState2</h1>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>edu.wpi.first.math.kinematics.SwerveModuleState</li>
<li>
<ul class="inheritance">
<li>swervelib.math.SwerveModuleState2</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<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">edu.wpi.first.math.kinematics.SwerveModuleState
<div class="inheritance">swervelib.math.SwerveModuleState2</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang" class="externalLink">Comparable</a>&lt;edu.wpi.first.math.kinematics.SwerveModuleState&gt;</code></dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;edu.wpi.first.math.kinematics.SwerveModuleState&gt;</code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">SwerveModuleState2</span>
extends edu.wpi.first.math.kinematics.SwerveModuleState</pre>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SwerveModuleState2</span>
<span class="extends-implements">extends edu.wpi.first.math.kinematics.SwerveModuleState</span></div>
<div class="block">Second order kinematics swerve module state.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>edu.wpi.first.math.geometry.Rotation2d</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#angle">angle</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#omegaRadPerSecond">omegaRadPerSecond</a></span></code></th>
<td class="colLast">
<div class="block">Rad per sec</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#speedMetersPerSecond">speedMetersPerSecond</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">SwerveModuleState2</a></span>()</code></th>
<td class="colLast">
<div class="block">Constructs a SwerveModuleState with zeros for speed and angle.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(double,edu.wpi.first.math.geometry.Rotation2d,double)">SwerveModuleState2</a></span>&#8203;(double&nbsp;speedMetersPerSecond,
edu.wpi.first.math.geometry.Rotation2d&nbsp;angle,
double&nbsp;omegaRadPerSecond)</code></th>
<td class="colLast">
<div class="block">Constructs a SwerveModuleState.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.edu.wpi.first.math.kinematics.SwerveModuleState">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;edu.wpi.first.math.kinematics.SwerveModuleState</h3>
<code>compareTo, equals, hashCode, optimize, toString</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>edu.wpi.first.math.geometry.Rotation2d</code></div>
<div class="col-second even-row-color"><code><a href="#angle" class="member-name-link">angle</a></code></div>
<div class="col-last even-row-color">
<div class="block">Swerve module angle as a <code>Rotation2d</code>.</div>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="speedMetersPerSecond">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>speedMetersPerSecond</h4>
<pre>public&nbsp;double speedMetersPerSecond</pre>
</li>
</ul>
<a id="omegaRadPerSecond">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>omegaRadPerSecond</h4>
<pre>public&nbsp;double omegaRadPerSecond</pre>
<div class="col-first odd-row-color"><code>double</code></div>
<div class="col-second odd-row-color"><code><a href="#omegaRadPerSecond" class="member-name-link">omegaRadPerSecond</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Rad per sec</div>
</div>
<div class="col-first even-row-color"><code>double</code></div>
<div class="col-second even-row-color"><code><a href="#speedMetersPerSecond" class="member-name-link">speedMetersPerSecond</a></code></div>
<div class="col-last even-row-color">
<div class="block">Swerve module speed in meters per second.</div>
</div>
</div>
</section>
</li>
</ul>
<a id="angle">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>angle</h4>
<pre>public&nbsp;edu.wpi.first.math.geometry.Rotation2d angle</pre>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<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">SwerveModuleState2</a>()</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a SwerveModuleState with zeros for speed and angle.</div>
</div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(double,edu.wpi.first.math.geometry.Rotation2d,double)" class="member-name-link">SwerveModuleState2</a><wbr>(double&nbsp;speedMetersPerSecond,
edu.wpi.first.math.geometry.Rotation2d&nbsp;angle,
double&nbsp;omegaRadPerSecond)</code></div>
<div class="col-last odd-row-color">
<div class="block">Constructs a SwerveModuleState.</div>
</div>
</div>
</section>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-edu.wpi.first.math.kinematics.SwerveModuleState">Methods inherited from class&nbsp;edu.wpi.first.math.kinematics.SwerveModuleState</h3>
<code>compareTo, equals, hashCode, optimize, toString</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;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#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#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#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>
</section>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SwerveModuleState2</h4>
<pre>public&nbsp;SwerveModuleState2()</pre>
<div class="block">Constructs a SwerveModuleState with zeros for speed and angle.</div>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="speedMetersPerSecond">
<h3>speedMetersPerSecond</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">speedMetersPerSecond</span></div>
<div class="block">Swerve module speed in meters per second.</div>
</section>
</li>
<li>
<section class="detail" id="omegaRadPerSecond">
<h3>omegaRadPerSecond</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">omegaRadPerSecond</span></div>
<div class="block">Rad per sec</div>
</section>
</li>
<li>
<section class="detail" id="angle">
<h3>angle</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">edu.wpi.first.math.geometry.Rotation2d</span>&nbsp;<span class="element-name">angle</span></div>
<div class="block">Swerve module angle as a <code>Rotation2d</code>.</div>
</section>
</li>
</ul>
<a id="&lt;init&gt;(double,edu.wpi.first.math.geometry.Rotation2d,double)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SwerveModuleState2</h4>
<pre>public&nbsp;SwerveModuleState2&#8203;(double&nbsp;speedMetersPerSecond,
edu.wpi.first.math.geometry.Rotation2d&nbsp;angle,
double&nbsp;omegaRadPerSecond)</pre>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>SwerveModuleState2</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SwerveModuleState2</span>()</div>
<div class="block">Constructs a SwerveModuleState with zeros for speed and angle.</div>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(double,edu.wpi.first.math.geometry.Rotation2d,double)">
<h3>SwerveModuleState2</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SwerveModuleState2</span><wbr><span class="parameters">(double&nbsp;speedMetersPerSecond,
edu.wpi.first.math.geometry.Rotation2d&nbsp;angle,
double&nbsp;omegaRadPerSecond)</span></div>
<div class="block">Constructs a SwerveModuleState.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>speedMetersPerSecond</code> - The speed of the wheel of the module.</dd>
<dd><code>angle</code> - The angle of the module.</dd>
<dd><code>omegaRadPerSecond</code> - The angular velocity of the module.</dd>
</dl>
</li>
</ul>
</section>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
</section>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-files/index-1.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</main>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>

View File

@@ -1,180 +1,112 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.17) on Mon Feb 13 17:20:01 CST 2023 -->
<!-- Generated by javadoc (17) on Tue Feb 14 22:01:24 CST 2023 -->
<title>swervelib.math</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2023-02-13">
<meta name="dc.created" content="2023-02-14">
<meta name="description" content="declaration: package: swervelib.math">
<meta name="generator" content="javadoc/PackageWriterImpl">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../jquery/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="swervelib.math";
}
}
catch(err) {
}
//-->
var pathtoroot = "../../";
var useModuleDirectories = true;
<body class="package-declaration-page">
<script type="text/javascript">var pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<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">
<li><a href="../../index.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li class="nav-bar-cell1-rev">Package</li>
<li>Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-files/index-1.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
<li><a href="../../help-doc.html#package">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div class="sub-nav">
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<ul class="sub-nav-list">
<li>Package:&nbsp;</li>
<li>Description&nbsp;|&nbsp;</li>
<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</div>
<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">
</div>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Package" class="title">Package&nbsp;swervelib.math</h1>
<h1 title="Package swervelib.math" class="title">Package swervelib.math</h1>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="typeSummary">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="SwerveKinematics2.html" title="class in swervelib.math">SwerveKinematics2</a></th>
<td class="colLast">
<hr>
<div class="package-signature">package <span class="element-name">swervelib.math</span></div>
<section class="summary">
<ul class="summary-list">
<li>
<div id="related-package-summary">
<div class="caption"><span>Related Packages</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="../package-summary.html">swervelib</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="../encoders/package-summary.html">swervelib.encoders</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="../imu/package-summary.html">swervelib.imu</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="../motors/package-summary.html">swervelib.motors</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="../parser/package-summary.html">swervelib.parser</a></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</div>
</li>
<li>
<div id="class-summary">
<div class="caption"><span>Classes</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SwerveKinematics2.html" title="class in swervelib.math">SwerveKinematics2</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Clone of WPI SwerveKinematics, which implements second order kinematics when calculating modules states from chassis
speed.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="SwerveMath.html" title="class in swervelib.math">SwerveMath</a></th>
<td class="colLast">
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SwerveMath.html" title="class in swervelib.math">SwerveMath</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Mathematical functions which pertain to swerve drive.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a></th>
<td class="colLast">
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SwerveModuleState2.html" title="class in swervelib.math">SwerveModuleState2</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Second order kinematics swerve module state.</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</li>
</ul>
</div>
</section>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../index.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-files/index-1.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>

View File

@@ -1,172 +1,81 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.17) on Mon Feb 13 17:20:01 CST 2023 -->
<!-- Generated by javadoc (17) on Tue Feb 14 22:01:24 CST 2023 -->
<title>swervelib.math Class Hierarchy</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2023-02-13">
<meta name="dc.created" content="2023-02-14">
<meta name="description" content="tree: package: swervelib.math">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../jquery/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="swervelib.math Class Hierarchy";
}
}
catch(err) {
}
//-->
var pathtoroot = "../../";
var useModuleDirectories = true;
<body class="package-tree-page">
<script type="text/javascript">var pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<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">
<li><a href="../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li>Class</li>
<li class="navBarCell1Rev">Tree</li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../../index-files/index-1.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
<li><a href="../../help-doc.html#tree">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="sub-nav">
<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">
</div>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package swervelib.math</h1>
<span class="packageHierarchyLabel">Package Hierarchies:</span>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal">
<li><a href="../../overview-tree.html">All Packages</a></li>
</ul>
</div>
<div class="contentContainer">
<section>
<section class="hierarchy">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink"><span class="typeNameLink">Object</span></a>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">edu.wpi.first.math.kinematics.SwerveDriveKinematics
<ul>
<li class="circle">swervelib.math.<a href="SwerveKinematics2.html" title="class in swervelib.math"><span class="typeNameLink">SwerveKinematics2</span></a></li>
<li class="circle">swervelib.math.<a href="SwerveKinematics2.html" class="type-name-link" title="class in swervelib.math">SwerveKinematics2</a></li>
</ul>
</li>
<li class="circle">swervelib.math.<a href="SwerveMath.html" title="class in swervelib.math"><span class="typeNameLink">SwerveMath</span></a></li>
<li class="circle">edu.wpi.first.math.kinematics.SwerveModuleState (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang" class="externalLink">Comparable</a>&lt;T&gt;)
<li class="circle">swervelib.math.<a href="SwerveMath.html" class="type-name-link" title="class in swervelib.math">SwerveMath</a></li>
<li class="circle">edu.wpi.first.math.kinematics.SwerveModuleState (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;)
<ul>
<li class="circle">swervelib.math.<a href="SwerveModuleState2.html" title="class in swervelib.math"><span class="typeNameLink">SwerveModuleState2</span></a></li>
<li class="circle">swervelib.math.<a href="SwerveModuleState2.html" class="type-name-link" title="class in swervelib.math">SwerveModuleState2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</section>
</div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li>Class</li>
<li class="navBarCell1Rev">Tree</li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-files/index-1.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>