Author Topic: The search for a deadzoneless joystick  (Read 4487 times)

0 Members and 1 Guest are viewing this topic.

Offline Nuke

  • Ka-Boom!
  • 212
  • Mutants Worship Me
Re: The search for a deadzoneless joystick
Are you certain about that 8bit thing? 'Cause most joysticks I have used more than 256 discrete values per axis. I have an old Cyborg Evo with me, and it has 1024 values for the primary axes (X/Y) and 512 values for twist handle rudder and throttle. (X/Y range 0-1023, throttle/twist handle range 0-511). If I'm not much mistaken, 8-bit resolution only offers 256 values, but do correct me if I'm in the wrong here.

i know for certain that both the x52 and ch fighterstick are 8 bit joysticks. part of the advertising for the x52 pro was that it had 10 bit resolution on its x and y axes where as the original x52 had 8. ch scripting mostly revolves around 8 bit axis values, and likewise the ads for the new eclipse yoke specified a 10 bit resolution. also the thrustermaster cougar also claims 10 bit. it is often touted as a special feature, and it doesnt make any sense for any manufacture not to claim a 10 bit resolution on a joystick that supports it. the whole sidewinder line had really good resolutions (as well as some epic sensor technology), and this goes back to the original 3d pro. of course newer ms joysticks may have better stats, it depends both on the sensor technology used (optical, potentiometer, hall sensor, etc), and the adc used to read the axis (usually on the joystick's mcu).

at the api level joysticks are usually represented with a 16 bit signed value, and is often scaled up on the mcu or in the driver (which is more likely because you want to keep the data frame as small as possible for transmission over usb) to take up the full range.

Quote
And before you ask, no, they aren't software interpolated - each value can be accessed by correct joystick position, albeit the angle difference is really small between values so it's easy to skip values.

interpolation is not necessary. it would only really be needed if the refresh rate was very low, which is not a problem even at usb's slowest possible data rate. like i said you can get 50 updates a second off of a 4800 baud serial connection. ive been able to pull that off with a 12 byte packet, containing 8 10-bit axes a sync byte and a crc, with a theoretical update rate of 50/sec. usb no doubt has more overhead but it also has a huge speed advantage over a basic serial line.

Quote
And tactile feedback is overrated unless you actually have a well functioning force feedback stick - centering force just doesn't typically represent the forces on airplane controls. You can get all the feedback you need from visual and aural cues from the game itself, which is the reason I removed all the centering springs from my joysticks - makes it easier to do minute corrections around the center zone. Though this depends largely on centering mechanism used on the stick. Saitek's centering method just sucks, single gimbal plate just doesn't offer even tension right around the deadzone, leading to problems with static friction locking the stick onto one place, then you increase force and the friction shift to kinetic and you overshoot the small movement you wanted to make...

if youre going to have spring tension its better to have independent spring tension for each axis, to give you a feel for where the joystick is in each axis. x52 is horrible in that it uses a single spring tension for both axes, so its impossible to distinguish between how much x and how much y you have applied without looking at the joystick. games do give lots of visual cues about how your ship or whatever responds to your input. and sometimes its enough. id rather use a frictioned joystick in something like a heli sim, where you spend most of the time away from the center. for fixed wing sims, i can see pros and cons to each method. but for something less realistic, like freespace, springs are often better. id love to see a joystick witch lets you dial in the spring tension and friction, but you could rest assured such a product will be in the $400+ range.
I can no longer sit back and allow communist infiltration, communist indoctrination, communist subversion, and the international communist conspiracy to sap and impurify all of our precious bodily fluids.

Nuke's Scripting SVN

 

Offline Herra Tohtori

  • The Academic
  • 211
  • Bad command or file name
Re: The search for a deadzoneless joystick
Are you certain about that 8bit thing? 'Cause most joysticks I have used more than 256 discrete values per axis. I have an old Cyborg Evo with me, and it has 1024 values for the primary axes (X/Y) and 512 values for twist handle rudder and throttle. (X/Y range 0-1023, throttle/twist handle range 0-511). If I'm not much mistaken, 8-bit resolution only offers 256 values, but do correct me if I'm in the wrong here.

i know for certain that both the x52 and ch fighterstick are 8 bit joysticks. part of the advertising for the x52 pro was that it had 10 bit resolution on its x and y axes where as the original x52 had 8. ch scripting mostly revolves around 8 bit axis values, and likewise the ads for the new eclipse yoke specified a 10 bit resolution. also the thrustermaster cougar also claims 10 bit. it is often touted as a special feature, and it doesnt make any sense for any manufacture not to claim a 10 bit resolution on a joystick that supports it. the whole sidewinder line had really good resolutions (as well as some epic sensor technology), and this goes back to the original 3d pro. of course newer ms joysticks may have better stats, it depends both on the sensor technology used (optical, potentiometer, hall sensor, etc), and the adc used to read the axis (usually on the joystick's mcu).

at the api level joysticks are usually represented with a 16 bit signed value, and is often scaled up on the mcu or in the driver (which is more likely because you want to keep the data frame as small as possible for transmission over usb) to take up the full range.

Well, I don't know what to say except that the stick I experimented had raw values from 0 to 1023 for X/Y axes and you could switch from one value directly to second without skipping any numbers. Considering that 8 bit resolution per axis only offers 256 discrete values, what you just said sounds impossible or at the very least implausible.

That's what I meant by my next sentence:

Quote
Quote
And before you ask, no, they aren't software interpolated - each value can be accessed by correct joystick position, albeit the angle difference is really small between values so it's easy to skip values.

interpolation is not necessary. it would only really be needed if the refresh rate was very low, which is not a problem even at usb's slowest possible data rate. like i said you can get 50 updates a second off of a 4800 baud serial connection. ive been able to pull that off with a 12 byte packet, containing 8 10-bit axes a sync byte and a crc, with a theoretical update rate of 50/sec. usb no doubt has more overhead but it also has a huge speed advantage over a basic serial line.

If the raw values from the joystick only had 256 values per axis (which is the upper limit of 8-bit resolution), simply scaling the values up will definitely not explain the results I got from my experimentation with the Cyborg Evo, and I don't think interpolation would cut it either - but in my experiment, the raw values per axis (as announced in the Windows' controller calibration window without installing the Saitek driver) implied a significantly wider range than simple 8-bit resolution per axis could offer.

Quote
if youre going to have spring tension its better to have independent spring tension for each axis, to give you a feel for where the joystick is in each axis. x52 is horrible in that it uses a single spring tension for both axes, so its impossible to distinguish between how much x and how much y you have applied without looking at the joystick. games do give lots of visual cues about how your ship or whatever responds to your input. and sometimes its enough. id rather use a frictioned joystick in something like a heli sim, where you spend most of the time away from the center. for fixed wing sims, i can see pros and cons to each method. but for something less realistic, like freespace, springs are often better. id love to see a joystick witch lets you dial in the spring tension and friction, but you could rest assured such a product will be in the $400+ range.

I'd rather have friction locks for everything, with adjustable friction from zero to something that makes the stick stay put when you take your hand off the controller. Centering just doesn't seem very useful for me unless it's an actual force feedback feature. If you think about it, mechanical airplane controls don't automatically re-center unless you have some airspeed, and similarly the steering wheel of your car only re-centers if you're going forward.
There are three things that last forever: Abort, Retry, Fail - and the greatest of these is Fail.

 

Offline Nuke

  • Ka-Boom!
  • 212
  • Mutants Worship Me
Re: The search for a deadzoneless joystick
i should have pointed out that i really only have information about a few joysticks (namely ones i used). it is entirely possible that your joystick is 10 bit. like i said 10 bit adcs on a microcontroller is a very common thing. what you saw in the calibration configuration was the raw data from the joystick, installing the driver would load the default calibration data for the stick (or you can calibrate it manually). but at the api level the range is almost always reported as being from -32768 to 32767 (so 16 bit joysticks are supported). i should have pointed out that many early generic usb joysticks were 8 bit, instead of saying most joysticks. though i can point out several high end examples of 8 bit sticks. joystick resolution is always 2^n where n = number of bits. ive never seen a 12 bit stick but i do have a 12 bit joystick interface board ive been dying to use.
I can no longer sit back and allow communist infiltration, communist indoctrination, communist subversion, and the international communist conspiracy to sap and impurify all of our precious bodily fluids.

Nuke's Scripting SVN

 

Offline torc

  • 210
  • Diaspora SFX engineer
Re: The search for a deadzoneless joystick
go with x52 pro...no deadzone and great sensitivity  :yes:
indossare una divisa può avere un prezzo alto...ma a volte...è troppo alto!!! Bill Adama