Skip to content
This repository has been archived by the owner on Oct 20, 2023. It is now read-only.

Protobuf Definitions

Jimmy Wang edited this page Jun 9, 2022 · 2 revisions

Point Cloud

Each TrackState corresponds to detection found on a single radar frame.

message TrackerState {
    enum Version {
        VERSION_01 = 1;
    }
    optional zpb.Metadata          meta         = 1;
    repeated Point                 detection    = 2;
}

// A point marks where the target is being detected
message Point {
    // position of the point in vehicle-relative coordinate
    required Vec3d      position                = 2;

    // magnitude: magnitude of the coefficient in the DOA
    // estimation (we estimate coeff * a(theta, phi))
    optional float      magnitude               = 3;

    // azimuth_variance and elevation_variance:
    // are the variance on the estimates
    // (diagonal terms of the covariance matrix obtained as
    // cov(theta, phi) = sigma^2 * (Hessian(cost(theta, phi)))^-1)
    optional float      azimuth_variance        = 4;
    optional float      elevation_variance      = 5;

    // raw measurement of the point within the 4D radar cube.
    // This information is in the radar frame
    optional float      range                   = 6;
    optional float      range_velocity          = 7;
    optional float      azimuth                 = 8;
    optional float      elevation               = 9;

    // doa_snr_db: SNR measured after the DOA estimation in dB.
    // We estimate the variance of the noise as
    // sigma^2 = ||z - coeff * a(theta, phi)||^2 / (n - m)
    // where n is the number of measurements and m the number
    // of parameters to estimate (m=1 for 1D / 1 object,
    // m=2 for 2D / 1 object, etc.).
    // We then have doa_snr_db = 20log10(|coeff| / sigma)
    optional float      doa_snr_db              = 13;

    // rd_mean_snr: SNR of a detection in rhe range-doppler in dB.
    // rd_mean_snr_db = 20log10(mean_vx(|N+S|) / mean_local(|N|))
    // where S is the signal and N the noise
    optional float      rd_mean_snr_db          = 14;
}

message Metadata {
  optional double         timestamp          = 1;  // Timestamp in seconds, GPS.
  optional uint64         frame_id           = 4;  
  optional string         serial             = 5;  // radar serial number
}

Telemetry

Telemetry data consists of a set of system health status.

/// HK Report is an async status message from the device.
message HousekeepingReport {
  oneof report {
    Heartbeat      heartbeat        = 1;
    SensorIdentity sensor_identity  = 2;
    ImagingStatus  imaging_status   = 3;
    GpsStatus      gps_status       = 4;
    Temperatures   temperatures     = 5;
  }
};

/// Periodic heartbeat between device and host to maintain aliveness.
message Heartbeat {
  optional string short_name = 1 [default = "telem.heartbeat"];

  optional string echo = 2;
}

/// The host can listen to this channel to discover sensors.
message SensorIdentity {
  optional string short_name = 6 [default = "telem.sensor_id"];

  required string serial       = 1;
  optional uint32 system_major = 2 [default=0, deprecated=true];
  optional uint32 system_minor = 3 [default=0, deprecated=true];
  optional uint32 channel      = 4 [default=0, deprecated=true];
  optional zpb.Extrinsic extrinsic = 5;
};

/// Runtime status for shannon_imaging.
message ImagingStatus {
  optional string short_name = 1 [default = "telem.imaging_status"];

  optional bool   is_running      = 2;
  optional string running_mode    = 3;
  optional double cpu_utilization = 4;
  optional double gpu_utilization = 5;
};

message GpsStatus {
  optional string short_name = 1 [default = "telem.gps_status"];

  optional zpb.data.PositionQuality qos = 2;
}

message Temperatures {
  optional string short_name = 1 [default = "telem.temperatures"];

  optional float cpu_temperature = 2;
  optional float gpu_temperature = 3;
}
Clone this wiki locally