Skip to content

Commit db7c3cc

Browse files
add automatic intake with ball vision
1 parent 12b5884 commit db7c3cc

File tree

5 files changed

+34
-6
lines changed

5 files changed

+34
-6
lines changed

src/main/kotlin/frc/robot/Constants.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ class Constants {
117117
val kTrackwidthMeters = 0.558
118118
val kDriveKinematics = DifferentialDriveKinematics(kTrackwidthMeters)
119119

120+
val ballHeightForAutoIntake = 100.0
121+
120122
val constants = mutableMapOf(
121123
"DrivetrainPID_P" to 0.035,
122124
"DrivetrainPID_I" to 0.0,

src/main/kotlin/frc/robot/RobotContainer.kt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -254,22 +254,32 @@ class RobotContainer {
254254

255255
/* default intake - run forward on right bumper, backwards on right trigger */
256256
intake.defaultCommand = FixedIntakeSpeed(intake, {
257-
if (controller0.getBumper(kRight) || controller1.xButton) Constants.kIntakeSpeed else (
257+
if (controller0.getBumper(kRight) || controller1.xButton || intake.getRunningAutomatic()) {
258+
Constants.kIntakeSpeed
259+
} else (
258260
if (controller0.getTriggerAxis(kRight) >= Constants.kTriggerThresh)
259-
controller0.getTriggerAxis(kRight) * -Constants.kIntakeDir else 0.0)
261+
controller0.getTriggerAxis(kRight) * -Constants.kIntakeDir
262+
else 0.0)
260263
})
264+
261265
lights.defaultCommand = setAlliance
262266

263267
/* toggle vision mode when start is pressed on controller0 */
264268
visionToggle.defaultCommand = VisionModeChange(visionToggle, {
265-
if (controller0.getStartButtonPressed()) {
269+
val visionMode = {if (controller0.getStartButtonPressed()) {
266270
when (visionToggle.visionMode) {
267271
VisionModes.BALL -> VisionModes.HIGHGOAL
268272
VisionModes.HIGHGOAL -> VisionModes.BALL
269273
}
270274
} else {
271275
visionToggle.visionMode
272-
}
276+
} }
277+
278+
val autoIntakeOn = {if (controller0.getBackButtonPressed()) {
279+
!visionToggle.visionIntakeOn
280+
} else visionToggle.visionIntakeOn }
281+
282+
Pair(visionMode(), autoIntakeOn())
273283
})
274284

275285
/* set options for autonomous */

src/main/kotlin/frc/robot/commands/VisionModeChange.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import frc.robot.subsystems.VisionModes
1313
import frc.robot.subsystems.VisionToggleSubsystem
1414

1515
class VisionModeChange(val visionToggle: VisionToggleSubsystem,
16-
val mode: () -> VisionModes) : CommandBase() {
16+
val mode: () -> Pair<VisionModes, Boolean>) : CommandBase() {
1717
/**
1818
* Creates a new ExampleCommand.
1919
*
@@ -29,7 +29,9 @@ class VisionModeChange(val visionToggle: VisionToggleSubsystem,
2929

3030
// Called every time the scheduler runs while the command is scheduled.
3131
override fun execute() {
32-
visionToggle.visionMode = mode()
32+
val currentMode = mode()
33+
visionToggle.visionMode = currentMode.first
34+
visionToggle.visionIntakeOn = currentMode.second
3335
}
3436

3537
// Called once the command ends or is interrupted.

src/main/kotlin/frc/robot/subsystems/IntakeSubsystem.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package frc.robot.subsystems
22

3+
import edu.wpi.first.networktables.NetworkTable
4+
import edu.wpi.first.networktables.NetworkTableInstance
35
import edu.wpi.first.wpilibj.SpeedController
46
import edu.wpi.first.wpilibj2.command.SubsystemBase
57
import frc.robot.Constants
8+
import frc.robot.commands.BallVision
69

710
/**
811
* Intake Subsystem
@@ -24,6 +27,12 @@ class IntakeSubsystem(val motor0: SpeedController, val motor1: SpeedController)
2427

2528
var internalSpeed = 0.0
2629

30+
companion object {
31+
val ntInst = NetworkTableInstance.getDefault()
32+
val table = BallVision.ntInst.getTable("ball-vision")
33+
val ballHeight = BallVision.table.getEntry("ballHeight") // the height of the ball
34+
}
35+
2736

2837
private fun setTargetSpeed(target: Double) {
2938
internalTargetSpeed = target
@@ -58,4 +67,8 @@ class IntakeSubsystem(val motor0: SpeedController, val motor1: SpeedController)
5867
fun setSpeed(speed: Double) {
5968
setTargetSpeed(speed)
6069
}
70+
71+
fun getRunningAutomatic(): Boolean {
72+
return ballHeight.getDouble(0.0) >= Constants.ballHeightForAutoIntake
73+
}
6174
}

src/main/kotlin/frc/robot/subsystems/VisionToggleSubsystem.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ enum class VisionModes { BALL, HIGHGOAL }
66

77
class VisionToggleSubsystem() : SubsystemBase() {
88
var visionMode = VisionModes.BALL
9+
var visionIntakeOn = true
910

1011
override fun periodic() {
1112
}

0 commit comments

Comments
 (0)