The side-to-side juggling only works if the pendulum is synchronized to the ball motion, i.e. the pendulum has to position the paddle correctly to strike the ball. Previously, we used motors attached at the pivots to synchronize the pendulum to the ball motion. Here, we propose a more elegant way to achieve synchronization by adapting the paddle motion. The key idea is to exploit the dynamic coupling between the motion of the paddle and the pendulum. Children on a swing intuitively use a similar dynamic coupling to control their amplitude. They can swing higher and higher by moving up and down. In a similar way, we want to control the pendulum with appropriate paddle motions.

For more information about how kids pump a swing, see the work of William Case, for example this paper.

# Feedback control using the paddle

The Swinging Blind Juggler measures where the pendulum is at impact. Based on this measurement, the robot selects an appropriate paddle motion that positions the pendulum for the next impact.

We explain how this feedback strategy works with a simplified example (you may also find a video about the feedback strategy on the video page). A sensor located at the top of the pendulum measures the pendulum angle at ball impact. At ball impact, the robot measures the pendulum angle. It may be that the measured angle is different from the ideal angle for striking the ball. For example, the pendulum could swing a bit too far because a spectator pushed the Swinging Blind Juggler a little. Therefore, the robot needs to be able to react to deviations of the measured angle from the ideal angle. This is achieved by applying the right paddle motion for the measured deviation.

The figure illustrates how the Swinging Blind Juggler compensates for two deviations (purple and red) from the ideal angle (teal). The right side of the figure illustrates the paddle motions that bring the Swinging Blind Juggler to the correct position for the next ball impact. Note how the gray part is the same in all three paddle motions. This is the striking motion that the paddle must perform to juggle the ball: we can use only the colored section of the paddle motion to react to deviations.

We precompute many of these compensating paddle motions using tools from optimal control, such as the direct transcription method and the Sparse Nonlinear Optimizer SNOPT. The motions are stored in a lookup table where the robot can find the right motion to apply. If you are interested how we computed the paddle motions you can find the source code here.