Skip to content

Telemetry

Telemetry lets you send data to the Driver Station, FTC Dashboard, or anywhere else, all at once. The Telemetry functions are all static; you don’t need to create your own telemetry instances. By default, everything goes to the Driver Station. If you want it to also show up somewhere else, register another backend.

Logs a data pair, or a raw string, to every registered backend.

Telemetry.log("Arm Position", arm.position)
Telemetry.log("Ready")

Sends everything you’ve logged out to all your backends. TelemetryHook already calls this for you every loop, so you usually won’t need to call it yourself.

Telemetry.update()

Adds another place for your telemetry to go. You can pass in a TelemetryBackend, or a regular FTC SDK Telemetry instance (like the one from FTC Dashboard) and it’ll be wrapped for you automatically.

Telemetry.addBackend(FtcDashboard.getInstance().telemetry)

FateWeaver is a RoadRunner-log based data logging library for FTC. Its FlightRecorder implements the standard FTC SDK Telemetry interface, so you can register it directly as a backend using the addBackend(SdkTelemetry) overload

Telemetry.addBackend(FlightRecorder)

Once registered, every Telemetry.log() call also gets written to your FateWeaver logs, which is viewable and downloadable from the robot’s web dashboard using either http://192.168.43.1:8080/fate (Control Hub) or http://192.168.49.1:8080/fate (RC phone), and openable in AdvantageScope.

A couple of things to know about logging through Telemetry this way:

  • All data is logged as strings, to stay compatible with Telemetry.
  • Each new caption you log automatically creates its own log channel in FateWeaver.

If you want typed channels, custom schemas, or other FateWeaver-specific features (FlightRecorder.createChannel(), CustomStructSchema, etc.), use the FateWeaver API directly. See the FateWeaver documentation for details.