A look at tire development in BeamNG (Part 2)


Hi everybody, I’m back again to talk some more about progress on tires and vehicle handling. Since the new year there have been some big changes to the way our tires work. First, we replaced our tire physical model with something we call the pressureWheel, and second, we revamped the underlying friction code. These changes have brought about a big change in vehicle handling that we are still in the process of fine tuning.

The previous physical model, called the hubWheel, used precompressed beams to inflate the tire as a simulation of air pressure. While it worked to a fashion, it wasn’t very elegant, and made the tire very difficult to tune. It seemed no combination of parameters could get me the behavior I was looking for in a tire. Believe me, I tried!

Luckily, about the time I was at my wits end, Estama revealed a new experimental tire, called the pressureWheel. The pressureWheel does away with all of these precompressed beams and actually uses air pressure physics laws to apply forces to the surfaces of the tire. Aside from being a more elegant solution, it brings huge improvements to the problems encountered with the hubWheel. With the introduction of the pressureWheel, we also upped the polygon density of the wheel from 12 rays to 16, which primarily helps smooth out low speed rolling and improves the look of tire deflection. After months of struggling with the hubWheel, Gabe and I were able to come up with a decent pressureWheel tune in just a few days.

However, just the pressureWheel alone was not going to cut it. After the pressureWheel, Estama produced a succession of experimental friction models for the team to test, and we found one that was more reliable in holding nodes in place with static friction. As a result, we could now make our tires physically “softer”, while still getting sharper handling. This gave us better tire deformation and transient steering response. It also increased the physics stability margin, giving us more headroom to make each tire type more unique. The result of these changes is a huge transformation in test results and driving feel.

**Test Results

** In my first tire blog I described the tests I have used so far to quantify tire behavior. This time around I am going to show some actual results. Something I’d like you to bear in mind, the curves I am showing you are measured from a machine built in the “physical” BeamNG environment. The BeamNG environment is one of mass, stiffness, vibration, and uncontrolled variables, and so, much like real life, measurements are subject to some error, and the curves aren’t going to look as smooth as an empirical curve fit that you might be used to seeing. It really comes down to the fundamental difference between BeamNG and most simulators. In BeamNG we are creating an almost purely physical tire model that operates in and obeys all the universal laws of the physics “sandbox”, in comparison to most simulators which create a special set of empirical relations specifically for their tires. Anyways, just keep it in mind 🙂

**Lateral (Cornering) Force Vs. Slip Angle








In thick blue, you can see what our old hubWheel was like. The complete lack of a peak meant the cars had very vague handling with a lot of yaw (drifting). Now, in thick red, with the new pressureWheel and friction model, we have a nice smooth curve with a peak. For comparison I’ve added a curve from an empirical (Pacejka 96) model representing a “real” tire. It turns out “real” data is not so easy to find or produce, so for now I am using some of these curves as a visual guide. As you can see our curve is still peaking a bit late, but there is still room for tuning in the physical model. I also don’t have any data for a tall and skinny 70 aspect ratio touring tire at the moment, so maybe I’m not too far off after all?







Again, what was going on with that hubWheel? The initial slope and peak looked ok, but then there was a strange increase at high slip ratio. We’ve fixed that with the new tire and friction model. Yes, it is still peaking a little bit late, but that again is a matter of tuning. As in the lateral case I think there is still some room to fix that up by stiffening certain beams in the tire.





Most vehicle simulators these days use an empirical mathematical tire model to determine tire slip and force generation. They run into the challenge of “mixing” lateral and longitudinal curves like those shown above, so that the car behaves properly with combinations of brake/throttle and steering. Because we have a real time physical tire model with unidirectional node friction, our “mixing” and friction circle behavior comes out of the simulation naturally. I haven’t had a chance to redo the test yet for the new pressureWheel and friction model (it’s a bit tricky to do on my current test rig), but here’s a result from the hubWheel. Even with the old hubWheel’s flawed slip curves, the graph still turned out similar in nature to the published data.

Load sensitivity is vital to simulating the effects of weight and weight transfer in vehicle handling. The plot above shows that our tire’s cornering stiffness decreases as load increases, as it should. This behavior is responsible for producing subtle under and oversteer behavior. Ideally, the peak lateral force coefficient should also decrease as load gets higher, but currently it does not. We will need to implement some improvements to the friction model to achieve this in the future.

**Speed Sensitivity

