pilotjohn Posted July 24, 2011 Report Share Posted July 24, 2011 I use axis slopes extensively to tweak the feel of my setup. However, I noticed that when slopes are being applied on the negative side of an axis, the calculations seems to be off, and cause "jumps". On the positive side, as the axis values increase, the slope output increases as well with no issues. On the negative side, as the axis values decrease, the slope output decreases, but then suddenly increases then continues to decrease then increases etc. It's almost as if these "incorrect" outputs are happening on the interpolation boundaries. Watching the values in the GUI, the raw negative input values do not fluctuate, but negative output values do. Below are some output samples on the aileron axis with slope 2 (the issue also manifests itself on the elevator with slope 1). I also posted a video (smooth movement to left, jumpy to the right): Notice the jumps as you go through the numbers, they decrease, then you'll have an increase, then a continued decrease and so on. 357929 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -164 (0xffffff5c) AXIS_AILERONS_SET 358023 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -768 (0xfffffd00) AXIS_AILERONS_SET 358054 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -1280 (0xfffffb00) AXIS_AILERONS_SET 358116 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -1792 (0xfffff900) AXIS_AILERONS_SET 358179 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -2140 (0xfffff7a4) AXIS_AILERONS_SET 358241 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -2560 (0xfffff600) AXIS_AILERONS_SET 358303 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -2656 (0xfffff5a0) AXIS_AILERONS_SET 358366 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -2910 (0xfffff4a2) AXIS_AILERONS_SET 358428 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -3141 (0xfffff3bb) AXIS_AILERONS_SET 358506 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -3328 (0xfffff300) AXIS_AILERONS_SET 358569 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -3479 (0xfffff269) AXIS_AILERONS_SET 358631 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -3329 (0xfffff2ff) AXIS_AILERONS_SET 358693 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -3727 (0xfffff171) AXIS_AILERONS_SET 358756 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -3619 (0xfffff1dd) AXIS_AILERONS_SET 358818 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -4009 (0xfffff057) AXIS_AILERONS_SET 358881 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -3876 (0xfffff0dc) AXIS_AILERONS_SET 358943 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -4096 (0xfffff000) AXIS_AILERONS_SET 359021 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -4326 (0xffffef1a) AXIS_AILERONS_SET 359052 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -4215 (0xffffef89) AXIS_AILERONS_SET 359115 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -4098 (0xffffeffe) AXIS_AILERONS_SET 359177 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -4516 (0xffffee5c) AXIS_AILERONS_SET 359239 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -4413 (0xffffeec3) AXIS_AILERONS_SET 359302 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -4827 (0xffffed25) AXIS_AILERONS_SET 359364 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -4705 (0xffffed9f) AXIS_AILERONS_SET 359442 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -4615 (0xffffedf9) AXIS_AILERONS_SET 359505 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -5042 (0xffffec4e) AXIS_AILERONS_SET 359567 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -4941 (0xffffecb3) AXIS_AILERONS_SET 359629 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -4874 (0xffffecf6) AXIS_AILERONS_SET 359692 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -5315 (0xffffeb3d) AXIS_AILERONS_SET 359754 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -5233 (0xffffeb8f) AXIS_AILERONS_SET 359817 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -5173 (0xffffebcb) AXIS_AILERONS_SET 359879 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -5376 (0xffffeb00) AXIS_AILERONS_SET 360238 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -5597 (0xffffea23) AXIS_AILERONS_SET 360300 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -5533 (0xffffea63) AXIS_AILERONS_SET 360378 *** AXIS: Cntrl= 65763 (0x000100e3), Param= -5378 (0xffffeafe) AXIS_AILERONS_SET On the positive side of the axis, no such aberration exists: 368989 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 33 (0x00000021) AXIS_AILERONS_SET 369052 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 251 (0x000000fb) AXIS_AILERONS_SET 369114 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 256 (0x00000100) AXIS_AILERONS_SET 449892 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 467 (0x000001d3) AXIS_AILERONS_SET 449954 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 324 (0x00000144) AXIS_AILERONS_SET 450016 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 524 (0x0000020c) AXIS_AILERONS_SET 450094 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 699 (0x000002bb) AXIS_AILERONS_SET 450157 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 768 (0x00000300) AXIS_AILERONS_SET 450235 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 967 (0x000003c7) AXIS_AILERONS_SET 450266 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 1124 (0x00000464) AXIS_AILERONS_SET 450328 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 1280 (0x00000500) AXIS_AILERONS_SET 450391 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 1297 (0x00000511) AXIS_AILERONS_SET 450453 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 1562 (0x0000061a) AXIS_AILERONS_SET 450531 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 1792 (0x00000700) AXIS_AILERONS_SET 450594 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 1919 (0x0000077f) AXIS_AILERONS_SET 450656 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 2314 (0x0000090a) AXIS_AILERONS_SET 450718 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 2560 (0x00000a00) AXIS_AILERONS_SET 450781 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 2679 (0x00000a77) AXIS_AILERONS_SET 450843 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 2961 (0x00000b91) AXIS_AILERONS_SET 450906 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 3219 (0x00000c93) AXIS_AILERONS_SET 450968 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 3328 (0x00000d00) AXIS_AILERONS_SET 451046 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 3370 (0x00000d2a) AXIS_AILERONS_SET 451077 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 3472 (0x00000d90) AXIS_AILERONS_SET 451140 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 3606 (0x00000e16) AXIS_AILERONS_SET 451202 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 3731 (0x00000e93) AXIS_AILERONS_SET 451264 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 3842 (0x00000f02) AXIS_AILERONS_SET 451327 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 3905 (0x00000f41) AXIS_AILERONS_SET 451389 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 3956 (0x00000f74) AXIS_AILERONS_SET 451467 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 4027 (0x00000fbb) AXIS_AILERONS_SET 451530 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 4094 (0x00000ffe) AXIS_AILERONS_SET 451592 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 4096 (0x00001000) AXIS_AILERONS_SET 451654 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 4151 (0x00001037) AXIS_AILERONS_SET 451717 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 4320 (0x000010e0) AXIS_AILERONS_SET 451779 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 4573 (0x000011dd) AXIS_AILERONS_SET 451842 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 4846 (0x000012ee) AXIS_AILERONS_SET 451904 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 5146 (0x0000141a) AXIS_AILERONS_SET 451982 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 5376 (0x00001500) AXIS_AILERONS_SET 452013 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 5416 (0x00001528) AXIS_AILERONS_SET 452076 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 5642 (0x0000160a) AXIS_AILERONS_SET 452138 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 5944 (0x00001738) AXIS_AILERONS_SET 452200 *** AXIS: Cntrl= 65763 (0x000100e3), Param= 6262 (0x00001876) AXIS_AILERONS_SET Link to comment Share on other sites More sharing options...
Pete Dowson Posted July 24, 2011 Report Share Posted July 24, 2011 I use axis slopes extensively to tweak the feel of my setup. However, I noticed that when slopes are being applied on the negative side of an axis, the calculations seems to be off, and cause "jumps". Sorry, I always need FSUIPC version number, and in this case also please paste in your INI file Axes and JoystickCalibration sections. Pete Link to comment Share on other sites More sharing options...
pilotjohn Posted July 24, 2011 Author Report Share Posted July 24, 2011 Sorry, I always need FSUIPC version number, and in this case also please paste in your INI file Axes and JoystickCalibration sections. Pete FSUIPC version is 4.711. There is no "Axis" section since none of the axes are controlled by FSUIPC. The "Joystick Calibration" section is below: [JoystickCalibration] AllowSuppressForPFCquad=Yes ExcludeThrottleSet=Yes ExcludeMixtureSet=Yes ExcludePropPitchSet=Yes SepRevsJetsOnly=No ApplyHeloTrim=No UseAxisControlsForNRZ=No FlapsSetControl=0 FlapDetents=No MaxThrottleForReverser=256 SteeringTillerControl=0 MaxSteerSpeed=60 Aileron=-16192,0,16,16192/8 Elevator=-15680,256,16,16192/8 Rudder=-12288,0,16,12288/8 LeftBrake=-16192,20480 RightBrake=-16192,20480 Throttle1=-16192,0,0,16192/40 Throttle2=-16192,0,0,16192/40 Mixture1=-16192,0,0,16192/40 Mixture2=-16192,0,0,16192/40 PropPitch1=-16192,0,0,16192/40 PropPitch2=-16192,0,0,16192/40 SlopeRudder=3 SlopeRightBrake=4 SlopeLeftBrake=4 SlopeAileron=2 SlopeElevator=1 Link to comment Share on other sites More sharing options...
Pete Dowson Posted July 24, 2011 Report Share Posted July 24, 2011 The "Joystick Calibration" section is below: Okay, from these: Aileron=-16192,0,16,16192/8 Elevator=-15680,256,16,16192/8 Rudder=-12288,0,16,12288/8 Throttle1=-16192,0,0,16192/40 Throttle2=-16192,0,0,16192/40 Mixture1=-16192,0,0,16192/40 Mixture2=-16192,0,0,16192/40 PropPitch1=-16192,0,0,16192/40 PropPitch2=-16192,0,0,16192/40 I cann see you are setting the Filter option on all of those axes. why? That is drastic. The filter facility was introduced to deal with bad power causing noisy interference on axes. Do you have very dirty controls or bad power supplies? Filtering involves sampling incoming values and attempting to smooth sudden changes out. To do so it lags behing by at least three readings. I'm not sure why this has the effect you show, and especially only on the negative parts of the ranges -- I will certainly have a look at that. The slope computations are completely symmetrical, so I can only assume it is the delay which is causing the readings to somehow get out of order in FS's message queue. Please try unchecking "Filter" on every axis, and please do tell me why you enabled it. I think I shall make the filter option only shown if you change an INI file option before starting FS. Regards Pete Link to comment Share on other sites More sharing options...
pilotjohn Posted July 24, 2011 Author Report Share Posted July 24, 2011 Okay, from these: Aileron=-16192,0,16,16192/8 Elevator=-15680,256,16,16192/8 Rudder=-12288,0,16,12288/8 Throttle1=-16192,0,0,16192/40 Throttle2=-16192,0,0,16192/40 Mixture1=-16192,0,0,16192/40 Mixture2=-16192,0,0,16192/40 PropPitch1=-16192,0,0,16192/40 PropPitch2=-16192,0,0,16192/40 I cann see you are setting the Filter option on all of those axes. why? That is drastic. The filter facility was introduced to deal with bad power causing noisy interference on axes. Do you have very dirty controls or bad power supplies? Filtering involves sampling incoming values and attempting to smooth sudden changes out. To do so it lags behing by at least three readings. I'm not sure why this has the effect you show, and especially only on the negative parts of the ranges -- I will certainly have a look at that. The slope computations are completely symmetrical, so I can only assume it is the delay which is causing the readings to somehow get out of order in FS's message queue. Please try unchecking "Filter" on every axis, and please do tell me why you enabled it. I think I shall make the filter option only shown if you change an INI file option before starting FS. Regards Pete I enabled Filter when I first noticed this behavior and thought it was noise related. Then, when looking into it in more detail, I noticed the odd output. In either case, with Filter disabled, same result. I would think the slope computation would be symmetrical, but the fact that it's only on the negative side and seems to jump in "steps", hints at the boundaries of a look-up table. Link to comment Share on other sites More sharing options...
Pete Dowson Posted July 25, 2011 Report Share Posted July 25, 2011 In either case, with Filter disabled, same result. Okay. At least that simplifies the investigation a lot -- the filtering ins a bit complex. I would think the slope computation would be symmetrical, but the fact that it's only on the negative side and seems to jump in "steps", hints at the boundaries of a look-up table. Yes. I'll check it later today. Odd that no one has reported this before. It must have been like this since slopes were added six years ago (version 3.50 in August 2005)! Thanks for picking this up. Pete Link to comment Share on other sites More sharing options...
pilotjohn Posted July 25, 2011 Author Report Share Posted July 25, 2011 Okay. At least that simplifies the investigation a lot -- the filtering ins a bit complex. Yes. I'll check it later today. Odd that no one has reported this before. It must have been like this since slopes were added six years ago (version 3.50 in August 2005)! Thanks for picking this up. Pete No one noticed the slopes missing from the brakes either. :) Oh, and another observation that goes along with this... When initially moving the yoke off-center (off 0), going to the positive side is fine, but going to the negative side initially causes the sloped output to rise to the positive side before going negative. It's likely related to this jump effect. Link to comment Share on other sites More sharing options...
Pete Dowson Posted July 25, 2011 Report Share Posted July 25, 2011 When initially moving the yoke off-center (off 0), going to the positive side is fine, but going to the negative side initially causes the sloped output to rise to the positive side before going negative. It's likely related to this jump effect. Possibly. I think I've fixed it. It was a case of too much code, not something missing. i had a place where I needed a remainder from a division, and somehow I thought that if the value was negative I needed to make it positive first.. Turns out I should simply ignore negatives and treat them just the same as positives! A sort of odd reflection on life as a whole, really .. take the bad with the good ;-) Try FSUIPC 4.718 or FSUIPC 3.997j Regards Pete Link to comment Share on other sites More sharing options...
pilotjohn Posted July 25, 2011 Author Report Share Posted July 25, 2011 Possibly. I think I've fixed it. It was a case of too much code, not something missing. i had a place where I needed a remainder from a division, and somehow I thought that if the value was negative I needed to make it positive first.. Turns out I should simply ignore negatives and treat them just the same as positives! A sort of odd reflection on life as a whole, really .. take the bad with the good ;-) Try FSUIPC 4.718 or FSUIPC 3.997j Regards Pete It's fixed. Thanks! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now