Portal Development Kit (PDK): this is a development kit.

Engineering · Control

Command is a guess
until something
checks.

A stepper told to advance two hundred steps advances two hundred steps, unless something stops it — in which case it does not, and nothing in the system finds out. Every axis of the Portal Development Kit (PDK) is closed on an absolute encoder, so the difference between where the platform was told to be and where it actually is exists as a number the controller acts on.

A smooth curve labelled PDK 21-Bit drawn over a grey staircase labelled 14-Bit, with a callout reading 1000Hz Feedback.

Three nested loops

What are the three control loops, and how fast is each?

They run at different rates for a reason: the inner loop has to be faster than the thing it corrects, and the outer loops have less to do per cycle but more to reason about.

The three nested control loops in the PDK and their rates
LoopRateWhat it compares
Drive, per motor8 kHzCommanded position and current against the encoder reading, on the same 125 µs cycle
Control loop3.3 kHzThe requested platform pose against the six leg targets that would produce it, sent to each drive at 2.5 kHz or more (3.3 kHz preferred) over CAN at 2 Mbaud — each command returns that axis's encoder position with it
Game to motion1 kHzA new platform pose from the motion cue every millisecond
How we know this
  • 8 kHz drive loop, from the drive firmware timer ARK drive firmware source
  • 3.3 kHz inverse kinematics recorded as canonical ARK engineering record
  • Feedback is send-on-send, per command — not a 250 Hz cyclic report ARK engineering record

Why it matters here

A platform under a person is not a plotter.

The load changes

Riders differ by tens of kilograms, sit differently, and shift while driving. An open-loop system is calibrated for one load and wrong for every other. A closed loop simply measures what happened and corrects.

Six legs must agree

The legs are rigidly coupled through the platform. If one runs behind, the others are fighting it through the structure. Closing each leg individually is what keeps a disagreement from becoming a force.

Faults become visible

A closed loop produces an error signal continuously. A persistent error is a fault the machine can detect and act on.

The boundary

A loop only knows what its sensor tells it.

Closing the loop on the motor shaft closes it on the motor shaft. Anything that happens after that point — compliance in a joint, a gap in a transmission, flex in the frame — is outside the loop. The controller will report that the shaft is exactly where it was asked to be, and it will be right, and the platform can still be somewhere else. This is why the architecture matters as much as the control: removing the transmission is what makes the shaft a good proxy for the load.

Loop rate, and the rate your PC sees

A faster loop is also not automatically a better one. Rate sets the ceiling on how quickly a disturbance can be answered; the answer's quality depends on the tuning, and an aggressive loop on a compliant structure oscillates rather than settles. The numbers on this page describe how often the machine gets to correct itself, not how well it does it.

And no loop rate anywhere in this machine is a rate your PC will see. The game supplies data at its own cadence — typically 60 Hz — and nothing downstream can invent detail that was never sent.

Diagram: “The Two-Tier Control Loop”, a motor loop inside a platform loop
Two loops, two rates: the motor loop runs at 8 kHz, on a 125 µs cycle, closing current and position on each drive; the platform loop runs at 3.3 kHz and sends position targets over CAN at 2.5 kHz or more per drive

Questions

What people ask about closed-loop control.

What is closed-loop control?

It means the actuator is told where to go and then checked. Every axis of the PDK is closed on an absolute encoder, so the gap between the position that was commanded and the position the machine is actually in exists as a number the controller can act on. Open loop is the opposite: the command goes out, and nothing afterwards establishes whether it was obeyed.

What is the difference between open-loop and closed-loop control?

An open-loop system assumes the motor arrived. A stepper told to advance two hundred steps advances two hundred steps unless something stops it — and if something does, nothing in the system finds out. A closed loop measures instead of assuming, so a persistent difference between the commanded position and the real one becomes a fault the machine can detect rather than one nobody notices.

Why do the three control loops run at different rates?

Because the inner loop has to be faster than the thing it corrects, and the outer loops have less to do per cycle but more to reason about. The innermost runs on every drive cycle, 8,000 times a second on each motor, comparing commanded position and current against the encoder reading. The outermost sends a pose about a thousand times a second and is reasoning about where the platform should be next. No loop rate anywhere in this machine is a rate your PC or your game will see.

Does closed-loop control mean the platform is always exactly where it should be?

No. Closing the loop on the motor shaft closes it on the motor shaft, and anything after that point — compliance in a joint, a gap in a transmission, flex in the frame — is outside the loop. The controller will report that the shaft is exactly where it was asked to be, and it will be right, and the platform can still be somewhere else. Removing the transmission is what makes the shaft a good proxy for the load.

Keep reading

21-bit encoders

The sensor every one of these loops depends on.

Latency

The same path measured in time rather than in loops.

Every development kit starts with this platform. The PDK + ARK Ecosystem development kit finishes it — racing chassis, wheelbase, wheel, load-cell pedals and button box, $8,499.99 (development-kit price).

Built in sequence for qualified recipients: ready to ship an estimated 3–6 months from order confirmation; delays of up to 12 months are possible