Pulse hopper roller during shooting#358
Conversation
There was a problem hiding this comment.
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()onHopperRollerSubsystem. - Updated debug gamepad binding to run the pulsing hopper command.
- Updated
RunCollectorHopperFeederCommandGroupto 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.
| public void setVelocityTarget(AngularVelocity velocity) { | ||
| if (hopperRollerMotor == null) { | ||
| return; | ||
| } | ||
| hopperRollerMotor.setVelocityTarget(velocity); | ||
| } |
There was a problem hiding this comment.
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.).
…into pulse-hopper-roller-during-shooting
|
|
||
| useVelocityControl = pf.createPersistentProperty("Use Velocity Control", true); | ||
| intakeVelocity = pf.createPersistentProperty("Intake Velocity", RPM.of(3000)); | ||
| intakePulseVelocity = pf.createPersistentProperty("Intake Pulse Velocity", RPM.of(3200)); |
There was a problem hiding this comment.
nit: Probably too late to change this but we shoulddd probably rename this to intakePulseHighVelocity just to sync its name with the duration properties
Why are we doing this?
Asana task URL:
Whats changing?
Questions/notes for reviewers
How this was tested
Video/screenshots (from simulator or live robot)
PR feedback legend