Chapter 1: Control Prerequisites for Robotics

Lesson 4: Stability Notions (Lyapunov, BIBO, Input-to-State Stability)

This lesson formalizes several stability notions that are foundational for robot control: Lyapunov (internal) stability of equilibria, BIBO stability for input-output behavior, and input-to-state stability (ISS) for systems with disturbances. We work in the state-space setting that you already know from robot kinematics and dynamics and from the previous lessons of this chapter (state-space modeling and linearization).

1. Stability of Equilibria for State-Space Models

Consider a nonlinear state-space model in joint-space or task-space coordinates:

\[ \dot{x} = f(x,u), \qquad y = h(x,u), \]

where \( x \in \mathbb{R}^n \) collects robot states (e.g., joint positions and velocities), \( u \in \mathbb{R}^m \) is the control input, and \( y \) is the output (joint positions, end-effector pose, etc.). An equilibrium \( (x^\star, u^\star) \) satisfies

\[ f(x^\star, u^\star) = 0. \]

By shifting coordinates (which you have seen in the linearization lesson), we can usually assume \( x^\star = 0, u^\star = 0 \) and study the origin:

\[ \dot{x} = f(x), \qquad f(0) = 0. \]

We say that the origin is:

  • Stable in the sense of Lyapunov if for every \( \varepsilon > 0 \) there exists a \( \delta(\varepsilon) > 0 \) such that \( \|x(0)\| < \delta(\varepsilon) \) implies \( \|x(t)\| < \varepsilon \) for all \( t \geq 0 \).
  • Asymptotically stable if it is Lyapunov stable and, in addition, \( \lim_{t \to \infty} \|x(t)\| = 0 \) for all initial states in some neighborhood of the origin.
  • Exponentially stable if there exist constants \( M \geq 1 \) and \( \alpha > 0 \) such that

\[ \|x(t)\| \leq M e^{-\alpha t} \|x(0)\| \quad \text{for all } t \geq 0 \text{ and all sufficiently small } x(0). \]

For robot control, we normally want asymptotic or even exponential stability of tracking errors, because these directly connect to convergence speed and robustness to small disturbances.

flowchart TD
  A["Robot dynamics model: dot(x)=f(x,u)"] --> B["Identify equilibrium (x*,u*)"]
  B --> C["Shift to error coordinates: e = x - x*"]
  C --> D["Choose notion: internal, BIBO, ISS"]
  D --> E["Apply appropriate test (Lyapunov, transfer function, ISS Lyapunov)"]
        

2. Lyapunov Functions and the Direct Method

Lyapunov's direct method provides a powerful, coordinate-independent tool to verify stability without explicitly solving the differential equations. For the autonomous system \( \dot{x} = f(x) \), a Lyapunov function candidate is a scalar function \( V:\mathbb{R}^n \to \mathbb{R} \) such that:

  • Positive definiteness: \( V(0) = 0 \) and \( V(x) > 0 \) for all \( x \neq 0 \).
  • Radial unboundedness (optional but useful): \( V(x) \to \infty \) as \( \|x\| \to \infty \).

The derivative of \( V \) along trajectories is

\[ \dot{V}(x) = \nabla V(x)^{\top} f(x). \]

The classical Lyapunov theorems state:

  • If \( V(x) \) is positive definite and \( \dot{V}(x) \leq 0 \) in a neighborhood of the origin, then the origin is Lyapunov stable.
  • If \( V(x) \) is positive definite and \( \dot{V}(x) \) is negative definite (strictly negative for all \( x \neq 0 \)) in some neighborhood, then the origin is asymptotically stable.
  • If, in addition, there exist constants \( c_1, c_2, c_3, c_4 > 0 \) such that

\[ c_1 \|x\|^2 \leq V(x) \leq c_2 \|x\|^2,\quad \dot{V}(x) \leq -c_3 \|x\|^2,\quad \|\nabla V(x)\| \leq c_4 \|x\| \]

then the origin is exponentially stable.

In robotics, a classical Lyapunov candidate is the total energy of a manipulator (kinetic plus potential energy) or its shaped version under feedback. For a single-DOF rigid joint with inertia \( I > 0 \), position \( q \), and velocity \( \dot{q} \), consider a PD control law (already sketched in earlier lessons):

\[ I\ddot{q} + k_d \dot{q} + k_p q = 0, \quad k_p > 0,\; k_d > 0. \]

