diff --git a/car.capnp b/car.capnp index fd781f9b14..e6c9df5dd0 100644 --- a/car.capnp +++ b/car.capnp @@ -324,6 +324,7 @@ struct CarParams { lateralTuning :union { pid @26 :LateralPIDTuning; indi @27 :LateralINDITuning; + lqr @40 :LateralLQRTuning; } steerLimitAlert @28 :Bool; @@ -339,6 +340,7 @@ struct CarParams { steerActuatorDelay @36 :Float32; # Steering wheel actuator delay in seconds openpilotLongitudinalControl @37 :Bool; # is openpilot doing the longitudinal control? carVin @38 :Text; # VIN number queried during fingerprinting + isPandaBlack @39: Bool; struct LateralPIDTuning { kpBP @0 :List(Float32); @@ -365,6 +367,20 @@ struct CarParams { actuatorEffectiveness @3 :Float32; } + struct LateralLQRTuning { + scale @0 :Float32; + ki @1 :Float32; + dcGain @2 :Float32; + + # State space system + a @3 :List(Float32); + b @4 :List(Float32); + c @5 :List(Float32); + + k @6 :List(Float32); # LQR gain + l @7 :List(Float32); # Kalman gain + } + enum SafetyModel { # does NOT match board setting diff --git a/log.capnp b/log.capnp index 3dbbc516d3..5f76cbd742 100644 --- a/log.capnp +++ b/log.capnp @@ -301,7 +301,7 @@ struct HealthData { controlsAllowed @3 :Bool; gasInterceptorDetected @4 :Bool; startedSignalDetectedDeprecated @5 :Bool; - isGreyPanda @6 :Bool; + hasGps @6 :Bool; canSendErrs @7 :UInt32; canFwdErrs @8 :UInt32; gmlanSendErrs @9 :UInt32; @@ -373,6 +373,8 @@ struct LiveCalibrationData { # view_frame_from_road_frame # ui's is inversed needs new extrinsicMatrix @4 :List(Float32); + # the direction of travel vector in device frame + rpyCalib @7 :List(Float32); } struct LiveTracks { @@ -448,9 +450,12 @@ struct ControlsState @0x97ff69c53601abf1 { vCurvature @46 :Float32; decelForTurn @47 :Bool; + decelForModel @54 :Bool; + lateralControlState :union { indiState @52 :LateralINDIState; pidState @53 :LateralPIDState; + lqrState @55 :LateralLQRState; } enum OpenpilotState @0xdbe58b96d2d1ac61 { @@ -505,6 +510,13 @@ struct ControlsState @0x97ff69c53601abf1 { saturated @8 :Bool; } + struct LateralLQRState { + active @0 :Bool; + steerAngle @1 :Float32; + i @2 :Float32; + output @3 :Float32; + } + } struct LiveEventData { @@ -660,6 +672,7 @@ struct Plan { mpc1 @1; mpc2 @2; mpc3 @3; + model @4; } } @@ -1661,8 +1674,13 @@ struct OrbKeyFrame { struct DriverMonitoring { frameId @0 :UInt32; - descriptor @1 :List(Float32); - std @2 :Float32; + descriptorDEPRECATED @1 :List(Float32); + stdDEPRECATED @2 :Float32; + faceOrientation @3 :List(Float32); + facePosition @4 :List(Float32); + faceProb @5 :Float32; + leftEyeProb @6 :Float32; + rightEyeProb @7 :Float32; } struct Boot {