← Back to the demos

Interactive demo

Data-driven shape control

Estimate the relation between gripper motion and shape change, then use this local model to drive the object to a target shape.

Try this

Which motions change each feature vector?

Translate and Rotate move the rod as a rigid body; Bend deforms it. Apply each motion and compare which of the three traces change.

Start with TranslateBefore pressing it: which of the three traces will change when the rod is displaced without deformation?

The shape servoing loop

The Jacobian is estimated once from test motions, then used and updated at every cycle of the feedback loop.

Offline · once1. PerturbApply a small motion to one command at a time and record the change in the features.Δu → Δs
Offline · once2. Estimate ĴEach feature change divided by its command increment gives one column of the shape Jacobian.Ĵ ≈ Δs / Δu
Online · every cycle3. Measure the errorSubtract the current feature vector from the target feature vector.e = s* − s
Online · every cycle4. Correct and repeatMap the error to a gripper velocity with the damped pseudoinverse of Ĵ, apply one small step and measure again.u̇ = λ Ĵ† e

        

Robots, object and target

Drag a gripper, its ring handle to rotate it, or the rod itself.
Object Target shape Measured features Discrete Kirchhoff rod · 24 segments
Move the object:

Signals in the feedback loop

Each feature component keeps one scale over the whole time window; the error panel shows the three representations on the same normalised axis.

Point coordinates

Edge vectors

Curvature

Robot command u̇

Normalised error

Definitions of the three feature vectors

Point coordinates

The x and y coordinates of each measured point. The vector retains position, orientation and shape, so all three can be controlled, and any rigid motion of the object appears as error.

eₚ = p* − p

Edge vectors

The vector from each point to the next. The difference between neighbouring points cancels absolute position, so edge vectors are invariant to translation but change under rotation and bending.

e_d = d* − d

Curvature

The turning angle between consecutive edges. The angle difference cancels both position and orientation, so curvature is invariant to rigid motion and depends only on bending.

eκ = κ* − κ
Takeaway The feature vector determines which errors the controller corrects.

Point coordinates retain pose and shape, edge vectors are invariant to translation, and curvature depends only on bending. The choice depends on whether the task specifies the pose of the object.

Related research →