|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
||||
|
||||
|
Re: How do I program a joystick deadband?
Allow me to show you a piece of code my team has used the last three years....
public double deadband(double JoystickValue, double DeadbandCutOff) { if (JoystickValue<DeadbandCutOff&&JoystickValue>(Dead bandCutOff*(-1))) { deadbandreturn=0; } else { deadbandreturn=(JoystickValue-(Math.abs(JoystickValue)/JoystickValue*DeadbandCutOff))/(1-DeadbandCutOff); } return deadbandreturn; } this not only cuts it off at a point, but prevents jumping up to 0.1 after you get past it. it basically smooths the dead band curve. How ever, i would recommend making a algorithm you understand. ((i am still working on understanding this one. lol)) Last edited by techkid86 : 08-10-2012 at 01:31. |
|
#2
|
||||
|
||||
|
Re: How do I program a joystick deadband?
Quote:
To anyone confused: The first if() checks if the joystick value is in the (-deadband,deadband) range (this could more succinctly be done with Math.abs(JoystickValue) < deadband), and if so, puts the output to 0. Otherwise, it scales the joystick value to [0,1] or [-1,0] depending on the sign by modifying the ranges this way: [deadband,1] -> [0,1-deadband] -> [0,1] [-1,-deadband] -> [-1+deadband,0] -> [-1,0] Code:
deadbandreturn=(JoystickValue- // initially in one of two ranges: [DeadbandCutOff,1] or [-1,-DeadBandCutOff]
(Math.abs(JoystickValue)/JoystickValue // 1 if JoystickValue > 0, -1 if JoystickValue < 0 (abs(x)/x); could use Math.signum(JoystickValue) instead
*DeadbandCutOff // multiply by the sign so that for >0, it comes out to - (DeadBandCutOff), and for <0 it comes to - (-DeadBandCutOff)
)
) // now in either [0,1-DeadBandCutOff] or [-1+DeadBandCutOff,0]
/(1-DeadbandCutOff); // scale to [0,1] or [-1,0]
Last edited by Ginto8 : 08-10-2012 at 12:13. |
|
#3
|
||||
|
||||
|
Re: How do I program a joystick deadband?
There's deadband in the motor controller too.
|
|
#4
|
||||
|
||||
|
Re: How do I program a joystick deadband?
Personally, the best way I can think of to go about this would be to extend the Joystick class, making a DeadbandJoystick class. I'll write up an example of what I'm talking about when I get home tonight.
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|