sim racing pedals  |  sim racing hardware  |  sim racing monitors  |  sim racing articles  |  sim racing setups  |  sim racing shifters  |  sim racing steering wheels
Brian Beckman: The Physics in Games - Real-Time Simulation Explained
Thoughts on Brian Beckman's comments relating to low speed behavior by Todd Wasson
My main interest in this discussion was the conversation that sprung up around Beckman's comments about low speed behavior (video above). Over the last eleven years or so I've in part helped a lot of developers through this (many of them just hobbyists, some of them went on to make some of the other racing sims) . They all (myself included) have run up against the same thing which is what Brian discussed.

First the divide by zero problem: Obviously at 0 velocity you get a divide by 0 at least in the slip ratio calculation. I never had the slip angle divide by zero Brian talked about because I don't have a division anywhere in my slip angle equations. A simple dot product does the trick.

Regardless, when you start your simulation with the car at rest, that's a problem in slip ratio. But that's kind of minor. The real trouble is when you get too close to 0. Once the car gains any velocity at all it's virtually impossible to make the velocities return again to true 0 anyway. Even though the car looks like it's sitting perfectly still, it's not really. So shortly after the simulation starts you'll never really get the divide by 0. I challenge anyone doing a vehicle simulation to get all the velocities to return to 0 without setting them directly. Good luck with that The major flight simulators used by airlines and the military have struggled with this same problem forever. It's not unique to car simulations.

Here's an example of slip ratio working like it should. Instead of using rotational velocity of the tires I'll use linear speed of the car and tires which will probably make more intuitive sense to the non-physics/math nerds that have made it this far in the post and are still interested

slip ratio = 1 - (tire velocity / free rolling tire velocity)

A car going 50mph has a "free rolling tire velocity" of 50 mph. With no throttle/brake, the tire velocity is also 50mph. Slip ratio becomes:

slip ratio = 1 - (50 / 50)
slip ratio = 1 - 1
slip ratio = 0

Now you hit the throttle and some number of time steps later the tire velocity hits 55mph. Slip ratio is now:

slip ratio = 1 - (55 / 50)
slip ratio = 1 - 1.1
slip ratio = 0.1

If we freeze frame at this instant and look at the tire we'll see the tire force produced by whatever tire model you have (doesn't matter which one, whether it's transient or not, etc..). All that matters is that we have a forward force produced at the tire. A couple things happen due to the force:

1) The car speeds up a little bit.
2) The tire has a reaction force on it from the road that attempts to slow the tire back down to 50mph. On the other end you have engine torque trying to speed it up. Depending on which of those 2 torques is larger, at this moment the tire will either speed up, slow down, or stay the same speed.

If we have a time step of 1/100 or 1/1000th second this means we're calculating the acceleration of the tire and then allowing it to speed up however much it would speed up during a tiny little 1/100 or 1/1000th of a second period of time. At 50mph the tire is not going to speed up or slow down very much. It might go from 55mph to 55.01 mph. No problem. You drive off into the sunset and everything feels fine and works how you'd expect.

Now let's slow the car way down, almost to a standstill. Car speed is only 0.001mph. Practically not moving, but it does have some velocity. If the tire speed is also 0.001mph we have a slip ratio of 0 and there may be no tire force (regardless of whether transient effects are modeled or not). On the next time step the car may have slowed down to 0.0001mph. Now check out our slip ratio:

slip ratio = 1 - (0.0001 / 0.001)
slip ratio = 0.1

We have the same slip ratio as we had under very heavy throttle at 50mph before. Slip ratio 0.1 might very well be at the peak of the longitudinal force. I.e., this might be the maximum forward force the tire can produce. The next two things will happen again just as they did in the 50mph case:

1) The car speeds up a little bit. 2) The tire has a reaction force on it from the road that attempts to slow the tire back down to 50mph. On the other end you have engine torque trying to speed it up. Depending on which of those 2 torques is larger, at this moment the tire will either speed up, slow down, or stay the same speed.

Here let's say there's no throttle or brake applied. What the tire gets is a full backwards rotational "kick," with the same amount of torque as though you had something like full throttle applied to the tire, but in the backwards direction. Over our time step of 1/100th or 1/1000th second the car velocity might not change noticeably, but the tire's certainly will. Earlier we assumed that the velocity would change 0.01 mph over one time step under this same condition. Here's how they'll change:

Starting velocities:
tire free rolling velocity (car velocity) = 0.001mph
tire velocity = 0.0001mph
slip ratio = 0.1 <--full traction force!

The tire velocity then accelerates in the opposite direction: Backwards. It changes by 0.01mph. Giving us a new tire velocity:

tire velocity = 0.0001mph - 0.01mph
tire velocity = -0.0099mph

The tire is now rotating backwards instead of forwards as a result of the very brief full kick applied by our tiny little difference in velocities that gave us a slip ratio of +0.1 before this. And what happens to the slip ratio?

slip ratio = 1 - (-0.0099 / 0.001)
slip ratio = 10.9 <--- Holy crap!

Here's where we get to the part of Brian's video where he was talking about slip ratios going funky if the car is moving forward but the tire is rotating backwards and other such combinations. I remember this vividly because back in probably 2000 I was drawing out all these combinations of tire versus car velocities, positive and negative, to try and get the slip ratio directions to come out right. I had this big, nasty "if" block of code to solve it. It worked fine, but when I ran across Brian's solution for this I slapped my forehead and said "of course!" So thank you, Brian Beckman, for giving me that nice little equation that works regardless of the directions. I still use it.