A Lyapunov candidate is

\[ V(q,\dot{q}) = \tfrac{1}{2} I \dot{q}^2 + \tfrac{1}{2} k_p q^2. \]

Its derivative along trajectories is

\[ \dot{V} = I \dot{q} \ddot{q} + k_p q \dot{q} = \dot{q} (I\ddot{q} + k_p q) = \dot{q} (-k_d \dot{q}) = -k_d \dot{q}^2 \leq 0. \]

This shows that the origin \( (q,\dot{q}) = (0,0) \) is asymptotically stable (and in fact exponentially stable, which can be seen from the linear form of the dynamics).

3. Lyapunov Stability for Linear Time-Invariant (LTI) Systems

Consider the linearized robot error dynamics from Lesson 3:

\[ \dot{x} = A x, \]

where \( A \in \mathbb{R}^{n \times n} \). The equilibrium \( x = 0 \) is asymptotically stable if and only if the matrix \( A \) is Hurwitz (all eigenvalues have strictly negative real part).

Lyapunov's second theorem gives the following equivalent condition: For any symmetric positive-definite matrix \( Q = Q^{\top} > 0 \), there exists a unique symmetric positive-definite matrix \( P \) such that

\[ A^{\top} P + P A = -Q. \]

If such \( P > 0 \) exists, then \( V(x) = x^{\top} P x \) is a Lyapunov function and the origin is exponentially stable.

For robotic manipulators linearized around a configuration, the matrix \( A \) depends on the inertia matrix, Coriolis terms, stiffness, and damping. Controller design (e.g., PD gains) is often chosen specifically to make the closed-loop \( A \) Hurwitz. The Lyapunov equation then certifies exponential convergence of joint or task-space error.

4. Bounded-Input Bounded-Output (BIBO) Stability

Lyapunov stability is an internal property: it concerns state trajectories. For controller design, we also care about how outputs react to bounded inputs. For LTI systems with transfer function \( G(s) \), BIBO stability is defined as follows:

The system is BIBO stable if for every input \( u(t) \) satisfying \( |u(t)| \leq M \) for all \( t \geq 0 \) (bounded input), there exists some constant \( N(M) > 0 \) such that the output satisfies \( |y(t)| \leq N(M) \) for all \( t \geq 0 \).

For a single-input single-output LTI system with impulse response \( h(t) \), the BIBO stability condition is:

\[ \int_{0}^{\infty} |h(t)| \, dt < \infty \quad \Longleftrightarrow \quad \text{BIBO stable}. \]

In the strictly proper, minimal, LTI case, BIBO stability is equivalent to all poles of \( G(s) \) lying strictly in the open left half-plane, which coincides with exponential internal stability.

For robot control, BIBO stability ensures that bounded joint torque commands produce bounded joint positions and velocities (and end-effector coordinates), provided we have a well-posed model and sensors. In multi-DOF robots, BIBO stability is usually studied by examining the poles of loop transfer functions around each joint or around a task-space channel.

5. Input-to-State Stability (ISS)

Input-to-state stability generalizes Lyapunov stability to systems with exogenous inputs (disturbances, unmodeled dynamics). Consider

\[ \dot{x} = f(x,w), \qquad x(0) = x_0, \]

where \( w(t) \) is an input/disturbance (e.g., external forces on a manipulator, unmodeled friction). The system is ISS if there exist functions \( \beta \) of class \( \mathcal{KL} \) and \( \gamma \) of class \( \mathcal{K} \) such that for all \( t \geq 0 \)

\[ \|x(t)\| \leq \beta(\|x_0\|, t) + \gamma \!\Big( \sup_{0 \leq \sigma \leq t} \|w(\sigma)\| \Big). \]

Intuitively, ISS means:

  • With no disturbance (\( w \equiv 0 \)), the state converges to the origin (like asymptotic stability).
  • With bounded disturbance, the state remains bounded and its bound grows at most with the size of the disturbance.

An ISS-Lyapunov function is a function \( V(x) \) that is positive definite and radially unbounded and for which there exist class \( \mathcal{K} \) functions \( \alpha_1,\alpha_2,\alpha_3 \) and \( \gamma \) such that

\[ \alpha_1(\|x\|) \leq V(x) \leq \alpha_2(\|x\|), \]

