From cf0f265ac78470ad3cde4bb0330792ce32a4875c Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Fri, 25 Sep 2026 14:53:18 -0500 Subject: [PATCH] Vehicle policy registration Select longitudinal policy through the shared vehicle dispatch contract. --- .../starpilot/longitudinal/vehicle_policy.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 openpilot/starpilot/longitudinal/vehicle_policy.py diff --git a/openpilot/starpilot/longitudinal/vehicle_policy.py b/openpilot/starpilot/longitudinal/vehicle_policy.py new file mode 100644 index 0000000000..00f1c8e3ae --- /dev/null +++ b/openpilot/starpilot/longitudinal/vehicle_policy.py @@ -0,0 +1,53 @@ +"""Select an admitted vehicle-owned longitudinal tuning policy.""" + +from opendbc.car.gm.conventional_pedal import policy_for as conventional_pedal_policy_for +from opendbc.car.gm.camera import policy_for as camera_policy_for +from opendbc.car.gm.ordinary_cc import policy_for as ordinary_cc_policy_for +from opendbc.car.gm.bolt_cc import policy_for as bolt_cc_policy_for +from opendbc.car.gm.longitudinal import policy_for as gm_pedal_policy_for, volt_policy_for, euv_policy_for, ascm_policy_for, sdgm_policy_for + +from opendbc.car.gm.cc_longitudinal import policy_for as volt_cc_policy_for +from opendbc.car.gm.suburban import (policy_for as suburban_policy_for, + stopping_decel_rate as gm_suburban_stopping_decel_rate) +from opendbc.car.hyundai.g90_longitudinal import (stopping_decel_rate as hyundai_stopping_decel_rate, + forecast_should_stop as hyundai_forecast_should_stop) + + +def policy_for(cp): + return (suburban_policy_for(cp) or conventional_pedal_policy_for(cp) or camera_policy_for(cp) or ordinary_cc_policy_for(cp) or + sdgm_policy_for(cp) or ascm_policy_for(cp) or gm_pedal_policy_for(cp) or volt_policy_for(cp) or + euv_policy_for(cp) or volt_cc_policy_for(cp) or bolt_cc_policy_for(cp)) + + +def stopping_decel_rate(cp, policy): + rate = hyundai_stopping_decel_rate(cp) + if rate is not None: + return rate + rate = gm_suburban_stopping_decel_rate(cp) + if rate is not None: + return rate + return policy.stopping_decel_rate if policy is not None else 1.0 + + +def stopping_policy_for(cp, dt): + from opendbc.car.hyundai.blended_stopping import policy_for as blended_stopping_policy_for + from opendbc.car.hyundai.ev9_stopping import policy_for as ev9_stopping_policy_for + return ev9_stopping_policy_for(cp, dt) or blended_stopping_policy_for(cp, dt) + + +def forecast_should_stop(cp, speeds, time_indices, action_t, fallback): + decision = hyundai_forecast_should_stop(cp, speeds, time_indices, action_t) + return fallback if decision is None else decision + + +def tracked_lead_scale(cp): + from opendbc.car.hyundai.gv70_longitudinal import tracked_lead_scale as hyundai_tracked_lead_scale + return hyundai_tracked_lead_scale(cp) + + +def planner_cost_owner(cp): + from opendbc.car.hyundai.gv70_costs import eligible + if not eligible(cp): + return None + from openpilot.starpilot.longitudinal.gv70_cost_context import GV70CostContext + return GV70CostContext()