Skip to content
CrocoDocs
Starter GuideProgrammingEngineeringDesignPortfolio
Documentation

Introduction

IntroductionBIOBUZZ game overview

Getting started

Getting startedBlocksOnBot JavaAndroid StudioYour first OpModeJava basicsMotors and servosNonblocking codeDebugging robot code

Control systems

Control systemsJoystick mappingField-centric mecanum drivePID controlFeedforwardFlywheel velocity controlSystem identificationMotion profilingKalman filterLow-pass filter

Autonomous

AutonomousTimed and encoder movementOdometryLocalization troubleshootingMotion planningReliable autonomous sequencesPure PursuitSensor fusionAuto to TeleOp handoff

Season topics

Season topicsProjectile mathematicsTurret aimingShooting on the move

Code practices

Code practicesNaming conventionsCode organizationLoop timing and bulk readsFormattingComments and documentationTeam collaboration

Libraries

LibrariesNextFTCFTCLibSolversLibPedro PathingRoad RunnerFTC DashboardMercurial v2Mercurial v1PanelsSloth

Community software

Community softwareBlaze FTCOpenLoopHive Vision

Sensors and vision

Vision overviewVision basicsLimelight 3A
Starter Guide
Engineering
Design
Portfolio
Appearance

FTC Dashboard

Official FTC Dashboard features, setup, and version notes

Overview

Dashboard is a web dashboard for FTC development. The official project lists live telemetry, plots and field graphics, live configuration variables, camera streaming, custom layouts, and telemetry CSV export. Browser gamepad support is described by the project as volatile because it depends on browser APIs.

Installation

This example uses com.acmerobotics.dashboard:dashboard:0.6.0 from https://maven.brott.dev/. Follow the installation guide for your FTC SDK version before adding it.

Version 0.6.0 remains current as checked 14 October 2026. For hot-reloaded TeamCode, Slothboard is the maintained Dairy fork with Sloth . Choose the ordinary artifact or the fork; they provide the same Dashboard package names and must not both supply those classes.

repositories {
    maven { url = 'https://maven.brott.dev/' }
}

dependencies {
    implementation 'com.acmerobotics.dashboard:dashboard:0.6.0'
}

If your SDK project already has this repository, do not add a duplicate. Some non-standard SDK setups need a different dependency declaration; use the official instructions for those projects.

Telemetry

A TelemetryPacket lets an send key/value data to the dashboard. The official README and examples are the reference for the exact API in your installed release.

FtcDashboard dashboard = FtcDashboard.getInstance();
TelemetryPacket packet = new TelemetryPacket();
packet.put("arm position", armMotor.getCurrentPosition());
dashboard.sendTelemetryPacket(packet);
val dashboard = FtcDashboard.getInstance()
val packet = TelemetryPacket()
packet.put("arm position", armMotor.currentPosition)
dashboard.sendTelemetryPacket(packet)

You can continue sending essential information to telemetry as well. Avoid sending unnecessary data every loop; test loop timing on the robot.

Runtime tuning

The dashboard's @Config annotation exposes mutable public static fields. Read the field where you use it if you want the latest value to take effect immediately. If you copy a value into another variable during initialization, that copy will not automatically change when you edit the dashboard field.

Create a constants class:

import com.acmerobotics.dashboard.config.Config;

@Config
public class ArmTuning {
    public static double KP = 0.003;
    public static double TARGET_DEGREES = 30.0;
}
import com.acmerobotics.dashboard.config.Config

@Config
object ArmTuning {
    @JvmField var KP = 0.003
    @JvmField var TARGET_DEGREES = 30.0
}

The following loop fragment assumes arm is a mapped DcMotor and dashboard is FtcDashboard.getInstance(). Define COUNTS_PER_DEGREE as a measured, positive, nonzero double, with direction and zero established as in the PID guide. This proportional example omits gravity compensation and travel limits; it is a tuning demonstration, not a complete arm controller.

Read those fields in the control loop and send what the robot is doing:

double currentDegrees = arm.getCurrentPosition() / COUNTS_PER_DEGREE;
double error = ArmTuning.TARGET_DEGREES - currentDegrees;
double power = Math.max(-0.25, Math.min(0.25, ArmTuning.KP * error));
arm.setPower(power);

TelemetryPacket packet = new TelemetryPacket();
packet.put("target deg", ArmTuning.TARGET_DEGREES);
packet.put("measured deg", currentDegrees);
packet.put("error deg", error);
packet.put("power", power);
dashboard.sendTelemetryPacket(packet);
val currentDegrees = arm.currentPosition / COUNTS_PER_DEGREE
val error = ArmTuning.TARGET_DEGREES - currentDegrees
val power = (ArmTuning.KP * error).coerceIn(-0.25, 0.25)
arm.power = power

val packet = TelemetryPacket()
packet.put("target deg", ArmTuning.TARGET_DEGREES)
packet.put("measured deg", currentDegrees)
packet.put("error deg", error)
packet.put("power", power)
dashboard.sendTelemetryPacket(packet)

Change KP on the dashboard, observe the error and power, and record a stable value back into your source code. Keep the power limit while tuning and use the PID guide for a careful gain adjustment sequence.

Live configuration

The dashboard can expose supported configuration fields so you can tune values during testing. Mark only values that need to be changed at runtime, understand when the code reads them, and copy validated values back into version-controlled constants. A live edit is not automatically a permanent source-code change.

Field view, graphs, and cameras

Use the field view to draw robot-relative or field-relative debugging information when your code supplies the matching coordinates. Graphs can make response trends easier to inspect. Camera streaming can help check what a vision pipeline receives, but the stream itself does not validate detection accuracy.

Network access

Open the dashboard from a browser on the robot network using the address and port configured by your project. The common default shown in FTC Dashboard examples is http://192.168.43.1:8080/dash, but the address, network mode, or project configuration can differ. Do not use a public Wi-Fi network for robot control.

Sources

  • FTC Dashboard documentation
  • Repository and installation guide
  • Releases
  • Field view
  • installation instructions
  • camera

Road Runner

Build a first Road Runner 1.0 action with the official FTC Quickstart

Mercurial v2

Programs, sequences, and concurrent robot tasks with Mercurial v2

On this page

OverviewInstallationTelemetryRuntime tuningLive configurationField view, graphs, and camerasNetwork accessSources