\[ \dot{V}(x,w) \leq -\alpha_3(\|x\|) + \gamma(\|w\|). \]

For many robot controllers, we can show that the closed-loop dynamics are ISS with respect to bounded disturbances in torques, model errors, or contact perturbations. This justifies that small modeling inaccuracies do not destabilize the robot but only cause small steady-state errors.

flowchart TD
  S["Closed-loop robot model: dot(x)=f(x,w)"] --> V["Pick candidate V(x)"]
  V --> D["Compute dV/dt along trajectories"]
  D --> J["Check inequality: dV/dt <= -alpha3(||x||) + gamma(||w||)"]
  J --> R["If satisfied, conclude ISS and robustness to disturbances"]
        

6. Python Lab — Lyapunov Analysis for Linearized Robot Joint Dynamics

In Python, we can use numpy and scipy (for Lyapunov equations) together with robotics libraries such as pinocchio or python-control to analyze stability of linearized joint-space models.

Below, we construct a simple 2-DOF linearized joint error model \( \dot{x} = A x \) and check exponential stability by solving the Lyapunov equation with a chosen positive-definite matrix \( Q \).


import numpy as np
from numpy.linalg import eigvals
from scipy.linalg import solve_continuous_lyapunov

# Example 2-DOF joint error dynamics: x = [q1, q2, dq1, dq2]
# A could come from linearizing the full rigid-body dynamics
A = np.array([
    [0.0, 0.0, 1.0, 0.0],
    [0.0, 0.0, 0.0, 1.0],
    [-50.0, 0.0, -10.0, 0.0],
    [0.0, -40.0, 0.0, -12.0],
])

# Check eigenvalues (Hurwitz if all real parts < 0)
lam = eigvals(A)
print("Eigenvalues of A:", lam)

# Choose Q > 0 (e.g., identity)
Q = np.eye(4)

# Solve A^T P + P A = -Q for P
P = solve_continuous_lyapunov(A, -Q)

# Check symmetry and definiteness of P
print("P (Lyapunov solution):\n", P)
print("Eigenvalues of P:", eigvals(P))

def V(x):
    return float(x.T @ P @ x)

def dVdt(x):
    # For linear system, dV/dt = x^T (A^T P + P A) x = -x^T Q x
    return float(-x.T @ Q @ x)

# Example trajectory simulation
def simulate(x0, dt=0.001, T=2.0):
    x = x0.copy()
    xs = [x.copy()]
    ts = [0.0]
    t = 0.0
    while t < T:
        xdot = A @ x
        x = x + dt * xdot
        t += dt
        xs.append(x.copy())
        ts.append(t)
    return np.array(ts), np.array(xs)

x0 = np.array([0.1, -0.1, 0.0, 0.0])
ts, xs = simulate(x0)

print("Initial V:", V(x0))
print("Final V:", V(xs[-1]))
      

In a robotics stack, the matrix A can be obtained by:

  • Using pinocchio.computeABADerivatives to get linearization of the dynamics.
  • Using python-control to create a StateSpace model and then calling Eigen or SciPy routines for Lyapunov analysis.

7. C++ Lab — Discrete-Time Lyapunov Test with Eigen

In C++, the combination of Eigen (for linear algebra) and typical robot dynamics libraries such as RBDL or Orocos KDL allows you to assemble linearized models and perform stability checks in real-time control software (e.g., in a ROS controller).

For a discrete-time system \( x_{k+1} = A_d x_k \), exponential stability is equivalent to all eigenvalues of \( A_d \) lying strictly inside the unit circle. An alternative is to find \( P > 0 \) such that

\[ A_d^{\top} P A_d - P = -Q, \quad Q > 0. \]

Below is a minimal C++ snippet (pseudo-code style) illustrating how to: (i) compute eigenvalues and (ii) check Lyapunov decrease using Eigen.


#include <iostream>
#include <Eigen/Dense>

