And here we go

(1-x)(1+x)(1+x/4) contact pressure distribution

It is not a perfect match, fy is too large, camber causes some artifacts at low slip angles. But given the simplicity of the model, I think the result is pretty decent.

I think a proper fix for the too large fy (lateral force) would be to model contact patch deformation due to carcass bending. The contact area changes from rectangular to trapezoid.

I've tried something much more simple instead, added a lateral force correction factor. It is pretty much a workaround for the limitations of the tire model, but seems to work quite ok.

7 deg camber, 2 deg slip angle, 0.85 fy correction factor:

I've pushed what I have so far to the vdrift-tools repo ( tirepn.py in github.com/logzero/vdrift-tools ).

I'd like to try and implement patch deformation (due to camber and fy) to see if I can get rid of the correction factor.

This is interesting.

So is this only for tools now, not in simulation yet?

(07-11-2016, 01:32 PM)CrystalH Wrote: [ -> ]This is interesting.

So is this only for tools now, not in simulation yet?

Yep. I still see it as work in progress, and python is simply faster for this kind of iterative development/prototyping.

Well, that was a waste of time...

I've implemented a 4 tread model (think of 4 narrow tires instead of a wide one), with vertical deflection, contact length and velocity calculated per tread depending on wheel camber.

To my surprise the force curves are pretty much the same, deviate only slightly from the single tread tire model.

Contact patch deformation doesn't seem to have much effect (deformation at max fy, shorter contact side has 0.14m and longer side 0.20m length).

It might be that the model is too simple in general, using a constant average contact pressure and a few other simplifications.

Here is how it looks like btw.

Fy/Fz per tread in green:

I have an idea of what might be the issue. I am using a normalized pressure distribution function. It scales with contact patch length. This simplifies the model, but makes the slope of the pressure distribution dependent on patch length, makes it softer.

Blue: short contact length

Red: longer contact length

Black: more realistic shape for longer contact length

I'll try implementing the piecewise (linear, quadratic) distribution with constant slope. It should result in increasing stiffness for longer contact lengths (I think...) and would be quite noticeable with the 4 tread model.

I've finally implemented the piecewise linear model (only fx at the moment).

Increasing the slope of the rear segment mostly increases stiffness:

Increasing the slope of the front segment reduces peak grip:

Now I need to make the slope increase dependent on contact patch length. So that we see a reduction of peak grip and increased stiffness with increasing tire load.

Combining both slopes the stiffness effect is pretty much negated and only peak reduction remains. At this point I don't think that slope variation is physically relevant tbh.

Another issue I've noticed with the current model is a too low contact pressure (below tire inflation pressure), need to look into it.

There is an empirical formula for contact length that I can use to fix the contact pressure issue. There is also another empirical formula for contact width, which my model assumes as constant.

The question of course is how much those empirical formulas depend on tire dimensions. I can imagine the coeficients of the width formula to be dependent on tire aspect ratio eg.

I think I understand the need for the magic formula now... Tires are complicated.

Here is something interesting.

Pacejkas formula uses a linear approximation for the friction coefficient

mu = c1 * fz + c0

I've asked myself how mu(fz) would look like with the contact patch model (using the empiric equations for tire stiffness and conact length and assuming mu ~ pressure^(-1/3))

Blue curve 200mm wide tire

Red curve 275mm wide tire

Green linear approximation

Both curves have a steep increase at low loads < 1.5kN. This is mostly due to me using a constant contact width model I think. In reality contact width drops rapidly at low tire loads.

What you see is that the linear approximation is actually pretty good. Another observation is that the red curve segment (2-5kN) looks pretty much like the blue segment shifted vertically. The shift factor between them is 8%.

This means that the 275mm tire would have about 8% more grip than the 200mm tire. I'll try adding this tire geometry correction factor to vdrift to see how much effect it has. Might be a simple solution to the rwd sports cars rear grip problem.

I've been working on the physical tire model again.

Checked my integrals with wolframalpha.com and found/fixed two errors.

I think it is now good enough to be tested in vdrift, will start porting it to C++.

The physical model has a slip velocity dependency. The magic formulas don't model this at all, are captured at some fixed velocity. This dependency might cause issues with the ABS/TCS/AI implementation, as it shifts the ideal slip points. It will be interesting to see whether it breaks anything.

It looked interesting so I thought I'd share a pic showing stick (darker red/blue) and slip (lighter red/blue) friction. Slip friction makes tires squeal (and heat up).

Physical tire model is in master now, yay!

It is disabled by default (requires VDRIFTP define), as I haven't done much testing yet.

But just drifting through a couple of turns on laguna seca with the 360 was great, especially after having spent so much time on the model just looking at the friction curves.