IQ.Pilot Release Commit @ 322eda2

This commit is contained in:
IQ.Lvbs CI [bot]
2026-07-21 13:54:43 -05:00
parent 5784b1e8b3
commit 215abacc04
717 changed files with 4347 additions and 3060 deletions

View File

@@ -1,8 +1,8 @@
from cereal import car, log
from opendbc.car import DT_CTRL, structs
from opendbc.car.car_helpers import interfaces
from opendbc.car.interfaces import MAX_CTRL_SPEED
from opendbc.car.toyota.values import ToyotaFlags
from iqdbc.car import DT_CTRL, structs
from iqdbc.car.car_helpers import interfaces
from iqdbc.car.interfaces import MAX_CTRL_SPEED
from iqdbc.car.toyota.values import ToyotaFlags
from openpilot.selfdrive.selfdrived.events import Events

View File

@@ -15,12 +15,12 @@ from openpilot.common.params import Params, UnknownKeyName
from openpilot.common.realtime import config_realtime_process, lock_memory, Priority, Ratekeeper
from openpilot.common.swaglog import cloudlog, ForwardingHandler
from opendbc.car import DT_CTRL, structs
from opendbc.car.can_definitions import CanData, CanRecvCallable, CanSendCallable
from opendbc.car.carlog import carlog
from opendbc.car.fw_versions import ObdCallback
from opendbc.car.car_helpers import get_car, interfaces
from opendbc.car.interfaces import CarInterfaceBase, RadarInterfaceBase
from iqdbc.car import DT_CTRL, structs
from iqdbc.car.can_definitions import CanData, CanRecvCallable, CanSendCallable
from iqdbc.car.carlog import carlog
from iqdbc.car.fw_versions import ObdCallback
from iqdbc.car.car_helpers import get_car, interfaces
from iqdbc.car.interfaces import CarInterfaceBase, RadarInterfaceBase
from openpilot.selfdrive.pandad import can_capnp_to_list, can_list_to_can_capnp
from openpilot.selfdrive.car.cruise import VCruiseHelper
from openpilot.selfdrive.car.helpers import convert_iq_car_control_compact, convert_to_capnp

View File

@@ -4,7 +4,7 @@ import numpy as np
from cereal import car
from openpilot.common.constants import CV
from cereal import car, custom
from opendbc.car import structs
from iqdbc.car import structs
from openpilot.common.params import Params
from openpilot.iqpilot.selfdrive.car.long_increments import LongIncrementConfig, read_long_increment_config, resolve_button_step
@@ -44,15 +44,16 @@ def get_minimum_set_speed_kph(_is_metric: bool) -> float:
def update_manual_button_timers(CS: car.CarState, button_timers: dict[car.CarState.ButtonEvent.Type, int]) -> None:
# increment timer for buttons still pressed
for k in button_timers:
if button_timers[k] > 0:
button_timers[k] += 1
# age any button that's currently held (nonzero timer)
for btn, held_frames in button_timers.items():
if held_frames > 0:
button_timers[btn] = held_frames + 1
for b in CS.buttonEvents:
if b.type.raw in button_timers:
# Start/end timer and store current state on change of button pressed
button_timers[b.type.raw] = 1 if b.pressed else 0
# a press/release edge (re)starts the timer at 1 or clears it to 0
for event in CS.buttonEvents:
raw = event.type.raw
if raw in button_timers:
button_timers[raw] = 1 if event.pressed else 0
class VCruiseHelperIQ:
@@ -136,20 +137,21 @@ class VCruiseHelperIQ:
self.v_cruise_min = get_minimum_set_speed_kph(is_metric)
def update_enabled_state(self, CS: car.CarState, enabled: bool) -> bool:
# special enabled state for non pcmCruiseSpeed, unchanged for non pcmCruise
if not self.CP_IQ.pcmCruiseSpeed:
update_manual_button_timers(CS, self.enable_button_timers)
button_pressed = any(self.enable_button_timers[k] > 0 for k in self.enable_button_timers)
# pcmCruiseSpeed cars keep the stock enabled flag; others gate engagement on button release
if self.CP_IQ.pcmCruiseSpeed:
return enabled
if enabled and not self.enabled_prev:
self.enabled_prev = not button_pressed
enabled = False
elif not enabled:
self.enabled_prev = enabled
update_manual_button_timers(CS, self.enable_button_timers)
button_pressed = any(t > 0 for t in self.enable_button_timers.values())
return enabled and self.enabled_prev
if enabled and not self.enabled_prev:
# first engage frame while the button is still down: hold off until it's let go
self.enabled_prev = not button_pressed
return False
if not enabled:
self.enabled_prev = False
return enabled
return enabled and self.enabled_prev
def update_speed_limit_assist(self, is_metric, LP_IQ: custom.IQPlan) -> None:
resolver = LP_IQ.speedLimit.resolver
@@ -162,7 +164,9 @@ class VCruiseHelperIQ:
@property
def update_speed_limit_final_last_changed(self) -> bool:
return self.has_speed_limit and bool(self.speed_limit_final_last_kph != self.prev_speed_limit_final_last_kph)
if not self.has_speed_limit:
return False
return self.speed_limit_final_last_kph != self.prev_speed_limit_final_last_kph
def update_speed_limit_assist_v_cruise_non_pcm(self) -> None:
if self.set_speed_to_limit and \