int main() {
    using namespace Eigen;

    // Example: discrete-time joint error dynamics matrix Ad (4x4)
    Matrix4d Ad;
    Ad <<
        0.98, 0.0,  0.01, 0.0,
        0.0,  0.97, 0.0,  0.01,
       -0.5,  0.0,  0.90, 0.0,
        0.0, -0.4,  0.0,  0.88;

    // 1. Spectral radius check
    EigenSolver<Matrix4d> es(Ad);
    std::cout << "Eigenvalues of Ad:\n" << es.eigenvalues() << std::endl;

    // 2. Lyapunov function candidate V(x) = x^T P x
    Matrix4d Q = Matrix4d::Identity();
    Matrix4d P = Matrix4d::Identity(); // here we just choose P = I for illustration

    // Check that V decreases along one time-step for a sample state x
    Vector4d x;
    x << 0.1, -0.1, 0.0, 0.0;

    double Vx  = x.transpose() * P * x;
    Vector4d x_next = Ad * x;
    double Vxnext = x_next.transpose() * P * x_next;

    std::cout << "V(x) = " << Vx << ", V(x_next) = " << Vxnext << std::endl;

    if (Vxnext < Vx) {
        std::cout << "Lyapunov function decreases: system looks stable for this x." << std::endl;
    } else {
        std::cout << "No decrease for this x: adjust Ad or P." << std::endl;
    }

    return 0;
}
      

In a ROS-based robot controller, Ad could be constructed from a discretized continuous-time closed-loop model using the sampling time of the joint controller. Libraries like RBDL can compute the continuous-time dynamics, while the controller node uses Eigen to test stability properties online or offline.

8. Java Lab — Simulating Joint PD Control Stability

