loading
 
adding center off range to joystick control
Greg  [2 posts]
10 years
I am controlling an ROV with a USB Attack 3 Joystick to a Pololu Maestro controller.  I have good control of the sliders but I need to have a small deadband around the center position of 1500 .  The joystick does not return to dead center on release but is somewhere around 50 + or -.  For good control it is critical the motors controlling left, right, forward and back stop on joystick release.  I was thinking that an IF statement for joystick position of 1450 to 1550 to set servo to 1500 (center-off) then use an else statement for anything outside that range to operate normally.  I am very new to programming.  To control the slider position now I am using the following: SetVariable "sfor_back", GetVariable ("jfor_back") + 1500.  Everything I have tried for the if statement has failed to function.  Any help would be greatly appreciated.  
Anonymous 10 years
Greg,

it may be easier if you post you entire VBScript. It should be something along the lines of:

jforBack = GetVariable("jfor_back")
if jforBack > 1450 and jforBack < 1550 then
  SetVariable "sfor_back", 1500
else
  SetVariable "sfor_back", jforBack
end if

STeven.
John Cabrer from United States  [13 posts] 10 years
When implementing a DEADBAND filter for joysticks, you have to consider that any value outside the deadband area (usually a square) has to be scaled back to 1 or 0.

In pseudo-code, assuming that the joystick value ranges for X and Y axis are -32767 to 32767, and a deadband of +/-1500, looks something like this

DEADBAND=1500

SCALING_X = 0.9542236328125  //  (32768-1500)/32768
SCALING_Y = 0.9542236328125

JOYSTICK_X = GET_JOYSTICK_X()
JOYSTICK_Y = GET_JOYSTICK_Y()

// Coerce joystick values inside deadband area, otherwise ignore
if JOYSTICK_X >= -1500 and JOYSTICK_X <= 1500 then
    JOYSTICK_X = 0;

if JOYSTICK_Y >= -1500 and JOYSTICK_Y <= 1500 then
    JOYSTICK_Y = 0;

JOYSTICK_X_SCALED = JOYSTICK_X * SCALING_X
JOYSTICK_Y_SCALED = JOYSTICK_Y * SCALING_Y

This should effectively remove a chunk of sensitivity from the joystick near the center position, but still allow you to send the full dynamic range of the joystick without a sudden jerky move when the thing goes from 0 straight to 1500.
Greg  [2 posts] 10 years
I will give both of these options a try, hopefully one will work for me, if not I will post what I have tried previously.  Thanks again for the help

This forum thread has been closed due to inactivity (more than 4 months) or number of replies (more than 50 messages). Please start a New Post and enter a new forum thread with the appropriate title.

 New Post   Forum Index