Token Lab검색

← 피지컬 AI
PHYSICAL AI / 1 OF 8

01 · Frames, transformations and robot kinematics

Translate a camera observation into a robot command without losing frame, unit or rotation conventions.

Prerequisites: Vectors, matrix multiplication, radians.

Technical posts currently have English and Chinese editions. This locale displays the English article with localized navigation.

Understand the mechanism

A perception model returns numbers in a frame, not an absolute location. Declare T_AB as the transform that maps coordinates from B to A. Composition then cancels adjacent frame labels. Forward kinematics maps joint positions to tool pose; inverse kinematics solves for joints and can have multiple solutions or none. A Jacobian is a local velocity map, not a globally valid inverse. Near a singularity, a small desired tool velocity can require excessive joint velocity.

Text / 原始公式
p_A = R_AB p_B + t_AB
T_AC = T_AB T_BC;  T_AB⁻¹ = [R_ABᵀ, −R_ABᵀt_AB; 0, 1]
x = l₁ cos q₁ + l₂ cos(q₁+q₂)
y = l₁ sin q₁ + l₂ sin(q₁+q₂)
Study guide & lesson outlineLEARNING CONTRACT

Understand → implement → investigate

Goal: explain the mechanism in this lesson, reproduce one example and test a failure case. Reading alone does not mark mastery.

  • Understand: state assumptions, shapes/units and a counterexample.
  • Implement: reproduce a numerical example and inspect boundaries.
  • Investigate: compare one alternative under a matched budget.

Mechanism map & worked derivation

Camera point + timestamp → Calibrated frame transform → IK + joint-limit checks → Command + measured pose
Original schematic; read the steps from top to bottom. SVG ↓
Symbols and assumptions
SymbolMeaning
R, tRotation matrix and translation in metres
q, lJoint angles in radians and link lengths
  1. Let camera point p_,0,0) m, R_BC be a +90° rotation about z, and t_,0,0) m. Rotate first: (0,1,0). Then translate: p_,1,0).
  2. Apply the inverse: subtract translation before rotating back. Recover (1,0,0). A round-trip test catches incorrect inverse translation.
  3. For a two-link arm with =1, and π, the tip is (1,1). At the arm is straight and the planar Jacobian loses rank.
Experiment checkpoint

Implement forward/inverse transforms and finite-difference Jacobians. Save round-trip error, unit tests and a singularity plot. Test degrees/radians and wrong frame order deliberately.

Original interview exercises & analysis

Answer aloud before revealing the analysis. Add assumptions, a counterexample and a test you would run.

Why is a correct grasp pixel not enough?

Depth, camera calibration, extrinsics, tool offset and synchronization can each be wrong. Trace a known calibration point through every transform before retraining the policy.

How do you handle unreachable IK targets?

Report infeasibility, preserve joint limits, and use a bounded fallback. Do not silently send a large least-squares solution to hardware.

Read the primary sources

Modern Robotics — Lynch & Park ↗

Original Token Lab explanations and synthetic calculations; not measured robot performance. Source links checked 2026-10-25. Unversioned arXiv links may change; record a version for reproduction.

MATHEMATICAL REVIEW · 2026-10-26

Assumptions, implementation & acceptance

Rᵀ is the inverse only for orthonormal R; proper rigid rotations also have Use right-handed frames and matching length units; homogeneous transforms act on column vectors.

Formula conditions, units and worked arithmetic reviewed. The implementation isolates one numerical mechanism; it does not train a policy or control real hardware.

Before running: predict a boundary case

Round trip recovers p. A nonorthogonal R cannot use transpose as inverse.

Hint: isolate the assumption

Keep the baseline input fixed, change one parameter or boundary, and compare both the numerical result and the claimed units. A passing example verifies this fixture only.

Minimal executable example

Save the example and linked modules in one folder. Use Node.js 22 or newer, then run node frames-and-kinematics.mjs. No third-party runtime dependencies.

const solve=()=>{
const R=[[0,-1],[1,0]], t=[1,2], p=[1,0];
const world=R.map((row,i)=>row.reduce((s,x,j)=>s+x*p[j],0)+t[i]);
const recovered=p.map((_,i)=>R.reduce((s,row,j)=>s+row[i]*(world[j]-t[j]),0));return [...world,...recovered];
};
const actual=solve();
const expected=[1,3,1,0];
if(JSON.stringify(actual)===JSON.stringify(expected)){console.log('PASS',actual)}else{
const a=[actual].flat(), b=[expected].flat();
if(a.length!==b.length||a.some((v,i)=>!Number.isFinite(v)||Math.abs(v-b[i])>1e-10))throw Error('Numerical mismatch');
console.log('PASS within 1e-10',actual);
}
Reference output — reveal after predicting
[
  1,
  3,
  1,
  0
]

Test and transfer

Round trip recovers p. A nonorthogonal R cannot use transpose as inverse.

Record input, code version, expected result and observed result in the notebook below. Then construct a counterexample that violates the assumption above and explain why the original conclusion no longer follows.

Download complete kit (.tar.gz) · Complete reference kit and regression checks

Predict, test and keep evidence

Before revealing an answer, predict one result. After the exercise, record the discrepancy and a transfer test. Saved locally across language editions.

Open notebook / export / clear →

The mathematical review scope is recorded per lesson. It does not establish empirical paper reproduction; report suspected errors in your notes. Review scope