Skip to content

Conversation

@tbowers7
Copy link
Collaborator

@tbowers7 tbowers7 commented Feb 3, 2026

Vision subsystem based on ideas from FRC254, FRC180, and FRC6995. This reduces jitter and allows for more control over how the code responds to different tags.

Closes #88 .

tbowers7 and others added 18 commits December 28, 2025 20:15
	modified:   .github/workflows/create-dependabot-labels.yaml
	new file:   src/main/java/frc/robot/subsystems/vision/FRC254/RobotState.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC254/VisionFieldPoseEstimate.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC254/VisionSubsystem.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC6328/RobotState.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC6328/Vision.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC6328/VisionConstants.java
	modified:   src/main/java/frc/robot/Constants.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC254/FiducialObservation.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC254/MegatagPoseEstimate.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/RobotState.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/VisionFieldPoseEstimate.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC254/VisionIO.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/VisionSubsystem.java
	modified:   src/main/java/frc/robot/subsystems/vision/Vision.java
	modified:   src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java
	modified:   src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionSim.java
	new file:   src/main/java/frc/robot/util/ConcurrentTimeInterpolatableBuffer.java
	new file:   src/main/java/frc/robot/util/LimelightHelpers.java
	new file:   src/main/java/frc/robot/util/MathHelpers.java
	new file:   src/main/java/frc/robot/util/RobotTime.java
	new file:   src/main/java/frc/robot/util/Util.java
Next step is to mesh in the parts of the vision code I need for
the circular vision buffer to the base vision subsystem.

	new file:   src/main/java/frc/robot/subsystems/vision/FRC254/Constants.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/FiducialObservation.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/MegatagPoseEstimate.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/RobotState.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/VisionSubsystem.java
	new file:   src/main/java/frc/robot/util/ServoMotorSubsystemConfig.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/CoralDetector.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/CoralDetectorReal.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/CoralDetectorSim.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/Field.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/LEDSubsystem.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/ReefProximity.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/VisionIO.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/VisionIOLimelight.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/VisionIOPhoton.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/VisionSubsystem.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC6995/Vision.java
	new file:   src/main/java/frc/robot/util/TriConsumer.java
The vision subsystem from FRC180 / SPAM now builds within the 2486
code base.

Next steps are to figure out which parts of the various vision
combination schemes I want to use and hack together something!

	modified:   src/main/java/frc/robot/Constants.java
	modified:   src/main/java/frc/robot/Robot.java
	modified:   src/main/java/frc/robot/RobotContainer.java
	modified:   src/main/java/frc/robot/subsystems/drive/Drive.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/CameraStatus.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC180/CoralDetectorSim.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC180/Field.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC180/LEDSubsystem.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/LimelightStatus.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/SimCamera.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC180/SimLogic.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC180/VisionIOLimelight.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC180/VisionIOPhoton.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC180/VisionSubsystem.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/Constants.java
	modified:   src/main/java/frc/robot/util/LimelightHelpers.java
	modified:   src/main/java/frc/robot/Constants.java
	new file:   src/main/java/frc/robot/commands/DriveToPose.java
	new file:   src/main/java/frc/robot/commands/DriveToPoseFast.java
	modified:   src/main/java/frc/robot/Constants.java
	modified:   src/main/java/frc/robot/RobotContainer.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/Constants.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/FiducialObservation.java
	new file:   src/main/java/frc/robot/subsystems/vision/FRC254/LedState.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/MegatagPoseEstimate.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/RobotState.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/VisionFieldPoseEstimate.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/VisionIO.java
	modified:   src/main/java/frc/robot/subsystems/vision/FRC254/VisionSubsystem.java
	modified:   src/main/java/frc/robot/subsystems/vision/Vision.java
	new file:   src/main/java/frc/robot/util/FieldConstants.java
	modified:   .github/workflows/create-dependabot-labels.yaml
Create a pose buffer and use timestamps to match vision values with
those from odometry to reduce jitter.  Also be able to define certain
tags in whose location we trust more (e.g. HUB in 2026) in the event of
field misshappenness.  Weave the new Vision structure together with the
drivetrain to allow for timestamped pose insertion into the estimator.
@tbowers7 tbowers7 added the enhancement New feature or request label Feb 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants