Pushing force calculations

Suppose I have a gearbox ratio, robot weight, motor stall torque, wheel radius, and wheel coefficient of friction. How do I calculate the pushing force of said robot? I.e. if I were to take that robot and drive it against a scale at full power, what would the scale read? My current calculation is Motor Stall Torque * Number of Motors * Gear Reduction * Drivetrain Efficiency / Wheel Radius, but the results from this don’t seem correct. Did I do something wrong?

Additionally - What happens if I have stats for 2 robots? Can I calculate if one would push the other, assuming they were both running at full speed? If so, could I calculate the speed it would push the other robot at?

I’m not knowledgeable enough to tell you the answer to the first part, but I can definitely tackle these questions. Yes, you can calculate which one would push the other - force is a vector, after all. If you assume they’re pushing straight on, the robot producing the larger force will be the one pushing the other. Since Force = Mass x Acceleration, you would have to know the mass of your robot to find the acceleration of it. From there you could calculate the pushing “speed” (you would need to assume the time spent pushing, as Speed = Distance/Time).

1 Like

I didn’t see terms for coefficient of friction, nor for current limiting to the motors (possibly reducing stall torque).

The best way to calculate this is to get a scale, and measure it :slight_smile:


Correct me if I’m wrong - I thought that CoF was needed to find the maximum traction force, and that the maximum “pushing” force of a robot can only go up to the point where the wheels begin to slide. I.e. Maximum Pushing Force = min((Motor Stall Torque * Number of Motors * Gear Reduction * Drivetrain Efficiency / Wheel Radius), (Robot Weight * CoF)).

You’re not wrong, but you did NOT place any factor for coefficient of friction in your initial setup. Failing to do that means that we’re going to ask about it.

Your first equation gives you the available force at the wheel-to-carpet interface. It doesn’t give you how much of that force actually goes into driving your robot. If you are on ice, which effectively has a zero coefficient of friction, all that force is for nothing (except maybe melting the ice). But if you’re on FRC carpet with some nice fresh blue nitrile-treaded wheels, most or all of that force is going to go into pushing you forwards.

The trick is now to find that happy point where the wheels are just about to slip, given the robot weight, the available force to the ground, and the coefficient of friction between the wheels and the ground.

By the way, you may be interested in looking up some discussions from early 2009 in your free time–this sort of question came up quite frequently due to the low-friction surface that year.

1 Like

Basically the force a robot can apply on the ground is determined by this equation:
\text{min} \left[ \frac{1}{r} \tau_s V \eta \left(1-\frac{v G}{\omega_f V r} \right) n G;\ m g \mu \% \right]

V = voltage ratio
\tau_s = stall torque
\omega_f = motor free speed
G = gear ratio
n = # of motors
\eta = efficiency
r = wheel radius
v = robot instantaneous velocity
m = robot mass
g = gravitational acceleration
\mu = wheel CoF
\% = percent of the robot’s weight supported by driven wheels


Uh, Ari …

Maybe the full paper isn’t ready for peer review, but could you please at least show us the abstract? :slightly_smiling_face:


Can you tell I’ve been playing around with sprint time simulations too much? Here’s a better description:

The force your robot can apply on the ground is limited by the friction force the wheels can apply. The force applied by the motors is equal to the torque they apply at the wheel divided by the wheel radius. So we get:
F=\text{min} \left[ \frac{\tau_w}{r};\ f \right]

We can then expand those terms. The motor torque on the wheels is (torque each motor applies) x (number of motors) x (gear ratio) x (efficiency). The friction force equals the normal force times the CoF.
\tau_w = \tau_m n G \eta
f = F_N \mu

We can then further expand the motor torque equation using the linear relationship between torque and angular velocity, adjusted for voltage. And we know the normal force is equal to the force from gravity times the driven wheel percentage.
\tau_m = \tau_s^* \left( 1- \frac{\omega}{\omega_f^*} \right)
F_N = mg\%

