Question when using RAW DATA WM_INPUT

Post questions, comments and feedback to our 3Dconnexion Windows Development Team.

Moderator: Moderators

Post Reply
IBLUES1976
Posts: 10
Joined: Wed Feb 22, 2012 3:53 pm

Question when using RAW DATA WM_INPUT

Post by IBLUES1976 »

I have succesfully received input using your WM_INPUT sample.
I have a few questions that you may be able to answer

1) How can I know the max values for each of the axis when using WM_INPUT
. If not, what is the alternative?

2) What is the best way to smooth the input. For example, I notice that when I push forward (translation) there are times, that I still get other values in rotation ... meaning is too sensitive. What have you done in general to smooth the input... Any non-linear functions? any tricks?



thanks
IBlues1976
IBLUES1976
Posts: 10
Joined: Wed Feb 22, 2012 3:53 pm

Post by IBLUES1976 »

At least in my system, the range seems to be between PLUS/MINUS 350 for all axis, while some of them not reaching 350, but very close (340...)

this is not official, just experimenting with WM_INPUT
IBlues1976
jwick
Moderator
Moderator
Posts: 3374
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Post by jwick »

You can't rely on +/- 350 because end-users can scale the data independently with the driver.

You also don't want to make users use the device out in the high range. The device has physical limitations outside of its sweet spot, near zero. You can get the sensor into a physical position where you can't push/twist in an independent direction. You should adjust your application to work well in the center of the movement, say +/- 150. Forcing users to use too much force is very, very tiring.

Having users use high values also encourages cross-talk between the axes, as you point out. Experienced users will use very little force/torque on the cap.

The only time you should care about the max values, is to make sure your application doesn't blow up if you get large values.
IBLUES1976
Posts: 10
Joined: Wed Feb 22, 2012 3:53 pm

Post by IBLUES1976 »

if I'm using WM_INPUT, can the users still affect the range? Because I think the whole point of using WM_INPUT is to bypass the driver (Using raw data)

Also, the question is if the max is plus/minus 350... it is a good point the one you make, which I will take into account....

Now, while someone may be able to change it, as of now, it doesn't matter to me, because I'm doing research and this baby stays here!

Nevertheless, it will be nice to know how can I know the max at run time, if is possible at all using the raw data...

I would also love to know if people have some good information to applying some non-linear transformation (or linear) to smooth the input values , in order to control the camera/object better..

thanks
IBlues1976
IBLUES1976
Posts: 10
Joined: Wed Feb 22, 2012 3:53 pm

Post by IBLUES1976 »

Also, I would like to know the max, so I can normalize the values.
IBlues1976
jwick
Moderator
Moderator
Posts: 3374
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Post by jwick »

You can retrieve the device range from the HID descriptors (see the HIDTest program on our ftp site). It is rather academic though because any end-user can use the 3DxWare 10 driver to scale the values to probably MAXSHORT. Without the driver, the max is +/- 350.

Don't make people use the device at +/- the physical max. It will work terrible. They will lose DOFs outside of the sweet spot.

The next release of the 3DxWare 10 driver will be able to create a nonlinear response. You may want to experiment with your own. The device is linear w/o the driver.
flashk
Posts: 2
Joined: Thu Oct 31, 2013 4:05 pm

Re: Question when using RAW DATA WM_INPUT

Post by flashk »

I'm a little confused by the information in this thread. You say that we can't rely on the +/- 350 range, yet recommend that we should not make people use the device near the physical max. So how can we determine at runtime whether the device is near the physical max?
jwick
Moderator
Moderator
Posts: 3374
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Re: Question when using RAW DATA WM_INPUT

Post by jwick »

flashk wrote:I'm a little confused by the information in this thread. You say that we can't rely on the +/- 350 range, yet recommend that we should not make people use the device near the physical max. So how can we determine at runtime whether the device is near the physical max?
If they were pushing/twisting to the max level, your program would be getting values in the 350 range.

You should adjust your application so the desired normal motion rate is achieved with input values under 200. If you make your users push/twist harder than that, 1) their hands will get tired after trying to do that all day (seriously) and 2) you will get the device into a physical area where all 6 DOFs are not actuatable independent of each other.
Post Reply