WorldViz User Forum changing the gain of a joystick during a program
 Register FAQ Search Today's Posts Mark Forums Read

#1
06-22-2009, 05:22 AM
 Saz Member Join Date: Nov 2008 Posts: 36
changing the gain of a joystick during a program

Hi,

I want to change the gain of the joystick by altering the scalar constant (in this case MOVE_SPEED)- so effectively the speed will alter - at a certain point in my program (22secs in). Here's what I have so far:
Code:
```def UpdateJoystick1():
#Get the joystick position
x,y,z = joy.getPosition()

#Move the viewpoint forward/backward based on y-axis value
if abs(y) > 0.0001: #Make sure value is above a certain threshold
viz.MainView.move(0,0,-y*MOVE_SPEED,viz.BODY_ORI)
#Move the viewpoint left/right based on x-axis value
if abs(x) > 0.001: #Make sure value is above a certain threshold
viz.MainView.move(x*0.1,0,0,viz.BODY_ORI)
#Turn the viewpoint left/right based on twist value
#if abs(twist) > 0.001: #Make sure value is above a certain threshold
#    viz.MainView.rotate(0,1,0,twist,viz.BODY_ORI,viz.RELATIVE_WORLD)

#UpdateJoystick every frame
vizact.ontimer(0,UpdateJoystick1)

def UpdateJoystick2():
#Get the joystick position
x,y,z = joy.getPosition()

#Move the viewpoint forward/backward based on y-axis value
if abs(y) > 0.0001: #Make sure value is above a certain threshold
viz.MainView.move(0,0,-y*MOVE_SPEED2,viz.BODY_ORI)
#Move the viewpoint left/right based on x-axis value
if abs(x) > 0.001: #Make sure value is above a certain threshold
viz.MainView.move(x*0.1,0,0,viz.BODY_ORI)
#Turn the viewpoint left/right based on twist value
#if abs(twist) > 0.001: #Make sure value is above a certain threshold
#    viz.MainView.rotate(0,1,0,twist,viz.BODY_ORI,viz.RELATIVE_WORLD)

#UpdateJoystick every frame
vizact.ontimer2(22,0,UpdateJoystick2)```
but it doesn't seem to make a difference at all - is it because it just comes on at the 22 sec point and then reverts back to the original joystick code? Would I need to insert starttimer and killtimer statements to initiate the two sections?
Any help - as usual - will be greatly appreciated!
#2
06-22-2009, 12:21 PM
 Jeff WorldViz Team Member Join Date: Aug 2008 Posts: 2,461
UpdateJoystick1 is being called every frame. UpdateJoystick2 is only called once after 22 seconds. I don't think you need two different functions here. You could just change the value of MOVE_SPEED after 22 seconds.
#3
06-24-2009, 07:31 AM
 Saz Member Join Date: Nov 2008 Posts: 36
I tried using this code
Code:
```def UpdateJoystick1():
#Get the joystick position
x,y,z = joy.getPosition()

#Move the viewpoint forward/backward based on y-axis value
if abs(y) > 0.0001: #Make sure value is above a certain threshold
viz.MainView.move(0,0,-y*MOVE_SPEED,viz.BODY_ORI)
#Move the viewpoint left/right based on x-axis value
if abs(x) > 0.001: #Make sure value is above a certain threshold
viz.MainView.move(x*0.1,0,0,viz.BODY_ORI)
#Turn the viewpoint left/right based on twist value
#if abs(twist) > 0.001: #Make sure value is above a certain threshold
#    viz.MainView.rotate(0,1,0,twist,viz.BODY_ORI,viz.RELATIVE_WORLD)

#UpdateJoystick every frame
vizact.ontimer(0,UpdateJoystick1)

def MOVE_SPEEDCH():
MOVE_SPEED=0
vizact.ontimer(22,MOVE_SPEEDCH)```
but it still made no difference - I'm sorry I must be coming across as really dense - it's been a long week and it's only Wednesday!
#4
06-24-2009, 11:56 AM
 farshizzo WorldViz Team Member Join Date: Mar 2003 Posts: 2,849
You need to declare the MOVE_SPEED variable as global in your MOVE_SPEEDCH function.
Code:
```def MOVE_SPEEDCH():
global MOVE_SPEED
MOVE_SPEED=0
vizact.ontimer(22,MOVE_SPEEDCH)```
The Python Tips page in the docs explains when you need to use the global keyword.
#5
06-25-2009, 04:49 AM
 Saz Member Join Date: Nov 2008 Posts: 36
Thank you poppet - you're a star - works beautifully!

 Thread Tools Display Modes Rate This Thread Linear Mode Rate This Thread: 5 : Excellent 4 : Good 3 : Average 2 : Bad 1 : Terrible

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is Off Forum Rules
 Forum Jump User Control Panel Private Messages Subscriptions Who's Online Search Forums Forums Home Announcements Vizard Precision Position Tracker (PPT) Plug-in development

 Similar Threads Thread Thread Starter Forum Replies Last Post fuyonggang Vizard 4 12-18-2008 07:14 PM Saz Vizard 3 12-17-2008 06:18 AM Vinicius Lima Vizard 7 10-23-2007 11:42 AM Vygreif Vizard 1 01-25-2006 11:56 AM Plasma Vizard 2 01-29-2004 08:08 PM

All times are GMT -7. The time now is 09:57 AM.