This is a C++ library to read raw NatNet packets into structured data fields on Linux systems. Please see the Github NatNetLinux page for more detail.
NatNet is a protocol specified by Optitrack. Below are some of the surprising details I learned about it.
- The 'latency' field of a NatNet packet is not latency of any sort. It is a timestamp added by Motive.
- The 'latency' field is a float, meaning it has about 7 digits of precision. Since it starts at 0 when Motive starts, this means that it can give you .1 ms precision only for about 1,000 seconds afterward, and 1 ms precision for about 10,000 seconds. It's useless.
- The 'frame number' field of a NatNet packet is also useless in live mode. You may get many consecutive packets with the same frame number. This field is only defined in playback mode.