Compare commits

...

181 Commits

Author SHA1 Message Date
rav4kumar d775a37293 test 2024-11-07 19:18:44 -07:00
Kumar d32db436b5 Update interface.py 2024-11-07 16:52:41 -07:00
Kumar df5cbb93a3 Update accel_controller.py 2024-11-06 16:52:56 -07:00
Kumar 0fca922aad Update accel_controller.py 2024-11-06 16:52:18 -07:00
rav4kumar e7caf94180 ff 2024-11-06 07:15:51 -07:00
Kumar 5bfdf48c45 Update interface.py 2024-11-05 16:19:08 -07:00
Kumar e2b3eb2aba ff 2024-10-31 07:38:04 -07:00
Kumar b218cd07c4 much better 2024-10-29 07:11:26 -07:00
Kumar 804aabf77f fff 2024-10-27 18:51:23 -07:00
rav4kumar 9e77b88ae9 tune 2024-10-23 07:56:03 -07:00
rav4kumar 6bf1589fb0 fix 2024-10-23 07:50:02 -07:00
rav4kumar 637e82d876 ff 2024-10-23 07:49:41 -07:00
Kumar b99eb7d379 Update long_mpc.py 2024-10-23 07:49:31 -07:00
rav4kumar c41f3ed92f dynamic speed and dager zone? 2024-10-20 19:19:24 -07:00
Kumar f944d7aa1c fff 2024-10-20 17:53:36 -07:00
Kumar 6a5681f4f2 Update interface.py 2024-10-17 16:32:18 -07:00
Kumar 524d0c369b Update accel_controller.py 2024-10-17 07:42:50 -07:00
Kumar 722e015eba Update long_mpc.py 2024-10-17 07:41:49 -07:00
Kumar cb1b1aaa7b Update interface.py 2024-10-15 16:11:53 -07:00
Kumar 60abb3aa2b Update long_mpc.py 2024-10-15 16:10:28 -07:00
Kumar 0a5d99d520 different approach 2024-10-15 07:38:59 -07:00
Kumar d13355d956 Update long_mpc.py 2024-10-14 16:45:28 -07:00
Kumar 3e62928702 maybe 2024-10-14 07:40:19 -07:00
Kumar b0ced73fa6 gg 2024-10-12 07:19:54 -07:00
Kumar 93922e7ec7 Update interface.py 2024-10-11 16:57:20 -07:00
Kumar b917b0a947 Update interface.py 2024-10-11 08:09:16 -07:00
rav4kumar 1bac05a349 Revert "revisit smooth brake"
This reverts commit a0fe916e4b.
2024-10-11 07:53:53 -07:00
Kumar 2f1350edf9 Update interface.py 2024-10-10 08:12:42 -07:00
rav4kumar a0fe916e4b revisit smooth brake 2024-10-10 07:44:24 -07:00
Kumar 448158a46d Update long_mpc.py 2024-10-09 16:28:12 -07:00
Kumar 924057a4f9 Update interface.py 2024-10-09 16:27:11 -07:00
Kumar 6c51680da8 low speed 2024-10-09 07:45:52 -07:00
rav4kumar 7efe3a8dd9 lt02 2024-10-06 12:34:02 -07:00
Kumar e49c6543e8 Update long_mpc.py 2024-10-04 16:52:08 -07:00
Kumar c3634cb69c Update accel_controller.py 2024-10-04 16:50:25 -07:00
Kumar 418d1c4e6c Update interface.py 2024-10-04 16:48:35 -07:00
rav4kumar 42f43d76fa ttf 2024-10-03 20:14:46 -07:00
Kumar 68efbec683 new 2024-10-03 07:49:29 -07:00
rav4kumar d6697669b8 final 2024-09-29 12:54:02 -07:00
rav4kumar 96c0786fac fix the name 2024-09-28 18:47:14 -07:00
rav4kumar d41cba9384 drive mode fix 2024-09-28 18:47:07 -07:00
rav4kumar 502a7b527f ttf 2024-09-28 11:28:24 -07:00
rav4kumar 2048e5f892 Reapply "Longitudinal: Dynamic Personality"
This reverts commit 4551fb12ff.
2024-09-28 11:27:31 -07:00
rav4kumar 4551fb12ff Revert "Longitudinal: Dynamic Personality"
This reverts commit ca202c3c4a.
2024-09-27 21:37:48 -07:00
rav4kumar bba1ea5d45 kt 2024-09-27 08:00:28 -07:00
Kumar d6ec5ef5aa Update interface.py 2024-09-23 16:02:38 -07:00
rav4kumar 35285579f9 drivemode: reintroduce try epect? 2024-09-20 07:25:33 -07:00
rav4kumar e564cafa0d fix drive mode 2024-09-18 07:37:06 -07:00
rav4kumar 6e775c1768 fix drive mode 2024-09-17 07:16:08 -07:00
rav4kumar 10baad1d23 tt 2024-09-17 07:06:48 -07:00
Kumar a5450a1dd0 Update interface.py 2024-09-16 16:25:51 -07:00
Kumar e7ad4ab7c5 Update long_mpc.py 2024-09-16 16:12:46 -07:00
Kumar 1557662393 Update accel_controller.py 2024-09-16 16:11:09 -07:00
Kumar 38d4cba5be Update interface.py 2024-09-16 16:10:31 -07:00
Kumar f08c90209b no shane 2024-09-16 09:12:01 -07:00
rav4kumar 4ec3d78e3d tune 2024-09-16 07:39:04 -07:00
rav4kumar 4726c05dfa shanes changes 2024-09-16 07:36:22 -07:00
rav4kumar 7b384185a6 hard code 2024-09-15 20:41:39 -07:00
rav4kumar 1400df2789 drive mode selector 2024-09-15 20:26:41 -07:00
Kumar a925ad1fa7 fix 2024-09-15 16:54:46 -07:00
Kumar e2ca21f605 ffer 2024-09-15 15:01:36 -07:00
rav4kumar 0a55f898d5 bump ref 2024-09-14 20:16:54 -07:00
Kumar b73eb6e6db Update accel_controller.py 2024-09-14 16:47:13 -07:00
Kumar e78e1ee8c8 Update accel_controller.py 2024-09-14 15:56:52 -07:00
rav4kumar 0765267cb2 readd from openpilot.selfdrive.controls.lib.pid import PIDController 2024-09-14 04:11:55 -07:00
rav4kumar 4a07ec504f 9-9-sm 2024-09-13 17:41:33 -07:00
Kumar 187cefb2df Update interface.py 2024-09-13 11:42:37 -07:00
Kumar ce268cbc61 Update long_mpc.py 2024-09-13 11:41:48 -07:00
rav4kumar 404148cb3c no shane 2024-09-13 07:49:28 -07:00
rav4kumar 17a20291e2 Merge branch 'lt' of https://github.com/sunnypilot/sunnypilot into lt 2024-09-12 17:30:08 -07:00
rav4kumar 5afc2a3c62 revert "Toyota: API is now gas/brake #1189" 2024-09-12 17:29:30 -07:00
Kumar ee9353480d Update accel_controller.py 2024-09-11 18:23:07 -07:00
rav4kumar dced58dc34 highspeed 2024-09-11 07:21:13 -07:00
rav4kumar 98d72bba3d dec: bp - large=low, small=high 2024-09-11 07:20:02 -07:00
rav4kumar a0dac9282e dec: contextual check before setting true 2024-09-10 07:20:52 -07:00
rav4kumar 2dcc838f73 less bp 2024-09-10 07:03:32 -07:00
Kumar 0b4170dcc2 gd 2024-09-09 15:39:25 -07:00
Kumar 143ac94ba9 Update accel_controller.py 2024-09-09 13:29:34 -07:00
Kumar 876a500cfb Update accel_controller.py 2024-09-09 13:02:40 -07:00
Kumar 06726c4b92 Update accel_controller.py 2024-09-09 13:01:46 -07:00
Kumar e03b640bf8 Update accel_controller.py 2024-09-09 07:48:30 -07:00
Kumar f97e2fa4bd Update interface.py 2024-09-09 07:40:27 -07:00
Kumar bda7abf354 Update accel_controller.py 2024-09-08 16:59:47 -07:00
Kumar af9a9d50cc Update interface.py 2024-09-08 16:58:36 -07:00
Kumar 5b62bd4033 Update interface.py 2024-09-06 16:24:30 -07:00
Kumar 9ed43705c4 finnefriyah! 2024-09-06 07:27:07 -07:00
Kumar e30ae2e70e Update accel_controller.py 2024-09-05 16:42:44 -07:00
Kumar e08a8552e0 Update interface.py 2024-09-05 16:41:17 -07:00
Kumar 235048ab9d Update interface.py 2024-09-05 08:03:58 -07:00
Kumar e13b70f88b shane 2024-09-05 07:44:07 -07:00
Kumar 265e1ae7ce ff 2024-09-04 16:45:43 -07:00
Kumar 929ea507f2 tt 2024-09-04 07:33:11 -07:00
Kumar 3d06292c7e Update long_mpc.py 2024-09-03 16:37:03 -07:00
Kumar f8ee6f60ff Update accel_controller.py 2024-09-03 16:35:49 -07:00
Kumar 725fcea452 Update interface.py 2024-09-03 08:26:20 -07:00
rav4kumar acb894a678 reset 2024-09-02 20:03:09 -07:00
Kumar c574fd0b5b Update long_mpc.py 2024-09-02 17:04:08 -07:00
Kumar cf36500aef Update accel_controller.py 2024-09-02 17:02:52 -07:00
rav4kumar 17829703ee import params 2024-09-01 21:39:55 -07:00
rav4kumar c854c9763d Toyota: API is now gas/brake #1189 2024-09-01 21:31:12 -07:00
rav4kumar a0bbe2a126 ui: eco status 2024-09-01 12:10:39 -07:00
rav4kumar 77259f26d0 faster deteceted for slowdown 2024-08-30 06:58:38 -07:00
rav4kumar f093f460a3 firyahhhhh! 2024-08-23 07:42:48 -07:00
Kumar bbbbe3b8ef Update interface.py 2024-08-22 13:10:32 -07:00
rav4kumar 4182f29840 low speed 2024-08-22 07:04:35 -07:00
Stupefacient 2d4f31bcec Remove device (#416) 2024-08-22 07:46:37 +02:00
Kumar 5e798af4a1 Update dynamic_experimental_controller.py 2024-08-21 17:41:52 -07:00
Kumar dd40b8a1e8 Update accel_controller.py 2024-08-21 16:43:58 -07:00
Kumar 202ea9141f Update dynamic_experimental_controller.py 2024-08-21 08:24:42 -07:00
Kumar 1e8a276027 Update dynamic_experimental_controller.py 2024-08-21 08:17:47 -07:00
rav4kumar 817592c184 tune 2024-08-21 07:51:07 -07:00
rav4kumar 1797d978a4 dec: use "WeightedMovingAverageCalculator" for more responsiveness and for smoohter transtion 2024-08-21 07:48:25 -07:00
rav4kumar df8046ec8c dec: use anomaly to filter noise 2024-08-20 07:40:33 -07:00
rav4kumar ba52a42514 ll 2024-08-20 07:16:41 -07:00
rav4kumar c1cc78d401 tiny tiny 2024-08-18 20:13:24 -07:00
Kumar 3281ab4b84 gg 2024-08-17 20:44:11 -07:00
Kumar d00d623173 staged 2024-08-17 13:01:01 -07:00
Kumar 36109bc743 Update accel_controller.py 2024-08-16 13:59:08 -07:00
Kumar 4c198769b1 Update long_mpc.py 2024-08-16 08:16:33 -07:00
Kumar 57fce9f3a4 Update long_mpc.py 2024-08-16 07:09:54 -07:00
Kumar 852302b97b Update accel_controller.py 2024-08-15 16:36:44 -07:00
rav4kumar a176851afe readjust low speed 2024-08-15 05:32:29 -07:00
Kumar ce4d1f8505 142 2024-08-14 07:55:54 -07:00
rav4kumar a0f2b086c7 Merge remote-tracking branch 'origin/master-dev-c3' into lt 2024-08-13 17:58:07 -07:00
Kumar 59ad1b0926 readjust ll 2024-08-13 16:35:41 -07:00
Kumar add019179f tt 2024-08-12 13:28:29 -07:00
rav4kumar 4a51023102 low low lose 2024-08-11 12:12:54 -07:00
rav4kumar 1f0415e310 Merge remote-tracking branch 'origin/master-dev-c3' into lt 2024-08-11 11:54:03 -07:00
Kumar 1937140890 Update long_mpc.py 2024-08-10 22:17:14 -07:00
Kumar b9d1980f6e Update accel_controller.py 2024-08-10 22:16:08 -07:00
Kumar 0b766c67b3 fine tune - cutin 2024-08-10 09:47:59 -07:00
rav4kumar f31bd02087 Merge remote-tracking branch 'origin/master-dev-c3' into lt 2024-08-09 20:01:06 -07:00
Kumar f9a195bab7 safety 2024-08-09 07:45:19 -07:00
Jason Wen 21a2aa79b2 Merge branch 'hkg-can-jerk' into lt 2024-08-08 21:01:09 -04:00
rav4kumar 31ba711819 dec 2024-08-08 07:22:09 -07:00
rav4kumar 805fd9a290 low speed 2024-08-08 07:13:50 -07:00
Jason Wen b8f63740bc Merge branch 'hkg-can-jerk' into lt 2024-08-07 13:23:46 -04:00
Jason Wen c5ebb3a5a1 Merge branch 'hkg-can-jerk' into lt 2024-08-07 11:21:22 -04:00
Jason Wen c365aac60a Merge branch 'hkg-can-jerk' into lt 2024-08-07 07:48:09 -04:00
Jason Wen 98e9890004 Merge branch 'hkg-can-jerk' into lt 2024-08-07 07:16:59 -04:00
Kumar 8b976ee3ac Lt (#402) 2024-08-06 21:42:51 -07:00
Kumar c0d5f23ac0 Merge branch 'lt' into lt 2024-08-06 21:42:26 -07:00
Jason Wen 5341eb30fe Merge branch 'hkg-can-jerk' into lt 2024-08-07 00:16:36 -04:00
Jason Wen a07bb99d0c Merge branch 'hkg-can-jerk' into lt
# Conflicts:
#	selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py
#	selfdrive/controls/lib/longitudinal_planner.py
2024-08-06 23:45:29 -04:00
rav4kumar bc65566017 Revert "dynamically change *coast @cydia2020"
This reverts commit c831b5f2af.
2024-08-06 17:36:53 -07:00
Kumar db684508da Update accel_controller.py 2024-08-06 16:48:44 -07:00
cgw1968acc 94fc8a9b5a Update accel_controller.py 2024-08-07 00:01:57 +08:00
cgw1968acc 080ca6e62f Update accel_controller.py 2024-08-06 23:59:42 +08:00
cgw1968acc 4e3e220f37 Update accel_controller.py 2024-08-06 23:54:51 +08:00
cgw1968acc b2dfc01469 Update accel_controller.py 2024-08-06 23:29:32 +08:00
Kumar 3413f077fb Simplify 2024-08-06 08:20:37 -07:00
cgw1968acc c32595e63f Update accel_controller.py 2024-08-06 23:04:49 +08:00
rav4kumar cae49279e5 Merge remote-tracking branch 'origin/master-dev-c3' into lt 2024-08-06 07:37:56 -07:00
rav4kumar 72deb320a7 Merge remote-tracking branch 'origin/master' into lt 2024-08-06 07:06:04 -07:00
rav4kumar f532c73c60 accel 2024-08-06 07:05:50 -07:00
rav4kumar bb3d041bb1 rockettttt 2024-08-06 07:00:38 -07:00
cgw1968acc f7da0a2af5 Update accel_controller.py 2024-08-06 21:24:23 +08:00
cgw1968acc 2773e214a8 Update accel_controller.py 2024-08-06 21:09:51 +08:00
Kumar d0608fc987 Update long_mpc.py 2024-08-05 17:37:22 -07:00
Kumar 2f56309bb6 Update long_mpc.py 2024-08-05 17:17:27 -07:00
Jason Wen e602ac636c Merge branch 'hkg-can-jerk' into lt 2024-08-05 13:44:01 -04:00
Kumar 1ce2ecd153 Update accel_controller.py 2024-08-05 08:09:38 -07:00
Kumar b4fd05617c Update long_mpc.py 2024-08-04 08:06:12 -07:00
Jason Wen 373d6c2e59 Merge branch 'hkg-can-jerk' into lt 2024-08-04 11:02:14 -04:00
rav4kumar 7aef4728ca low speed breakpoints / closer stop to the lead in front 2024-08-04 06:16:49 -07:00
Jason Wen ca5fa0e6d9 Merge branch 'hkg-can-jerk' into lt 2024-08-04 09:11:32 -04:00
rav4kumar 0c76a761ce Merge remote-tracking branch 'origin/master' into lt 2024-08-04 06:07:41 -07:00
rav4kumar dee11f6d54 bump ref 2024-08-03 22:13:26 -07:00
rav4kumar 76efd9e8ae fix ui 2024-08-03 22:02:51 -07:00
rav4kumar 2721e85275 gg 2024-08-03 21:51:24 -07:00
rav4kumar dd08146711 tune 2024-08-03 21:50:54 -07:00
rav4kumar c219ba7c79 ttttttt 2024-08-03 21:50:47 -07:00
rav4kumar ee67635e8d tune 2024-08-03 21:50:40 -07:00
rav4kumar 972c69bd2a df 2024-08-03 21:50:16 -07:00
rav4kumar 16e9625626 stop distance tune 2024-08-03 21:49:55 -07:00
rav4 kumar 6b71d82019 vroom vroom vroom vroom vroom 2024-08-03 21:49:33 -07:00
rav4kumar 8d693e1d41 dec update 2024-08-03 21:49:10 -07:00
rav4kumar cab9ccf0d8 prius glides tunes 2024-08-03 21:48:19 -07:00
rav4kumar c831b5f2af dynamically change *coast @cydia2020 2024-08-03 21:47:38 -07:00
rav4kumar 58f994496c bsm 2024-08-03 21:20:43 -07:00
rav4kumar 2e15f519bc Reapply "Toyota: Auto Brake Hold"
This reverts commit be72a8ed06.
2024-08-03 21:19:27 -07:00
33 changed files with 1172 additions and 330 deletions
+3
View File
@@ -38,6 +38,9 @@ sunnypilot - 0.9.8.0 (2024-xx-xx)
* In response to the official deprecation of support for Smart DSU (SDSU) and Radar CAN Filter in the upstream ([commaai/openpilot#32777](https://github.com/commaai/openpilot/pull/32777)), sunnypilot will continue maintaining software support for Smart DSU (SDSU) and Radar CAN Filter * In response to the official deprecation of support for Smart DSU (SDSU) and Radar CAN Filter in the upstream ([commaai/openpilot#32777](https://github.com/commaai/openpilot/pull/32777)), sunnypilot will continue maintaining software support for Smart DSU (SDSU) and Radar CAN Filter
* UPDATED: Continued support for Mapbox navigation * UPDATED: Continued support for Mapbox navigation
* In response to the official temporary deprecation of support for Mapbox navigation in the upstream ([commaai/openpilot#32773](https://github.com/commaai/openpilot/pull/32773)), sunnypilot will continue maintaining software support for Mapbox navigation * In response to the official temporary deprecation of support for Mapbox navigation in the upstream ([commaai/openpilot#32773](https://github.com/commaai/openpilot/pull/32773)), sunnypilot will continue maintaining software support for Mapbox navigation
* NEW❗: Toyota - Automatic Brake Hold (AHB) thanks to AlexandreSato!
* When you stop the vehicle completely by depressing the brake pedal, sunnypilot will activate Auto Brake Hold
* NOTE: Only for Toyota/Lexus vehicles with TSS2/LSS2
* NEW❗: Toyota - Automatic Door Locking and Unlocking thanks to AlexandreSato, cydia2020, and dragonpilot-community! * NEW❗: Toyota - Automatic Door Locking and Unlocking thanks to AlexandreSato, cydia2020, and dragonpilot-community!
* Auto Lock by Speed: All doors are automatically locked when vehicle speed is approximately 6 mph (10 km/h) or higher * Auto Lock by Speed: All doors are automatically locked when vehicle speed is approximately 6 mph (10 km/h) or higher
* Auto Unlock by Shift to P: All doors are automatically unlocked when shifting the shift lever to P * Auto Unlock by Shift to P: All doors are automatically unlocked when shifting the shift lever to P
+1
View File
@@ -138,6 +138,7 @@ struct CarEvent @0x9b1657f34caf3ad3 {
speedLimitConfirmed @140; speedLimitConfirmed @140;
torqueNNLoad @141; torqueNNLoad @141;
hyundaiRadarTracksAvailable @142; hyundaiRadarTracksAvailable @142;
spAutoBrakeHold @143;
radarCanErrorDEPRECATED @15; radarCanErrorDEPRECATED @15;
communityFeatureDisallowedDEPRECATED @62; communityFeatureDisallowedDEPRECATED @62;
+8 -1
View File
@@ -35,6 +35,11 @@ enum ModelGeneration {
five @5; five @5;
} }
enum MpcSource {
acc @0;
blended @1;
}
struct ControlsStateSP @0x81c2f05a394cf4af { struct ControlsStateSP @0x81c2f05a394cf4af {
lateralState @0 :Text; lateralState @0 :Text;
personality @8 :LongitudinalPersonalitySP; personality @8 :LongitudinalPersonalitySP;
@@ -92,8 +97,10 @@ struct LongitudinalPlanSP @0xaedffd8f31e7b55d {
desiredTF @13 :Float32; desiredTF @13 :Float32;
notSpeedLimit @14 :Int16; notSpeedLimit @14 :Int16;
e2eX @15 :List(Float32); e2eX @15 :List(Float32);
e2eBlended @18 :Text; e2eBlendedDEPRECATED @18 :Text;
e2eStatus @22 :Bool; e2eStatus @22 :Bool;
mpcSource @23 :MpcSource;
dynamicExperimentalControl @24 :Bool;
distToTurn @7 :Float32; distToTurn @7 :Float32;
turnSpeed @8 :Float32; turnSpeed @8 :Float32;
+2
View File
@@ -330,8 +330,10 @@ std::unordered_map<std::string, uint32_t> keys = {
{"TorqueLateralJerk", PERSISTENT | BACKUP}, {"TorqueLateralJerk", PERSISTENT | BACKUP},
{"TorqueMaxLatAccel", PERSISTENT | BACKUP}, {"TorqueMaxLatAccel", PERSISTENT | BACKUP},
{"TorquedOverride", PERSISTENT | BACKUP}, {"TorquedOverride", PERSISTENT | BACKUP},
{"ToyotaAutoHold", PERSISTENT | BACKUP},
{"ToyotaAutoLockBySpeed", PERSISTENT | BACKUP}, {"ToyotaAutoLockBySpeed", PERSISTENT | BACKUP},
{"ToyotaAutoUnlockByShifter", PERSISTENT | BACKUP}, {"ToyotaAutoUnlockByShifter", PERSISTENT | BACKUP},
{"ToyotaDriveMode", PERSISTENT | BACKUP},
{"ToyotaEnhancedBsm", PERSISTENT | BACKUP}, {"ToyotaEnhancedBsm", PERSISTENT | BACKUP},
{"ToyotaSnG", PERSISTENT | BACKUP}, {"ToyotaSnG", PERSISTENT | BACKUP},
{"ToyotaTSS2Long", PERSISTENT | BACKUP}, {"ToyotaTSS2Long", PERSISTENT | BACKUP},
+1 -1
Submodule panda updated: 55018eafc2...827201c04a
+3
View File
@@ -60,6 +60,7 @@ class Car:
self.mads_disengage_lateral_on_brake = self.params.get_bool("DisengageLateralOnBrake") self.mads_disengage_lateral_on_brake = self.params.get_bool("DisengageLateralOnBrake")
self.mads_dlob = self.enable_mads and self.mads_disengage_lateral_on_brake self.mads_dlob = self.enable_mads and self.mads_disengage_lateral_on_brake
self.mads_ndlob = self.enable_mads and not self.mads_disengage_lateral_on_brake self.mads_ndlob = self.enable_mads and not self.mads_disengage_lateral_on_brake
self.sp_toyota_auto_brake_hold = self.params.get_bool("ToyotaAutoHold")
self.CP.alternativeExperience = 0 self.CP.alternativeExperience = 0
if not self.disengage_on_accelerator: if not self.disengage_on_accelerator:
self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.DISABLE_DISENGAGE_ON_GAS self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.DISABLE_DISENGAGE_ON_GAS
@@ -67,6 +68,8 @@ class Car:
self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.ENABLE_MADS self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.ENABLE_MADS
elif self.mads_ndlob: elif self.mads_ndlob:
self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.MADS_DISABLE_DISENGAGE_LATERAL_ON_BRAKE self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.MADS_DISABLE_DISENGAGE_LATERAL_ON_BRAKE
if self.sp_toyota_auto_brake_hold:
self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.ALLOW_AEB
if self.CP.customStockLongAvailable and self.CP.pcmCruise and self.params.get_bool("CustomStockLong"): if self.CP.customStockLongAvailable and self.CP.pcmCruise and self.params.get_bool("CustomStockLong"):
self.CP.pcmCruiseSpeed = False self.CP.pcmCruiseSpeed = False
+1 -1
View File
@@ -126,7 +126,7 @@ class CarInterface(CarInterfaceBase):
if 0x1fa in fingerprint[CAN.ECAN]: if 0x1fa in fingerprint[CAN.ECAN]:
ret.spFlags |= HyundaiFlagsSP.SP_NAV_MSG.value ret.spFlags |= HyundaiFlagsSP.SP_NAV_MSG.value
if Params().get("DongleId", encoding='utf8') in ("012c95f06918eca4", "68d6a96e703c00c9", "11c1f1909ca37bca"): if Params().get("DongleId", encoding='utf8') in ("012c95f06918eca4", "68d6a96e703c00c9"):
ret.spFlags |= HyundaiFlagsSP.SP_UPSTREAM_TACO.value ret.spFlags |= HyundaiFlagsSP.SP_UPSTREAM_TACO.value
else: else:
ret.enableBsm = 0x58b in fingerprint[0] ret.enableBsm = 0x58b in fingerprint[0]
+74 -1
View File
@@ -1,4 +1,7 @@
from cereal import car from cereal import car
import math
from openpilot.common.params import Params
from openpilot.selfdrive.controls.lib.pid import PIDController
from common.conversions import Conversions as CV from common.conversions import Conversions as CV
from openpilot.common.numpy_fast import clip, interp from openpilot.common.numpy_fast import clip, interp
from openpilot.selfdrive.car import apply_meas_steer_torque_limits, apply_std_steer_angle_limits, common_fault_avoidance, make_can_msg, make_tester_present_msg, \ from openpilot.selfdrive.car import apply_meas_steer_torque_limits, apply_std_steer_angle_limits, common_fault_avoidance, make_can_msg, make_tester_present_msg, \
@@ -13,6 +16,7 @@ from opendbc.can.packer import CANPacker
GearShifter = car.CarState.GearShifter GearShifter = car.CarState.GearShifter
SteerControlType = car.CarParams.SteerControlType SteerControlType = car.CarParams.SteerControlType
VisualAlert = car.CarControl.HUDControl.VisualAlert VisualAlert = car.CarControl.HUDControl.VisualAlert
#LongCtrlState = car.CarControl.Actuators.LongControlState
# LKA limits # LKA limits
# EPS faults if you apply torque while the steering rate is above 100 deg/s for too long # EPS faults if you apply torque while the steering rate is above 100 deg/s for too long
@@ -44,8 +48,11 @@ class CarController(CarControllerBase):
self.last_standstill = False self.last_standstill = False
self.standstill_req = False self.standstill_req = False
self.steer_rate_counter = 0 self.steer_rate_counter = 0
#self.pcm_accel_comp = 0
self.distance_button = 0 self.distance_button = 0
#self.pid = PIDController(k_p=1.0, k_i=0.25, k_f=0)
self.packer = CANPacker(dbc_name) self.packer = CANPacker(dbc_name)
self.gas = 0 self.gas = 0
self.accel = 0 self.accel = 0
@@ -55,6 +62,13 @@ class CarController(CarControllerBase):
self.last_blindspot_frame = 0 self.last_blindspot_frame = 0
self._auto_lock_speed = 0.0 self._auto_lock_speed = 0.0
if CP.spFlags & ToyotaFlagsSP.SP_AUTO_BRAKE_HOLD:
self.brake_hold_active: bool = False
self._brake_hold_counter: int = 0
self._brake_hold_reset: bool = False
self._prev_brake_pressed: bool = False
self._auto_lock_once = False self._auto_lock_once = False
self._gear_prev = GearShifter.park self._gear_prev = GearShifter.park
@@ -133,6 +147,41 @@ class CarController(CarControllerBase):
lta_active, self.frame // 2, torque_wind_down)) lta_active, self.frame // 2, torque_wind_down))
# *** gas and brake *** # *** gas and brake ***
sp_tss2_long_tune = Params().get_bool("ToyotaTSS2Long")
# When sp_tss2_long_tune is True and CC.longActive
#if sp_tss2_long_tune:
# we will throw out PCM's compensations, but that may be a good thing. for example:
# we lose things like pitch compensation, gas to maintain speed, brake to compensate for creeping, etc.
# but also remove undesirable "snap to standstill" behavior when not requesting enough accel at low speeds,
# lag to start moving, lag to start braking, etc.
# PI should compensate for lack of the desirable behaviors, but might be worse than the PCM doing them
# FIXME? neutral force will only be positive under ~5 mph, which messes up stopping control considerably
# not sure why this isn't captured in the PCM accel net, maybe that just ignores creep force + high speed deceleration
# it also doesn't seem to capture slightly more braking on downhills (VSC1S07->ASLP (pitch, deg.) might have some clues)
# offset = min(CS.pcm_neutral_force / self.CP.mass, 0.0)
# pitch_offset = math.sin(math.radians(CS.vsc_slope_angle)) * 9.81 # downhill is negative
# TODO: these limits are too slow to prevent a jerk when engaging, ramp down on engage?
# self.pcm_accel_comp = clip(actuators.accel - CS.pcm_accel_net, self.pcm_accel_comp - 0.05, self.pcm_accel_comp + 0.05)
# pcm_accel_comp = self.pid.update(actuators.accel - CS.pcm_calc_accel_net)
# self.pcm_accel_comp = clip(pcm_accel_comp, self.pcm_accel_comp - 0.005, self.pcm_accel_comp + 0.005)
# if CS.out.cruiseState.standstill or actuators.longControlState == LongCtrlState.stopping:
# self.pcm_accel_comp = 0.0
# self.pid.reset()
# pcm_accel_cmd = actuators.accel + self.pcm_accel_comp # + offset
# pcm_accel_cmd = actuators.accel - pitch_offset
# if not CC.longActive:
# self.pid.reset()
# self.pcm_accel_comp = 0.0
# pcm_accel_cmd = 0.0
# pcm_accel_cmd = clip(pcm_accel_cmd, self.params.ACCEL_MIN, self.params.ACCEL_MAX)
#else:
# pcm_accel_cmd = clip(actuators.accel, self.params.ACCEL_MIN, self.params.ACCEL_MAX)
if self.CP.enableGasInterceptorDEPRECATED and CC.longActive: if self.CP.enableGasInterceptorDEPRECATED and CC.longActive:
MAX_INTERCEPTOR_GAS = 0.5 MAX_INTERCEPTOR_GAS = 0.5
# RAV4 has very sensitive gas pedal # RAV4 has very sensitive gas pedal
@@ -149,7 +198,6 @@ class CarController(CarControllerBase):
else: else:
interceptor_gas_cmd = 0. interceptor_gas_cmd = 0.
pcm_accel_cmd = clip(actuators.accel, self.params.ACCEL_MIN, self.params.ACCEL_MAX) pcm_accel_cmd = clip(actuators.accel, self.params.ACCEL_MIN, self.params.ACCEL_MAX)
# TODO: probably can delete this. CS.pcm_acc_status uses a different signal # TODO: probably can delete this. CS.pcm_acc_status uses a different signal
# than CS.cruiseState.enabled. confirm they're not meaningfully different # than CS.cruiseState.enabled. confirm they're not meaningfully different
if not (CC.enabled and CS.out.cruiseState.enabled) and CS.pcm_acc_status: if not (CC.enabled and CS.out.cruiseState.enabled) and CS.pcm_acc_status:
@@ -168,6 +216,9 @@ class CarController(CarControllerBase):
self.last_standstill = CS.out.standstill self.last_standstill = CS.out.standstill
if self.CP.spFlags & ToyotaFlagsSP.SP_AUTO_BRAKE_HOLD:
can_sends.extend(self.create_auto_brake_hold_messages(CS))
# handle UI messages # handle UI messages
fcw_alert = hud_control.visualAlert == VisualAlert.fcw fcw_alert = hud_control.visualAlert == VisualAlert.fcw
steer_alert = hud_control.visualAlert in (VisualAlert.steerRequired, VisualAlert.ldw) steer_alert = hud_control.visualAlert in (VisualAlert.steerRequired, VisualAlert.ldw)
@@ -286,3 +337,25 @@ class CarController(CarControllerBase):
# print("bsm poll right") # print("bsm poll right")
return can_sends return can_sends
# auto brake hold (https://github.com/AlexandreSato/)
def create_auto_brake_hold_messages(self, CS: car.CarState, brake_hold_allowed_timer: int = 100):
can_sends = []
disallowed_gears = [GearShifter.park, GearShifter.reverse]
brake_hold_allowed = CS.out.standstill and CS.out.cruiseState.available and not CS.out.gasPressed and \
not CS.out.cruiseState.enabled and (CS.out.gearShifter not in disallowed_gears)
if brake_hold_allowed:
self._brake_hold_counter += 1
self.brake_hold_active = self._brake_hold_counter > brake_hold_allowed_timer and not self._brake_hold_reset
self._brake_hold_reset = not self._prev_brake_pressed and CS.out.brakePressed and not self._brake_hold_reset
else:
self._brake_hold_counter = 0
self.brake_hold_active = False
self._brake_hold_reset = False
self._prev_brake_pressed = CS.out.brakePressed
if self.frame % 2 == 0:
can_sends.append(toyotacan.create_brake_hold_command(self.packer, self.frame, CS.pre_collision_2, self.brake_hold_active))
return can_sends
+82 -2
View File
@@ -1,18 +1,19 @@
import copy import copy
from cereal import car from cereal import car, custom
from openpilot.common.conversions import Conversions as CV from openpilot.common.conversions import Conversions as CV
from openpilot.common.numpy_fast import mean from openpilot.common.numpy_fast import mean
from openpilot.common.filter_simple import FirstOrderFilter from openpilot.common.filter_simple import FirstOrderFilter
from opendbc.can.can_define import CANDefine from opendbc.can.can_define import CANDefine
from opendbc.can.parser import CANParser from opendbc.can.parser import CANParser
from openpilot.selfdrive.car import DT_CTRL from openpilot.selfdrive.car import DT_CTRL
from openpilot.common.params import Params
from openpilot.selfdrive.car.interfaces import CarStateBase from openpilot.selfdrive.car.interfaces import CarStateBase
from openpilot.selfdrive.car.toyota.values import ToyotaFlags, ToyotaFlagsSP, CAR, DBC, STEER_THRESHOLD, NO_STOP_TIMER_CAR, \ from openpilot.selfdrive.car.toyota.values import ToyotaFlags, ToyotaFlagsSP, CAR, DBC, STEER_THRESHOLD, NO_STOP_TIMER_CAR, \
TSS2_CAR, RADAR_ACC_CAR, EPS_SCALE, UNSUPPORTED_DSU_CAR TSS2_CAR, RADAR_ACC_CAR, EPS_SCALE, UNSUPPORTED_DSU_CAR
SteerControlType = car.CarParams.SteerControlType SteerControlType = car.CarParams.SteerControlType
AccelPersonality = custom.AccelerationPersonality
# These steering fault definitions seem to be common across LKA (torque) and LTA (angle): # These steering fault definitions seem to be common across LKA (torque) and LTA (angle):
# - high steer rate fault: goes to 21 or 25 for 1 frame, then 9 for 2 seconds # - high steer rate fault: goes to 21 or 25 for 1 frame, then 9 for 2 seconds
# - lka/lta msg drop out: goes to 9 then 11 for a combined total of 2 seconds, then 3. # - lka/lta msg drop out: goes to 9 then 11 for a combined total of 2 seconds, then 3.
@@ -56,6 +57,11 @@ class CarState(CarStateBase):
self.low_speed_lockout = False self.low_speed_lockout = False
self.acc_type = 1 self.acc_type = 1
self.lkas_hud = {} self.lkas_hud = {}
#self.pcm_accel_net = 0.0
#self.pcm_true_accel_net = 0.0
#self.pcm_calc_accel_net = 0.0
#self.pcm_neutral_force = 0.0
#self.vsc_slope_angle = 0.0
self.lkas_enabled = None self.lkas_enabled = None
self.prev_lkas_enabled = None self.prev_lkas_enabled = None
@@ -79,6 +85,17 @@ class CarState(CarStateBase):
self._right_blindspot_d2 = 0 self._right_blindspot_d2 = 0
self._right_blindspot_counter = 0 self._right_blindspot_counter = 0
self.signals_checked = False
self.sport_signal_seen = False
self.eco_signal_seen = False
self.accel_profile = None
self.prev_accel_profile = None
self.accel_profile_init = False
self.toyota_drive_mode = Params().get_bool('ToyotaDriveMode')
if CP.spFlags & ToyotaFlagsSP.SP_AUTO_BRAKE_HOLD:
self.pre_collision_2 = {}
self.frame = 0 self.frame = 0
def update(self, cp, cp_cam): def update(self, cp, cp_cam):
@@ -114,6 +131,14 @@ class CarState(CarStateBase):
ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw)
ret.vEgoCluster = ret.vEgo * 1.015 # minimum of all the cars ret.vEgoCluster = ret.vEgo * 1.015 # minimum of all the cars
# thought to be the gas/brake as issued by the pcm (0=coasting)
#self.pcm_accel_net = cp.vl["PCM_CRUISE"]["ACCEL_NET"] # this is only accurate for braking * 43
#self.pcm_true_accel_net = cp.vl["CLUTCH"]["TRUE_ACCEL_NET"] # this is only accurate for acceleration * 78
#self.pcm_calc_accel_net = cp.vl["GEAR_PACKET_HYBRID"]["CAR_MOVEMENT"] / 78 - cp.vl["BRAKE"]["BRAKE_PEDAL"] / 43
#self.pcm_true_accel_net = cp.vl["CLUTCH"]["TRUE_ACCEL_NET"]
#self.pcm_neutral_force = cp.vl["PCM_CRUISE"]["NEUTRAL_FORCE"]
#self.vsc_slope_angle = cp.vl["VSC1S07"]["ASLP"]
ret.standstill = abs(ret.vEgoRaw) < 1e-3 ret.standstill = abs(ret.vEgoRaw) < 1e-3
if self.CP.carFingerprint != CAR.TOYOTA_PRIUS_V: if self.CP.carFingerprint != CAR.TOYOTA_PRIUS_V:
@@ -176,6 +201,51 @@ class CarState(CarStateBase):
ret.leftBlinker = ret.leftBlinkerOn = cp.vl["BLINKERS_STATE"]["TURN_SIGNALS"] == 1 ret.leftBlinker = ret.leftBlinkerOn = cp.vl["BLINKERS_STATE"]["TURN_SIGNALS"] == 1
ret.rightBlinker = ret.rightBlinkerOn = cp.vl["BLINKERS_STATE"]["TURN_SIGNALS"] == 2 ret.rightBlinker = ret.rightBlinkerOn = cp.vl["BLINKERS_STATE"]["TURN_SIGNALS"] == 2
if self.toyota_drive_mode:
# Determine sport signal based on car model
sport_signal = 'SPORT_ON_2' if self.CP.carFingerprint in (CAR.TOYOTA_RAV4_TSS2, CAR.LEXUS_ES_TSS2, CAR.TOYOTA_HIGHLANDER_TSS2) else 'SPORT_ON'
# Check signals once
if not self.signals_checked:
self.signals_checked = True
# Try to detect sport mode signal, handle missing signal with a fallback
try:
sport_mode = cp.vl["GEAR_PACKET"][sport_signal]
self.sport_signal_seen = True
except KeyError:
sport_mode = 0
self.sport_signal_seen = False
# Try to detect eco mode signal, handle missing signal with a fallback
try:
eco_mode = cp.vl["GEAR_PACKET"]['ECON_ON']
self.eco_signal_seen = True
except KeyError:
eco_mode = 0
self.eco_signal_seen = False
else:
# Always re-check the signals to account for mode changes
sport_mode = cp.vl["GEAR_PACKET"][sport_signal] if self.sport_signal_seen else 0
eco_mode = cp.vl["GEAR_PACKET"]['ECON_ON'] if self.eco_signal_seen else 0
# Set acceleration profile based on detected modes, with sport mode having higher priority
if sport_mode == 1:
self.accel_profile = AccelPersonality.sport
elif eco_mode == 1:
self.accel_profile = AccelPersonality.eco
else:
self.accel_profile = AccelPersonality.normal
print(f"Accel profile set to: {self.accel_profile}")
# If not initialized, sync profile with the current mode on the car
if not self.accel_profile_init or self.accel_profile != self.prev_accel_profile:
Params().put_nonblocking('AccelPersonality', str(self.accel_profile))
self.accel_profile_init = True
# Update the previous profile to prevent unnecessary re-syncing
self.prev_accel_profile = self.accel_profile
if self.CP.carFingerprint != CAR.TOYOTA_MIRAI: if self.CP.carFingerprint != CAR.TOYOTA_MIRAI:
ret.engineRpm = cp.vl["ENGINE_RPM"]["RPM"] ret.engineRpm = cp.vl["ENGINE_RPM"]["RPM"]
@@ -260,6 +330,9 @@ class CarState(CarStateBase):
if self.CP.spFlags & ToyotaFlagsSP.SP_ENHANCED_BSM and self.frame > 199: if self.CP.spFlags & ToyotaFlagsSP.SP_ENHANCED_BSM and self.frame > 199:
ret.leftBlindspot, ret.rightBlindspot = self.sp_get_enhanced_bsm(cp) ret.leftBlindspot, ret.rightBlindspot = self.sp_get_enhanced_bsm(cp)
if self.CP.spFlags & ToyotaFlagsSP.SP_AUTO_BRAKE_HOLD:
self.pre_collision_2 = copy.copy(cp_cam.vl["PRE_COLLISION_2"])
self._update_traffic_signals(cp_cam) self._update_traffic_signals(cp_cam)
ret.cruiseState.speedLimit = self._calculate_speed_limit() ret.cruiseState.speedLimit = self._calculate_speed_limit()
self.frame += 1 self.frame += 1
@@ -391,12 +464,16 @@ class CarState(CarStateBase):
("BODY_CONTROL_STATE_2", 2), ("BODY_CONTROL_STATE_2", 2),
("ESP_CONTROL", 3), ("ESP_CONTROL", 3),
("EPS_STATUS", 25), ("EPS_STATUS", 25),
#("GEAR_PACKET_HYBRID", 60),
#("BRAKE", 80),
("BRAKE_MODULE", 40), ("BRAKE_MODULE", 40),
("WHEEL_SPEEDS", 80), ("WHEEL_SPEEDS", 80),
("STEER_ANGLE_SENSOR", 80), ("STEER_ANGLE_SENSOR", 80),
("PCM_CRUISE", 33), ("PCM_CRUISE", 33),
("PCM_CRUISE_SM", 1), ("PCM_CRUISE_SM", 1),
#("VSC1S07", 20),
("STEER_TORQUE_SENSOR", 50), ("STEER_TORQUE_SENSOR", 50),
#("CLUTCH", 16),
] ]
if CP.carFingerprint != CAR.TOYOTA_MIRAI: if CP.carFingerprint != CAR.TOYOTA_MIRAI:
@@ -463,4 +540,7 @@ class CarState(CarStateBase):
("PCS_HUD", 1), ("PCS_HUD", 1),
] ]
if CP.spFlags & ToyotaFlagsSP.SP_AUTO_BRAKE_HOLD:
messages.append(("PRE_COLLISION_2", 33))
return CANParser(DBC[CP.carFingerprint]["pt"], messages, 2) return CANParser(DBC[CP.carFingerprint]["pt"], messages, 2)
+13 -10
View File
@@ -163,13 +163,13 @@ class CarInterface(CarInterfaceBase):
# hand tuned (August 12, 2024) # hand tuned (August 12, 2024)
def custom_tss2_longitudinal_tuning(): def custom_tss2_longitudinal_tuning():
ret.vEgoStopping = 0.25 ret.vEgoStopping = 0.25
ret.vEgoStarting = 0.25 ret.vEgoStarting = 0.01
ret.stoppingDecelRate = 0.0074 ret.stoppingDecelRate = 0.006
def default_tss2_longitudinal_tuning(): def default_tss2_longitudinal_tuning():
ret.vEgoStopping = 0.25 ret.vEgoStopping = 0.25
ret.vEgoStarting = 0.25 ret.vEgoStarting = 0.25
ret.stoppingDecelRate = 0.3 # reach stopping target smoothly ret.stoppingDecelRate = 0.002 # reach stopping target smoothly
def default_longitudinal_tuning(): def default_longitudinal_tuning():
tune.kiBP = [0., 5., 35.] tune.kiBP = [0., 5., 35.]
@@ -178,13 +178,8 @@ class CarInterface(CarInterfaceBase):
tune = ret.longitudinalTuning tune = ret.longitudinalTuning
if candidate in TSS2_CAR or ret.enableGasInterceptorDEPRECATED: if candidate in TSS2_CAR or ret.enableGasInterceptorDEPRECATED:
if sp_tss2_long_tune: if sp_tss2_long_tune:
#tune.kiBP = [0., 0.1, 3., 12., 20., 26., 36., 50] tune.kiBP = [0., 5., 12., 20., 27., 36., 40.]
#tune.kiV = [0.34, 0.35, 0.2896, 0.2237, 0.174, 0.10, 0.08, 0.06] tune.kiV = [0.34, 0.234, 0.20, 0.17, 0.105, 0.09, 0.08]
#smooth
tune.kiBP = [0., 12., 20., 27., 36., 50]
tune.kiV = [0.333, 0.203, 0.17, 0.12, 0.08, 0.06]
#tune.kiBP = [0., 2., 5., 12., 16, 20., 27., 36., 50]
#tune.kiV = [0.27, 0.24, 0.2205, 0.20, 0.18, 0.17, 0.12, 0.08, 0.06]
custom_tss2_longitudinal_tuning() custom_tss2_longitudinal_tuning()
else: else:
tune.kpV = [0.0] tune.kpV = [0.0]
@@ -200,6 +195,9 @@ class CarInterface(CarInterfaceBase):
if candidate == CAR.TOYOTA_PRIUS_TSS2: if candidate == CAR.TOYOTA_PRIUS_TSS2:
ret.spFlags |= ToyotaFlagsSP.SP_NEED_DEBUG_BSM.value ret.spFlags |= ToyotaFlagsSP.SP_NEED_DEBUG_BSM.value
if Params().get_bool("ToyotaAutoHold") and candidate in (TSS2_CAR - RADAR_ACC_CAR):
ret.spFlags |= ToyotaFlagsSP.SP_AUTO_BRAKE_HOLD.value
return ret return ret
@staticmethod @staticmethod
@@ -273,6 +271,11 @@ class CarInterface(CarInterfaceBase):
# while in standstill, send a user alert # while in standstill, send a user alert
events.add(EventName.manualRestart) events.add(EventName.manualRestart)
# auto brake hold
if self.CP.spFlags & ToyotaFlagsSP.SP_AUTO_BRAKE_HOLD:
if self.CC.brake_hold_active and not ret.brakeHoldActive:
events.add(EventName.spAutoBrakeHold)
ret.events = events.to_msg() ret.events = events.to_msg()
return ret return ret
+34
View File
@@ -130,3 +130,37 @@ def create_set_bsm_debug_mode(lr_blindspot, enabled):
def create_bsm_polling_status(lr_blindspot): def create_bsm_polling_status(lr_blindspot):
return make_can_msg(0x750, lr_blindspot + b"\x02\x21\x69\x00\x00\x00\x00", 0) return make_can_msg(0x750, lr_blindspot + b"\x02\x21\x69\x00\x00\x00\x00", 0)
# auto brake hold
def create_brake_hold_command(packer, frame, pre_collision_2, brake_hold_active):
# forward PRE_COLLISION_2 when auto brake hold is not active
values = {s: pre_collision_2[s] for s in [
"DSS1GDRV",
"DS1STAT2",
"DS1STBK2",
"PCSWAR",
"PCSALM",
"PCSOPR",
"PCSABK",
"PBATRGR",
"PPTRGR",
"IBTRGR",
"CLEXTRGR",
"IRLT_REQ",
"BRKHLD",
"AVSTRGR",
"VGRSTRGR",
"PREFILL",
"PBRTRGR",
"PCSDIS",
"PBPREPMP",
]}
if brake_hold_active:
values = {
"DSS1GDRV": 0x3FF,
"PBRTRGR": frame % 730 < 727, # cut actuation for 3 frames
}
return packer.make_can_msg("PRE_COLLISION_2", 0, values)
+2 -1
View File
@@ -16,7 +16,7 @@ PEDAL_TRANSITION = 10. * CV.MPH_TO_MS
class CarControllerParams: class CarControllerParams:
ACCEL_MAX = 1.5 # m/s2, lower than allowed 2.0 m/s2 for tuning reasons ACCEL_MAX = 2.0 # m/s2, lower than allowed 2.0 m/s2 for tuning reasons
ACCEL_MIN = -3.5 # m/s2 ACCEL_MIN = -3.5 # m/s2
STEER_STEP = 1 STEER_STEP = 1
@@ -64,6 +64,7 @@ class ToyotaFlagsSP(IntFlag):
SP_ZSS = 1 SP_ZSS = 1
SP_ENHANCED_BSM = 2 SP_ENHANCED_BSM = 2
SP_NEED_DEBUG_BSM = 4 SP_NEED_DEBUG_BSM = 4
SP_AUTO_BRAKE_HOLD = 8
class Footnote(Enum): class Footnote(Enum):
+8
View File
@@ -744,6 +744,14 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = {
ET.NO_ENTRY: NoEntryAlert("Brake Hold Active"), ET.NO_ENTRY: NoEntryAlert("Brake Hold Active"),
}, },
EventName.spAutoBrakeHold: {
ET.PERMANENT: Alert(
"sunnypilot Brake Hold Active",
"",
AlertStatus.normal, AlertSize.small,
Priority.LOWEST, VisualAlert.none, AudibleAlert.prompt, 0.),
},
EventName.parkBrake: { EventName.parkBrake: {
ET.USER_DISABLE: EngagementAlert(AudibleAlert.disengage), ET.USER_DISABLE: EngagementAlert(AudibleAlert.disengage),
ET.NO_ENTRY: NoEntryAlert("Parking Brake Engaged"), ET.NO_ENTRY: NoEntryAlert("Parking Brake Engaged"),
@@ -3,7 +3,7 @@ import os
import time import time
import numpy as np import numpy as np
from cereal import custom from cereal import custom
from openpilot.common.numpy_fast import clip from openpilot.common.numpy_fast import clip, interp
from openpilot.common.realtime import DT_MDL from openpilot.common.realtime import DT_MDL
from openpilot.common.swaglog import cloudlog from openpilot.common.swaglog import cloudlog
# WARNING: imports outside of constants will not trigger a rebuild # WARNING: imports outside of constants will not trigger a rebuild
@@ -55,7 +55,7 @@ T_IDXS = np.array(T_IDXS_LST)
FCW_IDXS = T_IDXS < 5.0 FCW_IDXS = T_IDXS < 5.0
T_DIFFS = np.diff(T_IDXS, prepend=[0.]) T_DIFFS = np.diff(T_IDXS, prepend=[0.])
COMFORT_BRAKE = 2.5 COMFORT_BRAKE = 2.5
STOP_DISTANCE = 6.0 STOP_DISTANCE = 5.0
def get_jerk_factor(personality=custom.LongitudinalPersonalitySP.standard): def get_jerk_factor(personality=custom.LongitudinalPersonalitySP.standard):
if personality==custom.LongitudinalPersonalitySP.relaxed: if personality==custom.LongitudinalPersonalitySP.relaxed:
@@ -63,24 +63,93 @@ def get_jerk_factor(personality=custom.LongitudinalPersonalitySP.standard):
elif personality==custom.LongitudinalPersonalitySP.standard: elif personality==custom.LongitudinalPersonalitySP.standard:
return 1.0 return 1.0
elif personality==custom.LongitudinalPersonalitySP.moderate: elif personality==custom.LongitudinalPersonalitySP.moderate:
return 0.85 return 0.6
elif personality==custom.LongitudinalPersonalitySP.aggressive: elif personality==custom.LongitudinalPersonalitySP.aggressive:
return 0.8 return 0.2
elif personality==custom.LongitudinalPersonalitySP.overtake: elif personality==custom.LongitudinalPersonalitySP.overtake:
return 0.1 return 0.1
else: else:
raise NotImplementedError("Longitudinal personality not supported") raise NotImplementedError("Longitudinal personality not supported")
def get_a_change_factor(v_ego, v_lead0, v_lead1, personality=custom.LongitudinalPersonalitySP.standard):
# Set cost multipliers based on driving personality (relaxed, standard, moderate, aggressive).
# These values adjust the sensitivity of acceleration change.
# Higher value = more cautious (slower reaction), smaller value = quicker response (more aggressive driving)
if personality==custom.LongitudinalPersonalitySP.relaxed:
a_change_cost_multiplier_follow = 1.2 # Highest cost for changing acceleration, meaning more gradual transitions
a_change_cost_high_speed_factor = 2.0 # No extra penalty for high-speed changes (more cautious)
elif personality==custom.LongitudinalPersonalitySP.standard:
a_change_cost_multiplier_follow = 0.6 # Moderate cost for changing acceleration (quicker transitions compared to relaxed)
a_change_cost_high_speed_factor = 2.5 # Higher penalty for changes at higher speeds (more cautious)
elif personality==custom.LongitudinalPersonalitySP.moderate:
a_change_cost_multiplier_follow = 0.4 # Similar to standard (quicker transitions compared to relaxed)
a_change_cost_high_speed_factor = 3.0 # Similar to standard (higher penalty for high speeds)
elif personality==custom.LongitudinalPersonalitySP.aggressive:
a_change_cost_multiplier_follow = 0.2 # Very low cost for changing acceleration, meaning quicker reactions (less cautious)
a_change_cost_high_speed_factor = 5.0 # Much higher penalty for abrupt changes at high speeds (very cautious at high speeds)
elif personality==custom.LongitudinalPersonalitySP.overtake:
a_change_cost_multiplier_follow = 0.1 # Very low cost for changing acceleration, meaning quicker reactions (less cautious)
a_change_cost_high_speed_factor = 5.0 # Much higher penalty for abrupt changes at high speeds (very cautious at high speeds)
else:
raise NotImplementedError("Longitudinal personality not supported")
# Variables to modify the acceleration change based on speed and lead vehicle conditions.
# LEAD_AUGMENTATION_BP_MAX defines the vEgo threshold for rapid acceleration.
LEAD_AUGMENTATION_BP_MAX = 5. # Maximum speed (5 m/s ~ 18 km/h) where rapid acceleration adjustments are allowed
# LEAD_AUGMENTATION_BP: breakpoints for ego vehicle speed (vEgo) in m/s
# LEAD_AUGMENTATION_V: multiplier values for ego vehicle speed interpolation
LEAD_AUGMENTATION_BP = [0., LEAD_AUGMENTATION_BP_MAX] # vEgo breakpoints: [0 m/s, 5 m/s (~18 km/h)]
LEAD_AUGMENTATION_V = [.05, 1.] # acceleration multipliers: At 0 m/s, allow very small changes (.05), at 5 m/s allow faster acceleration (1.0)
# SPEED_AUGMENTATION_BP: breakpoints for speed adjustment to reduce abrupt braking at higher speeds
# SPEED_AUGMENTATION_V: interpolation values for scaling acceleration cost based on speed
# Higher = more cautious (penalizes abrupt braking), smaller = more aggressive (less penalty)
SPEED_AUGMENTATION_BP = [0., LEAD_AUGMENTATION_BP_MAX, 10.] # Speed breakpoints: [0 m/s, 5 m/s, 10 m/s (~36 km/h)]
SPEED_AUGMENTATION_V = [1., 1., a_change_cost_high_speed_factor] # Multiplier: between 0-5 m/s, no change (1.0), after 5 m/s, scale by a_change_cost_high_speed_factor (e.g., 1.5 in standard mode)
# Calculate a cost for acceleration changes when lead vehicles are pulling away and ego speed is below the threshold.
lead_augmented_a_change_cost = 1.0 # Default cost factor
if (v_lead0 - v_ego > 1e-3) and (v_lead1 - v_ego > 1e-3):
# Interpolate for the acceleration change cost when lead vehicles are increasing speed, based on vEgo
lead_augmented_a_change_cost = interp(v_ego, LEAD_AUGMENTATION_BP, LEAD_AUGMENTATION_V)
# Multiply the lead-based cost with speed-based cost to get a final cost factor, scaling with vehicle speed
speed_augmented_a_change_cost = a_change_cost_multiplier_follow * interp(v_ego, SPEED_AUGMENTATION_BP, SPEED_AUGMENTATION_V)
# Choose the smaller factor between the lead-based cost and the speed-based cost
a_change_factor = lead_augmented_a_change_cost if v_ego <= LEAD_AUGMENTATION_BP_MAX else speed_augmented_a_change_cost
# Return the final acceleration change factor to be applied
return a_change_factor
# Function to return a multiplier for a danger zone cost based on driving personality
def get_danger_zone_factor(personality=custom.LongitudinalPersonalitySP.standard):
# Higher values mean more cautious driving in dangerous situations, scaling the cost accordingly
if personality==custom.LongitudinalPersonalitySP.relaxed:
return 1.8 # Higher danger zone cost for relaxed personality (more cautious)
elif personality==custom.LongitudinalPersonalitySP.standard:
return 1.5 # Medium danger zone cost for standard personality
elif personality==custom.LongitudinalPersonalitySP.moderate:
return 1.2 # Medium danger zone cost for moderate personality (similar to standard)
elif personality==custom.LongitudinalPersonalitySP.aggressive:
return 1.0 # Lowest danger zone cost for aggressive personality (less cautious)
elif personality==custom.LongitudinalPersonalitySP.overtake:
return 1.0 # Lowest danger zone cost for aggressive personality (less cautious)
else:
raise NotImplementedError("Longitudinal personality not supported")
def get_T_FOLLOW(personality=custom.LongitudinalPersonalitySP.standard): def get_T_FOLLOW(personality=custom.LongitudinalPersonalitySP.standard):
if personality==custom.LongitudinalPersonalitySP.relaxed: if personality==custom.LongitudinalPersonalitySP.relaxed:
return 1.75 return 1.75
elif personality==custom.LongitudinalPersonalitySP.standard: elif personality==custom.LongitudinalPersonalitySP.standard:
return 1.45 return 1.65
elif personality==custom.LongitudinalPersonalitySP.moderate: elif personality==custom.LongitudinalPersonalitySP.moderate:
return 1.25 return 1.45
elif personality==custom.LongitudinalPersonalitySP.aggressive: elif personality==custom.LongitudinalPersonalitySP.aggressive:
return 1.0 return 1.25
elif personality==custom.LongitudinalPersonalitySP.overtake: elif personality==custom.LongitudinalPersonalitySP.overtake:
return 0.25 return 0.25
else: else:
@@ -89,22 +158,21 @@ def get_T_FOLLOW(personality=custom.LongitudinalPersonalitySP.standard):
def get_dynamic_personality(v_ego, personality=custom.LongitudinalPersonalitySP.standard): def get_dynamic_personality(v_ego, personality=custom.LongitudinalPersonalitySP.standard):
if personality==custom.LongitudinalPersonalitySP.relaxed: if personality==custom.LongitudinalPersonalitySP.relaxed:
x_vel = [0, 5., 5.01, 20., 27.7] x_vel = [0., 22., 22.01, 36.1]
y_dist = [1.0, 1.0, 1.75, 1.75, 1.83] y_dist = [1.70, 1.70, 1.80, 1.80]
elif personality==custom.LongitudinalPersonalitySP.standard: elif personality==custom.LongitudinalPersonalitySP.standard:
x_vel = [0, 4., 4.01, 20., 27.7] x_vel = [0., 22., 22.01, 36.1]
y_dist = [1.0, 1.0, 1.75, 1.75, 1.80] y_dist = [1.65, 1.65, 1.75, 1.75]
elif personality==custom.LongitudinalPersonalitySP.moderate: elif personality==custom.LongitudinalPersonalitySP.moderate:
x_vel = [0, 3., 3.01, 20., 27.7] x_vel = [0., 22., 22.01, 36.1]
y_dist = [1.0, 1.0, 1.45, 1.45, 1.50] y_dist = [1.45, 1.45, 1.55, 1.55]
elif personality==custom.LongitudinalPersonalitySP.aggressive: elif personality==custom.LongitudinalPersonalitySP.aggressive:
x_vel = [0, 2., 2.01, 20., 27.7] x_vel = [0., 19.7, 19.71, 36.1]
y_dist = [1.0, 1.0, 1.20, 1.20, 1.30] y_dist = [1.00, 1.00, 1.25, 1.25]
else: else:
raise NotImplementedError("Dynamic personality not supported") raise NotImplementedError("Dynamic personality not supported")
return np.interp(v_ego, x_vel, y_dist) return np.interp(v_ego, x_vel, y_dist)
def get_stopped_equivalence_factor(v_lead): def get_stopped_equivalence_factor(v_lead):
return (v_lead**2) / (2 * COMFORT_BRAKE) return (v_lead**2) / (2 * COMFORT_BRAKE)
@@ -302,12 +370,15 @@ class LongitudinalMpc:
for i in range(N): for i in range(N):
self.solver.cost_set(i, 'Zl', Zl) self.solver.cost_set(i, 'Zl', Zl)
def set_weights(self, prev_accel_constraint=True, personality=custom.LongitudinalPersonalitySP.standard): def set_weights(self, prev_accel_constraint=True, v_lead0 = 0., v_lead1 = 0., personality=custom.LongitudinalPersonalitySP.standard):
v_ego = self.x0[1]
jerk_factor = get_jerk_factor(personality) jerk_factor = get_jerk_factor(personality)
a_change_factor = get_a_change_factor(v_ego, v_lead0, v_lead1, personality)
danger_zone_factor = get_danger_zone_factor(personality)
if self.mode == 'acc': if self.mode == 'acc':
a_change_cost = A_CHANGE_COST if prev_accel_constraint else 0 a_change_cost = A_CHANGE_COST if prev_accel_constraint else 0
cost_weights = [X_EGO_OBSTACLE_COST, X_EGO_COST, V_EGO_COST, A_EGO_COST, jerk_factor * a_change_cost, jerk_factor * J_EGO_COST] cost_weights = [X_EGO_OBSTACLE_COST, X_EGO_COST, V_EGO_COST, A_EGO_COST, a_change_factor * a_change_cost, jerk_factor * J_EGO_COST]
constraint_cost_weights = [LIMIT_COST, LIMIT_COST, LIMIT_COST, DANGER_ZONE_COST] constraint_cost_weights = [LIMIT_COST, LIMIT_COST, LIMIT_COST, DANGER_ZONE_COST * danger_zone_factor]
elif self.mode == 'blended': elif self.mode == 'blended':
a_change_cost = 40.0 if prev_accel_constraint else 0 a_change_cost = 40.0 if prev_accel_constraint else 0
cost_weights = [0., 0.1, 0.2, 5.0, a_change_cost, 1.0] cost_weights = [0., 0.1, 0.2, 5.0, a_change_cost, 1.0]
@@ -361,7 +432,7 @@ class LongitudinalMpc:
self.cruise_min_a = min_a self.cruise_min_a = min_a
self.max_a = max_a self.max_a = max_a
def update(self, radarstate, v_cruise, x, v, a, j, personality=custom.LongitudinalPersonalitySP.standard, def update(self, radarstate, v_cruise, prev_accel_constraint, x, v, a, j, personality=custom.LongitudinalPersonalitySP.standard,
dynamic_personality=False, overtaking_acceleration_assist=False): dynamic_personality=False, overtaking_acceleration_assist=False):
v_ego = self.x0[1] v_ego = self.x0[1]
t_follow = get_dynamic_personality(v_ego, personality) if dynamic_personality else get_T_FOLLOW(personality) t_follow = get_dynamic_personality(v_ego, personality) if dynamic_personality else get_T_FOLLOW(personality)
@@ -371,6 +442,8 @@ class LongitudinalMpc:
lead_xv_0 = self.process_lead(radarstate.leadOne) lead_xv_0 = self.process_lead(radarstate.leadOne)
lead_xv_1 = self.process_lead(radarstate.leadTwo) lead_xv_1 = self.process_lead(radarstate.leadTwo)
self.set_weights(prev_accel_constraint=prev_accel_constraint, v_lead0=lead_xv_0[0, 1], v_lead1=lead_xv_1[0, 1], personality=personality)
# To estimate a safe distance from a moving lead, we calculate how much stopping # To estimate a safe distance from a moving lead, we calculate how much stopping
# distance that lead needs as a minimum. We can add that to the current distance # distance that lead needs as a minimum. We can add that to the current distance
# and then treat that as a stopped car/obstacle at this new distance. # and then treat that as a stopped car/obstacle at this new distance.
@@ -36,6 +36,7 @@ _A_TOTAL_MAX_V = [1.7, 3.2]
_A_TOTAL_MAX_BP = [20., 40.] _A_TOTAL_MAX_BP = [20., 40.]
MpcSource = custom.MpcSource
EventName = car.CarEvent.EventName EventName = car.CarEvent.EventName
@@ -131,10 +132,13 @@ class LongitudinalPlanner:
self.read_param() self.read_param()
self.param_read_counter += 1 self.param_read_counter += 1
if self.dynamic_experimental_controller.is_enabled() and sm['controlsState'].experimentalMode: if self.dynamic_experimental_controller.is_enabled() and sm['controlsState'].experimentalMode:
self.mpc.mode = self.dynamic_experimental_controller.get_mpc_mode(self.CP.radarUnavailable, sm['carState'], sm['radarState'].leadOne, sm['modelV2'], sm['controlsState'], sm['navInstruction'].maneuverDistance) self.dynamic_experimental_controller.set_mpc_fcw_crash_cnt(self.mpc.crash_cnt)
self.dynamic_experimental_controller.update(self.CP.radarUnavailable, sm['carState'], sm['radarState'].leadOne, sm['modelV2'], sm['controlsState'], sm['navInstruction'].maneuverDistance)
self.mpc.mode = self.dynamic_experimental_controller.get_mpc_mode()
else: else:
self.mpc.mode = 'blended' if sm['controlsState'].experimentalMode else 'acc' self.mpc.mode = 'blended' if sm['controlsState'].experimentalMode else 'acc'
v_ego = sm['carState'].vEgo v_ego = sm['carState'].vEgo
v_cruise_kph = min(sm['controlsState'].vCruise, V_CRUISE_MAX) v_cruise_kph = min(sm['controlsState'].vCruise, V_CRUISE_MAX)
v_cruise = v_cruise_kph * CV.KPH_TO_MS v_cruise = v_cruise_kph * CV.KPH_TO_MS
@@ -197,7 +201,7 @@ class LongitudinalPlanner:
self.mpc.set_accel_limits(accel_limits_turns[0], accel_limits_turns[1]) self.mpc.set_accel_limits(accel_limits_turns[0], accel_limits_turns[1])
self.mpc.set_cur_state(self.v_desired_filter.x, self.a_desired) self.mpc.set_cur_state(self.v_desired_filter.x, self.a_desired)
x, v, a, j = self.parse_model(sm['modelV2'], self.v_model_error) x, v, a, j = self.parse_model(sm['modelV2'], self.v_model_error)
self.mpc.update(sm['radarState'], v_cruise, x, v, a, j, personality=sm['controlsStateSP'].personality, self.mpc.update(sm['radarState'], v_cruise, prev_accel_constraint, x, v, a, j, personality=sm['controlsStateSP'].personality,
dynamic_personality=sm['controlsStateSP'].dynamicPersonality, overtaking_acceleration_assist=overtaking_accel_engaged) dynamic_personality=sm['controlsStateSP'].dynamicPersonality, overtaking_acceleration_assist=overtaking_accel_engaged)
self.v_desired_trajectory = np.interp(CONTROL_N_T_IDX, T_IDXS_MPC, self.mpc.v_solution) self.v_desired_trajectory = np.interp(CONTROL_N_T_IDX, T_IDXS_MPC, self.mpc.v_solution)
@@ -267,7 +271,8 @@ class LongitudinalPlanner:
longitudinalPlanSP.turnSpeedControlState = self.turn_speed_controller.state longitudinalPlanSP.turnSpeedControlState = self.turn_speed_controller.state
longitudinalPlanSP.turnSpeed = float(self.turn_speed_controller.v_target) longitudinalPlanSP.turnSpeed = float(self.turn_speed_controller.v_target)
longitudinalPlanSP.e2eBlended = self.mpc.mode longitudinalPlanSP.mpcSource = MpcSource.blended if self.mpc.mode == 'blended' else MpcSource.acc
longitudinalPlanSP.dynamicExperimentalControl = self.dynamic_experimental_controller.is_enabled()
pm.send('longitudinalPlanSP', plan_sp_send) pm.send('longitudinalPlanSP', plan_sp_send)
@@ -28,15 +28,15 @@ from openpilot.common.numpy_fast import interp
AccelPersonality = custom.AccelerationPersonality AccelPersonality = custom.AccelerationPersonality
# accel personality by @arne182 modified by cgw # accel personality by @arne182 modified by cgw and kumar
_DP_CRUISE_MIN_V = [-0.05, -0.05, -0.088, -0.088, -0.25, -0.25, -0.39, -0.39, -0.75] _DP_CRUISE_MIN_V = [-1.0, -1.0]
_DP_CRUISE_MIN_V_ECO = [-0.04, -0.04, -0.087, -0.087, -0.24, -0.24, -0.38, -0.38, -0.65] _DP_CRUISE_MIN_V_ECO = [-1.0, -1.0]
_DP_CRUISE_MIN_V_SPORT = [-0.06, -0.06, -0.089, -0.089, -0.26, -0.26, -0.40, -0.40, -0.85] _DP_CRUISE_MIN_V_SPORT = [-1.0, -1.0]
_DP_CRUISE_MIN_BP = [0., 5.0, 5.01, 11.1, 11.11, 20., 20.01, 30., 30.01] _DP_CRUISE_MIN_BP = [0., 20.]
_DP_CRUISE_MAX_V = [2.0, 2.0, 1.9, 1.60, 1.11, .75, .55, .42, .2] _DP_CRUISE_MAX_V = [2.0, 2.0, 2.0, 1.80, 1.03, .62, .47, .36, .11]
_DP_CRUISE_MAX_V_ECO = [2.0, 2.0, 1.8, 1.35, 0.86, .53, .42, .31, .085] _DP_CRUISE_MAX_V_ECO = [2.0, 2.0, 2.0, 1.65, 0.92, .532, .432, .32, .095]
_DP_CRUISE_MAX_V_SPORT = [2.0, 2.0, 2.0, 2.00, 1.34, .96, .78, .60, .4] _DP_CRUISE_MAX_V_SPORT = [2.0, 2.0, 2.0, 2.00, 1.25, .71, .54, .46, .2]
_DP_CRUISE_MAX_BP = [0., 1., 6., 8., 11., 20., 25., 30., 55.] _DP_CRUISE_MAX_BP = [0., 1., 6., 8., 11., 20., 25., 30., 55.]
@@ -21,33 +21,39 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE. # THE SOFTWARE.
# #
# Version = 2024-1-29 # Version = 2024-7-11
from common.numpy_fast import interp from common.numpy_fast import interp
from openpilot.selfdrive.controls.lib.lateral_planner import TRAJECTORY_SIZE import numpy as np
LEAD_WINDOW_SIZE = 5 # d-e2e, from modeldata.h
TRAJECTORY_SIZE = 33
LEAD_WINDOW_SIZE = 4
LEAD_PROB = 0.6 LEAD_PROB = 0.6
SLOW_DOWN_WINDOW_SIZE = 5 SLOW_DOWN_WINDOW_SIZE = 4
SLOW_DOWN_PROB = 0.6 SLOW_DOWN_PROB = 0.6
SLOW_DOWN_BP = [0., 10., 20., 30., 40., 50., 55., 60.]
SLOW_DOWN_DIST = [20, 30., 50., 70., 80., 90., 105., 120.]
SLOWNESS_WINDOW_SIZE = 20 SLOW_DOWN_BP = [0., 10., 20., 30., 40., 50., 55., 60.]
SLOWNESS_PROB = 0.6 SLOW_DOWN_DIST = [25., 38., 55., 75., 95., 115., 130., 150.]
SLOWNESS_WINDOW_SIZE = 12
SLOWNESS_PROB = 0.5
SLOWNESS_CRUISE_OFFSET = 1.05 SLOWNESS_CRUISE_OFFSET = 1.05
DANGEROUS_TTC_WINDOW_SIZE = 5 DANGEROUS_TTC_WINDOW_SIZE = 3
DANGEROUS_TTC = 2.0 DANGEROUS_TTC = 2.3
HIGHWAY_CRUISE_KPH = 75 HIGHWAY_CRUISE_KPH = 70
STOP_AND_GO_FRAME = 60 STOP_AND_GO_FRAME = 60
SET_MODE_TIMEOUT = 10 SET_MODE_TIMEOUT = 10
MPC_FCW_WINDOW_SIZE = 5 MPC_FCW_WINDOW_SIZE = 10
MPC_FCW_PROB = 0.6 MPC_FCW_PROB = 0.5
V_ACC_MIN = 9.72
class SNG_State: class SNG_State:
@@ -77,29 +83,51 @@ class GenericMovingAverageCalculator:
self.data = [] self.data = []
self.total = 0 self.total = 0
class WeightedMovingAverageCalculator:
def __init__(self, window_size):
self.window_size = window_size
self.data = []
self.weights = np.linspace(1, 3, window_size) # Linear weights, adjust as needed
def add_data(self, value):
if len(self.data) == self.window_size:
self.data.pop(0)
self.data.append(value)
def get_weighted_average(self):
if len(self.data) == 0:
return None
weighted_sum = np.dot(self.data, self.weights[-len(self.data):])
weight_total = np.sum(self.weights[-len(self.data):])
return weighted_sum / weight_total
def reset_data(self):
self.data = []
class DynamicExperimentalController: class DynamicExperimentalController:
def __init__(self): def __init__(self):
self._is_enabled = False self._is_enabled = False
self._mode = 'acc' self._mode = 'acc'
self._mode_prev = 'acc' self._mode_prev = 'acc'
self._mode_changed = False
self._frame = 0 self._frame = 0
self._lead_gmac = GenericMovingAverageCalculator(window_size=LEAD_WINDOW_SIZE) # Use weighted moving average for filtering leads
self._lead_gmac = WeightedMovingAverageCalculator(window_size=LEAD_WINDOW_SIZE)
self._has_lead_filtered = False self._has_lead_filtered = False
self._has_lead_filtered_prev = False self._has_lead_filtered_prev = False
self._slow_down_gmac = GenericMovingAverageCalculator(window_size=SLOW_DOWN_WINDOW_SIZE) self._slow_down_gmac = WeightedMovingAverageCalculator(window_size=SLOW_DOWN_WINDOW_SIZE)
self._has_slow_down = False self._has_slow_down = False
self._has_blinkers = False self._has_blinkers = False
self._slowness_gmac = GenericMovingAverageCalculator(window_size=SLOWNESS_WINDOW_SIZE) self._slowness_gmac = WeightedMovingAverageCalculator(window_size=SLOWNESS_WINDOW_SIZE)
self._has_slowness = False self._has_slowness = False
self._has_nav_instruction = False self._has_nav_instruction = False
self._dangerous_ttc_gmac = GenericMovingAverageCalculator(window_size=DANGEROUS_TTC_WINDOW_SIZE) self._dangerous_ttc_gmac = WeightedMovingAverageCalculator(window_size=DANGEROUS_TTC_WINDOW_SIZE)
self._has_dangerous_ttc = False self._has_dangerous_ttc = False
self._v_ego_kph = 0. self._v_ego_kph = 0.
@@ -113,13 +141,50 @@ class DynamicExperimentalController:
self._sng_transit_frame = 0 self._sng_transit_frame = 0
self._sng_state = SNG_State.off self._sng_state = SNG_State.off
self._mpc_fcw_gmac = GenericMovingAverageCalculator(window_size=MPC_FCW_WINDOW_SIZE) self._mpc_fcw_gmac = WeightedMovingAverageCalculator(window_size=MPC_FCW_WINDOW_SIZE)
self._has_mpc_fcw = False self._has_mpc_fcw = False
self._mpc_fcw_crash_cnt = 0 self._mpc_fcw_crash_cnt = 0
self._set_mode_timeout = 0 self._set_mode_timeout = 0
pass pass
def _adaptive_slowdown_threshold(self):
"""
Adapts the slow down threshold based on vehicle speed and recent behavior.
"""
return interp(self._v_ego_kph, SLOW_DOWN_BP, SLOW_DOWN_DIST) * (1.0 + 0.03 * np.log(1 + len(self._slow_down_gmac.data)))
def _anomaly_detection(self, recent_data, threshold=2.0, context_check=True):
"""
Basic anomaly detection using standard deviation.
"""
if len(recent_data) < 5:
return False
mean = np.mean(recent_data)
std_dev = np.std(recent_data)
anomaly = recent_data[-1] > mean + threshold * std_dev
# Context check to ensure repeated anomaly
if context_check:
return np.count_nonzero(np.array(recent_data) > mean + threshold * std_dev) > 1
return anomaly
def _smoothed_lead_detection(self, lead_prob, smoothing_factor=0.2):
"""
Smoothing the lead detection to avoid erratic behavior.
"""
self._has_lead_filtered = (1 - smoothing_factor) * self._has_lead_filtered + smoothing_factor * lead_prob
return self._has_lead_filtered > LEAD_PROB
def _adaptive_lead_prob_threshold(self):
"""
Adapts lead probability threshold based on driving conditions.
"""
if self._v_ego_kph > HIGHWAY_CRUISE_KPH:
return LEAD_PROB + 0.1 # Increase the threshold on highways
return LEAD_PROB
def _update(self, car_state, lead_one, md, controls_state, maneuver_distance): def _update(self, car_state, lead_one, md, controls_state, maneuver_distance):
self._v_ego_kph = car_state.vEgo * 3.6 self._v_ego_kph = car_state.vEgo * 3.6
self._v_cruise_kph = controls_state.vCruise self._v_cruise_kph = controls_state.vCruise
@@ -128,18 +193,27 @@ class DynamicExperimentalController:
# fcw detection # fcw detection
self._mpc_fcw_gmac.add_data(self._mpc_fcw_crash_cnt > 0) self._mpc_fcw_gmac.add_data(self._mpc_fcw_crash_cnt > 0)
self._has_mpc_fcw = self._mpc_fcw_gmac.get_moving_average() >= MPC_FCW_PROB self._has_mpc_fcw = self._mpc_fcw_gmac.get_weighted_average() > MPC_FCW_PROB
# nav enable detection # nav enable detection
self._has_nav_instruction = md.navEnabledDEPRECATED and maneuver_distance / max(car_state.vEgo, 1) < 13 self._has_nav_instruction = md.navEnabledDEPRECATED and maneuver_distance / max(car_state.vEgo, 1) < 13
# lead detection # lead detection with smoothing
self._lead_gmac.add_data(lead_one.status) self._lead_gmac.add_data(lead_one.status)
self._has_lead_filtered = self._lead_gmac.get_moving_average() >= LEAD_PROB self._has_lead_filtered = self._lead_gmac.get_weighted_average() > LEAD_PROB
#lead_prob = self._lead_gmac.get_weighted_average() or 0
#self._has_lead_filtered = self._smoothed_lead_detection(lead_prob)
# slow down detection # adaptive slow down detection
self._slow_down_gmac.add_data(len(md.orientation.x) == len(md.position.x) == TRAJECTORY_SIZE and md.position.x[TRAJECTORY_SIZE - 1] < interp(self._v_ego_kph, SLOW_DOWN_BP, SLOW_DOWN_DIST)) adaptive_threshold = self._adaptive_slowdown_threshold()
self._has_slow_down = self._slow_down_gmac.get_moving_average() >= SLOW_DOWN_PROB slow_down_trigger = len(md.orientation.x) == len(md.position.x) == TRAJECTORY_SIZE and md.position.x[TRAJECTORY_SIZE - 1] < adaptive_threshold
self._slow_down_gmac.add_data(slow_down_trigger)
self._has_slow_down = self._slow_down_gmac.get_weighted_average() > SLOW_DOWN_PROB
# anomaly detection for slow down events
if self._anomaly_detection(self._slow_down_gmac.data):
# Handle anomaly: potentially log it, adjust behavior, or issue a warning
self._has_slow_down = False # Reset slow down if anomaly detected
# blinker detection # blinker detection
self._has_blinkers = car_state.leftBlinker or car_state.rightBlinker self._has_blinkers = car_state.leftBlinker or car_state.rightBlinker
@@ -161,7 +235,7 @@ class DynamicExperimentalController:
# slowness detection # slowness detection
if not self._has_standstill: if not self._has_standstill:
self._slowness_gmac.add_data(self._v_ego_kph <= (self._v_cruise_kph*SLOWNESS_CRUISE_OFFSET)) self._slowness_gmac.add_data(self._v_ego_kph <= (self._v_cruise_kph*SLOWNESS_CRUISE_OFFSET))
self._has_slowness = self._slowness_gmac.get_moving_average() >= SLOWNESS_PROB self._has_slowness = self._slowness_gmac.get_weighted_average() > SLOWNESS_PROB
# dangerous TTC detection # dangerous TTC detection
if not self._has_lead_filtered and self._has_lead_filtered_prev: if not self._has_lead_filtered and self._has_lead_filtered_prev:
@@ -171,14 +245,14 @@ class DynamicExperimentalController:
if self._has_lead and car_state.vEgo >= 0.01: if self._has_lead and car_state.vEgo >= 0.01:
self._dangerous_ttc_gmac.add_data(lead_one.dRel/car_state.vEgo) self._dangerous_ttc_gmac.add_data(lead_one.dRel/car_state.vEgo)
self._has_dangerous_ttc = self._dangerous_ttc_gmac.get_moving_average() is not None and self._dangerous_ttc_gmac.get_moving_average() <= DANGEROUS_TTC self._has_dangerous_ttc = self._dangerous_ttc_gmac.get_weighted_average() is not None and self._dangerous_ttc_gmac.get_weighted_average() <= DANGEROUS_TTC
# keep prev values # keep prev values
self._has_standstill_prev = self._has_standstill self._has_standstill_prev = self._has_standstill
self._has_lead_filtered_prev = self._has_lead_filtered self._has_lead_filtered_prev = self._has_lead_filtered
self._frame += 1 self._frame += 1
def _blended_priority_mode(self): def _radarless_mode(self):
# when mpc fcw crash prob is high # when mpc fcw crash prob is high
# use blended to slow down quickly # use blended to slow down quickly
if self._has_mpc_fcw: if self._has_mpc_fcw:
@@ -190,21 +264,21 @@ class DynamicExperimentalController:
self._set_mode('blended') self._set_mode('blended')
return return
# when blinker is on and speed is driving below highway cruise speed: blended # when blinker is on and speed is driving below V_ACC_MIN: blended
# we dont want it to switch mode at higher speed, blended may trigger hard brake # we dont want it to switch mode at higher speed, blended may trigger hard brake
if self._has_blinkers and self._v_ego_kph < HIGHWAY_CRUISE_KPH: #if self._has_blinkers and self._v_ego_kph < V_ACC_MIN:
self._set_mode('blended') # self._set_mode('blended')
return # return
# when at highway cruise and SNG: blended # when at highway cruise and SNG: blended
# ensuring blended mode is used because acc is bad at catching SNG lead car # ensuring blended mode is used because acc is bad at catching SNG lead car
# especially those who accel very fast and then brake very hard. # especially those who accel very fast and then brake very hard.
if self._sng_state == SNG_State.going and self._v_cruise_kph >= HIGHWAY_CRUISE_KPH: #if self._sng_state == SNG_State.going and self._v_cruise_kph >= V_ACC_MIN:
self._set_mode('blended') # self._set_mode('blended')
return # return
# when standstill: blended # when standstill: blended
# in case of lead car suddenly move away under traffic light, acc mode wont brake at traffic light. # in case of lead car suddenly move away under traffic light, acc mode won't brake at traffic light.
if self._has_standstill: if self._has_standstill:
self._set_mode('blended') self._set_mode('blended')
return return
@@ -226,9 +300,9 @@ class DynamicExperimentalController:
self._set_mode('acc') self._set_mode('acc')
return return
self._set_mode('blended') self._set_mode('acc')
def _acc_priority_mode(self): def _radar_mode(self):
# when mpc fcw crash prob is high # when mpc fcw crash prob is high
# use blended to slow down quickly # use blended to slow down quickly
if self._has_mpc_fcw: if self._has_mpc_fcw:
@@ -236,18 +310,18 @@ class DynamicExperimentalController:
return return
# If there is a filtered lead, the vehicle is not in standstill, and the lead vehicle's yRel meets the condition, # If there is a filtered lead, the vehicle is not in standstill, and the lead vehicle's yRel meets the condition,
#if self._has_lead_filtered and not self._has_standstill: if self._has_lead_filtered and not self._has_standstill:
# self._set_mode('acc') self._set_mode('acc')
# return
# when blinker is on and speed is driving below highway cruise speed: blended
# we dont want it to switch mode at higher speed, blended may trigger hard brake
if self._has_blinkers and self._v_ego_kph < HIGHWAY_CRUISE_KPH:
self._set_mode('blended')
return return
# when blinker is on and speed is driving below V_ACC_MIN: blended
# we dont want it to switch mode at higher speed, blended may trigger hard brake
#if self._has_blinkers and self._v_ego_kph < V_ACC_MIN:
# self._set_mode('blended')
# return
# when standstill: blended # when standstill: blended
# in case of lead car suddenly move away under traffic light, acc mode wont brake at traffic light. # in case of lead car suddenly move away under traffic light, acc mode won't brake at traffic light.
if self._has_standstill: if self._has_standstill:
self._set_mode('blended') self._set_mode('blended')
return return
@@ -270,17 +344,22 @@ class DynamicExperimentalController:
self._set_mode('acc') self._set_mode('acc')
def get_mpc_mode(self, radar_unavailable, car_state, lead_one, md, controls_state, maneuver_distance): def update(self, radar_unavailable, car_state, lead_one, md, controls_state, maneuver_distance):
if self._is_enabled: if self._is_enabled:
self._update(car_state, lead_one, md, controls_state, maneuver_distance) self._update(car_state, lead_one, md, controls_state, maneuver_distance)
if radar_unavailable: if radar_unavailable:
self._blended_priority_mode() self._radarless_mode()
else: else:
self._acc_priority_mode() self._radar_mode()
self._mode_changed = self._mode != self._mode_prev
self._mode_prev = self._mode self._mode_prev = self._mode
def get_mpc_mode(self):
return self._mode return self._mode
def has_changed(self):
return self._mode_changed
def set_enabled(self, enabled): def set_enabled(self, enabled):
self._is_enabled = enabled self._is_enabled = enabled
@@ -159,6 +159,18 @@ SPVehiclesTogglesPanel::SPVehiclesTogglesPanel(VehiclePanel *parent) : ListWidge
toyotaTss2LongTune->setConfirmation(true, false); toyotaTss2LongTune->setConfirmation(true, false);
addItem(toyotaTss2LongTune); addItem(toyotaTss2LongTune);
auto toyotaAbh = new ParamControlSP(
"ToyotaAutoHold",
tr("Enable Automatic Brake Hold (AHB)"),
QString("<b>%1</b><br><br>%2<br><br><b>%3</b>")
.arg(tr("WARNING: Only for Toyota/Lexus vehicles with TSS2/LSS2. USE AT YOUR OWN RISK."))
.arg(tr("When you stop the vehicle completely by depressing the brake pedal, sunnypilot will activate Auto Brake Hold."))
.arg(tr("Changing this setting takes effect when the car is powered off.")),
"../assets/offroad/icon_blank.png"
);
toyotaAbh->setConfirmation(true, false);
addItem(toyotaAbh);
toyotaEnhancedBsm = new ParamControlSP( toyotaEnhancedBsm = new ParamControlSP(
"ToyotaEnhancedBsm", "ToyotaEnhancedBsm",
tr("Enable Enhanced Blind Spot Monitor"), tr("Enable Enhanced Blind Spot Monitor"),
@@ -191,6 +203,14 @@ SPVehiclesTogglesPanel::SPVehiclesTogglesPanel(VehiclePanel *parent) : ListWidge
toyotaAutoUnlock->setConfirmation(true, false); toyotaAutoUnlock->setConfirmation(true, false);
addItem(toyotaAutoUnlock); addItem(toyotaAutoUnlock);
auto toyotaDriveMode = new ParamControlSP(
"ToyotaDriveMode",
tr("Enable Toyota Drive Mode Button"),
tr("Sunnypilot will link the Acceleration Personality to the car's physical drive mode selector.\nReboot Required."),
"../assets/offroad/icon_blank.png");
toyotaDriveMode->setConfirmation(true, false);
addItem(toyotaDriveMode);
// Volkswagen // Volkswagen
addItem(new LabelControlSP(tr("Volkswagen"))); addItem(new LabelControlSP(tr("Volkswagen")));
auto volkswagenCCOnly = new ParamControlSP( auto volkswagenCCOnly = new ParamControlSP(
@@ -207,6 +227,7 @@ SPVehiclesTogglesPanel::SPVehiclesTogglesPanel(VehiclePanel *parent) : ListWidge
hkgCustomLongTuning->setEnabled(offroad); hkgCustomLongTuning->setEnabled(offroad);
hyundaiCruiseMainDefault->setEnabled(offroad); hyundaiCruiseMainDefault->setEnabled(offroad);
toyotaTss2LongTune->setEnabled(offroad); toyotaTss2LongTune->setEnabled(offroad);
toyotaAbh->setEnabled(offroad);
toyotaEnhancedBsm->setEnabled(offroad); toyotaEnhancedBsm->setEnabled(offroad);
toyotaSngHack->setEnabled(offroad); toyotaSngHack->setEnabled(offroad);
volkswagenCCOnly->setEnabled(offroad); volkswagenCCOnly->setEnabled(offroad);
@@ -216,6 +216,7 @@ void AnnotatedCameraWidgetSP::updateState(const UIStateSP &s) {
latAccelFactorFiltered = ltp.getLatAccelFactorFiltered(); latAccelFactorFiltered = ltp.getLatAccelFactorFiltered();
frictionCoefficientFiltered = ltp.getFrictionCoefficientFiltered(); frictionCoefficientFiltered = ltp.getFrictionCoefficientFiltered();
liveValid = ltp.getLiveValid(); liveValid = ltp.getLiveValid();
ecoMode = vEgo > 0 && car_state.getEngineRpm() == 0;
// ############################## DEV UI END ############################## // ############################## DEV UI END ##############################
btnPerc = s.scene.sleep_btn_opacity * 0.05; btnPerc = s.scene.sleep_btn_opacity * 0.05;
@@ -320,8 +321,8 @@ void AnnotatedCameraWidgetSP::updateState(const UIStateSP &s) {
// TODO: Add toggle variables to cereal, and parse from cereal // TODO: Add toggle variables to cereal, and parse from cereal
longitudinalPersonality = s.scene.longitudinal_personality; longitudinalPersonality = s.scene.longitudinal_personality;
dynamicLaneProfile = s.scene.dynamic_lane_profile; dynamicLaneProfile = s.scene.dynamic_lane_profile;
mpcMode = QString::fromStdString(lp_sp.getE2eBlended()); const auto mpc_source = lp_sp.getMpcSource();
mpcMode = (mpcMode == "blended") ? mpcMode.replace(0, 1, mpcMode[0].toUpper()) : mpcMode.toUpper(); mpcSource = mpc_source == cereal::MpcSource::BLENDED ? QString(tr("blended")) : QString(tr("acc"));
static int reverse_delay = 0; static int reverse_delay = 0;
bool reverse_allowed = false; bool reverse_allowed = false;
@@ -523,10 +524,32 @@ void AnnotatedCameraWidgetSP::drawHud(QPainter &p) {
// current speed // current speed
if (!hideVEgoUi) { if (!hideVEgoUi) {
// Set up the font for the speed text
p.setFont(InterFont(176, QFont::Bold)); p.setFont(InterFont(176, QFont::Bold));
drawColoredText(p, rect().center().x(), 210, speedStr, brakeLights ? QColor(0xff, 0, 0, 255) : QColor(0xff, 0xff, 0xff, 255));
// Define text coordinates
int centerX = rect().center().x();
int centerY = 210;
// Draw a red border if brakeLights is active
if (brakeLights) {
for (int offsetX = -6; offsetX <= 6; offsetX++) {
for (int offsetY = -6; offsetY <= 6; offsetY++) {
// Avoid drawing at the original text position
if (offsetX != 0 || offsetY != 0) {
drawColoredText(p, centerX + offsetX, centerY + offsetY, speedStr, QColor(255, 0, 0, 255)); // Red border
}
}
}
}
// Draw the main speed text: green if ecoMode is on, otherwise white
QColor speedTextColor = ecoMode ? QColor(0, 245, 0) : QColor(255, 255, 255, 255);
drawColoredText(p, centerX, centerY, speedStr, speedTextColor);
// Draw the speed unit below the main text
p.setFont(InterFont(66)); p.setFont(InterFont(66));
drawText(p, rect().center().x(), 290, speedUnit, 200); drawText(p, centerX, 290, speedUnit, 200);
} }
if (!reversing) { if (!reversing) {
@@ -1061,7 +1084,7 @@ void AnnotatedCameraWidgetSP::drawFeatureStatusText(QPainter &p, int x, int y) {
p.setBrush(dec_color); p.setBrush(dec_color);
p.drawEllipse(dec_btn); p.drawEllipse(dec_btn);
QString dec_status_text; QString dec_status_text;
dec_status_text.sprintf("DEC: %s\n", dynamicExperimentalControlToggle ? (experimentalMode ? QString(mpcMode).toStdString().c_str() : QString("Inactive").toStdString().c_str()) : "OFF"); dec_status_text.sprintf("DEC: %s\n", dynamicExperimentalControlToggle ? (experimentalMode ? QString(mpcSource).toStdString().c_str() : QString("Inactive").toStdString().c_str()) : "OFF");
p.setPen(QPen(shadow_color, 2)); p.setPen(QPen(shadow_color, 2));
p.drawText(x + drop_shadow_size, y + drop_shadow_size, dec_status_text); p.drawText(x + drop_shadow_size, y + drop_shadow_size, dec_status_text);
p.setPen(QPen(text_color, 2)); p.setPen(QPen(text_color, 2));
@@ -1165,7 +1188,7 @@ void AnnotatedCameraWidgetSP::drawLaneLines(QPainter &painter, const UIStateSP *
} }
// TODO: Fix empty spaces when curiving back on itself // TODO: Fix empty spaces when curiving back on itself
painter.setBrush(QColor::fromRgbF(1.0, 0.0, 0.0, 0.2)); painter.setBrush(QColor::fromRgbF(1.0, 0.0, 0.0, 0.4));
if (left_blindspot) painter.drawPolygon(scene.lane_barrier_vertices[0]); if (left_blindspot) painter.drawPolygon(scene.lane_barrier_vertices[0]);
if (right_blindspot) painter.drawPolygon(scene.lane_barrier_vertices[1]); if (right_blindspot) painter.drawPolygon(scene.lane_barrier_vertices[1]);
@@ -1177,6 +1200,10 @@ void AnnotatedCameraWidgetSP::drawLaneLines(QPainter &painter, const UIStateSP *
// paint path // paint path
QLinearGradient bg(0, height(), 0, 0); QLinearGradient bg(0, height(), 0, 0);
const auto long_plan_sp = sm["longitudinalPlanSP"].getLongitudinalPlanSP();
bool exp_mode_path = (long_plan_sp.getDynamicExperimentalControl() && long_plan_sp.getMpcSource() == cereal::MpcSource::BLENDED) ||
(!long_plan_sp.getDynamicExperimentalControl() && sm["controlsState"].getControlsState().getExperimentalMode());
if (madsEnabled || car_state.getCruiseState().getEnabled()) { if (madsEnabled || car_state.getCruiseState().getEnabled()) {
if (steerOverride && latActive) { if (steerOverride && latActive) {
bg.setColorAt(0.0, QColor::fromHslF(20 / 360., 0.94, 0.51, 0.17)); bg.setColorAt(0.0, QColor::fromHslF(20 / 360., 0.94, 0.51, 0.17));
@@ -1185,7 +1212,7 @@ void AnnotatedCameraWidgetSP::drawLaneLines(QPainter &painter, const UIStateSP *
} else if (!(latActive || car_state.getCruiseState().getEnabled())) { } else if (!(latActive || car_state.getCruiseState().getEnabled())) {
bg.setColorAt(0, whiteColor()); bg.setColorAt(0, whiteColor());
bg.setColorAt(1, whiteColor(0)); bg.setColorAt(1, whiteColor(0));
} else if (sm["controlsState"].getControlsState().getExperimentalMode()) { } else if (exp_mode_path) {
// The first half of track_vertices are the points for the right side of the path // The first half of track_vertices are the points for the right side of the path
const auto &acceleration = sm["modelV2"].getModelV2().getAcceleration().getX(); const auto &acceleration = sm["modelV2"].getModelV2().getAcceleration().getX();
const int max_len = std::min<int>(scene.track_vertices.length() / 2, acceleration.size()); const int max_len = std::min<int>(scene.track_vertices.length() / 2, acceleration.size());
@@ -1286,46 +1313,25 @@ void AnnotatedCameraWidgetSP::drawDriverState(QPainter &painter, const UIStateSP
} }
void AnnotatedCameraWidgetSP::rocketFuel(QPainter &p) { void AnnotatedCameraWidgetSP::rocketFuel(QPainter &p) {
UIState *s = uiState();
float accel = (*s->sm)["carControl"].getCarControl().getActuators().getAccel();
int widgetHeight = rect().height();
float halfHeightAbs = std::abs(accel) * widgetHeight / 2.0f;
const float scannerWidth = 15;
QRect scannerRect;
static const int ct_n = 1; if (accel > 0) {
static float ct;
int rect_w = rect().width();
int rect_h = rect().height();
const int n = 15 + 1; //Add one off screen due to timing issues
static float t[n];
int dim_n = (sin(ct / 5) + 1) * (n - 0.01);
t[dim_n] = 1.0;
t[(int)(ct/ct_n)] = 1.0;
UIStateSP *s = uiStateSP();
float vc_accel0 = (*s->sm)["carState"].getCarState().getAEgo();
static float vc_accel;
vc_accel = vc_accel + (vc_accel0 - vc_accel) / 5;
float hha = 0;
if (vc_accel > 0) {
hha = 0.85 - 0.1 / vc_accel; // only extend up to 85%
p.setBrush(QColor(0, 245, 0, 200)); p.setBrush(QColor(0, 245, 0, 200));
} scannerRect = QRect(0, widgetHeight / 2 - halfHeightAbs, scannerWidth, halfHeightAbs);
if (vc_accel < 0) {
hha = 0.85 + 0.1 / vc_accel; // only extend up to 85%
p.setBrush(QColor(245, 0, 0, 200));
}
if (hha < 0) {
hha = 0;
}
hha = hha * rect_h;
float wp = 28;
if (vc_accel > 0) {
QRect ra = QRect(rect_w - wp, rect_h / 2 - hha / 2, wp, hha / 2);
p.drawRect(ra);
} else { } else {
QRect ra = QRect(rect_w - wp, rect_h / 2, wp, hha / 2); p.setBrush(QColor(245, 0, 0, 200));
p.drawRect(ra); scannerRect = QRect(0, widgetHeight / 2, scannerWidth, halfHeightAbs);
} }
p.drawRect(scannerRect);
} }
void AnnotatedCameraWidgetSP::drawLead(QPainter &painter, const cereal::RadarState::LeadData::Reader &lead_data, const QPointF &vd, void AnnotatedCameraWidgetSP::drawLead(QPainter &painter, const cereal::RadarState::LeadData::Reader &lead_data, const QPointF &vd,
int num, const cereal::CarState::Reader &car_data, int chevron_data) { int num, const cereal::CarState::Reader &car_data, int chevron_data) {
painter.save(); painter.save();
@@ -176,6 +176,7 @@ private:
float latAccelFactorFiltered; float latAccelFactorFiltered;
float frictionCoefficientFiltered; float frictionCoefficientFiltered;
bool liveValid; bool liveValid;
bool ecoMode;
// ############################## DEV UI END ############################## // ############################## DEV UI END ##############################
float btnPerc; float btnPerc;
@@ -192,7 +193,7 @@ private:
cereal::LongitudinalPlanSP::SpeedLimitControlState slcState; cereal::LongitudinalPlanSP::SpeedLimitControlState slcState;
int longitudinalPersonality; int longitudinalPersonality;
int dynamicLaneProfile; int dynamicLaneProfile;
QString mpcMode; QString mpcSource;
int speed_limit_frame; int speed_limit_frame;
bool slcShowSign = true; bool slcShowSign = true;
+58 -18
View File
@@ -203,6 +203,14 @@
<source>mph</source> <source>mph</source>
<translation type="unfinished">ميل/س</translation> <translation type="unfinished">ميل/س</translation>
</message> </message>
<message>
<source>blended</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>acc</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>MAX</source> <source>MAX</source>
<translation type="unfinished">MAX</translation> <translation type="unfinished">MAX</translation>
@@ -1466,11 +1474,15 @@ This may take up to a minute.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>HKG CAN: Smoother Stopping Performance (Beta)</source> <source>HKG: Custom Tuning for New Longitudinal API</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control.</source> <source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@@ -1517,6 +1529,22 @@ This may take up to a minute.</source>
<source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source> <source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Enable Automatic Brake Hold (AHB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WARNING: Only for Toyota/Lexus vehicles with TSS2/LSS2. USE AT YOUR OWN RISK.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When you stop the vehicle completely by depressing the brake pedal, sunnypilot will activate Auto Brake Hold.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Changing this setting takes effect when the car is powered off.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Enhanced Blind Spot Monitor</source> <source>Enable Enhanced Blind Spot Monitor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1583,14 +1611,6 @@ Reboot Required.</source>
<source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source> <source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
@@ -2517,6 +2537,14 @@ Reboot Required.</source>
<source>Neural Network Lateral Control (NNLC)</source> <source>Neural Network Lateral Control (NNLC)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>NNLC: Remove Lateral Jerk Response (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When NNLC is active, enable this to disables the use of lateral jerk in steering torque calculations, focusing solely on lateral acceleration for a simplified control response.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enforce Torque Lateral Control</source> <source>Enforce Torque Lateral Control</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2525,6 +2553,14 @@ Reboot Required.</source>
<source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source> <source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Lateral Jerk with Torque Lateral Control (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Utilizes limited lateral jerk control for improved steering response, leveraging stock torque lateral controller capabilities. Designed to mimic NNLC behavior without training models or data collection.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Self-Tune</source> <source>Enable Self-Tune</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2910,6 +2946,10 @@ Reboot Required.</source>
This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source> This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Use Planner Speed</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Experimental Mode</source> <source>Experimental Mode</source>
<translation type="unfinished">الوضع التجريبي</translation> <translation type="unfinished">الوضع التجريبي</translation>
@@ -3277,6 +3317,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Speed</source> <source>Speed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Display Metrics Below Chevron</source> <source>Display Metrics Below Chevron</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3305,14 +3353,6 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Display Temperature on Sidebar</source> <source>Display Temperature on Sidebar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>WiFiPromptWidget</name> <name>WiFiPromptWidget</name>
+58 -18
View File
@@ -203,6 +203,14 @@
<source>mph</source> <source>mph</source>
<translation type="unfinished">mph</translation> <translation type="unfinished">mph</translation>
</message> </message>
<message>
<source>blended</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>acc</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>MAX</source> <source>MAX</source>
<translation type="unfinished">MAX</translation> <translation type="unfinished">MAX</translation>
@@ -1448,11 +1456,15 @@ This may take up to a minute.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>HKG CAN: Smoother Stopping Performance (Beta)</source> <source>HKG: Custom Tuning for New Longitudinal API</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control.</source> <source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@@ -1499,6 +1511,22 @@ This may take up to a minute.</source>
<source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source> <source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Enable Automatic Brake Hold (AHB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WARNING: Only for Toyota/Lexus vehicles with TSS2/LSS2. USE AT YOUR OWN RISK.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When you stop the vehicle completely by depressing the brake pedal, sunnypilot will activate Auto Brake Hold.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Changing this setting takes effect when the car is powered off.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Enhanced Blind Spot Monitor</source> <source>Enable Enhanced Blind Spot Monitor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1565,14 +1593,6 @@ Reboot Required.</source>
<source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source> <source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
@@ -2501,6 +2521,14 @@ Reboot Required.</source>
<source>Neural Network Lateral Control (NNLC)</source> <source>Neural Network Lateral Control (NNLC)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>NNLC: Remove Lateral Jerk Response (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When NNLC is active, enable this to disables the use of lateral jerk in steering torque calculations, focusing solely on lateral acceleration for a simplified control response.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enforce Torque Lateral Control</source> <source>Enforce Torque Lateral Control</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2509,6 +2537,14 @@ Reboot Required.</source>
<source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source> <source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Lateral Jerk with Torque Lateral Control (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Utilizes limited lateral jerk control for improved steering response, leveraging stock torque lateral controller capabilities. Designed to mimic NNLC behavior without training models or data collection.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Self-Tune</source> <source>Enable Self-Tune</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2896,6 +2932,10 @@ Reboot Required.</source>
This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source> This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Use Planner Speed</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Experimental Mode</source> <source>Experimental Mode</source>
<translation type="unfinished">Experimenteller Modus</translation> <translation type="unfinished">Experimenteller Modus</translation>
@@ -3263,6 +3303,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Speed</source> <source>Speed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Display Metrics Below Chevron</source> <source>Display Metrics Below Chevron</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3291,14 +3339,6 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Display Temperature on Sidebar</source> <source>Display Temperature on Sidebar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>WiFiPromptWidget</name> <name>WiFiPromptWidget</name>
+48 -8
View File
@@ -207,6 +207,14 @@
<source>LIMIT</source> <source>LIMIT</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>blended</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>acc</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>AutoLaneChangeTimer</name> <name>AutoLaneChangeTimer</name>
@@ -1445,14 +1453,6 @@ Esto puede tardar un minuto.</translation>
<source>Hyundai/Kia/Genesis</source> <source>Hyundai/Kia/Genesis</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>HKG CAN: Smoother Stopping Performance (Beta)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Subaru</source> <source>Subaru</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1571,6 +1571,26 @@ Reboot Required.</source>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source> <source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>HKG: Custom Tuning for New Longitudinal API</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Automatic Brake Hold (AHB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WARNING: Only for Toyota/Lexus vehicles with TSS2/LSS2. USE AT YOUR OWN RISK.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When you stop the vehicle completely by depressing the brake pedal, sunnypilot will activate Auto Brake Hold.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Changing this setting takes effect when the car is powered off.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
@@ -2677,6 +2697,22 @@ Reboot Required.</source>
<source>Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions.</source> <source>Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>NNLC: Remove Lateral Jerk Response (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When NNLC is active, enable this to disables the use of lateral jerk in steering torque calculations, focusing solely on lateral acceleration for a simplified control response.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lateral Jerk with Torque Lateral Control (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Utilizes limited lateral jerk control for improved steering response, leveraging stock torque lateral controller capabilities. Designed to mimic NNLC behavior without training models or data collection.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>TermsPage</name> <name>TermsPage</name>
@@ -3042,6 +3078,10 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Enable the sunnypilot longitudinal control (alpha) toggle to allow Experimental mode.</source> <source>Enable the sunnypilot longitudinal control (alpha) toggle to allow Experimental mode.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Use Planner Speed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>TorqueFriction</name> <name>TorqueFriction</name>
+58 -18
View File
@@ -203,6 +203,14 @@
<source>mph</source> <source>mph</source>
<translation type="unfinished">mi/h</translation> <translation type="unfinished">mi/h</translation>
</message> </message>
<message>
<source>blended</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>acc</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>MAX</source> <source>MAX</source>
<translation type="unfinished">MAX</translation> <translation type="unfinished">MAX</translation>
@@ -1450,11 +1458,15 @@ Cela peut prendre jusqu&apos;à une minute.</translation>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>HKG CAN: Smoother Stopping Performance (Beta)</source> <source>HKG: Custom Tuning for New Longitudinal API</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control.</source> <source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@@ -1501,6 +1513,22 @@ Cela peut prendre jusqu&apos;à une minute.</translation>
<source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source> <source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Enable Automatic Brake Hold (AHB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WARNING: Only for Toyota/Lexus vehicles with TSS2/LSS2. USE AT YOUR OWN RISK.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When you stop the vehicle completely by depressing the brake pedal, sunnypilot will activate Auto Brake Hold.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Changing this setting takes effect when the car is powered off.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Enhanced Blind Spot Monitor</source> <source>Enable Enhanced Blind Spot Monitor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1567,14 +1595,6 @@ Reboot Required.</source>
<source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source> <source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
@@ -2501,6 +2521,14 @@ Reboot Required.</source>
<source>Neural Network Lateral Control (NNLC)</source> <source>Neural Network Lateral Control (NNLC)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>NNLC: Remove Lateral Jerk Response (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When NNLC is active, enable this to disables the use of lateral jerk in steering torque calculations, focusing solely on lateral acceleration for a simplified control response.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enforce Torque Lateral Control</source> <source>Enforce Torque Lateral Control</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2509,6 +2537,14 @@ Reboot Required.</source>
<source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source> <source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Lateral Jerk with Torque Lateral Control (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Utilizes limited lateral jerk control for improved steering response, leveraging stock torque lateral controller capabilities. Designed to mimic NNLC behavior without training models or data collection.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Self-Tune</source> <source>Enable Self-Tune</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2894,6 +2930,10 @@ Reboot Required.</source>
This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source> This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Use Planner Speed</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Experimental Mode</source> <source>Experimental Mode</source>
<translation type="unfinished">Mode expérimental</translation> <translation type="unfinished">Mode expérimental</translation>
@@ -3261,6 +3301,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Speed</source> <source>Speed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Display Metrics Below Chevron</source> <source>Display Metrics Below Chevron</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3289,14 +3337,6 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Display Temperature on Sidebar</source> <source>Display Temperature on Sidebar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>WiFiPromptWidget</name> <name>WiFiPromptWidget</name>
+58 -18
View File
@@ -203,6 +203,14 @@
<source>mph</source> <source>mph</source>
<translation type="unfinished">mph</translation> <translation type="unfinished">mph</translation>
</message> </message>
<message>
<source>blended</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>acc</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>MAX</source> <source>MAX</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1444,11 +1452,15 @@ This may take up to a minute.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>HKG CAN: Smoother Stopping Performance (Beta)</source> <source>HKG: Custom Tuning for New Longitudinal API</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control.</source> <source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@@ -1495,6 +1507,22 @@ This may take up to a minute.</source>
<source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source> <source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Enable Automatic Brake Hold (AHB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WARNING: Only for Toyota/Lexus vehicles with TSS2/LSS2. USE AT YOUR OWN RISK.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When you stop the vehicle completely by depressing the brake pedal, sunnypilot will activate Auto Brake Hold.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Changing this setting takes effect when the car is powered off.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Enhanced Blind Spot Monitor</source> <source>Enable Enhanced Blind Spot Monitor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1561,14 +1589,6 @@ Reboot Required.</source>
<source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source> <source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
@@ -2495,6 +2515,14 @@ Reboot Required.</source>
<source>Neural Network Lateral Control (NNLC)</source> <source>Neural Network Lateral Control (NNLC)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>NNLC: Remove Lateral Jerk Response (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When NNLC is active, enable this to disables the use of lateral jerk in steering torque calculations, focusing solely on lateral acceleration for a simplified control response.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enforce Torque Lateral Control</source> <source>Enforce Torque Lateral Control</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2503,6 +2531,14 @@ Reboot Required.</source>
<source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source> <source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Lateral Jerk with Torque Lateral Control (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Utilizes limited lateral jerk control for improved steering response, leveraging stock torque lateral controller capabilities. Designed to mimic NNLC behavior without training models or data collection.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Self-Tune</source> <source>Enable Self-Tune</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2888,6 +2924,10 @@ Reboot Required.</source>
This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source> This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Use Planner Speed</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Experimental Mode</source> <source>Experimental Mode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3255,6 +3295,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Speed</source> <source>Speed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Display Metrics Below Chevron</source> <source>Display Metrics Below Chevron</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3283,14 +3331,6 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Display Temperature on Sidebar</source> <source>Display Temperature on Sidebar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>WiFiPromptWidget</name> <name>WiFiPromptWidget</name>
+58 -18
View File
@@ -203,6 +203,14 @@
<source>mph</source> <source>mph</source>
<translation type="unfinished">mph</translation> <translation type="unfinished">mph</translation>
</message> </message>
<message>
<source>blended</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>acc</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>MAX</source> <source>MAX</source>
<translation type="unfinished">MAX</translation> <translation type="unfinished">MAX</translation>
@@ -1446,11 +1454,15 @@ This may take up to a minute.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>HKG CAN: Smoother Stopping Performance (Beta)</source> <source>HKG: Custom Tuning for New Longitudinal API</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control.</source> <source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@@ -1497,6 +1509,22 @@ This may take up to a minute.</source>
<source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source> <source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Enable Automatic Brake Hold (AHB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WARNING: Only for Toyota/Lexus vehicles with TSS2/LSS2. USE AT YOUR OWN RISK.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When you stop the vehicle completely by depressing the brake pedal, sunnypilot will activate Auto Brake Hold.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Changing this setting takes effect when the car is powered off.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Enhanced Blind Spot Monitor</source> <source>Enable Enhanced Blind Spot Monitor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1563,14 +1591,6 @@ Reboot Required.</source>
<source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source> <source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
@@ -2497,6 +2517,14 @@ Reboot Required.</source>
<source>Neural Network Lateral Control (NNLC)</source> <source>Neural Network Lateral Control (NNLC)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>NNLC: Remove Lateral Jerk Response (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When NNLC is active, enable this to disables the use of lateral jerk in steering torque calculations, focusing solely on lateral acceleration for a simplified control response.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enforce Torque Lateral Control</source> <source>Enforce Torque Lateral Control</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2505,6 +2533,14 @@ Reboot Required.</source>
<source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source> <source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Lateral Jerk with Torque Lateral Control (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Utilizes limited lateral jerk control for improved steering response, leveraging stock torque lateral controller capabilities. Designed to mimic NNLC behavior without training models or data collection.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Self-Tune</source> <source>Enable Self-Tune</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2890,6 +2926,10 @@ Reboot Required.</source>
This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source> This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Use Planner Speed</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Experimental Mode</source> <source>Experimental Mode</source>
<translation type="unfinished"> </translation> <translation type="unfinished"> </translation>
@@ -3257,6 +3297,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Speed</source> <source>Speed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Display Metrics Below Chevron</source> <source>Display Metrics Below Chevron</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3285,14 +3333,6 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Display Temperature on Sidebar</source> <source>Display Temperature on Sidebar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>WiFiPromptWidget</name> <name>WiFiPromptWidget</name>
+58 -18
View File
@@ -203,6 +203,14 @@
<source>mph</source> <source>mph</source>
<translation type="unfinished">mph</translation> <translation type="unfinished">mph</translation>
</message> </message>
<message>
<source>blended</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>acc</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>MAX</source> <source>MAX</source>
<translation type="unfinished">LIMITE</translation> <translation type="unfinished">LIMITE</translation>
@@ -1450,11 +1458,15 @@ Isso pode levar até um minuto.</translation>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>HKG CAN: Smoother Stopping Performance (Beta)</source> <source>HKG: Custom Tuning for New Longitudinal API</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control.</source> <source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@@ -1501,6 +1513,22 @@ Isso pode levar até um minuto.</translation>
<source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source> <source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Enable Automatic Brake Hold (AHB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WARNING: Only for Toyota/Lexus vehicles with TSS2/LSS2. USE AT YOUR OWN RISK.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When you stop the vehicle completely by depressing the brake pedal, sunnypilot will activate Auto Brake Hold.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Changing this setting takes effect when the car is powered off.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Enhanced Blind Spot Monitor</source> <source>Enable Enhanced Blind Spot Monitor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1567,14 +1595,6 @@ Reboot Required.</source>
<source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source> <source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
@@ -2501,6 +2521,14 @@ Reboot Required.</source>
<source>Neural Network Lateral Control (NNLC)</source> <source>Neural Network Lateral Control (NNLC)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>NNLC: Remove Lateral Jerk Response (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When NNLC is active, enable this to disables the use of lateral jerk in steering torque calculations, focusing solely on lateral acceleration for a simplified control response.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enforce Torque Lateral Control</source> <source>Enforce Torque Lateral Control</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2509,6 +2537,14 @@ Reboot Required.</source>
<source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source> <source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Lateral Jerk with Torque Lateral Control (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Utilizes limited lateral jerk control for improved steering response, leveraging stock torque lateral controller capabilities. Designed to mimic NNLC behavior without training models or data collection.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Self-Tune</source> <source>Enable Self-Tune</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2894,6 +2930,10 @@ Reboot Required.</source>
This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source> This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Use Planner Speed</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Experimental Mode</source> <source>Experimental Mode</source>
<translation type="unfinished">Modo Experimental</translation> <translation type="unfinished">Modo Experimental</translation>
@@ -3261,6 +3301,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Speed</source> <source>Speed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Display Metrics Below Chevron</source> <source>Display Metrics Below Chevron</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3289,14 +3337,6 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Display Temperature on Sidebar</source> <source>Display Temperature on Sidebar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>WiFiPromptWidget</name> <name>WiFiPromptWidget</name>
+58 -18
View File
@@ -203,6 +203,14 @@
<source>mph</source> <source>mph</source>
<translation type="unfinished">/.</translation> <translation type="unfinished">/.</translation>
</message> </message>
<message>
<source>blended</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>acc</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>MAX</source> <source>MAX</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1446,11 +1454,15 @@ This may take up to a minute.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>HKG CAN: Smoother Stopping Performance (Beta)</source> <source>HKG: Custom Tuning for New Longitudinal API</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control.</source> <source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@@ -1497,6 +1509,22 @@ This may take up to a minute.</source>
<source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source> <source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Enable Automatic Brake Hold (AHB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WARNING: Only for Toyota/Lexus vehicles with TSS2/LSS2. USE AT YOUR OWN RISK.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When you stop the vehicle completely by depressing the brake pedal, sunnypilot will activate Auto Brake Hold.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Changing this setting takes effect when the car is powered off.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Enhanced Blind Spot Monitor</source> <source>Enable Enhanced Blind Spot Monitor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1563,14 +1591,6 @@ Reboot Required.</source>
<source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source> <source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
@@ -2497,6 +2517,14 @@ Reboot Required.</source>
<source>Neural Network Lateral Control (NNLC)</source> <source>Neural Network Lateral Control (NNLC)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>NNLC: Remove Lateral Jerk Response (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When NNLC is active, enable this to disables the use of lateral jerk in steering torque calculations, focusing solely on lateral acceleration for a simplified control response.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enforce Torque Lateral Control</source> <source>Enforce Torque Lateral Control</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2505,6 +2533,14 @@ Reboot Required.</source>
<source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source> <source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Lateral Jerk with Torque Lateral Control (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Utilizes limited lateral jerk control for improved steering response, leveraging stock torque lateral controller capabilities. Designed to mimic NNLC behavior without training models or data collection.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Self-Tune</source> <source>Enable Self-Tune</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2890,6 +2926,10 @@ Reboot Required.</source>
This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source> This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Use Planner Speed</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Experimental Mode</source> <source>Experimental Mode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3257,6 +3297,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Speed</source> <source>Speed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Display Metrics Below Chevron</source> <source>Display Metrics Below Chevron</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3285,14 +3333,6 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Display Temperature on Sidebar</source> <source>Display Temperature on Sidebar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>WiFiPromptWidget</name> <name>WiFiPromptWidget</name>
+58 -18
View File
@@ -203,6 +203,14 @@
<source>mph</source> <source>mph</source>
<translation type="unfinished">mph</translation> <translation type="unfinished">mph</translation>
</message> </message>
<message>
<source>blended</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>acc</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>MAX</source> <source>MAX</source>
<translation type="unfinished">MAX</translation> <translation type="unfinished">MAX</translation>
@@ -1444,11 +1452,15 @@ This may take up to a minute.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>HKG CAN: Smoother Stopping Performance (Beta)</source> <source>HKG: Custom Tuning for New Longitudinal API</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control.</source> <source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@@ -1495,6 +1507,22 @@ This may take up to a minute.</source>
<source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source> <source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Enable Automatic Brake Hold (AHB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WARNING: Only for Toyota/Lexus vehicles with TSS2/LSS2. USE AT YOUR OWN RISK.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When you stop the vehicle completely by depressing the brake pedal, sunnypilot will activate Auto Brake Hold.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Changing this setting takes effect when the car is powered off.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Enhanced Blind Spot Monitor</source> <source>Enable Enhanced Blind Spot Monitor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1561,14 +1589,6 @@ Reboot Required.</source>
<source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source> <source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
@@ -2495,6 +2515,14 @@ Reboot Required.</source>
<source>Neural Network Lateral Control (NNLC)</source> <source>Neural Network Lateral Control (NNLC)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>NNLC: Remove Lateral Jerk Response (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When NNLC is active, enable this to disables the use of lateral jerk in steering torque calculations, focusing solely on lateral acceleration for a simplified control response.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enforce Torque Lateral Control</source> <source>Enforce Torque Lateral Control</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2503,6 +2531,14 @@ Reboot Required.</source>
<source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source> <source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Lateral Jerk with Torque Lateral Control (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Utilizes limited lateral jerk control for improved steering response, leveraging stock torque lateral controller capabilities. Designed to mimic NNLC behavior without training models or data collection.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Self-Tune</source> <source>Enable Self-Tune</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2888,6 +2924,10 @@ Reboot Required.</source>
This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source> This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Use Planner Speed</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Experimental Mode</source> <source>Experimental Mode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3255,6 +3295,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Speed</source> <source>Speed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Display Metrics Below Chevron</source> <source>Display Metrics Below Chevron</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3283,14 +3331,6 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Display Temperature on Sidebar</source> <source>Display Temperature on Sidebar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>WiFiPromptWidget</name> <name>WiFiPromptWidget</name>
+58 -18
View File
@@ -203,6 +203,14 @@
<source>mph</source> <source>mph</source>
<translation type="unfinished">mph</translation> <translation type="unfinished">mph</translation>
</message> </message>
<message>
<source>blended</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>acc</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>MAX</source> <source>MAX</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1446,11 +1454,15 @@ This may take up to a minute.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>HKG CAN: Smoother Stopping Performance (Beta)</source> <source>HKG: Custom Tuning for New Longitudinal API</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control.</source> <source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@@ -1497,6 +1509,22 @@ This may take up to a minute.</source>
<source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source> <source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Enable Automatic Brake Hold (AHB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WARNING: Only for Toyota/Lexus vehicles with TSS2/LSS2. USE AT YOUR OWN RISK.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When you stop the vehicle completely by depressing the brake pedal, sunnypilot will activate Auto Brake Hold.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Changing this setting takes effect when the car is powered off.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Enhanced Blind Spot Monitor</source> <source>Enable Enhanced Blind Spot Monitor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1563,14 +1591,6 @@ Reboot Required.</source>
<source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source> <source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
@@ -2497,6 +2517,14 @@ Reboot Required.</source>
<source>Neural Network Lateral Control (NNLC)</source> <source>Neural Network Lateral Control (NNLC)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>NNLC: Remove Lateral Jerk Response (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When NNLC is active, enable this to disables the use of lateral jerk in steering torque calculations, focusing solely on lateral acceleration for a simplified control response.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enforce Torque Lateral Control</source> <source>Enforce Torque Lateral Control</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2505,6 +2533,14 @@ Reboot Required.</source>
<source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source> <source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Lateral Jerk with Torque Lateral Control (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Utilizes limited lateral jerk control for improved steering response, leveraging stock torque lateral controller capabilities. Designed to mimic NNLC behavior without training models or data collection.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Self-Tune</source> <source>Enable Self-Tune</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2890,6 +2926,10 @@ Reboot Required.</source>
This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source> This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Use Planner Speed</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Experimental Mode</source> <source>Experimental Mode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3257,6 +3297,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Speed</source> <source>Speed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Display Metrics Below Chevron</source> <source>Display Metrics Below Chevron</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3285,14 +3333,6 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Display Temperature on Sidebar</source> <source>Display Temperature on Sidebar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>WiFiPromptWidget</name> <name>WiFiPromptWidget</name>
+58 -18
View File
@@ -203,6 +203,14 @@
<source>mph</source> <source>mph</source>
<translation type="unfinished">mph</translation> <translation type="unfinished">mph</translation>
</message> </message>
<message>
<source>blended</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>acc</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>MAX</source> <source>MAX</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1446,11 +1454,15 @@ This may take up to a minute.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>HKG CAN: Smoother Stopping Performance (Beta)</source> <source>HKG: Custom Tuning for New Longitudinal API</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control.</source> <source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@@ -1497,6 +1509,22 @@ This may take up to a minute.</source>
<source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source> <source>Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars. Big thanks to dragonpilot-community for this implementation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Enable Automatic Brake Hold (AHB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WARNING: Only for Toyota/Lexus vehicles with TSS2/LSS2. USE AT YOUR OWN RISK.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When you stop the vehicle completely by depressing the brake pedal, sunnypilot will activate Auto Brake Hold.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Changing this setting takes effect when the car is powered off.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Enhanced Blind Spot Monitor</source> <source>Enable Enhanced Blind Spot Monitor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1563,14 +1591,6 @@ Reboot Required.</source>
<source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source> <source>Tested on RAV4 TSS1, Lexus LSS1, Toyota TSS1/1.5, and Prius TSS2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>HKG CAN: Enable Cruise Main By Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabling this toggle sets CRUISE MAIN to ON by default when the car starts, without engaging MADS. The user still needs to manually engage MADS</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
@@ -2497,6 +2517,14 @@ Reboot Required.</source>
<source>Neural Network Lateral Control (NNLC)</source> <source>Neural Network Lateral Control (NNLC)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>NNLC: Remove Lateral Jerk Response (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When NNLC is active, enable this to disables the use of lateral jerk in steering torque calculations, focusing solely on lateral acceleration for a simplified control response.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enforce Torque Lateral Control</source> <source>Enforce Torque Lateral Control</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2505,6 +2533,14 @@ Reboot Required.</source>
<source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source> <source>Enable this to enforce sunnypilot to steer with Torque lateral control.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Lateral Jerk with Torque Lateral Control (Alpha)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Utilizes limited lateral jerk control for improved steering response, leveraging stock torque lateral controller capabilities. Designed to mimic NNLC behavior without training models or data collection.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Enable Self-Tune</source> <source>Enable Self-Tune</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -2890,6 +2926,10 @@ Reboot Required.</source>
This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source> This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Use Planner Speed</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Experimental Mode</source> <source>Experimental Mode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3257,6 +3297,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Speed</source> <source>Speed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Display Metrics Below Chevron</source> <source>Display Metrics Below Chevron</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -3285,14 +3333,6 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC.</source>
<source>Display Temperature on Sidebar</source> <source>Display Temperature on Sidebar</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>WiFiPromptWidget</name> <name>WiFiPromptWidget</name>
+2
View File
@@ -104,8 +104,10 @@ def manager_init() -> None:
("TorqueDeadzoneDeg", "0"), ("TorqueDeadzoneDeg", "0"),
("TorqueFriction", "10"), ("TorqueFriction", "10"),
("TorqueMaxLatAccel", "250"), ("TorqueMaxLatAccel", "250"),
("ToyotaAutoHold", "0"),
("ToyotaAutoLockBySpeed", "0"), ("ToyotaAutoLockBySpeed", "0"),
("ToyotaAutoUnlockByShifter", "0"), ("ToyotaAutoUnlockByShifter", "0"),
("ToyotaDriveMode", "0"),
("ToyotaEnhancedBsm", "0"), ("ToyotaEnhancedBsm", "0"),
("TrueVEgoUi", "0"), ("TrueVEgoUi", "0"),
("TurnSpeedControl", "0"), ("TurnSpeedControl", "0"),