WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

Reply
 
Thread Tools Rate Thread Display Modes
  #1  
Old 06-22-2009, 04:22 AM
Saz Saz is offline
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!
Reply With Quote
  #2  
Old 06-22-2009, 11:21 AM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,471
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.
Reply With Quote
  #3  
Old 06-24-2009, 06:31 AM
Saz Saz is offline
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!
Reply With Quote
  #4  
Old 06-24-2009, 10:56 AM
farshizzo farshizzo is offline
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.
Reply With Quote
  #5  
Old 06-25-2009, 03:49 AM
Saz Saz is offline
Member
 
Join Date: Nov 2008
Posts: 36
Thank you poppet - you're a star - works beautifully!
Reply With Quote
Reply

Thread Tools
Display Modes Rate This Thread
Rate This Thread:

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 Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
How to get the data from Logitech G25 racing wheel ? fuyonggang Vizard 4 12-18-2008 06:14 PM
writing joystick position to a data file Saz Vizard 3 12-17-2008 05:18 AM
Joystick Navigation Vinicius Lima Vizard 7 10-23-2007 10:42 AM
Facetracking and Immersion Joystick Vygreif Vizard 1 01-25-2006 10:56 AM
Basic Joystick Navigation Question Plasma Vizard 2 01-29-2004 07:08 PM


All times are GMT -7. The time now is 12:23 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC