Commit Graph

2326 Commits

Author SHA1 Message Date
Isaac Barham 5fbb583e59 Ford: add measured-curvature feedback to C1
Add a distance-integrated steering-curvature correction to the restored v1
heading request. Hold the correction at zero error, allow unwind at limits,
and clear it for driver override or inactive PSCM control. Preserve C0,
C2=C3=0, final output limits, the 100 Hz sender and the existing opt-in toggle.

Validate build/hold/unwind, measurement cadence, anti-windup and the actual
controlsd-to-CAN path. The combined suite passes 511 tests and 9,146 subtests;
178 inherited or unsupported safety variants skip. Stress and frozen b8
replay pass 578,569 Float32/CAN round trips. These checks do not establish
physical tracking or stability. Record reproduction steps and source hashes.
2026-09-09 10:46:41 -04:00
Isaac Barham a7d70e2b08 Ford: restore original selected-curvature v1 controller
Restore the exact tracked tree from 5fc16abc7, identified in the
9b and 9e strong-tracking routes, including opendbc c21a9013 and
the original 100 Hz CAN FD cadence. C0 samples model y at 7 m;
C1 is max(7 m, speed times 1 s) times selected desired curvature.

This removes the later model-orientation, forecast, damping and
cadence experiments. Model selection/bundles and Panda safety are
unchanged. Restoring the prior behavior does not establish the
physical cause of the reported wobble.

Validation: exact original tree and submodule match; 494 tests and
9146 subtests passed, 178 inapplicable safety skips; canonical
Sunnylink schema; 100 real-sender messages in 100 control cycles,
with counters/checksums, C2/C3 zero and unchanged Panda TX checks.

Assisted-by: OpenAI Codex
2026-09-08 21:44:44 -04:00
Isaac Barham 00de176331 Ford: restore v7 model-point controller
Revert the C1 early-release experiment in 7ca2df481 after reported
centering degradation. Restore the exact tracked tree from 4bd841ecc;
model selection and model bundles are unchanged. A different driving
model remains a possible confound, so this does not assign a physical
root cause to either model or controller.

Validation: exact baseline tree match, 267 tests and 3 subtests passed,
and Sunnylink generated schema matches its source.

Assisted-by: OpenAI Codex
2026-09-08 20:37:34 -04:00
Isaac Barham 7ca2df4819 Ford: experiment with earlier C1 release from model path shape
Bound the model heading request toward zero using terminal spatial
curvature at the existing preview point. Preserve C0, command limits,
slew, 20 Hz cadence, and the existing Sunnylink selection.

This changes requests before some turn peaks as well as during unwind.
Document that authority tradeoff and distinguish command-level evidence
from unverified physical PSCM release.

Validation: Ford controller/sender/safety tests, Sunnylink schema tests,
independent geometry and replay tests, 28,138 stress CAN round trips,
and 35,775 recorded cycles with 71,550 baseline/candidate CAN checks.

Assisted-by: OpenAI Codex
2026-09-08 16:37:58 -04:00
Isaac Barham 4bd841eccd Ford: verify unwind timing and reject incompatible offline replays
Compare v7 and recorded v6 unwind instructions on a5 using both common request levels and own-peak thresholds. Preserve the later C0 release and earlier C1 release in the report without claiming a physical improvement.

Exercise saturated release through the actual sender for both signs and every send phase. Require original model clocks for current replay extracts and reject current candidates in the historical unchanged-C1 damping replay. Record the complete 585-test suite and refreshed stress evidence.

Assisted-by: OpenAI Codex
2026-09-08 13:53:15 -04:00
Isaac Barham 6f83b17457 Ford: sample position and heading from one shared model point
Use the model-predicted one-second station with the existing seven-metre minimum and endpoint hold for both C0 and C1. Remove the extra yaw forecast and scalar-curvature heading reconstruction; retain C2/C3 zero, independent limits and slew, the existing toggle, and 20Hz sends. Reject scalar-only maneuver references explicitly.

Validate model clocks, geometry, CAN delivery, Panda TX acceptance, and randomized boundaries offline. Recorded-input replay does not establish improved physical tracking.

