Let's Make Robots!

How to Build a Ping Pong Robot (YouTube)


The ModuPong YouTube channel is about a modular robotics system that tracks a ping pong ball in real-time. In addition, we cover in this channel how the system predicts and responds in less than 130ms.

Please tell me if you have any ideas on how we could make our system better. Cheaper and faster would be great!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Thank you for all of your support!!

Please keep on asking questions. I want people to learn from our project and help us learn about how we need to improve.

Thanks again!

John Milton

Hi John,

good explanation. I have to check the videos tonight since youtube is blocked in China :-(

But besides the speed of the servo it also have to move a mass on a lever to cover the whole width of the table, but this might be visible in the video I can't see ^_^ So further comments from me only after seeing the video ;-)

I made an executive decision when I started to design this robot in a CAD program to give it 3 Degrees Of Freedom (DOF) to reduce cost and decrease error when the robot returns the ball. Error mostly comes from the moving parts. We have 5 moving parts (4 servos and 1 air cylinder).

We talk about our 3DOF here in the Reaction System Video: http://www.youtube.com/watch?v=OfaoB8efB_E&feature=plcp

Please tell me if you know of a cheap way of getting or creating fast and accurate xyz-axis translation system that can cover the whole table. The thing that makes translation hard is F=ma (Force = mass x acceleration). You need to have a system that can accelerate, decelerate, and stop at particular point in xyz. In addition, there will have to be a feedback loop to tell the response system where the paddle is in real-time for the system to calculate the new response trajectory. The icing on the cake is that the system has to do all of this within a fraction of a second. It is possible but the cost will go up. Please tell me what your thoughts are?

Keep asking questions and giving suggestions. Thanks!

-John Milton

Now I watched all your videos about that topic. Impressice project and challenging goal. However, What I was afraid of is the moved mass. In your video the ball is played directly to the pad, good fr me to proof the concept ;-) But what when your opponent is playing "real" corner to corner, short and long. Yu not only need to cover the whole width of the table but also the space towards to the net and (lets say" some distance behind the table edge. 

Oh my...that's a lot of space and a lot of time to move from A to B and back to A. 

Ok, let's take this easy and only cover the width of the table. To move that 1,52m in just 10ms I think you will need a quite fast mechanism. I am not an expert, just merging numbers and experience but 10ms....i don't think it's possible taht eays and with hobby cmponents. 

What you can do to save time is to move the pad/bat to the target position as you calculate the flight path...this aves you at least precious 50 to 80ms and you can use the last 10ms for more precise bad positioning.


I played the ball directly at the robotics system because we only had one paddle finished at that time. With the same system that you see in the videos, we can add up to 32 paddles because the power supplies that we have are beefy. We can make a wall of paddles as in the last scene of promotion video here: http://www.youtube.com/watch?v=ObAUpV91PTg&feature=plcp. In that system, there are no problems with F=ma but there will still be some shots that it cannot get.

Worst case scenario, the average player at home can smash the ball at let’s say 50mph (22.35m/s). It would take the ball ~70ms to get across the table which is quite a bit more time than 10ms to respond with the “high velocity” control loop I talked about earlier.  

Your idea of moving the paddle as we approximate the trajectory is possible and would not cost us that much time. Do you know of any good cheap ways to move a ~7lb load at high velocities? I was thinking pneumatics.

130ms are a quite long time for a sport like ping pong. Anyway, i do not have seen the video yet but i guess it's doable with a right hardware and software. The tracking seems not to be the problem but to move the racket in a reasonable time...it's a question of the budget you want to spend.


As the ball moves faster across the table, the only things that need to move are the servos to angle the paddle. Our servos can move 60deg in 70ms.

Professional ping pong players have the ball smashed at them all the time. The best response to smash is a defensive return by angling the paddle with no forward motion. Another response for a ping pong player would be move further away from the table to allow the ball to decelerate.

To answer your question, we have thought about having a control loop that will take around 40ms to detect the velocity of the ball. If the velocity is faster than our prediction method can handle, the paddle can be programmed to deflect the ball into the air by angling the paddle up. The paddle could also angle itself downwards and try to return the ball fast and low. 30deg from normal is more than enough to deflect the ball up or low over the net. Thus, it would take ~35ms for the servo to get to its position.

Check out the prediction system video: http://www.youtube.com/watch?v=nKa263MhnCU&feature=relmfu

We are trying to make this system as cheap as possible (~$400).

Currently, we are looking into prototyping a 4 paddle system with a few FPGAs until we develop our own PCBs which will decrease the cost of the system significantly.

I am very glad you brought this topic up. Thanks for the comment!

-John Milton