#1
|
|||
|
|||
Crashing when I select Tracker option
I have a script that runs fine with HMD, Full screen and stereo selections. But when I also select tracker option. I get the following error.
winviz.exe has encountered a problem and needs to close. We are sorry for the inconvenience. I have about 10 of the pic files loaded in the environment. so I have 10 sets of follwing: screen1 = viz.add(viz.TEXQUAD) screen1.translate(0.8, 1.500, -1) screen1.setEuler(90, 0.0, 0.0) screen1.scale(0.8, 0.5, 0.5) image1 = viz.addTexture( 'pot.jpg' ) screen1.texture(image1) When I remove all or some of them.. the program works with the Tracker option. Do you know why? Is there something I can do to fix it? is there another way to post pics in the environment? Thanks. |
#2
|
|||
|
|||
Can you post the entire script using the [code][/code] tags? Also, is your script connecting to an InterSense device?
|
#3
|
|||
|
|||
Here is the entire script. Thanks for your help.
Code:
import viz import math #import vizmat import vizinfo global data global tracking_data viz.go(viz.PROMPT) viz.collision(viz.ON) viz.clearcolor # Constants ROTATION_INC = 2 TRANSLATE_INC = 0.1 #TIMERS ANIMATE = 0 TRACK = 1 TRACKJOY = 2 #in seconds ANIMATE_RATE = 0.01 TRACK_RATE = 0.5 ground = viz.add('tut_ground.wrl') walltexture = viz.addTexture( 'brick.jpg' ) #walltexture1 = viz.addTexture( 'woodfloor2.jpg' ) #walltexture2 = viz.addTexture( 'ToolBar.jpg' ) #ceiling = viz.add('box.wrl') #ceiling.translate(-2.200, 3.0, -2.3) #ceiling.setScale(4.600, 0.1, 5.500) #ceiling.color(viz.WHITE) southwall = viz.add('box.wrl') southwall.appearance(viz.DECAL) southwall.translate(-2.000, 1.500, +0.450) southwall.setScale(4.600, 3.000, 0.100) southwall.texture( walltexture ) eastwall = southwall.clone() eastwall.setPosition(-4.300, 1.500, -2.300 ) eastwall.setScale(0.100, 3.000, 5.500) northwall = southwall.clone() northwall.setPosition(-2.430, 1.500, -5.050 ) northwall.setScale(3.658, 3.000, 0.100 ) westwall = southwall.clone() westwall.setPosition(0.300, 1.500, -2.279 ) westwall.setScale(0.100, 3.000, 3.658 ) nw1 = southwall.clone() nw1.setPosition(-0.150, 1.500, -4.110 ) nw1.setScale(0.900, 3.000, 0.100 ) nw2 = southwall.clone() nw2.setPosition(-0.600, 1.500, -4.558 ) nw2.setScale(0.100,3.000, 0.900 ) h1 = southwall.clone() h1.setPosition(-2.429, 1.500, -4.110 ) h1.setScale(1.829, 3.00, 0.100 ) h2 = southwall.clone() h2.setPosition(-1.529, 1.500, -3.208 ) h2.setScale(1.829, 3.000, 0.100 ) h3 = southwall.clone() h3.setPosition(-3.358, 1.500, -2.278 ) h3.setScale(1.829, 3.000, 0.100 ) h4 = southwall.clone() h4.setPosition(-1.978, 1.500, -1.350 ) h4.setScale(0.900, 3.000, 0.100 ) h5 = southwall.clone() h5.setPosition(-0.600, 1.500, -0.450 ) h5.setScale(1.829, 3.000, 0.100 ) v1 = southwall.clone() v1.setPosition(-1.529, 1.500, -3.658 ) v1.setScale(0.100, 3.000, 0.915 ) v2 = southwall.clone() v2.setPosition(-3.358, 1.500, -3.658 ) v2.setScale(0.100, 3.000, 0.900 ) v3 = southwall.clone() v3.setPosition(-0.570, 1.500, -2.278 ) v3.setScale(0.100, 3.000, 1.829 ) v4 = southwall.clone() v4.setPosition(-1.529, 1.500, -1.829 ) v4.setScale(0.100, 3.000, 0.900 ) v5 = southwall.clone() v5.setPosition(-3.358, 1.500, -1.350 ) v5.setScale(0.100, 3.000, 1.829 ) v6 = southwall.clone() v6.setPosition(-2.429, 1.500, -0.450 ) v6.setScale(0.100, 3.000, 1.829 ) avatar = viz.add('vcc_male.cfg', pos=(-3.800, 0, -2.2), euler=(0,0,0) ) avatar.setScale(0.800, 0.800, 0.300 ) avatar.state(4) textT = viz.add(viz.TEXT3D, str("T")) textT.setScale(0.3,0.3,0.3) textT.translate(-3.800, 1.2, -2.1) textT.setEuler(180, 0, 0.0) #aduck = viz.add('duck.wrl') #aduck.setPosition(-3.800, 1.000, -2.2 ) #aduck.setScale(0.500, 0.500, 0.500 ) #aduck.setEuler(90, 0.0, 0.0) screene = viz.add(viz.TEXQUAD) screene.translate(-4.24, 1.500, -4.59) screene.setEuler(-90, 0.0, 0.0) screene.scale(0.6, 0.5, 0.5) imagene = viz.addTexture( 'maze1\woodenWell.jpg' ) screene.texture(imagene) screenn = viz.add(viz.TEXQUAD) screenn.translate(-3.8, 1.500, -4.99) screenn.scale(0.5, 0.5, 0.5) screenn.setEuler(180, 0.0, 0.0) imagenn = viz.addTexture( 'maze1\clock.jpg' ) screenn.texture(imagenn) screenw = viz.add(viz.TEXQUAD) screenw.translate(0.24, 1.500, -3.7) screenw.setEuler(90, 0.0, 0.0) screenw.scale(0.5, 0.5, 0.5) imagew = viz.addTexture( 'maze1\CandlePlate.jpg' ) screenw.texture(imagew) screenw1 = viz.add(viz.TEXQUAD) screenw1.translate(0, 1.500, -4.05) screenw1.scale(0.3, 0.5, 0.5) screenw1.setEuler(180, 0.0, 0.0) imagenw1 = viz.addTexture( 'maze1\OrangeChair.jpg' ) screenw1.texture(imagenw1) screenh2 = viz.add(viz.TEXQUAD) screenh2.translate(-0.85, 1.500, -3.15) screenh2.scale(0.3, 0.5, 0.5) imageh2 = viz.addTexture( 'maze1\plant1.jpg' ) screenh2.texture(imageh2) screenh4 = viz.add(viz.TEXQUAD) screenh4.translate(-1.97, 1.500, -1.42) screenh4.scale(0.5, 0.4, 0.5) imageh4 = viz.addTexture( 'maze1\curvydesk.jpg' ) screenh4.texture(imageh4) screenv1 = viz.add(viz.TEXQUAD) screenv1.translate(-1.58, 1.500, -3.658) screenv1.setEuler(90, 0.0, 0.0) screenv1.scale(0.6, 0.5, 0.5) imagev1 = viz.addTexture( 'maze1\RedWine.jpg' ) screenv1.texture(imagev1) screenv3 = viz.add(viz.TEXQUAD) screenv3.translate(-0.623, 1.500, -2.7) screenv3.setEuler(90, 0.0, 0.0) screenv3.scale(0.6, 0.5, 0.5) imagev3 = viz.addTexture( 'maze1\limens.jpg' ) screenv3.texture(imagev3) screenv4 = viz.add(viz.TEXQUAD) screenv4.translate(-1.59, 1.500, -1.8) screenv4.setEuler(90, 0.0, 0.0) screenv4.scale(0.5, 0.4, 0.5) imagev4 = viz.addTexture( 'maze1\Glasses.jpg' ) screenv4.texture(imagev4) screenexit = viz.add(viz.TEXQUAD) screenexit.translate(-2.36, 1.500, -0.45) screenexit.setEuler(90, 0.0, 0.0) screenexit.scale(0.3, 0.5, 0.5) imageexit = viz.addTexture( 'maze1\cnotes.jpg' ) screenexit.texture(imageexit) text = viz.add(viz.TEXT3D, str("STOP")) text.setScale(0.3,0.3,0.3) text.translate(0.5, 1.5, .4) text.setEuler(90, 0, 0.0) text1 = viz.add(viz.TEXT3D, str("1")) text1.setScale(0.3,0.3,0.3) text1.translate(0.25, 1.5, -3.95) text1.setEuler(135, 0, 0.0) text2 = viz.add(viz.TEXT3D, str("2")) text2.setScale(0.3,0.3,0.3) text2.translate(-4.12, 1.5, -5.) text2.setEuler(-135, 0, 0.0) text3 = viz.add(viz.TEXT3D, str("3")) text3.setScale(0.3,0.3,0.3) text3.translate(-1.58, 1.03, -3.6) text3.setEuler(90, 0, 0.0) text4 = viz.add(viz.TEXT3D, str("4")) text4.setScale(0.3,0.3,0.3) text4.translate(-0.6, 1.5, -3.05) text4.setEuler(135, 0, 0.0) text5 = viz.add(viz.TEXT3D, str("5")) text5.setScale(0.3,0.3,0.3) text5.translate(-1.69, 1.5, -1.42) text5.setEuler(45, 0, 0.0) viz.translate(viz.HEAD_POS,0.5,0,0) viz.MainView.setEuler(-90,20,0) subject = viz.get(viz.INITMESG) #use it to enter subject number #tracking_data = open('tracking_'+str(subject)+'.txt', 'w') #create a tracking data file data = viz.get(viz.HEAD_POS) if viz.get(viz.TRACKER): intersense = viz.add('intersense.dls') viz.tracker() #? intersense.reset() #reset intersense tracking data to 0 initial viz.eyeheight(1.0) #viz.link(intersense,viz.MainView) tracking = 1 else: tracking = 0 #viz.collision(viz.ON) if viz.get(viz.OPTION1): import vizjoy #import viztracker joy = vizjoy.add() #tracker = viztracker.add() #viz.link(tracker,viz.MainView) if not joy.valid(): joy = None else: joy = None # Callback function to handle expiration timers def mytimer(num): if num == ANIMATE: if joy: #Use joystick to move and turn pos = joy.getPosition() x = pos[0] y = pos[1] if math.fabs(y) > 0.2: viz.move(0,0,-y*0.01) if math.fabs(x) > 0.2: viz.rotate(viz.BODY_ORI,x*1,0,0) if num == TRACK: #global data data = intersense.getData() # Access the raw data from the sensor #data = v.getPosition() tracking_data.write(str(viz.tick())+','+str(data)+'\n') #print data # Print the array of data if num == TRACKJOY: #global data data = viz.get(viz.HEAD_POS) tracking_data.write(str(viz.tick())+','+str(data)+'\n') #print data # Print the array of data def mykeyboard(key): if key == 'j': print "writing to file for joy" viz.starttimer(TRACKJOY,TRACK_RATE, viz.FOREVER) vizinfo.add('Joystick Tracking...') if key == 'i': print "writing to file for intersense" viz.starttimer(TRACK,TRACK_RATE, viz.FOREVER) vizinfo.add('Intersense Tracking...') if key == 'p': print viz.get(viz.HEAD_POS) viz.callback(viz.KEYBOARD_EVENT, mykeyboard) viz.callback(viz.TIMER_EVENT, mytimer) if joy: viz.starttimer(ANIMATE,ANIMATE_RATE,viz.FOREVER) tracking_data = open('joytracking_'+ str(subject)+'.txt', 'w') #create a tracking data file if tracking: tracking_data = open('is900tracking_'+ str(subject)+'.txt', 'w') #create a tracking data file |
#4
|
|||
|
|||
The crash is probably related to the InterSense. The drivers provided by InterSense will crash sometimes when searching for a connected device. The solution is to explicitly define which port the InterSense is connected to. For example, if the device is connected on COM port 1, add the following line of code to your script:
Code:
PORT_INTERSENSE = 1 |
#5
|
|||
|
|||
Thanks! It works great now.
|
Thread Tools | |
Display Modes | Rate This Thread |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
tracker commands frequency over the | JimB | Vizard | 3 | 03-07-2008 10:33 AM |
Interface with Tobii Eye Tracker | Uttama_vizard | Precision Position Tracker (PPT) | 1 | 12-12-2007 12:31 PM |
Can Vizard interact with the Arrington eye tracker? | Deltcho | Vizard | 1 | 09-18-2007 03:38 PM |