---
kind: concept
slug: virtual-model-control
title: Virtual model control (VMC)
summary: >-
  Builds a robot controller from virtual springs, dampers and masses attached to robot points. Their forces map to joint torques through Jacobian transposes, so no inverse kinematics is needed. Six reaching and obstacle designs are given, tested on one humanoid arm. Results are author-reported and include no accuracy or optimality figures. One card so far.
tags: [robot-control, compliance, reaching, obstacle-avoidance, torque-control]
papers: ["2610.05695"]
related: [impedance-control]
status: draft
updated_at: 2026-10-24
---

## Overview

Virtual model control (VMC) designs a controller from imaginary mechanical
parts: springs, dampers and, in some designs, masses. Each part is attached to
a point on the robot and produces a virtual force there. Every force is mapped
to joint torques through the transpose of that point's Jacobian, and the
torques from all parts are summed [arxiv:2610.05695 §2.1] [arxiv:2610.05695
eq. 1]. The controller never computes a joint-space target, so it needs no
inverse kinematics [arxiv:2610.05695 §3].

The rule in [eq. 1] is shared by every variant. What differs is the layout of
the virtual parts. The paper credits Pratt et al. (2001) with introducing VMC
for walking bipedal robots [arxiv:2610.05695 §5]; that paper is not in this
wiki. The one card so far, [Virtual model control for compliant reaching under
uncertainties](/papers/2610.05695), applies the method to a humanoid arm.

## Variants

### Simple reaching

A spring and a damper join the end effector to a fixed target. The force is a
PD law in end-effector space, and orientation uses rotational springs and
dampers in the same way [arxiv:2610.05695 §2.2] [arxiv:2610.05695 eq. 2]. On
hardware the paper compares 15 and 45 N/m stiffness at 1.5 Ns/m damping. The
stiffer run gave smaller error and faster motion. At 15 N/m the spring force
did not overcome friction at the end of the reach [arxiv:2610.05695 §4.1]
[fig. 4]. Card: [Virtual model control for compliant reaching under
uncertainties](/papers/2610.05695).

### Geometric reaching

The end effector is joined by a spring and a damper to a virtual L-shaped
rigid body. That body has its own inertia, rotational spring and damper, and
its geometry sets the position the end effector is pulled toward
[arxiv:2610.05695 §2.2]. The card gives no values for the body's parameters
and reports no result for this design.

### Moving-reference reaching

The target moves along a straight line from start to goal. A scalar ramps from
zero to one in finite time, and the spring law is applied to the moving target
[arxiv:2610.05695 §2.2]. The paper says this limits the force needed over long
distances [arxiv:2610.05695 §2.2]. Compared with simple reaching, the card
reports lower peak force and less lateral deviation at 0.1 and 0.5 m/s, with a
final error of about 5 cm [arxiv:2610.05695 §4.1] [fig. 5].

### Force-driven reaching

A virtual cart with mass and viscous friction is attached to the end effector
through a spring and a damper. A constant force pulls the cart along a straight
path. If the end effector is blocked, the cart stops too, so the robot force is
bounded by that pull [arxiv:2610.05695 §2.2]. The cart's mass and friction are
not stated, and the card reports no result for this design.

### Obstacle avoidance

Each obstacle is joined to the end effector by a repulsive, nonlinear spring
and damper. Stiffness and damping grow as the separation shrinks, and the forces
from several obstacles add up [arxiv:2610.05695 §2.3] [arxiv:2610.05695 §4.2].
The paper uses one piecewise stiffness law. It falls to zero at 20 cm, and the
damping law is not stated [arxiv:2610.05695 §4.2]. The card tests one 10 cm
cylinder, two 6 cm cylinders, and a non-convex pair. The first two were avoided.
With the non-convex pair the end effector fluctuated near a local minimum of the
obstacle springs. All three results are qualitative [arxiv:2610.05695 §4.2]
[fig. 6].

## When to use which

| Situation | Use | Why |
|---|---|---|
| No inverse kinematics solver is available or wanted | Any VMC design | The controller maps virtual forces straight to torques through Jacobians [arxiv:2610.05695 §3] |
| A person or object may block the arm | Spring-damper reaching | With a human hand blocking the end effector at 40 cm, peak contact force was up to 4.53 N. The IK-based PID baseline reached 35.77 N. The baseline gains are not stated, so this is one comparison [arxiv:2610.05695 §4.3] [fig. 8] |
| Long moves where peak force should stay low | Moving reference | The paper reports lower peak force and less lateral deviation than simple reaching [arxiv:2610.05695 §4.1] |
| The arm must reach the goal exactly | Not shown by this card | The moving reference ends about 5 cm short, and no other accuracy figure is given [arxiv:2610.05695 §4.1] |
| Force needs a hard cap | Force-driven cart | The robot force is bounded by the cart pull [arxiv:2610.05695 §2.2], but the card has no measured result and no cart parameters |
| Obstacles are known before the motion | Repulsive obstacle springs | Obstacle position and radius are entered by hand, and no vision is used [arxiv:2610.05695 §3] |
| Obstacles are only found on contact | Moving reference at higher speed | With an undetected acrylic plate, the card reports contact for about 0.5 s, then sliding and arrival at the goal. The run was at 0.5 m/s and the card gives no outcome count [arxiv:2610.05695 §4.3] [fig. 9] |
| Stiffness is low | Check friction first | At 15 N/m the spring force did not overcome friction at the end of the reach [arxiv:2610.05695 §4.1] |
| Team has no time for hand tuning | Plan for trial and error | Each virtual mechanism is designed by hand per task and tuned by trial and error, and the paper names optimal design as open [arxiv:2610.05695 §5] |

## Implementation sketch

The sketch sums the torques of several virtual parts, as [eq. 1] states. The
force law for each part comes from the design chosen above. Only the spring-damper
law [eq. 2] is written out in the card, so the other laws appear as placeholders.

```pseudocode
# One control cycle with several virtual parts  [eq. 1] [§3]
# Input:  q, dq (joint state), parts (virtual springs, dampers, masses)
# Output: tau (joint torques)

def vmc_step(q, dq, parts):
    # Read each attachment point and its Jacobian from the joint state  [§3]
    points, jacobians = forward_kinematics(q)
    # Update each part's state: spring extension, damper velocity  [§3]
    states = part_states(parts, points, dq)
    # Virtual force of each part, e.g. k x + c dx for a spring-damper  [eq. 2]
    forces = [part_force(p, s) for p, s in zip(parts, states)]
    # Sum the Jacobian-transposed forces into joint torques  [eq. 1]
    tau = sum(J.T @ f for J, f in zip(jacobians, forces))
    return tau
```

Conversion to motor current is a hardware step. On the Dynamixel motors the
paper uses a linear approximation read from the motor's performance graph
[arxiv:2610.05695 §3]. It is not included here. Gravity compensation is not
stated [arxiv:2610.05695 §3], so check whether the target robot needs it.

## Contradictions

No disagreements between papers, since the page has one card. Within that card:

- The 5 cm error of the moving reference is attributed to low stiffness, "as in
  the previous case". The previous case used 15 N/m, while the moving-reference
  run used 45 N/m [arxiv:2610.05695 §4.1]. The stated cause does not clearly
  match the run it is attached to.
- The damping term for a moving target is ambiguous. [eq. 2] uses the error
  rate, and the text does not say whether the target's velocity enters
  [arxiv:2610.05695 §2.2].
- The obstacle damping is written with two different arguments in [§2.3], and
  no damping law is given. The distance unit in the piecewise stiffness law is
  not stated. Centimetres fit the piece boundaries, which is an inference
  [arxiv:2610.05695 §4.2].

## Papers

- [Virtual model control for compliant reaching under uncertainties](/papers/2610.05695): six VMC designs for reaching, moving reference and obstacle avoidance, with a contact test on a humanoid arm; results are author-reported.
