Guest User

Untitled

a guest
Jul 20th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.90 KB | None | 0 0
  1. /*
  2. * FRC Team 5190
  3. * Green Hope Falcons
  4. */
  5.  
  6. package frc.team5190.robot.auto.routines
  7.  
  8. import edu.wpi.first.wpilibj.command.CommandGroup
  9. import frc.team5190.lib.commands.StateCommand
  10. import frc.team5190.lib.extensions.parallel
  11. import frc.team5190.lib.math.geometry.Translation2d
  12. import frc.team5190.robot.auto.Autonomous
  13. import frc.team5190.robot.subsytems.SubsystemPresetCommand
  14. import frc.team5190.robot.subsytems.drive.FollowTrajectoryCommand
  15. import frc.team5190.robot.subsytems.intake.IntakeCommand
  16. import frc.team5190.robot.subsytems.intake.IntakeSubsystem
  17. import openrio.powerup.MatchData
  18.  
  19. class RoutineScaleFromSide(private val startingPosition: Autonomous.StartingPositions,
  20. private val scaleSide: MatchData.OwnedSide) : BaseRoutine(startingPosition) {
  21.  
  22. @Suppress("UNUSED_VARIABLE")
  23. override val routine: CommandGroup
  24. get() {
  25. val scale = if (startingPosition.name.first().toUpperCase() == scaleSide.name.first().toUpperCase()) {
  26. "Near"
  27. } else "Far"
  28. val mirrored = scaleSide == MatchData.OwnedSide.RIGHT
  29.  
  30. val drop1stCube = FollowTrajectoryCommand(
  31. identifier = "Left Start to $scale Scale",
  32. pathMirrored = startingPosition == Autonomous.StartingPositions.RIGHT)
  33.  
  34. val pickup2ndCube = FollowTrajectoryCommand(identifier = "Scale to Cube 1", pathMirrored = mirrored)
  35. val drop2ndCube = FollowTrajectoryCommand(identifier = "Cube 1 to Scale", pathMirrored = mirrored)
  36. val pickup3rdCube = FollowTrajectoryCommand(identifier = "Scale to Cube 2", pathMirrored = mirrored)
  37. val drop3rdCube = FollowTrajectoryCommand(identifier = "Cube 2 to Scale", pathMirrored = mirrored)
  38. val pickup4thCube = FollowTrajectoryCommand(identifier = "Scale to Cube 3", pathMirrored = mirrored)
  39. val drop4thCube = FollowTrajectoryCommand(identifier = "Cube 3 to Scale", pathMirrored = mirrored)
  40.  
  41. val elevatorUp = drop1stCube.addMarkerAt(Translation2d(11.5, 23.1))
  42. val shoot1stCube = drop1stCube.addMarkerAt(Translation2d(22.3, 20.6))
  43. val shoot2ndCube = drop2ndCube.addMarkerAt(Translation2d(22.5, 19.9))
  44. val shoot3rdCube = drop3rdCube.addMarkerAt(Translation2d(22.5, 19.9))
  45. val shoot4thCube = drop4thCube.addMarkerAt(Translation2d(22.5, 19.9))
  46.  
  47. return parallel {
  48. sequential {
  49. add(drop1stCube)
  50. add(pickup2ndCube)
  51. add(drop2ndCube)
  52. add(pickup3rdCube)
  53. add(drop3rdCube)
  54. add(pickup4thCube)
  55. add(drop4thCube)
  56. }
  57. sequential {
  58. add(StateCommand { drop1stCube.hasCrossedMarker(elevatorUp) || drop1stCube.isCompleted })
  59. add(SubsystemPresetCommand(SubsystemPresetCommand.Preset.BEHIND) { drop1stCube.isCompleted })
  60. add(StateCommand { drop1stCube.hasCrossedMarker(shoot1stCube) || drop1stCube.isCompleted })
  61. add(IntakeCommand(IntakeSubsystem.Direction.OUT) { drop1stCube.isCompleted })
  62.  
  63. parallel {
  64. add(SubsystemPresetCommand(SubsystemPresetCommand.Preset.INTAKE) { pickup2ndCube.isCompleted })
  65. add(IntakeCommand(IntakeSubsystem.Direction.IN) { pickup2ndCube.isCompleted })
  66. }
  67.  
  68. add(SubsystemPresetCommand(SubsystemPresetCommand.Preset.BEHIND) { drop2ndCube.isCompleted })
  69. add(StateCommand { drop2ndCube.hasCrossedMarker(shoot2ndCube) })
  70. add(IntakeCommand(IntakeSubsystem.Direction.OUT) { drop2ndCube.isCompleted })
  71.  
  72. parallel {
  73. add(SubsystemPresetCommand(SubsystemPresetCommand.Preset.INTAKE) { pickup3rdCube.isCompleted })
  74. add(IntakeCommand(IntakeSubsystem.Direction.IN) { pickup3rdCube.isCompleted })
  75. }
  76.  
  77. add(SubsystemPresetCommand(SubsystemPresetCommand.Preset.BEHIND) { drop3rdCube.isCompleted })
  78. add(StateCommand { drop2ndCube.hasCrossedMarker(shoot3rdCube) })
  79. add(IntakeCommand(IntakeSubsystem.Direction.OUT) { drop3rdCube.isCompleted })
  80.  
  81. parallel {
  82. add(SubsystemPresetCommand(SubsystemPresetCommand.Preset.INTAKE) { pickup4thCube.isCompleted })
  83. add(IntakeCommand(IntakeSubsystem.Direction.IN) { pickup4thCube.isCompleted })
  84. }
  85.  
  86. add(SubsystemPresetCommand(SubsystemPresetCommand.Preset.BEHIND) { drop4thCube.isCompleted })
  87. add(StateCommand { drop4thCube.hasCrossedMarker(shoot4thCube) })
  88. add(IntakeCommand(IntakeSubsystem.Direction.OUT) { drop4thCube.isCompleted })
  89. }
  90. }
  91. }
  92. }
Add Comment
Please, Sign In to add comment