WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

Reply
 
Thread Tools Rate Thread Display Modes
  #1  
Old 03-19-2014, 02:14 PM
fivel_lab fivel_lab is offline
Member
 
Join Date: Mar 2011
Posts: 36
skeleton height from FAAST?

Hi there,
We're having a bit of difficulty figuring out exactly how the Kinect measures the y coordinates (in real world units) of the tracked points on the skeleton it is streaming via FAAST. For example, we want the height of the head in the real world to be the height of the head in vizard, so we figure we just need:

Code:
HEAD = 0
myHead = vrpn.addTracker( 'Tracker0@localhost', HEAD)
height = myHead.getPosition(ABS_GLOBAL)[1] + SENSOR_HEIGHT
(the head y position is measured relative to SENSOR_HEIGHT, correct?)

But we're probably doing something wrong because the following odd behavior occurs when using this technique:

1) If we change the pitch of the Kinect (through FAAST, prior to running the vizard script), we obtain different values for "height" for different pitches, even though we're using the same person for the skeleton
2) When SENSOR_HEIGHT is set to its actual, measured value (in our case .71m), "height" is incorrect relative to measurements made in the real world.
3) If we arbitrarily change SENSOR_HEIGHT to get "height" to the correct value (which we know cannot be correct!), it works for some skeletons but not others (i.e., SENSOR_HEIGHT has to be changed arbitrarily for each new skeleton).

It's crucial for us that the height of the virtual head is the same as the height of the actual head because our application depends on taking a particular perspective on the scene. We thought this would do the trick (we're using an Oculus):

Code:
hmd = oculus.Rift(window=viz.MainWindow)
head6DoFTracker = viz.mergeLinkable(myHead, hmd.getSensor())
headLink = viz.link(head6DoFTracker, viz.MainView, srcFlag=viz.ABS_GLOBAL)

height = viz.MainView.getPosition(viz.ABS_GLOBAL)[1]
But this doesn't seem to give us the correct value for height.

Any ideas? Thanks!
Reply With Quote
  #2  
Old 03-20-2014, 02:16 AM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,471
If you don't modify the pitch, how much error is there in the height value when you run the following?

Code:
import viz
import vizact
viz.go()

SENSOR_HEIGHT = 0.71
HEAD = 0
myHead = vrpn.addTracker( 'Tracker0@localhost', HEAD)

def printHeight():
	print myHead.getPosition()[1] + SENSOR_HEIGHT
	
vizact.ontimer(1,printHeight)
Reply With Quote
  #3  
Old 03-21-2014, 11:07 AM
fivel_lab fivel_lab is offline
Member
 
Join Date: Mar 2011
Posts: 36
Thanks so much for getting back to us.

I had to tweak the code you sent a bit by adding:
Code:
vrpn 	= viz.add('vrpn7.dle')
(pretty sure that doesn't make a difference for our problem but best to be detailed).

Also, I did get the following warning on startup of the script:

check_vrpn_cookie(): VRPN Note: minor version number doesn't match: (prefer 'vrpn: ver. 07.30', got 'vrpn: ver. 07.31 0'). This is not normally a problem.

(Again, not sure if this makes a difference).

OK, so when I run the script:

- the error varies as a function of how far the person is from the kinect
- when standing close (~1.9m), the error is approximately .80 (varies within a cm second-to-second)
- when standing far (~2.9m), the error is approximately .89 (also varies +/- 1 cm)



...?

Thanks again!
Reply With Quote
  #4  
Old 03-23-2014, 09:37 PM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,471
What is the version number of FAAST that you are using?

I'm wondering if all the other tracked objects are off by the same amount. If so, you could do an initial calibration where the user's highest tracked object (head) and the lowest tracked object (foot) are visible to FAAST, and then figure out the difference. That should provide a loose approximation of the user's height. I'm not sure whether or not this would be accurate enough for your application.
Reply With Quote
  #5  
Old 03-24-2014, 09:56 AM
fivel_lab fivel_lab is offline
Member
 
Join Date: Mar 2011
Posts: 36
Thanks again, Jeff.

We're currently using v1.2 but I've tried all of the above with v1.0 and get the same problem.

I'm not sure whether your method will work but we will try it out.

Stupid question: your suggestion implies that both the head and foot needs to be visible to (tracked by) FAAST -- am I reading that correctly? We were assuming it didn't matter which points were visible to FAAST because the error was present whether or not the feet were being tracked. Also, if this is the way it works, would it help to set FAAST to track only the upper body?
Reply With Quote
  #6  
Old 03-28-2014, 02:01 AM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,471
Quote:
your suggestion implies that both the head and foot needs to be visible to (tracked by) FAAST -- am I reading that correctly?
I meant this for the initial calibration to calculate the user's height.

If you set FAAST to track just the upper body are you getting different readings for the head height?
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
cal3d skeleton exporter error pwsnow Vizard 0 07-23-2013 10:15 AM
Kinect auto selection of skeleton victorqx Vizard 0 05-29-2012 09:30 AM
Head Height Plymouth Vizard 5 02-12-2007 11:38 AM
female skeleton CSF file needed to export to CAF format vmonkey Vizard 1 10-04-2005 11:15 AM
Constraining Height nickyee Vizard 7 01-18-2005 02:46 PM


All times are GMT -7. The time now is 08:20 PM.


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