mirror of https://github.com/commaai/openpilot.git
575 lines
12 KiB
Cap'n Proto
575 lines
12 KiB
Cap'n Proto
using Cxx = import "./include/c++.capnp";
|
|
$Cxx.namespace("cereal");
|
|
|
|
@0x80ef1ec4889c2a63;
|
|
|
|
# legacy.capnp: a home for deprecated structs
|
|
|
|
struct LogRotate @0x9811e1f38f62f2d1 {
|
|
segmentNum @0 :Int32;
|
|
path @1 :Text;
|
|
}
|
|
|
|
struct LiveUI @0xc08240f996aefced {
|
|
rearViewCam @0 :Bool;
|
|
alertText1 @1 :Text;
|
|
alertText2 @2 :Text;
|
|
awarenessStatus @3 :Float32;
|
|
}
|
|
|
|
struct UiLayoutState @0x88dcce08ad29dda0 {
|
|
activeApp @0 :App;
|
|
sidebarCollapsed @1 :Bool;
|
|
mapEnabled @2 :Bool;
|
|
mockEngaged @3 :Bool;
|
|
|
|
enum App @0x9917470acf94d285 {
|
|
home @0;
|
|
music @1;
|
|
nav @2;
|
|
settings @3;
|
|
none @4;
|
|
}
|
|
}
|
|
|
|
struct OrbslamCorrection @0x8afd33dc9b35e1aa {
|
|
correctionMonoTime @0 :UInt64;
|
|
prePositionECEF @1 :List(Float64);
|
|
postPositionECEF @2 :List(Float64);
|
|
prePoseQuatECEF @3 :List(Float32);
|
|
postPoseQuatECEF @4 :List(Float32);
|
|
numInliers @5 :UInt32;
|
|
}
|
|
|
|
struct EthernetPacket @0xa99a9d5b33cf5859 {
|
|
pkt @0 :Data;
|
|
ts @1 :Float32;
|
|
}
|
|
|
|
struct CellInfo @0xcff7566681c277ce {
|
|
timestamp @0 :UInt64;
|
|
repr @1 :Text; # android toString() for now
|
|
}
|
|
|
|
struct WifiScan @0xd4df5a192382ba0b {
|
|
bssid @0 :Text;
|
|
ssid @1 :Text;
|
|
capabilities @2 :Text;
|
|
frequency @3 :Int32;
|
|
level @4 :Int32;
|
|
timestamp @5 :Int64;
|
|
|
|
centerFreq0 @6 :Int32;
|
|
centerFreq1 @7 :Int32;
|
|
channelWidth @8 :ChannelWidth;
|
|
operatorFriendlyName @9 :Text;
|
|
venueName @10 :Text;
|
|
is80211mcResponder @11 :Bool;
|
|
passpoint @12 :Bool;
|
|
|
|
distanceCm @13 :Int32;
|
|
distanceSdCm @14 :Int32;
|
|
|
|
enum ChannelWidth @0xcb6a279f015f6b51 {
|
|
w20Mhz @0;
|
|
w40Mhz @1;
|
|
w80Mhz @2;
|
|
w160Mhz @3;
|
|
w80Plus80Mhz @4;
|
|
}
|
|
}
|
|
|
|
struct LiveEventData @0x94b7baa90c5c321e {
|
|
name @0 :Text;
|
|
value @1 :Int32;
|
|
}
|
|
|
|
struct ModelData @0xb8aad62cffef28a9 {
|
|
frameId @0 :UInt32;
|
|
frameAge @12 :UInt32;
|
|
frameDropPerc @13 :Float32;
|
|
timestampEof @9 :UInt64;
|
|
modelExecutionTime @14 :Float32;
|
|
gpuExecutionTime @16 :Float32;
|
|
rawPred @15 :Data;
|
|
|
|
path @1 :PathData;
|
|
leftLane @2 :PathData;
|
|
rightLane @3 :PathData;
|
|
lead @4 :LeadData;
|
|
freePath @6 :List(Float32);
|
|
|
|
settings @5 :ModelSettings;
|
|
leadFuture @7 :LeadData;
|
|
speed @8 :List(Float32);
|
|
meta @10 :MetaData;
|
|
longitudinal @11 :LongitudinalData;
|
|
|
|
struct PathData @0x8817eeea389e9f08 {
|
|
points @0 :List(Float32);
|
|
prob @1 :Float32;
|
|
std @2 :Float32;
|
|
stds @3 :List(Float32);
|
|
poly @4 :List(Float32);
|
|
validLen @5 :Float32;
|
|
}
|
|
|
|
struct LeadData @0xd1c9bef96d26fa91 {
|
|
dist @0 :Float32;
|
|
prob @1 :Float32;
|
|
std @2 :Float32;
|
|
relVel @3 :Float32;
|
|
relVelStd @4 :Float32;
|
|
relY @5 :Float32;
|
|
relYStd @6 :Float32;
|
|
relA @7 :Float32;
|
|
relAStd @8 :Float32;
|
|
}
|
|
|
|
struct ModelSettings @0xa26e3710efd3e914 {
|
|
bigBoxX @0 :UInt16;
|
|
bigBoxY @1 :UInt16;
|
|
bigBoxWidth @2 :UInt16;
|
|
bigBoxHeight @3 :UInt16;
|
|
boxProjection @4 :List(Float32);
|
|
yuvCorrection @5 :List(Float32);
|
|
inputTransform @6 :List(Float32);
|
|
}
|
|
|
|
struct MetaData @0x9744f25fb60f2bf8 {
|
|
engagedProb @0 :Float32;
|
|
desirePrediction @1 :List(Float32);
|
|
brakeDisengageProb @2 :Float32;
|
|
gasDisengageProb @3 :Float32;
|
|
steerOverrideProb @4 :Float32;
|
|
desireState @5 :List(Float32);
|
|
}
|
|
|
|
struct LongitudinalData @0xf98f999c6a071122 {
|
|
distances @2 :List(Float32);
|
|
speeds @0 :List(Float32);
|
|
accelerations @1 :List(Float32);
|
|
}
|
|
}
|
|
|
|
struct ECEFPoint @0xc25bbbd524983447 {
|
|
x @0 :Float64;
|
|
y @1 :Float64;
|
|
z @2 :Float64;
|
|
}
|
|
|
|
struct ECEFPointDEPRECATED @0xe10e21168db0c7f7 {
|
|
x @0 :Float32;
|
|
y @1 :Float32;
|
|
z @2 :Float32;
|
|
}
|
|
|
|
struct GPSPlannerPoints @0xab54c59699f8f9f3 {
|
|
curPosDEPRECATED @0 :ECEFPointDEPRECATED;
|
|
pointsDEPRECATED @1 :List(ECEFPointDEPRECATED);
|
|
curPos @6 :ECEFPoint;
|
|
points @7 :List(ECEFPoint);
|
|
valid @2 :Bool;
|
|
trackName @3 :Text;
|
|
speedLimit @4 :Float32;
|
|
accelTarget @5 :Float32;
|
|
}
|
|
|
|
struct GPSPlannerPlan @0xf5ad1d90cdc1dd6b {
|
|
valid @0 :Bool;
|
|
poly @1 :List(Float32);
|
|
trackName @2 :Text;
|
|
speed @3 :Float32;
|
|
acceleration @4 :Float32;
|
|
pointsDEPRECATED @5 :List(ECEFPointDEPRECATED);
|
|
points @6 :List(ECEFPoint);
|
|
xLookahead @7 :Float32;
|
|
}
|
|
|
|
struct UiNavigationEvent @0x90c8426c3eaddd3b {
|
|
type @0: Type;
|
|
status @1: Status;
|
|
distanceTo @2: Float32;
|
|
endRoadPointDEPRECATED @3: ECEFPointDEPRECATED;
|
|
endRoadPoint @4: ECEFPoint;
|
|
|
|
enum Type @0xe8db07dcf8fcea05 {
|
|
none @0;
|
|
laneChangeLeft @1;
|
|
laneChangeRight @2;
|
|
mergeLeft @3;
|
|
mergeRight @4;
|
|
turnLeft @5;
|
|
turnRight @6;
|
|
}
|
|
|
|
enum Status @0xb9aa88c75ef99a1f {
|
|
none @0;
|
|
passive @1;
|
|
approaching @2;
|
|
active @3;
|
|
}
|
|
}
|
|
|
|
struct LiveLocationData @0xb99b2bc7a57e8128 {
|
|
status @0 :UInt8;
|
|
|
|
# 3D fix
|
|
lat @1 :Float64;
|
|
lon @2 :Float64;
|
|
alt @3 :Float32; # m
|
|
|
|
# speed
|
|
speed @4 :Float32; # m/s
|
|
|
|
# NED velocity components
|
|
vNED @5 :List(Float32);
|
|
|
|
# roll, pitch, heading (x,y,z)
|
|
roll @6 :Float32; # WRT to center of earth?
|
|
pitch @7 :Float32; # WRT to center of earth?
|
|
heading @8 :Float32; # WRT to north?
|
|
|
|
# what are these?
|
|
wanderAngle @9 :Float32;
|
|
trackAngle @10 :Float32;
|
|
|
|
# car frame -- https://upload.wikimedia.org/wikipedia/commons/f/f5/RPY_angles_of_cars.png
|
|
|
|
# gyro, in car frame, deg/s
|
|
gyro @11 :List(Float32);
|
|
|
|
# accel, in car frame, m/s^2
|
|
accel @12 :List(Float32);
|
|
|
|
accuracy @13 :Accuracy;
|
|
|
|
source @14 :SensorSource;
|
|
# if we are fixing a location in the past
|
|
fixMonoTime @15 :UInt64;
|
|
|
|
gpsWeek @16 :Int32;
|
|
timeOfWeek @17 :Float64;
|
|
|
|
positionECEF @18 :List(Float64);
|
|
poseQuatECEF @19 :List(Float32);
|
|
pitchCalibration @20 :Float32;
|
|
yawCalibration @21 :Float32;
|
|
imuFrame @22 :List(Float32);
|
|
|
|
struct Accuracy @0x943dc4625473b03f {
|
|
pNEDError @0 :List(Float32);
|
|
vNEDError @1 :List(Float32);
|
|
rollError @2 :Float32;
|
|
pitchError @3 :Float32;
|
|
headingError @4 :Float32;
|
|
ellipsoidSemiMajorError @5 :Float32;
|
|
ellipsoidSemiMinorError @6 :Float32;
|
|
ellipsoidOrientationError @7 :Float32;
|
|
}
|
|
|
|
enum SensorSource @0xc871d3cc252af657 {
|
|
applanix @0;
|
|
kalman @1;
|
|
orbslam @2;
|
|
timing @3;
|
|
dummy @4;
|
|
}
|
|
}
|
|
|
|
struct OrbOdometry @0xd7700859ed1f5b76 {
|
|
# timing first
|
|
startMonoTime @0 :UInt64;
|
|
endMonoTime @1 :UInt64;
|
|
|
|
# fundamental matrix and error
|
|
f @2: List(Float64);
|
|
err @3: Float64;
|
|
|
|
# number of inlier points
|
|
inliers @4: Int32;
|
|
|
|
# for debug only
|
|
# indexed by endMonoTime features
|
|
# value is startMonoTime feature match
|
|
# -1 if no match
|
|
matches @5: List(Int16);
|
|
}
|
|
|
|
struct OrbFeatures @0xcd60164a8a0159ef {
|
|
timestampEof @0 :UInt64;
|
|
# transposed arrays of normalized image coordinates
|
|
# len(xs) == len(ys) == len(descriptors) * 32
|
|
xs @1 :List(Float32);
|
|
ys @2 :List(Float32);
|
|
descriptors @3 :Data;
|
|
octaves @4 :List(Int8);
|
|
|
|
# match index to last OrbFeatures
|
|
# -1 if no match
|
|
timestampLastEof @5 :UInt64;
|
|
matches @6: List(Int16);
|
|
}
|
|
|
|
struct OrbFeaturesSummary @0xd500d30c5803fa4f {
|
|
timestampEof @0 :UInt64;
|
|
timestampLastEof @1 :UInt64;
|
|
|
|
featureCount @2 :UInt16;
|
|
matchCount @3 :UInt16;
|
|
computeNs @4 :UInt64;
|
|
}
|
|
|
|
struct OrbKeyFrame @0xc8233c0345e27e24 {
|
|
# this is a globally unique id for the KeyFrame
|
|
id @0: UInt64;
|
|
|
|
# this is the location of the KeyFrame
|
|
pos @1: ECEFPoint;
|
|
|
|
# these are the features in the world
|
|
# len(dpos) == len(descriptors) * 32
|
|
dpos @2 :List(ECEFPoint);
|
|
descriptors @3 :Data;
|
|
}
|
|
|
|
struct KalmanOdometry @0x92e21bb7ea38793a {
|
|
trans @0 :List(Float32); # m/s in device frame
|
|
rot @1 :List(Float32); # rad/s in device frame
|
|
transStd @2 :List(Float32); # std m/s in device frame
|
|
rotStd @3 :List(Float32); # std rad/s in device frame
|
|
}
|
|
|
|
struct OrbObservation @0x9b326d4e436afec7 {
|
|
observationMonoTime @0 :UInt64;
|
|
normalizedCoordinates @1 :List(Float32);
|
|
locationECEF @2 :List(Float64);
|
|
matchDistance @3: UInt32;
|
|
}
|
|
|
|
struct CalibrationFeatures @0x8fdfadb254ea867a {
|
|
frameId @0 :UInt32;
|
|
|
|
p0 @1 :List(Float32);
|
|
p1 @2 :List(Float32);
|
|
status @3 :List(Int8);
|
|
}
|
|
|
|
struct NavStatus @0xbd8822120928120c {
|
|
isNavigating @0 :Bool;
|
|
currentAddress @1 :Address;
|
|
|
|
struct Address @0xce7cd672cacc7814 {
|
|
title @0 :Text;
|
|
lat @1 :Float64;
|
|
lng @2 :Float64;
|
|
house @3 :Text;
|
|
address @4 :Text;
|
|
street @5 :Text;
|
|
city @6 :Text;
|
|
state @7 :Text;
|
|
country @8 :Text;
|
|
}
|
|
}
|
|
|
|
struct NavUpdate @0xdb98be6565516acb {
|
|
isNavigating @0 :Bool;
|
|
curSegment @1 :Int32;
|
|
segments @2 :List(Segment);
|
|
|
|
struct LatLng @0x9eaef9187cadbb9b {
|
|
lat @0 :Float64;
|
|
lng @1 :Float64;
|
|
}
|
|
|
|
struct Segment @0xa5b39b4fc4d7da3f {
|
|
from @0 :LatLng;
|
|
to @1 :LatLng;
|
|
updateTime @2 :Int32;
|
|
distance @3 :Int32;
|
|
crossTime @4 :Int32;
|
|
exitNo @5 :Int32;
|
|
instruction @6 :Instruction;
|
|
|
|
parts @7 :List(LatLng);
|
|
|
|
enum Instruction @0xc5417a637451246f {
|
|
turnLeft @0;
|
|
turnRight @1;
|
|
keepLeft @2;
|
|
keepRight @3;
|
|
straight @4;
|
|
roundaboutExitNumber @5;
|
|
roundaboutExit @6;
|
|
roundaboutTurnLeft @7;
|
|
unkn8 @8;
|
|
roundaboutStraight @9;
|
|
unkn10 @10;
|
|
roundaboutTurnRight @11;
|
|
unkn12 @12;
|
|
roundaboutUturn @13;
|
|
unkn14 @14;
|
|
arrive @15;
|
|
exitLeft @16;
|
|
exitRight @17;
|
|
unkn18 @18;
|
|
uturn @19;
|
|
# ...
|
|
}
|
|
}
|
|
}
|
|
|
|
struct TrafficEvent @0xacfa74a094e62626 {
|
|
type @0 :Type;
|
|
distance @1 :Float32;
|
|
action @2 :Action;
|
|
resuming @3 :Bool;
|
|
|
|
enum Type @0xd85d75253435bf4b {
|
|
stopSign @0;
|
|
lightRed @1;
|
|
lightYellow @2;
|
|
lightGreen @3;
|
|
stopLight @4;
|
|
}
|
|
|
|
enum Action @0xa6f6ce72165ccb49 {
|
|
none @0;
|
|
yield @1;
|
|
stop @2;
|
|
resumeReady @3;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
struct AndroidGnss @0xdfdf30d03fc485bd {
|
|
union {
|
|
measurements @0 :Measurements;
|
|
navigationMessage @1 :NavigationMessage;
|
|
}
|
|
|
|
struct Measurements @0xa20710d4f428d6cd {
|
|
clock @0 :Clock;
|
|
measurements @1 :List(Measurement);
|
|
|
|
struct Clock @0xa0e27b453a38f450 {
|
|
timeNanos @0 :Int64;
|
|
hardwareClockDiscontinuityCount @1 :Int32;
|
|
|
|
hasTimeUncertaintyNanos @2 :Bool;
|
|
timeUncertaintyNanos @3 :Float64;
|
|
|
|
hasLeapSecond @4 :Bool;
|
|
leapSecond @5 :Int32;
|
|
|
|
hasFullBiasNanos @6 :Bool;
|
|
fullBiasNanos @7 :Int64;
|
|
|
|
hasBiasNanos @8 :Bool;
|
|
biasNanos @9 :Float64;
|
|
|
|
hasBiasUncertaintyNanos @10 :Bool;
|
|
biasUncertaintyNanos @11 :Float64;
|
|
|
|
hasDriftNanosPerSecond @12 :Bool;
|
|
driftNanosPerSecond @13 :Float64;
|
|
|
|
hasDriftUncertaintyNanosPerSecond @14 :Bool;
|
|
driftUncertaintyNanosPerSecond @15 :Float64;
|
|
}
|
|
|
|
struct Measurement @0xd949bf717d77614d {
|
|
svId @0 :Int32;
|
|
constellation @1 :Constellation;
|
|
|
|
timeOffsetNanos @2 :Float64;
|
|
state @3 :Int32;
|
|
receivedSvTimeNanos @4 :Int64;
|
|
receivedSvTimeUncertaintyNanos @5 :Int64;
|
|
cn0DbHz @6 :Float64;
|
|
pseudorangeRateMetersPerSecond @7 :Float64;
|
|
pseudorangeRateUncertaintyMetersPerSecond @8 :Float64;
|
|
accumulatedDeltaRangeState @9 :Int32;
|
|
accumulatedDeltaRangeMeters @10 :Float64;
|
|
accumulatedDeltaRangeUncertaintyMeters @11 :Float64;
|
|
|
|
hasCarrierFrequencyHz @12 :Bool;
|
|
carrierFrequencyHz @13 :Float32;
|
|
hasCarrierCycles @14 :Bool;
|
|
carrierCycles @15 :Int64;
|
|
hasCarrierPhase @16 :Bool;
|
|
carrierPhase @17 :Float64;
|
|
hasCarrierPhaseUncertainty @18 :Bool;
|
|
carrierPhaseUncertainty @19 :Float64;
|
|
hasSnrInDb @20 :Bool;
|
|
snrInDb @21 :Float64;
|
|
|
|
multipathIndicator @22 :MultipathIndicator;
|
|
|
|
enum Constellation @0x9ef1f3ff0deb5ffb {
|
|
unknown @0;
|
|
gps @1;
|
|
sbas @2;
|
|
glonass @3;
|
|
qzss @4;
|
|
beidou @5;
|
|
galileo @6;
|
|
}
|
|
|
|
enum State @0xcbb9490adce12d72 {
|
|
unknown @0;
|
|
codeLock @1;
|
|
bitSync @2;
|
|
subframeSync @3;
|
|
towDecoded @4;
|
|
msecAmbiguous @5;
|
|
symbolSync @6;
|
|
gloStringSync @7;
|
|
gloTodDecoded @8;
|
|
bdsD2BitSync @9;
|
|
bdsD2SubframeSync @10;
|
|
galE1bcCodeLock @11;
|
|
galE1c2ndCodeLock @12;
|
|
galE1bPageSync @13;
|
|
sbasSync @14;
|
|
}
|
|
|
|
enum MultipathIndicator @0xc04e7b6231d4caa8 {
|
|
unknown @0;
|
|
detected @1;
|
|
notDetected @2;
|
|
}
|
|
}
|
|
}
|
|
|
|
struct NavigationMessage @0xe2517b083095fd4e {
|
|
type @0 :Int32;
|
|
svId @1 :Int32;
|
|
messageId @2 :Int32;
|
|
submessageId @3 :Int32;
|
|
data @4 :Data;
|
|
status @5 :Status;
|
|
|
|
enum Status @0xec1ff7996b35366f {
|
|
unknown @0;
|
|
parityPassed @1;
|
|
parityRebuilt @2;
|
|
}
|
|
}
|
|
}
|
|
|
|
struct LidarPts @0xe3d6685d4e9d8f7a {
|
|
r @0 :List(UInt16); # uint16 m*500.0
|
|
theta @1 :List(UInt16); # uint16 deg*100.0
|
|
reflect @2 :List(UInt8); # uint8 0-255
|
|
|
|
# For storing out of file.
|
|
idx @3 :UInt64;
|
|
|
|
# For storing in file
|
|
pkt @4 :Data;
|
|
}
|
|
|
|
|