Servo motor for throwing a rubber ball


My arduino project “basketball shooter” which aims to throw a rubber ball to a
rim by mechanical arm( at MAX distance = 30~50 cm ), I plan to use a three axis
arm and this means three servo motors are needed, what kind of servo motor should I
pick for making a rubber ball “fly” ? Does the weight of servo motor care?

It is not at all easy to answer that question.

First, you need to calculate the force necessary to accelerate the ball and the apparatus that is holding it to the necessary release speed. Then you need to find a servo that can comfortably produce that force and speed.

I cannot tell from your description if any of the servos will be part of the mass being accelerated. A diagram would make that clear.


You might be better using the servo to "energise" an impulse device such as a spring then a second servo to trigger the spring which shoots the ball. In effect a low energy integrated up over a period of time (say several seconds) which is then released in a very short time (tens of milliseconds)

Hi Robin2 and jackrae,

Thanks a lot, my three-axis arm will be like as following diagram :

I am afraid of mass of servo2+servo3 will cause heavy loading to servo1
Should I adopt micro servos to overcome this ?

Why do you need servos2 and 3?

Only you can know whether microservos would be powerful enough. They will each be subject to the full throwing force beyond them.

If the purpose of servos 2 and 3 is just to orient the ball holder it should be possible to do that with some levers while the servos themselves remain on the ground.



If you are afraid of those weights, put them on a spot where they don't count that much.
Perhaps all of the servos close to servo 1, and have some mechanical way to convey the movement of the servo.
Think of wires or rods.
Also try to imagine how muscles actually work, they seem to do that job quite accurately and reliable.
So perhaps mimicking that would be a smart move.
I would also do the same thing to the arm connected to servo 1, because you probably need more speed on any axis than a servo could deliver.

Sorry, got an emergency call (don't worry, no lives at steak) and have to rush to work now.


My arduino project "basketball shooter" which aims to throw a rubber ball to a
rim by mechanical arm( at MAX distance = 30~50 cm ), I plan to use a three axis
arm and this means three servo motors are needed, what kind of servo motor should I
pick for making a rubber ball "fly" ? Does the weight of servo motor care?

I'd say you have a low chance of making this work with a hobby servo with any accuracy/repeatability.
You need something with smooth and controllable torque for well-defined launch, and hobby-servos
aren't upto the smooth and controllable torque bit. Certainly they may work well for setting up the
starting pose, but the throwing mechanism needs to be mechanically smooth, with as little variation
as possible.

(mechnical friction in a cheap multi-step gearbox is "poorly characterized" as they say - its not well
behaved. The position control loop inside the servo is subject to jitter and noise you cannot
measure or control.)

A belt reduction drive and fairly torquey (ie large) DC motor immediately sounds like a better
bet - you can control PWM and duration of action and leave the motor unbraked (make sure
your H-bridge supports this, most do). That ought to give a controllable and repeatable response.

The belt will reduce vibration and jerkiness of the motion (ie damp it). Remember a throw requires
a certain minimum power to work.

Of course if you want position control in the same axis as the throwing mechanism you'll need
to throw in an encoder and close the position control loop yourself (disabling it briefly for a throw).

The spring suggestion in #2 has a lot going for it too, but mechnically is complex (the release
mechanism is tricky). It allows the motors to be less powerful than the throw power too, keeping
motor size under control.

And finally a general note about robot arms - if you counterbalance each segment of the arm it is
much easier to control and much lower torques are needed at each joint. And the thing doesn't
buckaroo about when moving fast...

If you need extra reduction gearing a single stage of metal gears with light oil lubrication sounds
good to me (grease has a strong relation between viscosity and temperature).

Update my development status, the ball can fly for just a while (about 30cm)

Experimental video @youtube

The lack of energy makes the ball cannot fly a long distance, furthermore, the shape of
hand is difficult to design, it should behave like a human shooting a basketball...

Have you considered scaling down and using a golf ball, smaller target and work on the design in
minature for now? I still think repeatability will be an issue without careful attention to the things I've

IMO in basketball throws the hands don't do much, the ball is too large/heavy for fine wrist- and
finger-control, you tend to lock your hands into a fixed cup and work from the elbow and shoulder
for distance throws.

it should behave like a human shooting a basketball...

I would not assume that is necessary.

People already have hands designed for whatever and they use them to the best of their ability for each task. That does NOT mean that a hand is the ideal "tool" for the task.


Currently I throw a ping pong ball by performing gesture like a baseball pitcher…

Youtube link

Scaling down the rubber ball to ping pong ball… thanks to the same idea here


The pure swing indeed cannot generate enough force to make ball fly a long distance, human
muscles actually are the main power source.

The fly distance is approximately 28 inches, I aim to reach 40 inches by the same mechanical design.

The distance anything "flies" depends on a combination of the speed at release and the direction at release. Throwing at an agle of 45 degrees from the horizontal will give th greatest distance.

If you ignore air resistance you can calculate the distance easily by calculating the effect of gravity pulling it downwards.