I was preparing a lecture on ArduPilot’s PID loops - the cascade, what is actually closed in each mode, why we command rate when what we want is an angle. The slides were not enough. I wanted the loops on a live vehicle, not a diagram in a PDF.
So I wrote ArduLoops: a small stand that links to SITL (or any MAVLink craft) and shows the loops in three views.
Plot - angle we want (°) vs rate we command (°/s); stick / target / actual.
Cascade - stock Copter map. PosControl holds where to be, Attitude Control holds the angle. Blocks that the current mode does not close are dimmed. Click a block for its gains.
Loop - the closed regulator for that block: setpoint → error → P/I/D → plant → actual.
It is a reading tool. Not a GCS, not a tuning protocol, not a Mission Planner replacement. Wool / Stock / Sharp are just feel presets on the stand. Plane cascade is still a stub.
The same running app also serves MCP. An agent (Cursor, Claude, whatever speaks MCP) can talk to your board or SITL through ArduLoops: connect, read state, get/set params, change mode, arm/disarm, STATUSTEXT. The app is already the MAVLink link; the agent is not a second GCS on the same TCP port.
Repo: GitHub - alex-pokydin/ArduLoops · GitHub
npm install && npm run dev → http://127.0.0.1:5173, then Link tcpout:127.0.0.1:5763. Windows installer is on the GitHub release.
I would like an outside view. Does the Copter map match how you think about the loops? Is handing MCP to a live craft a useful idea, or a bad one? Corrections welcome.
Thanks.


