ELAI S.r.l.

Can a compliant robot push too hard? Understanding force during contact

A reproducible example explains stiffness, damping and force peaks: why yielding at contact does not guarantee a maximum force.

Can a compliant robot push too hard? Understanding force during contact

The problem: reaching a part without pushing too hard

Imagine a robot guiding a component against a locating surface during assembly. The surface position is not known perfectly: a few millimetres of error can turn a correct free-space movement into an unwanted push. An intuitive response is to make the robot more compliant, allowing it to depart from the requested position when it encounters a force. But does that choice suffice to limit pressure on the part? Here we study force, measured in newtons: discussing pressure would also require the actual contact area.

The goal is to distinguish three often-confused questions: how much the robot yields, what force remains once everything stops, and what maximum force appears before it stops. We build a single-axis model, solve its dynamics and compare three settings. The central result is that a small final force can coexist with a substantially larger peak; changing stiffness during movement also changes the energy balance. These are educational calculations with synthetic data, not robot tests or tuning instructions for a real machine.

Before the equations: what impedance means

A spring opposes greater deformation with greater force. A damper opposes velocity and dissipates energy; mass resists changes in velocity. Impedance control seeks to assign a chosen relationship between motion and force. Here we program stiffness and damping while keeping the equivalent mass fixed: this is a particular case, often called stiffness control. A physical spring need not be mounted on the wrist: motors may produce the relationship, in which case it also depends on sensing, computation and actuation.

The historical reference is Neville Hogan’s 1985 theoretical work on manipulation as dynamic interaction with the environment. Russ Tedrake’s notes distinguish direct force control from constructing a desired mechanical response. These sources provide the conceptual background; the numerical example below is constructed here and does not reproduce their experiments. We present neither impedance control as a recent discovery nor this article as original research.

One axis, one surface, explicit signs

Set x = 0 at the undeformed surface and take the direction into the material as positive. Position x is measured in metres; small penetration represents equivalent elastic contact deformation, not impossible passage through an ideal wall. The surface exerts −Kₑx on the robot, while the robot exerts F = Kₑx on the surface. Kₑ = 20,000 N/m is the synthetic environmental stiffness. We assume maintained contact, linear behaviour, no axial friction and no environmental damping.

The controller pulls toward a virtual position δ = 0.005 m, five millimetres beyond the surface. This deliberately incorrect reference makes the problem visible. Equivalent mass m = 2 kg is constant; it need not equal the whole arm’s mass. Commanded stiffness K has units N/m and damping D has units N s/m. We start in contact, x(0) = 0 with zero velocity: we do not simulate an approach impact. The reference is applied initially and then remains fixed. Gravity and other dynamics are absent or ideally compensated.

To determine contact-point motion we add the forces: restoring action K(δ − x), resistance −Dẋ and reaction −Kₑx. The symbols ẋ and ẍ denote velocity and acceleration. Newton’s second law gives:

mẍ + Dẋ + (K + Kₑ)x = Kδ; F = Kₑx

Every term in the first relation is a force. Both the controller and the surface resist displacement, so K + Kₑ appears in the dynamics. This sum is decisive: a setting chosen by considering only the robot in air does not automatically describe the system after contact. The surface enters the equation even if the software does not know its stiffness.

Final force: the cost of an incorrect reference

Start with the most accessible case: after all movement has ended, velocity and acceleration are zero. Two equivalent opposing springs remain. Solving the previous equation gives equilibrium deformation x* and force F*:

x* = Kδ/(K + Kₑ); F* = KKₑδ/(K + Kₑ)

With K = 200 N/m the point moves approximately 0.0495 mm and final force is 0.9901 N. It never reaches the requested five millimetres: that position error is precisely what permits yielding. Raising K to 1000 N/m, with everything else unchanged, increases displacement to 0.2381 mm and force to 4.7619 N. These values are below Kδ because the surface also deforms; as Kₑ tends to infinity, F* tends to Kδ. As K tends to zero, the restoring action intended to maintain contact disappears.

The formula exposes a trade-off: reducing K attenuates geometric error but also reduces resistance to position disturbances. It does not by itself guarantee the force a process requires. D is absent from the static result: damping changes the path toward equilibrium, not its final value in this model. To understand whether the part experiences an excessive push along that path, we must now include time.

