Visualizar el estado de comandos y subsistemas

Si está utilizando las funciones de programación basadas en comandos de WPILib, encontrará que están muy bien integradas con SmartDashboard. Puede ayudar a diagnosticar lo que está haciendo el robot en cualquier momento y le brinda control y una vista de lo que se está ejecutando actualmente.

Descripción general de las pantallas de comando y subsistema

An exmample SmartDashboard screen showing the Scheduler and what commands are running.

Con la SmartDashboard puede visualizar el estado de los comandos y subsistemas en su programa de robot de varias formas. Los resultados deberían reducir significativamente el tiempo de depuración de sus programas. En esta imagen puede ver una serie de pantallas posibles. Aquí se muestran:

  • El Programador actualmente con No hay comandos en ejecución. En el siguiente ejemplo, puede ver cómo se ve con algunos comandos en ejecución que muestran el estado del robot.

  • Un subsistema, ExampleSubsystem que indica que actualmente no hay comandos en ejecución que lo «requieran». Cuando los comandos se estén ejecutando, indicará el nombre de los comandos que están usando el subsistema.

  • Un comando escrito en SmartDashboard que muestra un botón de `` inicio “” que se puede presionar para ejecutar el comando. Esta es una excelente manera de probar sus comandos uno a la vez.

  • Y algunos valores de datos escritos en la dashboard para ayudar a depurar el código que se está ejecutando.

En los siguientes ejemplos, verá cómo se vería la pantalla cuando se ejecutan comandos y el código que produce esta pantalla.

Visualización del estado del programador de comandos

SmartDashboard.putData(CommandScheduler.getInstance());
frc::SmartDashboard::PutData(frc2::CommandScheduler::GetInstance());
from wpilib import SmartDashboard
from commands2 import CommandScheduler

SmartDashboard.putData(CommandScheduler.getInstance())

Puede mostrar el estado del Programador (el código que programa la ejecución de sus comandos). Esto se hace fácilmente agregando una sola línea al método RobotInit en su RobotProgram como se muestra aquí. En este ejemplo, la instancia del Programador se escribe utilizando el método putData en SmartDashboard. Esta línea de código produce la visualización de la imagen anterior.

The schedulers is showing which commands are being run.

Este es el estado del programador cuando hay dos comandos en ejecución, ExampleCommand y newCommand. Esto reemplaza el mensaje No hay comandos en ejecución de la imagen de pantalla anterior. Puede ver los comandos que se muestran en la dashboard a medida que se ejecuta el programa y se activan varios comandos.

Visualizar el estado del subsistema

SmartDashboard.putData(exampleSubsystem);
frc::SmartDashboard::PutData(&exampleSubsystem);
from wpilib import SmartDashboard

SmartDashboard.putData(exampleSubsystem)

En este ejemplo, estamos escribiendo la instancia de comando, exampleSubsystem y la instancia de la clase ExampleSubsystem en el SmartDashboard. Esto provoca la visualización mostrada en la imagen anterior. El campo de texto contendrá algunos guiones, --- indicando que ningún comando está usando este subsistema, o el nombre del comando que usa actualmente este subsistema.

The ExampleSubsystem is currently running the ExampleCommand.

Los comandos en ejecución «requerirán» subsistemas. Ese es el comando que reserva el subsistema para su uso exclusivo. Si muestra un subsistema en la SmartDashboard, mostrará qué comando lo está usando actualmente. En este ejemplo, ExampleSubsystem está siendo utilizado por ExampleCommand.

Activar comandos con un botón

SmartDashboard.putData("Autonomous Command", exampleCommand);
frc::SmartDashboard::PutData("Autonomous Command", &exampleCommand);
from wpilib import SmartDashboard

SmartDashboard.putData("Autonomous Command", exampleCommand)

This is the code required to create a button for the command on SmartDashboard. Pressing the button will schedule the command. While the command is running, the button label changes from start to cancel and pressing the button will cancel the command.

The command from the previous is shown here runnable by hitting the "start" button.

En este ejemplo, puede ver un botón etiquetado como Autonomous Command. Al presionar este botón se ejecutará el comando asociado y es una excelente manera de probar los comandos uno a la vez sin tener que agregar código de prueba desechable a su programa de robot. Agregar botones para cada comando simplifica la prueba del programa, un comando a la vez.