Assisted-by: OpenAI Codex
2026-09-08 13:35:07 -04:00
Isaac Barham 72e9d94f62 Ford: remove yaw damping from selected-action controller
Remove excess-yaw C0 attenuation while retaining full path prediction,
command limits, slew and input-health gates. Valid measured yaw no longer
changes path demand. Update diagnostics and Sunnylink help for v5.

Validate with 356 tests and 26 subtests, 100% controller coverage,
280,636 recorded route cycles and 779,410 Float32/CAN round trips.
These are command checks; physical tracking improvement is not established.

Assisted-by: OpenAI Codex
2026-09-08 04:33:06 -04:00
Isaac Barham 7e63449749 Ford: use full geometric prediction within existing command limits
Remove the hand-chosen 0.15 m / 25% cap on the prediction adjustment.
Retain the available-horizon bound, nonfinite fallback, total field limits,
yaw damping, slew, input gates, two states and zero C2/C3.

Cover full predictions and geometric countersteering in regression tests.
Validate 374 tests plus 26 subtests, four-route replay and 817,346
Float32/CAN round trips. Document command changes without inferring
physical tracking performance from PSCM limits or fixed-input replay.

Assisted-by: OpenAI Codex
2026-09-07 19:19:03 -04:00
Isaac Barham 01f8d51c82 Ford: add bounded model-path prediction to selected-action controller
Predict nearby C0 from the current model path and selected curvature over
150 ms, bounded to 0.15 m and 25% of the original offset. Retain excess-yaw
damping, two slew states, C1 behavior, input gates, and zero C2/C3 under the
existing default-off Sunnylink toggle.

Validate 372 tests plus 26 subtests, four-route replay, and 817,346
Float32/CAN round trips. Record earlier command-level crossings and the
right-exit damping tradeoff without claiming improved vehicle tracking.

Assisted-by: OpenAI Codex
2026-09-07 18:21:03 -04:00
Isaac Barham 744a97d9bc Ford: damp excess-yaw offset demand in selected-action controller
Attenuate same-direction C0 when measured yaw exceeds the nonnegative
requested turn plus a deadband. Keep C1, two slew states, input gates and
zero C2/C3. Opposed planned curvature cannot amplify small yaw bias.

Segment 10 replay reduces residual exit demand while preserving peak
entry C0. This remains an experimental, physically unvalidated candidate
under the existing default-off Sunnylink toggle.

Validation: 325 tests and 26 subtests; 100% controller statement/branch
coverage; 204,946 route cycles; 628,030 Float32/CAN round trips; independent
standards/spec reviews.

Assisted-by: OpenAI Codex
2026-09-07 17:00:05 -04:00
Isaac Barham ea1ed70c71 Ford: gate selected-action controller in Sunnylink and retire v8
Select the new controller only on the CAN FD Lightning through a default-off startup toggle. Retire v8 and its setting; disabling restores the original controller or selected observer. Preserve packing, input gates and zero C2/C3.

Fix the existing Params filtered-key buffer lifetime exposed by Sunnylink backup tests. Record 284 tests, 26 subtests and 485238 offline packing round trips; physical calibration remains unapproved.

Assisted-by: OpenAI Codex
2026-09-07 11:43:56 -04:00
Isaac Barham 7ca3c6e3b3 Ford: add offline selected-action controller and validation
Add a two-state C0/C1 core and a separate freshness/timing adapter compatible
with the existing controlsd call. Preserve reviewed endpoint holding, reject
malformed inputs, and keep production selection and safety unchanged.

Validate actual selection/limiting/publication/CAN integration, exact core
replay across 133,550 route cycles, 200,000 randomized and mirrored cycles,
field boundaries, resets and release uncertainty. Record the completed
264-test Ford suite, mutation probes and dependency/source provenance.
Physical tracking remains unvalidated; calibration_approved=false.

