mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-10-28 09:03:46 +08:00
Align Ford Curvature Oracle with Qualified Mode Handoff
This commit is contained in:
@@ -26,8 +26,14 @@
|
||||
},
|
||||
"starpilot_curvature_controller": {
|
||||
"origin": "opendbc_repo/opendbc/car/ford/carcontroller.py",
|
||||
"sha256": "c131d1d5f4231004e00f46968988b5d5f379ec22ef8c44d7f67ded8464344855",
|
||||
"revision": "d2ae98eb3959c88011ed537e7cbc033d91fd3efa"
|
||||
"sha256": "9838f258b7a4eef48c8c1ed4fb40d180939b86e22ac9079a734d1eabf4c0060e",
|
||||
"revision": "d2ae98eb3959c88011ed537e7cbc033d91fd3efa",
|
||||
"intentional_changes": [
|
||||
{
|
||||
"commit": "d60f2d7ada6cf6aa0f32e881aa916809686a65a6",
|
||||
"contract": "Generic CAN-FD stock-idle and same-batch mode-before-bounded-command handoff. Retains the pre-angle curvature oracle and all full-byte comparisons."
|
||||
}
|
||||
]
|
||||
},
|
||||
"bpdev_trim": {
|
||||
"origin": "opendbc_repo/opendbc/sunnypilot/car/ford/lane_center_trim.py",
|
||||
|
||||
+12
-4
@@ -160,13 +160,17 @@ class CarController(CarControllerBase):
|
||||
else:
|
||||
self.classic_lateral.set_inputs(None, (), 0.2, self.manual_turn_inputs.enabled if self.manual_turn_inputs is not None else True)
|
||||
previous = self.classic_lateral.curvature_last
|
||||
demanded = self.classic_lateral.update(CC, CS, actuators) if self.classic_extended_announced else FordLateralResult()
|
||||
demanded = self.classic_lateral.update(CC, CS, actuators) if self.classic_extended_announced or self.generic_canfd else FordLateralResult()
|
||||
bound = generic_canfd_bounded_command if self.generic_canfd else classic_bounded_command
|
||||
lateral = bound(self.classic_lateral, demanded, previous, CS.out.vEgoRaw,
|
||||
-CS.out.yawRate / max(CS.out.vEgoRaw, 0.1))
|
||||
self.classic_lateral_demand = demanded
|
||||
self.apply_curvature_last = lateral.curvature
|
||||
if self.generic_canfd:
|
||||
if self.classic_extended_announced != bool(lateral.active):
|
||||
can_sends.append(mache_can.create_lka_msg(self.packer, self.CAN) if lateral.active else
|
||||
fordcan.create_lka_msg(self.packer, self.CAN))
|
||||
self.classic_extended_announced = bool(lateral.active)
|
||||
counter = (self.frame // CarControllerParams.STEER_STEP) % 0x10
|
||||
can_sends.append(create_extended_canfd_msg(
|
||||
self.packer, self.CAN, lateral.active, lateral.ramp_type, lateral.precision_type,
|
||||
@@ -221,7 +225,8 @@ class CarController(CarControllerBase):
|
||||
can_sends.append(fordcan.create_lat_ctl_msg(self.packer, self.CAN, lateral_active, 0., 0., -self.apply_curvature_last, 0.))
|
||||
|
||||
# send lka msg at 33Hz
|
||||
if (self.frame % CarControllerParams.LKA_STEP) == 0:
|
||||
if (self.frame % CarControllerParams.LKA_STEP) == 0 and not any(
|
||||
address == 0x3CA for address, _, _ in can_sends):
|
||||
if self.CP.flags & FordFlags.LKA_STEERING:
|
||||
source_age_ns = now_nanos - CS.lkas_available_ts_nanos
|
||||
lka_active = (CC.latActive and CS.lkas_available and 0 <= source_age_ns <= 100_000_000 and
|
||||
@@ -250,8 +255,11 @@ class CarController(CarControllerBase):
|
||||
can_sends.append(mache_can.create_lka_msg(self.packer, self.CAN))
|
||||
self.mache_extended_announced = True
|
||||
elif self.classic_lateral is not None:
|
||||
can_sends.append(mache_can.create_lka_msg(self.packer, self.CAN))
|
||||
self.classic_extended_announced = True
|
||||
if self.generic_canfd and not self.classic_extended_announced:
|
||||
can_sends.append(fordcan.create_lka_msg(self.packer, self.CAN))
|
||||
else:
|
||||
can_sends.append(mache_can.create_lka_msg(self.packer, self.CAN))
|
||||
self.classic_extended_announced = True
|
||||
else:
|
||||
can_sends.append(fordcan.create_lka_msg(self.packer, self.CAN))
|
||||
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
{"protected_inventory_sha256": "26aedf5c08d2849809781c864d089874c5ccec633f69ff9aff1de17d684ddb36", "schema_version": 1}
|
||||
{"protected_inventory_sha256": "99b3f79fc4eb32f03ba97cbb41d3bcaa9a9fa467a68831b9693a16f28752d874", "schema_version": 1}
|
||||
|
||||
Reference in New Issue
Block a user