The peak: the surface changes relative damping

A spring-accelerated mass can pass the point where static forces balance because it still has velocity there. The damper removes energy from this movement. To compare systems we use natural frequency ωₙ, in radians per second, and dimensionless damping ratio ζ. They are not additional commands: they summarise the combined effect of the parameters already introduced.

ωₙ = √((K + Kₑ)/m); ζ = D/(2√(m(K + Kₑ)))

For 0 < ζ < 1 the response to a suddenly applied reference is underdamped: it overshoots and oscillates while converging. For ζ = 1 it is critically damped and, with our initial conditions, rises without overshooting. Choosing D = 2√(mK) would be critical in free space, where Kₑ = 0. In contact with K = 200 N/m it instead gives ζ ≈ 0.0995: damping has not disappeared, but it is small relative to the new combined stiffness.

The table compares A, compliant and tuned for free space; B, equally compliant but critically damped using the surface stiffness; and C, stiffer and again tuned for free space. Peaks A and C are analytical maxima, not estimates from the highest plotted sample. For B the reported value is the asymptotic limit: there is no finite peak time.

CaseK (N/m)D (N s/m)ζFinal F (N)Maximum/limit F (N)
A20040.0000.09950.99011.7133
B200401.99510.99010.9901
C100089.4430.21824.76197.1207

In A, force reaches approximately 1.7133 N after 31.42 ms, about 73% above its final value. We have not established that this damages the component; we have shown that the static value is not an upper bound. In C, increasing K produces both greater final force and a greater peak. B removes overshoot in this specific model, but requires knowledge of Kₑ and ideal realisation of much higher D. Copying that value into a real controller is insufficient.

Analytical response with synthetic data. Notice peaks above the dashed final values; B approaches the same equilibrium as A without overshooting. These are not robot measurements.
Analytical response with synthetic data. Notice peaks above the dashed final values; B approaches the same equilibrium as A without overshooting. These are not robot measurements.

The derivation for readers who want to verify

Subtracting x* from the dynamic equation removes the constant force, leaving a damped oscillator. Its roots are −ζωₙ ± iωd, where ωd = ωₙ√(1 − ζ²) and i is the imaginary unit. Zero initial position and velocity determine the solution coefficients. The underdamped result is:

x(t) = x* [1 − exp(−ζωₙt)(cos(ωdt) + ζωₙ sin(ωdt)/ωd)] tₚ = π/ωd; Fₚ = F* [1 + exp(−πζ/√(1 − ζ²))]

Here t is time in seconds, tₚ the first maximum and Fₚ its force. The positive exponential term in the second line measures overshoot above F*: differentiate x(t), find the first velocity zero after t = 0 and substitute that time. Velocity is proportional to exp(−ζωₙt) sin(ωdt), so the first relevant zero is π/ωd. For ζ = 1 replace the expression with x(t) = x*[1 − (1 + ωₙt)exp(−ωₙt)], monotonic for nonnegative t. We do not divide by ωd = 0.

Energy: stability does not mean small force

We can now check why the system converges without confusing convergence with a force bound. Define energy E as the sum of the mass’s kinetic energy and the energies of the two equivalent springs, measured in joules. With fixed parameters and reference, its time derivative is particularly simple:

E = ½mẋ² + ½K(x − δ)² + ½Kₑx² dE/dt = −Dẋ² ≤ 0

Differentiate the three terms and factor out ẋ: the bracket is the dynamic equation, equal to −Dẋ. The system dissipates energy while moving. Around equilibrium one can also use ½mẋ² + ½(K + Kₑ)(x − x*)²: it differs only by a constant and has zero minimum. With positive D, equilibrium is the only state that remains stationary. Yet A and C peak. A system can be stable and dissipative while returning some initially stored energy.

Passivity concerns this balance, not whether contact is harmless. Considering only the robot, without the environmental spring, storage S = ½mẋ² + ½K(x − δ)² satisfies dS/dt = Fₑₓₜẋ − Dẋ², where Fₑₓₜ is the environment’s force on the robot. The first term is power exchanged through contact. This identity holds for the ideal continuous model with fixed reference; it does not certify a collaborative robot, include biomechanical limits or automatically establish the same property after delays, sampling or motor saturation.

