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
Question when using RAW DATA WM_INPUT
Moderator: Moderators
-
- Posts: 10
- Joined: Wed Feb 22, 2012 3:53 pm
Question when using RAW DATA WM_INPUT
IBlues1976
-
- Posts: 10
- Joined: Wed Feb 22, 2012 3:53 pm
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.
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.
-
- Posts: 10
- Joined: Wed Feb 22, 2012 3:53 pm
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
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
-
- Posts: 10
- Joined: Wed Feb 22, 2012 3:53 pm
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.
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.
Re: Question when using RAW DATA WM_INPUT
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?
Re: Question when using RAW DATA WM_INPUT
If they were pushing/twisting to the max level, your program would be getting values in the 350 range.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?
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.