Protocol Documentation

Table of Contents

frame.proto

Top

Attitude

Message definition for attitude data.

FieldTypeLabelDescription
attitude_local AttitudeLocal optional

Local attitude data.

attitude_global AttitudeGlobal optional

Global attitude data.

body_rates BodyRates optional

Body rates data.

euler_angular_rates EulerAngularRates optional

Euler angular rates data.

InsCalibration

Message definition for INS calibration data.

FieldTypeLabelDescription
IMU_SENSOR_CORRECTION_ACC GenericCalibration optional

Calibration data for accelerometer sensor.

IMU_SENSOR_CORRECTION_GYRO GenericCalibration optional

Calibration data for gyroscope sensor.

IMU_SENSOR_CORRECTION_MAG GenericCalibration optional

Calibration data for magnetometer sensor.

MAG_SENSOR_CORRECTION GenericCalibration optional

Calibration data for magnetometer sensor.

BARO_SENSOR_CORRECTION GenericCalibration optional

Calibration data for barometer sensor.

LoggerFrame

FieldTypeLabelDescription
start_byte uint32

Start byte of the data frame.

timestamp uint64

Timestamp of the logger frame in us.

binaryHeader bytes optional

Header of the logger frame (with variables names), written one time at the beginning of the log file. char encoded as bytes to avoid fixed size encoding

binaryTypes bytes optional

Header of the logger frame (with variables types), written one time at the beginning of the log file. char encoded as bytes to avoid fixed size encoding

binaryData bytes optional

Binary data of the logger frame.

protobufHeader bytes optional

Header of the protobuf frame (with variables names), written one time at the beginning of the log file. char encoded as bytes to avoid fixed size encoding

protobufData bytes optional

Binary data of the logger protobuf logged messages (RX or TX)

mavlinkHeader bytes optional

Header of the mavlink frame (with variables names), written one time at the beginning of the log file. char encoded as bytes to avoid fixed size encoding

mavlinkID bytes optional

Header of the mavlink frame (with variables ID), written one time at the beginning of the log file. char encoded as bytes to avoid fixed size encoding

mavlinkData bytes optional

Binary data of the logger mavlink logged messages (RX or TX)

ulogData bytes optional

Binary data of the ulog messages, char encoded as bytes to avoid fixed size encoding

end_byte uint32

End byte of the data frame.

PositionVelocityAcceleration

Message definition for position, velocity, and acceleration data.

FieldTypeLabelDescription
position_local PositionLocal optional

Local position data.

position_global PositionGlobal optional

Global position data.

ProtoFrame

Messages that will be broadcasted using protobuf protocol. A unique frame called ProtoFrame will be sent containing

all the optional messages.

For ensuring frame has been correctly encoded/decoded, a start and end byte will be added

to the frame. The frame will always be prefixed with its length.

FieldTypeLabelDescription
start_byte uint32

Start byte of the data frame.

timestamp uint64

Timestamp of the data frame in us.

ins_calibration InsCalibration optional

Calibration data for the INS.

sensors Sensors optional

Sensor data.

attitude Attitude optional

Attitude data.

position_velocity_acceleration PositionVelocityAcceleration optional

Position, velocity, and acceleration data.

end_byte uint32

End byte of the data frame.

Sensors

Message definition for sensor data.

FieldTypeLabelDescription
accelerometer_raw AccelerometerRaw optional

Accelerometer sensor data.

gyrometer_raw GyrometerRaw optional

Gyroscope sensor data.

magnetometer_raw MagnetometerRaw optional

Magnetometer sensor data.

barometer_raw BarometerRaw optional

Barometer sensor data.

gps_raw GPSRaw optional

GPS sensor data.

types.proto

Top

AccelerometerRaw

Raw data from the accelerometer

FieldTypeLabelDescription
xyz VectorAxis3f

Accelerometer xyz [g]

AttitudeGlobal

Attitude in global frame (yaw value is given by the magnetometer, so aligned with the magnetic north)

