From a6e9c34a024366bfa79e3d569995f2e2b125a20e Mon Sep 17 00:00:00 2001 From: Rick Lan Date: Mon, 31 Mar 2025 15:29:19 +0800 Subject: [PATCH] Ext Radar - 2025/05/27 --- common/params_keys.h | 1 + opendbc_repo/opendbc/car/radar_interface.py | 181 +++++ opendbc_repo/opendbc/car/structs.py | 1 + opendbc_repo/opendbc/dbc/u_radar.dbc | 786 ++++++++++++++++++++ selfdrive/car/card.py | 4 + selfdrive/ui/qt/offroad/dp_panel.cc | 10 + system/manager/manager.py | 1 + 7 files changed, 984 insertions(+) create mode 100644 opendbc_repo/opendbc/car/radar_interface.py create mode 100644 opendbc_repo/opendbc/dbc/u_radar.dbc diff --git a/common/params_keys.h b/common/params_keys.h index b576f1a97..03d5c457b 100644 --- a/common/params_keys.h +++ b/common/params_keys.h @@ -119,4 +119,5 @@ inline static std::unordered_map keys = { {"Version", PERSISTENT}, {"dp_device_last_log", CLEAR_ON_MANAGER_START}, {"dp_device_reset_conf", CLEAR_ON_MANAGER_START}, + {"dp_lon_ext_radar", PERSISTENT}, }; diff --git a/opendbc_repo/opendbc/car/radar_interface.py b/opendbc_repo/opendbc/car/radar_interface.py new file mode 100644 index 000000000..64456ca43 --- /dev/null +++ b/opendbc_repo/opendbc/car/radar_interface.py @@ -0,0 +1,181 @@ +''' +MIT Non-Commercial License +Copyright (c) 2025 Rick Lan + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, for non-commercial purposes only, subject to the following conditions: + +- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +- Commercial use (e.g., use in a product, service, or activity intended to generate revenue) is prohibited without explicit written permission from Rick Lan. Contact ricklan@gmail.com for inquiries. +- Any project that uses the Software must visibly mention the following acknowledgment: "This project uses software from Rick Lan and is licensed under a custom license requiring permission for use." + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +''' + +from opendbc.car.interfaces import RadarInterfaceBase +from opendbc.can.parser import CANParser +from opendbc.car.structs import RadarData +from typing import List, Tuple + +DREL_OFFSET = -1.2 # car head to radar +MAX_OBJECTS = 50 +MAX_LAT_DIST = 5. # lat distance +RCS_MIN = 0. +RCS_MAX = 30. + +STATIONARY_OBJ_VREL = -20. +STATIONARY_OBJ_LAT_DIST = 3. + +# Constants for static point filtering +# 33hz * 5 secs for decay +INITIAL_SCORE = 33*5 + +def _create_radar_parser(): + messages = [("ObjectData", 0)] + messages += [(f"ObjectData_{i}", 0) for i in range(MAX_OBJECTS)] + return CANParser('u_radar', messages, 1) + + +class RadarInterface(RadarInterfaceBase): + def __init__(self, CP): + super().__init__(CP) + + self.updated_messages = set() + self.objs: dict[int, dict] = {} + + self.rcp = _create_radar_parser() + + self._radar_points = {} + self._radar_point_properties = {} + + + def _create_parsable_object_can_strings(self, can_strings: List[Tuple]) -> Tuple[List[Tuple], int]: + """Optimized object string parsing with minimal allocations.""" + if not can_strings or not isinstance(can_strings[0], tuple) or len(can_strings[0]) < 2: + return [], 0 + + # Pre-allocate list with known maximum size + new_list = [] + new_list_append = new_list.append # Local reference for faster access + + records = can_strings[0][1] + id_num = 1 + + for record in records: + if id_num > MAX_OBJECTS: + break + + if record[0] == 0x60B: + new_list_append((id_num + 383, record[1], record[2])) + id_num += 1 + + return [(can_strings[0][0], new_list)], len(new_list) + + # called by card.py, 100hz + def update(self, can_strings): + self.frame += 1 + if self.rcp is None: + return super().update(None) + + vls = self.rcp.update_strings(can_strings) + self.updated_messages.update(vls) + + # update radar points + if 0x60B in self.updated_messages: + # parse objects, stored into objs array + parsable_can_string, size = self._create_parsable_object_can_strings(can_strings) + self.rcp.update_strings(parsable_can_string) + + # Batch update objects + for i in range(size): + cpt = self.rcp.vl[f'ObjectData_{i}'] + + track_id = int(cpt['ID']) + + prev_track = self._radar_points[track_id] if track_id in self._radar_points else None + + if prev_track is None: + self._radar_points[track_id] = RadarData.RadarPoint() + self._radar_points[track_id].trackId = track_id + + if track_id not in self._radar_point_properties: + self._radar_point_properties[track_id] = { + 'class': 0, + 'rcs': 0., + 'movement': 0, + 'score': INITIAL_SCORE, + } + + # radarPoint + self._radar_points[track_id].yvRel = float(cpt['VRelLat']) + self._radar_points[track_id].dRel = float(cpt['DistLong']) + DREL_OFFSET + self._radar_points[track_id].yRel = -float(cpt['DistLat']) + self._radar_points[track_id].vRel = float(cpt['VRelLong']) + self._radar_points[track_id].aRel = float('nan') + self._radar_points[track_id].measured = True + + # other properties + self._radar_point_properties[track_id] = { + 'class': int(cpt['Class']), + 'rcs': float(cpt['RCS']), + 'movement': int(cpt['DynProp']), + } + + # reset score when: + # 1. it was not previously exists + # 2. object has moved + if prev_track is None or \ + 'score' not in self._radar_point_properties[track_id] or \ + ( + prev_track.dRel != self._radar_points[track_id].dRel or \ + prev_track.yRel != self._radar_points[track_id].yRel or \ + prev_track.vRel != self._radar_point_properties[track_id].vRel or \ + prev_track.yvRel != self._radar_point_properties[track_id].yvRel + ): + self._radar_point_properties[track_id]['score'] = INITIAL_SCORE + + self.updated_messages.clear() + + # published to liveTracks via card.py + # liveTracks is 20hz + # radard.py subscribed liveTracks, and is running at 20hz + # publish at 33 hz + if self.frame % 3 == 0: + for track_id in list(self._radar_points.keys()): + should_remove = False + if track_id in self._radar_point_properties: + # decay + self._radar_point_properties[track_id]['score'] -= 1 + + # idle too long + if not should_remove and self._radar_point_properties[track_id]['score'] < 0: + should_remove = True + + # on coming + if not should_remove and self._radar_point_properties[track_id]['movement'] == 2: + should_remove = True + + # ignore stationary object on the left/right when driving fast + if not should_remove and self._radar_points[track_id].vRel < STATIONARY_OBJ_VREL and abs(self._radar_points[track_id].yRel) > STATIONARY_OBJ_LAT_DIST: + should_remove = True + + # RCS (radar cross section) not within the range + if not should_remove and not (RCS_MIN <= self._radar_point_properties[track_id]['rcs'] <= RCS_MAX): + should_remove = True + + # object is outside the lat dist (too far left or too far right) + if not should_remove and abs(self._radar_points[track_id].yRel) > MAX_LAT_DIST: + should_remove = True + + # we don't need to remove elements in self._radar_points_properties (not necessary) + if should_remove and track_id in self.pts: + del self._radar_points[track_id] + + # update pts array + self.pts = self._radar_points + + ret = RadarData() + ret.points = list(self.pts.values()) if self.pts else [] + return ret + + # return None to card.py so it will not try to publish to liveTracks + return None diff --git a/opendbc_repo/opendbc/car/structs.py b/opendbc_repo/opendbc/car/structs.py index 0959d5c75..d83376c68 100644 --- a/opendbc_repo/opendbc/car/structs.py +++ b/opendbc_repo/opendbc/car/structs.py @@ -20,4 +20,5 @@ CarControlT = capnp.lib.capnp._StructModule CarParamsT = capnp.lib.capnp._StructModule class DPFlags: + ExtRadar = 2 pass diff --git a/opendbc_repo/opendbc/dbc/u_radar.dbc b/opendbc_repo/opendbc/dbc/u_radar.dbc new file mode 100644 index 000000000..7a21e45d0 --- /dev/null +++ b/opendbc_repo/opendbc/dbc/u_radar.dbc @@ -0,0 +1,786 @@ + + +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: RADAR + +BO_ 513 RadarState: 8 XXX + SG_ NVMReadStatus : 6|1@0+ (1,0) [0|1] "" XXX + SG_ NVMWriteStatus : 7|1@0+ (1,0) [0|1] "" XXX + SG_ MaxDistanceCfg : 15|10@0+ (2,0) [0|2046] "m" XXX + SG_ RadarPowerCfg : 25|3@0+ (1,0) [0|7] "" XXX + SG_ SensorID : 34|3@0+ (1,0) [0|7] "" XXX + SG_ SortIndex : 38|3@0+ (1,0) [0|7] "" XXX + SG_ CtrlRelayCfg : 41|1@0+ (1,0) [0|1] "" XXX + SG_ OutputTypeCfg : 43|2@0+ (1,0) [0|3] "" XXX + SG_ QualityInfoCfg : 44|1@0+ (1,0) [0|1] "" XXX + SG_ ExtInfoCfg : 45|1@0+ (1,0) [0|1] "" XXX + SG_ CANBaudRate : 55|3@0+ (1,0) [0|7] "" XXX + SG_ InterfaceType : 57|2@0+ (1,0) [0|3] "" XXX + SG_ RCSThreshold : 58|3@1+ (1,0) [0|7] "" XXX + SG_ CalibrationEnabled : 63|2@0+ (1,0) [0|3] "" XXX + +VAL_ 513 NVMReadStatus 0 "Failed" 1 "Successful"; +VAL_ 513 NVMWriteStatus 0 "Failed" 1 "Successful"; +VAL_ 513 RadarPowerCfg 0 "Standard" 1 "-3dB Gain" 2 "-6dB Gain" 3 "-9dB Gain"; +VAL_ 513 SortIndex 0 "No Sorting" 1 "Sort By Range" 2 "Sort By RCS"; +VAL_ 513 CtrlRelayCfg 0 "Off" 1 "On"; +VAL_ 513 OutputTypeCfg 0 "None" 1 "Objects" 2 "Clusters"; +VAL_ 513 QualityInfoCfg 0 "Off" 1 "On"; +VAL_ 513 ExtInfoCfg 0 "Off" 1 "On"; +VAL_ 513 CANBaudRate 0 "500K" 1 "250K" 2 "1M"; +VAL_ 513 RCSThreshold 0 "Standard" 1 "High Sensitivity"; +VAL_ 513 CalibrationEnabled 1 "Enabled" 2 "Initial Recovery"; + +BO_ 1546 Status: 8 RADAR + SG_ NoOfObjects : 7|8@0+ (1,0) [0|255] "" XXX + SG_ MeasCount : 15|16@0+ (1,0) [0|65535] "" XXX + SG_ InterfaceVersion : 31|4@0+ (1,0) [0|15] "" XXX + +BO_ 1547 ObjectData: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 1547 "Object detection and tracking information"; +VAL_ 1547 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 1547 Class 0 "point" 1 "vehicle"; + +BO_ 383 ObjectData_0: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 383 "Object detection and tracking information"; +VAL_ 383 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 383 Class 0 "point" 1 "vehicle"; + +BO_ 384 ObjectData_1: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 384 "Object detection and tracking information"; +VAL_ 384 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 384 Class 0 "point" 1 "vehicle"; + +BO_ 385 ObjectData_2: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 385 "Object detection and tracking information"; +VAL_ 385 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 385 Class 0 "point" 1 "vehicle"; + +BO_ 386 ObjectData_3: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 386 "Object detection and tracking information"; +VAL_ 386 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 386 Class 0 "point" 1 "vehicle"; + +BO_ 387 ObjectData_4: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 387 "Object detection and tracking information"; +VAL_ 387 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 387 Class 0 "point" 1 "vehicle"; + +BO_ 388 ObjectData_5: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 388 "Object detection and tracking information"; +VAL_ 388 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 388 Class 0 "point" 1 "vehicle"; + +BO_ 389 ObjectData_6: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 389 "Object detection and tracking information"; +VAL_ 389 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 389 Class 0 "point" 1 "vehicle"; + +BO_ 390 ObjectData_7: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 390 "Object detection and tracking information"; +VAL_ 390 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 390 Class 0 "point" 1 "vehicle"; + +BO_ 391 ObjectData_8: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 391 "Object detection and tracking information"; +VAL_ 391 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 391 Class 0 "point" 1 "vehicle"; + +BO_ 392 ObjectData_9: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 392 "Object detection and tracking information"; +VAL_ 392 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 392 Class 0 "point" 1 "vehicle"; + +BO_ 393 ObjectData_10: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 393 "Object detection and tracking information"; +VAL_ 393 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 393 Class 0 "point" 1 "vehicle"; + +BO_ 394 ObjectData_11: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 394 "Object detection and tracking information"; +VAL_ 394 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 394 Class 0 "point" 1 "vehicle"; + +BO_ 395 ObjectData_12: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 395 "Object detection and tracking information"; +VAL_ 395 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 395 Class 0 "point" 1 "vehicle"; + +BO_ 396 ObjectData_13: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 396 "Object detection and tracking information"; +VAL_ 396 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 396 Class 0 "point" 1 "vehicle"; + +BO_ 397 ObjectData_14: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 397 "Object detection and tracking information"; +VAL_ 397 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 397 Class 0 "point" 1 "vehicle"; + +BO_ 398 ObjectData_15: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 398 "Object detection and tracking information"; +VAL_ 398 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 398 Class 0 "point" 1 "vehicle"; + +BO_ 399 ObjectData_16: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 399 "Object detection and tracking information"; +VAL_ 399 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 399 Class 0 "point" 1 "vehicle"; + +BO_ 400 ObjectData_17: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 400 "Object detection and tracking information"; +VAL_ 400 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 400 Class 0 "point" 1 "vehicle"; + +BO_ 401 ObjectData_18: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 401 "Object detection and tracking information"; +VAL_ 401 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 401 Class 0 "point" 1 "vehicle"; + +BO_ 402 ObjectData_19: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 402 "Object detection and tracking information"; +VAL_ 402 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 402 Class 0 "point" 1 "vehicle"; + +BO_ 403 ObjectData_20: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 403 "Object detection and tracking information"; +VAL_ 403 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 403 Class 0 "point" 1 "vehicle"; + +BO_ 404 ObjectData_21: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 404 "Object detection and tracking information"; +VAL_ 404 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 404 Class 0 "point" 1 "vehicle"; + +BO_ 405 ObjectData_22: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 405 "Object detection and tracking information"; +VAL_ 405 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 405 Class 0 "point" 1 "vehicle"; + +BO_ 406 ObjectData_23: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 406 "Object detection and tracking information"; +VAL_ 406 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 406 Class 0 "point" 1 "vehicle"; + +BO_ 407 ObjectData_24: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 407 "Object detection and tracking information"; +VAL_ 407 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 407 Class 0 "point" 1 "vehicle"; + +BO_ 408 ObjectData_25: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 408 "Object detection and tracking information"; +VAL_ 408 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 408 Class 0 "point" 1 "vehicle"; + +BO_ 409 ObjectData_26: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 409 "Object detection and tracking information"; +VAL_ 409 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 409 Class 0 "point" 1 "vehicle"; + +BO_ 410 ObjectData_27: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 410 "Object detection and tracking information"; +VAL_ 410 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 410 Class 0 "point" 1 "vehicle"; + +BO_ 411 ObjectData_28: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 411 "Object detection and tracking information"; +VAL_ 411 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 411 Class 0 "point" 1 "vehicle"; + +BO_ 412 ObjectData_29: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 412 "Object detection and tracking information"; +VAL_ 412 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 412 Class 0 "point" 1 "vehicle"; + +BO_ 413 ObjectData_30: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 413 "Object detection and tracking information"; +VAL_ 413 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 413 Class 0 "point" 1 "vehicle"; + +BO_ 414 ObjectData_31: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 414 "Object detection and tracking information"; +VAL_ 414 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 414 Class 0 "point" 1 "vehicle"; + +BO_ 415 ObjectData_32: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 415 "Object detection and tracking information"; +VAL_ 415 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 415 Class 0 "point" 1 "vehicle"; + +BO_ 416 ObjectData_33: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 416 "Object detection and tracking information"; +VAL_ 416 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 416 Class 0 "point" 1 "vehicle"; + +BO_ 417 ObjectData_34: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 417 "Object detection and tracking information"; +VAL_ 417 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 417 Class 0 "point" 1 "vehicle"; + +BO_ 418 ObjectData_35: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 418 "Object detection and tracking information"; +VAL_ 418 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 418 Class 0 "point" 1 "vehicle"; + +BO_ 419 ObjectData_36: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 419 "Object detection and tracking information"; +VAL_ 419 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 419 Class 0 "point" 1 "vehicle"; + +BO_ 420 ObjectData_37: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 420 "Object detection and tracking information"; +VAL_ 420 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 420 Class 0 "point" 1 "vehicle"; + +BO_ 421 ObjectData_38: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 421 "Object detection and tracking information"; +VAL_ 421 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 421 Class 0 "point" 1 "vehicle"; + +BO_ 422 ObjectData_39: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 422 "Object detection and tracking information"; +VAL_ 422 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 422 Class 0 "point" 1 "vehicle"; + +BO_ 423 ObjectData_40: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 423 "Object detection and tracking information"; +VAL_ 423 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 423 Class 0 "point" 1 "vehicle"; + +BO_ 424 ObjectData_41: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 424 "Object detection and tracking information"; +VAL_ 424 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 424 Class 0 "point" 1 "vehicle"; + +BO_ 425 ObjectData_42: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 425 "Object detection and tracking information"; +VAL_ 425 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 425 Class 0 "point" 1 "vehicle"; + +BO_ 426 ObjectData_43: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 426 "Object detection and tracking information"; +VAL_ 426 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 426 Class 0 "point" 1 "vehicle"; + +BO_ 427 ObjectData_44: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 427 "Object detection and tracking information"; +VAL_ 427 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 427 Class 0 "point" 1 "vehicle"; + +BO_ 428 ObjectData_45: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 428 "Object detection and tracking information"; +VAL_ 428 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 428 Class 0 "point" 1 "vehicle"; + +BO_ 429 ObjectData_46: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 429 "Object detection and tracking information"; +VAL_ 429 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 429 Class 0 "point" 1 "vehicle"; + +BO_ 430 ObjectData_47: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 430 "Object detection and tracking information"; +VAL_ 430 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 430 Class 0 "point" 1 "vehicle"; + +BO_ 431 ObjectData_48: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 431 "Object detection and tracking information"; +VAL_ 431 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 431 Class 0 "point" 1 "vehicle"; + +BO_ 432 ObjectData_49: 8 RADAR + SG_ ID : 7|8@0+ (1,0) [0|255] "" XXX + SG_ DistLong : 15|13@0+ (0.2,-500) [-500|1138.2] "m" XXX + SG_ DistLat : 18|11@0+ (0.2,-204.6) [-204.6|204.8] "m" XXX + SG_ VRelLong : 39|10@0+ (0.25,-128) [-128|127.75] "m/s" XXX + SG_ VRelLat : 45|9@0+ (0.25,-64) [-64|63.75] "m/s" XXX + SG_ DynProp : 50|3@0+ (1,0) [0|7] "" XXX + SG_ Class : 52|2@0+ (1,0) [0|3] "" XXX + SG_ RCS : 63|8@0+ (0.5,-64) [-64|63.75] "dBm2" XXX + +CM_ BO_ 432 "Object detection and tracking information"; +VAL_ 432 DynProp 0 "moving" 1 "stationary" 2 "oncoming" 3 "crossing_left" 4 "crossing_right" 5 "unknown" 6 "stopped"; +VAL_ 432 Class 0 "point" 1 "vehicle"; + diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py index 714ca2009..1c36de6df 100755 --- a/selfdrive/car/card.py +++ b/selfdrive/car/card.py @@ -109,6 +109,10 @@ class Car: self.CI, self.CP = CI, CI.CP self.RI = RI + if self.params.get_bool("dp_lon_ext_radar"): + from opendbc.car.radar_interface import RadarInterface + self.RI = RadarInterface(self.CI.CP) + # set alternative experiences from parameters disengage_on_accelerator = self.params.get_bool("DisengageOnAccelerator") self.CP.alternativeExperience = 0 diff --git a/selfdrive/ui/qt/offroad/dp_panel.cc b/selfdrive/ui/qt/offroad/dp_panel.cc index 548b02be5..35ee7141c 100644 --- a/selfdrive/ui/qt/offroad/dp_panel.cc +++ b/selfdrive/ui/qt/offroad/dp_panel.cc @@ -139,6 +139,11 @@ void DPPanel::add_longitudinal_toggles() { QString::fromUtf8("🐉 ") + tr("Longitudinal Ctrl"), "", }, + { + "dp_lon_ext_radar", + tr("Use External Radar"), + tr("See https://github.com/eFiniLan/openpilot-ext-radar-addon for more information."), + }, }; QWidget *label = nullptr; @@ -150,6 +155,11 @@ void DPPanel::add_longitudinal_toggles() { addItem(label); continue; } + if (param == "dp_lon_ext_radar") { + if (!vehicle_has_radar_unavailable || !vehicle_has_long_ctrl) { + continue; + } + } has_toggle = true; auto toggle = new ParamControl(param, title, desc, "", this); diff --git a/system/manager/manager.py b/system/manager/manager.py index 9fe81947f..40d1b7324 100755 --- a/system/manager/manager.py +++ b/system/manager/manager.py @@ -41,6 +41,7 @@ def manager_init() -> None: ("OpenpilotEnabledToggle", "1"), ("LongitudinalPersonality", str(log.LongitudinalPersonality.standard)), ("DisableLogging", "0"), + ("dp_lon_ext_radar", "0"), ] if params.get_bool("RecordFrontLock"):