Quadcopter Ball-in-Cup

One of the best parts of the graduate school at Carnegie Mellon has been the project based courses. In fulfillment of an advanced control systems integration course, my group and I developed a method of swinging a suspended ball up and catching it with a cup attached to a quadcopter. The quadcopter was a Crazyflie 2.0. With position and orientation of the quadcopter and ball from a motion capture, control was achieved off board via ROS. All of the heavy controls work (time-varying LQR for trajectory tracking and constrained optimization for trajectory generation) was done by my group member, Daniel Piedrahita and Andrew Tallaksen. I lead implementation of his work on hardware and getting us from simulation to reality.

ezgif.com-video-to-gif (4)

The above GIF shows the harmony achieved between our constrained trajectory optimization (top right in 3D, lower right in 2D) and our implementation (top left real video, bottom left RVIZ view). The magenta ball in the lower left RVIZ display shows two things, (1) an energy based prediction of the maximum height of the ball for predicting when to switch to, (2) a ballistic trajectory based forward-prediction of the ball’s position. You can see it switch to a ballistic trajectory prediction right before it catches it. This is the heart of why our system was capable of achieving ~40% success rate, a great achievement considering we went from no quadcopter experience to this in a single semester. After the end of the class, a couple of us have voiced our interest in continuing this research in our free time to improve our implementation and make the catch more repeatable.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s