diff --git a/photon-lib/src/main/java/org/photonvision/PhotonPoseEstimator.java b/photon-lib/src/main/java/org/photonvision/PhotonPoseEstimator.java
index 8bbdaf5744..0eecc02880 100644
--- a/photon-lib/src/main/java/org/photonvision/PhotonPoseEstimator.java
+++ b/photon-lib/src/main/java/org/photonvision/PhotonPoseEstimator.java
@@ -250,10 +250,16 @@ public void setRobotToCameraTransform(Transform3d robotToCamera) {
/**
* Poll data from the configured cameras and update the estimated position of the robot. Returns
- * empty if there are no cameras set or no targets were found from the cameras.
+ * empty if:
*
- * @return an EstimatedRobotPose with an estimated pose, the timestamp, and targets used to create
- * the estimate
+ *
+ * - New data has not been received since the last call to {@code update()}.
+ *
- No targets were found from the camera
+ *
- There is no camera set
+ *
+ *
+ * @return an {@link EstimatedRobotPose} with an estimated pose, timestamp, and targets used to
+ * create the estimate.
*/
public Optional update() {
if (camera == null) {
@@ -267,12 +273,17 @@ public Optional update() {
}
/**
- * Updates the estimated position of the robot. Returns empty if there are no cameras set or no
- * targets were found from the cameras.
+ * Updates the estimated position of the robot. Returns empty if:
+ *
+ *
+ * - The timestamp of the provided pipeline result is the same as in the previous call to
+ * {@code update()}.
+ *
- No targets were found in the pipeline results.
+ *
*
* @param cameraResult The latest pipeline result from the camera
- * @return an EstimatedRobotPose with an estimated pose, and information about the camera(s) and
- * pipeline results used to create the estimate
+ * @return an {@link EstimatedRobotPose} with an estimated pose, timestamp, and targets used to
+ * create the estimate.
*/
public Optional update(PhotonPipelineResult cameraResult) {
if (camera == null) return update(cameraResult, Optional.empty(), Optional.empty());
@@ -280,21 +291,25 @@ public Optional update(PhotonPipelineResult cameraResult) {
}
/**
- * Updates the estimated position of the robot. Returns empty if there are no cameras set or no
- * targets were found from the cameras.
+ * Updates the estimated position of the robot. Returns empty if:
*
- * @param cameraResult The latest pipeline result from the camera
- * @param cameraMatrixData Camera calibration data that can be used in the case of no assigned
+ *
+ * - The timestamp of the provided pipeline result is the same as in the previous call to
+ * {@code update()}.
+ *
- No targets were found in the pipeline results.
+ *
+ *
+ * @param cameraMatrix Camera calibration data that can be used in the case of no assigned
* PhotonCamera.
- * @param coeffsData Camera calibration data that can be used in the case of no assigned
+ * @param distCoeffs Camera calibration data that can be used in the case of no assigned
* PhotonCamera
- * @return an EstimatedRobotPose with an estimated pose, and information about the camera(s) and
- * pipeline results used to create the estimate
+ * @return an {@link EstimatedRobotPose} with an estimated pose, timestamp, and targets used to
+ * create the estimate.
*/
public Optional update(
PhotonPipelineResult cameraResult,
- Optional> cameraMatrixData,
- Optional> coeffsData) {
+ Optional> cameraMatrix,
+ Optional> distCoeffs) {
// Time in the past -- give up, since the following if expects times > 0
if (cameraResult.getTimestampSeconds() < 0) {
return Optional.empty();
@@ -316,13 +331,13 @@ public Optional update(
return Optional.empty();
}
- return update(cameraResult, cameraMatrixData, coeffsData, this.primaryStrategy);
+ return update(cameraResult, cameraMatrix, distCoeffs, this.primaryStrategy);
}
private Optional update(
PhotonPipelineResult cameraResult,
- Optional> cameraMatrixData,
- Optional> coeffsData,
+ Optional> cameraMatrix,
+ Optional> distCoeffs,
PoseStrategy strat) {
Optional estimatedPose;
switch (strat) {
@@ -343,7 +358,7 @@ private Optional update(
estimatedPose = averageBestTargetsStrategy(cameraResult);
break;
case MULTI_TAG_PNP:
- estimatedPose = multiTagPNPStrategy(cameraResult, cameraMatrixData, coeffsData);
+ estimatedPose = multiTagPNPStrategy(cameraResult, cameraMatrix, distCoeffs);
break;
default:
DriverStation.reportError(