Making sense of times
Posted: Wed May 31, 2017 1:06 am
Hi,
I'm developing an application which merges Optitrack tracking data in real time with other data sources. One important consideration for this purpose is clock synchronization, in particular understanding of latencies. I cannot use the hardware SMPTE sync. The only thing I think I'm missing is the processing delay, i.e. the time from when the frame was taken to when it is put on the network.
I'm having a hard time making sense of the information provided by the NatNet library. We have:
fLatency and fTimestamp both seem to count the time since starting Motive, the former as float, the latter as double, but there is slight variation between the two. I would expect fLatency to be what I need, but it clearly isn't. Its purpose eludes me. Is there a setting somewhere that I'm missing that gives fLatency another meaning? Is there another way to find out when the packet was emitted relative to the time the camera frame was taken? Is the difference between fLatency and fTimestamp meaningful (either can be greater, though I'd think not, independent of the resolution issues with evergrowing floats).
Motive prints a "latency" value in its status bar. I'm not sure about the meaning of that. It sure seems to be what I want, but I didn't find a comparable entry in the NatNet data types.
I'm developing an application which merges Optitrack tracking data in real time with other data sources. One important consideration for this purpose is clock synchronization, in particular understanding of latencies. I cannot use the hardware SMPTE sync. The only thing I think I'm missing is the processing delay, i.e. the time from when the frame was taken to when it is put on the network.
I'm having a hard time making sense of the information provided by the NatNet library. We have:
Code: Select all
typedef struct
{
int iFrame; // host defined frame number
...
float fLatency; // host defined time delta between capture and send
unsigned int Timecode; // SMPTE timecode (if available)
unsigned int TimecodeSubframe; // timecode sub-frame data
double fTimestamp; // FrameGroup timestamp
...
} sFrameOfMocapData;
Motive prints a "latency" value in its status bar. I'm not sure about the meaning of that. It sure seems to be what I want, but I didn't find a comparable entry in the NatNet data types.