- Removed unnecessary `NoReturn` typing for `stats_main` to simplify function definition.
- Adjusted `get_influxdb_line_raw` to refine typing for `value` parameter.
- Introduced `METRIC_TYPE.RAW` for base64-encoded raw data metrics.
- Added `sp_stats` thread to export SunnyPilot params as raw metrics.
- Enhanced telemetry handling with decoding and serialization updates.
- Introduced optional `intercept` parameter to `StatLogSP` to manage `comma_statlog` initialization.
- Updated usage in `sunnylink` to disable interception where unnecessary.
- Replaced custom `StatLogSP` in sunnylink with centralized implementation from `system.statsd`.
- Ensures consistent logic for StatLogSP handling across modules.
- Introduced `statsd_sp` process for handling Sunnylink-specific stats.
- Enhanced metrics logging with improved directory structure and data handling.
* Use sunnypilot CARS.md, update number of supported cars, add comma
* Update device reference
* Update discord links to forum links
* Update references to -c3-new branches and release
* Update broken link to branches table
* Update README.md
---------
Co-authored-by: DevTekVE <devtekve@gmail.com>
* sunnylink: introduce community popup with QR code embedding
- Added `SunnylinkCommunityPopup` widget to promote the sunnypilot Community Forum.
- Integrated a QR code generator and display for quick access.
- Updated `WiFiPromptWidget` to include a "Learn More" button triggering the community popup.
* sunnylink: adjust community popup styling for better layout
- Reduced font size of description text slightly for consistency.
- Decreased QR code dimensions to improve visual balance.
* Making more space out of thin air
* sunnylink: update community references to use forum links
- Replaced Discord links with Community Forum URLs for better alignment.
- Improved clarity in sponsorship instructions.
* sunnylink: update uploader button logic to support novice tier and above
- Adjusted the enable condition to include SponsorTier::Novice and above.
* sunnylink: improve uploader button visibility and accessibility logic
- Made uploader button conditionally visible based on user tier and settings.
- Clarified button label to specify testing purposes only.
* ci: use environment variable for PR label in query
- Replaced static `PR_LABEL` references with `${{ env.PR_LABEL }}` for consistency.
- Ensures flexibility and reduces hardcoded values in the workflow.
* does this work better?
* fuck this
* aight
* ci: integrate Discourse notifications and refactor notification logic
- Replaced Discord webhook notifications with Discourse topic updates.
- Introduced reusable `post-to-discourse` composite action.
- Added `test-discourse.yaml` workflow for debugging and verification.
* ci: adjust notification dependencies and prepare_strategy reference
- Updated `notify` step to depend on `prepare_strategy` instead of `build`.
- Adjusted variable references to use `prepare_strategy` outputs.
* Forcing debug
* ci: update environment variable references and add commit information
- Switched `PUBLIC_REPO_URL` source to environment variable for consistency.
- Added commit SHA variables to enhance template generation logic.
* more tweaks!
* more tweaks!
* bad bot lmao
* Test?
* i mean....
* i mean....
* getting there
* testing the if
* testing the if
* ci: re-enable notify steps for prebuilt workflow
- Uncommented `build` and `publish` dependencies.
- Restored conditional logic to trigger only for relevant events.
* ci: enhance Discourse action to support new topic creation
- Added support for creating new topics with `category-id` and `title`.
- Improved input validation and response handling for flexibility.
* ci: improve conditions for prebuilt workflow notifications
- Refined `if` clause to ensure branches in `DEV_FEEDBACK_NOTIFICATION_BRANCHES` are targeted.
- Adjusted logic for accurate topic ID mapping in Discourse integration.
* forgot to rename
* Update developer_panel.cc
Changed mentions of "openpilot Longitudinal Control" to "sunnypilot Longitudinal Control" to align with other UI elements pointing users towards enabling "sunnypilot Longitudinal Control"
* Update warning message for longitudinal control
* more
* a bit more
* slightly more
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* Speed Limit Assist: Disable for Tesla in release
* add test
* unused
* use constant
* eh
* flip
* universal it
* check release state and align in tests
* use this
* eh
* update changelog
* Speed Limit Assist: Disable for Rivian
* desc
* changelog
* Speed Limit Assist: Disable for Tesla in release
* add test
* unused
* use constant
* eh
* flip
* universal it
* check release state and align in tests
* use this
* eh
* update changelog
* version: a new beginning
* changelog
* singular
* show ours
* actual
* readjust
* updated
* more
* official spelling
* more
* sync
* fix
* send it
* push
* we never had this lol
* syncs
* ui: update ICBM-related settings handling
* oops
* oops
* single location
* some more
* fix cruise toggles
* always init true
* check this
* nah
* should be this
* Speed Limit Assist: update active event handling
* ok no more for non pcm long it was annoying
* 5 seconds preActive for non pcm long now
* Revert "5 seconds preActive for non pcm long now"
This reverts commit dfcc601035.
* dynamic alert size
* do the same here
* lint
* E2E Helper: universal state machine
* not used
* rename
* 10 frames for both
* time based
* magic
* lead depart: only arm if we have a confirmed close lead for over a second after allowing alert
* less
* shorter trigger
* lol
* always update
* resize & reposition
* Apply suggestion from @sunnyhaibin
* sir, this is Wendy's
* this is still a Wendy's
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
- Implemented a new toggle for enabling Dynamic Experimental Control (DEC) in longitudinal settings.
- Removed previous implementation for DEC from general settings.
- Updated accessibility based on longitudinal control status.
* Subaru: Stop and Go auto-resume support
* bump
* bump
* fix
* bump
* fix init
* wat
* use just standstill for now
* Revert "use just standstill for now"
This reverts commit f72cce6892.
* bump
* bump
* fix it
* only send at 10
* bump
* fix type
* forget about planner resume, it sucks
* try to send off_accel
* still need it
* always send
* disable safety checks for now
* same
* more
* all the time for both
* don't need i guess
* bump
* try 15 frames per try
* all should have it
* try 3 for all
* use throttle for all preglobal?
* bump
* bump
* separate thresholds between preglobal and global
* longer wait before sending
* shorter time but immediately resend
* quick
* new timeout
* about to cry
* same thing but another try
* no need
* round 3
* try 1.4
* lower!
* 1.2
* last try
* beta asf
* bump
* refactor: move to sp ui
* pr suggestion
* no need to check pcm just oplong
* no color, big front, long check
* Fix Rainbow Mode & Y Positioning
* Move param to uiscene
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
Co-authored-by: nayan <nayan8teen@gmail.com>
* UI: Make Always Offroad more accessible
* conditional - based on offroad
* no need to delete
* account for always offroad
* fix offroad transition
* do this inside updateState on every invoke
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* get blinker state from car_state
* Draw turn signals when blinker is active
* reloacted and resized turning signals
* add turn signal display setting
* Lowered Blink Frequency
* Moved x and y Offsets to drawing Function
Co-authored-by: Nayan <nayan8teen@gmail.com>
* Grouped Settings
* Moved blinking Logic to pulseElement Function
Co-authored-by: Nayan <nayan8teen@gmail.com>
* Improved Blinker Size and Position
* Get laneChangeBlocked Event from onroadEvents
* Draw Blinker red if laneChangeBlocked event is set
* Revert "Get laneChangeBlocked Event from onroadEvents"
This reverts commit 4310931b6cd59aed22119c2b4b558f09d3ad9c90.
* Get left and right Blindspot
* Replaced laneChangeBlocked by Blindspot checks
* slight optimization
* more refinement
---------
Co-authored-by: Nayan <nayan8teen@gmail.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* enhance sunnylink fault handling and parameter checks
- Added `SunnylinkTempFault` to handle temporary registration issues.
- Updated methods to account for new fault state, improving robustness.
- Improved uploader logic by considering metered network restrictions.
* maybe it was overkill
* Lol, kinda important
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
Reapply "sunnylink: enhanced param keys fetch with data type" (#1316)"
This reverts commit 282a8b093d.
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* UI: Make Always Offroad more accessible
* conditional - based on offroad
* no need to delete
* account for always offroad
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* maybe
Revert "fuck"
This reverts commit cb072a73b1b44ac3abeb50196be0956f3b7a7e14.
Revert "i dunno anymore"
This reverts commit 4d3c84ecb0e7830a552237e824995bc255007a1b.
i dunno anymore
fuck
* maybe
* try to fix the pipelines
relock after inplace metadrive update (#36256)
* relock after inplace metadrive update
* Revert "relock after inplace metadrive update"
This reverts commit 18193ffe34b66085e18605e6c9289ddcd658844d.
* just the hash
(cherry picked from commit 4d53a26a06)
Co-authored-by: Armand du Parc Locmaria <adpl33@gmail.com>
* refactor: enhance parameter handling and add new parameter retrieval method
- Refactored `get_param_as_byte` for better modularity and added `_to_bytes` helper function.
- Introduced `getParamsAllKeysV1` to retrieve all keys with enhanced metadata.
* refactor: update parameter handling and response structure in sunnylink
- Modified `_to_bytes` to accept `bytes` type for improved type consistency.
- Adjusted response keys in `sunnylinkd` for clarity.
* fix: update `get_param_as_byte` to use corrected method for default values
- Replaced `get_default` with `get_default_value` for accurate param retrieval.
- Ensures consistent handling of default parameter values.
* refactor: remove redundant `None` check in `sunnylinkd.py`
- Streamlined parameter iteration by eliminating unnecessary `None` validation.
- Simplifies logic for constructing `params_dict`.
* refactor: streamline `sunnylinkd` response by removing redundant `keys_v1` field
- Simplified return structure by excluding unused `keys_v1` key.
- Reduces response payload for improved efficiency.
* refactor: split `getParamsAllKeys` into distinct functions for improved clarity
- Added `getParamsAllKeysV1` to preserve original metadata-rich behavior.
- Revised `getParamsAllKeys` to return a simplified list of parameter keys.
* style: remove extraneous newline in `sunnylinkd.py`
- Ensures consistent formatting and adheres to style guidelines.
* Test
* Tesla: MADS full support with VEHICLE bus harness
* bump
* need new arg
* uh
* block cruise main for these cars still
* continue to block tesla
* oops
* always allow for tesla
* init
* fix
* event
* UI
* events..for real
* SP
* ugh
* toggles
* read params first
* stoopid it is
* fix green light img
* fix green light image. for real this time
* move events to longitudinal_planner
* move events to longitudinal_planner
* move e2e alerts to separate class
* fix
* fixxxxxxx
* blinky blink
* blinky blink
* refactor
* more refactor
---------
Co-authored-by: Kumar <36933347+rav4kumar@users.noreply.github.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* init
* fix
* event
* UI
* events..for real
* SP
* ugh
* toggles
* read params first
* stoopid it is
* fix green light img
* fix green light image. for real this time
* move events to longitudinal_planner
* move events to longitudinal_planner
* move e2e alerts to separate class
* green light alert only for this PR
* fix
* fixxxxxxx
* blinky blink
* blinky blink
* slight cleanup
* only used for params
* a bit more
* only when long is not engaged
* too long
* update description
* always 3 seconds if not moving
* initialize in constructor instead
* less
* rename
* always init at 0
---------
Co-authored-by: Kumar <36933347+rav4kumar@users.noreply.github.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* init
* bump
* bump
* bump
* recheck openpilot long availability
* bump
* bump
* bump
* bump
* bump
* just base for now
* bump
* bump
* bump
* bump
* flipped
* apparently it's yucky, reverting most
* bump
* need to add for toyota
* should've been remove
* flipped
* bump
* no way
* fix
* test sdsu distance
* final tuning for pedal
* bump
* init
* onroad brightness control
* new icon
* update touch handlling
* don't touch me
* now i feel every touch
* resolve review comments
* tired of this shit
* ugh
* translate
* duplicate
* fix
* adjust
* update param in the same function
* flip
* format
* reorder
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* init
* onroad brightness control
* new icon
* update touch handlling
* don't touch me
* now i feel every touch
* resolve review comments
* tired of this shit
* ugh
* just panel for now
* more
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
* formatting
* more
* create directory if does not exist
* mypy my bt
* policy param catch exceptions
* handle all params with exceptions
* more
* single method
* define types in init
* rename
* simpler op enabled check
* more mypy stuff
* rename
* no need for brake pressed
* don't reset if gas pressed
* type hint all
* type hint all
* back to upstream
* in another pr
* no longer need data type
* qlog
* slc in another pr
* use horizontal accuracy
* use horizontal accuracy
* set core affinity for all realtime processes
* unused
* sort
* unused
* type hint and slight cleanup
* from old implementation
* use directly
* combine pm
* slight more cleanup
* type hints
* even more type hint
* Revert "slc in another pr"
This reverts commit 3a6987e6
* Revert "in another pr"
This reverts commit a29bccff12.
* rebump
* no need to check alive
* use it directly
* fix test
* refactor
* use gps data directly
* quote...?
* lint
* fix tests
* use CC.longActive
* user confirm in another PR
* rename
* fix import
* params fix
* no more
* fix
* drop new state machine for now
* more fixes
* internalize output
* unused
* rearrange
* auto draft
* rename
* this
* no
* no need
* use existing
* wrong cruise speed
* fix
* not used for now
* Revert "not used for now"
This reverts commit f0083d6241.
* some
* use frames instead
* split speed limit resolver out of slc
* no need to pass sm
* fix params
* test init
* use frame instead of time
* track session
* some tests
* too limiting
* bump
* always reset state
* end session if long_active but slc inactive at any given time
* off
* no warning in this PR
* no speed factor engage type yet
* wide open
* no
* introduce disabled, no longer transitions at inactive
* fix tests
* no more tempinactive
* clean
* rename
* offset default > off
* new tests, fixes controller
* more tests
* not really needed yet
* lint
* fix
* some more tests
* wrap
* more
* more
* use vCruiseCluster for set speed
* init better
* finish it up
* no
* typo
* one method state machine
* refactor preactive timeout check
* refactor new session check
* directly return statuses
* comments
* v_target
* refactor speed limit resolver
* turn off debug
* more resolver refactor
* no longer needed
* lint
* more lint
* fix
* move around
* fix events
* update event
* already happens while in enabled
* add carstateSP
* less
* Speed Limit Control -> Speed Limit Assist
* in another PR
* more rename
* overriding state
* fix
* make sure to return the correct type
* sync with latest
* housekeeping
* use v cruise cluster instead
* fix var
* show it in UI!
* actually show it
* update event texts
* todo
* no override for now
* wrong timer!
* add vtarget and atarget
* fix
* handle no speed limit events
* fix size
* unused
* skip preActive if init max speed was already reached
* display last known speed limit and its state with SLA
* pending event
* much shorter disable guard
* update events
* convert max init for metric
* fix even if unused atm
* just use it
* red for all
* not disabled
* rename
* 10s pre active
* kumar wants it higher, blame him
* fix
* pcm long only
* some fixes
* rename
* use consolidate method to evaluate set speed status
* init non pcm cruise
* tests
* disable non pcm long state machine for now
* lint
* lint
* let the non PCM party begins
* fix event
* update event
* use speed limit final last
* only do direction checks if preActive
* use resolver
* use it directly
* no longer applies
* do it globally
* non pcm long: adapting or pending unused
* use button events instead of raw vals
* need to initialize
* move
* what?
* what #2???
* cst!
* circular
* slight fixes for tests
* change up checks for user confirm
* get buttonEvents at 100 hz and process for 20 hz consumption
* get v cruise cluster from outer loop
* Revert "get v cruise cluster from outer loop"
This reverts commit be8068e8ab.
* Revert "get buttonEvents at 100 hz and process for 20 hz consumption"
This reverts commit a739d4d437.
* don't need
* do not allow target speed confirm if inactive
* do not allow preActive if no valid speed limit
* gimme them arrow pls
* less
* descriptive direction
* fix event
* update cs in 100 hz
* Revert "don't need"
This reverts commit 1eec763be7.
* missed
* wrong
* stop
* throw them to helpers class
* property
* hold speed behavior changes
* abstract it
* use converted to check last set speed change
* Revert "do not allow target speed confirm if inactive"
This reverts commit 9840e74e
* pre active too short
* slight fixes
* fix tests
* linty lint
* speed limit changed hold timer for non pcm long
* should be 0
* less loopy
* some gates
* special sauce for sla
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
Co-authored-by: DevTekVE <devtekve@gmail.com>
* init
* desc
* llk welcome back
* more
* new param to write
* update mapd
* no migration
* no refactor for now
* exec
* rename
* bearing
* fix test
* lint
* ui: more speed limit improvements
- show speed limit offset with last valid speed limit
- show last valid speed limit if current speed limit is not valid
* rename
* round it
* update logic
* in its own var and 5 frames now
* new offset vals
* slightly more
* apply suggestions
* less for now
* always on and fix conv
* update api
* missed
* fix convert
* only draw when decreasing, seems like a bug from mapd
* use frame check, otherwise too jumpy
* only update when mapd updates
* count up and down
* introduce toggle
* more ui
* slightly wider
* desc
* rename
* slight cleanup
* fix offset position
* more vienna fix
* fix ahead alignment
* road name in another PR
* cleanup
* single place
* adjust ahead distance display
* cleanup
* Near
* bump it
* cleanup logic
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* init
* some fixes
* move
* more
* old navd helpers
* bring back cereal
* fix linting
* more
* add to cereal first
* sp events
* lint
* implement in long plan
* fixme-sp
* refactor state machine
* wrong state
* start refactor controller
* some type hints
* init these
* enable debug print
* ui? ui!
* print them out
* fix spinner import
* fix path
* let's use gps chips directly for now
* service missing
* publish events
* no nav for now
* need to sub
* no car state speed yet
* missed event
* Car: `CarStateSP`
* fix tests
* bring back car state speed limit
* fix
* use old controller for now
* fix
* fix source
* type hints
* none for now
* formatting
* more
* create directory if does not exist
* mypy my bt
* policy param catch exceptions
* handle all params with exceptions
* more
* single method
* define types in init
* rename
* simpler op enabled check
* more mypy stuff
* rename
* no need for brake pressed
* don't reset if gas pressed
* type hint all
* type hint all
* back to upstream
* in another pr
* no longer need data type
* qlog
* slc in another pr
* use horizontal accuracy
* use horizontal accuracy
* set core affinity for all realtime processes
* unused
* sort
* unused
* type hint and slight cleanup
* from old implementation
* use directly
* combine pm
* slight more cleanup
* type hints
* even more type hint
* Revert "slc in another pr"
This reverts commit 3a6987e6
* Revert "in another pr"
This reverts commit a29bccff12.
* rebump
* no need to check alive
* use it directly
* fix test
* refactor
* use gps data directly
* quote...?
* lint
* fix tests
* use CC.longActive
* user confirm in another PR
* rename
* fix import
* params fix
* no more
* fix
* drop new state machine for now
* more fixes
* internalize output
* unused
* rearrange
* auto draft
* rename
* this
* no
* no need
* use existing
* wrong cruise speed
* fix
* not used for now
* Revert "not used for now"
This reverts commit f0083d6241.
* some
* use frames instead
* split speed limit resolver out of slc
* no need to pass sm
* fix params
* test init
* use frame instead of time
* track session
* some tests
* too limiting
* bump
* always reset state
* end session if long_active but slc inactive at any given time
* off
* no warning in this PR
* no speed factor engage type yet
* wide open
* no
* introduce disabled, no longer transitions at inactive
* fix tests
* no more tempinactive
* clean
* rename
* offset default > off
* new tests, fixes controller
* more tests
* not really needed yet
* lint
* fix
* some more tests
* wrap
* more
* more
* use vCruiseCluster for set speed
* init better
* finish it up
* no
* typo
* one method state machine
* refactor preactive timeout check
* refactor new session check
* directly return statuses
* comments
* v_target
* refactor speed limit resolver
* turn off debug
* more resolver refactor
* no longer needed
* lint
* more lint
* fix
* move around
* fix events
* update event
* already happens while in enabled
* add carstateSP
* less
* Speed Limit Control -> Speed Limit Assist
* in another PR
* more rename
* overriding state
* fix
* make sure to return the correct type
* just slr in this one
* more
* update
* redundant
* fix
* fix
* lint
* fix
* fix
* match toggle
* fix priority checks
* fix combined source for picking 0 limit
* no need to wrap
* add speed limit offset to resolver
* add speed limit offset
* make sure it displays distance when higher
* Revert "make sure it displays distance when higher"
This reverts commit 15c6834d4e.
* some rename
* translations
* unused for now
* more
* lint
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
Co-authored-by: DevTekVE <devtekve@gmail.com>
* init
* slightly more
* check across all
* publish on CC_SP
* more infra setup
* try it out for HKG for now
* slight cleanup
* oops
* legacy
* send
* actually take over
* expose toggle
* icbm
* need to allow
* fix
* name
* small fixes
* actually send it now
* set default
* use cs is_metric
* offroad only lol
* allow them all
* fix
* send desire as-is
* use stock method
* clean up hysteresis
* speed cluster may be more accurate
* rename
* allow init and resume from pcmCruise
* just send it
* fix
* only allow custom v cruise after no button press at initial enabled
* no hysteresis for now
* fix tests
* fix min check
* only apply to non pcm changes
* add ICBM
* some more ui
* bump
* slight cleanup
* fixup
* cleanup
* type hints
* type hints
* bump
* bump
* bring back hysteresis
* fix ui
* do not spam if overriding or below allowed speed
* Controls: Vision Turn Speed Control
* fix
* Data type temp fix
* format
* more
* even more
* self contain targets
* state cleanup
* fix
* param updates
* no need
* use similar state machine
* raise exception if not found
* new state
* entirely internal
* use long active
* more
* rename and expose aTarget
* rename to SCC-V
* init tests
* slight tests
* expose toggle
* lint
* todo
* remove lat planner sub and mock sm data
* introduce aTarget
* rename
* rename
* update fill_model_msg.py to calculate PLAN_T_IDXS for lanelines and road edges
* sync upstream
* no SCC-V yet
* Revert "no SCC-V yet"
This reverts commit b67281bcac.
* wrap it with SCC main
* leave enabled out of here
* wat
* enabled and active on cereal
* OP long for now, enable for ICBM once merged
* need this
* unused
* let's go hybrid
* fix
* add override state
* update tests
* huh
* don't math here if not enabled
* ui: Smart Cruise Control - Vision (SCC-V) (#1253)
* vtsc-ui
* slight cleanup
* more cleanup
* unused
* a bit more
* pulse like it's hot
* draw only enabled and active
* let's try this for now
* settle
* finalize UI
* brighter color so we blind devtekve
* add long override
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* slight cleanup
* more
* type hints
---------
Co-authored-by: discountchubbs <alexgrant990@gmail.com>
Co-authored-by: Kumar <36933347+rav4kumar@users.noreply.github.com>
* Controls: Vision Turn Speed Control
* fix
* Data type temp fix
* format
* more
* even more
* self contain targets
* state cleanup
* fix
* param updates
* no need
* use similar state machine
* raise exception if not found
* new state
* entirely internal
* use long active
* more
* rename and expose aTarget
* rename to SCC-V
* init tests
* slight tests
* expose toggle
* lint
* todo
* remove lat planner sub and mock sm data
* introduce aTarget
* rename
* rename
* update fill_model_msg.py to calculate PLAN_T_IDXS for lanelines and road edges
* sync upstream
* no SCC-V yet
* Revert "no SCC-V yet"
This reverts commit b67281bcac.
* wrap it with SCC main
* no SCC-V yet
* noqa now
* fix
* OP long for now, enable for ICBM once merged
* type hints
* let's get it straight from carcontrol instead
* not needed
* unused
* add source to track
* we can do this
---------
Co-authored-by: discountchubbs <alexgrant990@gmail.com>
* Add standstill timer to HUD
- Introduced a timer displaying elapsed time when the car is at a standstill.
- Added settings toggle to enable/disable this feature.
- Updated UI elements and related logic to support the standstill timer.
* ruff be happy
* stop screaming
* c stands for not cereal
* slight cleanup
* a bit more cleanup
* unused
---------
Co-authored-by: nayan <nayan8teen@gmail.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* modeld: add laneline_helper for plan X indices calculation
* spacing
* keep type hints
* openpilot
* sunnypilot/models/helpers
add modeld helpers to helpers
* Send it from each fill message
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* Revert "UI: Developer UI (#1233)"
This reverts commit 1bb4ca2547.
* Reapply "UI: Developer UI (#1233)"
This reverts commit b0a77049da.
* QColorConstants is not on device's QT version. Thanks @kumar for the fix
* use play/pause icons
* use monospace font
* x button for delete
* add icons for splitting
* many scaling + scrollbar fixes and niceties
* simplify texture loading code
* refactor: improve parameter handling in sunnylink for robustness
- Updated `get_param_as_byte` to return `None` for nonexistent parameters.
- Enhanced param compression and encoding in `sunnylinkd`.
* refactor: centralize parameter restoration with new helper function
- Added `save_param_from_base64_encoded_string` to handle param decoding and saving.
- Updated backup manager and sunnylinkd to use the new method.
- Improved code readability and reduced duplication in parameter handling logic.
* don't bother
* clean
* modify in place instead of recreating nodes
* don't delete DataTreeNodes and simplify code
* faster: more efficient state tracking, better handler deletion
* jotpluggler!
* demo, executable, fontfile
* calc max and min, numpy, cloudlog
* mypy things
* simplified data.py
* multiprocessed data ingest
* allow verrryyy long search results
* stream in multiprocessed segments
* bug fixes
* simplify and speed up timeseries
* small fixes
* rewrite layout
* resizable layouts
* cleanup
* downsampling
* deque for consistency
* use item_visible_handler
* only build visible UI
* don't delete item handlers, add locks, don't expand large lists
* delete item handlers after a frame
* small data tree improvements
* seperate datatree into its own file
* reset when loading new segments
* fix plot window resizing and recursive split resizing logic
* Rewrite ubloxd in Python
* lil more
* rm from third_party/
* cleanup
* ubx replay
* try this
* back to kaitai
* Revert "ubx replay"
This reverts commit 570bd3d25fbabc590379ce0a9f98d30de55cf1b3.
* update: sunnypilot branch migrations for tici
* block onroad and notify
* type
* check channel type
* update
* ui init
* no search and locked list for tici
* whenever available
* feat: add debugging configurations for replay drive and LLDB attachment
* Add readme with video demo
* clean
* docs: update debugging safety documentation with demo link
* no need for mp4 then added on PR
* Update SConstruct
* bump opendbc
* updating readme
* updating readme
* updating readme
* is this better / worth it?
* final cleanups
* hacky. but does it work?
* Yep that worked!
---------
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* Revert "bugfix: streamline LiveDelay parameter loading with safe handling (#1204)"
This reverts commit 288a5e14da.
* ui: use AlignedBuffer for cereal data processing for Models panel
* align
* separate
* split
* event it
* no more backup
* Revert "no more backup"
This reverts commit fa66ce5e77.
* bump msgq
* add third_party/linux/include/media/msm_vidc.h
* add sde_rotator hw interface
* add msm_vidc hw decoder interface
* update SConscript to build qcom decoder and rotator
* use qcom decoder in replay framereader
* decode directly to NV12 with the correct stride without using the hw rotator
* bump msgq back to master
* don't compile rotator
* cleanup
* works now but much to simplify
* rm signals
* rm header
---------
Co-authored-by: Test User <test@example.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* Add model metadata lookup and update desire handling
* Bump selector version to 10
* meh
* Refactor shape mode parameters for desire handling in test buffer logic
* loop more models
* Refactor buffer handling for temporal inputs and streamline desire updates
* Refactor lateral control input handling and remove unused code
* Hotfix for the params stuff until I rework this properly and leverage the new data types
* Revert "Hotfix for the params stuff until I rework this properly and leverage the new data types"
This reverts commit c6031b29d92d3ff5b679ffce3ba53611bb2dba0e.
* refactor: enhance getParams function to support JSON and bytes types with optional compression
* refactor: add TODO for enhancing server support of metadata in sunnylinkd.py
* lint and clean
* refactor: update value handling in getParams to return decoded values for JSON serialization
* refactor: simplify params_dict initialization by removing type hint
* refactor: update response handling in getParams to include JSON serialization of params
* refactor: update response handling in getParams to include JSON serialization of params
* Add to dic types
* refactor: extract get_param_as_byte function for improved parameter handling and fix backup inconsistencies
* cleanup
* ensure error propagates on backup fail
* Add modelDataV2SP and lane turn logic implementation
Note: still need to hook up to other modeld's create unit test, fix stuff, and do the UI for it
* add unit tests for lane turn logic
* Add lane turn desire controls to models panel
* use `events_sp` instead of `events`
* integrate modelDataV2SP messaging to the other modeld controllers
* move this to that
* use min for general population here, on custom branches, change this to max :)
* Update events.py
Co-authored-by: royjr <royjr96@gmail.com>
* Update events.py
Co-authored-by: royjr <royjr96@gmail.com>
* refactor lane turn value control into one method
* Update selfdrive/ui/sunnypilot/qt/offroad/settings/models_panel.cc
* add integration tests for lane turn desire
* 10 updates is possibly more representative of real life
* real objects ofc
* desc: add toggle description for clarity
---------
Co-authored-by: royjr <royjr96@gmail.com>
* feat: add support for copyparty-sfx
* feat: add toggle for Copyparty service in developer panel
* feat: enhance Copyparty configuration with additional volume mounts and options
* Update system/manager/process_config.py
* remove f string
* lint
* init model favorites
* fix fav buttons
* fix blank favs
* switch to ref
* new favs at top
* remove debug prints & add some comments
* button style
* fix current selection
* !@%#$%(@^%$#(@!%#^
* add last update date to folders
* Update to Readme.MD install instructions
This commit changes a few things in the installation guide. I moved the the tables that have the branches and install URLs. I also added a TIP that let's users know that they can install with sunnypilot/staging-c3-new.
* Update README.md with proposed changes from DevTek
Added header text over the legacy branches to bring in separation and let users know they are not recommended.
* bit of change
* Reorganizing a bit more
---------
Co-authored-by: DevTekVE <devtekve@gmail.com>
* ci: add validate-test-on-staging-c3 branch to deployment triggers and enhance stable branch handling
* fix long overdue mistake lol
* ci: add condition to wait for start on push events in build workflow
* Fix extra version identifier
* no need for this, i validated what I needed
* only care for release tags, not any
* fix: update versioning logic to use build date and run number for tagging
* fix: update tagging logic and enhance commit message format in build scripts
* fix: refine tagging condition to exclude tag pushes for stable branches
* fix: add extra version identifier to output for better version tracking
* trying to keep things clean and simple
* bugfix
* ci: disable cancel-in-progress for publish concurrency
* check using var
* typo
* ci: update publish concurrency settings to use dynamic cancel-in-progress flag
* typoooo
* ci: update cancel-in-progress condition for publish concurrency
* ci: enhance publish concurrency handling to queue jobs based on commit SHA
* typos and new commit hash to test cancel in progress
* see if this helps?
* tired of waiting
* ci: add publish concurrency group to deployment configuration
* ci: update publish concurrency handling to improve job queuing and cancellation logic
* ci: output GITHUB_OUTPUT contents for better debugging of publish concurrency
* ci: remove prebuilt output from strategy and streamline GITHUB_OUTPUT handling
* ci: refine publish concurrency handling for flexible job cancellation
- Default `cancel_publish_in_progress` to `true` if undefined in config.
- Adjust concurrency group logic to handle null and true conditions properly.
* another ocmmit shouldnt cancel publish
* ci: enhance job cancellation logic for publish concurrency handling
* ci: add prepare_strategy job for dynamic deploy strategy extraction
* ci: ensure job execution always proceeds on success and skips failure
* ci: improve job execution conditions to handle cancellation and failure states
* ci: enhance versioning logic to support stable and unstable branch differentiation
* ci: add checkout step to ensure code is available for deploy strategy extraction
* ci: add extra version identifier for stable branch environments
* ci: update extra version identifier format for stable branches
* Grammar, oh, grammar.
* test this
* ci: add deploy strategy extraction and refactor publish dependencies
- Introduced `prepare_strategy` step to dynamically extract deployment configurations.
- Adjusted `publish` job to depend on `prepare_strategy` and use its outputs.
* what happens if I do this...
* cleaning
* other test
* ci: update auto_deploy logic in build configuration
* cleaning
* refactor: skip AGNOS update for tici models in launch script
* back to stock on chffrplus
* feat: enhance launch script for Tici model with error handling and fallback
* empty new line pls
* torqued: apply latAccelOffset to torque control feed forward
* test learned latAccelOffset captures roll compensation bias on straight road driving, when the device is not flush in roll relative to the car
* test correct torqued latAccelOffset parameter convergence
* external storage
* fix mountStorage
* fix perms
* works for now
* better
* lagless
* move to sp qt
* orderish
* fix ui crash
* cleanup
* fix format
* offroad only
* debug external storage
* dont care about delete
* just use cloudlog
* show logs if using external storage
* better text
* wipe entire drive
* allow partitionless drive to be formatted
* label while formatting
* this works
* better
* cleaner
* cleaner logs
* keep upstream happy
---------
Co-authored-by: DevTekVE <devtekve@gmail.com>
* dont run by multiple threads at the same time!
* this doesn't work since we rely on is_connected
* Revert "this doesn't work since we rely on is_connected"
This reverts commit 7455b2fe831bf5c9524e8ee71a9966de32a9755a.
* use callback queue to make this thread safe and remove locks (which lag ui thread?)
* woah this works
* no more lock!
* always run signal handler and store callbacks, like qt
* debug
* more
* okay not for now
* combine _get_connections and _connection_by_ssid, closer to qt and not an explosion of GetSettings dbus calls
* debug
* try this
* skip
* len
* skip hidden networks
* actually slower
* stash
* back to 8929f37d495a524d4a996d66b82d4a947fbf4f1c
* clean up
* stasj
* remove one of many classes
* clean up and fix
* clean up
* stash/draft: oh this is sick
* so epic
* some clean up
* what the fuck, it doesn't even use these
* more epic initializers + make it kind of work
* so simple, wonder if we should further 2x reduce line count
* i've never ever seen this pattern b4, rm
* remove bs add niceness
* minor organization
* set security type and support listing and rming conns
* forget and connect
* jeepney is actually pretty good, it's 2x faster to get wifi device (0.005s to 0.002s)
* temp
* do blocking add in worker thread
* add jeepney
* lets finish with python-dbus first then evaluate - revert jeepney
This reverts commit 7de04b11c2285c298bb1ec907782026c795ab207.
and
* safe wrap
* missing
* saved connections
* set rest of callbacks
* skip hidden APs, simplify _running
* add state management
* either wrong password or disconnected for now
* i can't believe we didn't check this...
* disable button if unsupported!!!
* hide/show event no lag hopefully yayay
* fix hide event
* remove old wifi manager
* cache wifi device path + some clean up
* more clean up
* more clean up
* temp disable blocking prime thread
* hackily get device path once
* ok
* debug
* fix open networks
* debug
* clean up
* all threads wait for device path, and user functions dont ever attempt to get, just skip
* same place
* helper
* Revert "helper"
This reverts commit e237d9a720915fb6bd67c539123d3e2d9d582ce1.
* organize?
* Revert "organize?"
This reverts commit 3aca3e5d629c947711ade88799febeb3f61eda87.
* c word is a bad word
* rk monitor debug for now
* nothing crazy
* improve checkmark responsiveness
* when forgetting: this is correct, but feels unresponsive
* this feels good
* need these two to keep forgetting and activating responsive
* sort by connected, strength, then name
* handle non-critical race condition
* log more
* unused
* oh jubilee is sick you can block on signals!!
* proof of concept to see if works on device
whoiops
* so sucking fick
* ah this is not generic, it's a filter on the return vals
* flip around to not drop
* oh thank god
* fix
* stash
* atomic replace
* clean up
* add old to keep track of what's moved over
* these are already moved
* so much junk
* so much junk
* more
* tethering wasn't used so we can ignore that for now
* no params now
* rm duplicate imports
* not used anymore
* move get wifi device over to jeepney! ~no additional lines
* request scan w/ keepney
* get_conns
* _connection_by_ssid_jeepney is 2x faster (0.01 vs 0.02s)
* do forget and activate
* _update_networks matches!
* rm old update_networks
* replace connect_to_network, about same time (yes i removed thread call)
* no more python-dbus!k
* doesn't hurt
* AP.from_dbus: actually handle incorrect paths w/ jeep + more efficient single call
* properly handle errors
* it's jeepney now
* less state
* using the thread safe router passes a race condition test that conn failed!
* bad to copy from old wifimanager
* fix conn usage
* clean up
* curious if locks are lagging
* not for now
* Revert "curious if locks are lagging"
This reverts commit 085dd185b083f5905a4e71ba3e8c0565175e04aa.
* clean up _monitor_state
* remove tests
* clean up dataclasses
* sort
* lint: okay fine it can be non by virtue of exiting right at the perfect time
* some network clean up
* some wifi manager clean up
* this is handled
* stop can be called manually, from deleting wifimanager, or exiting python. some protection
* its not mutable anymore
* scan on enter
* clean up
* back
* lint
* catch dbus fail to connect
catch dbus fail to connect
* torqued: apply latAccelOffset to torque control feed forward
* test learned latAccelOffset captures roll compensation bias on straight road driving, when the device is not flush in roll relative to the car
* test correct torqued latAccelOffset parameter convergence
---------
Co-authored-by: felsager <d.felsager@gmail.com>
* modeld_v2: dynamify temporal buffer management.
* skip redundant reshaping and flattening.
* simplify MHP checks for lead and plan
* modeld_v2: add unit tests for buffer logic and refactor index mapping
* Let’s possibly fail a test :)
* Update test_buffer_logic_inspect.py
* Update test_buffer_logic_inspect.py
* modeld_v2: better temporal mapping for non-split
* Bump to 10 I guess
* Downgrade CURRENT_SELECTOR_VERSION to 9
* red diff ya know?
* add dynamic buffer update tests and compare against legacy logic.
Cover modelState.init and modelState.run
* send
* Revert "send"
This reverts commit 9e6c95fbfd.
* format
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* fid
* test
* Revert "test"
This reverts commit 38e6635dd0b0b9fb9c08bcc3a74b9283207b0c2f.
* r
* Revert "r"
This reverts commit 4037a321f89af137a645345a0fffb73da6071c72.
* fix!
* this is enough to fix the broken colors
* clean up
* fix
* use last colors -- need this so we don't have to always pass perfect gradient
* clean up
* clean up
* clean up
* rm str | none pattern
* clean up
* more clean up
* stash
* Revert "stash"
This reverts commit 3e2472160cc97e9d11922137757d9ef942a0312d.
* fix da prints
* fix cmt
* ci: github runner auto off when voltage is above 9.0v .
This ensures that a runner in vehicle doesn't accidentally break everything lol.
* suggestion for clarity.
* refactor: rename and update handling of `GithubRunnerVoltage` parameter
- Improve clarity by renaming to `GithubRunnerSufficientVoltage`.
- Changed attribute to `CLEAR_ON_MANAGER_START` for improved runtime state management.
- No need for this value to be backed up!
* refactor: streamline voltage check for GithubRunnerSufficientVoltage
---------
Co-authored-by: DevTekVE <devtekve@gmail.com>
* speed up sourcing but avoiding checking for existence of collected files already from previous sources
* clean up
* been meaning to make them return dicts
* no longer true
* no longer true
* clean up
* more
* more
* revert
- Adjusted torque tuning configuration to avoid reliance on torque controller for Hyundai angle steering.
- Simplified control logic by removing unnecessary checks for torque control type.
refactor: clean up code formatting and improve test structure for torque reduction gain
If param `InteractivityTimeout` does not exist, timeoutValue == "",
resulting in the Interactivity Timeout UI displaying "s" by default.
Fix displayed "Default" by checking for "0" or "".
Co-authored-by: Nayan <nayan8teen@gmail.com>
* wrap the params
* just 1 class and use a single param for now
* refactor
* fix
* cache itself
* no longer
* rename
* type hint
* in helpers instead
* lint
* all
* init as 0 to pass ci
* init as 0 to pass ci
* return_default
* fix init
* add LAT_SMOOTH_SECONDS directly in modeld, temp remove dynamic desc, red difffffffff
* Add tinygrad ref testing
* BaseDir and give a fake ref id to test
* one more before the real thing
* Add the correct ref
* test
* Update test_tinygrad_ref.py
* Update tinygrad_ref
* Update test_tinygrad_ref.py
* Update tinygrad_ref
* This SHOULD FAIL
* Revert "This SHOULD FAIL"
This reverts commit 58862f8a73.
* bit of red
* Move ref to models so compiled branches can read it
* step one
* step 2
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update build-all-tinygrad-models.yaml
* Update tinygrad_ref.py
* Update build-all-tinygrad-models.yaml
* bump to fail test
* Revert "bump to fail test"
This reverts commit 4f58991f32.
* pytest should take care of it
* lint
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* Reapply "LogReader: wrap events to cache which() (#35882)"
This reverts commit ba2dced54c.
* fix lr
* speed up
* clean up
* more
* should be fast
* clean up
* only supports Event
* rmrmr
* bye
* simple
* gix
* why? because why not!? damn.
* test
* more disable
* i am hating this
* fuck mypy.
* hopefully this is fixing json
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* add raylib ui
* test
* this is better for now
* rm
rm
* finalize it
* need this?
* ?
* shite
shite
* try
* ?
* huh
* simp
* ?
* wtf is going on
* ???????????????
* lock
* stash
* no 2 packages
* Revert "stash"
This reverts commit 9efb0d9bda6a6309e7a567634d1921bf1cd0fb59.
* debug
* noo
* debug
* ?
* and
* yeah yeah
* init one
* 2
* i wonder
* oooh
* make sure
* fix dat
* try this
* see if wifiman
* forgot
* ?
* ???
* fuck this we can rewrite it later
* refactor: move lateral methods from init to lateral.py (#2594)
* Extracting lateral methods to lateral.py
* cleaning
* more cleaning
* more cleaning
* Making sure it remains where it should
* Leave rate_limit where it belongs
* Moving things to `car/controls/`
* Moving rate limit to get a taste of the changes
* clean
* copy verbatim
* clean up
* more
* now we can format
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* Merge branch 'master' into move-common-vm-methods. dunno what happend with ci
* now we need to move this import
* bump opendbc
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* here?
* nah card shouldn't become bloated
* better
* import
* actually selfdrived is probably best since it already manages alerts
card is car interfacing, controlsd is for calculating control input, selfdrived is rest
* consistent name
* add to params
* ai
* maybe better?
* shorter
* build out lockout
* do
* check active
* descriptive
* this is a terrible experience just to get lat accel
* just pass sm
* not iso
* type
* rm
* math
* use calibrated roll
* fix
* fix borkenness
* cmt
* compare some methods
* rolling window
* 1 and 2 are the same
* rm it
* stuff
* plot
* plot kf
* generic implementation
* adjust limits
* fix from merge
* clean up
* revert filter to master
* and here
* and
* run_process_on_route imps
* clean up
* why not
* extrapolate
* this doesn't generically work for angle/curvature cars
Revert "extrapolate"
This reverts commit 556f0c3a92b82f07ceb6422f0e39322e79a10dcd.
* cmt
* move
* rm debug
rm debug
and
* others use helpers
* two counters might be too much to return
* turn into class
* clean up
* cmt
* kinda obvious
* impossible for this not to be true, but make it explicit
* clean up
* record feedback with LKAS button
* fix alert test
* slightly simplify feedbackd
* "Audio Feedback Saved" upon time expiration or early stop
* earlySend --> earlyStop
* userFlag --> userBookmark
* RecordAudioFeedback param/toggle
* add audioFeedback test
* simplify feedbackd
* send bookmark regardless of toggle, show feedback event with higher priority
* add userBookmark to selfdrived sm
* fix mispelled param name
* default off and move to main
* segmentNum --> blockNum, earlyStop --> lastBlock
* preserve audioFeedback
* get rid of lastBlock and just send bookmark saved at the end
* update raylib side
* update toggle description and add raylib toggle
---------
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* refactor: move lateral methods from init to lateral.py (#2594)
* Extracting lateral methods to lateral.py
* cleaning
* more cleaning
* more cleaning
* Making sure it remains where it should
* Leave rate_limit where it belongs
* Moving things to `car/controls/`
* Moving rate limit to get a taste of the changes
* clean
* copy verbatim
* clean up
* more
* now we can format
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* No need to change order of import
* refactor: consolidate ACCELERATION_DUE_TO_GRAVITY import path
* bump opendbc
* update refs
* don't import from opendbc
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* stash
* Revert "stash"
This reverts commit 333818b80f498e8e3dac3c1cd36e669e97521d52.
* works for paramsd
* INSANE
* format
* fater
* clean up
* more
* huh i thought order matterred?
* clean that up
* can remove this
* cmt
* check isisntance
* rename
* clean up
* clean up
* more
* more!
* sounds better
* Revert "Fix up `radarFault` handling (#35880)"
This reverts commit 4d01b7bec8.
* Reapply "Fix up `radarFault` handling (#35880)"
This reverts commit 597d7ec1ed78206035b924a6e8464cd9239b5db4.
* can do this
* yeah this is fine
* save 1-2s for full route
* now more than halve the time on top of previous speedup!
* stash
* default should be most common!
* revert
* revert
* clean up
* clean up
* clean up
* clean up
* speed up lr
* lazy caching
* clean up
* it fast
* stash
* stash
* chatgpt code is bad as usual
* clean up
* clean up
* clean up
* clean up
* clean up
* clean up
* match behavior
* cmt
* format
* containers might not be set
* opts
* halves startup time for 12 procs (1.6 to 0.8s)
* stash
* clean up
* who knew going through entire list of msgs each time is so slow
* rewrite this to be more readable
* speed up lr
* clean up
* more
* more
* format
* containers might not be set
* opts
* halves startup time for 12 procs (1.6 to 0.8s)
* stash
* Revert "stash"
This reverts commit 3e119a9602e495bd5a57b94e73fa53d4f45051b1.
* Revert "halves startup time for 12 procs (1.6 to 0.8s)"
This reverts commit a39edf0a579f0c861ccb904a2718254fe32e03d0.
* Revert "opts"
This reverts commit 4dc1f75f0909a93650f8f7e8525af3e4eae08205.
* already set!
* refactor: move lateral methods from init to lateral.py (#2594)
* Extracting lateral methods to lateral.py
* cleaning
* more cleaning
* more cleaning
* Making sure it remains where it should
* Leave rate_limit where it belongs
* Moving things to `car/controls/`
* Moving rate limit to get a taste of the changes
* clean
* copy verbatim
* clean up
* more
* now we can format
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
* No need to change order of import
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* holy shit
* benchmark without this main pub drain stuff
* revert
* ??
* actually this is what we want
* what is going on this is python 3.11 sir
* stash
* this is how you dew it
* minor clean up
* fix
* clean up
* clean up
* this is madness!
* typing
* clean up
- Adjusted `slip_factor` in Hyundai CANFD safety modes for improved consistency and accuracy.
- Ensured proper representation of `slip_factor` output in test logs.
This reverts commit b95f8c5929.
Revert "Add baseline safety model and improve steering angle limiting logic"
This reverts commit b53cbb2e18.
Revert "Disable lateral accel/jerk params and ensure float consistency in angle limits"
This reverts commit 165d7c7b36.
- Introduced a baseline safety model (`GENESIS_GV80_2025`) for comparison.
- Enhanced steer angle limit calculation using both baseline and current limits for improved safety and precision.
- Reduced max lateral acceleration and jerk by 20% for smoother handling.
- Removed unused `get_safety_CP` function, simplifying `VehicleModel` initialization.
- Replaced conservative GENESIS_GV80_2025 model with IONIQ 5 PE parameters.
- Adjusted steering parameters (ratio, slip factor, wheelbase) for better lateral control performance.
Ensure `actuators.torque` uses its absolute value in the `calculate_angle_torque_reduction_gain` method to prevent sign-related issues during Hyundai steering angle control.
The parameter name "HkgTuningAngleIdleTorqueReductionGain" was updated to "HkgTuningAngleActiveTorqueReductionGain" across multiple files for better clarity and alignment with its functionality. This change ensures consistency in naming conventions and improves code readability.
Introduced `ANGLE_IDLE_TORQUE_REDUCTION_GAIN` to manage torque when the vehicle is stationary, ensuring smoother handling and better lane centering. Updated parsing, parameters, and UI settings to support this new idle torque parameter. Adjusted torque calculation logic and smoothing factor behavior for enhanced control flexibility.
Introduced a toggle for angle smoothing factor and renamed related parameters for clarity. Refactored backend settings to use new parameter names and expanded smoothing matrices for better tuning granularity. Updated UI elements to reflect these changes, emphasizing usability and consistency.
Rename methods and variables for clarity in torque reduction and override calculations. Adjust logic to streamline handling of steering inputs and improve maintainability.
Extract torque ramping and override functionality into dedicated methods within `LkasTorqueManager` to improve maintainability and reduce redundancy. Simplify `update` logic by delegating state-specific operations to new methods.
Encapsulate LKAS torque calculations, ramping, and override logic into the new `LkasTorqueManager` class to improve modularity and maintainability. Replace existing torque logic with calls to the manager.
Add handling for IMU lateral acceleration to refine steering angle limits in CAN FD configurations. Parse and utilize `IMU_LatAccelVal` signal for enhanced lateral control accuracy.
Introduced support for CAN FD angle steering, including updated parameters, signal parsing, and new tests. Refactored related steering logic for clarity, reducing unused code and enhancing maintainability.
Streamline steering angle calculations and fault avoidance logic by removing redundant comments and unused code. Simplified `round_angle` implementation for clarity and consistency.
Revised the determination of `steeringPressed` to account for both hands-on-wheel detection and torque overriding in CAN FD setups. Simplified fallback logic for non-CAN FD configurations for better code clarity and maintainability.
Adjusted the sensitivity and threshold values for `HOD_Dir_Status` in steering press updates, improving accuracy in detecting steering input. This change aligns with updated parameter requirements for better responsiveness.
Updated the condition to detect steering press by changing HOD_Dir_Status threshold from `> 2` to `>= 2`. This ensures the detection logic aligns correctly with expected behavior.
Introduced handling for the `HOD_FD_01_100ms` message when the CANFD angle steering flag is enabled. This ensures proper message parsing and extends compatibility for specific Hyundai vehicle configurations.
Adjusted the steering override frame window and incorporated new HOD_Dir_Status to improve hands-on detection. Added parsing for new signals in Hyundai CAN FD, enhancing steering override responsiveness and reliability.
Increased the minimum override angle cap from 0.01 to 0.1 and explicitly cast the maximum cap to a float. This change improves consistency and ensures proper handling of steering limits.
Reduced the override frame window and updated the angle cap logic to use MAX_ANGLE_RATE. These changes aim to enhance steering responsiveness and safety by fine-tuning steer angle limits.
The `smoothing_factor` parameter and related logic have been removed to simplify the steering angle smoothing approach. All references and usage of this parameter have been eliminated, relying solely on speed-based dynamic interpolation. This change streamlines the code while maintaining functionality.
Reduced `OVERRIDE_FRAME_WINDOW` and updated condition to properly respect override frame limits. This ensures smoother handling and more precise steering adjustments under certain driving scenarios.
Replaced `recently_overridden` with `frames_since_override` for better granularity and added dynamic override angle limits using interpolation. These changes enhance steering control accuracy during user overrides and improve overall code readability.
Adjusted logic for recently overridden steering to improve angle limits and torque smoothing. Removed unused or redundant code, optimizing the functionality and maintaining cleaner readability.
Extracted the steering angle smoothing logic into a standalone function `sp_smooth_angle` to enhance readability and reusability. Adjusted angle smoothing parameters and introduced a maximum vehicle speed threshold for applying smoothing. Minor updates improve maintainability and ensure consistent behavior across speed ranges.
Updated `STEER_THRESHOLD` to 350 and `NO_LONGER_OVERRIDING_THRESHOLD` to 150 for better alignment with Hyundai CAN FD steering behavior. These changes ensure improved compatibility and more accurate steering response.
Re-enables resetting `apply_angle_last` to `steering_angle` when steering is recently overridden. This ensures proper handling of steering angle limits during transitions.
Simplified torque ramp-up logic by combining conditions and adjusted `STEER_THRESHOLD` for CANFD angle steering. These changes aim to enhance control precision and maintain consistency in overrides.
Decrease the override timeout from 100 to 50 frames, ensuring quicker recognition of driver input override. This improves responsiveness and aligns with refined control behavior.
Removed restrictive rate limiting during recent user overrides to improve steering response. Adjusted logic to ensure correct handling of steering angle when lateral control is inactive or overridden.
Adjust steering behavior to account for recent user overrides, improving safety and control. Introduced a "recently_overridden" check to limit angle rates and torque adjustments when user intervention is detected.
Added logic to use the current steering angle when the steering wheel is pressed, ensuring smoother transitions during user overrides. Updated function parameters and implementation to reflect this enhancement.
Removed redundant `recently_overridden` logic and introduced a more robust approach for tracking user steering overrides. Added `NO_LONGER_OVERRIDING_THRESHOLD` and updated conditions to improve steer override handling. Adjustments ensure smoother torque transitions and more accurate steering state detection.
Replaced hardcoded `angle_min_active_torque` with `ANGLE_MIN_TORQUE` from params for better configurability and consistency. This ensures the torque clamping logic aligns with defined parameters.
Updated torque calculation logic with a new optional parameter for minimum active torque, streamlining control behavior. Deactivated and cleaned up references to HkgAngleLiveTuning, simplifying configuration and reducing runtime complexities. Updated relevant UI and parameter descriptions for clarity.
Increase the override window and refine torque ramp-up behavior to avoid conflicts during recent overrides. Updated steering driver allowance and threshold values for CANFD angle steering to improve compatibility and performance.
Added logic to track recent steering overrides and adjust LKAS torque behavior accordingly. This ensures smoother transitions when the steering is overridden and reduces potential conflicts with driver input. Updated CANFD-specific steering thresholds for enhanced compatibility.
This new layout visualizes actuator data, CAN steering messages, and car state variables. It provides multiple time-series plots to aid in debugging and analysis. Plugin configurations are also included for extended functionality.
Simplified control flag handling for angle steering, adjusted torque calculations for smoother ramp rates, and updated tuning parameters for the Hyundai Ioniq 5 PE. Minor adjustment to return value handling in lateral control functions.
Remove duplicate STEER_ANGLE_SATURATION_THRESHOLD import
Cleaned up an unnecessary duplicate import of STEER_ANGLE_SATURATION_THRESHOLD from latcontrol_angle_torque. This simplifies the module imports and prevents potential redundancy or confusion.
Refactor lateral control to combine torque and angle logic
Merged functionalities of LatControlTorque and LatControlAngle into a single LatControlAngleTorque class. Refactored code to utilize methods from both parent classes, reducing duplication and improving maintainability.
Add angle-torque hybrid lateral control for Hyundai CAN FD
Introduces `LatControlAngleTorque` to enable hybrid angle and torque-based steering for specific Hyundai models. Updates related logic in carcontroller, interface, and controlsd to accommodate this new lateral control method. Adjusts torque parameters for enhanced control in supported models.
Replaced direct access to `params` with instance variables for torque parameters to improve code clarity and maintainability. Updated smoothing factor description in angle tuning settings to include speed-related behavior. This enhances readability and prepares for further tuning adjustments.
Updated the value of HkgTuningOverridingCycles to a string for consistency with other parameters in the tuning configuration. This ensures proper handling and avoids potential issues with type mismatches.
Add overriding cycles parameter for torque adjustment
Introduced "HkgTuningOverridingCycles" for configurable user override torque ramp-down cycles. Updated relevant logic in torque control and UI settings to handle the new parameter. This improves flexibility in adjusting steering torque override behavior.
Introduce separate angle tuning controls for HKG vehicles, including smoothing factor, min torque, and max torque parameters. Refactor developer panel to integrate the new settings into a dedicated UI panel, enhancing modularity and customization capabilities.
Enhanced the description to clarify its effect on steering behavior. Included details on how the smoothing factor impacts steering smoothness using EMA, aiding user understanding.
Refactored the calculation and application of the steering angle to improve code clarity and ensure smoother transitions. Removed unused parameter update logic in `latcontrol_angle.py` and enhanced handling of driver overrides in `carcontroller.py`.
Replaced `self._params` with `self.params` to correctly access the parameter `HkgTuningAngleSmoothingFactor`. This ensures the smoothing factor is updated as intended during the control loop.
Introduced a dynamic smoothing factor using the `HkgTuningAngleSmoothingFactor` parameter. This allows more granular control over curvature smoothing based on customizable user input, enhancing driving smoothness. Added necessary logic to process and apply this parameter efficiently.
Introduced a new parameter, `HkgTuningAngleSmoothingFactor`, to apply exponential moving average (EMA) smoothing to steering angle changes, reducing sudden adjustments. Added associated UI controls, parameter persistence, and integration into Hyundai carcontroller logic for improved steering stability.
Wrap the pygame import in a try-except block to catch ImportError. This prevents the script from crashing and provides a clear message prompting the user to install pygame if it's missing.
Remove "inputs" package and update "pygame" dependency
The "inputs" package has been removed from the lockfile and dependency list, while "pygame" is now included universally without the "dev" extra marker. This change simplifies dependencies and ensures consistency across environments.
Update dependencies: replace 'inputs' with 'pygame'
Replaced the 'inputs' library with 'pygame' for joystickd dependencies in `pyproject.toml`. Additionally, removed a redundant 'pygame' entry from the general dependencies.
Ugly, I know, but soundd is unhappy with joystick
Allowing lat with mads
Invert steering input for joystick control
The steering axis input is now multiplied by -1 to reverse its direction. This ensures correct handling of the left stick's horizontal input, aligning behavior with expected control dynamics.
Refactor joystick control to use pygame for broader support
Replaced the `inputs` library with `pygame` for joystick handling, providing improved compatibility with Xbox and PlayStation controllers. Added initialization, adaptive mappings, deadzone handling, and enhanced event processing for robust joystick operation. Updated README with dependencies and usage information for Xbox controllers.
Updated the `filter_speed_matrox` values to improve curvature filtering behavior at different speeds. This change ensures better handling and stability across a wider range of driving conditions.
Introduced speed-based dynamic alpha adjustment using interpolation for smoother curvature filtering. This improves steering angle calculations by adapting filter sensitivity to vehicle speed, enhancing control performance.
Updated curvature breakpoints and torque scaling for improved control in sharp turns. Increased filter alpha for faster curvature response while maintaining system stability.
Updated curvature breakpoints in Hyundai carcontroller to improve torque scaling for curved driving. Slightly refined the filter coefficient in lateral control for smoother curvature filtering and more accurate steering adjustments.
Introduced dynamic torque scaling based on curvature for smoother and more adaptive steering control. Replaced raw curvature inputs with filtered curvature for enhanced stability and reduced noise in steering angle calculations. Removed unused speed scaling logic to simplify the lateral control flow.
This reverts commit ea1af879ba2905b076ccfe65993a9db701d689dd.
Revert "More improvement but still not quite"
This reverts commit ad95493c5c61b2ace7c459d2ebc151ddaa80040f.
Revert "Adjust low-speed scaling for lateral control angle"
This reverts commit 6f789ac1ebb66b0239b4028303573c2d7d386b39.
Revert "Refactor speed-based steering scaling logic."
This reverts commit 1d40735ab8db8d470ff3b287a6b42847beffff7d.
Updated the steering angle computation to use a clearer and more descriptive speed-scaling configuration. Replaced low-speed-specific logic with a generalized approach based on speed breakpoints and corresponding influence factors. This improves maintainability and ensures smoother steering adjustments at varying speeds.
Refined the low-speed scaling parameters by modifying speed breakpoints and factors. This improves handling at lower speeds for smoother and more predictable behavior.
# We do a bit of a hack here to avoid canceling the publishing job if a new commit comes in while we're publishing by adding the sha to the group name.
# This means that if multiple commits come in while we're publishing, they will be queued up and publish one after the other.
# Otherwise, if a job is waiting to be published due to environment wait time, it would be canceled by a new commit and restart the wait time.
<configurationdefault="false"name="Replay for controls + ui"type="Multirun"separateTabs="false"reuseTabsWithFailures="false"startOneByOne="true"markFailedProcess="true"hideSuccessProcess="false"delayTime="0.0">
<runConfigurationname="replay for controls"type="Native Application"/>
<configurationdefault="false"name="replay for controls"type="CLionNativeAppRunConfigurationType"focusToolWindowBeforeRun="true"PROGRAM_PARAMS=""$Prompt$" --block "sendcan,carState,carParams,carOutput,liveTracks,carParamsSP,carStateSP,bookmarkButton""REDIRECT_INPUT="false"ELEVATE="false"USE_EXTERNAL_CONSOLE="false"EMULATE_TERMINAL="true"WORKING_DIR="file://$ProjectFileDir$/tools/replay"PASS_PARENT_ENVS_2="true"PROJECT_NAME="openpilot-special"TARGET_NAME="replay"CONFIG_NAME="replay"version="1"RUN_PATH="replay">
[sunnypilot](https://github.com/sunnyhaibin/sunnypilot) is a fork of comma.ai's openpilot, an open source driver assistance system. sunnypilot offers the user a unique driving experience for over 300+ supported car makes and models with modified behaviors of driving assist engagements. sunnypilot complies with comma.ai's safety rules as accurately as possible.
## 💭 Join our Discord
Join the official sunnypilot Discord server to stay up to date with all the latest features and be a part of shaping the future of sunnypilot!
Join the official sunnypilot community forum to stay up to date with all the latest features and be a part of shaping the future of sunnypilot!
* https://community.sunnypilot.ai/
## Documentation
https://docs.sunnypilot.ai/ is your one stop shop for everything from features to installation to FAQ about the sunnypilot
@@ -16,25 +14,54 @@ https://docs.sunnypilot.ai/ is your one stop shop for everything from features t
* A supported device to run this software
* a [comma three](https://comma.ai/shop/products/three) or a [C3X](https://comma.ai/shop/comma-3x)
* This software
* One of [the 300+ supported cars](https://github.com/commaai/openpilot/blob/master/docs/CARS.md). We support Honda, Toyota, Hyundai, Nissan, Kia, Chrysler, Lexus, Acura, Audi, VW, Ford and more. If your car is not supported but has adaptive cruise control and lane-keeping assist, it's likely able to run sunnypilot.
* One of [the 325+ supported cars](https://github.com/sunnypilot/sunnypilot/blob/master/docs/CARS.md). We support Honda, Toyota, Hyundai, Nissan, Kia, Chrysler, Lexus, Acura, Audi, VW, Ford, and more. If your car is not supported but has adaptive cruise control and lane-keeping assist, it's likely able to run sunnypilot.
* A [car harness](https://comma.ai/shop/products/car-harness) to connect to your car
Detailed instructions for [how to mount the device in a car](https://comma.ai/setup).
## Installation
Please refer to [Recommended Branches](#-recommended-branches) to find your preferred/supported branch. This guide will assume you want to install the latest `release-c3` branch.
Please refer to [Recommended Branches](#recommended-branches) to find your preferred/supported branch. This guide will assume you want to install the latest `staging` branch.
### If you want to use our newest branches (our rewrite)
> [!TIP]
>You can see the rewrite state on our [rewrite project board](https://github.com/orgs/sunnypilot/projects/2), and to install the new branches, you can use the following links
* sunnypilot not installed or you installed a version before 0.8.17?
1. [Factory reset/uninstall](https://github.com/commaai/openpilot/wiki/FAQ#how-can-i-reset-the-device) the previous software if you have another software/fork installed.
2. After factory reset/uninstall and upon reboot, select `Custom Software` when given the option.
3. Input the installation URL per [Recommended Branches](#-recommended-branches). Example: ```release-c3.sunnypilot.ai```.
3. Input the installation URL per [Recommended Branches](#recommended-branches). Example: ```https://staging.sunnypilot.ai```.
4. Complete the rest of the installation following the onscreen instructions.
* sunnypilot already installed and you installed a version after 0.8.17?
1. On the comma three, go to `Settings` ▶️ `Software`.
1. On the comma three/3X, go to `Settings` ▶️ `Software`.
2. At the `Download` option, press `CHECK`. This will fetch the list of latest branches from sunnypilot.
3. At the `Target Branch` option, press `SELECT` to open the Target Branch selector.
4. Scroll to select the desired branch per Recommended Branches (see below). Example: `release-c3`
4. Scroll to select the desired branch per Recommended Branches (see below). Example: `staging`
> You can use sunnypilot/targetbranch as an install URL. Example: 'sunnypilot/staging'.
> [!NOTE]
> Do you require further assistance with software installation? Join the [sunnypilot community forum](https://community.sunnypilot.ai/new-topic?category=general/qa) and create a topic in the General/Q&A Category channel.
<details>
<summary>Older legacy branches</summary>
### If you want to use our older legacy branches (*not recommended*)
> [**IMPORTANT**]
> It is recommended to [re-flash AGNOS](https://flash.comma.ai/) if you intend to downgrade from the new branches.
> You can still restore the latest sunnylink backup made on the old branches.
### If you want to use our newest branches (our rewrite)
> [!TIP]
>You can see the rewrite state on our [rewrite project board](https://github.com/orgs/sunnypilot/projects/2), and to install the new branches, you can use the following links
</details>
> [!IMPORTANT]
> It is recommended to [re-flash AGNOS](https://flash.comma.ai/) if you intend to downgrade from the new branches.
> You can still restore the latest sunnylink backup made on the old branches.
> Do you require further assistance with software installation? Join the [sunnypilot Discord server](https://discord.sunnypilot.com) and message us in the `#installation-help` channel.
## 🎆 Pull Requests
We welcome both pull requests and issues on GitHub. Bug fixes are encouraged.
A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified.
|Hyundai|Kona 2020|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|6 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai B connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona 2020">Buy Here</a></sub></details>|||
|Hyundai|Kona 2022-23|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai O connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona 2022-23">Buy Here</a></sub></details>|||
|Hyundai|Kona Electric 2018-21|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai G connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona Electric 2018-21">Buy Here</a></sub></details>|||
|Hyundai|Kona Electric 2022-23|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai O connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona Electric 2022-23">Buy Here</a></sub></details>|||
|Hyundai|Kona Electric (with HDA II, Korea only) 2023[<sup>6</sup>](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai R connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona Electric (with HDA II, Korea only) 2023">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=U2fOCmcQ8hw" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>||
|Hyundai|Kona Electric Non-SCC 2019|No Smart Cruise Control (Non-SCC)|Stock|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai G connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona Electric Non-SCC 2019">Buy Here</a></sub></details>|||
|Hyundai|Kona Hybrid 2020|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai I connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona Hybrid 2020">Buy Here</a></sub></details>|||
|Hyundai|Kona Non-SCC 2019|No Smart Cruise Control (Non-SCC)|Stock|0 mph|0 mph|[](##)|[](##)|<details><summary>Parts</summary><sub>- 1 Hyundai B connector<br>- 1 comma 3X<br>- 1 comma power v3<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x?harness=Hyundai Kona Non-SCC 2019">Buy Here</a></sub></details>|||
@@ -6,7 +6,7 @@ Development is coordinated through [Discord](https://discord.comma.ai) and GitHu
### Getting Started
* Setup your [development environment](../tools/)
* Setup your [development environment](/tools/)
* Join our [Discord](https://discord.comma.ai)
* Docs are at https://docs.comma.ai and https://blog.comma.ai
@@ -39,7 +39,7 @@ All of these are examples of good PRs:
### First contribution
[Projects / openpilot bounties](https://github.com/orgs/commaai/projects/26/views/1?pane=info) is the best place to get started and goes in-depth on what's expected when working on a bounty.
There's lot of bounties that don't require a comma 3/3X or a car.
There's lot of bounties that don't require a comma 3X or a car.
@@ -16,7 +16,7 @@ industry standards of safety for Level 2 Driver Assistance Systems. In particula
ISO26262 guidelines, including those from [pertinent documents](https://www.nhtsa.gov/sites/nhtsa.dot.gov/files/documents/13498a_812_573_alcsystemreport.pdf)
released by NHTSA. In addition, we impose strict coding guidelines (like [MISRA C : 2012](https://www.misra.org.uk/what-is-misra/))
on parts of openpilot that are safety relevant. We also perform software-in-the-loop,
hardware-in-the-loop and in-vehicle tests before each software release.
hardware-in-the-loop, and in-vehicle tests before each software release.
Following Hazard and Risk Analysis and FMEA, at a very high level, we have designed openpilot
ensuring two main safety requirements.
@@ -29,8 +29,18 @@ ensuring two main safety requirements.
For additional safety implementation details, refer to [panda safety model](https://github.com/commaai/panda#safety-model). For vehicle specific implementation of the safety concept, refer to [opendbc/safety/safety](https://github.com/commaai/opendbc/tree/master/opendbc/safety/safety).
**Extra note**: comma.ai strongly discourages the use of openpilot forks with safety code either missing or
not fully meeting the above requirements.
[^1]: For these actuator limits we observe ISO11270 and ISO15622. Lateral limits described there translate to 0.9 seconds of maximum actuation to achieve a 1m lateral deviation.
[^1]: For these actuator limits we observe ISO11270 and ISO15622. Lateral limits described there translate to 0.9 seconds of maximum actuation to achieve a 1m lateral deviation.
---
### Forks of openpilot
* Do not disable or nerf [driver monitoring](https://github.com/commaai/openpilot/tree/master/selfdrive/monitoring)
* Do not disable or nerf [excessive actuation checks](https://github.com/commaai/openpilot/tree/master/selfdrive/selfdrived/helpers.py)
* If your fork modifies any of the code in `opendbc/safety/`:
* your fork cannot use the openpilot trademark
* your fork must preserve the full [safety test suite](https://github.com/commaai/opendbc/tree/master/opendbc/safety/tests) and all tests must pass, including any new coverage required by the fork's changes
Failure to comply with these standards will get you and your users banned from comma.ai servers.
**comma.ai strongly discourages the use of openpilot forks with safety code either missing or not fully meeting the above requirements.**
A comma 3/3X is a normal [Linux](https://github.com/commaai/agnos-builder) computer that exposes [SSH](https://wiki.archlinux.org/title/Secure_Shell) and a [serial console](https://wiki.archlinux.org/title/Working_with_the_serial_console).
A comma 3X is a normal [Linux](https://github.com/commaai/agnos-builder) computer that exposes [SSH](https://wiki.archlinux.org/title/Secure_Shell) and a [serial console](https://wiki.archlinux.org/title/Working_with_the_serial_console).
## Serial Console
On both the comma three and 3X, the serial console is accessible from the main OBD-C port.
Connect the comma 3/3X to your computer with a normal USB C cable, or use a [comma serial](https://comma.ai/shop/comma-serial) for steady 12V power.
Connect the comma 3X to your computer with a normal USB C cable, or use a [comma serial](https://comma.ai/shop/comma-serial) for steady 12V power.
On the comma three, the serial console is exposed through a UART-to-USB chip, and `tools/scripts/serial.sh` can be used to connect.
@@ -45,7 +45,7 @@ In order to use ADB on your device, you'll need to perform the following steps u
* Here's an example command for connecting to your device using its tethered connection: `adb connect 192.168.43.1:5555`
> [!NOTE]
> The default port for ADB is 5555 on the comma 3/3X.
> The default port for ADB is 5555 on the comma 3X.
For more info on ADB, see the [Android Debug Bridge (ADB) documentation](https://developer.android.com/tools/adb).
oid sha256:c824f68646a3b94f117f01c70dc8316fb466e05fbd42ccdba440b8a8dc86914b
size 46265993
oid sha256:befac016a247b7ad5dc5b55d339d127774ed7bd2b848f1583f72aa4caee37781
size 46271991
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.