Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions opendbc_repo/opendbc/car/hyundai/interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,9 @@ def _get_params(ret: structs.CarParams, candidate, fingerprint, car_fw, alpha_lo
if all(fingerprint[CAN.ACAN].get(addr) == 32 for addr in range(0x180, 0x185)):
ret.extFlags |= HyundaiExtFlags.CORNER_RADAR_OBJECTS_180.value
print("##### Corner radar objects 0x180 group detected")
if all(fingerprint[CAN.ACAN].get(addr) == 32 for addr in tuple(range(0x430, 0x438)) + tuple(range(0x440, 0x448))):
ret.extFlags |= HyundaiExtFlags.CORNER_RADAR_OBJECTS_430.value
print("##### Corner radar objects 0x430/0x440 group detected")
# 0x430/0x440 corner radar bins are visible on IONIQ 9, but their object
# layout is not validated enough for RadarData. Keep the frames available
# for offline analysis without promoting them into live corner tracks.

# detect HDA2 with ADAS Driving ECU
if hda2:
Expand Down
5 changes: 4 additions & 1 deletion opendbc_repo/opendbc/car/hyundai/radar_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,10 @@ def __init__(self, CP):
self.radar_tracks = self.params.get_int("EnableRadarTracks") >= 1
self.corner_object_tracks = bool(CP.extFlags & HyundaiExtFlags.CORNER_RADAR_OBJECTS_235.value) and self.params.get_int("EnableCornerRadar") > 0
self.corner_object_180_tracks = bool(CP.extFlags & HyundaiExtFlags.CORNER_RADAR_OBJECTS_180.value) and self.params.get_int("EnableCornerRadar") > 0
self.corner_object_430_tracks = bool(CP.extFlags & HyundaiExtFlags.CORNER_RADAR_OBJECTS_430.value) and self.params.get_int("EnableCornerRadar") > 0
# 0x430/0x440 bins are not promoted to RadarData until their object layout
# is validated. Parsing them as tracks produced false side objects and
# phantom braking on IONIQ 9.
self.corner_object_430_tracks = False
self.updated_tracks = set()
self.updated_scc = set()
self.updated_corner_objects = set()
Expand Down
16 changes: 6 additions & 10 deletions opendbc_repo/opendbc/car/hyundai/tests/test_radar.py
Original file line number Diff line number Diff line change
Expand Up @@ -360,8 +360,10 @@ def update_frames(radar_interface, packets, frames=5):
radar_data = radar_interface.update([0, packets])
return radar_data

def test_430_promotes_supported_neighbor_bins(self, monkeypatch):
def test_430_bins_are_not_promoted_to_live_tracks(self, monkeypatch):
radar_interface = self.build_interface(monkeypatch)
assert radar_interface.rcp_corner_objects_430 is None

empty = self.message({})
supported_bins = self.message({
6: self.slot_word(1000),
Expand All @@ -371,13 +373,8 @@ def test_430_promotes_supported_neighbor_bins(self, monkeypatch):
packets += [(addr, empty, 1) for addr in range(0x440, 0x448)]

radar_data = self.update_frames(radar_interface, packets)
points = {point.trackId: point for point in radar_data.points}

assert points[300].measured
assert str(points[300].radarSource) == "corner430"
assert points[300].dRel == pytest.approx(50.1)
assert points[300].yRel == pytest.approx(2.0)
assert points[300].yvRel == 0.0
assert all(str(point.radarSource) != "corner430" for point in radar_data.points)

def test_430_expires_noncenter_inward_yvrel(self, monkeypatch):
radar_interface = self.build_interface(monkeypatch)
Expand All @@ -404,6 +401,5 @@ def test_430_expires_noncenter_inward_yvrel(self, monkeypatch):
radar_data = self.update_frames(radar_interface, packets, frames=3)
points = {point.trackId: point for point in radar_data.points}

assert points[300].measured
assert points[300].yRel == pytest.approx(2.0)
assert points[300].yvRel == 0.0
assert 300 not in points
assert all(str(point.radarSource) != "corner430" for point in points.values())
Loading