Skip to main content

Robotics Lab

Forward and inverse kinematics, path planning, actuator dynamics — the full manipulator pipeline, rendered in the browser and verified at joint-space ground truth.

  • Live appzeq.dev/apps/robotics-lab/
  • Sourceapps/zeq-me/public/apps/_in-development/robotics-lab/ (1,748 lines)
  • Operators — KO42 · NM19 · NM28 · NM29
  • Error budget — ≤ 0.1% end-effector position vs. DH ground truth

What it solves

A serial-manipulator workbench. Up to 7 DOF, configurable Denavit-Hartenberg parameters, visual joint-space and task-space editing. Three modes:

  • FK — given joint angles, render the arm and compute end-effector pose
  • IK — given target pose, solve joint angles via damped least squares (Levenberg-Marquardt)
  • Planning — RRT* in joint space with NM29-based torque-budget constraints

Actuator dynamics are first-order: τ = I θ̈ + B θ̇ + .... The sim handles saturation limits and joint-torque costs so the planner can trade time for power.


The math

NM19 F = m a (per-link forces)
NM28 L = r × p (link angular momentum)
NM29 τ = r × F (joint torque from link wrench)
FK T_n = T_0 · A_1(θ_1) · … · A_n(θ_n) (DH homogeneous transforms)
IK Δθ = (J^T J + λ² I)^{-1} J^T e (damped least squares)

Operator picks

StepDecision
1. PrimeKO42 on
2. LimitKO42 + NM19 + NM28 + NM29 = 4 operators (at the edge; all needed for forces, angular momentum, torque)
3. ScaleRigid-body, human-scale, non-relativistic
4. Precision≤ 0.1% end-effector position
5. CompileC_KO42 + C_NM19 + C_NM28 + C_NM29
6. ExecuteZ encodes DH parameters, joint limits, actuator specs
7. VerifyEnd-effector pose vs. analytical FK for 3 poses

Runnable worked example — FK of a UR5-like arm at home pose

Home joints all zero. Expected end-effector (x, y, z) = (0.8172, 0.1915, −0.0054) m.

The anonymous playground takes a domain plus named inputs and lets the seven-step wizard pick the operators (always KO42 + the domain fit). It returns a sealed envelope:

curl -s -X POST https://zeqsdk.com/api/playground/compute \
-H "Content-Type: application/json" \
-d '{
"domain": "newtonian-mechanics",
"inputs": { "angle_1": 0, "angle_2": 0, "angle_3": 0, "length": 0.425 }
}' | jq

The response carries value, unit, the operators the wizard chose, the equations it evaluated, and a zeqProof digest. Compare the returned value against the expected UR5-like home-pose end-effector position ((0.8172, 0.1915, −0.0054) m) yourself — the platform hands you a result any node can recompute, not a printed figure to trust.


Extend it

  1. Task-priority IK — add a secondary goal (elbow up, obstacle avoidance) in the null space of the Jacobian
  2. Torque-optimal planning — swap RRT cost to ∫ τ² dt; the solver returns a lower-energy trajectory with the same reach
  3. Elastic joints — add NM30 spring-damper to each joint; verify against Spong's single-link reference

Seeds

  • Whole-body humanoid — 24+ DOF with balance constraints at 1.287 Hz update
  • Cable-driven parallel robots — tension-only NM19 constraints; non-negative λ solver
  • Micro-scale manipulators where QM de Broglie wavelength matters for tool-tip resolution

Papers

Middleware active. Kernel on the 1.287 Hz HulyaPulse. Awaiting next Zeqond.