An artificial potential field approach for velocity control and object manipulation on shape displays
Summary
Shape displays, devices which can actively alter their surface topology, have promising applications for human-robot-collaboration, haptic interaction, and manufacturing. However, these use-cases are limited due to challenges in dynamic object control on the display surface. In this project, I create a general-purpose, extendable algorithm that enables complete trajectory control of spherical objects via surface rolling. The algorithm can also enable the control of multiple agents on separate trajectories with object avoidance, as well as cooperative formation control. On this project page, I'll describe the algorithm and show experiments that validate its performance.
Read my pre-print manuscript for full details, equations, and literature references.
Project introduction
This work is an off-shoot of the paper that my coauthors and I published in Nature Communications. In that work, we built a soft robotic shape display with a variety of capabilities. A shape display is a device which can change its surface topology using controlled and targeted actuation to different areas of the surface. One of the demonstrations that I implemented in that project was a closed-loop object manipulation scheme that could make balls roll around on the surface. While a little bit silly, this application could have valid uses in manufacturing and user-interactivity if improved upon.
My goal is to implement an improved algorithm to control ball motion using the inherent actuation properties of our robotic device. I selected a gradient descent (potential field) approach, as this has been successfully applied in many other robotic navigation systems.
Gradient descent algorithm
The gradient descent approach is relatively simple. The 'gradient' that the object will follow on any given topology is the height gradient -- it's a direct relationship to the gravitational potential energy of the system. Motion is created by the conversion from potential to kinetic energy, and the direction of motion will likewise follow the potential energy gradient.
In basic terms, my approach is to create a 'hill' for a ball to roll down. The position of the hill relative to the ball will determine (a) the amount of energy and therefore the speed that the ball will obtain after rolling down the hill, and (b) the direction in which the ball will roll.

The algorithm can be considered a closed-loop control system, where the velocity (both magnitude and direction) is the state vector that is actively measured and controlled.
The base algorithm of this control method allows me to control the position of a ball on the surface. However, the algorithm can also extend to a few other capabilities:
- Controlling the entire trajectory via velocity rather than location
- Avoiding obstacles while moving
- Controlling multiple agents at the same time
- Controlling a geometric formation of several agents
Results
Before jumping into the performance of the algorithm, here is a brief overview of the hardware I used for this project, from my previous shape display paper:

For a full description of the robot, check out the Nature Communications paper linked above. To summarize, the device is a 10x10 actuator array with an elastic surface skin. Each actuator has a 60x60 mm footprint, an upwards maximum displacement of about 15 mm, and an output force of a few Newtons. I use an overhead USB camera to image the display surface, and OpenCV object detection to find the position of a ball on the surface using the captured image. I use the ball position to derive velocity, and run through the control algorithm described early on this page.
With the above set up and control scheme, let's look at real-time video of some of the capabilities:
You can see that the real-time performance is pretty good! The motion of the ball is rapid and well-controlled by the active robotic surface. Here's a more in-depth look at the results of three demonstrations:

You can see in (a) that it requires less than 2 seconds to travel about 50 cm, representing rapid object manipulation. The trajectory of the ball is very consistent over 10 trials, showing good controllability and minimal overshoot. Similar results can be seen for the demonstration in (b), although there is significant overshoot for the limit cycle controller in (c) which results in the oscillatory and messy trajectory that you can see there.

The results of formation control are also promising. Here, you can see that the agents in the formation can achieve the target formation and maintain it, albeit with some similar oscillatory effects like those seen in the limit cycle demonstration.
Future work and conclusion
The video and figure results that I've shared show that the initial performance of this gradient descent/potential field control algorithm are already quite impressive - I can achieve object speeds reaching 50 cm/s across the surface, acceleration from rest of less than 0.5 s, high positional accuracy, and the ability to avoid obstacles, follow trajectories, and form multi-agent formations.
Of course, there are still areas where I can make improvements. In the algorithm itself, I can consider more complex forces like sliding and rolling friction against the robot surface, which I largely ignored here. I can also fine-tune the algorithm hyperparameters to achieve better results for this particular robot and object, even though the mathematics of the algorithm itself are hardware-agnostic. I could also improve the real-time performance by increasing the control frequency rate -- using a higher fps camera for imaging, and increasing the control loop frequencies for actuation.
I hope you've enjoyed this quick introduction and summary of this gradient descent control project. I had a lot of fun implementing it and hope it can provide inspiration for your own robotics projects!