** One of the biggest hurdles I’ve had to wrap my head around while working on this project is the topic of speed sensitivity. Most vehicle simulators, to my knowledge, ignore the effect of speed on basic tire behavior. This is probably because they are somewhat based on the empirical Magic Formula model, which conveniently ignores speed. However, research into the science of rubber friction shows that as a viscoelastic material, its friction properties are highly dependent on slip velocity. As well, a tire spinning at high speed has all sorts of inertial effects that are speed dependent. Because we have a physical tire model that obeys newtons laws, and a speed dependent rubber friction model, we have all sorts of speed dependent behaviors coming out of our tires. But what effects are correct, and what are not? We can’t look to other vehicle simulators, or even to the most common tire and vehicle dynamics literature, as it typically ignores speed altogether.

What I have gathered so far is this:

  1. Due to the interplay between adhesion and hysteresis, at very low speed, tires have a much different slip curve than at running speeds. Maximum force coefficient is higher, and may not have a peak at all, but rather a plateau.

  2. Because of the velocity dependence of rubber friction, sliding friction should decrease at high slip velocity, which means tires should produce less friction at high speed than at low speeds.

  3. Cornering stiffness should remain the same or perhaps slightly increase as tire speed increases, due to the inertial effect of the tread elements moving at high velocity. I have read conflicting opinions and conflicting plots on this subject!

Now, with that in mind, let’s look at some lateral force vs. slip angle vs. speed surface plots. If you take a look at the axes, you will see these plots are much like the lateral force vs. slip angle plot shown up above, only with an extra axis representing the speed. At different speeds, the tire behaves slightly differently, and a surface plot is in my opinion the easiest way to see that.









Here is our old hubWheel and friction model. This surface plot shows some problems. There is no increase in grip at very low speed, and although friction decreases at higher speeds, cornering stiffness is also dropping off. Due to the lack of a peak in the friction curve, it’s difficult to see what might be causing the problem. The weakness at high speed is really where I think the “floaty handling” problem was coming from. Not too much use dwelling on this though, let’s check out the newest plot:









Quite a change! Aside from the much higher cornering stiffness and nice rounded peak to the curves, we can also see an increase in grip at very low speed. Cornering stiffness is not dropping nearly as much as before. Sliding friction is dropping off with speed, but perhaps drops off too early. Overall, this plot shows a huge improvement over the previous, especially for high speed handling. Bolide drivers, rejoice!

Now, with this huge change in our tire behavior, nuance in the handling of the vehicles is starting to become apparent, and we find ourselves now going back to retune the tires, suspension, and structure of the vehicles to achieve better behavior out on the road.

That’s all for now. I hope that this blog post has been informative, and that it will serve as a benchmark for future improvement to the tire model. I look forward to reading feedback and discussion on tire development, either here in the comments or in the forum.


BeamNG Major Updates

Festive Update v0.24.1 Released
BeamNG.drive v0.24.1 release highlights
The 2021 Winter Release – BeamNG.drive v0.24
BeamNG.drive v0.24 release highlights
The 2021 Summer Release – BeamNG.drive v0.23
BeamNG.drive v0.23 release highlights
The 2021 Spring Release – BeamNG.drive v0.22
BeamNG.drive v0.22 release notes
The 2020 Winter Release – BeamNG v0.21
BeamNG.drive v0.21 release notes
The 2020 Summer Release – BeamNG v0.20
BeamNG.drive v0.20 release notes
“La Vie à Toute Vitesse” – BeamNG.drive v0.19
BeamNG.drive v0.19 release notes
The 2019 Winter Release – BeamNG.drive v0.18
BeamNG.drive v0.18 release notes
Buckle up, heavy traffic ahead: Update 0.17 released
BeamNG.drive v0.17 release notes
Electrifying 0.16
BeamNG.drive v0.16 release notes
A Small Car on a Big Map – Version 0.15 released
BeamNG.drive v0.15 release notes
Light Runner – Version 0.14 Released
BeamNG.drive v0.14 release notes
The Automation Collaboration – Version 0.13 Released
BeamNG.drive v0.13 release notes
Get Busy – version 0.12 released
BeamNG.drive v0.12 release notes
Alpha version 0.11 – The Coast is Clear
BeamNG.drive v0.11 release notes
Sounds like version 0.10 is out!
BeamNG.drive v0.10 release notes
Hopping into 0.9
BeamNG.drive v0.9 release notes
Version 0.8 rolling in …
BeamNG.drive v0.8 release notes
Alpha version 0.7 released :)
BeamNG.drive v0.7 release notes
Version 0.6 released
BeamNG.drive v0.6 release notes