Jump to content
The simFlight Network Forums

Controller Axis Lag and Smoothing (strange request)


Recommended Posts

Hi,

I would really like to see the ability to be able to adjust lag and smoothing for different axis. In the real world aircraft do have a certain amount of 'lag' depending on its size and weight. One thing I noticed in FS is that all aircraft, no matter what it is, or how the flight dynamics have been setup, they are always very responsive to your inputs (I am not talking about sensitivity here). There is no feeling of inertia or momentum. There is no feeling that I need to think two steps ahead to achieve my goal. For example, I am doing a barrel roll with my 747 (bare with me), it is spinning as fast as it can dependent on the flight dynamics and aircraft.cfg, the instant I release the stick and it returns to center, the aircraft instantly just 'stops' rolling, just like that. This is what I expect from an Extra 300, not a 250+ tonne aircraft.

From my observations of youtube videos (I am not a pilot) these 'lag's' are quite noticable. I have seen video's of an A320 pilot applying what appears to be full left aileron (you can see his hand) which takes a moment or two for it to translate to aircraft roll. Even in a Tornado fighter jet you can notice these lags, again, based on a video I have seen.

So, what I propose is:

1. The ability to be able to include lag in the available axis of Roll, Pitch and Yaw, which can be set by the user at increments of 0.05 seconds, which can be saved for specific aircraft.

and

2. Axis smoothing, which will adjust the speed at which a control surface takes to reach maximum deflection regardless of how fast you move the controller. Again with the ability to be saved for specific aircraft, and is fully user adjustable.

I believe these two additions are fully possible with FSUIPC, and would take the flying to another level for those who wish to use this feature.

Nev

Link to comment
Share on other sites

1. The ability to be able to include lag in the available axis of Roll, Pitch and Yaw, which can be set by the user at increments of 0.05 seconds, which can be saved for specific aircraft.

The delay feature in FSUIPC's axis assignments can be set in milliseconds. Please see the Axis Assignments section of the Advanced User's guide to see how to add it by editing the INI file.

2. Axis smoothing, which will adjust the speed at which a control surface takes to reach maximum deflection regardless of how fast you move the controller.

FS does something like that, but not very well, by default, if you assign there instead of in FSUIPC. If you want to do it in FSUIPC you'd need to assign the axis to a Lua plug-in and process the value there before sending it back as the appropriate axis control. You could apply whatever algorithm you liked that way.

Again with the ability to be saved for specific aircraft, and is fully user adjustable.

All assignments can be made Profile or aircraft specific.

Regards

Pete

Link to comment
Share on other sites

FS does something like that, but not very well, by default, if you assign there instead of in FSUIPC. If you want to do it in FSUIPC you'd need to assign the axis to a Lua plug-in and process the value there before sending it back as the appropriate axis control. You could apply whatever algorithm you liked that way.

Ok, thanks for you're reply. As i know nothing of alogrithm's, would there be anyway of implementing such a feature into FSUIPC's GUI to make it easier for those with no programming knowledge? Or a simple way of inducing controller smoothing into the INI file?

Thanks for your response,

Nev

Link to comment
Share on other sites

Ok, thanks for you're reply. As i know nothing of alogrithm's, would there be anyway of implementing such a feature into FSUIPC's GUI to make it easier for those with no programming knowledge? Or a simple way of inducing controller smoothing into the INI file?

Well, to be honest, i don't really agree with the need. Reponsiveness is programmed into the aircraft, and decent add-ons like those from Level D and PMDG seem to me to be spot on in any case. They are tested by real pilots. Maybe you are a real 747 pilot and think otherwise? If so you should really argue with the PMDG folks about their modelling.

There's already a fitering option. which does prevent sudden changes. But the point of that was to deal with unrealistically jittery controls, usually due to a bad power supply.

And I've no idea what sort of algorithm would actually give the results you want. You'd need to experiment. I don't really understand the reason -- surely with most aircraft the delay between moving a control and having the surface move is negligible in any case (there's a direct link in most small aircraft), and on stunt and fighter aircraft the response is as fast as the pilot movements. It has to be. So, I would be the worst person possibly to implement anything like this.

As you seem to know what you want to achieve why not try to program it yourself? That is exactly why the Lua plug-in facility was provided -- for individuals to do things for themselves. I can help you implement it, code-wise, but I can't tell you how the output should depend on the input (or not?). You obviously have your own ideas for that otherwise you wouldn't have proposed it. Why not just work them out and write them down? The steps to a working plug-in are then trivial. For example, for a simple linear movement:at a speed which is a fixed proportion of the pilots movement speed:


lastvaluesent = 0
targetvalue = 0
X = 0.5 -- Linear speed. 0.5 = half control movement speed
Y = ? -- Set this to the axis control being manipulated

while true do
targetvalue = ipcPARAM --ipcPARAM contains the value sent by the assigned axis control
if targetvalue ~= lastvaluesent then
-- Here replace X by some fraction experimentally to achieve desired result
lastvaluesent = lastvaluesent + ((targetvalue - lastvaluesent) * X)
-- Here replace Y by the FS or FSUIPC control number for the control being manipulated
ipc.control(Y, lastvaluesent)
end
ipc.sleep(10) --experiment with different delays here, 1 to 100 mSecs
end[/CODE]

The control number Y needs setting for each control -- see the list in your FSUIPC documents folder, or use one of 64100-64144 for the "direct to FSUIPC calibration" controls. The save this in the Modules folder as, say "ailerons.lua" or "elevators.lua". In the FSUIPC INI file add sections like this:

[Auto.<name>]

1=Lua ailerons

2=Lua elevators

where the <name> is the Aircraft or Profile name.

Then, in FSUIPC axis assignments, assign the relevant control to "luavalue ailerons" or "luavalue elevators" as appropriate.

All you then need to do is experiment with the value of X, or change the formula -- that's a linear formula moving the surface proportionally to the speed of the control movement. You might want it exponential or something. You can make it a fixed speed independent of the control speed by simply changing

[CODE]
lastvaluesent = lastvaluesent + ((targetvalue - lastvaluesent) * X)[/CODE]

to

[CODE]
if (lastvaluesent - lastvaluesent) >= N then
lastvaluesent = lastvaluesent + N
elseif (lastvaluesent - lastvaluesent) <= -N then
lastvaluesent = lastvaluesent - N
end[/CODE]

where N is some small fixed increment, like 64 or 128 or 256 (the whole range is 32768 so 256 gives 128 steps, etc).

See? The possibilities are endless! Have fun!

Regards

Pete

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. Guidelines Privacy Policy We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.