View File

@@ -3,7 +3,7 @@ import argparse
import os
from openpilot.common.basedir import BASEDIR
from opendbc.car.docs import get_all_car_docs, generate_cars_md
from iqdbc.car.docs import get_all_car_docs, generate_cars_md
CARS_MD_OUT = os.path.join(BASEDIR, "docs", "CARS.md")
CARS_MD_TEMPLATE = os.path.join(BASEDIR, "selfdrive", "car", "CARS_template.md")

View File

@@ -2,7 +2,7 @@ import capnp
from typing import Any
from cereal import custom
from opendbc.car import structs
from iqdbc.car import structs
_FIELDS = '__dataclass_fields__' # copy of dataclasses._FIELDS

View File

@@ -5,11 +5,11 @@ from parameterized import parameterized
from types import SimpleNamespace
from cereal import car, custom
from opendbc.car import DT_CTRL
from opendbc.car.structs import CarParams
from opendbc.car.tests.test_car_interfaces import get_fuzzy_car_interface
from opendbc.car.mock.values import CAR as MOCK
from opendbc.car.values import PLATFORMS
from iqdbc.car import DT_CTRL
from iqdbc.car.structs import CarParams
from iqdbc.car.tests.test_car_interfaces import get_fuzzy_car_interface
from iqdbc.car.mock.values import CAR as MOCK
from iqdbc.car.values import PLATFORMS
from openpilot.selfdrive.car.card import run_optional_pre_init
from openpilot.selfdrive.car.helpers import convert_iq_car_control, convert_iq_car_control_compact
from openpilot.selfdrive.controls.lib.latcontrol_angle import LatControlAngle

View File

@@ -1,7 +1,7 @@
from types import SimpleNamespace
from cereal import log
from opendbc.car import structs
from iqdbc.car import structs
from openpilot.selfdrive.car.car_specific import CarSpecificEvents

View File

@@ -41,7 +41,7 @@ class TestCruiseSpeed:
cruise_speed = float(self.speed)
simulation_steady_state = run_cruise_simulation(cruise_speed, self.e2e, self.personality)
assert simulation_steady_state == pytest.approx(cruise_speed, abs=1.5), f'Did not reach {self.speed} m/s'
assert simulation_steady_state == pytest.approx(cruise_speed, abs=.01), f'Did not reach {self.speed} m/s'
# TODO: test pcmCruise and pcmCruiseSpeed

View File

@@ -1,7 +1,7 @@
import os
from openpilot.common.basedir import BASEDIR
from opendbc.car.docs import generate_cars_md, get_all_car_docs
from iqdbc.car.docs import generate_cars_md, get_all_car_docs
from openpilot.selfdrive.debug.dump_car_docs import dump_car_docs
from openpilot.selfdrive.debug.print_docs_diff import print_car_docs_diff
from openpilot.selfdrive.car.docs import CARS_MD_TEMPLATE

View File

@@ -9,15 +9,15 @@ import hypothesis.strategies as st
from hypothesis import Phase, given, settings
from parameterized import parameterized_class
from opendbc.car import DT_CTRL, gen_empty_fingerprint, structs
from opendbc.car.can_definitions import CanData
from opendbc.car.car_helpers import FRAME_FINGERPRINT, interfaces
from opendbc.car.fingerprints import MIGRATION
from opendbc.car.honda.values import CAR as HONDA, HondaFlags
from opendbc.car.structs import car
from opendbc.car.tests.routes import non_tested_cars, routes, CarTestRoute
from opendbc.car.values import Platform, PLATFORMS
from opendbc.safety.tests.libsafety import libsafety_py
from iqdbc.car import DT_CTRL, gen_empty_fingerprint, structs
from iqdbc.car.can_definitions import CanData
from iqdbc.car.car_helpers import FRAME_FINGERPRINT, interfaces
from iqdbc.car.fingerprints import MIGRATION
from iqdbc.car.honda.values import CAR as HONDA, HondaFlags
from iqdbc.car.structs import car
from iqdbc.car.tests.routes import non_tested_cars, routes, CarTestRoute
from iqdbc.car.values import Platform, PLATFORMS
from iqdbc.safety.tests.libsafety import libsafety_py
from openpilot.common.basedir import BASEDIR
from openpilot.selfdrive.pandad import can_capnp_to_list
from openpilot.selfdrive.test.helpers import read_segment_list