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>