Skip to content

Commit

Permalink
latest bob code
Browse files Browse the repository at this point in the history
  • Loading branch information
AlphaPranav9102 committed Oct 20, 2024
1 parent caf50bf commit 96ad696
Show file tree
Hide file tree
Showing 12 changed files with 433 additions and 40 deletions.
5 changes: 1 addition & 4 deletions src/main/kotlin/com/team4099/robot2023/RobotContainer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,12 @@ import com.team4099.robot2023.subsystems.drivetrain.drive.DrivetrainIOSim
import com.team4099.robot2023.subsystems.drivetrain.gyro.GyroIO
import com.team4099.robot2023.subsystems.drivetrain.gyro.GyroIOPigeon2
import com.team4099.robot2023.subsystems.elevator.Elevator
import com.team4099.robot2023.subsystems.elevator.ElevatorIO
import com.team4099.robot2023.subsystems.elevator.ElevatorIONEO
import com.team4099.robot2023.subsystems.elevator.ElevatorIOSim
import com.team4099.robot2023.subsystems.feeder.Feeder
import com.team4099.robot2023.subsystems.feeder.FeederIONeo
import com.team4099.robot2023.subsystems.feeder.FeederIOSim
import com.team4099.robot2023.subsystems.flywheel.Flywheel
import com.team4099.robot2023.subsystems.flywheel.FlywheelIO
import com.team4099.robot2023.subsystems.flywheel.FlywheelIOSim
import com.team4099.robot2023.subsystems.flywheel.FlywheelIOTalon
import com.team4099.robot2023.subsystems.intake.Intake
Expand All @@ -33,7 +31,6 @@ import com.team4099.robot2023.subsystems.superstructure.Request
import com.team4099.robot2023.subsystems.superstructure.Superstructure
import com.team4099.robot2023.subsystems.vision.Vision
import com.team4099.robot2023.subsystems.vision.camera.CameraIO
import com.team4099.robot2023.subsystems.vision.camera.CameraIOPhotonvision
import com.team4099.robot2023.subsystems.wrist.Wrist
import com.team4099.robot2023.subsystems.wrist.WristIOSim
import com.team4099.robot2023.subsystems.wrist.WristIOTalon
Expand Down Expand Up @@ -82,7 +79,7 @@ object RobotContainer {
limelight = LimelightVision(LimelightVisionIOReal)
intake = Intake(IntakeIOFalconNEO)
feeder = Feeder(FeederIONeo)
elevator = Elevator(object: ElevatorIO {})
elevator = Elevator(ElevatorIONEO)
flywheel = Flywheel(FlywheelIOTalon)
wrist = Wrist(WristIOTalon)
} else {
Expand Down
30 changes: 26 additions & 4 deletions src/main/kotlin/com/team4099/robot2023/auto/AutonomousSelector.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package com.team4099.robot2023.auto
import com.team4099.robot2023.auto.mode.ExamplePathAuto
import com.team4099.robot2023.auto.mode.FiveNoteAutoPath
import com.team4099.robot2023.auto.mode.FourNoteAutoPath
import com.team4099.robot2023.auto.mode.FourNoteAutoPathWithFirstCenterSide
import com.team4099.robot2023.auto.mode.FourNoteAutoPathWithFirstSourceSide
import com.team4099.robot2023.auto.mode.FourNoteLeftCenterLine
import com.team4099.robot2023.auto.mode.FourNoteMiddleCenterLine
import com.team4099.robot2023.auto.mode.FourNoteRightCenterLine
Expand Down Expand Up @@ -46,7 +48,9 @@ object AutonomousSelector {
// orientationChooser.addOption("Right", 270.degrees)
// autoTab.add("Starting Orientation", orientationChooser)

autonomousModeChooser.addOption("Four Note Wing Auto", AutonomousMode.FOUR_NOTE_AUTO_PATH)
autonomousModeChooser.addOption("Four Note Wing Auto (Amp Side Note First, Default)", AutonomousMode.FOUR_NOTE_AUTO_PATH_WITH_AMP_SIDE_FIRST)
autonomousModeChooser.addOption("Four Note Wing Auto (Center Wing Note First)", AutonomousMode.FOUR_NOTE_AUTO_PATH_WITH_CENTER_SIDE_FIRST)
autonomousModeChooser.addOption("Four Note Wing Auto (Source Side Note First)", AutonomousMode.FOUR_NOTE_AUTO_PATH_WITH_SOURCE_SIDE_FIRST)

/*
Expand Down Expand Up @@ -169,14 +173,30 @@ object AutonomousSelector {
)
})
.andThen(SixNoteAutoPath(drivetrain, superstructure))
AutonomousMode.FOUR_NOTE_AUTO_PATH ->
AutonomousMode.FOUR_NOTE_AUTO_PATH_WITH_AMP_SIDE_FIRST ->
return WaitCommand(waitTime.inSeconds)
.andThen({
val flippedPose = AllianceFlipUtil.apply(FourNoteAutoPath.startingPose)
drivetrain.tempZeroGyroYaw(flippedPose.rotation)
drivetrain.resetFieldFrameEstimator(flippedPose)
})
.andThen(FourNoteAutoPath(drivetrain, superstructure))
AutonomousMode.FOUR_NOTE_AUTO_PATH_WITH_CENTER_SIDE_FIRST ->
return WaitCommand(waitTime.inSeconds)
.andThen({
val flippedPose = AllianceFlipUtil.apply(FourNoteAutoPathWithFirstCenterSide.startingPose)
drivetrain.tempZeroGyroYaw(flippedPose.rotation)
drivetrain.resetFieldFrameEstimator(flippedPose)
})
.andThen(FourNoteAutoPathWithFirstCenterSide(drivetrain, superstructure))
AutonomousMode.FOUR_NOTE_AUTO_PATH_WITH_SOURCE_SIDE_FIRST ->
return WaitCommand(waitTime.inSeconds)
.andThen({
val flippedPose = AllianceFlipUtil.apply(FourNoteAutoPathWithFirstSourceSide.startingPose)
drivetrain.tempZeroGyroYaw(flippedPose.rotation)
drivetrain.resetFieldFrameEstimator(flippedPose)
})
.andThen(FourNoteAutoPathWithFirstSourceSide(drivetrain, superstructure))
AutonomousMode.FOUR_NOTE_RIGHT_AUTO_PATH ->
return WaitCommand(waitTime.inSeconds)
.andThen({
Expand Down Expand Up @@ -321,7 +341,9 @@ object AutonomousSelector {

private enum class AutonomousMode {
TEST_AUTO_PATH,
FOUR_NOTE_AUTO_PATH,
FOUR_NOTE_AUTO_PATH_WITH_AMP_SIDE_FIRST,
FOUR_NOTE_AUTO_PATH_WITH_CENTER_SIDE_FIRST,
FOUR_NOTE_AUTO_PATH_WITH_SOURCE_SIDE_FIRST,
FOUR_NOTE_RIGHT_AUTO_PATH,
FOUR_NOTE_MIDDLE_AUTO_PATH,
FOUR_NOTE_LEFT_AUTO_PATH,
Expand All @@ -338,4 +360,4 @@ object AutonomousSelector {
SIX_NOTE_AUTO_PATH,
SIX_NOTE_WITH_PICKUP_PATH
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ class FourNoteAutoPath(val drivetrain: Drivetrain, val superstructure: Superstru
startingPose.rotation.inRotation2ds
),
FieldWaypoint(
Translation2d(2.9.meters - 0.4.meters, 6.9.meters + 0.1.meters)
Translation2d(2.91.meters - 0.75.meters, 6.82.meters)
.translation2d,
null,
180.degrees.inRotation2ds,
),
FieldWaypoint(
Translation2d(2.9.meters, 6.9.meters + 0.1.meters).translation2d,
null,
Translation2d(2.91.meters - 0.25.meters, 7.meters).translation2d,
0.degrees.inRotation2ds,
180.degrees.inRotation2ds,
),
FieldWaypoint(
Expand Down Expand Up @@ -73,13 +73,13 @@ class FourNoteAutoPath(val drivetrain: Drivetrain, val superstructure: Superstru
180.degrees.inRotation2ds
), // Subwoofer
FieldWaypoint(
Translation2d(2.41.meters - 0.4.meters, 4.1.meters).translation2d,
Translation2d(2.41.meters - 0.4.meters, 4.4.meters).translation2d,
null,
180.degrees.inRotation2ds
),
FieldWaypoint(
Translation2d(2.41.meters + 0.225.meters, 4.1.meters).translation2d,
null,
Translation2d(2.41.meters, 4.1.meters).translation2d,
0.degrees.inRotation2ds,
180.degrees.inRotation2ds
),
FieldWaypoint(
Expand Down Expand Up @@ -111,7 +111,7 @@ class FourNoteAutoPath(val drivetrain: Drivetrain, val superstructure: Superstru
FieldWaypoint(
Translation2d(
((1.43.meters) + (2.34.meters + 0.3.meters)) / 2 +
0.25.meters,
0.25.meters,
5.55.meters
)
.translation2d,
Expand All @@ -127,7 +127,7 @@ class FourNoteAutoPath(val drivetrain: Drivetrain, val superstructure: Superstru
FieldWaypoint(
Translation2d(
((1.43.meters) + (2.34.meters + 0.3.meters)) / 2 +
0.25.meters,
0.25.meters,
5.45.meters
)
.translation2d,
Expand Down Expand Up @@ -181,6 +181,6 @@ class FourNoteAutoPath(val drivetrain: Drivetrain, val superstructure: Superstru
}

companion object {
val startingPose = Pose2d(Translation2d(1.42.meters - 3.inches, 5.535.meters), 180.degrees)
val startingPose = Pose2d(Translation2d(1.42.meters + 1.inches, 5.535.meters), 180.degrees)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
package com.team4099.robot2023.auto.mode

import com.team4099.lib.trajectory.FieldWaypoint
import com.team4099.robot2023.commands.drivetrain.DrivePathCommand
import com.team4099.robot2023.config.constants.FlywheelConstants
import com.team4099.robot2023.subsystems.drivetrain.drive.Drivetrain
import com.team4099.robot2023.subsystems.superstructure.Superstructure
import edu.wpi.first.wpilibj2.command.ParallelCommandGroup
import edu.wpi.first.wpilibj2.command.SequentialCommandGroup
import edu.wpi.first.wpilibj2.command.WaitCommand
import org.team4099.lib.geometry.Pose2d
import org.team4099.lib.geometry.Translation2d
import org.team4099.lib.units.base.inSeconds
import org.team4099.lib.units.base.inches
import org.team4099.lib.units.base.meters
import org.team4099.lib.units.derived.degrees
import org.team4099.lib.units.derived.inRotation2ds

class FourNoteAutoPathWithFirstCenterSide(val drivetrain: Drivetrain, val superstructure: Superstructure) :
SequentialCommandGroup() {
init {
addRequirements(drivetrain, superstructure)

addCommands(
superstructure.prepSpeakerLowCommand(),
superstructure.scoreCommand().withTimeout(0.5),
WaitCommand(0.5),
ParallelCommandGroup(
DrivePathCommand.createPathInFieldFrame(
drivetrain,
{
listOf(
FieldWaypoint(
startingPose.translation.translation2d,
null,
180.degrees.inRotation2ds
),
FieldWaypoint(
Translation2d(
((1.43.meters) + (2.34.meters + 0.3.meters)) / 2 +
0.25.meters,
5.55.meters
)
.translation2d,
null,
180.degrees.inRotation2ds
),
FieldWaypoint(
Translation2d(2.34.meters + 0.3.meters + 0.25.meters, 5.535.meters)
.translation2d,
null,
180.degrees.inRotation2ds
),
FieldWaypoint(
Translation2d(
((1.43.meters) + (2.34.meters + 0.3.meters)) / 2 +
0.25.meters,
5.45.meters
)
.translation2d,
null,
180.degrees.inRotation2ds
),
FieldWaypoint(
startingPose.translation.translation2d,
null,
180.degrees.inRotation2ds
) // Subwoofer
)
}
)
.withTimeout(3.235 + 0.5),
WaitCommand(0.3).andThen(superstructure.groundIntakeCommand())
),
superstructure.prepSpeakerLowCommand(),
superstructure
.scoreCommand()
.withTimeout(FlywheelConstants.SPEAKER_SCORE_TIME.inSeconds + 0.5),
WaitCommand(FlywheelConstants.SPEAKER_SCORE_TIME.inSeconds),
ParallelCommandGroup(
DrivePathCommand.createPathInFieldFrame(
drivetrain,
{
listOf(
FieldWaypoint(
startingPose.translation.translation2d,
null,
180.degrees.inRotation2ds
), // Subwoofer
FieldWaypoint(
Translation2d(2.41.meters - 0.4.meters, 4.4.meters).translation2d,
null,
180.degrees.inRotation2ds
),
FieldWaypoint(
Translation2d(2.41.meters, 4.1.meters).translation2d,
0.degrees.inRotation2ds,
180.degrees.inRotation2ds
),
FieldWaypoint(
startingPose.translation.translation2d,
null,
180.degrees.inRotation2ds
)
)
}
)
.withTimeout(3.235 + 0.5),
WaitCommand(0.5).andThen(superstructure.groundIntakeCommand())
),
superstructure.prepSpeakerLowCommand(),
superstructure
.scoreCommand()
.withTimeout(FlywheelConstants.SPEAKER_SCORE_TIME.inSeconds + 0.5),
WaitCommand(FlywheelConstants.SPEAKER_SCORE_TIME.inSeconds),
ParallelCommandGroup(
DrivePathCommand.createPathInFieldFrame(
drivetrain,
{
listOf(
FieldWaypoint(
startingPose.translation.translation2d,
null,
startingPose.rotation.inRotation2ds
),
FieldWaypoint(
Translation2d(2.91.meters - 0.75.meters, 6.9.meters)
.translation2d,
null,
180.degrees.inRotation2ds,
),
FieldWaypoint(
Translation2d(2.91.meters - 0.25.meters, 7.1.meters).translation2d,
0.degrees.inRotation2ds,
180.degrees.inRotation2ds,
),
FieldWaypoint(
startingPose.translation.translation2d,
null,
180.degrees.inRotation2ds
)
)
}
)
.withTimeout(3.235 + 0.5),
WaitCommand(0.5).andThen(superstructure.groundIntakeCommand())
),
superstructure.prepSpeakerLowCommand(),
superstructure
.scoreCommand()
.withTimeout(FlywheelConstants.SPEAKER_SCORE_TIME.inSeconds + 0.5),
ParallelCommandGroup(
DrivePathCommand.createPathInFieldFrame(
drivetrain,
{
listOf(
FieldWaypoint(
startingPose.translation.translation2d, null, 180.degrees.inRotation2ds
),
FieldWaypoint(
Translation2d(4.35.meters, 4.85.meters).translation2d,
null,
180.degrees.inRotation2ds
),
FieldWaypoint(
Translation2d(5.92.meters, 3.9.meters).translation2d,
null,
180.degrees.inRotation2ds
),
FieldWaypoint(
Translation2d(8.29.meters, 4.09.meters).translation2d,
null,
180.degrees.inRotation2ds
)
)
}
),
WaitCommand(1.0).andThen(superstructure.groundIntakeCommand())
)
)
}

companion object {
val startingPose = Pose2d(Translation2d(1.42.meters + 1.inches, 5.535.meters), 180.degrees)
}
}
Loading

0 comments on commit 96ad696

Please sign in to comment.