FieldTypeLabelDescription
ypr angles optional

Euler angles given using yaw, pitch, roll (Tait-Bryan) decomposition [rad]

quaternion Quaternion optional

Quaternion

AttitudeLocal

Attitude in local frame (yaw reference value is fixed to 0 at startup)

FieldTypeLabelDescription
ypr angles optional

Euler angles given using yaw, pitch, roll (Tait-Bryan) decomposition [rad]

quaternion Quaternion optional

Quaternion

BarometerRaw

Raw data from the barometer

FieldTypeLabelDescription
pressure float

Barometer pressure [hPa]

temperature float optional

Barometer temperature [degC]

BodyRates

FieldTypeLabelDescription
pqr_raw VectorAxis3f optional

Body rates as given by gyrometer converted and filtered [rad/s]

pqr VectorAxis3f optional

Body rates processed by ins [rad/s]

pqr_dot VectorAxis3f optional

Body accelerations [rad/s^2]

EulerAngularRates

FieldTypeLabelDescription
ypr_rate_raw VectorAxis3f optional

Raw Euler rates computed from pqr_raw, given in this order: yawVelocity, pitchVelocity, rollVelocity[rad/s]

ypr_rate VectorAxis3f optional

Euler rates computed from pqr, given in this order: yawVelocity, pitchVelocity, rollVelocity[rad/s]

ypr_rate_dot VectorAxis3f optional

Euler angular accelerations [rad/s^2]

GPSRaw

Raw data from the GPS

FieldTypeLabelDescription
latitude float

GPS latitude [deg]

longitude float

GPS longitude [deg]

altitude float optional

GPS altitude [m]

speed float optional

GPS speed [m/s]

satellites int32 optional

GPS number of satellites

fix_type int32 optional

GPS fix type

utc_time float optional

GPS UTC time [s]

GenericCalibration

Generic calibration message

FieldTypeLabelDescription
xyzBias VectorAxis3f optional

Sensor xyz bias

xyzGain VectorAxis3f optional

Sensor xyz gain/scale factor

degTemperatureDriftAxis float repeated

Interpolation axis for the temperature drift compensation [deg]

gTemperatureDriftValue float repeated

Interpolated value for the temperature drift compensation [g]

sTemporalDriftAxis float repeated

Interpolation axis for the temporal drift compensation [s]

gTemporalDriftValue float repeated

Interpolated value for the temporal drift compensation [g]

GyrometerRaw

Raw data from the gyrometer

FieldTypeLabelDescription
xyz VectorAxis3f

Gyrometer xyz [rad/s]

MagnetometerRaw

Raw data from the magnetometer

FieldTypeLabelDescription
xyz VectorAxis3f

Magnetometer xyz [uT]

PositionGlobal

Position, speed, acceleration in global frame (yaw value is given by the magnetometer, so aligned with the magnetic north)

The altitude is given considering the sea level as the reference

FieldTypeLabelDescription
position_states positionStates

altitude float optional

PositionLocal

Position, speed, acceleration in local frame (yaw reference value is fixed to 0 at startup)

The altitude is given considering the ground at startup as the reference

FieldTypeLabelDescription
position_states positionStates

altitude float optional

Quaternion

====================================================== //

===================== Basic types ==================== //

====================================================== //

FieldTypeLabelDescription
qw float

Quaternion scalar part

qx float

Quaternion vector part

qy float

qz float

VectorAxis3f

FieldTypeLabelDescription
x float

Vector x component

y float

Vector y component

z float

Vector z component

angles

FieldTypeLabelDescription
yaw float optional

Yaw angle [rad]

pitch float optional

Pitch angle [rad]

roll float optional

Roll angle [rad]

positionStates

FieldTypeLabelDescription
position VectorAxis3f

Positions xyz [m]

velocity VectorAxis3f optional

Velocities xyz [m/s]

acceleration VectorAxis3f optional

Accelerations xyz [m/s^2]

Scalar Value Types

.proto TypeNotesC++JavaPythonGoC#PHPRuby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)