Class ParallelRaceGroup

All Implemented Interfaces:
Sendable, Command

public class ParallelRaceGroup
extends CommandGroupBase
A CommandGroup that runs a set of commands in parallel, ending when any one of the commands ends and interrupting all the others.

As a rule, CommandGroups require the union of the requirements of their component commands.

  • Constructor Details

    • ParallelRaceGroup

      public ParallelRaceGroup​(Command... commands)
      Creates a new ParallelCommandRace. The given commands will be executed simultaneously, and will "race to the finish" - the first command to finish ends the entire command, with all other commands being interrupted.
      Parameters:
      commands - the commands to include in this group.
  • Method Details

    • addCommands

      public final void addCommands​(Command... commands)
      Description copied from class: CommandGroupBase
      Adds the given commands to the command group.
      Specified by:
      addCommands in class CommandGroupBase
      Parameters:
      commands - The commands to add.
    • initialize

      public void initialize()
      Description copied from interface: Command
      The initial subroutine of a command. Called once when the command is initially scheduled.
    • execute

      public void execute()
      Description copied from interface: Command
      The main body of a command. Called repeatedly while the command is scheduled.
    • end

      public void end​(boolean interrupted)
      Description copied from interface: Command
      The action to take when the command ends. Called when either the command finishes normally, or when it interrupted/canceled.

      Do not schedule commands here that share requirements with this command. Use Command.andThen(Command...) instead.

      Parameters:
      interrupted - whether the command was interrupted/canceled
    • isFinished

      public boolean isFinished()
      Description copied from interface: Command
      Whether the command has finished. Once a command finishes, the scheduler will call its end() method and un-schedule it.
      Returns:
      whether the command has finished.
    • runsWhenDisabled

      public boolean runsWhenDisabled()
      Description copied from interface: Command
      Whether the given command should run when the robot is disabled. Override to return true if the command should run when disabled.
      Returns:
      whether the command should run when the robot is disabled
    • raceWith

      public ParallelRaceGroup raceWith​(Command... parallel)
      Description copied from interface: Command
      Decorates this command with a set of commands to run parallel to it, ending when the first command ends. Often more convenient/less-verbose than constructing a new ParallelRaceGroup explicitly.

      Note: This decorator works by composing this command within a CommandGroup. The command cannot be used independently after being decorated, or be re-decorated with a different decorator, unless it is manually cleared from the list of grouped commands with CommandGroupBase.clearGroupedCommand(Command). The decorated command can, however, be further decorated without issue.

      Parameters:
      parallel - the commands to run in parallel
      Returns:
      the decorated command