PDA

View Full Version : Crashing when I select Tracker option


GoldenSun
06-30-2008, 08:42 AM
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.

farshizzo
06-30-2008, 02:42 PM
Can you post the entire script using the tags? Also, is your script connecting to an InterSense device?

GoldenSun
06-30-2008, 05:46 PM
Here is the entire script. Thanks for your help.

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

farshizzo
06-30-2008, 06:55 PM
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:PORT_INTERSENSE = 1

GoldenSun
07-01-2008, 11:06 AM
Thanks! It works great now.