VectorTracking

Post Reply
motion3d
Posts: 9
Joined: Thu Sep 02, 2010 2:30 am

VectorTracking

Post by motion3d » Sat Feb 18, 2012 11:35 pm

I am working with the vector tracking sample and have few questions:

1) occasionally when i start the application there is a delay until the {if(vecprocessor->MarkerCount()>0)} loop starts. In other words, the loop {for(int i=0; iObjectCount(); i++)} always starts when the application starts but only after 10-20 seconds the vecprocessor->MarkerCount() is greater than 0. Any idea why there is a delay until the vector calculation starts?

2) is it possible to calculate the vector after capturing frame data. for example, to store in an Array the x,y (in pixles) data when capturing frames from the frame->Object(i); and only after, when frame is not captured to process the vector analysis on each element in the Array to calculate the vector x,y,z.

3) how do i convert the frame->TimeStamp() into meaningful time h:mm:ss

thanks,
oren

beckdo
NaturalPoint Employee
NaturalPoint Employee
Posts: 519
Joined: Tue Jan 02, 2007 2:02 pm

Re: VectorTracking

Post by beckdo » Tue Feb 21, 2012 5:22 pm

Hey Oren,

1) Perhaps the positioning of the vector clip is causing some difficulty solving? I'm not entirely sure why this is the case. You might want to start it from a different initial orientation or move it around a bit to get more info on this.

2) You are responsible for passing the object x,y positions from the Frame to the vector solver, so you can pass it live data from frames or you can pass it stored data from an array.

3) frame->TimeStamp() is reported in seconds.

NaturalPoint - Mike
Posts: 1896
Joined: Tue Feb 01, 2011 8:41 am
Location: Corvallis, OR

Re: VectorTracking

Post by NaturalPoint - Mike » Tue Feb 21, 2012 5:28 pm

More specifically, frame->TimeStamp() reports seconds from the start of the program as a double precision floating point number for the moment the frame was processed.

motion3d
Posts: 9
Joined: Thu Sep 02, 2010 2:30 am

Re: VectorTracking

Post by motion3d » Tue Feb 21, 2012 7:06 pm

Thanks mike and Doug,

1) i'll try getting during real time the frame object x,y and store it in array and only then process it via the vector procedure.

2)the reason why i asked about the frame->TimeStamp() is because i got negative values. Here is example of data that i captured. first number is the frameID and second is the timestamp i.e frameID(),timeStamp()

1010086,362657704
1010087,834601423
1010089,916957691
1010090,456411480
1010092,-1323549616
1010093,-683215778
1010094,-605227016
1010095,57349901
1010097,-1182509199
1010098,-2103739605

beckdo
NaturalPoint Employee
NaturalPoint Employee
Posts: 519
Joined: Tue Jan 02, 2007 2:02 pm

Re: VectorTracking

Post by beckdo » Wed Feb 22, 2012 5:17 pm

Oren,

You're likely not getting negative values, you're just printing out the value incorrectly. Try something like this:

printf("FrameID: %d, TimeStamp: %.3fms",frame->FrameID(),frame->TimeStamp()*1000);

That'll print the FrameID as well as the time in milliseconds.

motion3d
Posts: 9
Joined: Thu Sep 02, 2010 2:30 am

Re: VectorTracking

Post by motion3d » Fri Feb 24, 2012 8:42 pm

Hi Doug,

You were right with the timestamp issue. I still need to get used to C++ programming. Most time i am working with VB.NET

I also tried to store the frame object data x,y,area,width,height in an array and then after capturing 5 second of data to calculate the vector x,y,z for each frame from the stored array.

However, at the if(vecprocessor->MarkerCount()>0) line the markerCount is less then 1.
Is it possible to get an example how to calculate the vectors from data array that was captured from frame->object?

thanks,
oren

Post Reply