Updated javadocs

This commit is contained in:
thenetworkgrinch
2023-08-09 16:23:30 -05:00
parent de4e35db62
commit 38c7bdba7d
156 changed files with 3972 additions and 33744 deletions

View File

@@ -1,18 +1,17 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) on Sat Apr 08 13:46:47 CDT 2023 -->
<title>SwervePoseEstimator2</title>
<!-- Generated by javadoc (17) -->
<title>SwervePoseEstimator2 (YAGSL-Lib API)</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-04-08">
<meta name="description" content="declaration: package: swervelib.math, class: SwervePoseEstimator2">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../stylesheet.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="../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
@@ -36,7 +35,7 @@ loadScripts(document, 'script');</script>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../index-files/index-1.html">Index</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html#class">Help</a></li>
</ul>
</div>
@@ -44,14 +43,14 @@ loadScripts(document, 'script');</script>
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&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="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&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>
@@ -78,70 +77,11 @@ loadScripts(document, 'script');</script>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SwervePoseEstimator2</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">Clone of <code>SwerveDrivePoseEstimator</code> which takes into account gyroscope pitch and roll to achieve a more
accurate estimation, originally made by Team 1466.</div>
<div class="block">Clone of <code>SwerveDrivePoseEstimator</code> which takes into account gyroscope pitch and roll to
achieve a more accurate estimation, originally made by Team 1466.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="caption"><span>Nested Classes</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">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private class&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="SwervePoseEstimator2.InterpolationRecord.html" class="type-name-link" title="class in swervelib.math">SwervePoseEstimator2.InterpolationRecord</a></code></div>
<div class="col-last even-row-color">
<div class="block">Represents an odometry record.</div>
</div>
</div>
</section>
</li>
<!-- =========== FIELD SUMMARY =========== -->
<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 edu.wpi.first.math.kinematics.SwerveDriveKinematics</code></div>
<div class="col-second even-row-color"><code><a href="#m_kinematics" class="member-name-link">m_kinematics</a></code></div>
<div class="col-last even-row-color">
<div class="block">Swerve drive kinematics.</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 final <a href="SwerveDriveOdometry2.html" title="class in swervelib.math">SwerveDriveOdometry2</a></code></div>
<div class="col-second even-row-color"><code><a href="#m_odometry" class="member-name-link">m_odometry</a></code></div>
<div class="col-last even-row-color">
<div class="block">Enhanced swerve drive odometry.</div>
</div>
<div class="col-first odd-row-color"><code>private final edu.wpi.first.math.interpolation.TimeInterpolatableBuffer&lt;<a href="SwervePoseEstimator2.InterpolationRecord.html" title="class in swervelib.math">SwervePoseEstimator2.InterpolationRecord</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#m_poseBuffer" class="member-name-link">m_poseBuffer</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Interpolation buffer.</div>
</div>
<div class="col-first even-row-color"><code>private final edu.wpi.first.math.Matrix&lt;edu.wpi.first.math.numbers.N3,<wbr>edu.wpi.first.math.numbers.N1&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#m_q" class="member-name-link">m_q</a></code></div>
<div class="col-last even-row-color">
<div class="block">Matrix quotient.</div>
</div>
<div class="col-first odd-row-color"><code>private final edu.wpi.first.math.Matrix&lt;edu.wpi.first.math.numbers.N3,<wbr>edu.wpi.first.math.numbers.N3&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#m_visionK" class="member-name-link">m_visionK</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Vision standard deviations.</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
@@ -155,7 +95,8 @@ loadScripts(document, 'script');</script>
edu.wpi.first.math.kinematics.SwerveModulePosition[]&nbsp;modulePositions,
edu.wpi.first.math.geometry.Pose2d&nbsp;initialPoseMeters)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a SwerveDrivePoseEstimator with default standard deviations for the model and vision measurements.</div>
<div class="block">Constructs a SwerveDrivePoseEstimator with default standard deviations for the model and vision
measurements.</div>
</div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(edu.wpi.first.math.kinematics.SwerveDriveKinematics,edu.wpi.first.math.geometry.Rotation2d,edu.wpi.first.math.kinematics.SwerveModulePosition%5B%5D,edu.wpi.first.math.geometry.Pose2d,edu.wpi.first.math.Matrix,edu.wpi.first.math.Matrix)" class="member-name-link">SwervePoseEstimator2</a><wbr>(edu.wpi.first.math.kinematics.SwerveDriveKinematics&nbsp;kinematics,
edu.wpi.first.math.geometry.Rotation2d&nbsp;gyroAngle,
@@ -239,56 +180,6 @@ loadScripts(document, 'script');</script>
</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_kinematics">
<h3>m_kinematics</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">edu.wpi.first.math.kinematics.SwerveDriveKinematics</span>&nbsp;<span class="element-name">m_kinematics</span></div>
<div class="block">Swerve drive kinematics.</div>
</section>
</li>
<li>
<section class="detail" id="m_odometry">
<h3>m_odometry</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="SwerveDriveOdometry2.html" title="class in swervelib.math">SwerveDriveOdometry2</a></span>&nbsp;<span class="element-name">m_odometry</span></div>
<div class="block">Enhanced swerve drive odometry.</div>
</section>
</li>
<li>
<section class="detail" id="m_q">
<h3>m_q</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">edu.wpi.first.math.Matrix&lt;edu.wpi.first.math.numbers.N3,<wbr>edu.wpi.first.math.numbers.N1&gt;</span>&nbsp;<span class="element-name">m_q</span></div>
<div class="block">Matrix quotient.</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_poseBuffer">
<h3>m_poseBuffer</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">edu.wpi.first.math.interpolation.TimeInterpolatableBuffer&lt;<a href="SwervePoseEstimator2.InterpolationRecord.html" title="class in swervelib.math">SwervePoseEstimator2.InterpolationRecord</a>&gt;</span>&nbsp;<span class="element-name">m_poseBuffer</span></div>
<div class="block">Interpolation buffer.</div>
</section>
</li>
<li>
<section class="detail" id="m_visionK">
<h3>m_visionK</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">edu.wpi.first.math.Matrix&lt;edu.wpi.first.math.numbers.N3,<wbr>edu.wpi.first.math.numbers.N3&gt;</span>&nbsp;<span class="element-name">m_visionK</span></div>
<div class="block">Vision standard deviations.</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
@@ -301,11 +192,12 @@ loadScripts(document, 'script');</script>
edu.wpi.first.math.geometry.Rotation2d&nbsp;gyroAngle,
edu.wpi.first.math.kinematics.SwerveModulePosition[]&nbsp;modulePositions,
edu.wpi.first.math.geometry.Pose2d&nbsp;initialPoseMeters)</span></div>
<div class="block">Constructs a SwerveDrivePoseEstimator with default standard deviations for the model and vision measurements.
<div class="block">Constructs a SwerveDrivePoseEstimator with default standard deviations for the model and vision
measurements.
<p>The default standard deviations of the model states are 0.1 meters for x, 0.1 meters for y,
and 0.1 radians for heading. The default standard deviations of the vision measurements are 0.9 meters for x, 0.9
meters for y, and 0.9 radians for heading.</div>
and 0.1 radians for heading. The default standard deviations of the vision measurements are 0.9
meters for x, 0.9 meters for y, and 0.9 radians for heading.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>kinematics</code> - A correctly-configured kinematics object for your drivetrain.</dd>
@@ -331,12 +223,12 @@ loadScripts(document, 'script');</script>
<dd><code>gyroAngle</code> - The current gyro angle.</dd>
<dd><code>modulePositions</code> - The current distance and rotation measurements of the swerve modules.</dd>
<dd><code>initialPoseMeters</code> - The starting pose estimate.</dd>
<dd><code>stateStdDevs</code> - Standard deviations of the pose estimate (x position in meters, y position in
meters, and heading in radians). Increase these numbers to trust your state
estimate less.</dd>
<dd><code>visionMeasurementStdDevs</code> - Standard deviations of the vision pose measurement (x position in meters, y
position in meters, and heading in radians). Increase these numbers to trust the
vision pose measurement less.</dd>
<dd><code>stateStdDevs</code> - Standard deviations of the pose estimate (x position in meters, y position
in meters, and heading in radians). Increase these numbers to trust your state estimate
less.</dd>
<dd><code>visionMeasurementStdDevs</code> - Standard deviations of the vision pose measurement (x position
in meters, y position in meters, and heading in radians). Increase these numbers to trust
the vision pose measurement less.</dd>
</dl>
</section>
</li>
@@ -352,13 +244,14 @@ loadScripts(document, 'script');</script>
<section class="detail" id="setVisionMeasurementStdDevs(edu.wpi.first.math.Matrix)">
<h3>setVisionMeasurementStdDevs</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setVisionMeasurementStdDevs</span><wbr><span class="parameters">(edu.wpi.first.math.Matrix&lt;edu.wpi.first.math.numbers.N3,<wbr>edu.wpi.first.math.numbers.N1&gt;&nbsp;visionMeasurementStdDevs)</span></div>
<div class="block">Sets the pose estimator's trust of global measurements. This might be used to change trust in vision measurements
after the autonomous period, or to change trust as distance to a vision target increases.</div>
<div class="block">Sets the pose estimator's trust of global measurements. This might be used to change trust in
vision measurements after the autonomous period, or to change trust as distance to a vision
target increases.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>visionMeasurementStdDevs</code> - Standard deviations of the vision measurements. Increase these numbers to trust
global measurements from vision less. This matrix is in the form [x, y, theta]^T,
with units in meters and radians.</dd>
<dd><code>visionMeasurementStdDevs</code> - Standard deviations of the vision measurements. Increase these
numbers to trust global measurements from vision less. This matrix is in the form [x, y,
theta]^T, with units in meters and radians.</dd>
</dl>
</section>
</li>
@@ -396,23 +289,23 @@ loadScripts(document, 'script');</script>
<h3>addVisionMeasurement</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addVisionMeasurement</span><wbr><span class="parameters">(edu.wpi.first.math.geometry.Pose2d&nbsp;visionRobotPoseMeters,
double&nbsp;timestampSeconds)</span></div>
<div class="block">Adds a vision measurement to the Kalman Filter. This will correct the odometry pose estimate while still accounting
for measurement noise.
<div class="block">Adds a vision measurement to the Kalman Filter. This will correct the odometry pose estimate
while still accounting for measurement noise.
<p>This method can be called as infrequently as you want, as long as you are calling <code>SwerveDrivePoseEstimator.update(edu.wpi.first.math.geometry.Rotation2d, edu.wpi.first.math.kinematics.SwerveModulePosition[])</code> every loop.
<p>To promote stability of the pose estimate and make it robust to bad vision data, we
recommend only adding vision measurements that are already within one meter or so of the current pose estimate.</div>
recommend only adding vision measurements that are already within one meter or so of the
current pose estimate.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>visionRobotPoseMeters</code> - The pose of the robot as measured by the vision camera.</dd>
<dd><code>timestampSeconds</code> - The timestamp of the vision measurement in seconds. Note that if you don't use your
own time source by calling
<code>SwerveDrivePoseEstimator.updateWithTime(double, Rotation2d, SwerveModulePosition[])</code> then you must use a timestamp with an epoch since FPGA
startup (i.e., the epoch of this timestamp is the same epoch as
<code>Timer.getFPGATimestamp()</code>.) This means that you should
use <code>Timer.getFPGATimestamp()</code> as your time source or sync
the epochs.</dd>
<dd><code>timestampSeconds</code> - The timestamp of the vision measurement in seconds. Note that if you
don't use your own time source by calling <code>SwerveDrivePoseEstimator.updateWithTime(double, Rotation2d, SwerveModulePosition[])</code> then
you must use a timestamp with an epoch since FPGA startup (i.e., the epoch of this
timestamp is the same epoch as <code>Timer.getFPGATimestamp()</code>.)
This means that you should use <code>Timer.getFPGATimestamp()</code> as
your time source or sync the epochs.</dd>
</dl>
</section>
</li>
@@ -422,30 +315,29 @@ loadScripts(document, 'script');</script>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addVisionMeasurement</span><wbr><span class="parameters">(edu.wpi.first.math.geometry.Pose2d&nbsp;visionRobotPoseMeters,
double&nbsp;timestampSeconds,
edu.wpi.first.math.Matrix&lt;edu.wpi.first.math.numbers.N3,<wbr>edu.wpi.first.math.numbers.N1&gt;&nbsp;visionMeasurementStdDevs)</span></div>
<div class="block">Adds a vision measurement to the Kalman Filter. This will correct the odometry pose estimate while still accounting
for measurement noise.
<div class="block">Adds a vision measurement to the Kalman Filter. This will correct the odometry pose estimate
while still accounting for measurement noise.
<p>This method can be called as infrequently as you want, as long as you are calling <code>SwerveDrivePoseEstimator.update(edu.wpi.first.math.geometry.Rotation2d, edu.wpi.first.math.kinematics.SwerveModulePosition[])</code> every loop.
<p>To promote stability of the pose estimate and make it robust to bad vision data, we
recommend only adding vision measurements that are already within one meter or so of the current pose estimate.
recommend only adding vision measurements that are already within one meter or so of the
current pose estimate.
<p>Note that the vision measurement standard deviations passed into this method will continue
to apply to future measurements until a subsequent call to
<code>SwerveDrivePoseEstimator.setVisionMeasurementStdDevs(Matrix)</code> or this method.</div>
to apply to future measurements until a subsequent call to <code>PoseEstimator.setVisionMeasurementStdDevs(Matrix)</code> or this method.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>visionRobotPoseMeters</code> - The pose of the robot as measured by the vision camera.</dd>
<dd><code>timestampSeconds</code> - The timestamp of the vision measurement in seconds. Note that if you don't use your
own time source by calling
<code>SwerveDrivePoseEstimator.updateWithTime(double, Rotation2d, SwerveModulePosition[])</code>, then you must use a timestamp with an epoch since FPGA
startup (i.e., the epoch of this timestamp is the same epoch as
<code>Timer.getFPGATimestamp()</code>). This means that you should
use <code>Timer.getFPGATimestamp()</code> as your time source in
this case.</dd>
<dd><code>visionMeasurementStdDevs</code> - Standard deviations of the vision pose measurement (x position in meters, y
position in meters, and heading in radians). Increase these numbers to trust the
vision pose measurement less.</dd>
<dd><code>timestampSeconds</code> - The timestamp of the vision measurement in seconds. Note that if you
don't use your own time source by calling <code>SwerveDrivePoseEstimator.updateWithTime(double, Rotation2d, SwerveModulePosition[])</code>, then
you must use a timestamp with an epoch since FPGA startup (i.e., the epoch of this
timestamp is the same epoch as <code>Timer.getFPGATimestamp()</code>).
This means that you should use <code>Timer.getFPGATimestamp()</code> as
your time source in this case.</dd>
<dd><code>visionMeasurementStdDevs</code> - Standard deviations of the vision pose measurement (x position
in meters, y position in meters, and heading in radians). Increase these numbers to trust
the vision pose measurement less.</dd>
</dl>
</section>
</li>
@@ -456,7 +348,8 @@ loadScripts(document, 'script');</script>
edu.wpi.first.math.geometry.Rotation2d&nbsp;gyroPitch,
edu.wpi.first.math.geometry.Rotation2d&nbsp;gyroRoll,
edu.wpi.first.math.kinematics.SwerveModulePosition[]&nbsp;modulePositions)</span></div>
<div class="block">Updates the pose estimator with wheel encoder and gyro information. This should be called every loop.</div>
<div class="block">Updates the pose estimator with wheel encoder and gyro information. This should be called every
loop.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>gyroAngle</code> - The current gyro angle.</dd>
@@ -476,7 +369,8 @@ loadScripts(document, 'script');</script>
edu.wpi.first.math.geometry.Rotation2d&nbsp;gyroPitch,
edu.wpi.first.math.geometry.Rotation2d&nbsp;gyroRoll,
edu.wpi.first.math.kinematics.SwerveModulePosition[]&nbsp;modulePositions)</span></div>
<div class="block">Updates the pose estimator with wheel encoder and gyro information. This should be called every loop.</div>
<div class="block">Updates the pose estimator with wheel encoder and gyro information. This should be called every
loop.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>currentTimeSeconds</code> - Time at which this method was called, in seconds.</dd>