There’s one last set of expansions. The motor stall torque and free speed can both be adjusted for voltage by multiplying the spec value by the voltage ratio. The motor rotational velocity can be calculated by dividing the robot’s velocity by wheel radius (to get the wheel rotational velocity) and then multiplying by the gear ratio.
\tau_s^* = \tau_s V
\omega_f^* = \omega_f V
\omega = \frac{v G}{r}

Putting all of that back together gives the formula I originally wrote:
F = \text{min} \left[ \frac{1}{r} \tau_s V \left(1-\frac{v G}{\omega_f V r} \right) n G \eta;\ m g \% \mu \right]

If you want to calculate the force the robot can apply when it’s not moving (either as it’s starting up or when it’s pushing against another robot), you can substitute in v=0. Then the formula simplifies to:
F = \text{min} \left[ \frac{\tau_s V n G \eta}{r} ;\ m g \% \mu \right]


Awesome answer, thanks for the help! I am confused about one thing though. If a robot can supply the maximum amount of force possible \left(mg\%\mu\right) at stall torque, wouldn’t it brown out if it had to sustain that force? Why don’t most robots brown out when they’re pushing against a wall? To actually have a pushing force of \left(mg\%\mu\right) would you need to be able to sustain it at under 120 amps?

Ever notice holes in the carpets at a competition? Even when pushing against a wall the wheels can spin.

This is known as, “Traction limited”, as in the wheels begin to spin before the motors are stalled and peak the current enough to brown out. This is good practice all around and should be considered in pushing force calculations as well.


but everything I’ve seen has suggested that determining if your robot is traction limited or not is based off of the stall torque of the motors. To have a robot which is traction limited wouldn’t you need to be able to sustain that force?

I’m not sure I understand exactly what you’re trying to say, but do keep in mind that static friction (wheels stalled on carpet) is always greater than kinetic friction (wheels spinning on the carpet). This means that once the wheels start to lose traction, the torque needed to continue spinning will drop, and thus the current will drop as well.

1 Like

Ah, that makes sense. So there’s really no reason to have a gear ratio higher than the minimum ratio needed to be friction limited?

You may want to go lower (that is, a higher ratio number, geared slower) if you’re worried about draining your batteries too quickly or damaging your components with heat.

1 Like

Is there a way to determine the kinetic CoF of a wheel? From what I’ve found manufacturers don’t provide that information and I don’t know if there’s any way to calculate it. Can it only be found experimentally?

Set up a tiltable ramp with FRC style carpet, as long as you can manage. Mount three or wheels on a frame so they can’t rotate and the frame can stand on the wheels. Slide the frame down the ramp, giving it a nudge to get it going. Find the angle at which the wheel goes slow and steady (doesn’t speed up or slow down, or not much). The coefficient of friction is then the tangent of the angle the ramp is making with the horizontal. If the angle is 40 degrees, its ~ 0.84, if 45 degrees 1.0, if 50 degrees, ~1.2.

As @Timebomb and @Oblarg said - in theory there is no difference, in practice there probably is. I would shoot for the same weight supported by each wheel as you’d have on the robot while driving.


Does the weight of the frame make a difference here?

In theory no, weight does not effect the CoF of your wheels. Dimensionless properties are weird like that.
That said, it’d probably be best for it to be as close to the full weight of the robot as you’re comfortable with: there are always a bunch of hidden variables (compression of the tread into carpet, etc) that might be more or less significant depending on weight. If you do add mass be sure to add it nice and low though, you’re probably going to be tipping the robot to some fairly extreme angles and you don’t want it… well… tipping.


The caveat being that this “theory” is a really, really rough simplification and in point of fact it the relationship between robot weight and maximum tractive force is not exactly linear.


Correct me if I’m wrong, but this is my current understanding:

So, let’s say I have a robot, and I drive it into a wall. Momentarily, the motors jump up to stall torque, to overcome static friction. Then, the wheels begin to slip. The force needed to keep the wheels slipping is given by the coefficient of kinetic friction multiplied by the robot weight.

Is this correct? Also, is there anywhere I can find existing data for the kinetic coefficients of friction of different wheels?