Baxter was able to successfully grasp the wooden board with both handles firmly and successfully bounced the ball 6 times consecutively despite us dropping the ball in different positions and approach angles. Our vision pipeline consistently localized the centroid of the ball in the world frame as it was falling, and the Kalman filtering additionally made our sensing robust to unexpected movements. Our tilting inference node was able to compute a tilt angle for the board that would keep the ball centered on subsequent bounces, and the robot actuation properly reacted to this information in the majority of instances.
However, there were still failure modes in this setup; if the ball fell in a location such that a large movement was required to maintain the ball's bounce, the robot at times failed to react and move within time, or would make an excessively drastic movement, resulting in the ball further bouncing out of the robot's "bouncing range". These challenges could be addressed via more complex control schemes - for instance, closed-loop control could prove to make the movements more stable, and we are also interested in exploring how an optimal control approach can be taken to perhaps ensure movements which promotes movements to keep the ball within the robot's range.
Below are some videos demonstrating the setup, and the Baxter robot bouncing the ball. These videos are sped up for practical purposes.