Assisted-by: OpenAI Codex
2026-09-07 10:40:06 -04:00
Isaac Barham 7eb7e93deb tools: evaluate native Ford path polynomial
Assisted-by: Codex
2026-09-01 20:59:11 -04:00
Jason Wen 9fb45b315a Merge commit '053d9c446800df38aca42b69bb99197aefbea77b' into sync-20260816
# Conflicts:
#	README.md
#	docs/CARS.md
#	opendbc_repo
#	tinygrad_repo
#	tools/release/build_release.sh
#	tools/release/build_stripped.sh
2026-08-17 00:38:50 -04:00
Adeeb Shihadeh 047be14df9 release: speedup builds (#38644) 2026-08-16 15:25:19 -07:00
Adeeb Shihadeh 391132465d release: chestnut build scripts (#38638)
* release: chestnut build scripts

* simplify

* only max

* no new script

* release: exclude local virtualenv
2026-08-15 16:01:42 -07:00
Adeeb Shihadeh 48b7f171a7 release: speed up pushes by 9x (#38640) 2026-08-15 15:33:43 -07:00
Jason Wen 7461f70fdb Merge commit 'b7c333cf3fee117779515c9ebfd7b2beb164fa81' into sync-20260813
# Conflicts:
#	README.md
#	SConstruct
#	conftest.py
#	docs/CARS.md
#	msgq_repo
#	opendbc_repo
#	openpilot/common/params_keys.h
#	openpilot/common/params_pyx.pyx
#	openpilot/common/tests/test_swaglog.cc
#	openpilot/selfdrive/car/card.py
#	openpilot/selfdrive/car/tests/test_car_interfaces.py
#	openpilot/selfdrive/car/tests/test_cruise_speed.py
#	openpilot/selfdrive/car/tests/test_models.py
#	openpilot/selfdrive/controls/controlsd.py
#	openpilot/selfdrive/controls/lib/latcontrol_torque.py
#	openpilot/selfdrive/controls/lib/longitudinal_planner.py
#	openpilot/selfdrive/controls/plannerd.py
#	openpilot/selfdrive/controls/radard.py
#	openpilot/selfdrive/controls/tests/test_longcontrol.py
#	openpilot/selfdrive/locationd/torqued.py
#	openpilot/selfdrive/modeld/modeld.py
#	openpilot/selfdrive/monitoring/dmonitoringd.py
#	openpilot/selfdrive/monitoring/test_monitoring.py
#	openpilot/selfdrive/selfdrived/selfdrived.py
#	openpilot/selfdrive/selfdrived/tests/test_alertmanager.py
#	openpilot/selfdrive/test/longitudinal_maneuvers/plant.py
#	openpilot/selfdrive/test/process_replay/migration.py
#	openpilot/selfdrive/test/process_replay/process_replay.py
#	openpilot/selfdrive/ui/feedback/feedbackd.py
#	openpilot/selfdrive/ui/layouts/settings/device.py
#	openpilot/selfdrive/ui/layouts/settings/toggles.py
#	openpilot/selfdrive/ui/mici/layouts/onboarding.py
#	openpilot/selfdrive/ui/onroad/augmented_road_view.py
#	openpilot/selfdrive/ui/tests/test_soundd.py
#	openpilot/selfdrive/ui/translations/app.pot
#	openpilot/selfdrive/ui/translations/app_de.po
#	openpilot/selfdrive/ui/translations/app_en.po
#	openpilot/selfdrive/ui/translations/app_es.po
#	openpilot/selfdrive/ui/translations/app_fr.po
#	openpilot/selfdrive/ui/translations/app_ja.po
#	openpilot/selfdrive/ui/translations/app_ko.po
#	openpilot/selfdrive/ui/translations/app_pt-BR.po
#	openpilot/selfdrive/ui/translations/app_th.po
#	openpilot/selfdrive/ui/translations/app_tr.po
#	openpilot/selfdrive/ui/translations/app_uk.po
#	openpilot/selfdrive/ui/translations/app_zh-CHS.po
#	openpilot/selfdrive/ui/translations/app_zh-CHT.po
#	openpilot/system/athena/athenad.py
#	openpilot/system/hardware/hardwared.py
#	openpilot/system/loggerd/deleter.py
#	openpilot/system/manager/process_config.py
#	openpilot/system/ui/lib/application.py
#	panda
#	pyproject.toml
#	tinygrad_repo
#	uv.lock
2026-08-14 15:35:10 -04:00
Adeeb Shihadeh 6d5d1f6917 Rename "live" cereal services (#38601) 2026-08-10 09:30:22 -07:00
Adeeb Shihadeh 65c007a9a2 tools: setup.sh isn't for AGNOS (#38588)
* tools: setup.sh isn't for AGNOS

* Update setup.sh
2026-08-10 08:16:57 -07:00
Adeeb Shihadeh ea4dbc8936 Remove unused code (#38598) 2026-08-09 21:09:50 -07:00
Adeeb Shihadeh fedea9fe8d camera names that make sense (#38585) 2026-08-08 09:44:21 -07:00
Adeeb Shihadeh cbda3f7994 Rename hardware/tici/ -> hardware/comma/ (#38580) 2026-08-07 18:49:27 -07:00
Adeeb Shihadeh edd938105e remove old regen infra (#38570) 2026-08-07 14:11:12 -07:00
Zayan Khan ff9c703289 Fix doc links broken by the openpilot/ restructure (#38467) 2026-08-07 10:41:07 -07:00
Adeeb Shihadeh 9bf834e64e op: handle AGNOS updates (#38543)
* op: handle AGNOS updates

* use common

* don't just reboot
2026-08-07 10:32:28 -07:00
Adeeb Shihadeh b72f6e9f7d we write it ourselves 2026-07-31 11:39:17 -07:00
Adeeb Shihadeh 83000c571c no slow unittests (#38480)
* rm test_regen

* not slow

* skip bridge

* rm that one too

* just op test

* just test
2026-07-28 16:42:38 -07:00
Adeeb Shihadeh 98e7c4f987 replace pytest with lil custom runner (#38471) 2026-07-26 21:26:19 -07:00
Adeeb Shihadeh c37855d113 op: merge setup and install (#38450) 2026-07-24 11:03:01 -07:00
Jason Wen 41b14fa595 Merge commaai/openpilot fdd1df79 into sync-20260721 2026-07-24 11:07:06 -04:00
Adeeb Shihadeh 1a753ad9ae test_models moved to opendbc (#38441)
* remove test_models

* rm that

* update test_models docs

* restore car model test tool

* leave dependencies unchanged
2026-07-23 19:50:08 -07:00
Adeeb Shihadeh 9c312e91e7 release: include nested packages in PYTHONPATH (#38442) 2026-07-23 19:49:31 -07:00
Adeeb Shihadeh eb6c9c7f0d Run device tests directly (#38397) 2026-07-21 12:52:48 -07:00
Adeeb Shihadeh 911f07ee87 convert tests to unittest (#38387) 2026-07-21 11:02:34 -07:00
Adeeb Shihadeh ebb5cc12f5 ci: don't pay the big model tax yet (#38371)
* ci: don't pay the big model tax yet

* skip big in release
2026-07-21 10:55:26 -07:00
Adeeb Shihadeh e475d10adc more ruff (#38377)
* lil more ruff

* no exclusions!

* rm nb exception

* and generated

* not used

* c408

* random

* all

* unittest is fine
2026-07-19 08:51:16 -07:00
Adeeb Shihadeh a04c045cd7 cabana: de-Qt, part 3 (#38360) 2026-07-17 09:31:16 -07:00
Jason Wen 14318d2f09 Merge commit '91b067cca0913d0cc9f8b5dab68e3302e278efdc' into sync-20260716
# Conflicts:
#	.github/labeler.yaml
#	.github/workflows/auto_pr_review.yaml
#	.github/workflows/docs.yaml
#	.github/workflows/release.yaml
#	.github/workflows/repo-maintenance.yaml
#	.github/workflows/tests.yaml
#	.github/workflows/ui_preview.yaml
#	README.md
#	SConstruct
#	conftest.py
#	docs/CARS.md
#	msgq_repo
#	opendbc_repo
#	openpilot/cereal/messaging/tests/validate_sp_cereal_upstream.py
#	openpilot/common/api.py
#	openpilot/common/hardware/hw.py
#	openpilot/common/version.py
#	openpilot/selfdrive/assets/fonts/Audiowide-Regular.ttf
#	openpilot/selfdrive/assets/sounds/prompt_single_high.wav
#	openpilot/selfdrive/assets/sounds/prompt_single_low.wav
#	openpilot/selfdrive/car/card.py
#	openpilot/selfdrive/car/helpers.py
#	openpilot/selfdrive/car/tests/test_car_interfaces.py
#	openpilot/selfdrive/car/tests/test_cruise_speed.py
#	openpilot/selfdrive/controls/lib/desire_helper.py
#	openpilot/selfdrive/controls/lib/longcontrol.py
#	openpilot/selfdrive/controls/plannerd.py
#	openpilot/selfdrive/controls/radard.py
#	openpilot/selfdrive/controls/tests/test_longcontrol.py
#	openpilot/selfdrive/modeld/compile_warp.py
#	openpilot/selfdrive/modeld/modeld.py
#	openpilot/selfdrive/monitoring/policy.py
#	openpilot/selfdrive/monitoring/test_monitoring.py
#	openpilot/selfdrive/selfdrived/events.py
#	openpilot/selfdrive/selfdrived/selfdrived.py
#	openpilot/selfdrive/ui/layouts/onboarding.py
#	openpilot/selfdrive/ui/mici/layouts/onboarding.py
#	openpilot/selfdrive/ui/soundd.py
#	openpilot/selfdrive/ui/tests/diff/replay.py
#	openpilot/selfdrive/ui/translations/app.pot
#	openpilot/system/athena/athenad.py
#	openpilot/system/athena/manage_athenad.py
#	openpilot/system/hardware/hardwared.py
#	openpilot/system/loggerd/config.py
#	openpilot/system/manager/github_runner.sh
#	openpilot/system/manager/manager.py
#	openpilot/system/updated/updated.py
#	panda
#	pyproject.toml
#	scripts/lint/lint.sh
#	system/manager/process_config.py
#	system/statsd.py
#	tinygrad_repo
#	tools/release/build_release.sh
#	tools/release/build_stripped.sh
#	uv.lock
2026-07-16 00:58:32 -04:00
Jason Wen a43fc920b5 Merge commit 'b871364e1f48af04113f05c0f6604a9c42f57ac7' into sync-20260715-1
# Conflicts:
#	.github/workflows/prebuilt.yaml
#	common/api.py
#	common/params_keys.h
#	opendbc_repo
#	selfdrive/controls/controlsd.py
#	selfdrive/controls/lib/desire_helper.py
#	selfdrive/modeld/modeld.py
#	selfdrive/ui/mici/layouts/settings/device.py
#	selfdrive/ui/soundd.py
#	system/athena/athenad.py
#	system/athena/registration.py
#	system/hardware/hardwared.py
#	system/loggerd/deleter.py
#	system/manager/manager.py
#	system/manager/process_config.py
#	system/sentry.py
#	system/updated/updated.py
#	tinygrad_repo
#	tools/scripts/uiview.py
2026-07-15 23:33:33 -04:00
Adeeb Shihadeh db99c8e5a6 op: add -u to scons command line (#38348) 2026-07-15 15:39:56 -07:00
Adeeb Shihadeh 503531ab38 replace psutil with simple /proc helper (#38326)
* replace psutil with simple /proc helper

* mv to common
2026-07-11 13:51:22 -07:00
Adeeb Shihadeh a26254304f Move eigen dependency into rednose (#38321)
* Move eigen dependency into rednose

* Declare complete rednose package dependencies

* Update rednose submodule

* Update rednose submodule

* Update rednose submodule

* Fix rednose dependency integration

* bump rednose
2026-07-11 12:59:49 -07:00
Adeeb Shihadeh 6392096de5 op setup: init submodules before uv sync (#38314) 2026-07-09 09:31:34 -07:00
Adeeb Shihadeh addca46f68 move some tools back to root (#38235) 2026-06-24 19:21:19 -07:00
Adeeb Shihadeh 5edc0bd89d mv root dirs into nested openpilot (#38219) 2026-06-21 18:49:46 -07:00
Adeeb Shihadeh 20e0f21b58 prefix paths with openpilot (#38223)
* prefix paths with openpilot

* fix setup root detection

* fix split branch codespell skips
2026-06-21 18:28:35 -07:00
Adeeb Shihadeh 37eda06c95 move cereal/ into nested openpilot (#38220) 2026-06-21 17:55:17 -07:00
Adeeb Shihadeh df1663c58d the one true car.capnp (#38221)
* the one true car.capnp

* fix jotpluggler capnp import path

* bump to master
2026-06-21 17:32:19 -07:00
Adeeb Shihadeh d8bd6c784e rename androidLog -> operatingSystemLog (#38209)
not android
2026-06-21 09:11:04 -07:00