Armature Not connected
0.00 s · f0

Click a joint here or in the 3D view to select it. ◆ sets a key on that axis.

Arm

Joints, base to tip

Tool tip

Measure this with a ruler: the straight-line distance from the last joint to the point that actually grabs or touches things (the tool tip is what inverse kinematics moves).

Selected joint and motor
Inverse kinematics

Target (cm)


Solver settings

1.5
0.8
3

Joints used by IK

Un-tick joints IK should leave alone, for example a wrist you position by hand. The solver is damped least squares, so it also handles redundant arms and stays stable near singularities.

Wiring (edit motors in Properties)

Generated code

Power servos and steppers from their own supply (share ground with the board) and start with slow speeds; a mirrored arm moves as soon as commands arrive.

If moving an object right makes it track left (or up/down is reversed), turn on the matching flip — it mirrors the preview and keeps tracking, calibration and picking consistent with what you see.

Tracking method

Colour and Motion run entirely on your device — no download, no network. Object detection loads a free model (COCO-SSD) from a CDN the first time, then also runs on-device.

Workspace calibration

  1. Start the camera, looking down at your work surface.
  2. Turn on "Add points by clicking", then click 4 corners of a rectangle on that surface: near-left → near-right → far-right → far-left.
  3. Type that rectangle's width & height in cm and press "Fill from rectangle" (or type each point's X/Y by hand for an odd-shaped area).
  4. Press "Compute calibration".
cm

cm — Z for tracking & pick
cm above pick height

Pick and place

Starts the camera if needed, shows the tracked object's position in the simulation as soon as it's seen, and runs the full pick sequence on its own — click again to stop.

Needs a calibrated workspace and a gripper joint (Properties → set a joint's type to Gripper). Without a drop point the arm just lifts and holds.

Pick history

Commands: A v0,v1,… all · J i v one joint · R read · ? handshake. Web Serial needs Chrome or Edge on desktop.

Quick guide

  1. Pick an arm in the top bar or design your own in Properties → Arm.
  2. Drag the target in the 3D view (or its coloured arrows) to solve IK, or move a joint with its slider. Click any joint in the view to select it.
  3. Press K to set keys, move the playhead, pose again, press K. Space plays.
  4. Use the Serial area to connect a board, then switch on Mirror to arm. Keys and playback move the real axes.
  5. Open the Vision workspace for the Camera, Calibration and Pick & Place windows — track an object, calibrate, and have the arm pick it up.

Workspace: every area has an editor-type menu in its header. ↔ splits an area side by side, ↕ stacks it, ✕ closes it, and dragging the border between areas resizes them. Workspaces (Layout, Animation, Hardware, Scripting, Vision) remember their own arrangement; File → Reset restores the default.

Python Script: write or load a script on the left, then Run it. Scripts are saved with your project. help() in the output lists the commands (glide, goto, key, send, see/track/pick for the camera, and so on).

Shortcuts: K key all · Shift+K key selected · Space play/pause · ←→ step a frame · Delete remove selected keys · mouse: drag to orbit, right-drag or Shift+drag to pan, wheel to zoom.

Works in this build: serial-chain arms (articulated, SCARA, Cartesian, cylindrical, spherical, snake) and any custom chain, with servos, steppers and PCA9685 drivers. Parallel arms such as delta robots are not modelled yet. Your project and layout autosave in this browser.

About Armature

Armature is a free, open-source robot arm studio: simulate any arm, animate it with keyframes, wire up real motors, track objects with a camera, and drive it all from this one page — no install, MIT-licensed, a single HTML file.

Click any tool below for a quick, animated walkthrough of that window.