PERCH is the layer under your pathing library. It identifies feedforward (Ks·Kv·Ka) and PID gains once, live at the bench — with real telemetry you can record and replay — then emits ready-to-run constants for Pedro Pathing, Marrow, Road Runner, FTCLib, or raw SDK. Tune the physics once; every follower runs on the same numbers.
A WebSocket server on the Control Hub streams every motor, servo and IMU at up to 50 Hz — no extra build step, reachable from any device on the robot Wi-Fi.
FTC + FRCWatch the response land, compute gains from the actual response, and record the whole session to a .jsonl — replay it later, share it, review it after the match.
offline · single fileThe same tuned gains drop into Pedro Pathing follower constants, Marrow behaviors, Road Runner, FTCLib and raw FTC SDK — nothing re-tuned between libraries.
copy · paste · runThe library PERCH was built for. Your tuned gains become the follower's velocity/acceleration constants, tuned in the same units you measured them.
Marrow is a behaviors layer, not a PID library — PERCH hands it the tuned follower and a template that layers TimerEx and zones on top.
Constants for the follow-the-gains pathing layer, in the same ticks/s units.
Gains mapped to the FTCLib controller, tuned in the same ticks/s units.
Drop-in RunToPosition or velocity PIDF coefficients in raw encoder ticks.
The server snippet itself, so any OpMode can stream to the bench.