1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Steering changes

Discussion in 'Racer' started by Ruud, Nov 18, 2010.

  1. Ruud

    RACER Developer

    From the v0.8.23 readme (out tomorrow I guess):

    "Steering revised quite a bit - the controls for steering left/right now use degrees, instead of being normalized. This changed some things inside the physics engine to use rotation more directly.
    The idea: set your controller's lock correctly. With cars that have a steering lock that is smaller or equal to that of the controller lock, the steering is direct (1:1). If a car has more lock defined
    in its car.ini, scaling will occur on the controller's steering output (now in degrees) to let it use the full range of the car's steering wheel.
    This all targeted a bit for 900 degrees where you no longer then have to tweak for a lot of cars. The controller setup screen is being worked on to visually check the lock (press F5 twice in the setup screen to show the 'Wheel' page).

    Why was a car.ini's steer.linearity needed again? I see no need anymore."

    It's getting along nicely, hope to finish it today, but one question remains: if I have a controller that has 'linearity' applied (not 1.0) for its steering, and the controller can output >= the angle that the car's steering wheel requires, should I also disable linearity?

    Example: G27 with 900 degrees of steering. Car1 has 720 steering lock. I want a 1:1 mapping. Although the Logitech G27 can go to 900 still, the virtual car's wheel only will go to 720 (clamped to the virtual car's capability).
    Car2 has 1280 degrees of steering; v0.8.23 will then scale the 900 degrees to 1280 to use the full steering range, and apply linearity (which might be useful since you now steer more in the virtual car's steering wheel than in your physical real-life wheel).

    Should Car1 disable linearity? I have a hunch it should, since real cars don't really have linearity applied in their steering system, do they?
  2. I don't like the up-scaling logic.

    That is where I use linearity... then around dead-centre the steering is close to linear (how it is in real life), then as you steer more it generates more lock to reach the value desired... ie, 1280deg in your example Car 2.

    Down-scaling is fine, but it may be confusing if you can steer more but it does nothing. I'd prefer it if Racer could access the directPlay (or whatever it is), and lock the wheel like the Control Panel feature can, to set a max lock that way.

    Linearity generally is REALLY good for old wheels with much less lock. You can run say 0.2 linearity and around dead ahead the steering feels about as sensitive as the real car would, and most corners it'll feel about the same too, then the last chunk of lock does the rest of the range.

    It really is ALL down to preference here I guess. It's not an easy problem to resolve at all.

    The moving down logic you have used is nice (if you can set a lock-out somehow that will be even better!), but the upward one will now, technically, make cars with what is technically slower steering in real life, actually FEEL sharper in sim because you are essentially speeding the steering up. A lorry for example, will feel quite sharp to steer hehe. Linearity is key at this point.

    I do a simple 900/1280 in your case, and use that as linearity, then the dead ahead and around centre stuff is very close to the simulated vehicle.

    That works ok for 900deg wheels, but is TOO much for 180deg wheels, where I use maybe 2-3 x (PC wheel lock/real vehicle lock)

    Then again, some people hate having linearity on their 180deg wheels... tough one :D

  3. Interesting thread, I've played with those settings the last 3 days (racer.debug.ini + car..ini + Pacejka) & I'm still searching for best steering sensations. In all cases, all car understeers too much & I ending up my curve almost always in the grass @ high speeds. However, it's getting better & I hope to get the cars to behave physically/virtually like in Shift, where I also took some days before finding satisfying results.

    Here's how I've set my G25 wheel, maybe it will help to program it correctly :

    Logitech Profiler :

    FFB Settings :
    Overall : 100 %
    Spring : 100%
    Damper : 100%
    Enable Centering Spring in FFB games : 100%

    Steering Wheel :
    Combined Pedals : ON
    Degrees : 220-230°

    In car.ini for my Ferrarri 430 GTC :

      ; available/default wheel lock of G25 = 900° degrees = -450° - 450°
      ; steeringRatio = steer.lock/wheel0.lock ; wheel_front.lock = 45°
      ; steeringRatio = 20:1
      ; For more control of the steering 'feel', you can adjust steering linearity per car
      ; The default is 1.0, meaning fully linear
      ; 0 is fully non-linear, smoothing steering a lot when not fully applied around the center, steering is slow ;
      ; it gets faster as you come to the limits of the wheel rotation
      ; Values above 1, upto 2 actually increase response, exaggerating the actual input giving an exponential response
      linearity=0.4                 ; (1.75*(1/(real wheel lock /pc wheel lock = logitech profiler)) = ((1.75*(1/(900/220)) = 0.4375 ?
    In car.ini, I tried to set up different values for friction_circle_method=0 to 5, still not 100% happy...because I can't feel almost no difference with different Pacejka Profiles recently created.

      ; Several physics settings - can have a big impact on car behavior, so proceed with care!
      ; Initial rotational speed
      ; Initial speed
      ; car's grip, when set to 0, the level's values are used, else, this overrides the levels grip
      ; engine's torque, when set to 0, the level's values are used, else, this overrides the levels torque
      ; Disable slipangle usage? (for steady-state acceleration tests)
      ; Disable pitch jacking forces?
      ; Disable roll jacking forces?
      ; Wheel rotation speed at start (100 for example)
      ; Enable suspension rotational movement?
      ; Enable wheels touching ground? (if 0, it's all car-track collisions)
      ; Enable gravity working on the body? Actually enables all chassis
      ; forces (suspension, aero, gravity). Gives a floating car if 0.
      ; Apply friction circle?
      ; Method; 0=Genta (prefers longitudinal forces)
      ;         1=vector trim (equal mix of forces)
      ;         2=void (don't combine forces; should be testing only)
      ;         3=Gregor Veble's combined Pacejka
      ;         4=Cruden combined (not really useful yet)
      ;         5=none (for MF5.2 testing; automatically used if Pacejka model is set to Magic Formula 5.2)
      ; Maximum slip length for combined slip calculations (5=understeery, 15=snap oversteers)
      ; Maximum tan (slipAngle); default is 0.75 (+/- 36 degrees), 20.0 (87 degrees) seems to work better
      ; Adjust force direction when wheel starts locking?
      ; Apply friction (reducing) curve based on slip velocity?
    It's a real science to create a car which handles virtually like a real one, that's what I'm trying to test & understand more deeply, still it requires heavy Racer engine knowledge...I'll read more on Racer.nl & do huge debug testings...which will surely take weeks before understanding how all variables are calculated together.

    Happy to hear you're brainstorming...

    A good link to read :

  4. The best place to start is with real numbers for wheel lock (actual), and steering wheel lock (actual)... then make that as linear as you can with the PC wheel.

    Then you are as good as there really :)

    Two big things are missing imo. Mz applied only about contact patch, not offset to it as in almost all cars. This removes any possiblity of torque steer, and also gives steering a weird lightness in straight lines.

    Secondly, there is no steering friction/weight. When stopped or when Mz approaches zero, the steering is essentially frictionless. My real car has a fair bit of weight when going dead ahead. The load-up in a bend vs straight ahead is nowhere near the range Racer currently is. I'd say maybe 2-3x heavier tops.
    I feel we need a baseline 'resistance' force to any wheel movement, and then add the Mz/steering rack forces over that. That way we can also make cars with not much feel and lots of weight, or loads of feel and weight, or not much weight or feel etc... right now it's VERY feelsome and only a selection on weight.

    Just been discussing this with Camsinny as he feels cars just don't 'feel' right through the wheel yet. And I think the above two are core reasons for this.

    I'm not sure Shift is a good thing to aim for though. It uses a great physics engine in my view, but the numbers are far from reliable there... close ratio gearbox adds acceleration AND top speed for example. Their focus on accuracy was far from a priority.
    I also drove it and felt it was fundamentally a bit wrong. Cars are very bouncy as if heavily under-damped, and super-stiff. Just not very nice.

    I do think Gran Turismo Time Trial demo was REALLY good feel though. Try it if you can!

    Imo, Racer is damn good right now, with the right settings. Not many cars out there are good out of the box for the latest Racer versions... something I hope to sort soon with a revised BMW M3 release. However, I'm still not 100% happy because of the omissions noted at the start of my post.
    KPI offset and steering 'friction' will be key to get FF feeling right :D

  5. I'm with Dave on this one - the current system is better than how other sims handle the situation, because it allows us to choose more freely and application driven just how the steering should work on a particular vehicle. What you introduced with the lock feature in controller.ini is a good thing, because it saves us time not having to go into our profilers and adjust the controller lock hard stops for every other car. However, it only works properly for <=900° cases.
    So, I agree with you that when car.ini steer.lock is less or equal to the controller lock, there should be a FFB hard stop and linearity should be 1.0 (normally the car.ini author would do this anyway if they develop with an appropriate controller).
    What I don't want to happen is being forced to cut of wheel.lock when steer.lock >= controller lock, because that is the case for perhaps 90% of all the vehicles we work on. Having an effective controller/steering system ratio of 1:1 is definitely the goal, but we also want to make u-turns and maneuver the vehicles around realistic corner radii. For those cases, controller lock/steer.lock = steer.linearity is working fine and gives us a nearly perfect 1:1 ratio for the mostly used input range, while allowing full realistic wheel.lock ranges as well. I think that's Case 2 in your example?

    Like Dave mentioned, this has been working very well for 900° controllers for years now, but many users of 180° and 270° controllers prefer different linearity ratios than those that result from the above formula, because the ramp-up effect is too pronounced when too extreme cases of low controller lock and high vehicle wheel.lock come together.

    My opinion on your closing question is two-fold: On the one hand I agree on the first part. As explained above, if controller lock and steer.lock can match up, linearity should be defaulting to 1.0.
    The second part is much more tricky - I believe that most vehicle's steering systems actually have a degree of non-linearity applied to them. Both via geometry of the steering linkage and/or through, for example, rack teeth angle variation, speed sensitive ratio changes and so on. Dealing with those is probably not a priority for now, but it should be kept in mind especially when talking about "rack ratios" and how they are defined in each given case.

    Example from a contemporary Honda steering system:


    One thing I would like to see in the general area of steering in Racer is steer.lock being decoupled from the FFB output, as they shouldn't really be connected anyway, in my opinion. steer.lock is just the graphic representation for the steering wheel model, but right now it influences the FFB effects especially around the centre position and can lead to severe shaking particularly on low steer.lock settings (say, <540°).

    If we can set graphic lock, wheel.lock, linearity, FFB strength and a baseline resistance force all separately, it should give us enough control and allow for a faithful representation of vehicle specific steering features.

    ...I took too long to write this, Dave already mentioned a few of my points, but oh well :)
  6. Ruud

    RACER Developer

    Careful with that combined slip. 5 (none) is really unrealistic, as Fx and Fy (lon/lat) forces are just created & used; no friction circle whatsoever. Method 3 seems the best bet sofar, although MF5.2 data is even better (but even we have little data, just some under-racing tires). MF5.2 does combined slip in its coefficients, but even then I've seen data that is halfcomplete.

    v0.8.23 will contain a 'flip_tan' option, something with the wheels and tan(slipAngle) that doesn't seem quite right.

    I've played most with max_slip_len and (less) with max_tan_sa.
  7. Ruud

    RACER Developer

    We use 3 main parameters with our high-end wheels; inertia (the 'weight' of the entire steering system), friction (constant force) and damping (linear with steering velocity). Not sure even now what damping would be related to in a real system; I tend to focus on friction.

    - friction: see the G27 preset (data/controls/presets); it has:
        ; Friction when going fast
        ; Friction when going slow
    where stick_friction is the friction when you go slow, and normal friction when at speed. I think the threshold is around 5 m/s (btw the road_noise threshold you have the other way around; it's a threshold only ABOVE which noise gets generated, not the other way around, but that's offtopic here).
    The G27 is not too great at creation friction, but you can still feel it.

    - inertia: also in the preset file, it's actually being used, but I never tried it.
    - damping: not in Racer's DirectInput stuff. Not sure what's really damping in a rack & pinion system; seems like friction to me.

    - torque steer: there's caster, which is like a spring and generates the straight line stiffness. Caster values should be low, perhaps 0.01 is a nice start (we are in the mm's with the high-end stuff). It seems on real cars there may be quite some caster, but steering geometry may quickly remove that as you steer. At least we're wondering why caster offsets should be so small, but the math seems to work out. It can quickly drown your Pacejka Mz feel if you add too much caster (it effectively becomes a spring).

    - KPI offset - there's the kingpin offset which will help there. From the source:

    kingpinMz=forceRoadTC.z*susp->GetKingpinOffset(); ///steer->GetsteeringRatio;

    You can see it in the ^1 or ^3 debug view I think. It comes into play when accelerating/decelerating with different grip levels left & right (steering pulls when you are half on the grass, half on the road, and accelerate).

    The G27's friction is not in the control setup screen, probably it should be. Too bad the wheel is so expensive; everyone should have one. :) Nice to see consumer wheels do friction more or less nicely.

    *EDIT* ouch, the kingpin docs are off; kingpin_offset is actually being used.
  8. Oooooo...

    KPI now functional, that's fantastic. Is that just the offset, or the angle too?

    Though if KPI angle/offset, and castor angle now defined as actual values, does the "camber with steer" get calculated as a function of them both, or would we still need to define that as well?

    Friction, not tried that yet. I'm on a G25 here so will have to try the G27 friction settings.

    Sounds like the two problems may now be alleviated with the right tuning of the above parameters.

    I guess friction is something we set in controller.ini, but I suppose longer term it'll be scaled per car so we can mix the right balance of friction/weight and 'feel' through the steering!?

    All good on that front :D


  9. This might be a good time to mention that we should turn off the centering spring FFB when in racer, if we make our cars right they will output the correct (or nearly so) FFB without the kludge if a centering spring.

    Alex Forbin
  10. Hmm Ruud, I checked those friction settings, and I was running 5,000/10,000 respectively already.

    I honestly can't call it a sensation like a real car. Do these values actually do anything? Is there something I should be doing to check these are active?
    Ie, if I boost them to 50,000 should I find it hard to turn my wheel at all? Ie, like it's stuck in treacle. It just wants to stay put wherever it is positioned?

    Is it possible to just add a force that will try resist rotation of the steering no matter what angle it is at? Dead ahead my cars steering feels about Y stiff at 50mph, in a bend at 50mph it's probably 2 x Y with random variations and noise of about 0.25 x Y... or 1.75Y > 2.25Y in strength...

    Right now in Racer it feels like Z stiff dead ahead, and a bend is about 15 x Z in strength...

    There needs to be a dead weight to the feeling. When you stop to do a U-turn you can do it easily with one finger, but no real car is like that. Many cars need both hands!

    I'm not sure how all this works with FF engines and DirectPlay or whatever it is these days, but Racer is kinda getting this element wrong still... it'd be nice to have it right.

    RealFeel on the Caterham mod in rFactor for example, the car feels heavy dead ahead, but not PURE Mz heavy... ie, the 'feel' is more there when you steer more, but around dead ahead it is more like a mix of centring spring, well damped and not the type that jolts the wheel from left to right at high frequency.

    Hmmm, no real idea how it all works, but I feel we are getting Mz right on our tyres, the kingpin offset will add the torque steer and some much needed feelyness, but there is a big gap still to it feeling real.

    Might be worth looking at what RealFeel did in rFactor?!!?

  11. Ruud

    RACER Developer

    KPI and caster both only use the offset. The angle is only helpful if you know other data (you need the precise suspension geometry to calculate the resulting caster/kpi offset at a certain suspension compression). For now that's static.
    Camber steer is completely separate - Racer doesn't do any suspension geometry implicit effects (it might in the future, but it's quite hard to design suspension geometry that gives nice properties for camber/caster/KPI).

    Friction works here; I think 10,000 was the highest you could go. When standing still, on my G27 I definitely feel the difference compared to driving. Perhaps something with the G25?
    The problem with friction combining in the controller and the car is that it's hardly tunable. Friction does feel a bit crap (compared to our high-end stuff, but even so), so you're very dependent on the wheel you bought for it to do as advertised. So I'm not sure a mix of controller+car settings is really helpful. Best perhaps to leave it at one constant setting for all cars.

    @QuadCoreMax: As Alex said, it's best to turn off that artificial spring from the wheel driver. The wheel should just stick in any position if you stand still. I always have it turned off and the rest set to 100%.
  12. Ruud

    RACER Developer

    You can't do friction using constant forces in games; you need to be closer in the loop to detect wheel velocity and react to that (we have the same problem at the high-end, where you need to specify friction to the wheel, which then has an inner loop at around 500-1000Hz). You can set the friction though, which is what Racer does. It feels a bit as if the G27 turns that off near center position though. Need to test more.

    The forces inside the G27 are hardly close to what a real car does, for both hands to be needed.

    I'll see if I can get RealFeel.
  13. It is weird to describe.

    Can you not just have a separate layer to the whole FF that is simply aiming to resist your movement of it, or the simulations movement of it.

    There must be a way to add an opposing force to any movement... hmmmm... far from my place to say, just seems odd that what you feel with the centring spring is the same kind of thing, just it needs to be happy to do that same thing, but the location to where it does it needs to be variable depending on the sum of the forces. If there is no net force, the current location is the 'centre' in essence.



  14. Ruud

    RACER Developer

    That is friction. :) but friction can only be implemented close to the motor, inside the hardware, since racer and other sims talk with a low frequency to the hardware. So separate friction effects can be uploaded to the wheel, which is what Racer does.
    So really it is then upto the wheel too make good friction. I might add a slider in the setup screen to change it live.
  15. Yeah, it'd be nice to be able to feel the change in isolation in the menu, so you can then start to get a feel for it.

    I wonder what are good settings to use in the control panel for the G25 wheel then. Ie, maybe the internal friction control strength possibility is a function of settings in there etc...

    I'll have to do lots of testing here, see if friction alterations can be had in isolation against the general FF in Racer with control panel tweaks.

    Longer term it'd be nice to mix these in Racer itself... and then have an overall weight per car...

    Would start to be nice to have cars feel consistent from one to the other, rather than each one being set per user by preference in car.ini...

    I'm surprised there is no calibration standard for wheels FF really.

  16. Ruud

    RACER Developer

    When standing still on the track, you'll feel 'stick_friction'. The preset default for the G27 is 6000, with 3000 at movement. So it's easy enough to isolate; just stand still. ;-)
  17. Hmmm, mine feels the same at desktop as it does in Racer stood still.

    G25 here.


    Could do with some kind of calibration/check system or something maybe. I wonder if I'm the only one without it, or if most people are, or we all have different levels. Makes making cars feel right a huge issue hehe :D

  18. EDIT:

    LOLZ, biggest lolz ever.

    This is what you get for reading retard settings FAQ's for rFactor and REALFEEL years ago.

    Just gone into my settings (control panel)

    Combined un-ticked, ok

    Degrees of rotation, 900, ok

    Overall effects, 100%, ok

    Spring effect, 0%

    Damper effect, 0%

    Centering spring enabled, but at 0%

    Just tested....

    Spring 100%, no change

    Damper 100%, WOW!

    There is the friction. WOW!

    I can't believe I've been playing with this silly idea that these settings are for silly wobble effects and should be turned off. They are CORE to Racer anyway!

    I really want to go drive now, but the wife is asleep in bed haha!

    I can easily see a factor to scale both the controller.ini friction values in the car.ini, so we can blend the right FF Mz amount with friction to get the right 'feel' of a car, never mind the overall strength.
    Then logic dictates that we have a global setting in the controller setup screen that then scales ALL those settings up and down to preference.

    That should then mean all users set overall strength in the menu, and then any single car should be tuned relative to other cars for steering weight/feel. Maybe we could have a setup screen where you hold the wheel and the force goes from a heavy racing car on slicks, to a modern sedan with little steering weight, and then you can adjust overall strength to make sure you are happy with the range of weights...


    Tomorrow is going to be wasted just driving :D

  19. Hmmm, weird side effect. Bumping all effects to 100% now, the Racer ff_factor feels drowned out. I'm now running a value near 1 for ff_factor in my M3 to get a nice mix of the friction and the Mz FF coming through.

    Feels ok so far with some gentle testing that is wife asleep safe :D

    I look forward to getting some settings where an Elise or Caterham is light and feel-some, while a big luxury saloon is a bit dull with little feel :D

    Ruud, what are the best settings to use for max_torque and max_force... I guess I'm wondering what they mean to what we feel etc...

    Also, what is the swap over speed of the friction settings? Would be cool as said to define at least a global factor to these per car (ie, ff_friction_factor) per car :D

  20. Something is odd here, if our cars are made correctly then Racer should be putting out the correct FFB WITHOUT any additional springs or sandbags stuck on the wheel. Why do we need an additional centering spring if our car has the correct KPI and caster? The damper function is just a generic kludge for games that don't calculate this right?
    When I drive my real cars I don't need to pull the steering wheel back to center unless I'm standing still. It would be nice to have some way of mapping a real wheel for reference.
    KPI should now let us feel bumps in the road through the steering wheel correct?

    Alex Forbin