Skip to content

Conversation

@gcschmit
Copy link
Contributor

No description provided.

Copy link
Contributor Author

@gcschmit gcschmit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please ask questions about any of this. Referring to IO classes from this past year may be helpful as well.


public default void setAngle(double angleDeg){}

public default double getAngle(){
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IO interfaces don't generally have accessor method (see above comment about the IOInputs class).


import edu.wpi.first.wpilibj.xrp.XRPServo;

public interface ArmIO {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IO classes define an inner class for its IO inputs (e.g., ArmIOInputs). This class has properties for each value that is retrieved from the device. In this case, probably only the position (e.g, positionDeg).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IO classes also have an updateInputs method to update the specified inputs object.

}

@Override
public void zeroPosition() {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Refer to the above comments about zeroing the position of a servo.

}

@Override
public double getAngle() {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Refer to above comments about accessor methods in IO classes.

@gcschmit gcschmit requested a review from Copilot June 10, 2025 00:44
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements a new arm subsystem using an abstraction layer with the ArmIO interface and its ArmIOMotor implementation, replacing the legacy Arm class.

  • Introduces the ArmIOMotor class as a concrete implementation of ArmIO
  • Creates the new arm subsystem class (Arm) that uses the ArmIO interface
  • Updates RobotContainer to integrate the new arm subsystem and adjusts joystick button bindings

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/main/java/frc/robot/subsystems/arm/ArmIOMotor.java New motor implementation for the arm I/O
src/main/java/frc/robot/subsystems/arm/ArmIO.java New interface with default methods for arm control
src/main/java/frc/robot/subsystems/arm/Arm.java New subsystem class that wraps the ArmIO interface
src/main/java/frc/robot/subsystems/Arm.java Removal of legacy arm implementation
src/main/java/frc/robot/RobotContainer.java Updated integration with the new arm subsystem

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants