Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vision #34

Closed
wants to merge 33 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
79dbe4e
feat: NetworkTable
Hannahjjj97 Jan 25, 2025
f743598
fest: get value
Hannahjjj97 Jan 25, 2025
20f3e95
style: file location
Hannahjjj97 Jan 25, 2025
1abd3e8
style: Indentation
Hannahjjj97 Jan 25, 2025
c02d728
style: ModifierOrder
Hannahjjj97 Jan 25, 2025
73787c1
style: ModifierOrder
Hannahjjj97 Jan 25, 2025
d806f51
style: Unused import
Hannahjjj97 Jan 25, 2025
81dc12c
style: Unused Import
Hannahjjj97 Jan 25, 2025
e64acfa
style: Lowercase and Capital
Hannahjjj97 Jan 25, 2025
c20fbfe
style: Lowercase and Capital
Hannahjjj97 Jan 25, 2025
6f675c0
other: Update checkstyle.xml to allow PID
kennhung Jan 25, 2025
66412ff
fix: checkstyle.xml
kennhung Jan 25, 2025
e69c685
feat: 把 CoralShooterSubsystem 建構式並放上SmartDashboard
Dinnerson Jan 26, 2025
570a590
style: Fix RobotContainer space error
Dinnerson Jan 26, 2025
57f751c
feat: add vendor
Hannahjjj97 Jan 26, 2025
e60c51d
feat: Steaming
Hannahjjj97 Jan 26, 2025
43d5968
feat: PhotonCamera
Hannahjjj97 Jan 26, 2025
7fff1ea
feat: start steaming
Hannahjjj97 Jan 27, 2025
07d67e5
feat: TagTracking
Hannahjjj97 Feb 3, 2025
1b3742c
feat: photonVision TagTracking
Hannahjjj97 Feb 4, 2025
37ecbce
style: TagTrackingPhotonVision
capy0827 Feb 4, 2025
1459044
Merge branch 'main' into Vision
Hannahjjj97 Feb 5, 2025
b549800
style: Constants TagTracking
Hannahjjj97 Feb 5, 2025
514239a
style: TagTrackingPhotonVision
Hannahjjj97 Feb 5, 2025
62f7b7e
style: package name
Hannahjjj97 Feb 5, 2025
d2d9599
style: import Order
Hannahjjj97 Feb 5, 2025
a9c6117
style: import order
Hannahjjj97 Feb 5, 2025
365184e
style: indentation
Hannahjjj97 Feb 5, 2025
c9e04e7
style: Member name
Hannahjjj97 Feb 5, 2025
7654088
fix: member name
Hannahjjj97 Feb 5, 2025
b88e82f
style: member name
Hannahjjj97 Feb 5, 2025
9d71638
fix: member name
Hannahjjj97 Feb 5, 2025
f54d49a
style: import order
Hannahjjj97 Feb 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/main/java/frc/robot/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,11 @@ public static final class PowerDistributionConstant {
public static final double kRampMotorMaxCurrent = 40;
}

public static final class TagTrackingConstant {
public static final double kRampHeight = 0.0;
public static final double kCamHeight = 0.615;
public static final double kCamPitch = 10.0;
public static final double kCamToRampDistance = 0.11;
}

}
2 changes: 2 additions & 0 deletions src/main/java/frc/robot/Robot.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

package frc.robot;

import edu.wpi.first.cameraserver.CameraServer;
import edu.wpi.first.wpilibj.DataLogManager;
import edu.wpi.first.wpilibj.DriverStation;
import edu.wpi.first.wpilibj.TimedRobot;
Expand All @@ -19,6 +20,7 @@ public class Robot extends TimedRobot {

public Robot() {
m_robotContainer = new RobotContainer();
CameraServer.startAutomaticCapture();
}

@Override
Expand Down
231 changes: 231 additions & 0 deletions src/main/java/frc/robot/Vision/TagTracking.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
package frc.robot.vision;

import edu.wpi.first.apriltag.AprilTagFieldLayout;
import edu.wpi.first.apriltag.AprilTagFields;
import edu.wpi.first.math.geometry.Pose2d;
import edu.wpi.first.math.geometry.Pose3d;
import edu.wpi.first.networktables.NetworkTable;
import edu.wpi.first.networktables.NetworkTableInstance;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
import frc.robot.Constants.TagTrackingConstant;
import java.io.IOException;
import java.util.Optional;

public class TagTracking {
private final NetworkTable table;
private final AprilTagFieldLayout layout;

private double tv;
private double tx;
private double ty;
private double id;

private double[] bt; // botpose_targetspace
private double[] ct; // camerapose_targetspace

private double distance;
private boolean isCamOn = true;

public TagTracking() {
table = NetworkTableInstance.getDefault().getTable("limelight");
setCamMode();
setLedMode(0);
setPipeline(0);
try {
layout = AprilTagFieldLayout.loadFromResource(AprilTagFields.k2024Crescendo.m_resourceFile);
} catch (IOException err) {
throw new RuntimeException();
}
}

/**
* Set desired limelight operation mode. 0 is vision processor. 1 is Driver
* Camera (Increases exposure, disables vision processing)
*
* @param camMode set 0 plz

Check warning on line 45 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L45 <com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck>

Javadoc tag '@param' should be preceded with an empty line.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:45:0: warning: Javadoc tag '@param' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)

Check warning on line 45 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L45 <com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheck>

Unused @param tag for 'camMode'.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:45:6: warning: Unused @param tag for 'camMode'. (com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheck)
*/
public void setCamMode() {
if (isCamOn) {
table.getEntry("camMode").setNumber(0);
} else {
table.getEntry("camMode").setNumber(1);
}
}

/**
* Set desired green light state. 0 is default. 1 is force off. 2 is force
* blink. 3 is force on.
*
* @param ledMode set 0 or 1 plz

Check warning on line 59 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L59 <com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck>

Javadoc tag '@param' should be preceded with an empty line.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:59:0: warning: Javadoc tag '@param' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)
*/
private void setLedMode(int ledMode) {
table.getEntry("ledMode").setNumber(ledMode);
}

/**
* Set desired limelight pipeline.
*
* @param pipeline in this game let's set 0

Check warning on line 68 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L68 <com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck>

Javadoc tag '@param' should be preceded with an empty line.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:68:0: warning: Javadoc tag '@param' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)
*/
private void setPipeline(int pipeline) {
table.getEntry("pipeline").setNumber(pipeline);
}

/**
* Returns the x offset between the tag and crosshair.
*
* @return x offset

Check warning on line 77 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L77 <com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck>

Javadoc tag '@return' should be preceded with an empty line.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:77:0: warning: Javadoc tag '@return' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)
*/
public double getTx() {
tx = table.getEntry("tx").getDouble(0);
return tx;
}

/**
* Returns the y offset between the tag and crosshair.
*
* @return y offset

Check warning on line 87 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L87 <com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck>

Javadoc tag '@return' should be preceded with an empty line.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:87:0: warning: Javadoc tag '@return' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)
*/
public double getTy() {
ty = table.getEntry("ty").getDouble(0);
return ty;
}

/**
* Returns 1 if a tag is detected. 0 if none.
*
* @return 0 or 1

Check warning on line 97 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L97 <com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck>

Javadoc tag '@return' should be preceded with an empty line.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:97:0: warning: Javadoc tag '@return' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)
*/
public double getTv() {
tv = table.getEntry("tv").getDouble(0);
return tv;
}

/**

Check warning on line 104 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L104 <com.puppycrawl.tools.checkstyle.checks.javadoc.SummaryJavadocCheck>

First sentence of Javadoc is missing an ending period.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:104:0: warning: First sentence of Javadoc is missing an ending period. (com.puppycrawl.tools.checkstyle.checks.javadoc.SummaryJavadocCheck)
* Returns the fiducial tag's ID (double)
*
* @return tag ID

Check warning on line 107 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L107 <com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck>

Javadoc tag '@return' should be preceded with an empty line.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:107:0: warning: Javadoc tag '@return' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)
*/
public double getTID() {

Check warning on line 109 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L109 <com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck>

Abbreviation in name 'getTID' must contain no more than '1' consecutive capital letters.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:109:17: warning: Abbreviation in name 'getTID' must contain no more than '1' consecutive capital letters. (com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck)
id = table.getEntry("tid").getDouble(0);
return id;
}

/**
* Returns a double array of botpose in target space. The former 3 refers to
* translation, while the latter 3 refers to rotation (in the sequence of roll,
* pitch, yaw) In target space, (0,0,0) is the centre of the tag, x+ points to
* the right side (when you're facing the tag), y+ points down, z+ points to
* front.
*
* @return x, y, z, roll, pitch, yaw

Check warning on line 121 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L121 <com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck>

Javadoc tag '@return' should be preceded with an empty line.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:121:0: warning: Javadoc tag '@return' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)
*/
public double[] getBT() {

Check warning on line 123 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L123 <com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck>

Abbreviation in name 'getBT' must contain no more than '1' consecutive capital letters.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:123:19: warning: Abbreviation in name 'getBT' must contain no more than '1' consecutive capital letters. (com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck)
bt = table.getEntry("botpose_targetspace").getDoubleArray(new double[6]);
return bt;
}

/**
* Returns a double array of campose in target space. The former 3 refers to
* translation, while the latter 3 refers to rotation (in the sequence of roll,
* pitch, yaw) In target space, (0,0,0) is the centre of the tag, x+ points to
* the right side (when you're facing the tag), y+ points down, z+ points to
* front.
*
* @return x, y, z, roll, pitch, yaw

Check warning on line 135 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L135 <com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck>

Javadoc tag '@return' should be preceded with an empty line.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:135:0: warning: Javadoc tag '@return' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)
*/
public double[] getCT() {

Check warning on line 137 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L137 <com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck>

Abbreviation in name 'getCT' must contain no more than '1' consecutive capital letters.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:137:19: warning: Abbreviation in name 'getCT' must contain no more than '1' consecutive capital letters. (com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck)
ct = table.getEntry("camerapose_targetspace").getDoubleArray(new double[6]);
return ct;
}

/**
* Returns bot to tag's direct distance.
*
* @return distance (double)

Check warning on line 145 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L145 <com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck>

Javadoc tag '@return' should be preceded with an empty line.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:145:0: warning: Javadoc tag '@return' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)
*/
public double getDistance() {
// readValue();
double targetHeight = getBT()[1]; // botpose in targetspace y
double xDis = getBT()[0];

Check warning on line 150 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L150 <com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck>

Local variable name 'xDis' must match pattern '^[a-z]([a-z0-9][a-zA-Z0-9]*)?$'.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:150:12: warning: Local variable name 'xDis' must match pattern '^[a-z]([a-z0-9][a-zA-Z0-9]*)?$'. (com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck)
double zDis = getBT()[2];

Check warning on line 151 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L151 <com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck>

Local variable name 'zDis' must match pattern '^[a-z]([a-z0-9][a-zA-Z0-9]*)?$'.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:151:12: warning: Local variable name 'zDis' must match pattern '^[a-z]([a-z0-9][a-zA-Z0-9]*)?$'. (com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck)
double horDis = Math.sqrt(Math.pow(xDis, 2) + Math.pow(zDis, 2));
distance = Math.sqrt(Math.pow(targetHeight, 2) + Math.pow(horDis, 2));
return distance;
}

public double getHorizontalDistanceByCT() {

Check warning on line 157 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L157 <com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck>

Abbreviation in name 'getHorizontalDistanceByCT' must contain no more than '1' consecutive capital letters.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:157:17: warning: Abbreviation in name 'getHorizontalDistanceByCT' must contain no more than '1' consecutive capital letters. (com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck)
double horDis = Math.sqrt(
(Math.pow(getCT()[2] + TagTrackingConstant.kCamToRampDistance, 2.0) + Math.pow(getCT()[0], 2.0)));

Check warning on line 159 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L159 <com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck>

Line is longer than 100 characters (found 106).
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:159:0: warning: Line is longer than 100 characters (found 106). (com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck)
SmartDashboard.putNumber("Robottotagdistance", horDis);
return horDis;
}

/**
* Not yet experimented. Return shooter to goal angle degree by calculating with
* tx and ty.
*
* @return shooter to goal angle (degree)

Check warning on line 168 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L168 <com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck>

Javadoc tag '@return' should be preceded with an empty line.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:168:0: warning: Javadoc tag '@return' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)
*/
public double getHorDistanceByCal() {
double pitch = getTy();
double yaw = getTx();
double y = TagTrackingConstant.kCamHeight
* (1 / Math.tan(Math.toRadians(pitch + TagTrackingConstant.kCamPitch)));
double x = y * Math.tan(Math.toRadians(yaw));
double horDistance = Math.sqrt(Math.pow(y, 2.0) + Math.pow(x, 2.0));
return horDistance;
}

/**

Check warning on line 180 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L180 <com.puppycrawl.tools.checkstyle.checks.javadoc.SummaryJavadocCheck>

First sentence of Javadoc is missing an ending period.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:180:0: warning: First sentence of Javadoc is missing an ending period. (com.puppycrawl.tools.checkstyle.checks.javadoc.SummaryJavadocCheck)
* Gets the tag's pose in 2 dimension
*
* @return tagPose

Check warning on line 183 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L183 <com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck>

Javadoc tag '@return' should be preceded with an empty line.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:183:0: warning: Javadoc tag '@return' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)
*/
public Pose2d getTagPose2d() {
if (getTv() == 1) {
Optional<Pose3d> tag_Pose3d = m_layout.getTagPose((int) getTID());

Check warning on line 187 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L187 <com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck>

Local variable name 'tag_Pose3d' must match pattern '^[a-z]([a-z0-9][a-zA-Z0-9]*)?$'.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:187:24: warning: Local variable name 'tag_Pose3d' must match pattern '^[a-z]([a-z0-9][a-zA-Z0-9]*)?$'. (com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck)
Pose2d tagPose2d = tag_Pose3d.isPresent() ? tag_Pose3d.get().toPose2d() : new Pose2d();
return tagPose2d;
} else {
return new Pose2d();
}
}

/**

Check warning on line 195 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L195 <com.puppycrawl.tools.checkstyle.checks.javadoc.SummaryJavadocCheck>

First sentence of Javadoc is missing an ending period.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:195:0: warning: First sentence of Javadoc is missing an ending period. (com.puppycrawl.tools.checkstyle.checks.javadoc.SummaryJavadocCheck)
* Gets the tag's pose in 3 dimension
*
* @return tagPose

Check warning on line 198 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L198 <com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck>

Javadoc tag '@return' should be preceded with an empty line.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:198:0: warning: Javadoc tag '@return' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)
*/
public Pose3d getTagPose3d() {
if (getTv() == 1) {
Optional<Pose3d> tag_Pose3d = m_layout.getTagPose((int) getTID());

Check warning on line 202 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L202 <com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck>

Local variable name 'tag_Pose3d' must match pattern '^[a-z]([a-z0-9][a-zA-Z0-9]*)?$'.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:202:24: warning: Local variable name 'tag_Pose3d' must match pattern '^[a-z]([a-z0-9][a-zA-Z0-9]*)?$'. (com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck)
Pose3d tagPose = tag_Pose3d.isPresent() ? tag_Pose3d.get() : new Pose3d();
return tagPose;
} else {
return new Pose3d();
}
}

public Pose2d getDesiredTagPose2d(double index) {
if (getTv() == 1) {
Optional<Pose3d> tag_Pose3d = m_layout.getTagPose((int) index);

Check warning on line 212 in src/main/java/frc/robot/Vision/TagTracking.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTracking.java#L212 <com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck>

Local variable name 'tag_Pose3d' must match pattern '^[a-z]([a-z0-9][a-zA-Z0-9]*)?$'.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTracking.java:212:24: warning: Local variable name 'tag_Pose3d' must match pattern '^[a-z]([a-z0-9][a-zA-Z0-9]*)?$'. (com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck)
Pose2d tagPose2d = tag_Pose3d.isPresent() ? tag_Pose3d.get().toPose2d() : new Pose2d();
return tagPose2d;
} else {
return new Pose2d();
}
}

public void isVisionOn() {
isCamOn = !isCamOn;
}

public void setAutoCamOn() {
table.getEntry("camMode").setNumber(0);
}

public void setAutoCamOff() {
table.getEntry("camMode").setNumber(1);
}
}
69 changes: 69 additions & 0 deletions src/main/java/frc/robot/Vision/TagTrackingPhotonVIsion.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.

package frc.robot.vision;

import edu.wpi.first.math.geometry.Transform3d;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
import java.util.List;
import org.photonvision.PhotonCamera;
import org.photonvision.targeting.PhotonPipelineResult;
import org.photonvision.targeting.PhotonTrackedTarget;


public class TagTrackingPhotonVIsion extends SubsystemBase {

Check warning on line 15 in src/main/java/frc/robot/Vision/TagTrackingPhotonVIsion.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTrackingPhotonVIsion.java#L15 <com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck>

Abbreviation in name 'TagTrackingPhotonVIsion' must contain no more than '1' consecutive capital letters.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTrackingPhotonVIsion.java:15:14: warning: Abbreviation in name 'TagTrackingPhotonVIsion' must contain no more than '1' consecutive capital letters. (com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck)
/** Creates a new TagTrackingPhotonVIsion. */
// Query the latest result from PhotonVision
PhotonCamera camera;
PhotonPipelineResult result;
PhotonTrackedTarget target;

public TagTrackingPhotonVIsion() {
camera = new PhotonCamera("photonvision");
result = camera.getLatestResult();
target = result.getBestTarget();
}

public boolean hasTarget() {
return result.hasTargets();
}

public List<PhotonTrackedTarget> getTargets() {
return result.getTargets();
}

public double getYaw() {
return target.getYaw();
}

public double getPitch() {
return target.getPitch();
}

public double getArea() {
return target.getArea();
}

public double getSkew() {
return target.getSkew();
}

public int getID() {

Check warning on line 52 in src/main/java/frc/robot/Vision/TagTrackingPhotonVIsion.java

View workflow job for this annotation

GitHub Actions / checkstyle

[checkstyle] src/main/java/frc/robot/Vision/TagTrackingPhotonVIsion.java#L52 <com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck>

Abbreviation in name 'getID' must contain no more than '1' consecutive capital letters.
Raw output
/github/workspace/./src/main/java/frc/robot/Vision/TagTrackingPhotonVIsion.java:52:14: warning: Abbreviation in name 'getID' must contain no more than '1' consecutive capital letters. (com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck)
return target.getFiducialId();
}

public Transform3d bestCameraToTarget() {
return target.getBestCameraToTarget();
}

public Transform3d alternateCameraToTarget() {
return target.getAlternateCameraToTarget();
}


@Override
public void periodic() {
// This method will be called once per scheduler run
}
}
Loading