Java is often used in educational and competition robotics (e.g., FRC's WPILib). We can simulate joint dynamics and verify Lyapunov-like behavior (energy decrease) numerically. For matrix operations, a common choice is EJML.

Below, we simulate the scalar PD-controlled joint: \( I \ddot{q} + k_d \dot{q} + k_p q = 0 \) using explicit Euler integration and inspect the decay of \( V = \tfrac{1}{2} I \dot{q}^2 + \tfrac{1}{2} k_p q^2 \).


public class PdStabilityDemo {
    public static void main(String[] args) {
        double I = 1.0;
        double kp = 50.0;
        double kd = 10.0;

        double q = 0.2;     // initial position error
        double dq = 0.0;    // initial velocity
        double dt = 0.001;  // time step
        double T  = 2.0;    // total simulation time

        double t = 0.0;
        while (t < T) {
            // Dynamics: I * ddq + kd * dq + kp * q = 0
            double ddq = -(kd * dq + kp * q) / I;

            // Integrate
            dq += dt * ddq;
            q  += dt * dq;
            t  += dt;

            // Lyapunov function (energy-like)
            double V = 0.5 * I * dq * dq + 0.5 * kp * q * q;
            if ((int)(t * 1000) % 100 == 0) {
                System.out.println("t=" + t + " q=" + q + " dq=" + dq + " V=" + V);
            }
        }
    }
}
      

In a real Java-based robot project (e.g., using WPILib), the same dynamics can be wrapped into a periodic control loop. The observation that V decreases over time for small step sizes and suitable gains is a discrete-time analog of the continuous-time Lyapunov argument.

9. MATLAB/Simulink and Wolfram Mathematica Labs

9.1 MATLAB/Simulink — Lyapunov Equation and Simulation

MATLAB, with the Control System Toolbox and Robotics System Toolbox, is widely used for robot control design. The continuous-time Lyapunov equation can be solved with lyap.


% Example: 2-DOF linearized joint error dynamics
A = [0 0 1 0;
     0 0 0 1;
    -50 0 -10 0;
     0 -40 0 -12];

% Choose Q > 0
Q = eye(4);

% Solve A' P + P A = -Q
P = lyap(A', Q);

% Check eigenvalues of A (Hurwitz condition)
lambda = eig(A);

disp('Eigenvalues of A:');
disp(lambda);
disp('Lyapunov matrix P:');
disp(P);

% Simulink:
%  - Create a State-Space block with A, B = zeros(4,1), C = eye(4), D = 0.
%  - Feed an initial condition x0 in an IC block.
%  - Scope the states to visualize convergence.
      

9.2 Wolfram Mathematica — Symbolic Lyapunov Analysis

Mathematica supports symbolic and numeric Lyapunov analysis via LyapunovSolve. This is useful when studying parametric robot models.


(* 2-DOF linear joint error dynamics *)
A = { {0, 0, 1, 0},
     {0, 0, 0, 1},
     {-50, 0, -10, 0},
     {0, -40, 0, -12} };

Q = IdentityMatrix[4];

(* Solve continuous-time Lyapunov equation A^T P + P A == -Q *)
P = LyapunovSolve[Transpose[A], -Q];

Eigenvalues[A]
Eigenvalues[P]

(* Define V(x) = x^T P x and check its derivative symbolically *)
x = Array[x, 4];
V = x.P.x;

(* For linear systems, dV/dt = x^T (A^T P + P A) x = -x^T Q x *)
Simplify[Transpose[x].(Transpose[A].P + P.A).x + x.Q.x]
      

In more advanced lessons (e.g., robust and adaptive control), Mathematica can be used to derive symbolic ISS-Lyapunov conditions for simplified robot models.

10. Problems and Solutions

Problem 1 (Lyapunov Equation and Exponential Stability).
Consider the LTI system \( \dot{x} = A x \), where \( A \in \mathbb{R}^{n \times n} \) is Hurwitz. Let \( Q = Q^{\top} > 0 \). Show that the unique solution \( P \) of the Lyapunov equation

\[ A^{\top} P + P A = -Q \]

is positive definite, and that \( V(x) = x^{\top} P x \) is a Lyapunov function that proves exponential stability of the origin.

Solution: Because \( A \) is Hurwitz, the integral

\[ P = \int_{0}^{\infty} e^{A^{\top} t} Q e^{A t} \, dt \]

is well-defined and converges. For any nonzero \( x \),

\[ x^{\top} P x = \int_{0}^{\infty} x^{\top} e^{A^{\top} t} Q e^{A t} x \, dt = \int_{0}^{\infty} (e^{A t} x)^{\top} Q (e^{A t} x) \, dt > 0, \]

because \( Q > 0 \) and \( e^{A t} x \neq 0 \) for all \( t \geq 0 \) when \( x \neq 0 \). Thus \( P \) is positive definite and \( V(x) = x^{\top} P x \) is positive definite. Differentiating along trajectories gives

\[ \dot{V}(x) = x^{\top} (A^{\top} P + P A) x = -x^{\top} Q x \leq -\lambda_{\min}(Q) \|x\|^2, \]

which is negative definite. The quadratic bounds on \( V \) and \( \dot{V} \) yield exponential stability via standard Lyapunov theory.

Problem 2 (Nonlinear Scalar System Lyapunov Stability).
Consider \( \dot{x} = -x^3 \). Show that the origin is globally asymptotically stable using a Lyapunov function.

Solution: Choose \( V(x) = \tfrac{1}{2} x^2 \). Then

\[ \dot{V}(x) = x \dot{x} = x (-x^3) = -x^4 \leq 0. \]

\( V \) is positive definite and radially unbounded, and \( \dot{V} \) is negative semidefinite. Note that \( \dot{V}(x) = 0 \) only at \( x = 0 \). Using LaSalle's invariance principle, the largest invariant set where \( \dot{V} = 0 \) is just \( \{0\} \), so the origin is globally asymptotically stable.

Problem 3 (BIBO vs Internal Stability for LTI Robots).
Let a robot joint position controller be modeled as a strictly proper, minimal LTI system with transfer function \( G(s) \) from reference input to joint position. Assume that all poles of \( G(s) \) lie strictly in the open left half-plane. Show that the system is BIBO stable and internally asymptotically stable.

Solution: For a strictly proper, minimal LTI system, the location of the poles of \( G(s) \) coincides with the eigenvalues of the state matrix \( A \). If all poles are in the open left half-plane, then \( A \) is Hurwitz and the origin of \( \dot{x} = A x \) is asymptotically stable. The impulse response \( h(t) \) satisfies \( h(t) = C e^{A t} B \), which is absolutely integrable because \( \|e^{A t}\| \) decays exponentially. Thus

\[ \int_{0}^{\infty} |h(t)| \, dt < \infty, \]

which is equivalent to BIBO stability. Therefore, both internal and BIBO stability hold.

Problem 4 (ISS for Linear System with Additive Disturbance).
Consider \( \dot{x} = A x + B w \) with \( A \) Hurwitz and \( w \) a disturbance. Show that the system is ISS with respect to \( w \).

Solution: Let \( P > 0 \) solve the Lyapunov equation \( A^{\top} P + P A = -Q \) with \( Q = Q^{\top} > 0 \), and define \( V(x) = x^{\top} P x \). Then

\[ \dot{V}(x,w) = x^{\top} (A^{\top} P + P A) x + 2 x^{\top} P B w = -x^{\top} Q x + 2 x^{\top} P B w. \]

Using Cauchy–Schwarz and Young inequalities,

\[ 2 x^{\top} P B w \leq 2 \|P B\| \|x\| \|w\| \leq \tfrac{1}{2} \lambda_{\min}(Q) \|x\|^2 + c \|w\|^2 \]

for some \( c > 0 \). Thus

\[ \dot{V}(x,w) \leq -\tfrac{1}{2} \lambda_{\min}(Q) \|x\|^2 + c \|w\|^2, \]

which is of the ISS-Lyapunov form with \( \alpha_3(r) = c_1 r^2 \) and \( \gamma(s) = c_2 s^2 \). Standard ISS results then yield the desired bound \( \|x(t)\| \leq \beta(\|x_0\|, t) + \gamma(\sup_{0 \leq \sigma \leq t} \|w(\sigma)\|) \).

Problem 5 (Energy-Based Lyapunov Function for a 1-DOF Robot).
For the 1-DOF rigid joint with PD control \( I\ddot{q} + k_d \dot{q} + k_p q = 0 \) and Lyapunov function \( V(q,\dot{q}) = \tfrac{1}{2} I \dot{q}^2 + \tfrac{1}{2} k_p q^2 \), show that the origin is globally asymptotically stable.

Solution: We already computed \( \dot{V} = -k_d \dot{q}^2 \leq 0 \). The function \( V \) is positive definite and radially unbounded as long as \( I > 0 \) and \( k_p > 0 \), because \( V(q,\dot{q}) \to \infty \) when \( \|(q,\dot{q})\| \to \infty \). The set where \( \dot{V} = 0 \) is \( \{(q,\dot{q}) : \dot{q} = 0\} \). On this set, the dynamics reduce to \( \ddot{q} = -\tfrac{k_p}{I} q \), so unless \( q = 0 \), we obtain nontrivial motion and eventually leave the set. The largest invariant set is therefore just \( (q,\dot{q}) = (0,0) \). By LaSalle's invariance principle, the origin is globally asymptotically stable.

11. Summary

In this lesson, we introduced several key stability notions for robot control: Lyapunov (internal) stability of equilibria, BIBO stability for input-output behavior, and ISS for robustness to disturbances. We saw how Lyapunov functions translate robot energy or quadratic forms into rigorous stability proofs, and how linear Lyapunov equations provide a computational test for Hurwitz matrices derived from linearized robot dynamics. We also connected BIBO stability to the location of poles of transfer functions and introduced ISS and ISS-Lyapunov functions as a unifying framework for robustness analysis. These tools will be used repeatedly in later chapters (e.g., model-based nonlinear control, robust control, and adaptive control).

12. References

  1. Lyapunov, A. M. (1992, original 1892). The general problem of the stability of motion. International Journal of Control, 55(3), 531–773. (English translation).
  2. Massera, J. L. (1949). On Liapunoff's conditions of stability. Annals of Mathematics, 50(3), 705–721.
  3. Barbashin, E. A., & Krasovskii, N. N. (1952). On the stability of motion in the large. Doklady Akademii Nauk SSSR, 86, 453–456.
  4. Zubov, V. I. (1964). Methods of A. M. Lyapunov and Their Application. Nordhoff.
  5. Sontag, E. D. (1989). Smooth stabilization implies coprime factorization. IEEE Transactions on Automatic Control, 34(4), 435–443.
  6. Sontag, E. D. (1995). On the input-to-state stability property. European Journal of Control, 1(1), 24–36.
  7. Khalil, H. K. (2000). Universal integral controllers for minimum-phase nonlinear systems. IEEE Transactions on Automatic Control, 45(3), 490–494.
  8. Jiang, Z.-P., Teel, A. R., & Praly, L. (1994). Small-gain theorem for ISS systems and applications. Mathematics of Control, Signals, and Systems, 7(2), 95–120.
  9. Slotine, J.-J. E., & Li, W. (1987). On the adaptive control of robot manipulators. International Journal of Robotics Research, 6(3), 49–59. (Energy-based Lyapunov methods in robotics).
  10. Ortega, R., Loria, A., Nicklasson, P. J., & Sira-Ramirez, H. (1995). Passivity-based control of Euler-Lagrange systems: mechanical, electrical and electromechanical applications. Proceedings of the 34th IEEE Conference on Decision and Control.