Ejecución de comandos en la entrada del joystick

Importante

Esta documentación describe el uso de la biblioteca dejada basada en comandos. Si bien esta documentación se ha conservado para ayudar a los equipos que aún no lo han hecho, se recomienda encarecidamente a los equipos que migren a la nueva biblioteca basada en comandos.

Nota

Puede hacer que se ejecuten comandos cuando se presionan, sueltan o continuamente los botones del joystick mientras se mantiene presionado el botón. Esto es extremadamente fácil de hacer, solo requiere unas pocas líneas de código.

La clase OI

Location of the OI class in the tree view.

La plantilla basada en comandos contiene una clase llamada OI, ubicada en OI.java, donde los comportamientos de la interfaz del operador se definen típicamente.

Crear el objeto Joystick y los objetos JoystickButton

public class OI {
   // Create the joystick and the 8 buttons on it
   Joystick leftJoy = new Joystick(0);
   Button button1 = new JoystickButton(leftJoy, 1),
          button2 = new JoystickButton(leftJoy, 2),
          button3 = new JoystickButton(leftJoy, 3),
          button4 = new JoystickButton(leftJoy, 4),
          button5 = new JoystickButton(leftJoy, 5),
          button6 = new JoystickButton(leftJoy, 6),
          button7 = new JoystickButton(leftJoy, 7),
          button8 = new JoystickButton(leftJoy, 8);

}

En este ejemplo, hay un objeto Joystick conectado como Joystick 0. Luego, se definen 8 botones en ese joystick para controlar varios aspectos del robot. Esto es especialmente útil para las pruebas, aunque los botones generadores de SmartDashboard abordan otros comandos alternativos para comandos de prueba.

Asociar Botones con comandos

public OI() {
   button1.whenPressed(new PrepareToGrab());
   button2.whenPressed(new Grab());
   button3.whenPressed(new DriveToDistance(0.11));
   button4.whenPressed(new PlaceSoda());
   button6.whenPressed(new DriveToDistance(0.2));
   button8.whenPressed(new Stow());

   button7.whenPressed(new SodaDelivery());
}

En este ejemplo, la mayoría de los botones de joystick del fragmento de código anterior están asociados con comandos. Cuando se presiona el botón asociado, se ejecuta el comando. Esta es una excelente manera de crear un programa de teleoperación que tenga botones para realizar acciones particulares.

Otras opciones

Además de la condición whenPressed () mostrada anteriormente, hay algunas otras condiciones que puede usar para vincular botones a comandos:

  • Los comandos pueden ejecutarse cuando se suelta un botón usando whenReleased() en lugar de whenPressed().

  • Los comandos pueden ejecutarse continuamente mientras se presiona el botón al llamar a whileHeld().

  • Los comandos se pueden alternar cuando se presiona un botón usando toggleWhenPressed().

  • Un comando se puede cancelar cuando se presiona un botón usando cancelWhenPressed().

Además, los comandos pueden ser activados por condiciones arbitrarias de su elección utilizando la clase Trigger en lugar de Button. Los disparadores (y botones) generalmente se sondean cada 20 ms o cada vez que se llama al planificador.