Telemetry: Recording and Sending Real-Time Data
Recording and viewing telemetry data is a crucial part of the engineering process - accurate telemetry data helps you tune your robot to perform optimally, and is indispensable for debugging your robot when it fails to perform as expected.
By default, no telemetry data is recorded (saved) on the robot. However, recording data on the robot can provide benefits over recording on a dashboard, namely that more data can be recorded (there are no bandwidth limitations), and all the recorded data can be very accurately timestamped. WPILib has integrated support for on-robot recording of telemetry data via the DataLogManager
and DataLog
classes and provides a tool for downloading data log files and converting them to CSV.
Note
In addition to on-robot recording of telemetry data, teams can record their telemetry data on their driver station computer with Shuffleboard recordings.
Adding Telemetry to Robot Code
WPILib supports several different ways to record and send telemetry data from robot code.
Au niveau le plus élémentaire, le Riolog gère l’affichage des instructions d’impression en provenance du code du robot. Cette fonctionnalité est utile pour le débogage à la volée d’un code présentant des erreurs, mais ne permet pas la mise à l’échelle car les interfaces de console ne conviennent pas aux flux importants de données.
WPILib prend en charge plusieurs dashboards qui permettent aux utilisateurs d’envoyer plus facilement de nombreuses données de télémesure vers l’ordinateur de pilotage. Tous les dashboards de la WPILib communiquent par l’intermédiare du protocole NetworkTables, et ils sont donc dans une certaine mesure interopérables (les données de télémesure enregistrée avec un dashboard seront visibles sur les autres, mais les widgets/formatages spécifiques ne seront généralement pas compatibles). NetworkTables (et donc tous les dashboards de la WPILib) prennent actuellement en charge les types de données suivants :
boolean
boolean[]
double
double[]
string
string[]
byte[]
Telemetry data can be sent to a WPILib dashboard using an associated WPILib method (for more details, see the documentation for the individual dashboard in question), or by directly publishing to NetworkTables.
Bien que les NetworkTables ne prennent pas encore en charge la sérialisation de types de données complexes (ce qui est provisoirement prévu pour 2023), les types mutables provenant du code utilisateur peuvent être facilement étendus pour un interfaçage direct avec les dashboards de la WPILib via l’interface Sendable
, dont l’utilisation est décrite dans le prochain article.