While browsing through these forums to develop a better PID, my attention started to wander and I wondered if there was a way to calculate the actual speed of a robot theoretically. I decided I should practice my physics anyway, so I started deriving a formula for this situation.

Variables used:

ω = angular motor velocity

ωf = angular free motor velocity

τ = motor torque

τs = motor stall torque

W = robot weight

μ = coefficient of friction

r = wheel radius

v = robot velocity

Starting formulas:

ω = ωf(1 - τ/τs) slightly rearranged from here or here.

τ = Wμ*r From here.
v = 2πr*ω

Deviation:

Once we have the formulas arranged correctly the derivation is pretty easy.

Start by plugging in the second formula into the first to get

ω = ωf(1 - Wμ*r/τs)
Then, plug that into the third formula to get our final formula
**v = 2πr*ωf(1 - Wμ*r/τs)**

Example:

Now that we have a formula, to use it we need to determine all of the values for the robot. Both metric and empirical units can be used, but for metric Newtons (N) is the equivalent of lbs not kg (N = kg * 9.80). Also make sure to watch your units (I had to convert from in/min to ft/sec below). Following is an example robot that weighs 12 lbs and has four motors 393 motors powering double roller 2.75" wheels.

ωf = angular free motor velocity = 100 rpm (directly driven, motor specs here)

τs = motor stall torque = 14.76*4 (using 4 393 HS motors)

W = robot weight = 12 lbs

μ = coefficient of friction = 0.84 (see here for other wheels)

r = wheel radius = 2.75 in

plugging in all of the variables will return this

v = 2π*2.75*100(1 - 12*0.84*2.75/(14.76*4))

v = 917 in/min = 917 / 12 / 60 = 1.27 ft/sec

I think the coefficient of friction table linked above is for static friction and not kinetic friction, but I can’t find kinetic friction of the wheels anywhere else. If anyone else has more accurate numbers for kinetic friction please post below. Finally, I am not really sure if this is at all useful because it is easier to actually measure the speed, but it was fun to do and I though I would share it.