WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Mark & Print Oculus data (https://forum.worldviz.com/showthread.php?t=6198)

tianmoran 10-08-2018 11:17 AM

Mark & Print Oculus data
 
Hi there,

I'm coding for an experiment but muddled with some trouble. My goal is to record the Oculus data(position, euler) every 50ms. At the same time, I need to mark some events, like below the events are 'cylinder is on', 'key pressed', 'cylinder is off'. So I put a variable called 'Event' and hope to change its value right after each event happens. Unfortunately, it didn't work.

I kind of know why it's not working. But is there any solution on that?

Thank you so much if anyone would like to help me out!!!

Code:

import viz
import vizact
import vizshape
import viztask
import vizinput
import vizinfo
import time
import random                                                                                                         
import oculus                                                                                                               
import vizfx
import numpy
from numpy import *

viz.go()

##### SET UP OCULUS
hmd = oculus.Rift()
oculus = viz.addGroup()
oculusView = viz.link(oculus, viz.MainView)                                                       
oculusView.preMultLinkable(hmd.getSensor())                                                       
oculusView.setOffset([0,0.5,-1])

def Demo():
        global  acc, RT, Keycode, trialNo, oculus, oculusView, Cond, FMM, Code_direct, Event, trial, block, unit, acc, RT, Keycode, trialNo, oculus, oculusView,oculus_timer, Group, Code_Type, Code_Letter, FirstTrial
        FirstTrial = 1
        Instr = vizshape.addCylinder(1,0.05)                                                       
        Instr.setPosition(0,0,0)
        Instr.color(0.5,0,0)
        Instr.visible(viz.OFF)
        yield viztask.waitTime(0.5)
       
        Oculusdata = open('testtest'+ "_Oculus.txt",'a',1)
       
        for trial in range(10):
       
                ###### Calculating Reaction Time
                def df():
                        global startTime
                        startTime = viz.tick()
                        print str(trial), 'startTime', startTime
                        Instr.visible(viz.ON)
                yield vizact.ontimer2(1,0,df)
                Event = 0
               
                def waitkeydown():
                        global r, KeyPress, startTime
                        r = yield viztask.waitKeyDown(None)

                        if r.key == 'j':
                                acc[0][trial] = 1                       
                                Keycode[0][trial] = 2        ### Key J is pressed
                        elif r.key == 'f':
                                acc[0][trial] = 0                 
                                Keycode[0][trial]= 1                ### Key F is pressed
                       
                yield viztask.waitAny([waitkeydown(), viztask.waitTime(3)])
                Event = 1
                Instr.visible(viz.OFF)
                Event = 2
               
                def printOculusData():
                        global oculus_timer
                        oculus_timer = viz.tick()
                        OculusData = "%s\t%s\t%s\t%s\t%s\n" %(trial, Event,oculus_timer,oculusView.getPosition(), oculusView.getEuler())
                        Oculusdata.write(OculusData)
                if FirstTrial == 1:
                        vizact.ontimer(0.05,printOculusData)
                        FirstTrial = 0
                       
viztask.schedule(Demo())



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

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