---
kind: concept
slug: disturbance-observer
title: Disturbance observer
summary: >-
  An observer that estimates the lumped disturbance on a robot joint, from model error, friction and external force, so the controller can cancel it. One card so far: a nonlinear disturbance observer added to impedance control for a two-robot rehabilitation teleoperation rig, with qualitative results only, author-reported.
tags: [robot-control, estimation, impedance-control]
papers: ["2412.03619"]
related: [impedance-control, teleoperation]
status: draft
updated_at: 2026-10-25
---

## Overview

A disturbance observer estimates the net effect of everything the nominal model
does not capture, and feeds that estimate back so it can be cancelled. The
paper lumps model error, joint friction and external forces into one term
[arxiv:2412.03619 §II-C] [eq. 9]. Its stated reason for using an observer is
that it can compensate for a rough dynamic model [arxiv:2412.03619 §I].

The one card so far applies a nonlinear disturbance observer (NDOB) on top of
an impedance controller, on both robots of a bilateral teleoperation pair
[arxiv:2412.03619 §II-A] [arxiv:2412.03619 §II-C]. The NDOB design is adapted
from an earlier reference that the paper cites rather than derives
[arxiv:2412.03619 §II-C]. The full design and proof are not in the card's
source, so treat the observer's stability as unverified here.

## Variants

There is one variant in our corpus so far, and it is a single card.

### Nonlinear disturbance observer with impedance control

The observer keeps an auxiliary state z. Its gain is L_obs = Y_obs M_obs^-1,
and it uses the measured joint velocity, the applied torque and the estimated
model terms to form the disturbance estimate [arxiv:2412.03619 §II-C]
[eq. 10]. The paper reports the chosen gains per robot: on the master, Y_obs
is 1.92 I with M_obs set to the estimated inertia; on the second robot, Y_obs
is 0.048 I with M_obs of 0.001 I [arxiv:2412.03619 tab. 2]. The NDOB is always
on for the second robot, and on for the master only in trajectory mode
[arxiv:2412.03619 §V]. Card: [A Teleoperation System with Impedance Control and Disturbance Observer for Robot-Assisted Rehabilitation](/papers/2412.03619).

### Other designs

Not covered. Other observer designs, such as linear or high-gain variants,
have no card here. Do not infer their behaviour from this one.

## When to use which

With one card, the guidance below is only what that card's setting supports.

| Situation | Use | Why |
|---|---|---|
| You have an approximate arm model and joint velocity and torque, but no force sensor | Observer on top of impedance control, as in the card | The paper claims this gives compliant behaviour without force sensing and compensates model error [arxiv:2412.03619 §I] [arxiv:2412.03619 §II-A] |
| A human must move the arm freely | Switch the observer off on the side the human moves, and gate any force feedback | The paper turns the master NDOB off in free pHRI and keeps force feedback active only then [arxiv:2412.03619 §V] [arxiv:2412.03619 §II-B] |
| You need error bounds or a stability proof | Not supported by this card | The proof is left to the cited reference and the card reports no error numbers [arxiv:2412.03619 §IV] |
| Large nonlinear or Coulomb friction is the main disturbance | Check before use | The identified friction model is viscous only [arxiv:2412.03619 eq. 19] |
| Teleoperation over a network | Check before use | Force is rendered from positions sent over UDP; delay and loss are not analysed [arxiv:2412.03619 §II-B] [arxiv:2412.03619 §V] |

Claims about benefit are qualitative. The paper compares tracking with the
observer on against impedance control alone, but gives no numbers
[arxiv:2412.03619 §IV-A] [fig. 4].

## Implementation sketch

The paper gives its observer update as one equation [arxiv:2412.03619 eq. 10].
The integrator is not stated; forward Euler is shown here for illustration.
The observer output is added to the impedance torque with a sign the text
does not state. Read from the block diagram, the master side subtracts it
[arxiv:2412.03619 fig. 1]; confirm before use.

```pseudocode
# Nonlinear disturbance observer step  [arxiv:2412.03619 eq. 10]
# Model terms are estimates; integrator not stated in the paper
def ndob_step(dq, tau, z, S_hat, g_hat, M_obs, Y_obs, dt):
    # Observer gain from the two tuned matrices  [arxiv:2412.03619 eq. 10]
    L_obs = Y_obs @ inverse(M_obs)             # (2, 2)
    # Auxiliary vector from joint velocity  [arxiv:2412.03619 eq. 10]
    p = Y_obs @ dq                             # (2,)
    # Observer state derivative  [arxiv:2412.03619 eq. 10]
    z_dot = -L_obs @ z + L_obs @ (S_hat @ dq + g_hat - tau - p)
    z = z + dt * z_dot
    # Estimated lumped disturbance  [arxiv:2412.03619 eq. 10]
    d_hat = z + p                              # (2,)
    return z, d_hat
```

Control and observer both run at 1 kHz in the setup reported
[arxiv:2412.03619 §III]. The master's M_obs depends on configuration, so the
gain is recomputed at every step. The paper does not say how it handles
near-singular configurations [arxiv:2412.03619 §II-C].

## Contradictions

None across papers, since only one card covers this concept. Inside the card's
paper, the error terms in the impedance law [arxiv:2412.03619 eq. 2] and the
control law [arxiv:2412.03619 eq. 3] have opposite signs, and the text does
not reconcile them. Implement the control law as printed in eq. 3 and eq. 7.

## Papers

- [A Teleoperation System with Impedance Control and Disturbance Observer for Robot-Assisted Rehabilitation](/papers/2412.03619): bilateral teleoperation of two 2-DOF rehabilitation robots, with a nonlinear disturbance observer on impedance control. Qualitative results only.
