diff --git a/opendbc_repo/opendbc/car/hyundai/values.py b/opendbc_repo/opendbc/car/hyundai/values.py index f68f77cf0..96e19dcb2 100644 --- a/opendbc_repo/opendbc/car/hyundai/values.py +++ b/opendbc_repo/opendbc/car/hyundai/values.py @@ -739,7 +739,7 @@ class CAR(Platforms): HyundaiCarDocs("Kia EV6 (without HDA II) 2022-24", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_l])), HyundaiCarDocs("Kia EV6 (with HDA II) 2022-24", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])) ], - CarSpecs(mass=2055, wheelbase=2.9, steerRatio=16, tireStiffnessFactor=0.65), + CarSpecs(mass=2055, wheelbase=2.9, steerRatio=14.25, tireStiffnessFactor=0.65), flags=HyundaiFlags.EV, radar_dbc=HYUNDAI_MRR30_RADAR_DBC, ) @@ -747,7 +747,7 @@ class CAR(Platforms): [ HyundaiCarDocs("Kia EV6 (with HDA I) 2025", "Highway Driving Assist I", car_parts=CarParts.common([CarHarness.hyundai_p])) ], - CarSpecs(mass=2055, wheelbase=2.9, steerRatio=16, tireStiffnessFactor=0.65), + CarSpecs(mass=2055, wheelbase=2.9, steerRatio=14.26, tireStiffnessFactor=0.65), flags=HyundaiFlags.EV | HyundaiFlags.CANFD_ANGLE_STEERING, radar_dbc=HYUNDAI_MRR30_RADAR_DBC, ) diff --git a/selfdrive/controls/lib/latcontrol_torque.py b/selfdrive/controls/lib/latcontrol_torque.py index ebc4f0730..253890803 100644 --- a/selfdrive/controls/lib/latcontrol_torque.py +++ b/selfdrive/controls/lib/latcontrol_torque.py @@ -642,13 +642,13 @@ KIA_EV6_LOW_SPEED_CENTER_TAPER_SPEED_MAX = 8.5 KIA_EV6_LOW_SPEED_CENTER_TAPER_SPEED_WIDTH = 1.4 VOLT_PLEXY_LATERAL_TESTING_GROUND_ID = testing_ground.id_7 -VOLT_PLEXY_FF_EXTRA_MULT_LEFT = 1.10 -VOLT_PLEXY_FF_EXTRA_MULT_RIGHT = 1.22 -VOLT_PLEXY_FRICTION_SCALE_MULT_LEFT = 1.04 -VOLT_PLEXY_FRICTION_SCALE_MULT_RIGHT = 1.08 -VOLT_PLEXY_FRICTION_THRESHOLD_MULT_LEFT = 0.95 -VOLT_PLEXY_FRICTION_THRESHOLD_MULT_RIGHT = 0.93 -VOLT_PLEXY_CENTER_TAPER_REDUCTION_MULT = 0.80 +VOLT_PLEXY_FF_EXTRA_MULT_LEFT = 1.00 +VOLT_PLEXY_FF_EXTRA_MULT_RIGHT = 1.16 +VOLT_PLEXY_FRICTION_SCALE_MULT_LEFT = 1.00 +VOLT_PLEXY_FRICTION_SCALE_MULT_RIGHT = 1.05 +VOLT_PLEXY_FRICTION_THRESHOLD_MULT_LEFT = 1.00 +VOLT_PLEXY_FRICTION_THRESHOLD_MULT_RIGHT = 0.96 +VOLT_PLEXY_CENTER_TAPER_REDUCTION_MULT = 0.94 PRIUS_TRANSITION_SPEED = 10.0 PRIUS_PHASE_SCALE = 0.09 PRIUS_FF_GAIN_LEFT = 0.12 diff --git a/tools/lib/logreader.py b/tools/lib/logreader.py index f9a90490b..9bd992d4f 100755 --- a/tools/lib/logreader.py +++ b/tools/lib/logreader.py @@ -6,6 +6,7 @@ import capnp import enum import os import pathlib +import re import sys import tqdm import urllib.parse @@ -20,6 +21,7 @@ from cereal import log as capnp_log from openpilot.common.swaglog import cloudlog from openpilot.tools.lib.filereader import FileReader from openpilot.tools.lib.file_sources import comma_api_source, internal_source, openpilotci_source, comma_car_segments_source, Source +from openpilot.tools.lib.helpers import RE from openpilot.tools.lib.route import SegmentRange, FileName from openpilot.tools.lib.log_time_series import msgs_to_time_series @@ -221,6 +223,19 @@ def parse_indirect(identifier: str) -> str: else: # add selector if it exists identifier = "/".join(path) + else: + bare_connect_path = re.fullmatch( + fr'(?P{RE.DONGLE_ID}[|_/](?:{RE.TIMESTAMP}|{RE.LOG_ID_V2}))/(?P[0-9]+)/(?P[0-9]+)(?:/(?P[qrai]))?', + identifier, + ) + if bare_connect_path is not None: + route_name = bare_connect_path.group("route_name") + start = int(bare_connect_path.group("start_sec")) // 60 + end = int(bare_connect_path.group("end_sec")) // 60 + 1 + identifier = f"{route_name}/{start}:{end}" + selector = bare_connect_path.group("selector") + if selector is not None: + identifier += f"/{selector}" return identifier diff --git a/tools/lib/tests/test_logreader.py b/tools/lib/tests/test_logreader.py index ee75a8b1c..b87d1fc5d 100644 --- a/tools/lib/tests/test_logreader.py +++ b/tools/lib/tests/test_logreader.py @@ -90,6 +90,15 @@ class TestLogReader: sr = SegmentRange(identifier) assert str(sr) == expected + @parameterized.expand([ + (f"{TEST_ROUTE}/13/14", f"{TEST_ROUTE}/0:1"), + (f"{TEST_ROUTE}/13/14/a", f"{TEST_ROUTE}/0:1/a"), + (f"https://connect.comma.ai/{TEST_ROUTE}/13/14", f"{TEST_ROUTE}/0:1"), + (f"https://connect.comma.ai/{TEST_ROUTE}/13/14/a", f"{TEST_ROUTE}/0:1/a"), + ]) + def test_parse_indirect_accepts_second_window_route_style(self, identifier, expected): + assert parse_indirect(identifier) == expected + @pytest.mark.parametrize("cache_enabled", [True, False]) def test_direct_parsing(self, mocker, cache_enabled): file_exists_mock = mocker.patch("openpilot.tools.lib.filereader.file_exists")