VMC explorer

VMC (Virtual Model Control) is a simple idea: pretend you have virtual springs and dampers in task space (between body parts and targets), compute the resulting forces, then convert those forces into joint torques.

// Core VMC pattern (task-space PD + Jacobian transpose) F = k * (x* - x) + b * (v* - v) τ = J(q)T F

Tip: drag the target dots in each canvas. Try low damping (b) to see overshoot, then increase b to calm it down.

0) Point mass (pure virtual spring + damper)

30
9
1.0
25
Presets:

0b) Ground contact (spring + penalty contact)

Drag the target into the ground to see normal force + friction. Tune contact stiffness/damping to get soft vs stiff ground.

35
10
1.0
9.8
40
2500
45
0.7
18
Presets:

1) Single joint (virtual torsional spring)

10
2.5
6
Presets:

2) 2-link arm (end-effector spring → joint torques)

120
18
1.2
35
Presets:

2b) 2-link arm + ground contact

Same VMC mapping (τ = JᵀF), but now the end-effector has a simple ground contact model (normal + friction). Drag the target below the ground, or toggle the auto step cycle.

170
20
1.2
45
6000
80
0.8
25
off
1.20
0.28
0.12
0.010
Presets:

3) Quadruped (walk cycle + ground contact)

Drag the green foot targets, or toggle auto walk to see a simple trot gait generate contacts (normal + friction) automatically.

220
26
1.5
24
9000
120
0.8
30
off
1.40
0.22
0.08
0.010
Presets:

4) Drone (spring to target → thrust + moment)

12
7
14
4
12
Presets: