Tools
Eleven single-file browser tools, hosted right here. Nothing to install.
Builder
One-click presets for elevator, arm, shooter, intake, climber, claw, diffy wrist, piston. Persistence, .java download, full-subsystem-class mode, snippet import.
Tuner
Live PID and Motion Magic over NT4. Drag a slider, the robot reacts. Export as Java or JSON when the tune feels right.
Robot-connectedHealth Dashboard
Live view of every HealthCheck on the robot. Severity filters, search, plain-text report download.
Motion Profile
Analytic trapezoid and 7-segment S-curve solvers. Drag the sliders, get the position / velocity / acceleration curves and a ready-to-paste .motionMagic(…) line.
PID Step Response
Elevator, arm, or flywheel. Dial PID + feedforward, watch the closed-loop response. Rise time, settling, overshoot reported live.
CalculatorMotorType Browser
Every MotorType preset (Kraken, Falcon, NEO, Vortex, 550, Minion) in one sortable table. Built-in gear-ratio calculator.
CAN ID Planner
Add devices, catch ID collisions, export a CANIds.java that pre-registers everything with CANRegistry. Presets for swerve and shooters.
Wiring Diagram
Imports your CAN ID Planner and generates a complete, optimal power tree + CAN bus diagram — breaker sizes, wire gauge, channel schedule, and termination. Printable for the build team.
PlannerAuto Builder
Generate a behavior-framework auto — resilient BehaviorEngine sequences or a utility Strategist. Path-following stays with PathPlanner / Choreo.
Shoot-On-The-Fly
Drag the robot, set a velocity, and watch the virtual goal, lead, turret bearing and feedforward rate — the exact AimingSolver math. Copies the track(…) wiring.
State Machine Visualizer
Paste the Graph/Dot string — or the Graph/States and Graph/Edges arrays — your Superstructure logs, and see the legal-transition graph drawn. Guards are dashed; dead-ends and unreachable states are flagged so a missing edge is obvious.
How they work
The live tools (Tuner, Health Dashboard) connect to your robot’s NT4 WebSocket on port 5810. Calculators (Builder, Motion Profile, PID, MotorType, CAN ID) run entirely in the browser — no robot needed.
Nothing is uploaded anywhere. The pages pull msgpack from a public CDN once and that’s it.
AdvantageScope tab bundles
Nine portable JSON bundles describing the NT field paths each mechanism publishes, plus a recommended chart layout. Drop one into AdvantageScope, Elastic, Glass, or Shuffleboard — the schema is dashboard-agnostic.
| Mechanism | File |
|---|---|
| LinearMechanism | linear.json |
| RotationalMechanism | rotational.json |
| FlywheelMechanism | flywheel.json |
| RollerMechanism | roller.json |
| WinchMechanism | winch.json |
| ClawMechanism | claw.json |
| DifferentialWristMechanism | diffwrist.json |
| PneumaticMechanism | pneumatic.json |
| Superstructure (state machine) | statemachine.json |
Replace {MECH} with the name from your Config builder (Arm, Elevator, Shooter, …) and drag the listed NT keys onto the matching axes. Schema: catalyst-tab-bundle.schema.json.
The state-machine bundle uses two placeholders instead of one. {SM} is the log prefix you gave Superstructure.builder(…) — it defaults to the machine name, so Superstructure unless you called .logPrefix(…). {BINDING} is a binding key from b.bind("elevator", …); the two per-binding tabs are meant to be copied once per mechanism you want to watch, since Error and Tolerance are in that mechanism’s own units and do not share an axis.
Ten tabs, and the first one is the one to import if you only import one: the State timeline puts State, StateConfirmed, Phase, Target and Blocker side by side, which is enough to see a transition stall and read off the name of the mechanism that stalled it.