|
From: James T. <ja...@fl...> - 2023-07-21 13:04:47
|
> On 21 Jul 2023, at 13:32, Julian Smith <ju...@op...> wrote: > > > For reference, this all started with > https://sourceforge.net/p/flightgear/codetickets/1509/. > > It's a bit curious because the original reproducer says: > > reduce spring constant so, when plane is stationary, nose gear > reaches full compression. > > It's hardly surprising that things go wrong if one deliberately > mis-configures things like this, so this on its own would not be a > reason to change anything, IMHO. Right, no argument there. > > However a later comment says: > > But I tested the my above linked merge request at TF-G2 model, > where light spring constants are needed to be able to land on a > grass. > > So i think this is suggesting some particular aircraft may need a > modified spring function that gives greater force than normal when > highly compressed. (I wonder whether there's any information on the > real aircraft having such non-linear suspension?) Also agreed with your understanding here : there are particular aircraft (rough field aircraft?) which need light spring constants for other reasons. It would be good to hear from more aircraft developers as you say, if these are non-linear mechanical systems or have secondary springs when the ‘main’ spring is at full compression. Since intuitively, very soft springs will lead to the gear often being at full compression, when travelling over plausibly bumpy ground. > But we've recently learned that we must not allow ridiculously high > compression to cause ridiculously high spring forces, because the > ground level can momentarily leap upwards by thousands of metres. Right, although it might be separately god to see if we can address that would some filtering in the ground intersection code. > Maybe we could simply add a quadratic term scaled by a new > dimensionless constant `spring2` in the XML: > > force = _spring * compression * (_frac + spring2 * _frac**2) > > [One could view `spring2` has modifying the maximum force of the > spring at full compression, > > force_max -> force_max * (1 + spring2). > > For example `spring2=10` would result in 11x the force at maximum > compression compared to the default `spring2=0`.] > > I'm hopeful that this could address the original problem without the > danger of pathological behaviour. I think it would be pretty easy to > implement too. Definitely worth a shot, as far as I’m concerned. Again I’d be happiest when we have some unit-test driving this code that can try different spring constants, since I think that’s the only way to capture different aircraft FDM configs in a robust way, if we make changes to this code again. But, I appreciate in the absence of any existing tests in this area, writing the first test will be a non-trivial amount of work. Kind regards, James |