Unsolved Adjusting Joystick Pitch Curves
-
@Tomcattwo I turn it off. You should not need any curves with a Cougar stick. I don’t use Foxy anymore either. I have FSSB. Maybe your VSS-WE is borked. Hope not. Did you try default mode for axis response?
-
That is odd
I have a FCC3 and use foxy / CCP. I have 0 curve but, a 15% center dead zone.
I also have this at beginning of my tmj file:USE MDEF Badger_DX_Replacement.tmm
USE ZERO_MOUSE
DISABLE MOUSE
USE ALL_DIRECTX_BUTTONS
USE HWSTARTUP (EMULATION_ON, AXIS_MODE_USER, CALIBRATION_MANUAL) -
@Badger
Thanks Badger. I’ll give that a shot.
Edit: I did a full manual calibration on the stick, then used your USE HWSTARTUP (EMULATION_ON, AXIS_MODE_USER, CALIBRATION_MANUAL) command in Foxy - didn’t seem to help.
Also tried putting in a curve: set g_nAxisExp_AXIS_PITCH 20
Didn’t seem to make any difference in pitch control.
Appreciate all the help from all of you (@Badger , @Icarus , @airtex2019 )
Gonna have to learn to fly with this or go to something else.
Regards,
TC2 -
@airtex2019 said in Adjusting Joystick Pitch Curves:
but meanwhile, simply try a bigger number for g_nAxisExp?
Is there a way to visualize the relationship between physical position and output, in relation to the exponential value setting? E.g I tried setting the yaw axis at 25 and it was way off (minimal response at first and then too much). Is there a mathematical formula so I can turn it into a chart?
-
Your situation does just sound weird. Could it be something hardware related perhaps?? Have you tried grabbing a copy of DIView and looking at the raw values that the stick generates as you apply pitch motion to the handle??
It sounds like roll isn’t causing problems. Again, looking at DIView and trying to apply similar pressure inputs to the handle, does the raw value cue move similarly for both the pitch and roll axis movements??
If it’s not moving smoothly and consistently and symmetrically with similar inputs applied to the handle in pitch/roll as viewed in the raw value display there then I’d start to suspect bad hardware.
-
@Boxer
Thanks Boxer. I will give that a try.
Regards,
TC2 -
@airtex2019 said in Adjusting Joystick Pitch Curves:
I’ll take a look… it’s a question I should know the answer to.
ok I should know by now, the answer, as always, is “it’s complicated”
as things stand, the order of operations goes like this…
1- deadzone, saturation and DirectInput calibration – these are applied down in the DirectInput layer, before BMS does any maths on the axis values – but it does appear to use percentages that we specify… Small=1%, Medium=5%, Large=10%. this layer will presumably also apply whatever calibration and centering you recorded using Joy.cpl calibration wizard
2- g_nAxisSat – this is an extra degree of saturation, same as step 1 (it simply compresses the axis range, not a “soft-knee” curve). it’s basically redundant with the DI saturation value… except it does allow you to specify your own percentage if you want (but remembering, these exp/sat cfg params only apply to pitch, roll, yaw, and cursor x/y axes – not throttle etc).
3- g_nAxisExp – this is not really a percentage, but a parameter into a cubic polynomial function, which is scaled to remain in the [-100% to +100%] range
I’d describe the parameter as a “proportion of cubicness” … where 1 == fully linear and 100 == fully cubic
the practical upshot of this is, there’s a huge difference between ‘1’ and ‘2’ but not much difference between ‘10’ and ‘20’. … it very quickly converges to the cubic
Now the question of UI feedback … the UI feedback in BMS setup page appears to reflect all of this. The UI feedback in AL applies the deadzone and saturation but not the g_nAxisExp or g_nAxisSat. I’ll fix that.
I’ll also look into implementing a more useful curve, than this parameterized-polynomial – considering you can only use integers for this cfg param, effectively the only options are “off”, “halfway cubic” and “basically fully cubic”
-
@airtex2019
Wow! Thank you for this detailed answer and the great explanation.
Regards,
TC2 -
@Tomcattwo oh meant to add, for the avoidance of doubt – I didn’t see any sign of any bug that would entail this math only running “sometimes” … in either AL or BMS
but I did spot a couple other bugs, in the process of looking at this – so thank you!
-
If you can use the Cougar Control Panel with the VSS-WE module it should be visible also in Target Software which I use.
Examples:
SetCustomCurve(&Throttle, SCX, CURSORX_HIGH); OR
SetSCurve(&Throttle, SCX, 0, 50, 0, 20, -2.5);I use to have a Cougar Hotas and used Target to tweak my DIY force mod.
Amway
-
@Amway14
Thanks Amway14. I do have target installed and was considering using a TARGET script to try to adjust the curves. Appreciate your insight and confirmation that it works for you.
Regards,
TC2 -
-
After much testing using TARGET software, I have been able to adjust things to make flying using my VFS WE Cougar and ViperTQS setup much easier. Using TARGET, I first was able to calm the pitch axis down a little bit using this curve:
SetSCurve(&HCougar, JOYY, 0, 1, 0, -2, 0);
The 1 is a very small center deazone, and the -2 is a small curve setting. This works OK for normal flight, but is still too “pitchy” for reliable AAR, and landings (often causing tailstrikes).
After more research, I discovered that the last value is called “Scaling Factor”, and what it does is to limit the full travel of the axis. By doing so, it decreases the total number of available axis “gradations”. On a normal full-scale axis, there are 32,767 gradations on each side of zero (you can see this in the Device Tester in the TARGET software). When you apply the Scaling Factor in a negative direction, it decreases the number of gradations, which, when applied to deflection of the joystick, decreases the sensitivity of the stick along the entire axis. Applying a positive Scaling Factor does the opposite. Through testing, I found the following negative Scaling F-actors and their effect on the Pitch axis:
Scaling Factor Effect (% of Axis)
0 => 100% (full axis linear deflection 32767)
-1 => 70.92% (23,238 gradations)
-2 => 50.3% (16,481 gradations)
-3 => 35.67% (11,688 gradations)
-4 => 25.3% (8,289 gradations)I tried a Scaling Factor of -2 (50.3%), which worked great for AAR, but for landing, with that Factor applied, I could not easily get the nose up for aerobraking. On a -1 (70.92%), both AAR and landing worked well and aerobraking was once again doable, with less likelihood of a tail scrape. So, I then set up a toggle to switch between my new “AAR/Landing” gains and “Normal Flight” gains, using the Viper TQS Antenna Elevation Push Button. Here is the TARGET code for that:
MapKey(&ViperTQS, Q_BTN11, SEQ(EXEC("SetSCurve(&HCougar, JOYY, 0, 1, 0, 0, -1);"), EXEC("SetSCurve(&HCougar, JOYY, 0, 1, 0, -2, 0);")));
The first press of ANT ELEV push button sets my AAR/Landing gains, and the next press sets Normal Flight gains.
This has greatly simplified my flying for precision evolutions while retaining full capability for normal combat maneuvering.
Regards,