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.
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.
python3 scripts/preview.py