If AI changes stiffness, where does the energy come from?

Suppose a perception system or learned policy decides to stiffen the arm after recognising a part. This is a possible architecture to analyse, not a description of an EL-AI product. If K increases while position error exists, virtual spring energy rises even without movement. At x = 0 and δ = 5 mm, changing K from 200 to 1000 N/m adds 0.010 J, calculated as ½(1000 − 200) × 0.005². The surface has not supplied that energy through displacement: changing the controller introduces another energy input.

The general form clarifies this without blaming AI for a problem that applies to any supervisor. If K and δ vary while m and Kₑ stay constant, differentiating E produces two additional terms:

dE/dt = −Dẋ² + ½K̇(x − δ)² − K(x − δ)δ̇

K̇ is the rate of stiffness change and δ̇ the reference velocity. Both additional terms have units of watts and can introduce energy. This does not mean every adaptation is unstable: it means the fixed-parameter proof is insufficient. The update must also be analysed, its energy and rate potentially constrained, and the entire system checked. Keeping K positive does not solve this by itself. If equivalent mass also changes, additional terms are required and are outside this analysis.

What would change with another control strategy

Direct force control tries to regulate F to a requested value instead of obtaining force as a consequence of position error. It can help when a process requires a specified load, but needs reliable force information and management of the transition between no contact and contact. Admittance control instead uses measured force to generate motion requested from an inner loop, adding that loop’s dynamics. These are not three names for the same software, and none automatically removes transition peaks.

For an industrial application the task comes first: holding position, following a surface and applying force are different objectives. A tool may need different stiffness in different directions, whereas this model has one axis. On a real arm, equivalent mass and the mapping from forces to torques vary with posture. EL-AI’s intended exploration of industrial and collaborative robotics makes these questions relevant; it is not evidence of controllers, installations or physical tests already delivered by the company.

Reproducing the result and recognising what is missing

The attached package evaluates analytical solutions rather than integrating a complex contact simulator. The plot samples those solutions every 0.1 ms; that interval only draws the curves and is not a digital controller frequency. Code checks nonnegative deformation at calculated points, agreement between analytical peak and solution at its peak time, and energy derivative −Dẋ². It uses no randomness and trains no models. With N time points and three cases, cost is O(N), as is storage for all traces; peak values alone require constant work per case.

Excluded effects include nonlinear deformation, impacts with initial velocity, friction, separation, joint elasticity, filters, noise, delays and saturation. A physical test would require platform model and interfaces, actual control rate, calibrated force measurement, arm configuration and a repeatable protocol. Both transients and initial conditions would need recording, with applicable constraints checked by appropriate expertise. We report no safety percentages or board and robot performance that we have not measured.

Answering the opening question

Making a robot more compliant can reduce force caused by position error, but does not determine maximum contact force by itself. Robot and environmental stiffness, mass, damping and initial conditions must be considered together. In our example the compliant setting A ends below one newton but exceeds 1.7 N during the transient. Changing stiffness or reference then requires an updated energy balance. Mathematics turns a vague quality—“the robot is compliant”—into separate, testable questions before we attach a guarantee we have not established.

Sources and executed code

Neville Hogan (1985), Impedance Control: An Approach to Manipulation, Part I—Theory, Journal of Dynamic Systems, Measurement, and Control 107, 1–7.

Russ Tedrake, Robotic Manipulation, Manipulator Control: Indirect force control (course notes, 2026).

Kevin M. Lynch and Frank C. Park, Modern Robotics, 11.2.2 Linear Error Dynamics (book companion).

from experiment import run
for r in run()['rows']:
    print(r['case'], round(r['force_equilibrium_N'], 3),
          round(r['peak_force_N'], 3), r['peak_kind'])

Code, data, and instructions · JSON. Educational calculations executed with Python 3.14.0; figures with Matplotlib 3.11.2. AI-assisted analysis, without claiming peer review or human review. Original illustrative ImageGen cover: it does not document EL-AI people, premises, or installations. Sources accessed 4 October 2026.