Posts

ROBOTICS LAB · INTERACTIVE TUTORIAL 01 A robot knows its joint angles. But where is its tool? Or, given a target in space, which angles should it choose? Explore both directions using a live three-degree-of-freedom manipulator. 3-DOF manipulator Denavit–Hartenberg Closed-form IK Vue.js simulator 01 / GEOMETRY AND TRANSFORMS Forward kinematics: from angles to position Consider a three-revolute-joint manipulator: a yawing base \(\theta_1\), a shoulder pitch \(\theta_2\), and an elbow pitch \(\theta_3\). The shoulder sits at height \(h\), and the two planar link lengths are \(L_1\) and \(L_2\). We ignore joint limits, tool offsets, and collisions for this analytical model. Using the standard Denavit–Hartenberg convention, a link transformation \(A_i\) is a product of a rotation about \(z\), a translation along \(z\), a translation along \(x\), and a rotation about \(x\). In homogeneous coordinates: Standard Denavit–Hartenberg transform...
Running a 28.9-Million-Parameter Language Model on an ESP32-S3 How a 28.9-Million-Parameter Language Model Runs on an ESP32-S3 Running a transformer language model directly on a microcontroller is normally constrained not only by computational throughput, but more fundamentally by the amount of fast memory available to hold model parameters, activations, temporary buffers and the attention state. A project published in July 2026 demonstrated a different approach: a 28.9-million-parameter language model running entirely on an ESP32-S3 , generating approximately 9.5 tokens/s end-to-end . The result is not based on fitting the complete model into SRAM. Instead, it relies on a deliberate decomposition of the model across the device's memory hierarchy, with a large Per-Layer Embedding (PLE) table retained in flash and only the computationally active portion of the model kept in fast memory. This result deserves a...