diff --git a/opendbc_repo/opendbc/car/car.capnp b/opendbc_repo/opendbc/car/car.capnp index a0d3fad8a4..bf205202d1 100644 --- a/opendbc_repo/opendbc/car/car.capnp +++ b/opendbc_repo/opendbc/car/car.capnp @@ -375,6 +375,17 @@ struct CarControl { torqueOutputCan @8: Float32; # value sent over can to the car speed @6: Float32; # m/s lateralControlMode @9: LateralControlMode; + steeringLimitInfo @10 :SteeringLimitInfo; + + struct SteeringLimitInfo { + valid @0 :Bool; + modelLimitErrorDeg @1 :Float32; + resumeLimitErrorDeg @2 :Float32; + cooperativeLimitErrorDeg @3 :Float32; + cooperativeOffsetDeg @4 :Float32; + monoTime @5 :UInt64; + combinedLimitErrorDeg @6 :Float32; + } enum LongControlState @0xe40f3a917d908282{ off @0; diff --git a/opendbc_repo/opendbc/car/tesla/carcontroller.py b/opendbc_repo/opendbc/car/tesla/carcontroller.py index 3320b9c5b9..d4aab08077 100644 --- a/opendbc_repo/opendbc/car/tesla/carcontroller.py +++ b/opendbc_repo/opendbc/car/tesla/carcontroller.py @@ -24,6 +24,7 @@ class CarController(CarControllerBase): self.coop_enabled = CP.carFingerprint == CAR.TESLA_MODEL_3 and any( config.safetyParam & TeslaSafetyFlags.COOP_STEERING.value for config in CP.safetyConfigs ) + self._clear_steering_limit_info() self.packer = CANPacker(dbc_names[Bus.party]) self.tesla_can = TeslaCAN(self.packer) self.preap_long = None @@ -39,8 +40,28 @@ class CarController(CarControllerBase): from opendbc.car.tesla.interface import CarInterface self.VM = VehicleModel(CarInterface.get_non_essential_params(CAR.TESLA_MODEL_S_PREAP)) + def _clear_steering_limit_info(self): + self.steering_limit_info_valid = False + self.model_limit_error_deg = 0.0 + self.resume_limit_error_deg = 0.0 + self.cooperative_limit_error_deg = 0.0 + self.cooperative_offset_deg = 0.0 + self.steering_limit_mono_time = 0 + self.combined_limit_error_deg = 0.0 + + def _write_steering_limit_info(self, actuators): + info = actuators.steeringLimitInfo + info.valid = self.steering_limit_info_valid + info.modelLimitErrorDeg = self.model_limit_error_deg + info.resumeLimitErrorDeg = self.resume_limit_error_deg + info.cooperativeLimitErrorDeg = self.cooperative_limit_error_deg + info.cooperativeOffsetDeg = self.cooperative_offset_deg + info.monoTime = self.steering_limit_mono_time + info.combinedLimitErrorDeg = self.combined_limit_error_deg + def update(self, CC, CS, now_nanos, starpilot_toggles): if self.CP.carFingerprint == CAR.TESLA_MODEL_S_PREAP: + self._clear_steering_limit_info() return self._update_preap(CC, CS) actuators = CC.actuators @@ -48,8 +69,12 @@ class CarController(CarControllerBase): # Preserve the stock controller path unless cooperative steering is explicitly enabled. lat_active = CC.latActive and (not CS.out.steeringDisengage if self.coop_enabled else CS.hands_on_level < 3) + if not (self.coop_enabled and lat_active): + self._clear_steering_limit_info() if self.frame % 2 == 0: + requested_angle = actuators.steeringAngleDeg + # Angular rate limit based on speed self.apply_angle_last = apply_steer_angle_limits_vm(actuators.steeringAngleDeg, self.apply_angle_last, CS.out.vEgoRaw, CS.out.steeringAngleDeg, lat_active, CarControllerParams, self.VM) @@ -57,6 +82,27 @@ class CarController(CarControllerBase): self.apply_angle_command_last, lat_active = self.coop_steer.update( self.apply_angle_last, lat_active, self.coop_enabled, CS, self.VM, ) + + if self.coop_enabled and lat_active: + model_limit_error_deg = abs(requested_angle - self.apply_angle_last) + resume_limit_error_deg = self.coop_steer.resume_limit_error_deg + cooperative_limit_error_deg = self.coop_steer.cooperative_limit_error_deg + cooperative_offset_deg = self.coop_steer.cooperative_offset_deg + combined_limit_error_deg = abs(requested_angle + cooperative_offset_deg - self.apply_angle_command_last) + limit_values = (model_limit_error_deg, resume_limit_error_deg, cooperative_limit_error_deg, + cooperative_offset_deg, combined_limit_error_deg) + + if all(np.isfinite(value) for value in limit_values): + self.steering_limit_info_valid = True + self.model_limit_error_deg = model_limit_error_deg + self.resume_limit_error_deg = resume_limit_error_deg + self.cooperative_limit_error_deg = cooperative_limit_error_deg + self.cooperative_offset_deg = cooperative_offset_deg + self.steering_limit_mono_time = now_nanos + self.combined_limit_error_deg = combined_limit_error_deg + else: + self._clear_steering_limit_info() + can_sends.append(self.tesla_can.create_steering_control(self.apply_angle_command_last, lat_active)) if self.frame % 10 == 0: @@ -79,6 +125,7 @@ class CarController(CarControllerBase): # TODO: HUD control new_actuators = actuators.as_builder() new_actuators.steeringAngleDeg = self.apply_angle_command_last + self._write_steering_limit_info(new_actuators) self.frame += 1 return new_actuators, can_sends @@ -121,6 +168,7 @@ class CarController(CarControllerBase): new_actuators = actuators.as_builder() new_actuators.steeringAngleDeg = self.apply_angle_last + self._write_steering_limit_info(new_actuators) self.frame += 1 return new_actuators, can_sends diff --git a/opendbc_repo/opendbc/car/tesla/coop_steering.py b/opendbc_repo/opendbc/car/tesla/coop_steering.py index d8625321a9..4c58889175 100644 --- a/opendbc_repo/opendbc/car/tesla/coop_steering.py +++ b/opendbc_repo/opendbc/car/tesla/coop_steering.py @@ -62,6 +62,9 @@ class CooperativeSteeringController: self.angle_override = 0.0 self.resume_rate_limiter_delta = SteerRateLimiter() self.resume_rate_limiter = SteerRateLimiter() + self.resume_limit_error_deg = 0.0 + self.cooperative_limit_error_deg = 0.0 + self.cooperative_offset_deg = 0.0 def reset_override_state(self, apply_angle: float) -> None: self.apply_angle_last = apply_angle @@ -105,19 +108,25 @@ class CooperativeSteeringController: return self.resume_rate_limiter.update(apply_angle, angle_rate_delta) def update(self, apply_angle: float, lat_active: bool, enabled: bool, CS, VM: VehicleModel) -> tuple[float, bool]: + self.resume_limit_error_deg = 0.0 + self.cooperative_limit_error_deg = 0.0 + self.cooperative_offset_deg = 0.0 if not enabled: self.reset_resume_state(apply_angle) self.reset_override_state(apply_angle) return apply_angle, lat_active + requested_angle = apply_angle apply_angle = self.apply_resume_rate_limit(lat_active, apply_angle) + self.resume_limit_error_deg = abs(requested_angle - apply_angle) if not lat_active: self.reset_override_state(apply_angle) return apply_angle, False apply_angle_delta = apply_angle - self.apply_angle_last self.apply_angle_last = apply_angle - apply_angle += self.update_override_angle(apply_angle_delta, CS.out.steeringTorque, CS.out.vEgo, VM) + self.cooperative_offset_deg = self.update_override_angle(apply_angle_delta, CS.out.steeringTorque, CS.out.vEgo, VM) + apply_angle += self.cooperative_offset_deg limited_angle = apply_steer_angle_limits_vm( apply_angle, @@ -129,5 +138,6 @@ class CooperativeSteeringController: VM, ) self.coop_apply_angle_last = limited_angle + self.cooperative_limit_error_deg = abs(apply_angle - limited_angle) self.unwind_override_angle(apply_angle - limited_angle) return limited_angle, True diff --git a/opendbc_repo/opendbc/car/tesla/tests/fixtures/coop_steering_baseline_a80064be.json b/opendbc_repo/opendbc/car/tesla/tests/fixtures/coop_steering_baseline_a80064be.json new file mode 100644 index 0000000000..26542da2e8 --- /dev/null +++ b/opendbc_repo/opendbc/car/tesla/tests/fixtures/coop_steering_baseline_a80064be.json @@ -0,0 +1 @@ +{"metadata":{"schemaVersion":1,"baselineSha":"a80064be4fdf4b8765a5e9dec44d8a5c266f48a8","baselineSourceSha256":{"opendbc_repo/opendbc/car/tesla/coop_steering.py":"9c9d60bbfae2aaa0d8c1fca203a9fa19a14a19feef5aa89e85ecaa6f6502a9f0","opendbc_repo/opendbc/car/tesla/carcontroller.py":"1ef3cf646bc4b3c398bd12010e624b90e083426152d632fafb5b2e93fd3d8661"},"frameCount":386},"frames":[{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1000000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fff400a",0],[637,"010080",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1010000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1020000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fff410b",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1030000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1040000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fff420c",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1050000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1060000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fff430d",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1070000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1080000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fff440e",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1090000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1100000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.7166006565093994,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3ff84508",0],[637,"010181",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1110000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.7166006565093994,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1120000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":1.4332013130187988,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3ff14602",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1130000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":1.4332013130187988,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1140000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":2.074341297149658,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3feb47fd",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1150000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":2.074341297149658,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1160000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":2.554945945739746,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fe648f9",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1170000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":2.554945945739746,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1180000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":2.9152116775512695,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fe249f6",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1190000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":2.9152116775512695,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1200000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.185270309448242,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fe04af5",0],[637,"010282",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1210000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.185270309448242,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1220000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.387708902359009,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fde4bf4",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1230000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.387708902359009,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1240000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.539458751678467,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fdc4cf3",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1250000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.539458751678467,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1260000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.653211832046509,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fdb4df3",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1270000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.653211832046509,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1280000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.7384822368621826,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fda4ef3",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1290000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.7384822368621826,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1300000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.8024017810821533,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd94ff3",0],[637,"010383",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1310000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.8024017810821533,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1320000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.8503165245056152,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd940e4",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1330000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.8503165245056152,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1340000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.8862338066101074,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd941e5",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1350000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.8862338066101074,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1360000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9131577014923096,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd842e5",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1370000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9131577014923096,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1380000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.933340072631836,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd843e6",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1390000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.933340072631836,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1400000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9484691619873047,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd844e7",0],[637,"010484",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1410000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9484691619873047,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1420000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9598100185394287,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd845e8",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1430000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9598100185394287,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1440000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.968311071395874,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd846e9",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1450000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.968311071395874,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1460000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9746837615966797,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd847ea",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1470000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9746837615966797,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1480000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9794604778289795,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd848eb",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1490000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9794604778289795,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1500000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.983041524887085,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd849ec",0],[637,"010585",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1510000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.983041524887085,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1520000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9857256412506104,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd84aed",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1530000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9857256412506104,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1540000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9877378940582275,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd84bee",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1550000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9877378940582275,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1560000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.989246129989624,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd84cef",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1570000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.989246129989624,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1580000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9903767108917236,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd84df0",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1590000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9903767108917236,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1600000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9912242889404297,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd84ef1",0],[637,"010686",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1610000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9912242889404297,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1620000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9918596744537354,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd84ff2",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1630000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9918596744537354,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1640000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.992335796356201,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd840e3",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1650000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.992335796356201,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1660000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.992692708969116,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd841e4",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1670000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.992692708969116,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1680000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9929604530334473,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd842e5",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1690000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9929604530334473,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1700000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9931609630584717,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd843e6",0],[637,"010787",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1710000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9931609630584717,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1720000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9933114051818848,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd844e7",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1730000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9933114051818848,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1740000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9934241771698,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd845e8",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1750000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9934241771698,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1760000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9935085773468018,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd846e9",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1770000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9935085773468018,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1780000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9935719966888428,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd847ea",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1790000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9935719966888428,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1800000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.993619441986084,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd848eb",0],[637,"010888",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1810000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.993619441986084,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1820000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.99365496635437,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd849ec",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1830000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.99365496635437,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1840000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9936816692352295,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd84aed",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1850000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9936816692352295,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1860000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.993701696395874,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd84bee",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1870000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.993701696395874,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1880000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9937167167663574,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fd84cef",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.9,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":true,"steeringDisengage":false,"nowNanos":1890000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.9937167167663574,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":1900000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.278388500213623,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fdf4df7",0],[637,"010989",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":1910000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":3.278388500213623,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":1920000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":2.512563705444336,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fe64eff",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":1930000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":2.512563705444336,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":1940000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":1.7053436040878296,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fee4f08",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":1950000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":1.7053436040878296,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":1960000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.8641897439956665,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3ff74002",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":1970000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.8641897439956665,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":1980000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-0.004781598690897226,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4000410d",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":1990000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-0.004781598690897226,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2000000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-0.896556556224823,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40084216",0],[637,"010a8a",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2010000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-0.896556556224823,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2020000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-1.8070248365402222,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40124321",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2030000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-1.8070248365402222,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2040000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-2.7328171730041504,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"401b442b",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2050000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-2.7328171730041504,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2060000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-3.6711714267730713,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40244535",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2070000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-3.6711714267730713,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2080000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-4.619823455810547,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"402e4640",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2090000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-4.619823455810547,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2100000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-5.5769171714782715,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4037474a",0],[637,"010b8b",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2110000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-5.5769171714782715,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2120000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-6.540931224822998,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40414855",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2130000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-6.540931224822998,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2140000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-7.510617733001709,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"404b4960",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2150000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-7.510617733001709,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2160000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.484954833984375,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40544a6a",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2170000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.484954833984375,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2180000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.030801773071289,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"405a4b71",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2190000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.030801773071289,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2200000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.016589164733887,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"405a4c72",0],[637,"010c8c",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2210000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.016589164733887,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2220000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.004938125610352,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"405a4d73",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2230000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.004938125610352,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2240000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.995387077331543,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594e73",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2250000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.995387077331543,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2260000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.987557411193848,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594f74",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2270000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.987557411193848,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2280000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.981139183044434,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594065",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2290000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.981139183044434,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2300000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.97587776184082,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594166",0],[637,"010d8d",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2310000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.97587776184082,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2320000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.971565246582031,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594267",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2330000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.971565246582031,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2340000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.968029022216797,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594368",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2350000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.968029022216797,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2360000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.965130805969238,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594469",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2370000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.965130805969238,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2380000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.96275520324707,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4059456a",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2390000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.96275520324707,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2400000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.960806846618652,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4059466b",0],[637,"010e8e",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2410000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.960806846618652,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2420000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.959210395812988,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4059476c",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2430000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.959210395812988,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2440000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.957901954650879,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4059486d",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2450000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.957901954650879,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2460000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.956829071044922,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4059496e",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2470000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.956829071044922,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2480000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.955948829650879,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594a6f",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2490000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.955948829650879,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2500000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.955227851867676,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594b70",0],[637,"010f8f",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2510000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.955227851867676,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2520000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.95463752746582,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594c71",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2530000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.95463752746582,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2540000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.954153060913086,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594d72",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2550000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.954153060913086,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2560000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.953755378723145,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594e73",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2570000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.953755378723145,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2580000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.95343017578125,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594f74",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2590000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.95343017578125,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2600000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.953163146972656,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594065",0],[637,"010080",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2610000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.953163146972656,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2620000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.952943801879883,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594166",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2630000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.952943801879883,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2640000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.952764511108398,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594267",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2650000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.952764511108398,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2660000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.952617645263672,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594368",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2670000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.952617645263672,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2680000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.952497482299805,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40594469",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2690000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.952497482299805,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2700000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.947983741760254,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40634574",0],[637,"010181",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2710000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.947983741760254,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2720000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-10.94347095489502,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"406d467f",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2730000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-10.94347095489502,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2740000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.938957214355469,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4077478a",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2750000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.938957214355469,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2760000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.934444427490234,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40814895",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2770000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.934444427490234,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2780000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-13.929930686950684,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"408b49a0",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2790000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-13.929930686950684,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2800000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.92541790008545,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40954aab",0],[637,"010282",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2810000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.92541790008545,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2820000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.848738670349121,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409e4bb5",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2830000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.848738670349121,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2840000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-16.60563850402832,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40a64cbe",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2850000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-16.60563850402832,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2860000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-17.226110458374023,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40ac4dc5",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2870000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-17.226110458374023,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2880000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-17.7347469329834,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40b14ecb",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2890000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-17.7347469329834,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2900000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-18.151704788208008,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40b54fd0",0],[637,"010383",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2910000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-18.151704788208008,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2920000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-18.49350929260254,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40b840c4",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2930000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-18.49350929260254,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2940000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-18.773704528808594,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40bb41c8",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2950000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-18.773704528808594,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2960000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.00339698791504,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40be42cc",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2970000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.00339698791504,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2980000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.191688537597656,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40bf43ce",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":2990000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.191688537597656,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3000000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.34604263305664,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c144d1",0],[637,"010484",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3010000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.34604263305664,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3020000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.472576141357422,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c245d3",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3030000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.472576141357422,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3040000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.57630157470703,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c346d5",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3050000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.57630157470703,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3060000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.661331176757812,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c447d7",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3070000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.661331176757812,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3080000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.731035232543945,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c548d9",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3090000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.731035232543945,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3100000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.788175582885742,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c549da",0],[637,"010585",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3110000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.788175582885742,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3120000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.83501625061035,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c64adc",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3130000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.83501625061035,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3140000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.8734130859375,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c64bdd",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3150000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.8734130859375,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3160000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.904891967773438,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c74cdf",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3170000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.904891967773438,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3180000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.930694580078125,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c74de0",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3190000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.930694580078125,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3200000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.951847076416016,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c74ee1",0],[637,"010686",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3210000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.951847076416016,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3220000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.969186782836914,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c74fe2",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3230000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.969186782836914,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3240000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.983402252197266,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c740d3",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3250000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.983402252197266,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3260000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.995054244995117,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c741d4",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3270000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.995054244995117,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3280000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-20.004606246948242,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40c842d6",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":-0.9,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3290000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-20.004606246948242,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3300000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.01243782043457,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40be43cd",0],[637,"010787",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3310000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-19.01243782043457,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3320000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-18.199100494384766,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40b544c5",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3330000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-18.199100494384766,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3340000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-17.53236198425293,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40af45c0",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3350000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-17.53236198425293,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3360000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-16.985797882080078,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40a946bb",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3370000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-16.985797882080078,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3380000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-16.537748336791992,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40a547b8",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3390000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-16.537748336791992,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3400000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-16.17045783996582,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40a148b5",0],[637,"010888",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3410000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-16.17045783996582,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3420000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.869368553161621,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409e49b3",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3430000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.869368553161621,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3440000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.622549057006836,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409c4ab2",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3450000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.622549057006836,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3460000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.42021656036377,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409a4bb1",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3470000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.42021656036377,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3480000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.254353523254395,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40984cb0",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3490000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.254353523254395,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3500000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.118386268615723,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40974db0",0],[637,"010989",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3510000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.118386268615723,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3520000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.006926536560059,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40964eb0",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3530000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-15.006926536560059,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3540000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.915555953979492,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40954fb0",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3550000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.915555953979492,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3560000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.840655326843262,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409440a0",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3570000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.840655326843262,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3580000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.779253959655762,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409341a0",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3590000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.779253959655762,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3600000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.728919982910156,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409342a1",0],[637,"010a8a",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3610000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.728919982910156,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3620000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.68765926361084,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409243a1",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3630000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.68765926361084,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3640000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.653834342956543,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409244a2",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3650000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.653834342956543,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3660000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.626107215881348,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409245a3",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3670000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.626107215881348,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3680000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.603377342224121,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409246a4",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3690000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.603377342224121,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3700000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.58474349975586,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409147a4",0],[637,"010b8b",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3710000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.58474349975586,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3720000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.569469451904297,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409148a5",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3730000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.569469451904297,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3740000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.556947708129883,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409149a6",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3750000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.556947708129883,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3760000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.546683311462402,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40914aa7",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3770000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.546683311462402,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3780000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.53826904296875,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40914ba8",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3790000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.53826904296875,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3800000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.531371116638184,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40914ca9",0],[637,"010c8c",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3810000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.531371116638184,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3820000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.525716781616211,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40914daa",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3830000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.525716781616211,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3840000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.521081924438477,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40914eab",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3850000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.521081924438477,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3860000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.517281532287598,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40914fac",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3870000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.517281532287598,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3880000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.514166831970215,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4091409d",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3890000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.514166831970215,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3900000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.511612892150879,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4091419e",0],[637,"010d8d",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3910000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.511612892150879,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3920000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.509520530700684,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4091429f",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3930000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.509520530700684,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3940000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.507803916931152,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409143a0",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3950000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.507803916931152,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3960000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.506397247314453,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409144a1",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3970000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.506397247314453,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3980000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.505244255065918,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409145a2",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":3990000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.505244255065918,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":4000000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.50429916381836,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409146a3",0],[637,"010e8e",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":4010000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.50429916381836,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":4020000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.503523826599121,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409147a4",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":4030000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.503523826599121,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":4040000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.502888679504395,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409148a5",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":4050000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.502888679504395,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":4060000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.502367973327637,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409149a6",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":4070000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.502367973327637,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":4080000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.501941680908203,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40914aa7",0]]},{"input":{"requestedAngleDeg":-14.5,"torqueNm":0.0,"speedMps":12.5,"measuredAngleDeg":-10.0,"latActive":true,"steeringDisengage":false,"nowNanos":4090000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.501941680908203,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4100000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.124519348144531,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"408d4ba4",0],[637,"010f8f",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4110000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.124519348144531,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4120000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-13.747097969055176,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40894ca1",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4130000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-13.747097969055176,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4140000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-13.369675636291504,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40854d9e",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4150000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-13.369675636291504,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4160000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.992254257202148,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40814e9b",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4170000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.992254257202148,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4180000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.614831924438477,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"407e4f99",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4190000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.614831924438477,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4200000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.237410545349121,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"407a4086",0],[637,"010080",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4210000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.237410545349121,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4220000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.85998821258545,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40764183",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4230000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.85998821258545,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4240000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.482566833496094,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40724280",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4250000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.482566833496094,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4260000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.105144500732422,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"406f437e",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4270000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.105144500732422,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4280000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-10.727723121643066,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"406b447b",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4290000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-10.727723121643066,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4300000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-10.350300788879395,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40674578",0],[637,"010181",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4310000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-10.350300788879395,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4320000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.972879409790039,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40634675",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4330000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.972879409790039,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4340000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.595457077026367,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"405f4772",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4350000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.595457077026367,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4360000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.218035697937012,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"405c4870",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4370000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.218035697937012,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4380000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.84061336517334,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4058496d",0]]},{"input":{"requestedAngleDeg":18.0,"torqueNm":1.5,"speedMps":22.0,"measuredAngleDeg":8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4390000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-8.84061336517334,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4400000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.218035697937012,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"405c4a72",0],[637,"010282",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4410000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.218035697937012,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4420000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.595457077026367,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"405f4b76",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4430000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.595457077026367,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4440000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.972879409790039,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40634c7b",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4450000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-9.972879409790039,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4460000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-10.350300788879395,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40674d80",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4470000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-10.350300788879395,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4480000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-10.727723121643066,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"406b4e85",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4490000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-10.727723121643066,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4500000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.105144500732422,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"406f4f8a",0],[637,"010383",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4510000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.105144500732422,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4520000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.482566833496094,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4072407e",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4530000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.482566833496094,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4540000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.85998821258545,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40764183",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4550000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-11.85998821258545,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4560000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.237410545349121,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"407a4288",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4570000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.237410545349121,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4580000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.614831924438477,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"407e438d",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4590000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.614831924438477,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4600000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.992254257202148,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40814491",0],[637,"010484",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4610000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-12.992254257202148,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4620000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-13.369675636291504,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"40854596",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4630000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-13.369675636291504,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4640000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-13.747097969055176,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"4089469b",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4650000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-13.747097969055176,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4660000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.124519348144531,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"408d47a0",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4670000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.124519348144531,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4680000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.501941680908203,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"409148a5",0]]},{"input":{"requestedAngleDeg":-18.0,"torqueNm":-1.5,"speedMps":22.0,"measuredAngleDeg":-8.0,"latActive":true,"steeringDisengage":false,"nowNanos":4690000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":-14.501941680908203,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":false,"steeringDisengage":false,"nowNanos":4700000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fff09d3",0],[637,"010585",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":false,"steeringDisengage":false,"nowNanos":4710000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":false,"steeringDisengage":false,"nowNanos":4720000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fff0ad4",0]]},{"input":{"requestedAngleDeg":0.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":0.0,"latActive":false,"steeringDisengage":false,"nowNanos":4730000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.0,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":4.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":2.0,"latActive":true,"steeringDisengage":false,"nowNanos":4740000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.11999999731779099,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3ffe4b14",0]]},{"input":{"requestedAngleDeg":4.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":2.0,"latActive":true,"steeringDisengage":false,"nowNanos":4750000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.11999999731779099,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":4.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":2.0,"latActive":true,"steeringDisengage":false,"nowNanos":4760000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.36000001430511475,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3ffc4c13",0]]},{"input":{"requestedAngleDeg":4.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":2.0,"latActive":true,"steeringDisengage":false,"nowNanos":4770000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.36000001430511475,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":4.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":2.0,"latActive":true,"steeringDisengage":false,"nowNanos":4780000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.7200000286102295,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3ff84d10",0]]},{"input":{"requestedAngleDeg":4.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":2.0,"latActive":true,"steeringDisengage":false,"nowNanos":4790000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":0.7200000286102295,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":4.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":2.0,"latActive":true,"steeringDisengage":false,"nowNanos":4800000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":1.2000000476837158,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3ff34e0c",0],[637,"010686",0]]},{"input":{"requestedAngleDeg":4.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":2.0,"latActive":true,"steeringDisengage":false,"nowNanos":4810000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":1.2000000476837158,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":4.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":2.0,"latActive":true,"steeringDisengage":false,"nowNanos":4820000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":1.7999999523162842,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fed4f07",0]]},{"input":{"requestedAngleDeg":4.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":2.0,"latActive":true,"steeringDisengage":false,"nowNanos":4830000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":1.7999999523162842,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]},{"input":{"requestedAngleDeg":4.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":2.0,"latActive":true,"steeringDisengage":false,"nowNanos":4840000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":2.5166006088256836,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[[1160,"3fe640f1",0]]},{"input":{"requestedAngleDeg":4.0,"torqueNm":0.0,"speedMps":15.0,"measuredAngleDeg":2.0,"latActive":true,"steeringDisengage":false,"nowNanos":4850000000},"actuators":{"gas":0.0,"brake":0.0,"torque":0.0,"steeringAngleDeg":2.5166006088256836,"accel":0.0,"longControlState":"off","speed":0.0,"curvature":0.0,"torqueOutputCan":0.0,"lateralControlMode":"inactive"},"can":[]}]} diff --git a/opendbc_repo/opendbc/car/tesla/tests/test_coop_steering.py b/opendbc_repo/opendbc/car/tesla/tests/test_coop_steering.py index 5f0003480d..be03a12612 100644 --- a/opendbc_repo/opendbc/car/tesla/tests/test_coop_steering.py +++ b/opendbc_repo/opendbc/car/tesla/tests/test_coop_steering.py @@ -1,3 +1,4 @@ +import math from types import SimpleNamespace import pytest @@ -73,3 +74,110 @@ def test_safety_flag_is_model_3_only(candidate, enabled, expected): if candidate != CAR.TESLA_MODEL_S_PREAP: assert CarController(DBC[candidate], params).coop_enabled is expected + + +def assert_finite_nonnegative_limit_errors(controller): + errors = (controller.resume_limit_error_deg, controller.cooperative_limit_error_deg) + assert all(math.isfinite(error) and error >= 0.0 for error in errors) + assert math.isfinite(controller.cooperative_offset_deg) + + +def test_zero_torque_has_zero_cooperative_diagnostics(vehicle_model): + controller = CooperativeSteeringController() + + angle, lat_active = controller.update(0.0, True, True, make_car_state(), vehicle_model) + + assert angle == 0.0 + assert lat_active + assert controller.resume_limit_error_deg == 0.0 + assert controller.cooperative_limit_error_deg == 0.0 + assert controller.cooperative_offset_deg == 0.0 + assert_finite_nonnegative_limit_errors(controller) + + +def test_steady_light_torque_reports_offset_without_real_limiting(vehicle_model): + controller = CooperativeSteeringController() + + for _ in range(100): + controller.update(0.0, True, True, make_car_state(torque=0.9), vehicle_model) + + assert controller.cooperative_offset_deg > 2.5 + assert controller.resume_limit_error_deg < 2.5 + assert controller.cooperative_limit_error_deg < 2.5 + assert_finite_nonnegative_limit_errors(controller) + + +def test_torque_reversal_updates_signed_offset_without_negative_errors(vehicle_model): + controller = CooperativeSteeringController() + for _ in range(100): + controller.update(0.0, True, True, make_car_state(torque=0.9), vehicle_model) + + for _ in range(200): + controller.update(0.0, True, True, make_car_state(torque=-0.9), vehicle_model) + + assert controller.cooperative_offset_deg < -2.5 + assert_finite_nonnegative_limit_errors(controller) + + +def test_release_reports_gradual_offset_unwind(vehicle_model): + controller = CooperativeSteeringController() + for _ in range(100): + controller.update(0.0, True, True, make_car_state(torque=1.5), vehicle_model) + + offsets = [] + for _ in range(100): + controller.update(0.0, True, True, make_car_state(), vehicle_model) + offsets.append(controller.cooperative_offset_deg) + + assert offsets[0] > offsets[-1] >= 0.0 + assert all(next_offset <= offset for offset, next_offset in zip(offsets, offsets[1:])) + assert offsets[-1] == pytest.approx(0.0, abs=1e-6) + assert_finite_nonnegative_limit_errors(controller) + + +def test_resume_ramp_reports_resume_limiting(vehicle_model): + controller = CooperativeSteeringController() + controller.reset_resume_state(0.0) + controller.reset_override_state(0.0) + + controller.update(20.0, True, True, make_car_state(), vehicle_model) + + assert controller.resume_limit_error_deg > 2.5 + assert controller.cooperative_limit_error_deg < 2.5 + assert controller.cooperative_offset_deg == 0.0 + + +def test_final_limiter_reports_cooperative_target_clipping(vehicle_model): + controller = CooperativeSteeringController() + controller.reset_resume_state(20.0) + controller.reset_override_state(0.0) + + controller.update(20.0, True, True, make_car_state(), vehicle_model) + + assert controller.resume_limit_error_deg == 0.0 + assert controller.cooperative_limit_error_deg > 2.5 + assert controller.cooperative_offset_deg == 0.0 + + +def test_final_limiter_remains_visible_with_light_torque(vehicle_model): + controller = CooperativeSteeringController() + controller.reset_resume_state(20.0) + controller.reset_override_state(0.0) + + controller.update(20.0, True, True, make_car_state(torque=-0.9), vehicle_model) + + assert abs(controller.cooperative_offset_deg) > 0.0 + assert controller.cooperative_limit_error_deg > 2.5 + + +def test_diagnostics_reset_on_disabled_update(vehicle_model): + controller = CooperativeSteeringController() + controller.reset_resume_state(20.0) + controller.update(20.0, True, True, make_car_state(), vehicle_model) + assert controller.cooperative_limit_error_deg > 2.5 + + controller.update(4.0, True, False, make_car_state(torque=2.0), vehicle_model) + + assert controller.resume_limit_error_deg == 0.0 + assert controller.cooperative_limit_error_deg == 0.0 + assert controller.cooperative_offset_deg == 0.0 diff --git a/opendbc_repo/opendbc/car/tesla/tests/test_coop_steering_limit_info.py b/opendbc_repo/opendbc/car/tesla/tests/test_coop_steering_limit_info.py new file mode 100644 index 0000000000..05ea35da2d --- /dev/null +++ b/opendbc_repo/opendbc/car/tesla/tests/test_coop_steering_limit_info.py @@ -0,0 +1,221 @@ +import json +import math +from pathlib import Path +from types import SimpleNamespace + +import pytest + +from cereal import car +from opendbc.car import gen_empty_fingerprint +from opendbc.car.tesla.carcontroller import CarController +from opendbc.car.tesla.interface import CarInterface +from opendbc.car.tesla.values import CAR, DBC, TeslaSafetyFlags + + +BASELINE_SHA = "a80064be4fdf4b8765a5e9dec44d8a5c266f48a8" +BASELINE_SOURCE_SHA256 = { + "opendbc_repo/opendbc/car/tesla/coop_steering.py": "9c9d60bbfae2aaa0d8c1fca203a9fa19a14a19feef5aa89e85ecaa6f6502a9f0", + "opendbc_repo/opendbc/car/tesla/carcontroller.py": "1ef3cf646bc4b3c398bd12010e624b90e083426152d632fafb5b2e93fd3d8661", +} +BASELINE_FIXTURE = Path(__file__).parent / "fixtures" / "coop_steering_baseline_a80064be.json" + + +def make_params(candidate=CAR.TESLA_MODEL_3, cooperative=True): + toggles = SimpleNamespace(tesla_cooperative_steering=cooperative, trailer_load_kg=0.0) + return CarInterface.get_params(candidate, gen_empty_fingerprint(), [], False, False, False, toggles) + + +def make_car_state(torque=0.0, speed=15.0, angle=0.0, steering_disengage=False): + return SimpleNamespace( + out=SimpleNamespace( + steeringTorque=torque, + steeringAngleDeg=angle, + steeringDisengage=steering_disengage, + vEgo=speed, + vEgoRaw=speed, + gasPressed=False, + ), + hands_on_level=0, + das_control={"DAS_controlCounter": 0}, + ) + + +def make_control(requested_angle=0.0, lat_active=True): + control = car.CarControl.new_message() + control.latActive = lat_active + control.actuators.steeringAngleDeg = requested_angle + return control.as_reader() + + +def make_controller(candidate=CAR.TESLA_MODEL_3, cooperative=True): + params = make_params(candidate, cooperative) + return CarController(DBC[candidate], params) + + +def run_frame(controller, requested_angle=0.0, torque=0.0, speed=15.0, measured_angle=0.0, + lat_active=True, steering_disengage=False, now_nanos=1_000_000_000): + return controller.update( + make_control(requested_angle, lat_active), + make_car_state(torque, speed, measured_angle, steering_disengage), + now_nanos, + SimpleNamespace(), + ) + + +def legacy_actuator_dict(actuators): + values = actuators.to_dict() + values.pop("steeringLimitInfo", None) + return values + + +def test_steering_limit_info_defaults_to_invalid(): + actuators = car.CarControl.Actuators.new_message() + + assert not actuators.steeringLimitInfo.valid + + +def test_steering_limit_info_round_trips_through_car_output(): + output = car.CarOutput.new_message() + info = output.actuatorsOutput.steeringLimitInfo + info.valid = True + info.modelLimitErrorDeg = 1.25 + info.resumeLimitErrorDeg = 0.5 + info.cooperativeLimitErrorDeg = 2.0 + info.cooperativeOffsetDeg = -4.5 + info.monoTime = 1_234_567_890 + info.combinedLimitErrorDeg = 3.75 + + with car.CarOutput.from_bytes(output.to_bytes()) as restored: + restored_info = restored.actuatorsOutput.steeringLimitInfo + assert restored_info.valid + assert restored_info.modelLimitErrorDeg == 1.25 + assert restored_info.resumeLimitErrorDeg == 0.5 + assert restored_info.cooperativeLimitErrorDeg == 2.0 + assert restored_info.cooperativeOffsetDeg == -4.5 + assert restored_info.monoTime == 1_234_567_890 + assert restored_info.combinedLimitErrorDeg == 3.75 + + +def test_active_cooperative_controller_publishes_r_n_a_t_f_diagnostics(): + controller = make_controller() + requested_angle = 20.0 + now_nanos = 1_234_567_890 + + actuators, _ = run_frame(controller, requested_angle, torque=0.9, measured_angle=0.0, now_nanos=now_nanos) + + info = actuators.steeringLimitInfo + assert info.valid + assert info.monoTime == now_nanos + assert info.modelLimitErrorDeg == pytest.approx(abs(requested_angle - controller.apply_angle_last), abs=1e-5) + assert info.resumeLimitErrorDeg == pytest.approx(controller.coop_steer.resume_limit_error_deg, abs=1e-5) + assert info.cooperativeLimitErrorDeg == pytest.approx(controller.coop_steer.cooperative_limit_error_deg, abs=1e-5) + assert info.cooperativeOffsetDeg == pytest.approx(controller.coop_steer.cooperative_offset_deg, abs=1e-5) + assert info.combinedLimitErrorDeg == pytest.approx( + abs(requested_angle + info.cooperativeOffsetDeg - actuators.steeringAngleDeg), abs=1e-5, + ) + assert info.modelLimitErrorDeg > 2.5 + assert info.cooperativeOffsetDeg > 0.0 + assert info.combinedLimitErrorDeg > 2.5 + errors = (info.modelLimitErrorDeg, info.resumeLimitErrorDeg, + info.cooperativeLimitErrorDeg, info.combinedLimitErrorDeg) + assert all(math.isfinite(error) and error >= 0.0 for error in errors) + + +def test_cooperative_offset_alone_does_not_become_limiter_error(): + controller = make_controller() + actuators = None + + for frame in range(200): + actuators, _ = run_frame(controller, torque=0.9, now_nanos=1_000_000_000 + frame * 10_000_000) + + assert actuators is not None + info = actuators.steeringLimitInfo + assert info.valid + assert info.cooperativeOffsetDeg > 2.5 + assert info.modelLimitErrorDeg < 2.5 + assert info.resumeLimitErrorDeg < 2.5 + assert info.cooperativeLimitErrorDeg < 2.5 + assert info.combinedLimitErrorDeg < 2.5 + + +def test_combined_error_keeps_two_same_direction_small_limits_visible(): + controller = make_controller() + # Prime the resume limiter to the first-stage output for this literal input. + controller.coop_steer.reset_resume_state(-0.9954867959022522) + + actuators, _ = run_frame(controller, -2.5, torque=-1.5, speed=12.5, measured_angle=0.0) + + info = actuators.steeringLimitInfo + assert info.modelLimitErrorDeg == pytest.approx(1.5045133, abs=1e-5) + assert info.resumeLimitErrorDeg == pytest.approx(0.0, abs=1e-5) + assert info.cooperativeLimitErrorDeg == pytest.approx(1.5045133, abs=1e-5) + assert info.modelLimitErrorDeg < 2.5 + assert info.cooperativeLimitErrorDeg < 2.5 + assert info.combinedLimitErrorDeg == pytest.approx(3.0090265, abs=1e-5) + assert info.combinedLimitErrorDeg > 2.5 + + +def test_intervening_100hz_frame_retains_matching_50hz_sample(): + controller = make_controller() + first, _ = run_frame(controller, 8.0, torque=0.9, now_nanos=1_000_000_000) + first_info = first.steeringLimitInfo.to_dict() + + second, _ = run_frame(controller, -40.0, torque=-1.5, now_nanos=1_010_000_000) + + assert second.steeringLimitInfo.to_dict() == first_info + assert second.steeringLimitInfo.monoTime == 1_000_000_000 + + +def test_inactive_interval_clears_sample_until_next_steering_update(): + controller = make_controller() + active, _ = run_frame(controller, 8.0, torque=0.9, now_nanos=1_000_000_000) + assert active.steeringLimitInfo.valid + + inactive, _ = run_frame(controller, 8.0, torque=0.9, lat_active=False, now_nanos=1_010_000_000) + assert not inactive.steeringLimitInfo.valid + assert inactive.steeringLimitInfo.monoTime == 0 + + resumed, _ = run_frame(controller, 8.0, torque=0.9, now_nanos=1_020_000_000) + assert resumed.steeringLimitInfo.valid + assert resumed.steeringLimitInfo.monoTime == 1_020_000_000 + + +@pytest.mark.parametrize(("candidate", "cooperative", "steering_disengage"), ( + (CAR.TESLA_MODEL_3, False, False), + (CAR.TESLA_MODEL_Y, True, False), + (CAR.TESLA_MODEL_3, True, True), +)) +def test_diagnostics_invalid_when_not_in_supported_active_path(candidate, cooperative, steering_disengage): + controller = make_controller(candidate, cooperative) + + actuators, _ = run_frame(controller, torque=1.5, steering_disengage=steering_disengage) + + assert not actuators.steeringLimitInfo.valid + assert actuators.steeringLimitInfo.monoTime == 0 + + +def test_actual_actuators_and_steering_can_match_pinned_baseline_fixture(): + fixture = json.loads(BASELINE_FIXTURE.read_text()) + assert fixture["metadata"] == { + "schemaVersion": 1, + "baselineSha": BASELINE_SHA, + "baselineSourceSha256": BASELINE_SOURCE_SHA256, + "frameCount": 386, + } + + candidate = make_controller() + for expected in fixture["frames"]: + inputs = expected["input"] + candidate_actuators, candidate_can = run_frame( + candidate, + inputs["requestedAngleDeg"], + inputs["torqueNm"], + inputs["speedMps"], + inputs["measuredAngleDeg"], + inputs["latActive"], + inputs["steeringDisengage"], + inputs["nowNanos"], + ) + + assert legacy_actuator_dict(candidate_actuators) == expected["actuators"] + assert [[address, data.hex(), bus] for address, data, bus in candidate_can] == expected["can"] diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 5bb3d2b4a5..94363186d4 100644 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -1,6 +1,8 @@ #!/usr/bin/env python3 import math from numbers import Number +import os +import time from cereal import car, custom, log import cereal.messaging as messaging @@ -26,7 +28,8 @@ from openpilot.selfdrive.controls.lib.drive_helpers import ( from openpilot.selfdrive.controls.lib.lane_centering import LaneCenteringController from openpilot.selfdrive.controls.lib.latcontrol import LatControl from openpilot.selfdrive.controls.lib.latcontrol_pid import LatControlPID -from openpilot.selfdrive.controls.lib.latcontrol_angle import LatControlAngle, STEER_ANGLE_SATURATION_THRESHOLD +from openpilot.selfdrive.controls.lib.latcontrol_angle import LatControlAngle +from openpilot.selfdrive.controls.lib.steering_saturation import is_angle_steering_limited from openpilot.selfdrive.controls.lib.latcontrol_curvature import LatControlCurvature from openpilot.selfdrive.controls.lib.latcontrol_torque import ( BOLT_2018_2021_STEER_RATIO_TEST_SCALE, @@ -48,6 +51,7 @@ LaneChangeDirection = log.LaneChangeDirection LateralControlMode = car.CarControl.Actuators.LateralControlMode ACTUATOR_FIELDS = tuple(car.CarControl.Actuators.schema.fields.keys()) +REPLAY = "REPLAY" in os.environ # After a smoothed lane change ends, ramp the curvature limits back to stock over this # time so the final recenter correction is shaped instead of stepping through unclamped. @@ -873,8 +877,15 @@ class Controls: if self.sm['selfdriveState'].active: CO = self.sm['carOutput'] if self.CP.steerControlType == car.CarParams.SteerControlType.angle: - self.steer_limited_by_safety = abs(CC.actuators.steeringAngleDeg - CO.actuatorsOutput.steeringAngleDeg) > \ - STEER_ANGLE_SATURATION_THRESHOLD + output_healthy = ( + self.sm.valid['carOutput'] and + self.sm.alive['carOutput'] and + self.sm.freq_ok['carOutput'] + ) + now_nanos = self.sm.logMonoTime['selfdriveState'] if REPLAY else time.monotonic_ns() + self.steer_limited_by_safety = is_angle_steering_limited( + self.CP, CC.actuators.steeringAngleDeg, CO, output_healthy, now_nanos, + ) else: self.steer_limited_by_safety = abs(CC.actuators.torque - CO.actuatorsOutput.torque) > 1e-2 diff --git a/selfdrive/controls/lib/latcontrol_angle.py b/selfdrive/controls/lib/latcontrol_angle.py index ffd7d3d122..0abeddcd07 100644 --- a/selfdrive/controls/lib/latcontrol_angle.py +++ b/selfdrive/controls/lib/latcontrol_angle.py @@ -3,9 +3,7 @@ import math from cereal import log from opendbc.car.subaru.values import CAR as SUBARU_CAR from openpilot.selfdrive.controls.lib.latcontrol import LatControl - -# TODO This is speed dependent -STEER_ANGLE_SATURATION_THRESHOLD = 2.5 # Degrees +from openpilot.selfdrive.controls.lib.steering_saturation import STEER_ANGLE_SATURATION_THRESHOLD _ASCENT_ANGLE_TRACKING_GAIN = 0.25 _ASCENT_ANGLE_TRACKING_MAX_CORRECTION = 8.0 diff --git a/selfdrive/controls/lib/steering_saturation.py b/selfdrive/controls/lib/steering_saturation.py new file mode 100644 index 0000000000..827527a3a4 --- /dev/null +++ b/selfdrive/controls/lib/steering_saturation.py @@ -0,0 +1,49 @@ +import math + +from opendbc.car.tesla.values import CAR, TeslaSafetyFlags + + +# TODO This is speed dependent +STEER_ANGLE_SATURATION_THRESHOLD = 2.5 # Degrees +_MAX_STEERING_LIMIT_INFO_AGE_NANOS = 100_000_000 + + +def _legacy_angle_steering_limited(requested_angle: float, car_output) -> bool: + return abs(requested_angle - car_output.actuatorsOutput.steeringAngleDeg) > \ + STEER_ANGLE_SATURATION_THRESHOLD + + +def is_angle_steering_limited(CP, requested_angle: float, car_output, output_healthy: bool, now_nanos: int) -> bool: + legacy_limited = _legacy_angle_steering_limited(requested_angle, car_output) + + try: + cooperative_enabled = any( + safety_config.safetyParam & TeslaSafetyFlags.COOP_STEERING.value + for safety_config in CP.safetyConfigs + ) + if CP.carFingerprint != CAR.TESLA_MODEL_3 or not cooperative_enabled or not output_healthy: + return legacy_limited + + info = car_output.actuatorsOutput.steeringLimitInfo + errors = ( + info.modelLimitErrorDeg, + info.resumeLimitErrorDeg, + info.cooperativeLimitErrorDeg, + info.combinedLimitErrorDeg, + ) + numeric_values = errors + (info.cooperativeOffsetDeg,) + mono_time = info.monoTime + + if not info.valid or mono_time <= 0: + return legacy_limited + + age_nanos = now_nanos - mono_time + if age_nanos < 0 or age_nanos > _MAX_STEERING_LIMIT_INFO_AGE_NANOS: + return legacy_limited + + if not all(math.isfinite(value) for value in numeric_values) or any(error < 0 for error in errors): + return legacy_limited + + return max(errors) > STEER_ANGLE_SATURATION_THRESHOLD + except (AttributeError, TypeError, ValueError, OverflowError): + return legacy_limited diff --git a/selfdrive/controls/tests/test_steering_saturation.py b/selfdrive/controls/tests/test_steering_saturation.py new file mode 100644 index 0000000000..520b74e614 --- /dev/null +++ b/selfdrive/controls/tests/test_steering_saturation.py @@ -0,0 +1,161 @@ +import math + +import pytest + +from cereal import car +from opendbc.car.tesla.interface import CarInterface +from opendbc.car.tesla.values import CAR, TeslaSafetyFlags +from openpilot.selfdrive.controls.lib.steering_saturation import is_angle_steering_limited + + +REQUESTED_ANGLE = -14.5 +OUTPUT_ANGLE = -9.0 +SAMPLE_TIME_NANOS = 1_000_000_000 +FRESH_TIME_NANOS = SAMPLE_TIME_NANOS + 20_000_000 +MAX_DIAGNOSTIC_AGE_NANOS = 100_000_000 +NEXT_FLOAT32_AFTER_2_5 = 2.500000238418579 +ERROR_FIELDS = ( + "modelLimitErrorDeg", + "resumeLimitErrorDeg", + "cooperativeLimitErrorDeg", + "combinedLimitErrorDeg", +) +NUMERIC_FIELDS = ERROR_FIELDS + ("cooperativeOffsetDeg",) + + +def make_case(candidate=CAR.TESLA_MODEL_3, cooperative_enabled=True): + cp = CarInterface.get_non_essential_params(candidate) + for safety_config in cp.safetyConfigs: + if cooperative_enabled: + safety_config.safetyParam |= TeslaSafetyFlags.COOP_STEERING.value + else: + safety_config.safetyParam &= ~TeslaSafetyFlags.COOP_STEERING.value + + output = car.CarOutput.new_message() + output.actuatorsOutput.steeringAngleDeg = OUTPUT_ANGLE + info = output.actuatorsOutput.steeringLimitInfo + info.valid = True + info.monoTime = SAMPLE_TIME_NANOS + info.cooperativeOffsetDeg = 5.5 + return cp, output + + +def detect(cp, output, requested_angle=REQUESTED_ANGLE, output_healthy=True, now_nanos=FRESH_TIME_NANOS): + return is_angle_steering_limited(cp.as_reader(), requested_angle, output.as_reader(), output_healthy, now_nanos) + + +def test_light_offset_does_not_count_as_limiting(): + cp, output = make_case() + + assert not detect(cp, output) + + +@pytest.mark.parametrize("field", ERROR_FIELDS) +def test_each_genuine_limit_is_visible_during_cooperation(field): + cp, output = make_case() + setattr(output.actuatorsOutput.steeringLimitInfo, field, 3.0) + + assert detect(cp, output) + + +def test_combined_small_limits_remain_visible(): + cp, output = make_case() + info = output.actuatorsOutput.steeringLimitInfo + info.modelLimitErrorDeg = 1.5 + info.cooperativeLimitErrorDeg = 1.5 + info.combinedLimitErrorDeg = 3.0 + + assert detect(cp, output) + + +@pytest.mark.parametrize(("error", "expected"), ( + (2.5, False), + (NEXT_FLOAT32_AFTER_2_5, True), +)) +def test_diagnostic_threshold_is_strictly_greater(error, expected): + cp, output = make_case() + output.actuatorsOutput.steeringLimitInfo.modelLimitErrorDeg = error + + assert detect(cp, output) is expected + + +@pytest.mark.parametrize("age_nanos", (0, MAX_DIAGNOSTIC_AGE_NANOS)) +def test_diagnostic_age_bounds_are_inclusive(age_nanos): + cp, output = make_case() + + assert not detect(cp, output, now_nanos=SAMPLE_TIME_NANOS + age_nanos) + + +def test_signed_cooperative_offset_is_valid_data(): + cp, output = make_case() + output.actuatorsOutput.steeringLimitInfo.cooperativeOffsetDeg = -5.5 + + assert not detect(cp, output) + + +@pytest.mark.parametrize("scenario", ( + "default_message", + "invalid_flag", + "zero_timestamp", + "future_timestamp", + "stale_timestamp", + "unhealthy_output", + "unsupported_model", + "cooperative_mode_disabled", +)) +def test_unusable_diagnostics_keep_legacy_warning(scenario): + cp, output = make_case() + output_healthy = True + now_nanos = FRESH_TIME_NANOS + + if scenario == "default_message": + output = car.CarOutput.new_message() + output.actuatorsOutput.steeringAngleDeg = OUTPUT_ANGLE + elif scenario == "invalid_flag": + output.actuatorsOutput.steeringLimitInfo.valid = False + elif scenario == "zero_timestamp": + output.actuatorsOutput.steeringLimitInfo.monoTime = 0 + elif scenario == "future_timestamp": + output.actuatorsOutput.steeringLimitInfo.monoTime = now_nanos + 1 + elif scenario == "stale_timestamp": + output.actuatorsOutput.steeringLimitInfo.monoTime = now_nanos - MAX_DIAGNOSTIC_AGE_NANOS - 1 + elif scenario == "unhealthy_output": + output_healthy = False + elif scenario == "unsupported_model": + cp, output = make_case(CAR.TESLA_MODEL_Y) + elif scenario == "cooperative_mode_disabled": + cp, output = make_case(cooperative_enabled=False) + + assert detect(cp, output, output_healthy=output_healthy, now_nanos=now_nanos) + + +@pytest.mark.parametrize(("requested_angle", "expected"), ( + (OUTPUT_ANGLE - 2.5, False), + (OUTPUT_ANGLE - NEXT_FLOAT32_AFTER_2_5, True), +)) +def test_fallback_preserves_legacy_strict_threshold(requested_angle, expected): + cp, output = make_case() + output.actuatorsOutput.steeringLimitInfo.valid = False + + assert detect(cp, output, requested_angle=requested_angle) is expected + + +@pytest.mark.parametrize("field", NUMERIC_FIELDS) +@pytest.mark.parametrize(("bad_value", "requested_angle", "legacy_result"), ( + (math.nan, REQUESTED_ANGLE, True), + (math.inf, OUTPUT_ANGLE, False), + (-math.inf, OUTPUT_ANGLE, False), +)) +def test_nonfinite_diagnostic_values_use_legacy_fallback(field, bad_value, requested_angle, legacy_result): + cp, output = make_case() + setattr(output.actuatorsOutput.steeringLimitInfo, field, bad_value) + + assert detect(cp, output, requested_angle=requested_angle) is legacy_result + + +@pytest.mark.parametrize("field", ERROR_FIELDS) +def test_negative_error_values_use_legacy_fallback(field): + cp, output = make_case() + setattr(output.actuatorsOutput.steeringLimitInfo, field, -0.1) + + assert detect(cp, output) diff --git a/selfdrive/controls/tests/test_steering_saturation_publish.py b/selfdrive/controls/tests/test_steering_saturation_publish.py new file mode 100644 index 0000000000..0c46e77947 --- /dev/null +++ b/selfdrive/controls/tests/test_steering_saturation_publish.py @@ -0,0 +1,153 @@ +from types import SimpleNamespace + +import pytest + +from cereal import car, custom, log +from opendbc.car.tesla.interface import CarInterface +from opendbc.car.tesla.values import CAR, TeslaSafetyFlags +from openpilot.selfdrive.controls import controlsd +from openpilot.selfdrive.controls.controlsd import Controls + + +REQUESTED_ANGLE = -14.5 +OUTPUT_ANGLE = -9.0 +SAMPLE_TIME_NANOS = 1_000_000_000 +FRESH_TIME_NANOS = SAMPLE_TIME_NANOS + 20_000_000 +STALE_TIME_NANOS = SAMPLE_TIME_NANOS + 100_000_001 +HOST_TIME_NANOS = 9_000_000_000 +CAR_STATE_TIME_NANOS = 7_000_000_000 + + +class CapturePubMaster: + def __init__(self): + self.sent = {} + + def send(self, service, message): + self.sent[service] = message + + +class PublishSubMaster: + def __init__(self, car_output, selfdrive_time_nanos, output_healthy=True): + car_state = car.CarState.new_message() + car_state.canValid = True + + long_plan = log.LongitudinalPlan.new_message() + long_plan.speeds = [] + + selfdrive_state = log.SelfdriveState.new_message() + selfdrive_state.active = True + + self.messages = { + "carState": car_state.as_reader(), + "longitudinalPlan": long_plan.as_reader(), + "starpilotCarState": custom.StarPilotCarState.new_message().as_reader(), + "selfdriveState": selfdrive_state.as_reader(), + "carOutput": car_output.as_reader(), + "driverAssistance": log.DriverAssistance.new_message().as_reader(), + "driverMonitoringState": log.DriverMonitoringState.new_message().as_reader(), + } + self.valid = {"carOutput": output_healthy, "driverAssistance": False} + self.alive = {"carOutput": output_healthy} + self.freq_ok = {"carOutput": output_healthy} + self.logMonoTime = { + "selfdriveState": selfdrive_time_nanos, + "carState": CAR_STATE_TIME_NANOS, + "longitudinalPlan": 0, + "modelV2": 0, + } + + def __getitem__(self, service): + return self.messages[service] + + +def make_car_params(): + cp = CarInterface.get_non_essential_params(CAR.TESLA_MODEL_3) + cp.safetyConfigs[0].safetyParam |= TeslaSafetyFlags.COOP_STEERING.value + return cp.as_reader() + + +def make_car_output(real_limit_error=0.0): + output = car.CarOutput.new_message() + output.actuatorsOutput.steeringAngleDeg = OUTPUT_ANGLE + info = output.actuatorsOutput.steeringLimitInfo + info.valid = True + info.monoTime = SAMPLE_TIME_NANOS + info.cooperativeOffsetDeg = 5.5 + info.modelLimitErrorDeg = real_limit_error + info.combinedLimitErrorDeg = real_limit_error + return output + + +def make_controls(car_output, selfdrive_time_nanos, output_healthy=True): + controls = Controls.__new__(Controls) + controls.CP = make_car_params() + controls.sm = PublishSubMaster(car_output, selfdrive_time_nanos, output_healthy) + controls.pm = CapturePubMaster() + controls.curvature = 0.0 + controls.calibrated_pose = None + controls.desired_curvature = 0.0 + controls.LoC = SimpleNamespace( + long_control_state=car.CarControl.Actuators.LongControlState.off, + pid=SimpleNamespace(p=0.0, i=0.0, f=0.0), + ) + controls.LaC = SimpleNamespace() + controls.starpilot_toggles = SimpleNamespace() + controls.steer_limited_by_safety = False + return controls + + +def run_publish(monkeypatch, replay, selfdrive_time_nanos, host_time_nanos=HOST_TIME_NANOS, + output_healthy=True, real_limit_error=0.0): + monkeypatch.setattr(controlsd, "REPLAY", replay, raising=False) + monkeypatch.setattr(controlsd.time, "monotonic_ns", lambda: host_time_nanos) + controls = make_controls(make_car_output(real_limit_error), selfdrive_time_nanos, output_healthy) + cc = car.CarControl.new_message() + cc.enabled = True + cc.latActive = True + cc.actuators.steeringAngleDeg = REQUESTED_ANGLE + lac_log = log.ControlsState.LateralAngleState.new_message() + + controls.publish(cc, lac_log) + return controls + + +def test_replay_uses_current_poll_timestamp_for_fresh_diagnostics(monkeypatch): + controls = run_publish(monkeypatch, True, FRESH_TIME_NANOS) + + assert not controls.steer_limited_by_safety + + +def test_replay_stale_diagnostics_still_use_legacy_fallback(monkeypatch): + controls = run_publish(monkeypatch, True, STALE_TIME_NANOS) + + assert controls.steer_limited_by_safety + + +@pytest.mark.parametrize(("selfdrive_time_nanos", "expected_limited"), ( + (SAMPLE_TIME_NANOS + 100_000_000, False), + (SAMPLE_TIME_NANOS + 100_000_001, True), + (SAMPLE_TIME_NANOS - 1, True), + (0, True), +)) +def test_replay_publish_preserves_diagnostic_age_boundaries(monkeypatch, selfdrive_time_nanos, expected_limited): + controls = run_publish(monkeypatch, True, selfdrive_time_nanos) + + assert controls.steer_limited_by_safety is expected_limited + + +def test_live_uses_monotonic_clock_instead_of_message_clock(monkeypatch): + controls = run_publish(monkeypatch, False, FRESH_TIME_NANOS, host_time_nanos=STALE_TIME_NANOS) + + assert controls.steer_limited_by_safety + + +def test_unhealthy_car_output_still_uses_legacy_fallback(monkeypatch): + controls = run_publish(monkeypatch, True, FRESH_TIME_NANOS, output_healthy=False) + + assert controls.steer_limited_by_safety + + +def test_replay_genuine_limiter_error_remains_visible(monkeypatch): + controls = run_publish(monkeypatch, True, FRESH_TIME_NANOS, real_limit_error=3.0) + + assert controls.steer_limited_by_safety diff --git a/selfdrive/selfdrived/tests/test_tesla_coop_saturation_warning.py b/selfdrive/selfdrived/tests/test_tesla_coop_saturation_warning.py new file mode 100644 index 0000000000..24f9fb268d --- /dev/null +++ b/selfdrive/selfdrived/tests/test_tesla_coop_saturation_warning.py @@ -0,0 +1,331 @@ +from types import SimpleNamespace + +import cereal.messaging as messaging +import pytest + +from cereal import car, custom, log +from opendbc.car import DT_CTRL, gen_empty_fingerprint +from opendbc.car.tesla.carcontroller import CarController +from opendbc.car.tesla.interface import CarInterface +from opendbc.car.tesla.values import CAR, DBC +from opendbc.car.vehicle_model import VehicleModel +from openpilot.common.params import Params +from openpilot.selfdrive.controls.lib.latcontrol_angle import LatControlAngle +from openpilot.selfdrive.controls.lib.steering_saturation import is_angle_steering_limited +from openpilot.selfdrive.selfdrived.events import ET +from openpilot.selfdrive.selfdrived.selfdrived import SelfdriveD + + +REPRO_REQUESTED_ANGLE = -14.505379676818848 +REPRO_MEASURED_ANGLE = -10.0 +REPRO_SPEED = 12.509657859802246 +REPRO_TORQUE = 0.8999999761581421 +REPRO_DESIRED_CURVATURE = 0.006728461943566799 +REPRO_ACTUAL_CURVATURE = 0.004746654070913792 +START_NANOS = 1_000_000_000 + + +def make_params(): + toggles = SimpleNamespace(tesla_cooperative_steering=True, trailer_load_kg=0.0) + return CarInterface.get_params(CAR.TESLA_MODEL_3, gen_empty_fingerprint(), [], False, False, False, toggles) + + +def make_controller_state(torque, speed, measured_angle, steering_disengage=False): + return SimpleNamespace( + out=SimpleNamespace( + steeringTorque=torque, + steeringAngleDeg=measured_angle, + steeringDisengage=steering_disengage, + vEgo=speed, + vEgoRaw=speed, + gasPressed=False, + ), + hands_on_level=0, + das_control={"DAS_controlCounter": 0}, + ) + + +def make_car_control(requested_angle, lat_active=True): + control = car.CarControl.new_message() + control.enabled = lat_active + control.latActive = lat_active + control.actuators.steeringAngleDeg = requested_angle + return control + + +def run_controller_frame(controller, requested_angle, torque, speed, measured_angle, frame, + lat_active=True, steering_disengage=False): + now_nanos = START_NANOS + frame * 10_000_000 + actuators, _ = controller.update( + make_car_control(requested_angle, lat_active).as_reader(), + make_controller_state(torque, speed, measured_angle, steering_disengage), + now_nanos, + SimpleNamespace(), + ) + event = messaging.new_message("carOutput", valid=True) + event.carOutput.actuatorsOutput = actuators + restored = messaging.log_from_bytes(event.to_bytes()) + return restored.carOutput, now_nanos + + +def make_lateral_car_state(speed, measured_angle): + state = car.CarState.new_message() + state.canValid = True + state.vEgo = speed + state.vEgoRaw = speed + state.steeringAngleDeg = measured_angle + state.gearShifter = car.CarState.GearShifter.drive + state.cruiseState.available = True + state.cruiseState.enabled = True + return state + + +def advance_angle_counter(controller, CP, state, limited, desired_curvature): + live_params = log.LiveParametersData.new_message() + live_params.steerRatio = CP.steerRatio + live_params.stiffnessFactor = 1.0 + live_params.roll = 0.0 + live_params.angleOffsetDeg = 0.0 + _, _, angle_log = controller.update( + True, state.as_reader(), VehicleModel(CP), live_params.as_reader(), limited, + desired_curvature, False, 0.2, None, None, SimpleNamespace(), + ) + return angle_log + + +def controls_state_with_angle_log(angle_log, actual_curvature): + controls_state = log.ControlsState.new_message() + controls_state.curvature = actual_curvature + controls_state.lateralControlState.angleState = angle_log + return controls_state + + +def configure_selfdrived(CP): + fpcp = custom.StarPilotCarParams.new_message() + Params().put("StarPilotCarParams", fpcp.to_bytes()) + selfdrived = SelfdriveD(CP.as_reader()) + selfdrived.initialized = True + selfdrived.enabled = True + selfdrived.active = True + selfdrived.startup_event = None + selfdrived.last_steering_pressed_frame = 0 + selfdrived.sm.frame = 300 + + for service in selfdrived.sm.data: + selfdrived.sm.valid[service] = True + selfdrived.sm.alive[service] = True + selfdrived.sm.freq_ok[service] = True + selfdrived.sm.seen[service] = True + selfdrived.sm.updated[service] = False + selfdrived.sm.recv_frame[service] = selfdrived.sm.frame + + device_state = log.DeviceState.new_message() + device_state.started = True + device_state.freeSpacePercent = 100.0 + device_state.memoryUsagePercent = 0 + selfdrived.sm.data["deviceState"] = device_state.as_reader() + + live_calibration = log.LiveCalibrationData.new_message() + live_calibration.calStatus = log.LiveCalibrationData.Status.calibrated + selfdrived.sm.data["liveCalibration"] = live_calibration.as_reader() + + live_parameters = log.LiveParametersData.new_message() + live_parameters.valid = True + selfdrived.sm.data["liveParameters"] = live_parameters.as_reader() + + panda_states = messaging.new_message("pandaStates", 0) + selfdrived.sm.data["pandaStates"] = panda_states.pandaStates + return selfdrived + + +def run_selfdrived_warning_path(selfdrived, state, angle_log, actual_curvature, desired_curvature, + requested_angle=REPRO_REQUESTED_ANGLE): + controls_state = controls_state_with_angle_log(angle_log, actual_curvature) + model = log.ModelDataV2.new_message() + model.action.desiredCurvature = desired_curvature + selfdrived.sm.data["controlsState"] = controls_state.as_reader() + selfdrived.sm.data["modelV2"] = model.as_reader() + selfdrived.sm.data["carControl"] = make_car_control(requested_angle).as_reader() + selfdrived.CS_prev = state.as_reader() + selfdrived.update_events(state.as_reader()) + alerts = selfdrived.events.create_alerts([ET.WARNING]) + return selfdrived.events.names, [alert.alert_type for alert in alerts] + + +def test_recorded_light_torque_reproduction_no_longer_reaches_warning(): + CP = make_params() + tesla_controller = CarController(DBC[CAR.TESLA_MODEL_3], CP) + lateral_state = make_lateral_car_state(REPRO_SPEED, REPRO_MEASURED_ANGLE) + baseline_counter = LatControlAngle(CP.as_reader(), None, DT_CTRL) + corrected_counter = LatControlAngle(CP.as_reader(), None, DT_CTRL) + + baseline_log = corrected_log = None + output = None + now_nanos = 0 + for frame in range(260): + output, now_nanos = run_controller_frame( + tesla_controller, REPRO_REQUESTED_ANGLE, REPRO_TORQUE, REPRO_SPEED, REPRO_MEASURED_ANGLE, frame, + ) + if frame >= 210: + legacy_limited = abs(REPRO_REQUESTED_ANGLE - output.actuatorsOutput.steeringAngleDeg) > 2.5 + corrected_limited = is_angle_steering_limited( + CP.as_reader(), REPRO_REQUESTED_ANGLE, output, True, now_nanos, + ) + baseline_log = advance_angle_counter( + baseline_counter, CP, lateral_state, legacy_limited, REPRO_DESIRED_CURVATURE, + ) + corrected_log = advance_angle_counter( + corrected_counter, CP, lateral_state, corrected_limited, REPRO_DESIRED_CURVATURE, + ) + + info = output.actuatorsOutput.steeringLimitInfo + errors = (info.modelLimitErrorDeg, info.resumeLimitErrorDeg, + info.cooperativeLimitErrorDeg, info.combinedLimitErrorDeg) + assert info.valid + assert info.cooperativeOffsetDeg > 2.5 + assert max(errors) <= 2.5 + assert baseline_log.saturated + assert not corrected_log.saturated + + selfdrived = configure_selfdrived(CP) + baseline_events, baseline_alert_types = run_selfdrived_warning_path( + selfdrived, lateral_state, baseline_log, REPRO_ACTUAL_CURVATURE, REPRO_DESIRED_CURVATURE, + ) + assert log.OnroadEvent.EventName.steerSaturated in baseline_events + assert "steerSaturated/warning" in baseline_alert_types + + selfdrived.sm.frame += 1 + events, alert_types = run_selfdrived_warning_path( + selfdrived, lateral_state, corrected_log, REPRO_ACTUAL_CURVATURE, REPRO_DESIRED_CURVATURE, + ) + assert log.OnroadEvent.EventName.steerSaturated not in events + assert "steerSaturated/warning" not in alert_types + + +def test_persistent_real_model_limiting_with_light_torque_still_warns(): + CP = make_params() + tesla_controller = CarController(DBC[CAR.TESLA_MODEL_3], CP) + speed = 22.0 + requested_angle = 40.0 + lateral_state = make_lateral_car_state(speed, 0.0) + angle_counter = LatControlAngle(CP.as_reader(), None, DT_CTRL) + + angle_log = None + output = None + for frame in range(60): + output, now_nanos = run_controller_frame( + tesla_controller, requested_angle, REPRO_TORQUE, speed, 0.0, frame, + ) + limited = is_angle_steering_limited(CP.as_reader(), requested_angle, output, True, now_nanos) + angle_log = advance_angle_counter(angle_counter, CP, lateral_state, limited, 0.01) + + info = output.actuatorsOutput.steeringLimitInfo + assert info.valid + assert info.modelLimitErrorDeg > 2.5 + assert info.combinedLimitErrorDeg > 2.5 + assert angle_log.saturated + + selfdrived = configure_selfdrived(CP) + events, alert_types = run_selfdrived_warning_path( + selfdrived, lateral_state, angle_log, 0.003, 0.01, requested_angle, + ) + assert log.OnroadEvent.EventName.steerSaturated in events + assert "steerSaturated/warning" in alert_types + + +def test_default_old_output_uses_legacy_warning_path(): + CP = make_params() + output_event = messaging.new_message("carOutput", valid=True) + output_event.carOutput.actuatorsOutput.steeringAngleDeg = REPRO_MEASURED_ANGLE + output = messaging.log_from_bytes(output_event.to_bytes()).carOutput + lateral_state = make_lateral_car_state(REPRO_SPEED, REPRO_MEASURED_ANGLE) + angle_counter = LatControlAngle(CP.as_reader(), None, DT_CTRL) + + for frame in range(50): + limited = is_angle_steering_limited( + CP.as_reader(), REPRO_REQUESTED_ANGLE, output, True, START_NANOS + frame * 10_000_000, + ) + angle_log = advance_angle_counter( + angle_counter, CP, lateral_state, limited, REPRO_DESIRED_CURVATURE, + ) + + assert not output.actuatorsOutput.steeringLimitInfo.valid + assert angle_log.saturated + selfdrived = configure_selfdrived(CP) + events, _ = run_selfdrived_warning_path( + selfdrived, lateral_state, angle_log, REPRO_ACTUAL_CURVATURE, REPRO_DESIRED_CURVATURE, + ) + assert log.OnroadEvent.EventName.steerSaturated in events + + +def test_stale_real_offset_sample_uses_legacy_warning_path(): + CP = make_params() + tesla_controller = CarController(DBC[CAR.TESLA_MODEL_3], CP) + lateral_state = make_lateral_car_state(REPRO_SPEED, REPRO_MEASURED_ANGLE) + angle_counter = LatControlAngle(CP.as_reader(), None, DT_CTRL) + + for frame in range(260): + output, now_nanos = run_controller_frame( + tesla_controller, REPRO_REQUESTED_ANGLE, REPRO_TORQUE, REPRO_SPEED, REPRO_MEASURED_ANGLE, frame, + ) + + assert not is_angle_steering_limited(CP.as_reader(), REPRO_REQUESTED_ANGLE, output, True, now_nanos) + stale_now_nanos = output.actuatorsOutput.steeringLimitInfo.monoTime + 100_000_001 + for _ in range(50): + limited = is_angle_steering_limited( + CP.as_reader(), REPRO_REQUESTED_ANGLE, output, True, stale_now_nanos, + ) + angle_log = advance_angle_counter( + angle_counter, CP, lateral_state, limited, REPRO_DESIRED_CURVATURE, + ) + + assert angle_log.saturated + selfdrived = configure_selfdrived(CP) + events, _ = run_selfdrived_warning_path( + selfdrived, lateral_state, angle_log, REPRO_ACTUAL_CURVATURE, REPRO_DESIRED_CURVATURE, + ) + assert log.OnroadEvent.EventName.steerSaturated in events + + +def test_inactive_interval_clears_diagnostics_before_reengagement(): + CP = make_params() + tesla_controller = CarController(DBC[CAR.TESLA_MODEL_3], CP) + + active, _ = run_controller_frame(tesla_controller, 0.0, REPRO_TORQUE, REPRO_SPEED, 0.0, 0) + inactive, _ = run_controller_frame( + tesla_controller, 0.0, REPRO_TORQUE, REPRO_SPEED, 0.0, 1, lat_active=False, + ) + resumed, resumed_now = run_controller_frame( + tesla_controller, 0.0, REPRO_TORQUE, REPRO_SPEED, 0.0, 2, + ) + overridden, _ = run_controller_frame( + tesla_controller, 0.0, REPRO_TORQUE, REPRO_SPEED, 0.0, 3, steering_disengage=True, + ) + + assert active.actuatorsOutput.steeringLimitInfo.valid + assert not inactive.actuatorsOutput.steeringLimitInfo.valid + assert inactive.actuatorsOutput.steeringLimitInfo.monoTime == 0 + assert resumed.actuatorsOutput.steeringLimitInfo.valid + assert resumed.actuatorsOutput.steeringLimitInfo.monoTime == resumed_now + assert not overridden.actuatorsOutput.steeringLimitInfo.valid + assert overridden.actuatorsOutput.steeringLimitInfo.monoTime == 0 + + +@pytest.mark.parametrize(("fault_field", "expected_event"), ( + ("steerFaultTemporary", log.OnroadEvent.EventName.steerTempUnavailableSilent), + ("steerFaultPermanent", log.OnroadEvent.EventName.steerUnavailable), +)) +def test_existing_steering_fault_events_remain_present(fault_field, expected_event): + CP = make_params() + state = make_lateral_car_state(REPRO_SPEED, REPRO_MEASURED_ANGLE) + setattr(state, fault_field, True) + angle_counter = LatControlAngle(CP.as_reader(), None, DT_CTRL) + angle_log = advance_angle_counter( + angle_counter, CP, state, False, REPRO_DESIRED_CURVATURE, + ) + + selfdrived = configure_selfdrived(CP) + events, _ = run_selfdrived_warning_path( + selfdrived, state, angle_log, REPRO_ACTUAL_CURVATURE, REPRO_DESIRED_CURVATURE, + ) + assert expected_event in events