Anyway, this is why he uses the absolute value of the tire velocity in the calculation. Really our slip ratio here should be negative instead of positive since the tire is rotating backwards while the car is moving forward. To keep things simple I'll just flip the sign of the slip ratio for this example.

slip ratio = -10.9

Check this out: We've gone from +0.1 slip ratio, which is the peak of the forward force curve, what you would get when accelerating at the limit of traction, to a negative 10.9 slip ratio. You now effectively have full braking torque applied to the tire. Not from the brakes, but from the reaction between the tire and the road. On the next time step it kicks back forward and you get a really big positive slip ratio again. Probably something at +0.1 or higher. The next step it kicks backward to -6 or something huge again. Back and forth, back and forth. It will only hit exactly 0 again as a matter of unbelievable luck. In 11 years I've never seen it hit 0. So it's pretty rare. (Granted, you can still get overflows from the division, but even if we had magic processors that never overflowed and didn't care about divide by zero problems, this phenomenon would still be something to deal with).

The tire oscillates backward/forward every time step with really big forces. All of these forces are at the maximum tire force. First forwards, then backwards, then forwards, etc.. The tire never stops and rests at slip ratio 0.

The same thing happens at slightly higher forward speeds. However, at these slightly higher speeds the tire doesn't literally go backwards anymore. Instead it might oscillate between +0.3 and +0.05 slip ratio. Again, the tire forces are jumping around like crazy and the car feels a little bit like it's floating. The rpm's jitter up and down a little bit even though your foot is off the throttle. If you happen to be turning the car while doing this, the lateral forces are going to be jumping up and down like crazy too.

And again, this has nothing to do with whether or not transient tire effects are modelled or anything to do with the complexities of measuring transient phenomena in a tire on a tire rig. The same thing will happen regardless of the tire model used as long as slip ratio is used as a direct input into the tire model in this manner.

Something similar happens in slip angle. If Brian's slip angle calculations have a denominator that can go toward 0 or not doesn't matter all that much. If we rotate things 90 degrees so we're looking at the car's side to side motion and forget about the rotation of the tire, when we get close to 0 velocity you get the same kind of oscillation, but this time it's got nothing to do with the slip ratio.

For instance, if the lateral (sideways) velocity of the car is 0.00000001 mph to the right and the forward velocity is exactly 0, the slip angle is 90 degrees. Your tire model gives you 100% force back to the left. On the next time step your velocity might now be -0.0035 mph. Your slip angle is now -90 degrees and the tire model gives you 100% force back to the right. The car oscillates between + and - 90 degrees. If we introduce a little bit of forward speed we get the same basic thing happening, but now the slip angles might oscillate wildly between -30 and +30 degrees.

In practice even the slightest slope on the ground or outside effect on the car will throw this off a little bit. What you get is the slip ratio oscillating and the slip angle oscillating at the same time. With slip angles seemingly randomly jumping between -30 and +30 with slip ratio jumping between +0.3 and -0.01, the tire forces are going all over the place. When you change the steering or throttle/brake input a little bit nothing really seems to happen. The feeling changes completely and you feel disconnected with the ground. When Brian Beckman talked about how you could feel the car change in some sims at lower speeds, this is the real reason for it.

Every sim developer in history has probably run up against this problem and I believe this is precisely what Brian Beckman was talking about. This aspect has nothing to do with whether or not somebody models transient effects in the tire itself. +0.1 slip ratio is going to be a big force regardless of the tire model. -0.3 will be a big force in the opposite direction. Therefore you get the oscillations, and they get more severe as the speed of the car is reduced. This is why when you park a car on a hill or banked corner in any orientation you'll often find the car very slowly slides down the hill anyway even though you're on the brakes.

Like this:

I recall Matt Jessick (an iRacer too) back in the days calling this the "bang bang" problem. It happens in simulation any time something is "supposed to" go back to 0 velocity. Instead it oscillates back and forth. This happens in clutch modelling too and is a pain to deal with.

There are ways around this problem in tire models of course, some work better than others but usually they need to be fine tuned very carefully to work well. One is to introduce the relaxation length of the tire which effectively is having you calculate the slip ratio or slip angle with two different methods and then use some sort of "psuedo slip ratio" or angle that reduces the oscillation and lets the slip ratio that's input into the tire model "chase" the normal calculated slip ratio. SAE950311 paper is one popular example among sim developers, but there are others. I never had much luck with these kinds of approaches. They're too finicky and difficult to tune for the most part, but they're certainly better than nothing.

Every sim developer struggles with this kind of thing and has put a ridiculous amount of time into minimizing or eliminating it. My first sim released in 2004, VRC, was much worse in this regard than iRacing is. I've only fairly recently worked out a great solution for it.

I eventually figured out a great way around all this in my most recent tire model which no longer uses either slip angle or slip ratio directly as inputs. Presto, problem solved. Car can park on hills, there's no low/high speed swap to slip ratio calculations, relaxation lengths come out of it automatically, etc.. It completely eliminates the problem Brian discussed in the video.

Anyway, I hope that helps to clear up the issue Brian Beckman's video brought up concerning slip ratio and illustrates the consequences of having the velocity in the denominator.

Article written by Todd Wasson.

Below demonstrates some of the projects Todd has worked on.

RC car simulator by Virtual Racing Industries and a personal project by his company Performance Simulations in 2000.

 Contact Sim-Racing : info (at) © 2012 - 2022
Tip: $simracing |