# realistic friction constants.

I am writing a java program to simulate PID contol of a robot drivetrain. For friction, i am including viscous and traditional friction, but i havn’t clue what realistic values for these are.

Viscous friction, like drag in a fluid? I don’t think many robots use systems where this would be a big concern. If you have oil-bath lubrication, or some fancy hydraulic coupling, this might factor in, but it’s most likely safe to neglect for our robots. Perhaps you mean friction between wet or dry surfaces?

By viscous friction is mean friction that is porportional to speed rather than constant. I do not know whether or not this is a signifigant factor, but i saw it in other models so i included it for completeness.

Maybe he means air induced drag?

Ok let me clarify myself. I have two types of friction in my model:
frictional force = constant * -sign(velocity)
and
frictional force = velocity * constant

The second might be totally unnecessary. Now back to the point, what are some realistic friction constants for a FIRST robot drivetrain as a whole (rolling friction from the wheels, friction in the gearboxes etc). I also need data on the rotor inertia of the CIM motors.

Most commercial controllers I have seen that use PID control loops put the system that is being controlled through a brief test, where the open loop characteristics of the system are measured.

One way they do this is to hit the system with a squarewave: full forward, full reverse, full forward, full reverse - and the response of the system is measured in real time

this information is then used to tune the PID loop to the system

The problem you are facing is, you want this information for a ‘typical’ robot (drive train)

what is typical? Every drive train will be different, and the friction it will encounter will be different.

Back to your equations, I dont know what type of friction you are describing with those equations. There are two types of fricition normally encountered:

Static friction: This is the ‘over the bump’ friction that you must overcome to get an object (or mechanism) to move from a standstill. It is normally a function of the weight that is being applied perpendicular to the force that is trying to move the object.

Kinetic friction: This is the force that is encountered opposite to the force that is moving the object, once it starts to move. This friction is constant, it is not a function of velocity, or acceleration.

FIRST robots do not move fast enough to have to consider friction from the air, and we have not yet had a water competition - so I dont think you need to worry about friction that is a function of velocity

but if you did, you would have to delve into the advanced mathematics known as differential equations. The friction is not simple a function of velocity, its an exponential equation.

What i am writing is a program to simulate the step test that you mentioned above. Really it can use any input for the setpoint, but i am using a step test for now.

When i ask for a typical friction numbers, i am only looking for a VERY rough approximation of what the range of typical values is. If someone could just give me an order of magnitude, that would be great. Are we talking about 10N or 10,000N here?

Btw my first equation was kinetic friction. Don’t even worry about the second. It seems to have confused everybody and caused this thread to loose focus. I think i started worrying about such a thing from a typo in a paper i read.

if you are looking at characterising a drive train with a robot moveing straight forwards and backwards, the friction would be pretty low

The constant would be somewhere around 0.1 or less. I have to point out, the equation for kinetic friction is the constant times the normal (usually downward) force.

Lets take the most simple example. A robot with two side by side drive wheels and two nylon skidplates for balance. The main friction will be the skidplates, and the value will be their co-effecient of friction on the suface (carpet) times the part of the weight of the robot that is on the skid plates.

If the coeffecitent is 0.1 and you have a 50Kg robot, and half the weight is on the skid plates, then the kinetic force is 0.1 * 50/2 * 9.8 or ~ 25N

The reason this is the most simple example is this friction will be the same no matter which direction the robot is going - straight, turning, spinning…

A more typical robot might have 4 wheels, using skid steering. In this case the forward and reverse coeffecient of friction might be much lower, say 0.01, but when the robot turns the tires have to slide (skid) sideways, which could have a coeffecient closer to 0.9 or 0.95.

It gets complicated very quickly.

But remember, kinetic friction is not a function of velocity.

I think that this will clarify things with regard to the types of friction.

As for friction coefficients, just a note; rolling friction is actually static, not kinetic, because a point on the circumerence of a wheel (or any rolling element) is instantaneously stationary relative to the ground. In fact, this is what allows a drive wheel to put power to the ground—the frictional force effectively moves the robot. If the wheel were sliding (like a skidding car with the brakes locked), the kinetic coefficient of friction is used, since there is relative motion between a point on the wheel and the ground. Sometimes you see the frictional losses at the axle counted in a wheel’s rolling friction, but strictly, they’re separate.

Common coefficients of friction for tread materials vary greatly; I’d estimate around 0.6 for Skyway smooth wheels, or around 1.2 for most rubber/polyurethane ridged treads. These are very rough figures, though, because many factors influence the coefficient of friction, including tread bias, carpet bias, tread wear, cleanliness of tread, etc… Also, if your normal force varies (e.g. the weight distribution of the robot shifts from front to back), the friction at a wheel will vary.

Tristan has tossed another curve into the discussion.

A non-slipping tire on carpet is static friction, if you are trying to calculate the pushing force of the robot - how much force can it apply to another object, or how fast can it accelerate without spinning its wheels, then you are looking at the static friction of the tire on the surface

but for a motor PID control loop, you dont care about that. You want to know how much friction the drive train is seeing as the motor spins (as the robot moves across the floor). That is the rolling friction of the wheel, and the kinetic friction of all the bearings and gears in the drive train.

Lets suppose that your robot weights 130 lbs, this corresponds
to a mass of 4.04 slugs. Suppose that the maximum speed of the
robot is 15 ft/sec. The energy of the robot is then 1/2 M V^2,
or 454 ft-lbf. Supposing that the motor controllers are wired to not
brake, and that the motors themselves do not generate any spurious
frictional forces when the controllers are not wired to brake, the
force of friction is what brings the robot to a stop when the power
is cut off. Supposing that the robot rolls about 20 feet if the power is
cut off at a speed of 15 feet per second, you can estimate the force
of friction in the drive train, assuming a constant force as a function
of velocity.

The total kinetic energy of the robot, 454 ft-lbf, is converted to
heat and noise by the frictional force, F, traveling a distance of 20 ft.

F = 454 ft-lbf / 20 ft = 22.7 lbf

This estimate assumes that the force of friction is a constant, as
a function of velocity of the robot. Your concern that the situation
might be more complicated, depending upon velocity,
is a valid one. The best way to really get a handle on this is a
measurement, you could pull a robot at a variety of speeds,
measuring the force required to pull it, and plot the results to
see how the frictional force depends upon velocity.

Hah! Thats a really good simple idea.