Skip to content

Pulse hopper roller during shooting#358

Open
stephenjust wants to merge 8 commits intomainfrom
pulse-hopper-roller-during-shooting
Open

Pulse hopper roller during shooting#358
stephenjust wants to merge 8 commits intomainfrom
pulse-hopper-roller-during-shooting

Conversation

@stephenjust
Copy link
Copy Markdown
Contributor

Why are we doing this?

Asana task URL:

Whats changing?

Questions/notes for reviewers

How this was tested

  • tested on robot
  • tested in simulator
  • unit tests added

Video/screenshots (from simulator or live robot)


PR feedback legend

Symbol Meaning
⭐ ⭐ ⭐ must be addressed
⭐ ⭐ should be addressed
something to consider, a good idea

Copy link
Copy Markdown
Contributor

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

Adds a pulsing mode for the hopper roller so it alternates between two velocity setpoints while running, and wires that behavior into shooting/diagnostic command paths.

Changes:

  • Introduced pulsed intake configuration (pulse velocity + pulse duration) and a new getIntakePulseCommand() on HopperRollerSubsystem.
  • Updated debug gamepad binding to run the pulsing hopper command.
  • Updated RunCollectorHopperFeederCommandGroup to use pulsed hopper intake while firing.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
src/main/java/competition/subsystems/hopper_roller/HopperRollerSubsystem.java Adds pulse-related properties and a repeating sequential command that alternates hopper velocity targets.
src/main/java/competition/operator_interface/OperatorCommandMap.java Switches debug right-stick binding from steady intake to pulsed intake.
src/main/java/competition/command_groups/RunCollectorHopperFeederCommandGroup.java Uses the pulsed hopper command in the collector/hopper/feeder firing group.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/main/java/competition/subsystems/hopper_roller/HopperRollerSubsystem.java Outdated
Comment on lines +87 to +92
public void setVelocityTarget(AngularVelocity velocity) {
if (hopperRollerMotor == null) {
return;
}
hopperRollerMotor.setVelocityTarget(velocity);
}
Copy link

Copilot AI Mar 28, 2026

Choose a reason for hiding this comment

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

setVelocityTarget(...) is introduced as a public method, but it appears to only be used internally by HopperRollerSubsystem (no other references found). Making it private (or at least package-private) would reduce the subsystem's public surface area and help avoid bypassing the intended control-mode API (setIntakePower, etc.).

Copilot uses AI. Check for mistakes.
Comment thread src/main/java/competition/subsystems/hopper_roller/HopperRollerSubsystem.java Outdated

useVelocityControl = pf.createPersistentProperty("Use Velocity Control", true);
intakeVelocity = pf.createPersistentProperty("Intake Velocity", RPM.of(3000));
intakePulseVelocity = pf.createPersistentProperty("Intake Pulse Velocity", RPM.of(3200));
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit: Probably too late to change this but we shoulddd probably rename this to intakePulseHighVelocity just to sync its name with the duration properties

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants