IQ.Pilot Prebuilt Release @ 27f668a
This commit is contained in:
982
iqpilot/cereal/custom.capnp
Normal file
982
iqpilot/cereal/custom.capnp
Normal file
@@ -0,0 +1,982 @@
|
||||
using Cxx = import "/include/c++.capnp";
|
||||
$Cxx.namespace("cereal");
|
||||
|
||||
@0xb526ba661d550a59;
|
||||
|
||||
# Copyright © IQ.Lvbs, apart of Project Teal Lvbs, All Rights Reserved, licensed under https://konn3kt.com/tos/
|
||||
|
||||
# custom.capnp: a home for reserved structs used by IQ-specific extensions.
|
||||
|
||||
struct AlwaysOnLateral {
|
||||
state @0 :AlwaysOnLateralState;
|
||||
enabled @1 :Bool;
|
||||
active @2 :Bool;
|
||||
available @3 :Bool;
|
||||
|
||||
enum AlwaysOnLateralState {
|
||||
disabled @0;
|
||||
paused @1;
|
||||
enabled @2;
|
||||
softDisabling @3;
|
||||
overriding @4;
|
||||
}
|
||||
}
|
||||
|
||||
# Same struct as Log.RadarState.LeadData
|
||||
struct LeadData {
|
||||
dRel @0 :Float32;
|
||||
yRel @1 :Float32;
|
||||
vRel @2 :Float32;
|
||||
aRel @3 :Float32;
|
||||
vLead @4 :Float32;
|
||||
dPath @6 :Float32;
|
||||
vLat @7 :Float32;
|
||||
vLeadK @8 :Float32;
|
||||
aLeadK @9 :Float32;
|
||||
fcw @10 :Bool;
|
||||
status @11 :Bool;
|
||||
aLeadTau @12 :Float32;
|
||||
modelProb @13 :Float32;
|
||||
radar @14 :Bool;
|
||||
radarTrackId @15 :Int32 = -1;
|
||||
|
||||
aLeadDEPRECATED @5 :Float32;
|
||||
}
|
||||
|
||||
struct IQState @0xfb0932cf1bde8c5a {
|
||||
aol @0 :AlwaysOnLateral;
|
||||
|
||||
enum AudibleAlert {
|
||||
none @0;
|
||||
|
||||
engage @1;
|
||||
disengage @2;
|
||||
refuse @3;
|
||||
|
||||
warningSoft @4;
|
||||
warningImmediate @5;
|
||||
|
||||
prompt @6;
|
||||
promptRepeat @7;
|
||||
promptDistracted @8;
|
||||
|
||||
# unused, these are reserved for upstream events so we don't collide
|
||||
reserved9 @9;
|
||||
reserved10 @10;
|
||||
reserved11 @11;
|
||||
reserved12 @12;
|
||||
reserved13 @13;
|
||||
reserved14 @14;
|
||||
reserved15 @15;
|
||||
reserved16 @16;
|
||||
reserved17 @17;
|
||||
reserved18 @18;
|
||||
reserved19 @19;
|
||||
reserved20 @20;
|
||||
reserved21 @21;
|
||||
reserved22 @22;
|
||||
reserved23 @23;
|
||||
reserved24 @24;
|
||||
reserved25 @25;
|
||||
reserved26 @26;
|
||||
reserved27 @27;
|
||||
reserved28 @28;
|
||||
reserved29 @29;
|
||||
reserved30 @30;
|
||||
|
||||
promptSingleLow @31;
|
||||
promptSingleHigh @32;
|
||||
}
|
||||
}
|
||||
|
||||
struct IQModelManager @0xe91d6987759290bb {
|
||||
activeBundle @0 :ModelBundle;
|
||||
selectedBundle @1 :ModelBundle;
|
||||
availableBundles @2 :List(ModelBundle);
|
||||
|
||||
struct DownloadUri {
|
||||
uri @0 :Text;
|
||||
sha256 @1 :Text;
|
||||
}
|
||||
|
||||
enum DownloadStatus {
|
||||
notDownloading @0;
|
||||
downloading @1;
|
||||
downloaded @2;
|
||||
cached @3;
|
||||
failed @4;
|
||||
}
|
||||
|
||||
struct DownloadProgress {
|
||||
status @0 :DownloadStatus;
|
||||
progress @1 :Float32;
|
||||
eta @2 :UInt32;
|
||||
}
|
||||
|
||||
struct Artifact {
|
||||
fileName @0 :Text;
|
||||
downloadUri @1 :DownloadUri;
|
||||
downloadProgress @2 :DownloadProgress;
|
||||
}
|
||||
|
||||
struct Model {
|
||||
type @0 :Type;
|
||||
artifact @1 :Artifact; # Main artifact
|
||||
metadata @2 :Artifact; # Metadata artifact
|
||||
|
||||
enum Type {
|
||||
supercombo @0;
|
||||
navigation @1;
|
||||
vision @2;
|
||||
policy @3;
|
||||
offPolicy @4;
|
||||
onPolicy @5;
|
||||
usbeMac @6;
|
||||
}
|
||||
}
|
||||
|
||||
enum Runner {
|
||||
snpe @0;
|
||||
tinygrad @1;
|
||||
stock @2;
|
||||
}
|
||||
|
||||
struct Override {
|
||||
key @0 :Text;
|
||||
value @1 :Text;
|
||||
}
|
||||
|
||||
struct ModelBundle {
|
||||
index @0 :UInt32;
|
||||
internalName @1 :Text;
|
||||
displayName @2 :Text;
|
||||
models @3 :List(Model);
|
||||
status @4 :DownloadStatus;
|
||||
generation @5 :UInt32;
|
||||
environment @6 :Text;
|
||||
runner @7 :Runner;
|
||||
is20hz @8 :Bool;
|
||||
ref @9 :Text;
|
||||
minimumSelectorVersion @10 :UInt32;
|
||||
overrides @11 :List(Override);
|
||||
}
|
||||
}
|
||||
|
||||
struct IQPlan @0xda401323ae805f2b {
|
||||
iqDynamic @0 :IQDynamicControl;
|
||||
longitudinalPlanSource @1 :LongitudinalPlanSource;
|
||||
iqNavState @2 :IQNavPlanState;
|
||||
speedLimit @3 :SpeedLimit;
|
||||
vTarget @4 :Float32;
|
||||
aTarget @5 :Float32;
|
||||
events @6 :List(IQOnroadEvent.Event);
|
||||
e2eAlerts @7 :E2eAlerts;
|
||||
|
||||
struct IQDynamicControl {
|
||||
state @0 :IQDynamicControlState;
|
||||
enabled @1 :Bool;
|
||||
active @2 :Bool;
|
||||
|
||||
enum IQDynamicControlState {
|
||||
acc @0;
|
||||
blended @1;
|
||||
}
|
||||
}
|
||||
|
||||
struct IQNavPlanState {
|
||||
nav @0 :Nav;
|
||||
|
||||
struct Nav {
|
||||
engaged @0 :Bool;
|
||||
provider @1 :IQNavState.LongitudinalProvider;
|
||||
state @2 :IQNavState.LongitudinalState;
|
||||
speedTarget @3 :Float32;
|
||||
accelTarget @4 :Float32;
|
||||
valid @5 :Bool;
|
||||
}
|
||||
}
|
||||
|
||||
struct SpeedLimit {
|
||||
resolver @0 :Resolver;
|
||||
assist @1 :Assist;
|
||||
|
||||
struct Resolver {
|
||||
speedLimit @0 :Float32;
|
||||
distToSpeedLimit @1 :Float32;
|
||||
source @2 :Source;
|
||||
speedLimitOffset @3 :Float32;
|
||||
speedLimitLast @4 :Float32;
|
||||
speedLimitFinal @5 :Float32;
|
||||
speedLimitFinalLast @6 :Float32;
|
||||
speedLimitValid @7 :Bool;
|
||||
speedLimitLastValid @8 :Bool;
|
||||
}
|
||||
|
||||
struct Assist {
|
||||
state @0 :AssistState;
|
||||
enabled @1 :Bool;
|
||||
active @2 :Bool;
|
||||
vTarget @3 :Float32;
|
||||
aTarget @4 :Float32;
|
||||
}
|
||||
|
||||
enum Source {
|
||||
none @0;
|
||||
car @1;
|
||||
map @2;
|
||||
}
|
||||
|
||||
enum AssistState {
|
||||
disabled @0;
|
||||
inactive @1; # No speed limit set or not enabled by parameter.
|
||||
preActive @2;
|
||||
pending @3; # Awaiting new speed limit.
|
||||
adapting @4; # Reducing speed to match new speed limit.
|
||||
active @5; # Cruising at speed limit.
|
||||
}
|
||||
}
|
||||
|
||||
enum LongitudinalPlanSource {
|
||||
cruise @0;
|
||||
nav @1;
|
||||
speedLimitAssist @2;
|
||||
}
|
||||
|
||||
struct E2eAlerts {
|
||||
pathOpen @0 :Bool;
|
||||
leadPullaway @1 :Bool;
|
||||
}
|
||||
}
|
||||
|
||||
struct IQOnroadEvent @0xf4621d3ee9233bc9 {
|
||||
events @0 :List(Event);
|
||||
|
||||
struct Event {
|
||||
name @0 :EventName;
|
||||
|
||||
# event types
|
||||
enable @1 :Bool;
|
||||
noEntry @2 :Bool;
|
||||
warning @3 :Bool; # alerts presented only when enabled or soft disabling
|
||||
userDisable @4 :Bool;
|
||||
softDisable @5 :Bool;
|
||||
immediateDisable @6 :Bool;
|
||||
preEnable @7 :Bool;
|
||||
permanent @8 :Bool; # alerts presented regardless of openpilot state
|
||||
overrideLateral @10 :Bool;
|
||||
overrideLongitudinal @9 :Bool;
|
||||
}
|
||||
|
||||
# Grouped by IQ.Pilot subsystem. Ordinals are IQ-native and are not stable
|
||||
# across schema revisions; all consumers reference members by name.
|
||||
enum EventName {
|
||||
# lateral / LKAS engagement core
|
||||
alcEngaged @0;
|
||||
alcDisengaged @1;
|
||||
alcEngagedSilent @2;
|
||||
alcDisengagedSilent @3;
|
||||
steerManually @4;
|
||||
speedManually @5;
|
||||
latMismatch @6;
|
||||
steeringOverrideReengageAlc @7;
|
||||
|
||||
# silent pause conditions (gear / door / belt / brake)
|
||||
gearNotDriveSilent @8;
|
||||
reverseSilent @9;
|
||||
doorAjarSilent @10;
|
||||
seatbeltUnbuckledSilent @11;
|
||||
parkBrakeSilent @12;
|
||||
brakeHoldSilent @13;
|
||||
|
||||
# alert-only notices
|
||||
carModeMismatchNotice @14;
|
||||
pedalHeldNotice @15;
|
||||
|
||||
# lane-turn desires
|
||||
modelTurnLeft @16;
|
||||
modelTurnRight @17;
|
||||
|
||||
# navigation maneuvers
|
||||
navTurnLeft @18;
|
||||
navTurnRight @19;
|
||||
navExitLeft @20;
|
||||
navExitRight @21;
|
||||
|
||||
# speed limit / speed camera
|
||||
speedLimitPreActive @22;
|
||||
speedLimitActive @23;
|
||||
speedLimitChanged @24;
|
||||
speedLimitPending @25;
|
||||
speedCameraAhead @26;
|
||||
|
||||
# miscellaneous
|
||||
hyundaiRadarTracksConfirmed @27;
|
||||
experimentalToggled @28;
|
||||
e2eChime @29;
|
||||
|
||||
# construction zone assist
|
||||
constructionZoneDetected @30;
|
||||
|
||||
# model management
|
||||
modelUpdating @31;
|
||||
|
||||
# camera hardware
|
||||
wideCamFaulty @32;
|
||||
|
||||
lateralEdgeBlocked @33;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
struct IQCarParams @0xd4189b5c8aca9f78 {
|
||||
# Ordinals are IQ-native; all consumers access by name. Live copies self-heal
|
||||
# via CLEAR_ON_MANAGER_START on the "IQCarParams" param; the persistent cache
|
||||
# is versioned separately (see IQCarParamsPersistentV2).
|
||||
iqSafetyFlags @0 :Int16; # iqpilot custom safety flags (read in C++ panda_safety)
|
||||
flags @1 :UInt32; # car-specific iqpilot quirks
|
||||
pcmCruiseSpeed @2 :Bool;
|
||||
enableGasInterceptor @3 :Bool;
|
||||
|
||||
iqLateralNet @4 :LateralNet;
|
||||
longitudinalStoppingSpeedOverride @5 :Float32; # m/s; zero keeps the upstream default
|
||||
stoppingDecelRateOverride @6 :Float32; # m/s^3; zero keeps the upstream default
|
||||
longActiveWithGasOverride @7 :Bool; # keep long control active while the driver is on the gas
|
||||
|
||||
struct LateralNet {
|
||||
fuzzyFingerprint @0 :Bool;
|
||||
model @1 :Model;
|
||||
|
||||
struct Model {
|
||||
name @0 :Text;
|
||||
path @1 :Text;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct IQCarControl @0xdc6c97009c7ba28f {
|
||||
aol @0 :AlwaysOnLateral;
|
||||
params @1 :List(Param);
|
||||
leadOne @2 :LeadData;
|
||||
leadTwo @3 :LeadData;
|
||||
angleOffsetDeg @4 :Float32;
|
||||
|
||||
radarBlendActive @5 :Bool; # feature enabled + PQ + alpha long active
|
||||
radarEngageReq @6 :Bool; # want stock radar cruise engaged (RadarHandler sends SET on bus 2)
|
||||
radarCancelReq @7 :Bool; # cancel stock radar cruise now (1kph stop / brake / teardown)
|
||||
useRadarAccel @8 :Bool; # chill mode + radar active -> pass radar ACS_Sollbeschl as ACC_System payload
|
||||
radarSetSpeedKph @9 :Float32; # OP set speed (km/h) to sync radar ACA_V_Wunsch toward via GRA_Up/Down
|
||||
radarGapBars @10 :UInt8; # OP follow-distance bars to mirror to radar GRA_Zeitluecke
|
||||
|
||||
struct Param {
|
||||
key @0 :Text;
|
||||
type @2 :ParamType;
|
||||
value @3 :Data;
|
||||
|
||||
valueDEPRECATED @1 :Text; # The data type change may cause issues with backwards compatibility.
|
||||
}
|
||||
|
||||
enum ParamType {
|
||||
string @0;
|
||||
bool @1;
|
||||
int @2;
|
||||
float @3;
|
||||
time @4;
|
||||
json @5;
|
||||
bytes @6;
|
||||
}
|
||||
}
|
||||
|
||||
# IQ.Pilot device backup/restore state. Ordinals are IQ-native and were
|
||||
# renumbered/reordered from earlier revisions; persisted BackupInfo blobs are
|
||||
# not backward compatible across this change and reset on first run. Every
|
||||
# consumer accesses fields by name.
|
||||
struct IQBackupManager @0x9f371a75483cf0a3 {
|
||||
saveProgress @0 :Float32;
|
||||
loadProgress @1 :Float32;
|
||||
savePhase @2 :Phase;
|
||||
loadPhase @3 :Phase;
|
||||
activeSnapshot @4 :Snapshot;
|
||||
snapshotLog @5 :List(Snapshot);
|
||||
faultText @6 :Text;
|
||||
|
||||
enum Phase {
|
||||
idle @0;
|
||||
completed @1;
|
||||
inProgress @2;
|
||||
failed @3;
|
||||
}
|
||||
|
||||
# nested struct names diverge from any upstream schema; field names below are the
|
||||
# cloud backup JSON contract (to_dict keys) and MUST stay stable for restore.
|
||||
struct BuildStamp {
|
||||
build @0 :UInt16;
|
||||
major @1 :UInt16;
|
||||
minor @2 :UInt16;
|
||||
patch @3 :UInt16;
|
||||
branch @4 :Text;
|
||||
}
|
||||
|
||||
struct MetaField {
|
||||
value @0 :Text;
|
||||
key @1 :Text;
|
||||
tags @2 :List(Text);
|
||||
}
|
||||
|
||||
struct Snapshot {
|
||||
version @0 :UInt32;
|
||||
isEncrypted @1 :Bool;
|
||||
deviceId @2 :Text;
|
||||
config @3 :Text;
|
||||
createdAt @4 :Text; # ISO timestamp
|
||||
updatedAt @5 :Text; # ISO timestamp
|
||||
iqpilotVersion @6 :BuildStamp;
|
||||
backupMetadata @7 :List(MetaField);
|
||||
}
|
||||
}
|
||||
|
||||
struct IQCarState @0xb1c39318bb6bc2b3 {
|
||||
speedLimit @0 :Float32;
|
||||
accelPressed @1 :Bool;
|
||||
decelPressed @2 :Bool;
|
||||
alcOverrideAlert @3 :Bool;
|
||||
|
||||
# VW PQ stock ACC radar feedback for the IQ.Dynamics radar_manager (Blend feature)
|
||||
accRadarStaAdr @4 :UInt8; # ACC_System.ACS_Sta_ADR (0 not-active, 1 active, 2 passive, 3 irrev_Fehler)
|
||||
accRadarFehler @5 :Bool; # ACC_System.ACS_Fehler (stored fault -> radar dead for the drive)
|
||||
slcSetSpeedRequestId @6 :UInt32;
|
||||
slcSetSpeedGestureId @7 :UInt32;
|
||||
slcSetSpeedRequestKph @8 :Float32;
|
||||
}
|
||||
|
||||
struct IQLiveData @0xf2e2b608e51f4b0e {
|
||||
speedLimitValid @0 :Bool;
|
||||
speedLimit @1 :Float32;
|
||||
speedLimitAheadValid @2 :Bool;
|
||||
speedLimitAhead @3 :Float32;
|
||||
speedLimitAheadDistance @4 :Float32;
|
||||
roadName @5 :Text;
|
||||
}
|
||||
|
||||
struct IQLiveLocation @0xc04dbadb81776876 {
|
||||
ecefPosition @0 :VectorSample;
|
||||
geodeticPosition @1 :VectorSample;
|
||||
ecefVelocity @2 :VectorSample;
|
||||
nedVelocity @3 :VectorSample;
|
||||
bodyVelocity @4 :VectorSample;
|
||||
bodyAcceleration @5 :VectorSample;
|
||||
|
||||
ecefOrientation @6 :VectorSample;
|
||||
alignedOrientationEcef @7 :VectorSample;
|
||||
nedOrientation @8 :VectorSample;
|
||||
bodyAngularRate @9 :VectorSample;
|
||||
alignedOrientationNed @10 :VectorSample;
|
||||
alignedVelocity @11 :VectorSample;
|
||||
alignedAcceleration @12 :VectorSample;
|
||||
alignedAngularRate @13 :VectorSample;
|
||||
|
||||
solutionState @14 :SolutionState;
|
||||
unixTimestampMillis @15 :Int64;
|
||||
inputsHealthy @16 :Bool = true;
|
||||
visionHealthy @17 :Bool = true;
|
||||
gpsHealthy @18 :Bool = true;
|
||||
sensorsHealthy @19 :Bool = true;
|
||||
deviceStable @20 :Bool = true;
|
||||
secondsSinceReset @21 :Float64;
|
||||
excessiveResets @22 :Bool;
|
||||
timeToFirstFix @23 :Float32;
|
||||
debugState @24 :VectorSample;
|
||||
gpsWeek @25 :Int32;
|
||||
gpsTimeOfWeek @26 :Float64;
|
||||
|
||||
enum SolutionState {
|
||||
booting @0;
|
||||
coarse @1;
|
||||
ready @2;
|
||||
}
|
||||
|
||||
struct VectorSample {
|
||||
values @0 :List(Float64);
|
||||
deviations @1 :List(Float64);
|
||||
isValid @2 :Bool;
|
||||
}
|
||||
}
|
||||
|
||||
enum IQTurnSignalDirection {
|
||||
none @0;
|
||||
turnLeft @1;
|
||||
turnRight @2;
|
||||
}
|
||||
|
||||
enum IQLateralEdgeBlock {
|
||||
none @0;
|
||||
left @1;
|
||||
right @2;
|
||||
}
|
||||
|
||||
struct IQDriveModelData @0xcdf0f7f14f46cb86 {
|
||||
turnSignalDirection @0 :IQTurnSignalDirection;
|
||||
lateralEdgeBlock @1 :IQLateralEdgeBlock;
|
||||
}
|
||||
|
||||
enum NavDirection {
|
||||
none @0;
|
||||
left @1;
|
||||
right @2;
|
||||
}
|
||||
|
||||
struct IQNavState @0xaae9afb364368cd9 {
|
||||
# Navigation state and guidance information
|
||||
active @0 :Bool; # Whether navigation is currently active
|
||||
destinationValid @1 :Bool; # Whether we have a valid destination
|
||||
|
||||
# Current position and route info
|
||||
distanceRemaining @2 :Float32; # Total distance remaining to destination (m)
|
||||
timeRemaining @3 :Float32; # Estimated time remaining to destination (s)
|
||||
currentSegmentIndex @4 :UInt32; # Index of current route segment
|
||||
totalSegments @5 :UInt32; # Total number of segments in route
|
||||
|
||||
# Next maneuver information
|
||||
nextManeuverValid @6 :Bool; # Whether next maneuver data is valid
|
||||
nextManeuverDistance @7 :Float32; # Distance to next maneuver (m)
|
||||
nextManeuverType @8 :ManeuverType; # Type of next maneuver
|
||||
nextManeuverDirection @9 :IQTurnSignalDirection; # Direction for next maneuver
|
||||
nextManeuverDescription @10 :Text; # Human-readable maneuver description
|
||||
nextManeuverAngle @21 :Float32; # Turn angle in degrees (for angle-adaptive enforcement)
|
||||
|
||||
# Turn desire control for lateral planning
|
||||
shouldSendTurnDesire @11 :Bool; # Whether to send turn desires to model
|
||||
turnDesireDirection @12 :IQTurnSignalDirection; # Direction for turn desire
|
||||
|
||||
# Lane change desire control for highway exits/ramps (>45 mph)
|
||||
shouldSendLaneChangeDesire @22 :Bool; # Whether to send lane change desires for high-speed exits
|
||||
laneChangeDesireDirection @23 :IQTurnSignalDirection; # Direction for lane change desire
|
||||
|
||||
# Speed guidance for longitudinal planning
|
||||
targetSpeed @13 :Float32; # Target speed for upcoming maneuver (m/s)
|
||||
targetSpeedValid @14 :Bool; # Whether target speed is valid
|
||||
|
||||
# Destination info
|
||||
destinationLatitude @15 :Float64;
|
||||
destinationLongitude @16 :Float64;
|
||||
destinationName @17 :Text;
|
||||
|
||||
# Lane positioning guidance for exits/turns
|
||||
shouldSendLanePositioning @18 :Bool; # Whether to send lane positioning desires (keepLeft/keepRight)
|
||||
lanePositioningDirection @19 :IQTurnSignalDirection; # Direction for lane positioning
|
||||
|
||||
# Lane tracking debug info (model vs GPS comparison for testing)
|
||||
laneDebugInfo @20 :LaneDebugInfo;
|
||||
|
||||
# Navigation-specific UI event fields (separate from model/desire system)
|
||||
navTurnDesireDirection @24 :NavDirection; # For "Navigation: Turning Left/Right" UI alerts
|
||||
navLaneChangeDesireDirection @25 :NavDirection; # For "Navigation: Initiating Lane Change" UI alerts
|
||||
navLanePositioningDirection @26 :NavDirection; # For future lane positioning UI alerts
|
||||
navSpeedTargetActive @27 :Bool; # For "Navigation: Reducing Speed" UI alert
|
||||
|
||||
# Second next maneuver information (for "Then" section in navigation banner UI)
|
||||
secondNextManeuverValid @28 :Bool; # Whether second next maneuver data is valid
|
||||
secondNextManeuverType @29 :ManeuverType; # Type of second next maneuver
|
||||
secondNextManeuverDirection @30 :NavDirection; # Direction for second next maneuver
|
||||
secondNextManeuverDistance @31 :Float32; # Distance to second next maneuver (m)
|
||||
nextManeuverModifier @32 :Text; # Raw Mapbox modifier for next maneuver (slight_left, sharp_right, etc.)
|
||||
secondNextManeuverModifier @33 :Text; # Raw Mapbox modifier for second next maneuver
|
||||
longitudinalProvider @34 :LongitudinalProvider; # Active source of nav longitudinal influence
|
||||
longitudinalState @35 :LongitudinalState; # Current nav longitudinal state machine output
|
||||
longitudinalEngaged @36 :Bool; # Whether nav longitudinal influence is currently active
|
||||
speedTarget @37 :Float32; # Nav longitudinal speed target (m/s)
|
||||
accelTarget @38 :Float32; # Nav longitudinal accel target (m/s^2)
|
||||
valid @39 :Bool; # Whether nav longitudinal target is valid
|
||||
maneuverPhase @40 :ManeuverPhase; # IQ nav maneuver phase for desire/FSM integration
|
||||
maneuverDirection @41 :NavDirection; # Direction of active IQ nav maneuver phase
|
||||
command @42 :Command; # Short-lived IQ nav command trigger for desire/FSM integration
|
||||
commandDirection @43 :NavDirection; # Direction associated with current IQ nav command
|
||||
commandIndex @44 :UInt32; # Monotonic counter incremented when nav emits a new IQ command
|
||||
cameraValid @45 :Bool; # Whether a speed camera ahead is currently detected
|
||||
cameraType @46 :CameraType; # Type of the upcoming speed camera
|
||||
cameraDistance @47 :Float32; # Distance to the upcoming camera (m)
|
||||
cameraSpeedLimit @48 :Float32; # Enforced speed limit at the camera (m/s)
|
||||
timeRemainingTypical @49 :Float32; # Remaining time under typical traffic conditions (s)
|
||||
trafficDelay @50 :Float32; # Remaining delay versus typical conditions (s)
|
||||
trafficDataAge @51 :Float32; # Age of the active traffic snapshot (s)
|
||||
trafficDataValid @52 :Bool; # Whether traffic metadata is fresh enough to trust
|
||||
trafficClosureCount @53 :UInt16; # Closures reported along the active route
|
||||
trafficRouteId @54 :Text; # Stable identity of the active traffic route
|
||||
trafficSource @55 :Text; # Routing provider that supplied traffic metadata
|
||||
trafficTimeRemaining @56 :Float32; # Remaining time from the latest traffic snapshot (s)
|
||||
trafficDataTimestamp @57 :Float64; # UTC acquisition time of the active traffic snapshot
|
||||
cameraAlertId @58 :Text;
|
||||
cameraChime @59 :Bool;
|
||||
cameraTrusted @60 :Bool;
|
||||
cameraSourceAge @61 :Float32;
|
||||
mapboxSpeedLimit @62 :Float32;
|
||||
mapboxSpeedLimitValid @63 :Bool;
|
||||
|
||||
enum CameraType {
|
||||
none @0;
|
||||
fixedSpeed @1; # Fixed speed camera
|
||||
mobileSpeed @2; # Mobile/handheld speed camera
|
||||
sectionStart @3; # Average-speed (section) zone start
|
||||
sectionEnd @4; # Average-speed (section) zone end
|
||||
averageZone @5; # Within an average-speed zone
|
||||
redLight @6; # Red-light camera
|
||||
bump @7; # Speed bump
|
||||
alpr @8; # ALPR / Flock surveillance camera (DeFlock/OSM surveillance:type=ALPR)
|
||||
police @9;
|
||||
}
|
||||
|
||||
enum ManeuverType {
|
||||
none @0;
|
||||
turn @1; # Regular turn at intersection
|
||||
exit @2; # Highway exit
|
||||
merge @3; # Merge onto highway
|
||||
fork @4; # Road fork
|
||||
continueStraight @5; # Continue straight
|
||||
arrive @6; # Arrive at destination
|
||||
roundabout @7; # Enter/exit roundabout
|
||||
}
|
||||
|
||||
enum LongitudinalProvider {
|
||||
none @0;
|
||||
route @1;
|
||||
mapbox @2;
|
||||
vision @3;
|
||||
offlineOsm @4;
|
||||
camera @5;
|
||||
}
|
||||
|
||||
enum LongitudinalState {
|
||||
disabled @0;
|
||||
enabled @1;
|
||||
entering @2;
|
||||
active @3;
|
||||
leaving @4;
|
||||
overriding @5;
|
||||
}
|
||||
|
||||
enum ManeuverPhase {
|
||||
none @0;
|
||||
turnPrepare @1;
|
||||
turnActive @2;
|
||||
highwayPrepare @3;
|
||||
highwayCommit @4;
|
||||
}
|
||||
|
||||
enum Command {
|
||||
none @0;
|
||||
laneChange @1;
|
||||
}
|
||||
|
||||
struct LaneDebugInfo {
|
||||
modelLane @0 :Text; # "left", "middle", "right", "unknown"
|
||||
modelConfidence @1 :Float32; # 0.0-1.0
|
||||
gpsLane @2 :Text; # "left", "middle", "right", "unknown"
|
||||
gpsConfidence @3 :Float32; # 0.0-1.0
|
||||
lateralOffset @4 :Float32; # Meters from road centerline (negative=left, positive=right)
|
||||
gpsAccuracy @5 :Float32; # GPS position accuracy (meters)
|
||||
agreement @6 :Bool; # Do model and GPS agree?
|
||||
}
|
||||
}
|
||||
|
||||
struct IQRoadIncidentFeed @0xf2b94d5ed8504f81 {
|
||||
valid @0 :Bool;
|
||||
status @1 :Status;
|
||||
fetchedMonoTime @2 :UInt64;
|
||||
fetchedWallTime @3 :Float64;
|
||||
reports @4 :List(Report);
|
||||
|
||||
enum Status {
|
||||
idle @0;
|
||||
ok @1;
|
||||
missingKey @2;
|
||||
noLocation @3;
|
||||
networkError @4;
|
||||
invalidResponse @5;
|
||||
}
|
||||
|
||||
struct Report {
|
||||
id @0 :Text;
|
||||
latitude @1 :Float64;
|
||||
longitude @2 :Float64;
|
||||
publishedAt @3 :Float64;
|
||||
street @4 :Text;
|
||||
city @5 :Text;
|
||||
headingValid @6 :Bool;
|
||||
heading @7 :Float32;
|
||||
}
|
||||
}
|
||||
|
||||
struct IQNavRenderState @0xf6e4a54ca6c92276 {
|
||||
active @0 :Bool;
|
||||
currentLatitude @1 :Float64;
|
||||
currentLongitude @2 :Float64;
|
||||
bearingDeg @3 :Float32;
|
||||
routePolyline @4 :List(NavPoint);
|
||||
routePolylineSimplified @5 :List(NavPoint);
|
||||
nextManeuverLatitude @6 :Float64;
|
||||
nextManeuverLongitude @7 :Float64;
|
||||
nextManeuverType @8 :IQNavState.ManeuverType;
|
||||
nextManeuverDirection @9 :NavDirection;
|
||||
nextManeuverDistance @10 :Float32;
|
||||
destinationLatitude @11 :Float64;
|
||||
destinationLongitude @12 :Float64;
|
||||
zoomHint @13 :Float32;
|
||||
|
||||
struct NavPoint {
|
||||
latitude @0 :Float64;
|
||||
longitude @1 :Float64;
|
||||
}
|
||||
}
|
||||
|
||||
struct IQPerfTrace @0xa8e2e4a8c6f4d3b2 {
|
||||
process @0 :Text;
|
||||
eventClass @1 :Text;
|
||||
severity @2 :Severity;
|
||||
frameId @3 :UInt32;
|
||||
totalTimeUs @4 :UInt32;
|
||||
rkRemainingUs @5 :Int32;
|
||||
batchSize @6 :UInt16;
|
||||
droppedFrames @7 :UInt16;
|
||||
backlog @8 :UInt16;
|
||||
flags @9 :UInt32;
|
||||
samples @10 :List(Sample);
|
||||
missingServices @11 :List(Text);
|
||||
topProcesses @12 :List(Text);
|
||||
detail @13 :Text;
|
||||
|
||||
enum Severity {
|
||||
info @0;
|
||||
warning @1;
|
||||
error @2;
|
||||
critical @3;
|
||||
}
|
||||
|
||||
struct Sample {
|
||||
frameId @0 :UInt32;
|
||||
loopDtUs @1 :UInt32;
|
||||
updateUs @2 :UInt32;
|
||||
stateControlUs @3 :UInt32;
|
||||
publishUs @4 :UInt32;
|
||||
tailWorkUs @5 :UInt32;
|
||||
rkRemainingUs @6 :Int32;
|
||||
staleCarControlUs @7 :UInt32;
|
||||
staleCarControlFrames @8 :UInt16;
|
||||
sendcanGapUs @9 :UInt32;
|
||||
modelEvalUs @10 :UInt32;
|
||||
modelDroppedFrames @11 :UInt16;
|
||||
modelBacklog @12 :UInt16;
|
||||
textureDecodeUs @13 :UInt32;
|
||||
textureUploadUs @14 :UInt32;
|
||||
textureUnloadUs @15 :UInt32;
|
||||
texturePruneUs @16 :UInt32;
|
||||
textureConsumeUs @17 :UInt32;
|
||||
textureBatchSize @18 :UInt16;
|
||||
textureBytes @19 :UInt32;
|
||||
textureCacheBefore @20 :UInt16;
|
||||
textureCacheAfter @21 :UInt16;
|
||||
textureUnloaded @22 :UInt16;
|
||||
memoryUsagePercent @23 :UInt16;
|
||||
gpuUsagePercent @24 :UInt16;
|
||||
cpuUsagePercent @25 :UInt16;
|
||||
flags @26 :UInt32;
|
||||
}
|
||||
}
|
||||
|
||||
struct IQConstructionZone @0xb54d6e69da4ddc9f {
|
||||
state @0 :State;
|
||||
active @1 :Bool;
|
||||
orangeFraction @2 :Float32; # hot-orange fraction of ROI chroma samples this analysis
|
||||
secondsSinceHit @3 :Float32; # time since last frame that passed the hit threshold
|
||||
|
||||
enum State {
|
||||
inactive @0;
|
||||
pending @1; # hits seen, not yet enough persistence to enter
|
||||
active @2;
|
||||
}
|
||||
}
|
||||
|
||||
struct IQVehicleTracks @0xb877ef4b20a4ae22 {
|
||||
frameId @0 :UInt32;
|
||||
frameWidth @1 :UInt16;
|
||||
frameHeight @2 :UInt16;
|
||||
processingMs @3 :Float32;
|
||||
tracks @4 :List(Track);
|
||||
wide @5 :Bool;
|
||||
|
||||
struct Track {
|
||||
# box corners normalized [0,1] in the road-camera frame
|
||||
x1 @0 :Float32;
|
||||
y1 @1 :Float32;
|
||||
x2 @2 :Float32;
|
||||
y2 @3 :Float32;
|
||||
prob @4 :Float32;
|
||||
label @5 :Label;
|
||||
|
||||
enum Label {
|
||||
car @0;
|
||||
motorcycle @1;
|
||||
bus @2;
|
||||
truck @3;
|
||||
person @4;
|
||||
bicycle @5;
|
||||
stopSign @6;
|
||||
trafficLight @7;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct IQEnvironment @0xfd960244a79e2804 {
|
||||
frameId @0 :UInt32;
|
||||
offloaded @1 :Bool;
|
||||
modelValid @2 :Bool;
|
||||
objects @3 :List(Object);
|
||||
|
||||
struct Object {
|
||||
x @0 :Float32;
|
||||
y @1 :Float32;
|
||||
z @2 :Float32;
|
||||
width @3 :Float32;
|
||||
height @4 :Float32;
|
||||
length @5 :Float32;
|
||||
prob @6 :Float32;
|
||||
label @7 :Label;
|
||||
|
||||
enum Label {
|
||||
car @0;
|
||||
motorcycle @1;
|
||||
bus @2;
|
||||
truck @3;
|
||||
person @4;
|
||||
bicycle @5;
|
||||
stopSign @6;
|
||||
trafficLight @7;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct CustomReserved14 @0xa6e5a1ce8ca5258e {
|
||||
}
|
||||
|
||||
struct CustomReserved15 @0xdb8042111e62cc87 {
|
||||
}
|
||||
|
||||
struct CustomReserved16 @0xf59900ccf47b651a {
|
||||
}
|
||||
|
||||
# pfeiferj/mapd v2 output schema (struct ids must match the mapd binary exactly).
|
||||
struct MapdDownloadLocationDetails @0xff889853e7b0987f {
|
||||
location @0 :Text;
|
||||
totalFiles @1 :UInt32;
|
||||
downloadedFiles @2 :UInt32;
|
||||
}
|
||||
|
||||
struct MapdDownloadProgress @0xfaa35dcac85073a2 {
|
||||
active @0 :Bool;
|
||||
cancelled @1 :Bool;
|
||||
totalFiles @2 :UInt32;
|
||||
downloadedFiles @3 :UInt32;
|
||||
locations @4 :List(Text);
|
||||
locationDetails @5 :List(MapdDownloadLocationDetails);
|
||||
}
|
||||
|
||||
struct MapdPathPoint @0xd6f78acca1bc3939 {
|
||||
latitude @0 :Float64;
|
||||
longitude @1 :Float64;
|
||||
curvature @2 :Float32;
|
||||
targetVelocity @3 :Float32;
|
||||
}
|
||||
|
||||
enum MapdRoadContext {
|
||||
freeway @0;
|
||||
city @1;
|
||||
unknown @2;
|
||||
}
|
||||
|
||||
enum MapdWaySelectionType {
|
||||
current @0;
|
||||
predicted @1;
|
||||
possible @2;
|
||||
extended @3;
|
||||
fail @4;
|
||||
}
|
||||
|
||||
enum MapdInputType {
|
||||
download @0;
|
||||
setTargetLateralAccel @1;
|
||||
setSpeedLimitOffset @2;
|
||||
setSpeedLimitControl @3;
|
||||
setMapCurveSpeedControl @4;
|
||||
setVisionCurveSpeedControl @5;
|
||||
setLogLevel @6;
|
||||
setVisionCurveTargetLatA @7;
|
||||
setVisionCurveMinTargetV @8;
|
||||
reloadSettings @9;
|
||||
saveSettings @10;
|
||||
setEnableSpeed @11;
|
||||
setVisionCurveUseEnableSpeed @12;
|
||||
setMapCurveUseEnableSpeed @13;
|
||||
setSpeedLimitUseEnableSpeed @14;
|
||||
setHoldLastSeenSpeedLimit @15;
|
||||
setTargetSpeedJerk @16;
|
||||
setTargetSpeedAccel @17;
|
||||
setTargetSpeedTimeOffset @18;
|
||||
setDefaultLaneWidth @19;
|
||||
setMapCurveTargetLatA @20;
|
||||
loadDefaultSettings @21;
|
||||
loadRecommendedSettings @22;
|
||||
setSlowDownForNextSpeedLimit @23;
|
||||
setSpeedUpForNextSpeedLimit @24;
|
||||
setHoldSpeedLimitWhileChangingSetSpeed @25;
|
||||
loadPersistentSettings @26;
|
||||
cancelDownload @27;
|
||||
setLogJson @28;
|
||||
setLogSource @29;
|
||||
setExternalSpeedLimitControl @30;
|
||||
setExternalSpeedLimit @31;
|
||||
setSpeedLimitPriority @32;
|
||||
setSpeedLimitChangeRequiresAccept @33;
|
||||
acceptSpeedLimit @34;
|
||||
setPressGasToAcceptSpeedLimit @35;
|
||||
setAdjustSetSpeedToAcceptSpeedLimit @36;
|
||||
setAcceptSpeedLimitTimeout @37;
|
||||
setPressGasToOverrideSpeedLimit @38;
|
||||
}
|
||||
|
||||
struct MapdExtendedOut @0x8d12e6a08c60a1a1 {
|
||||
downloadProgress @0 :MapdDownloadProgress;
|
||||
settings @1 :Text;
|
||||
path @2 :List(MapdPathPoint);
|
||||
}
|
||||
|
||||
struct MapdIn @0xb9ceb3ea89cecc23 {
|
||||
type @0 :MapdInputType;
|
||||
float @1 :Float32;
|
||||
str @2 :Text;
|
||||
bool @3 :Bool;
|
||||
}
|
||||
|
||||
struct MapdOut @0xd615f9fe1608a3c0 {
|
||||
wayName @0 :Text;
|
||||
wayRef @1 :Text;
|
||||
roadName @2 :Text;
|
||||
speedLimit @3 :Float32;
|
||||
nextSpeedLimit @4 :Float32;
|
||||
nextSpeedLimitDistance @5 :Float32;
|
||||
hazard @6 :Text;
|
||||
nextHazard @7 :Text;
|
||||
nextHazardDistance @8 :Float32;
|
||||
advisorySpeed @9 :Float32;
|
||||
nextAdvisorySpeed @10 :Float32;
|
||||
nextAdvisorySpeedDistance @11 :Float32;
|
||||
oneWay @12 :Bool;
|
||||
lanes @13 :UInt8;
|
||||
tileLoaded @14 :Bool;
|
||||
speedLimitSuggestedSpeed @15 :Float32;
|
||||
suggestedSpeed @16 :Float32;
|
||||
estimatedRoadWidth @17 :Float32;
|
||||
roadContext @18 :MapdRoadContext;
|
||||
distanceFromWayCenter @19 :Float32;
|
||||
visionCurveSpeed @20 :Float32;
|
||||
mapCurveSpeed @21 :Float32;
|
||||
waySelectionType @22 :MapdWaySelectionType;
|
||||
speedLimitAccepted @23 :Bool;
|
||||
}
|
||||
Reference in New Issue
Block a user