#1
|
|||
|
|||
updating positional data
Hi,
hope you all had a good Christmas and New Year. I am trying to get the joystick position to update on the screen, however instead of updating it merely writes over the previous value resulting in a huge jumbled mess. Would I need to define this process as a separate function? Code:
file = open( 'speed_.txt' + str(subject),'w' ) #Open file in path #file = open( path + 'speed.txt', 'w' ) def mytimer (num): joy_pos = str(joy.getPosition()) #speed = joy_pos*[0.0,5.0,0.0] out = str(joy_pos + '\n') file.write(out) file.flush() print out #Add text to the screen. speed = viz.addText(joy_pos, viz.SCREEN) speed.setPosition(.05, .9 ) speed.fontSize (30) speed.message(str(joy_pos)) viz.callback( viz.TIMER_EVENT, mytimer ) viz.starttimer( 0, 0.25, viz.FOREVER ) Code:
def UpdateJoystick(): #Get the joystick position x,y,z = joy.getPosition() #Get the twist of the joystick twist = joy.getTwist() #Move the viewpoint forward/backward based on y-axis value if abs(y) > 0.001: #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) Any help - as usual will be greatly appreciated!!! |
#2
|
|||
|
|||
for your first question you could just add a textbox to your screen instead of text
Code:
speed = viz.addTextbox(parent = viz.SCREEN) I not sure if I understand your second question. If you only want to move in the y direction then you could just remove the code that updates the x position and turns the viewpoint from UpdateJoystick() Code:
def UpdateJoystick(): #Get the joystick position x,y,z = joy.getPosition() #Move the viewpoint forward/backward based on y-axis value if abs(y) > 0.2: #Make sure value is above a certain threshold viz.MainView.move(0,0,-y*0.1,viz.BODY_ORI) |
#3
|
|||
|
|||
Hi Jeff,
thanks for that, the joystick position is updating fine now once I took the textbox out of the timer loop. No, for the second part the code for the joystick position is working fine but what I am getting up on the screen at the moment is obviously the raw data of the joystick output - which is pretty meaningless to the observer, additionally it appears in the co ordinate system format of [0.0 0.0 0.0], wheareas I'm only really interested in the y co ordinate. Therefore I'm trying to multiply the raw data of the joystick that's already acquired so that it appears in a meaningful context on the screen, say as mph or kph - which is what I'm having difficulty with |
#4
|
|||
|
|||
this should update the speed in just the y direction every time the timer function is called
Code:
#add textbox and set position on screen text_speed = viz.addTextbox(parent = viz.SCREEN) text_speed.setPosition(.15, .9 ) text_speed.fontSize (30) old_posY = 0 def showSpeed(): global old_posY current_pos = viz.MainView.getPosition() current_posY = current_pos[1] distance = abs(current_posY - old_posY) #get speed in meters/sec speed = distance/viz.elapsed() #get speed in km/hour speed = speed/1000*3600 old_posY = current_posY #enter speed in textbox rounded to 1 digit after decimal text_speed.message(str(round(speed,1)) + 'km/hour') vizact.ontimer(.25, showSpeed) |
#5
|
|||
|
|||
Hi Jeff,
thanks for that - unfortunately it doesn't update and I constantly get 0.0km/hr on the screen - even though its moving along the road. I tried inserting joy.getPosition() in place of viz.MainView.getPosition() to see whether the code in principle functions and whilst that does produce a change in km/hr when either accelerating or deccelerating, because this piece of code is looking at a difference between outputs - when the joystick is held constant; there is no difference and so 0.0km/hr appears on the screen |
#6
|
|||
|
|||
That code should give you 0 km/hour if you are not moving along the y-axis which is the height. I think you may be wanting to get the speed along the z-axis. If that's the case then just dind the difference in z coordinates rather than the y coordinates.
|
#7
|
|||
|
|||
just to clarify, in the joystick navigation code, when you move the joystick on its y-axis that moves Vizard's viewpoint forward or backward which is Vizard's z axis. So to get the current z position just do
Code:
current_posZ = current_pos[2] |
#8
|
|||
|
|||
you're a star Jeff - thank you!! Is there any reason that I'm getting a continual drift of the viewpoint to the right though, even if I'm not using the joystick?
|
#9
|
|||
|
|||
Don't worry Jeff - its sorted! Cheers for your help!
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
output data to screen | Saz | Vizard | 1 | 12-19-2008 05:59 PM |
Flagging the Data | Elittdogg | Vizard | 5 | 04-11-2008 12:40 PM |
Data Files | betancourtb82 | Vizard | 6 | 05-04-2006 03:43 PM |
Obtaining Positional Data | Plasma | Vizard | 40 | 04-04-2006 12:31 PM |
tracking using quaternarion data | jfreeman | Vizard | 2 | 06-01-2005 09:48 AM |