Zach Christensen
Mimic
Stage 0Sessions 1 to 13

The Single Joint

One motor, one encoder, one loop, and no shortcuts. Everything the rest of the arm assumes gets established here: that the encoder constant is measured rather than quoted, that the loop rate is proven on an instrument rather than asserted, and that a joint refuses a command it should not accept.

Done when
One motor holding a commanded angle against a disturbance.
Progress
0 of 13 sessions0%

Gate tag: v0.0-stage0-exit

Sessions 1 to 3

Before the motor turns

Bench, toolchain, motor forensics and the power tree. Nothing turns yet, and everything downstream depends on it.

  1. Not built yet

    Bench, toolchain, and the repository

    Explain what each link in the toolchain does and say which one is broken when the chain is.

  2. Not built yet

    Motor forensics, and bolting it down

    Derive counts per output revolution from PPR, decoding factor and gear ratio, and distinguish stall, rated and static torque.

  3. Not built yet

    Power: draw the topology before you wire it

    Draw a power tree that separates a motor rail from a logic rail at a single ground point, and explain why a brownout reset is protection working.

Sessions 4 to 7

Signal, motion, time

Decode the encoder, drive the motor both ways, prove the loop rate on an instrument, and fix the units at the boundary.

  1. Not built yet

    The encoder: interrupts and x4 decoding

    Derive the sixteen-entry quadrature table, prove the decoder loses no counts, and explain why x4 decoding is free resolution.

  2. Not built yet

    Open loop: making it turn, in both directions

    Explain what an H-bridge does with two direction pins and one PWM pin, and predict steady-state error from a measured deadband.

  3. Not built yet

    The fixed-rate loop, and proving your rate

    Explain why an absolute schedule does not drift, and prove a loop rate on an instrument rather than asserting it.

  4. Not built yet

    Units: convert once, at the boundary

    State how many encoder counts make one degree on this motor, and what one count of quantisation costs in the derivative term.

Sessions 8 to 11

Closing the loop

Telemetry that fits its budget, then P, then the four step-response numbers, then D and I with kick and windup handled.

  1. Not built yet

    Telemetry that fits: the bandwidth problem

    Budget a serial link in bytes per second against a loop rate, and derive a baud rate's error from its divisor.

  2. Not built yet

    P only: steady-state error and the stability boundary

    Predict a P-only controller's steady-state error before running it, and tell controller oscillation from gearbox backlash.

  3. Not built yet

    Step-response metrics: the four numbers

    Read rise time, overshoot, settling time and steady-state error off any step response, and compute overshoot against the settled value.

  4. Not built yet

    D, then I: derivative on measurement and anti-windup

    Explain derivative kick and why differentiating the measurement removes it, and name two anti-windup mechanisms and what each catches.

Sessions 12 to 13

Making it an engineering artifact

A joint that refuses illegal commands and cannot hurt itself, refactored into the object Stage 1 flashes twice.

  1. Not built yet

    The safety envelope, and getting off analogWrite()

    Explain what a joint should do when its host goes silent, and size a stall-detection window against a driver's pulse rating.

  2. Not built yet

    The refactor, and the exit gate

    Explain why a class-based joint makes a four-joint arm an array rather than a rewrite, and demonstrate a refactor changed no behaviour.