Skip to documentation
Documentation / Tools

Dashboard & reports

Record, replay and inspect TeleOp motion on the robot’s local network.

Connect to the robot

Open http://<robot-ip>:8087/ while connected to the robot network. The robot serves all dashboard assets. It stays available between OpModes while the Robot Controller app is running.

Pose is sampled at up to 20 Hz and browser updates poll at 4 Hz. The robot footprint displays measured heading independently from its path. A disconnected browser does not stop recording.

Add useful events

Inside CubicOpMode, mark actual mechanism events. Only pickup-confirmed followed by score-confirmed counts as a completed cycle. Command completion or a scoring attempt is not proof of success.

Java · event markers
mark("intake-start");
// When a sensor or driver confirms the pickup:
mark("pickup-confirmed");
// At the start of a scoring action:
mark("score-attempt");
// Only after confirmed successful scoring:
mark("score-confirmed");

Read the report

Reports show distance, elapsed time, stationary time, confirmed cycles and review segments. Select a suggestion to highlight the corresponding interval; use the timeline to replay the measured pose.

A pause is not automatically wasted time. Route candidates compare matching cycle endpoints with static field geometry; they cannot know whether another robot, game piece or task requirement forced the actual route.

The BIOBUZZ map is a nominal schematic with conservative obstacle envelopes. Route comparison is disabled until the team confirms field geometry and robot dimensions in setup. Reset poses, invalid localization and data gaps break calculations.

Export and retention

Choose a saved session or Export session to download JSONL. Import JSONL replays it later without a robot. Incomplete logs can recover complete lines, but power loss may lose the last unflushed records.

The robot keeps the newest 20 sessions. Each session is limited to 15 minutes / 18,000 samples and 5,000 events. Export important logs before retention removes them. Clearing app data or uninstalling the app deletes robot recordings.

Try it without a robot

In a CubicLib source checkout, run the command below and open http://127.0.0.1:8087/. Click Load demo for a simulated Bézier run with strafing and independent heading. “Robot disconnected” is expected in this static preview. Hardware setup and live sessions require the robot.

Shell · CubicLib checkout
python3 scripts/preview.py