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
- 0x4154 -> Big Endian
- 0x5441 -> Little Endian
Determine the Endianness of Integer:
Float Signature - uint16
- 0x4434 (Big Endian) or 0x3444 (Little Endian) -> RTTrPL
- 0x4334 (Big Endian) or 0x3443 (Little Endian) -> RTTrPM
Determine the Endianness of Floating Point and the Type of Module(RTTrPL ot 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
- 0x01 -> Trackable (without timestamp)
- 0x51 -> Trackable (with timestamp)
- 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
Trackable Module Type:
Trackable Sub-Modules Type:
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
X, Y, Z, W components of tracked object using quaternion
Video about Quaternions and 3d rotation by 3Blue1BrownTrackable Sub-Module - Orientation (Euler)
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