diff --git a/opendbc_repo/opendbc/car/hyundai/carcontroller.py b/opendbc_repo/opendbc/car/hyundai/carcontroller.py index 76833fe..e7a9157 100644 --- a/opendbc_repo/opendbc/car/hyundai/carcontroller.py +++ b/opendbc_repo/opendbc/car/hyundai/carcontroller.py @@ -102,14 +102,14 @@ class CarController(CarControllerBase): self.params.STEER_DELTA_DOWN = steerDeltaDown self.soft_hold_mode = 1 if params.get_int("AutoCruiseControl") > 1 else 2 self.hapticFeedbackWhenSpeedCamera = int(params.get_int("HapticFeedbackWhenSpeedCamera")) - + self.button_spam1 = params.get_int("CruiseButtonTest1") self.button_spam2 = params.get_int("CruiseButtonTest2") self.button_spam3 = params.get_int("CruiseButtonTest3") self.speed_from_pcm = params.get_int("SpeedFromPCM") self.canfd_debug = params.get_int("CanfdDebug") - + actuators = CC.actuators hud_control = CC.hudControl @@ -124,13 +124,13 @@ class CarController(CarControllerBase): MAX_ANGLE_CONSECUTIVE_FRAMES) apply_angle = apply_std_steer_angle_limits(actuators.steeringAngleDeg, self.apply_angle_last, CS.out.vEgoRaw, self.params) - + if abs(CS.out.steeringTorqueEps) >= 100.0: # carrot. fault avoidance, test code apply_angle = CS.out.steeringAngleDeg # prevent steering error. carrot - error_limit = 5.0 - apply_angle = np.clip(apply_angle, CS.out.steeringAngleDeg - error_limit, CS.out.steeringAngleDeg + error_limit) + error_limit = 5.0 + apply_angle = float(np.clip(apply_angle, CS.out.steeringAngleDeg - error_limit, CS.out.steeringAngleDeg + error_limit)) #max_torque = 200 #ego_weight = np.interp(CS.out.vEgoCluster, [0, 5, 10, 20], [0.2, 0.3, 0.5, 1.0]) @@ -186,7 +186,7 @@ class CarController(CarControllerBase): left_lane_warning = right_lane_warning = self.hapticFeedbackWhenSpeedCamera if self.speedCameraHapticEndFrame < self.frame: self.speedCameraHapticEndFrame = -1 - + if self.frame % self.blinking_frame == 0: self.blinking_signal = True elif self.frame % self.blinking_frame == self.blinking_frame / 2: @@ -326,7 +326,7 @@ class CarController(CarControllerBase): send_button = self.make_spam_button(CC, CS) if send_button > 0: can_sends.append(hyundaican.create_clu11_button(self.packer, self.frame, CS.clu11, send_button, self.CP)) - + else: # carrot.. 왜 alt_cruise_button는 값이 리스트일까?, 그리고 왜? 빈데이터가 들어오는것일까? @@ -350,7 +350,7 @@ class CarController(CarControllerBase): #can_sends.append(hyundaicanfd.create_acc_cancel(self.packer, self.CP, self.CAN, CS.cruise_info)) if self.cruise_buttons_msg_values is not None: can_sends.append(hyundaicanfd.alt_cruise_buttons(self.packer, self.CP, self.CAN, Buttons.CANCEL, self.cruise_buttons_msg_values, self.cruise_buttons_msg_cnt)) - + else: for _ in range(20): can_sends.append(hyundaicanfd.create_buttons(self.packer, self.CP, self.CAN, CS.buttons_counter+1, Buttons.CANCEL)) @@ -426,7 +426,7 @@ class CarController(CarControllerBase): if send_button == 0: self.button_spamming_count = 0 - self.prev_clu_speed = current + self.prev_clu_speed = current return 0 speed_diff = self.prev_clu_speed - current diff --git a/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py b/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py index bbf312e..54a78cb 100644 --- a/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py +++ b/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py @@ -5,17 +5,17 @@ from openpilot.common.params import Params class CanBus(CanBusBase): - def __init__(self, CP, fingerprint=None, hda2=None) -> None: + def __init__(self, CP, fingerprint=None, lka_steering=None) -> None: super().__init__(CP, fingerprint) - if hda2 is None: - hda2 = CP.flags & HyundaiFlags.CANFD_HDA2.value if CP is not None else False + if lka_steering is None: + lka_steering = CP.flags & HyundaiFlags.CANFD_HDA2.value if CP is not None else False - # On the CAN-FD platforms, the LKAS camera is on both A-CAN and E-CAN. HDA2 cars - # have a different harness than the HDA1 and non-HDA variants in order to split + # On the CAN-FD platforms, the LKAS camera is on both A-CAN and E-CAN. LKA steering cars + # have a different harness than the LFA steering variants in order to split # a different bus, since the steering is done by different ECUs. self._a, self._e = 1, 0 - if hda2 and Params().get_int("HyundaiCameraSCC") == 0: #배선개조는 무조건 Bus0가 ECAN임. + if lka_steering and Params().get_int("HyundaiCameraSCC") == 0: #배선개조는 무조건 Bus0가 ECAN임. self._a, self._e = 0, 1 self._a += self.offset @@ -108,7 +108,7 @@ def create_steering_messages_camera_scc(packer, CP, CAN, enabled, lat_active, ap "LKAS_ANGLE_CMD": -apply_angle, "LKAS_ANGLE_MAX_TORQUE": max_torque if lat_active else 0, } - ret.append(packer.make_can_msg("LFA_ANGLE_MAYBE_CB", CAN.ECAN, values)) + ret.append(packer.make_can_msg("LFA_ALT", CAN.ECAN, values)) values = CS.lfa_info values["LKA_MODE"] = 0 @@ -227,22 +227,22 @@ def create_steering_messages(packer, CP, CAN, enabled, lat_active, apply_steer, } if CP.flags & HyundaiFlags.CANFD_HDA2: - hda2_lkas_msg = "LKAS_ALT" if CP.flags & HyundaiFlags.CANFD_HDA2_ALT_STEERING else "LKAS" + lkas_msg = "LKAS_ALT" if CP.flags & HyundaiFlags.CANFD_HDA2_ALT_STEERING else "LKAS" if CP.openpilotLongitudinalControl: ret.append(packer.make_can_msg("LFA", CAN.ECAN, values)) if not (CP.flags & HyundaiFlags.CAMERA_SCC.value): - ret.append(packer.make_can_msg(hda2_lkas_msg, CAN.ACAN, values)) + ret.append(packer.make_can_msg(lkas_msg, CAN.ACAN, values)) else: ret.append(packer.make_can_msg("LFA", CAN.ECAN, values)) return ret -def create_suppress_lfa(packer, CAN, hda2_lfa_block_msg, hda2_alt_steering): - suppress_msg = "CAM_0x362" if hda2_alt_steering else "CAM_0x2a4" - msg_bytes = 32 if hda2_alt_steering else 24 +def create_suppress_lfa(packer, CAN, lfa_block_msg, lka_steering_alt): + suppress_msg = "CAM_0x362" if lka_steering_alt else "CAM_0x2a4" + msg_bytes = 32 if lka_steering_alt else 24 - values = {f"BYTE{i}": hda2_lfa_block_msg[f"BYTE{i}"] for i in range(3, msg_bytes) if i != 7} - values["COUNTER"] = hda2_lfa_block_msg["COUNTER"] + values = {f"BYTE{i}": lfa_block_msg[f"BYTE{i}"] for i in range(3, msg_bytes) if i != 7} + values["COUNTER"] = lfa_block_msg["COUNTER"] values["SET_ME_0"] = 0 values["SET_ME_0_2"] = 0 values["LEFT_LANE_LINE"] = 0 @@ -334,7 +334,7 @@ def create_acc_control_scc2(packer, CAN, enabled, accel_last, accel, stopping, g values["ZEROS_5"] = 0 - values["NEW_SIGNAL_15_DESIRE_DIST"] = CS.out.vEgo * 1.0 + 4.0 + values["TARGET_DISTANCE"] = CS.out.vEgo * 1.0 + 4.0 values["CRUISE_STANDSTILL"] = 1 if stopping and CS.out.aEgo > -0.1 else 0 @@ -442,13 +442,13 @@ def create_adrv_messages(CP, packer, CAN, frame, CC, CS, hud_control, disp_angle values["SETSPEED_HUD"] = 5 if hdp_active else 2 if cruise_enabled else 1 values["vSetDis"] = int(hud_control.setSpeed * 3.6 + 0.5) - values["DISTANCE"] = hud_control.leadDistanceBars - values["DISTANCE_LEAD"] = 1 if cruise_enabled and hud_control.leadVisible else 0 + values["DISTANCE"] = 4 if hdp_active else hud_control.leadDistanceBars + values["DISTANCE_LEAD"] = 2 if cruise_enabled and hud_control.leadVisible else 0 values["DISTANCE_CAR"] = 3 if hdp_active else 2 if cruise_enabled else 1 if main_enabled else 0 values["DISTANCE_SPACING"] = 5 if hdp_active else 1 if cruise_enabled else 0 values["TARGET"] = 1 if cruise_enabled else 0 - values["TARGET_POSITION"] = int(hud_control.leadDistance) + values["TARGET_DISTANCE"] = int(hud_control.leadDistance) values["BACKGROUND"] = 1 if cruise_enabled else 3 if main_enabled else 7 values["CENTERLINE"] = 1 if lat_active else 0 @@ -523,42 +523,45 @@ def create_adrv_messages(CP, packer, CAN, frame, CC, CS, hud_control, disp_angle values["FAULT_LFA"] = 0 values["FAULT_LCA"] = 0 values["FAULT_DAS"] = 0 + values["FAULT_HDA"] = 0 + if left_lane_warning or right_lane_warning: values["VIBRATE"] = 1 ret.append(packer.make_can_msg("ADRV_0x162", CAN.ECAN, values)) - if frame % 20 == 0 and canfd_debug > 0: # 아직 시험중.. - if CS.hda_info_4a3 is not None: - values = CS.hda_info_4a3 - # SIGNAL_4: 7, SIGNAL_0: 0 으로 해도 .. 옆두부는 나오기도 함.. 아오5 - if canfd_debug == 1: - test4 = 10 - test0 = 5 - elif canfd_debug == 2: - test4 = 11 - test0 = 1 - elif canfd_debug == 3: - test4 = 5 - test0 = 2 - values["SIGNAL_4"] = test4 if CC.enabled else 0 # 0, 5(고속도로진입), 10(고속도로), 7,5(국도에서 간혹), 0,10(카니발) , 5(고속도로진입,EV6), 11(고속도로,EV6) - values["SIGNAL_0"] = test0 if CC.enabled else 0 # 0, 2(고속도로진입), 1(고속도로), 5(카니발은 항상) , 2(고속도로진입,EV6), 1(고속도로,EV6) - values["NEW_SIGNAL_1"] = 4 - values["NEW_SIGNAL_2"] = 0 - values["NEW_SIGNAL_3"] = 154 - values["NEW_SIGNAL_4"] = 9 - values["NEW_SIGNAL_5"] = 0 - values["NEW_SIGNAL_6"] = 256 - values["NEW_SIGNAL_7"] = 0 - ret.append(packer.make_can_msg("HDA_INFO_4A3", CAN.CAM, values)) - if frame % 10 == 0: - if CS.new_msg_4b4 is not None: #G80 HDA2개조차량은 안나옴... - values = CS.new_msg_4b4 - values["NEW_SIGNAL_1"] = 8 - values["NEW_SIGNAL_3"] = (frame / 100) % 10 - values["NEW_SIGNAL_4"] = 146 - values["NEW_SIGNAL_5"] = 68 - values["NEW_SIGNAL_6"] = 76 - ret.append(packer.make_can_msg("NEW_MSG_4B4", CAN.CAM, values)) + if canfd_debug > 0: + if frame % 20 == 0: # 아직 시험중.. + if CS.hda_info_4a3 is not None: + values = CS.hda_info_4a3 + # SIGNAL_4: 7, SIGNAL_0: 0 으로 해도 .. 옆두부는 나오기도 함.. 아오5 + if canfd_debug == 1: + test4 = 10 + test0 = 5 + elif canfd_debug == 2: + test4 = 11 + test0 = 1 + elif canfd_debug == 3: + test4 = 5 + test0 = 2 + values["SIGNAL_4"] = test4 if CC.enabled else 0 # 0, 5(고속도로진입), 10(고속도로), 7,5(국도에서 간혹), 0,10(카니발) , 5(고속도로진입,EV6), 11(고속도로,EV6) + values["SIGNAL_0"] = test0 if CC.enabled else 0 # 0, 2(고속도로진입), 1(고속도로), 5(카니발은 항상) , 2(고속도로진입,EV6), 1(고속도로,EV6) + values["NEW_SIGNAL_1"] = 4 + values["NEW_SIGNAL_2"] = 0 + values["NEW_SIGNAL_3"] = 154 + values["NEW_SIGNAL_4"] = 9 + values["NEW_SIGNAL_5"] = 0 + values["NEW_SIGNAL_6"] = 256 + values["NEW_SIGNAL_7"] = 0 + ret.append(packer.make_can_msg("HDA_INFO_4A3", CAN.CAM, values)) + if frame % 10 == 0: + if CS.new_msg_4b4 is not None: #G80 HDA2개조차량은 안나옴... + values = CS.new_msg_4b4 + values["NEW_SIGNAL_1"] = 8 + values["NEW_SIGNAL_3"] = (frame / 100) % 10 + values["NEW_SIGNAL_4"] = 146 + values["NEW_SIGNAL_5"] = 68 + values["NEW_SIGNAL_6"] = 76 + ret.append(packer.make_can_msg("NEW_MSG_4B4", CAN.CAM, values)) return ret else: values = {} diff --git a/opendbc_repo/opendbc/dbc/hyundai_canfd.dbc b/opendbc_repo/opendbc/dbc/hyundai_canfd.dbc index 0db1cbe..9c2f0c4 100644 --- a/opendbc_repo/opendbc/dbc/hyundai_canfd.dbc +++ b/opendbc_repo/opendbc/dbc/hyundai_canfd.dbc @@ -114,11 +114,11 @@ BO_ 160 WHEEL_SPEEDS: 24 XXX SG_ WHEEL_SPEED_3 : 96|16@1+ (0.03125,0) [0|65535] "kph" XXX SG_ WHEEL_SPEED_4 : 112|16@1+ (0.03125,0) [0|65535] "kph" XXX -BO_ 203 LFA_ANGLE_MAYBE_CB: 24 ADRV +BO_ 203 LFA_ALT: 24 ADRV SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ LKAS_ANGLE_ACTIVE : 29|2@0+ (1,0) [0|3] "" XXX - SG_ LKAS_ANGLE_CMD : 32|14@1- (-0.1,0) [0|16383] "" XXX + SG_ LKAS_ANGLE_CMD : 32|14@1- (-0.1,0) [0|511] "" XXX SG_ LKAS_ANGLE_MAX_TORQUE : 55|8@0+ (1,0) [0|255] "" XXX BO_ 234 MDPS: 24 XXX @@ -148,13 +148,13 @@ BO_ 272 LKAS_ALT: 32 XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ LKA_MODE : 24|3@1+ (1,0) [0|7] "" XXX - SG_ LKA_ACTIVE : 27|2@1+ (1,0) [0|255] "" XXX + SG_ LKA_ACTIVE : 27|2@1+ (1,0) [0|3] "" XXX SG_ LKA_WARNING : 32|1@1+ (1,0) [0|1] "" XXX - SG_ LKA_ICON : 38|2@1+ (1,0) [0|255] "" XXX + SG_ LKA_ICON : 38|2@1+ (1,0) [0|3] "" XXX SG_ FCA_SYSWARN : 40|1@0+ (1,0) [0|1] "" XXX SG_ TORQUE_REQUEST : 41|11@1+ (1,-1024) [0|4095] "" XXX SG_ STEER_REQ : 52|1@1+ (1,0) [0|1] "" XXX - SG_ LFA_BUTTON : 56|1@1+ (1,0) [0|255] "" XXX + SG_ LFA_BUTTON : 56|1@1+ (1,0) [0|1] "" XXX SG_ VALUE63 : 63|4@0+ (1,0) [0|15] "" XXX SG_ VALUE64 : 64|8@1+ (1,0) [0|255] "" XXX SG_ NEW_SIGNAL_1 : 75|4@0+ (1,0) [0|15] "" XXX @@ -168,7 +168,6 @@ BO_ 272 LKAS_ALT: 32 XXX SG_ VALUE247 : 247|8@0+ (1,0) [0|255] "" XXX SG_ VALUE255 : 255|8@0+ (1,0) [0|255] "" XXX - BO_ 293 STEERING_SENSORS: 16 XXX SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX @@ -179,13 +178,13 @@ BO_ 298 LFA: 16 ADRV SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ LKA_MODE : 24|3@1+ (1,0) [0|7] "" XXX - SG_ LKA_ACTIVE : 27|2@1+ (1,0) [0|255] "" XXX + SG_ LKA_ACTIVE : 27|2@1+ (1,0) [0|3] "" XXX SG_ LKA_WARNING : 32|1@1+ (1,0) [0|1] "" XXX SG_ LKA_ICON : 38|2@1+ (1,0) [0|3] "" XXX SG_ FCA_SYSWARN : 40|1@0+ (1,0) [0|1] "" XXX SG_ TORQUE_REQUEST : 41|11@1+ (1,-1024) [0|4095] "" XXX SG_ STEER_REQ : 52|1@1+ (1,0) [0|1] "" XXX - SG_ LFA_BUTTON : 56|1@1+ (1,0) [0|255] "" XXX + SG_ LFA_BUTTON : 56|1@1+ (1,0) [0|1] "" XXX SG_ VALUE63 : 63|4@0+ (1,0) [0|15] "" XXX SG_ VALUE64 : 64|8@1+ (1,0) [0|255] "" XXX SG_ NEW_SIGNAL_1 : 75|4@0+ (1,0) [0|15] "" XXX @@ -240,13 +239,13 @@ BO_ 373 TCS: 24 XXX BO_ 352 ADRV_0x160: 16 ADRV SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX - SG_ AEB_SETTING : 24|2@1+ (1,0) [0|255] "" XXX + SG_ AEB_SETTING : 24|2@1+ (1,0) [0|3] "" XXX SG_ NEW_SIGNAL_1 : 28|3@0+ (1,0) [0|7] "" XXX - SG_ SET_ME_2 : 56|8@1+ (1,0) [0|1] "" XXX + SG_ SET_ME_2 : 56|8@1+ (1,0) [0|7] "" XXX SG_ SET_ME_FF : 64|8@1+ (1,0) [0|255] "" XXX SG_ SET_ME_FC : 72|8@1+ (1,0) [0|255] "" XXX SG_ SET_ME_9 : 80|8@1+ (1,0) [0|255] "" XXX - SG_ DATA102 : 102|1@1+ (1,0) [0|255] "" XXX + SG_ DATA102 : 102|1@1+ (1,0) [0|1] "" XXX BO_ 353 ADRV_0x161: 32 ADRV SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX @@ -256,20 +255,20 @@ BO_ 353 ADRV_0x161: 32 ADRV SG_ LKA_ICON : 30|3@1+ (1,0) [0|3] "" XXX SG_ HBA_ICON : 33|3@1+ (1,0) [0|7] "" XXX SG_ FCA_IMAGE : 42|3@1+ (1,0) [0|7] "" XXX - SG_ BCA_LEFT : 53|3@0+ (1,0) [0|7] "" XXX + SG_ BCA_LEFT : 51|3@1+ (1,0) [0|7] "" XXX SG_ BCA_RIGHT : 54|3@1+ (1,0) [0|7] "" XXX SG_ LCA_LEFT_ARROW : 57|3@1+ (1,0) [0|7] "" XXX SG_ LCA_RIGHT_ARROW : 60|3@1+ (1,0) [0|7] "" XXX SG_ CENTERLINE : 64|2@1+ (1,0) [0|3] "" XXX - SG_ TARGET : 68|3@0+ (1,0) [0|7] "" XXX - SG_ TARGET_POSITION : 69|11@1+ (0.1,0) [0|2047] "" XXX - SG_ LANELINE_LEFT : 83|4@0+ (1,0) [0|15] "" XXX - SG_ LANELINE_LEFT_POSITION : 84|6@1+ (1,0) [0|63] "" XXX + SG_ TARGET : 66|3@1+ (1,0) [0|7] "" XXX + SG_ TARGET_DISTANCE : 69|11@1+ (0.1,0) [0|204.7] "m" XXX + SG_ LANELINE_LEFT : 80|4@1+ (1,0) [0|15] "" XXX + SG_ LANELINE_LEFT_POSITION : 84|6@1+ (1,0) [0|15] "" XXX SG_ LANELINE_RIGHT : 90|4@1+ (1,0) [0|15] "" XXX - SG_ LANELINE_RIGHT_POSITION : 94|6@1+ (1,0) [0|63] "" XXX + SG_ LANELINE_RIGHT_POSITION : 94|6@1+ (1,0) [0|15] "" XXX SG_ LANELINE_CURVATURE : 100|5@1- (1,15) [0|31] "" XXX SG_ LANE_HIGHLIGHT : 105|4@1+ (1,0) [0|15] "" XXX - SG_ LANE_HIGHLIGHT_DISTANCE : 109|11@1+ (1,0) [0|7] "" XXX + SG_ LANE_HIGHLIGHT_DISTANCE : 109|11@1+ (0.1,0) [0|204.7] "m" XXX SG_ LANE_LEFT : 120|3@1+ (1,0) [0|7] "" XXX SG_ LANE_RIGHT : 123|3@1+ (1,0) [0|7] "" XXX SG_ LANE_ZOOM : 126|2@1+ (1,0) [0|3] "" XXX @@ -287,16 +286,16 @@ BO_ 353 ADRV_0x161: 32 ADRV SG_ DISTANCE_LEAD : 184|5@1+ (1,0) [0|31] "" XXX SG_ DISTANCE_CAR : 189|3@1+ (1,0) [0|7] "" XXX SG_ DISTANCE_SPACING : 192|4@1+ (1,0) [0|15] "" XXX - SG_ DISTANCE : 198|3@0+ (1,0) [0|7] "" XXX - SG_ vSetDis : 207|8@0+ (1,0) [0|255] "" XXX + SG_ DISTANCE : 196|4@1+ (1,0) [0|7] "" XXX + SG_ vSetDis : 200|8@1+ (1,0) [0|255] "" XXX SG_ SETSPEED : 208|4@1+ (1,0) [0|7] "" XXX SG_ HDA_ICON : 212|3@1+ (1,0) [0|7] "" XXX SG_ SLA_ICON : 216|4@1+ (1,0) [0|15] "" XXX SG_ NAV_ICON : 220|3@1+ (1,0) [0|7] "" XXX SG_ LFA_ICON : 224|3@1+ (1,0) [0|7] "" XXX - SG_ LCA_LEFT_ICON : 230|3@0+ (1,0) [0|7] "" XXX - SG_ LCA_RIGHT_ICON : 234|3@0+ (1,0) [0|7] "" XXX - SG_ BACKGROUND : 239|4@0+ (1,0) [0|15] "" XXX + SG_ LCA_LEFT_ICON : 228|3@1+ (1,0) [0|7] "" XXX + SG_ LCA_RIGHT_ICON : 232|3@1+ (1,0) [0|7] "" XXX + SG_ BACKGROUND : 236|4@1+ (1,0) [0|15] "" XXX SG_ DAW_ICON : 240|3@1+ (1,0) [0|7] "" XXX SG_ CAR_CIRCLE : 243|3@1+ (1,0) [0|7] "" XXX @@ -365,7 +364,7 @@ BO_ 416 SCC_CONTROL: 32 ADRV SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX SG_ ACC_ObjDist : 24|11@1+ (0.1,0) [0|204.7] "m" XXX - SG_ ACC_ObjRelSpd : 35|12@1+ (0.1,-170) [-16.4|34.7] "m/s" XXX + SG_ ACC_ObjRelSpd : 35|9@1+ (0.1,-16.4) [-16.4|34.7] "m/s" XXX SG_ SET_ME_TMP_64 : 55|8@0+ (1,0) [0|63] "" XXX SG_ ZEROS_7 : 63|8@0+ (1,0) [0|255] "" XXX SG_ NEW_SIGNAL_1 : 64|2@1+ (1,0) [0|3] "" XXX @@ -390,7 +389,7 @@ BO_ 416 SCC_CONTROL: 32 ADRV SG_ ZEROS_4 : 183|4@0+ (1,0) [0|63] "" XXX SG_ StopReq : 184|1@0+ (1,0) [0|1] "" XXX SG_ CRUSE_INFO_SET_2 : 189|2@0+ (1,0) [0|3] "" XXX - SG_ NEW_SIGNAL_15_DESIRE_DIST : 192|11@1+ (0.1,0) [0|204.7] "m" XXX + SG_ TARGET_DISTANCE : 192|11@1+ (0.1,0) [0|204.7] "m" XXX SG_ ZEROS_2 : 207|5@0+ (1,0) [0|63] "" XXX SG_ ZEROS : 215|48@0+ (1,0) [0|281474976710655] "" XXX @@ -429,20 +428,20 @@ BO_ 437 MSG_1B5: 32 XXX SG_ LEFT_1 : 29|9@1+ (1,0) [0|511] "" XXX SG_ LEFT_2 : 38|5@1+ (1,0) [0|31] "" XXX SG_ LEFT_3 : 43|10@1- (1,0) [0|1023] "" XXX - SG_ LEFT_4 : 64|16@1- (1,0) [0|65535] "" XXX + SG_ LEFT_CURVATURE : 64|16@1- (1,0) [0|65535] "" XXX SG_ LEFT_5 : 80|16@1- (1,0) [0|65535] "" XXX SG_ RIGHT : 96|2@1+ (1,0) [0|3] "" XXX SG_ RIGHT_LDW : 99|1@0+ (1,0) [0|1] "" XXX SG_ RIGHT_1 : 101|9@1+ (1,0) [0|511] "" XXX SG_ RIGHT_2 : 110|5@1+ (1,0) [0|31] "" XXX SG_ RIGHT_3 : 115|10@1- (1,0) [0|1023] "" XXX - SG_ RIGHT_4 : 128|16@1- (1,0) [0|65535] "" XXX + SG_ RIGHT_CURVATURE : 128|16@1- (1,0) [0|65535] "" XXX SG_ RIGHT_5 : 144|16@1- (1,0) [0|65535] "" XXX SG_ LEAD : 192|2@1+ (1,0) [0|3] "" XXX SG_ LEAD_1 : 194|6@1+ (1,0) [0|63] "" XXX - SG_ LEAD_2 : 200|11@1- (1,0) [0|4095] "" XXX + SG_ LEAD_SPEED : 200|11@1- (1,48) [0|4095] "" XXX SG_ LEAD_3 : 211|1@0+ (1,0) [0|1] "" XXX - SG_ LEAD_DISTANCE : 213|11@1+ (1,0) [0|2047] "" XXX + SG_ LEAD_DISTANCE : 213|11@1+ (0.1,0) [0|204.7] "m" XXX BO_ 438 CAM_0x1b6: 32 CAMERA SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX @@ -511,7 +510,6 @@ BO_ 490 ADRV_0x1ea: 32 ADRV SG_ NEW_SIGNAL_3 : 239|8@0+ (1,0) [0|255] "" XXX SG_ NEW_SIGNAL_1 : 247|8@0+ (1,0) [0|255] "" XXX - BO_ 507 CAM_0x1fb: 32 CAMERA SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX SG_ COUNTER : 16|8@1+ (1,0) [0|255] "" XXX