This repository has been archived by the owner on Oct 20, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
Protobuf Definitions
Jimmy Wang edited this page Jun 9, 2022
·
2 revisions
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 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;
}