back

SimHub ShakeIt profile mechanics

slip/grip for tire haptics

I only recently discovered that SimHub considers imported profiles as duplicates NOT based on name;
enter No to have an imported profile considered unique.
I contemplate only 8 haptic transducers and 8 haptic signals, 4 of which are wheel slip.
Engine rumble on a dead pedal, where my left foot is pushing me back in seat, except when declutching.
I decline involvement with haptics for immersion;  I'm about driver aids.

One reason that I began writing SimHub plugins instead of Custom Serial profiles is because
C# software engineering is relatively painless using conventional programming tools;
copying and pasting C# procedures among files and GitHub repositories is quite manageable,
but swapping ShakeIt effects among profiles exasperates me intensely.

SimHub updates now have JavaScript formulae being less relatively expensive than NCalc.
Run once javascript code section supports precalculation and encourages modularity.

SimHub ShakeIt Slip/Grip haptic discussion

SimHub's Forced frequency enhancement of CUSTOM ShakeIt effect saved me learning VST3 programming.
Forced frequency is unrelated to rpm unless explicit in CUSTOM Effect settings formulae.
ShakeIt property values e.g. from proxyS are limited to 0-100 range.
My reactions are poor enough that early warning is valued,
with audible higher frequencies (approx 800Hz) tire squeal for slip onset warning.
Lacking real life experience with formula cars,
with (too?) many years since driving dedicated sports racers,
this feedback may lack credibility for drivers of those vehicles.
If both audible or tactile onset are too soon, then reducing proxyS Gain may help.
Otherwise, if tactile gets too strong too soon, consider increasing noisy Gamma.

SimHub Automatic calibration may not work well for WHEELS SLIP in AMS2.

My claim:  ratio of tire slip to grip is more useful feedback than slip alone.
This ratio usefully modulates haptic frequency, but also mutes output when ratio is small.
I was discussing with @RangeyRover about some custom SimHub plugin for longitudinal acceleration
when it struck me that the key to loss of control is when grip stops increasing with tire slip;
that ratio was simple and seemingly good enough.

To break up forced frequency pure tones, add rand() amount proportional to frequency,
e.g. frequency + Math.rand()*frequency/3
I feel minimum Hz works best > 30Hz for Dayton pucks.
60Hz is too high for strongest feeling from pucks under my thighs.
I prefer max Hz > 800Hz to approximate tire squeal sound heard for beginning slip
in BMWs that were driven for most recent > 5 years of track days.
IMO, tire haptic frequency should vary continuously from high to low with increasing slip/grip.
As fate would have it, puck haptics feel stronger as frequencies drop from around 150 to 30Hz;
over 150Hz is mostly audible, as in real life.

For tuning, one could create *tweak* custom effect property values, to be tweaked during playback,
then modify *noisy* and *output* to calculate min and max Hz from those *tweak* property values.

2D grip (acceleration) modulated by heave

IMO, lateral and longitudinal values should be treated equivalently for both slip and grip.
GlobalAccelerationG turns out to be just rescaled absolute AccelerationSurge,
not what is wanted in ratio with 2D slip.
Approximate integration confirms that positive heave acceleration is upward.
In theory, maximum negative heave should be -1G.
For slip/grip ratio, estimated grip values want square root of
  sum of squares of suitably scaled Surge and Yaw accelerations.
That 2D accel (estimated grip) value wants to be scaled by (1 + Heave) G's:
  • no grip when Heave = -1G   // vehicle in free fall
  • unity grip when Heave = 0
  • increased grip when Heave > 0.
Thus:  a fixed amount of slip becomes more concerning as estimated grip decreases,
      risking loss of control...

Shift haptic

Shift haptics was originally a one-off, not something I expected to use.
Based on speed/rpm ratio, gated by property from SimHub SHIFT effect.
Forced frequency based on rpm...   forced freq seemed constant,
except for 4 corner effect;   a bug?   -> fixed!

For longitudinal slip and discounting gear shifts,
changes to GameData.Speed / GameData.Rpms pretty well approximates longitudinal slip
without needing to know wheel rps. Sorting gear changes from other longitudinal slip
uses logic based on SimHub's Gear Shift effect.
This is doomed for cars with torque converters or continuously variable transmissions.

Coding Methodology

  1. ponder
  2. code
  3. test
  4. debug, loop to 1
  5. document, reviewing code and finding more bugs, loop to 1
  6. publish to GitHub
  7. collect feedback, loop to 1.

Wheel lock and force feedback vs tire lockup

Wheel lock usually means the amount of available steering rotation
or how abruptly resistance increases at rotation limits.
Based on slip, force feedback should decrease.
For example, losing control on ice, force feedback should basically disappear.
I do not recall feeling much tire judder thru steering while cornering on track.
On the other hand, locking up brakes could often create dramatic wheel judder.
Similarly for too hard acceleration with limited slip differential on patchy damp pavement.

I used to get complaints from driving school instructors that my driving scared their students,
but never crashed and was rarely passed when tracks were wet.
My only high speed spins were on snow and ice;
did a little ice racing in Canada with CASC during college.
Being my own mechanic and usually driving to/from events discouraged overexuberance.
My sports racer had more grip than I ever got comfortable exploiting.
Nearly all my most recent track experience was in trailing arm BMWs, with plenty of oversteer.
A couple of spins during autocross were too brief to sort.

In theory, spins happen when tires are well beyond peak grip,
while most judder occurs while tires are near peak grip.
With no off-road racing experience, I lack bases for judging haptics for e.g. EAWRC23.
I suppose that aggressive use of hand brake affects things.

Spin to me implies loss of yaw control, with tires past peak grip.
Lock for wheels means wheel rotation stopped, usually because of excessive braking.
On track, much slip is lateral, associated with change in direction, yaw times speed.
Substantial (lateral) slip is possible with wheel speed equal to vehicle speed.
Except when coasting, driving wheels must slip slightly to generate force for maintaining speed.

On track, one must learn to filter the overwhelming amount of inputs.
Meanwhile, e.g. lack of G forces in sims is only partly compensated by harness tensioning,
but I don't miss all the noise, windshield glare and expenses.

I am no athlete; it took me multiple weekends on each track to usefully remember corners
and skid pad sessions to sort car balance before having brain to spare
for noticing what feedback was reliable and helpful for improving driving.
Some other track junkies shared noticing how slowly and poorly I drove first sessions,
despite being in the advanced driver group, then gradually improved over weekends.
Car setup and practice were my compensations for lack of talent.

To improve steering feedback, I changed physical steering in real cars
(smaller rims, faster ratios, less assist and more caster).
That is one example of how sim wheels are unrealistic
by offering better feedback than most real cars in my experience.
In fact, my direct drive wheel base can deliver more feedback than I comfortably use,
which is a key motivation for my haptics to offload information from the wheel.

I suppose that experience helps imagine what physics can subvert sim telemetry for feedbacks,
but some of these feedbacks are more useful than realistic.
I am impressed (but not surprised) by how fast some sim guys can be with only G27 or G29,
because athletic skills and practice.  Meanwhile, I want all the help that I can invent...

Enhancements?

  • User interface for adjusting formulae "constants"
  • separately loadable profile parameters - car / sim specific
  • better understanding Automatic calibration
maintained by blekenbleu