From 745c8ce522baa6b74aeddd72a34acef79e0c5b79 Mon Sep 17 00:00:00 2001 From: HaraldSchafer Date: Mon, 6 Sep 2021 21:11:26 -0700 Subject: [PATCH] Speed only ACC control for NIDEC Odyssey (#22156) * speed only nidec control * mergeable old-commit-hash: 449a28b9aa0e9307124961958b26c3a6125de023 --- selfdrive/car/honda/carcontroller.py | 23 ++++++++++++++++------- selfdrive/car/honda/values.py | 1 + 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/selfdrive/car/honda/carcontroller.py b/selfdrive/car/honda/carcontroller.py index 9e1c675da1..b57bd79aca 100644 --- a/selfdrive/car/honda/carcontroller.py +++ b/selfdrive/car/honda/carcontroller.py @@ -5,7 +5,7 @@ from selfdrive.controls.lib.drive_helpers import rate_limit from common.numpy_fast import clip, interp from selfdrive.car import create_gas_command from selfdrive.car.honda import hondacan -from selfdrive.car.honda.values import CruiseButtons, VISUAL_HUD, HONDA_BOSCH, CarControllerParams +from selfdrive.car.honda.values import CruiseButtons, VISUAL_HUD, HONDA_BOSCH, HONDA_NIDEC_ALT_PCM_ACCEL, CarControllerParams from opendbc.can.packer import CANPacker VisualAlert = car.CarControl.HUDControl.VisualAlert @@ -183,16 +183,25 @@ class CarController(): # all of this is only relevant for HONDA NIDEC max_accel = interp(CS.out.vEgo, P.NIDEC_MAX_ACCEL_BP, P.NIDEC_MAX_ACCEL_V) # TODO this 1.44 is just to maintain previous behavior - pcm_accel = int(clip((accel/1.44)/max_accel, 0.0, 1.0) * 0xc6) pcm_speed_BP = [-wind_brake, -wind_brake*(3/4), 0.0, - 0.1] + 0.5] + # The Honda ODYSSEY seems to have different PCM_ACCEL + # msgs, is it other cars too? + if CS.CP.carFingerprint in HONDA_NIDEC_ALT_PCM_ACCEL: + pcm_speed_V = [0.0, + clip(CS.out.vEgo - 3.0, 0.0, 100.0), + clip(CS.out.vEgo + 0.0, 0.0, 100.0), + clip(CS.out.vEgo + 5.0, 0.0, 100.0)] + pcm_accel = int((1.0) * 0xc6) + else: + pcm_speed_V = [0.0, + clip(CS.out.vEgo - 2.0, 0.0, 100.0), + clip(CS.out.vEgo + 2.0, 0.0, 100.0), + clip(CS.out.vEgo + 5.0, 0.0, 100.0)] + pcm_accel = int(clip((accel/1.44)/max_accel, 0.0, 1.0) * 0xc6) - pcm_speed_V = [0.0, - clip(CS.out.vEgo + accel/2.0 - 2.0, 0.0, 100.0), - clip(CS.out.vEgo + accel/2.0 + 2.0, 0.0, 100.0), - clip(CS.out.vEgo + 5.0, 0.0, 100.0)] pcm_speed = interp(gas-brake, pcm_speed_BP, pcm_speed_V) if not CS.CP.openpilotLongitudinalControl: diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index ed0af59c80..9497d16aa7 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -1272,5 +1272,6 @@ SPEED_FACTOR = { CAR.HRV: 1.025, } +HONDA_NIDEC_ALT_PCM_ACCEL = set([CAR.ODYSSEY]) HONDA_BOSCH = set([CAR.ACCORD, CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_5G, CAR.CRV_HYBRID, CAR.INSIGHT, CAR.ACURA_RDX_3G]) HONDA_BOSCH_ALT_BRAKE_SIGNAL = set([CAR.ACCORD, CAR.CRV_5G, CAR.ACURA_RDX_3G])