We are a team of life-long tennis players. Fascinated by how a beginner first learns how to bounce a ball on a tennis racket, we set out to create a model to describe how our minds automatically locate a tennis ball falling and how we subconsciously decide to react to misbounces of a tennis ball in order to maintain the ball bouncing on a racket. Our goal for the project was to extend this model to enable the Baxter Robot to bounce a ball on a wooden platform for as long as possible.
This project involved solving many challenging problems at the intersection of:
Computer Vision
Complex Path Planning
Actuation and Control
Localization of a ball falling in real time
Understanding physical properties of various objects and different material properties that result in a bounce
Building a controller that can ensure that Baxter's joints can move to their desired location smoothly and accurately
Devising an optimal path planning algorithm that can predict a board tilt that would maintain the ball bouncing on subsequent bounces.
A lot of the challenges and skills that we learned throughout the completion of this project are essential in any domain of autonomous systems. The following are some specific automated tasks in manufacturing that share many challenges of our project.
Autonomous pick and place tasks
Getting the Baxter robot to consistently pick up the board, and manipulate it properly with both arms was a far more challenging task than anticipated. Many of the obstacles we faced are likely to be present in other pick-and-place and grasping tasks, such as in industrial warehouse settings, or even other sports settings.
Real time obstacle avoidance
Our sensing setup involved using three Kinect sensors, and utilizing both pointcloud and image triangulation algorithms to track the ball, our object of interest. We additionally implemented a Kalman Filter to make our tracking robust to noise, and to additionally infer the object's velocity.
These techniques are widely applicable; for instance, they could be critical sensing components for a robot which is autonomously traversing an environment with moving obstacles.
Steady gripping of heavy objects when external forces are applied
A large challenge we faced in this project was coordinated robot arm movement to grasp the board. Similar challenges could be faced in industrial settings when trying to grip and move heavy or complex objects.
When we set out the build this project, we mainly were curious about whether it was possible for the Baxter robot to emulate a human's ability to repeatedly bounce a tennis ball. Thus, we focused mainly on the engineering challenges associated with this challenge. However, this project could be extended into more realistic and impactful realms, with greater ramifications. Examples of these include:
Robot athletic training: in a perhaps not-so-distant future, it is possible that robots could be prevalently used in sports training, including tennis. For instance, a robot could possible be built to be a more sophisticated ball machine, or even as a hitting partner. There would be social implications to such a product; this could benefit those without consistent ability to practice, and could perhaps even change the way professionals train. Economically, this would likely be an expensive product and thus would only be accessible to a select few, but would still be an interesting product.
Robot entertainment: we could also envision a scenario in which robots could be used in entertainment venues (i.e. robot juggling). Many of the basic ideas in this project would be applicable in such scenarios. These applications would introduce many moral and societal questions; for instance, who profits from these types of entertainment events? This would also result in potential loss of jobs for (human) athletes and entertainers, which would clearly have negative ramifications.
Modularizing Baxter functionalities: when we picked up this project, we thought that it would be quite straightforward for Baxter to bounce a ball. However, the project proved to be quite challenging. By modularizing all sorts of Baxter functionalities into open-sourced packages (such as bouncing a ball, picking up objects, integration with Kinect cameras), we hope to increase Baxter's ease-of-use.
Baxter tutorial: a great future extension of our project would be to build out a tutorial project that involves picking and placing objects (similar to what we had to implement). In doing so, we can teach younger students about robotics and ultimately inspire their passion for the field.