RTTrPM Data Structures

 

RTTrP v1.8.7.0 - RTTrPM v2.4.2.0

 

The RTTrP (Real Time Tracking Protocol) is a suite of protocols developed to transmit tracked motion information between systems. RTTrP is widely using in live performence systems such as Tracking System, Media Server. 

 

RTTrP is comprised of two separate protocols which share a common header:

  • RTTrPM (Real-Time Tracking Protocol - Motion)
  • RTTrPL (Real-Time Tracking Protocol - Lighting)

 

This Document this a hobby project to show various header fields and their respective functionalities of RTTrPM. If you found some thing wrongs please contact me at email.

 

**For more information, please checkout the RTTrP wiki and RTTrP gibhub.

 

 


RTTrP Header


Integer Signature - uint16


    Determine the Endianness of Integer:

    • 0x4154 -> Big Endian
    • 0x5441 -> Little Endian

Float Signature - uint16


    Determine the Endianness of Floating Point and the Type of Module(RTTrPL ot RTTrPM) :

    • 0x4434 (Big Endian) or 0x3444 (Little Endian) -> RTTrPL
    • 0x4334 (Big Endian) or 0x3443 (Little Endian) -> RTTrPM

Packet Version - uint16


    Version 0x0002; Version 2, will increase if header changes.


Packet Sequence ID - uint32


    Packet Sequence ID


Packet Format - uint8


    0x00 -> Raw; 0x01 -> Protobuf; 0x02 -> Thrift


Packet Size - uint16


    Size of packet in bytes including header


User Define Context - uint32


    User Definable


Number of Packet Modules - uint8


    Determine number of the Packet Modules in Packet.


Packet Module Header


Packet Module Type - uint8


    Trackable Module Type:


    • 0x01 -> Trackable (without timestamp)
    • 0x51 -> Trackable (with timestamp)

    Trackable Sub-Modules Type:


    • 0x02 -> Centroid Position
    • 0x03 -> Orientation (Quaternion)
    • 0x04 -> Orientation (Euler)
    • 0x05 -> Tracked Point Position
    • 0x20 -> Centroid Acceleration and Velocity
    • 0x21 -> Tracked Point Acceleration and Velocity
    • 0x22 -> Zone Collision Detection

    Each Packet should have at least one Trackable Module. Each Trackable Module should contain a number of sub-modules.



Peacket Module Size - uint16


    Size of packet module in bytes including module type and size filed.


Trackable Module - Trackable (without Timestamp)


Trackable Name Length - uint8


    Length of Trackable Name in bytes.


Trackable Name - Variable


    Trackable Name in utf-8


Number of Packet Modules - uint8


    Total number of sub-modules of this Trackable Module.


Trackable Module - Trackable (with Timestamp)


Timestamp - uint32


    Sequence number (Frame ID)


Number of Packet Modules - uint8


    Total number of sub-modules of this Trackable Module.


Trackable Sub-Module - Centroid Position


Latency - uint16


    Approximate time in milliseconds since last measurement, if equal to 0xFFFF, overflow.


Position - 3 x double8 / float64


    Position of the X, Y, Z coordinate


Trackable Sub-Module - Tracked Point Position

NOTE: When outputting Tracked Point position/acceleration/velocity, there is a single module for each point


Index - uint8


    Tracked Point Index (0x00, 0x01, 0x02 etc.)


Trackable Sub-Module - Orientation (Quaternion)


Orientation Qx, Qy, Qz, Qw - 4 x double8 / float64



Trackable Sub-Module - Orientation (Euler)


Order - uint16


    For a list of Euler Angle Order values, please see official documents:

    Euler Order

Rotation- double8 / float64


    Rotation in 3 axis


Trackable Sub-Module - Centroid Acceleration and Velocity


Acceleration - 3 x float32


    Calculated centroid acceleration in the X, Y, Z direction


Velocity - 3 x float32


    Calculated centroid velocity in the X, Y, Z direction


Trackable Sub-Module - Tracked Point Acceleration and Velocity


Index - uint8


    Tracked Point Index (0x00, 0x01, 0x02 etc.)


Trackable Sub-Module - Zone Collision Detection


Number of Zones - uint8


    Total number of Zones Sub-Modules included in this packet


Size - uint8


    Size of the zone sub-module size in bytes, included Size and Length fileds


Length - uint8


    Length of the Zone Name in bytes.


Zone Name - Variable


    The name of the Zone itself in utf-8.

26-Mar-2023