ArduLoops - I was preparing a lecture on PID loops and ended up writing an app

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.

2 Likes

A post was merged into an existing topic: ArduLoops: AI-assisted ArduPilot configuration, for beginners and experienced users