Comandos y Subsistemas

Al utilizar un framework basado en comandos, Shuffleboard hace más sencillo entender qué es lo que el robot hace pues muestra el estado de varios comandos y subsistemas en tiempo real.

Visualización de subsistemas

Para ver el estado de un subsistema mientras el robot está operando, ya sea en modo autónomo o teleoperado, eso es lo que sus comandos predeterminados son y qué comando está utilizando el subsistema en ese momento, envía un instance del subsistema a la Shuffleboard:

SmartDashboard.putData(subsystem-reference);
SmartDashboard::PutData(subsystem-pointer);
from wpilib import SmartDashboard

SmartDashboard.putData(subsystem-reference)

Suffleboard mostrará el nombre del subsistema, el comando predeterminado asociado al subsistema y el comando utilizado en ese momento. En este ejemplo el comando predeterminado del subsistema elevador se llama AutonomousCommand y también es el comando que se está utilizando en el subsistema Elevador en ese momento.

../../../../../_images/commands-subsystems-1.png

Subsistemas en Modo de prueba

En el Modo de prueba (Prueba/Habilitado en la driver station) los subsistemas pueden mostrarse en la pestaña de LiveWindow con los sensores y actuadores del subsistema. Esto es ideal para verificar que los sensores están funcionando correctamente al confirmar que se están devolviendo los valores. Además, los actuadores pueden ser operados. Por ejemplo, los motores pueden operarse utilizando intensificadores para configurar su velocidad y dirección. Para subsistemas PID, los valores P, I, D y F son constantes que se muestran junto a los puntos de control y un control habilitado. Esto puede ser de utilidad para sintonizar los subsistemas PID al ajustar dichas constantes, configurar un punto de control, y habilitar el controlador PID embebido. Así, puede observarse la respuesta del mecanismo. Este ciclo (modificar parámetros, habilitar y observar) puede repetirse hasta que se encuentre un conjunto razonable de parámetros.

../../../../../_images/commands-subsystems-2.png

Para mayor información sobre cómo sintonizar subsistemas PID aquí. Utilizar RobotBuilder automáticamente generará el código necesario para obtener el subsistema mostrado en el Modo de prueba. El código necesario para mostrar los subsistemas se encuentra aquí abajo, donde el nombre del subsistema es una cadena de caracteres.

setName(subsystem-name);

Visualizar comandos

Using commands and subsystems makes very modular robot programs that can easily be tested and modified. Part of this is because commands can be written completely independently of other commands and can therefore be easily run from Shuffleboard. To write a command to Shuffleboard use the SmartDashboard.putData method as shown here:

SmartDashboard.putData("ElevatorMove: up", new ElevatorMove(2.7));
SmartDashboard::PutData("ElevatorMove: up", new ElevatorMove(2.7));
from wpilib import SmartDashboard

SmartDashboard.putData("ElevatorMove: up", ElevatorMove(2.7))

Shuffleboard mostrará el nombre del comando y un botón para ejecutarlo. De esta forma, comandos individuales y en grupo pueden probarse fácilmente sin necesidad de un código de prueba especial en el programa del robot. En la siguiente imagen se encuentran algunos comandos contenidos en una lista de Shuffleboard. Al presionar el botón una vez se corre el comando y al presionarlo de nuevo, se detiene. Para utilizar esta característica el robot debe tener habilitado el modo teleoperado.

../../../../../_images/commands-subsystems-3.png