Skip to content

Commit 47b39bc

Browse files
Casey FrancisComma Devicepd0wm
committed
torque toggle
Masteryota This reverts commit 916f2de. 1.8 accel max 1.25 follow Copied Sport vals from SA-Eco 3 hours off / saves your 12v battery Testing if the deadzone is causing the delay Or maybe it's the high ki values. Testing old known values from previous versions of OP. No deadzone Toyota logo instead of comma 1.2 follow Fork mods Fork mods lower gain, higher prediction, stiffer wheel, higher steer ratio Fork mods commit 5c673b6399737b3e0b9d9d54e0b830e0cb04b185 Author: cfranhonda <46506059+cfranhonda@users.noreply.github.com> Date: Wed Jul 28 15:47:27 2021 -0700 Fix steer max and make ki a bit higher. commit 039cf40ab0ac72ced1c19de6854b7761a109d4e6 Author: Casey Francis <@cfranhonda> Date: Tue Jul 27 23:19:30 2021 -0700 add LQR for other bosch kids commit 95efde9a50bc4ca38a81e5cfdb86d1307db41f3c Author: Casey Francis <@cfranhonda> Date: Tue Jul 27 22:34:51 2021 -0700 add LQR tune Fork mods commit 9b45eb1 Author: Daehyuk Ahn <daehyuk@live.com> Date: Mon May 24 23:14:34 2021 -0700 Add EnableGasPedal (toggle menu) commit 4e9ac3b Author: Casey Francis <@cfranhonda> Date: Sat Aug 21 17:36:22 2021 -0700 full speed fan commit 152dec1 Author: Casey Francis <@cfranhonda> Date: Sat Aug 21 07:45:17 2021 -0700 add vision/ disable radar toggle commit 5c48f3e Author: Casey Francis <@cfranhonda> Date: Sat Aug 21 07:35:54 2021 -0700 vaggy hack to stop jerk commit 87328dd Author: cfranhonda <46506059+cfranhonda@users.noreply.github.com> Date: Mon Aug 23 07:15:05 2021 -0700 eps mod / gasmax adjust commit baffaee Author: Vehicle Researcher <user@comma.ai> Date: Sun Aug 22 22:13:11 2021 -0700 openpilot v0.8.8 release adding "," fws for modded people Update thermald.py No sound for Saturated steering remove no gps alert Update power_monitoring.py Update interface.py green instead of red path LQR toggle add LQR toggle for select Honda's add LQR toggle for modded Civic's & CRV Revert "Universal LQR tune" This reverts commit c10adf7. add LQR toggle change description Universal LQR tune Universal LQR tune This tune taken from the Toyota Rav4 has shown to be a great alternative to the standard PID tune. It's worked very well on eps mod multipliers of 2, 2.5, 3.5, 4x. It climbs the torque scale much smoother and doesn't "jitter" like PID does sometimes. fix LQR for RDX kf under PID only. add Accord to LQR toggle Conflicts: selfdrive/boardd/boardd.cc selfdrive/controls/lib/events.py selfdrive/ui/qt/offroad/settings.cc LQR toggle lower ff +25% Cruise max add to release notes paramsd cpu usage has been increasing boardd: connect to all pandas if none specified (commaai#23805) Refactor convolutions (commaai#23807) * one conv with defines * add conv * building works on C3 * this is num_outputs too, process replay is so useful cleanup import chaining of T_IDXS (commaai#23806) bump panda ui.py: fix model lead plotting Param to allow upload over cellular (commaai#23811) * param to allow upload over cellular * brackets to be consistent * move outside loop * fix tests longitudinal planner: disable change cost when stopped. not engaged or gas pressed (commaai#23639) * disable change cost completely on standstill and gas press * cleanup * set accel to zero * clean up logic around standstill * update ref onroad_test: increase camerad cpu usage after debayer changes Update raw_logger/framereader to new new ffmpeg api (commaai#23799) * Update raw_logger/framereader to new new ffmpeg api * Can be removed now * Handled by avcodec_free_context * handle EAGAIN and clean up thneed: a few asserts in the optimizer for cases it will fail docs: fix title typo cabana for your terminal Fix tici bigmodel (commaai#23817) * Fix bigmodel on tici: cam intrinsics arent static * Give TICI route own name for import * Make function useable in offline test * typo * change tici ecam focal to trained focal * No shadow variable * Fixed ref * Force update this time * Update model replay ref commit 2022 Hyundai Elantra firmware versions (commaai#23818) Added 2022 Hyundai Elantra fwdCamera, transmission, and engine fingerprints. CARS.md add 2022 elantra hyundai: custom fw version for sonata eps (commaai#23816) * hyundai: custom fw version for sonata eps * another comment HKG: Kia Sorento FPv2 (commaai#23815) * Replace Kia Sorento FPv1 with FPv2 * keep old fingerprint Subaru: add FW for Impreza Limited UDM 2017 (commaai#23802) * FPv2: Add Subaru Impreza Limited USM 2017 * test_fw_query_on_routes.py: add subaru support Fix unmetered upload over cell (fix commaai#23811) (commaai#23820) omx encoder: move writing into thread (commaai#23771) * omx encoder: move writing to separate thread * fix include * pop * log buffers sizes * split copy and write adjust comma two model timing thresholds after bigmodel Toyota: fix flaky EV detection (commaai#23825) script to clear DTCs move lock clearing to uploader (commaai#23826) * move lock clearing to uploader * test case Honda: revert to button enable on Nidec (commaai#23828) * Honda: revert to button enable on Nidec * fix test * bump panda Added (Ecu.eps) fingerprint for Hyundai Ioniq EV 2017 (commaai#23823) fix mac_setup w/ tools+plotjuggler (commaai#23552) * fix pycurl issue: * use newer curl backend for pip install * update lib paths based on brew prefix * fix cert issue when using pycurl using certifi * make output setup nicer * fix linter * typo * dont need that actually * revert * pipenv in brew * forgot this * make brew available on fresh install * undo * more undo * oops * use sytem curl, but homebrew openssl replay: use QCoreApplication (commaai#23831) scons: use correct brew prefix (commaai#23833) replay: use VideoToolbox HW decoder on Mac (commaai#23832) * replay: support VideoToolbox HW decoding * rename flag * remove debug assert Fix watch3 on mac (commaai#23834) this seems to about what my car converges to (commaai#23836) boardd: handle missing pandas Subaru: remove Impreza CAN fingerprints (commaai#23841) * Subaru: remove Impreza CAN fingerprints * fix process replay * update refs Toyota: remove outdated comment (commaai#23844) Remove unused MPC_COST_LONG class (commaai#23843) Faster cruise max Update interface.py sport torque for everyone torq boi suggestions torque for everyone Update settings.cc Update interface.py fix prius/camry tune torque for everyone add torque to hondas Update interface.py Fix Honda rename MAX_LAT_ACCEL Rename to MAX_LAT_ACCEL Try more chill tune Revert: That was too chill Update interface.py Co-Authored-By: Comma Device <device@comma.ai> Co-Authored-By: Willem Melching <willem.melching@gmail.com>
1 parent 5c08348 commit 47b39bc

File tree

4 files changed

+65
-72
lines changed

4 files changed

+65
-72
lines changed

selfdrive/car/honda/interface.py

+52-62
Original file line numberDiff line numberDiff line change
@@ -89,25 +89,18 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=[]): # py
8989
ret.wheelbase = CivicParams.WHEELBASE
9090
ret.centerToFront = CivicParams.CENTER_TO_FRONT
9191
ret.steerRatio = 15.38 # 10.93 is end-to-end spec
92+
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 2560, 8000], [0, 2560, 3840]]
9293
if eps_modified:
93-
# stock request input values: 0x0000, 0x00DE, 0x014D, 0x01EF, 0x0290, 0x0377, 0x0454, 0x0610, 0x06EE
94-
# stock request output values: 0x0000, 0x0917, 0x0DC5, 0x1017, 0x119F, 0x140B, 0x1680, 0x1680, 0x1680
95-
# modified request output values: 0x0000, 0x0917, 0x0DC5, 0x1017, 0x119F, 0x140B, 0x1680, 0x2880, 0x3180
96-
# stock filter output values: 0x009F, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108
97-
# modified filter output values: 0x009F, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0400, 0x0480
98-
# note: max request allowed is 4096, but request is capped at 3840 in firmware, so modifications result in 2x max
99-
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 2560, 8000], [0, 2560, 3840]]
100-
# Use LQR tune if param is set
101-
if Params().get_bool('LqrTune'):
102-
ret.lateralTuning.init('lqr')
103-
ret.lateralTuning.lqr.scale = 1200.0
104-
ret.lateralTuning.lqr.ki = 0.02
105-
ret.lateralTuning.lqr.a = [0., 1., -0.22619643, 1.21822268]
106-
ret.lateralTuning.lqr.b = [-1.92006585e-04, 3.95603032e-05]
107-
ret.lateralTuning.lqr.c = [1., 0.]
108-
ret.lateralTuning.lqr.k = [-110.73572306, 451.22718255]
109-
ret.lateralTuning.lqr.l = [0.3233671, 0.3185757]
110-
ret.lateralTuning.lqr.dcGain = 0.002737852961363602
94+
if Params().get_bool('Torque'):
95+
max_torque = 2.0
96+
friction = 0.05
97+
98+
ret.lateralTuning.init('torque')
99+
ret.lateralTuning.torque.useSteeringAngle = True
100+
ret.lateralTuning.torque.kp = 2.0 / MAX_LAT_ACCEL
101+
ret.lateralTuning.torque.kf = 1.0 / MAX_LAT_ACCEL
102+
ret.lateralTuning.torque.ki = 0.5 / MAX_LAT_ACCEL
103+
ret.lateralTuning.torque.friction = friction
111104
else:
112105
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.3], [0.1]]
113106
else:
@@ -121,19 +114,18 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=[]): # py
121114
ret.wheelbase = CivicParams.WHEELBASE
122115
ret.centerToFront = CivicParams.CENTER_TO_FRONT
123116
ret.steerRatio = 15.38 # 10.93 is end-to-end spec
117+
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 2564, 8000], [0, 2564, 3840]]
124118
if eps_modified:
125-
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 2564, 8000], [0, 2564, 3840]]
126-
# Use LQR tune if param is set
127-
if Params().get_bool('LqrTune'):
128-
ret.lateralTuning.init('lqr')
129-
ret.lateralTuning.lqr.scale = 1200.0
130-
ret.lateralTuning.lqr.ki = 0.1
131-
ret.lateralTuning.lqr.a = [0., 1., -0.22619643, 1.21822268]
132-
ret.lateralTuning.lqr.b = [-1.92006585e-04, 3.95603032e-05]
133-
ret.lateralTuning.lqr.c = [1., 0.]
134-
ret.lateralTuning.lqr.k = [-110.73572306, 451.22718255]
135-
ret.lateralTuning.lqr.l = [0.3233671, 0.3185757]
136-
ret.lateralTuning.lqr.dcGain = 0.002237852961363602
119+
if Params().get_bool('Torque'):
120+
max_torque = 2.0
121+
friction = 0.05
122+
123+
ret.lateralTuning.init('torque')
124+
ret.lateralTuning.torque.useSteeringAngle = True
125+
ret.lateralTuning.torque.kp = 2.0 / MAX_LAT_ACCEL
126+
ret.lateralTuning.torque.kf = 1.0 / MAX_LAT_ACCEL
127+
ret.lateralTuning.torque.ki = 0.5 / MAX_LAT_ACCEL
128+
ret.lateralTuning.torque.friction = friction
137129
else:
138130
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.36], [0.108]] #minus 10% from 0.4, 0.12
139131
else:
@@ -148,17 +140,16 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=[]): # py
148140
ret.centerToFront = ret.wheelbase * 0.39
149141
ret.steerRatio = 16.33 # 11.82 is spec end-to-end
150142
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end
151-
# Use LQR tune if param is set
152-
if Params().get_bool('LqrTune'):
153-
ret.lateralTuning.init('lqr')
154-
ret.lateralTuning.lqr.scale = 1200.0
155-
ret.lateralTuning.lqr.ki = 0.1
156-
ret.lateralTuning.lqr.a = [0., 1., -0.22619643, 1.21822268]
157-
ret.lateralTuning.lqr.b = [-1.92006585e-04, 3.95603032e-05]
158-
ret.lateralTuning.lqr.c = [1., 0.]
159-
ret.lateralTuning.lqr.k = [-110.73572306, 451.22718255]
160-
ret.lateralTuning.lqr.l = [0.3233671, 0.3185757]
161-
ret.lateralTuning.lqr.dcGain = 0.002237852961363602
143+
if Params().get_bool('Torque'):
144+
max_torque = 2.0
145+
friction = 0.05
146+
147+
ret.lateralTuning.init('torque')
148+
ret.lateralTuning.torque.useSteeringAngle = True
149+
ret.lateralTuning.torque.kp = 2.0 / MAX_LAT_ACCEL
150+
ret.lateralTuning.torque.kf = 1.0 / MAX_LAT_ACCEL
151+
ret.lateralTuning.torque.ki = 0.5 / MAX_LAT_ACCEL
152+
ret.lateralTuning.torque.friction = friction
162153
else:
163154
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]]
164155
tire_stiffness_factor = 0.8467
@@ -196,16 +187,16 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=[]): # py
196187
# modified request output values: 0x0000, 0x0500, 0x0A15, 0x0E6D, 0x1100, 0x1200, 0x1ACD, 0x239A, 0x2800
197188
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 2560, 10000], [0, 2560, 3840]]
198189
# Use LQR tune if param is set
199-
if Params().get_bool('LqrTune'):
200-
ret.lateralTuning.init('lqr')
201-
ret.lateralTuning.lqr.scale = 1200.0
202-
ret.lateralTuning.lqr.ki = 0.1
203-
ret.lateralTuning.lqr.a = [0., 1., -0.22619643, 1.21822268]
204-
ret.lateralTuning.lqr.b = [-1.92006585e-04, 3.95603032e-05]
205-
ret.lateralTuning.lqr.c = [1., 0.]
206-
ret.lateralTuning.lqr.k = [-110.73572306, 451.22718255]
207-
ret.lateralTuning.lqr.l = [0.3233671, 0.3185757]
208-
ret.lateralTuning.lqr.dcGain = 0.002237852961363602
190+
if Params().get_bool('Torque'):
191+
max_torque = 2.0
192+
friction = 0.05
193+
194+
ret.lateralTuning.init('torque')
195+
ret.lateralTuning.torque.useSteeringAngle = True
196+
ret.lateralTuning.torque.kp = 2.0 / MAX_LAT_ACCEL
197+
ret.lateralTuning.torque.kf = 1.0 / MAX_LAT_ACCEL
198+
ret.lateralTuning.torque.ki = 0.5 / MAX_LAT_ACCEL
199+
ret.lateralTuning.torque.friction = friction
209200
else:
210201
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.21], [0.07]]
211202
else:
@@ -274,17 +265,16 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=[]): # py
274265
ret.centerToFront = ret.wheelbase * 0.41
275266
ret.steerRatio = 16.0 #11.95 is spec
276267
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]]
277-
# Use LQR tune if param is set
278-
if Params().get_bool('LqrTune'):
279-
ret.lateralTuning.init('lqr')
280-
ret.lateralTuning.lqr.scale = 1200.0
281-
ret.lateralTuning.lqr.ki = 0.1
282-
ret.lateralTuning.lqr.a = [0., 1., -0.22619643, 1.21822268]
283-
ret.lateralTuning.lqr.b = [-1.92006585e-04, 3.95603032e-05]
284-
ret.lateralTuning.lqr.c = [1., 0.]
285-
ret.lateralTuning.lqr.k = [-110.73572306, 451.22718255]
286-
ret.lateralTuning.lqr.l = [0.3233671, 0.3185757]
287-
ret.lateralTuning.lqr.dcGain = 0.002237852961363602
268+
if Params().get_bool('Torque'):
269+
max_torque = 2.0
270+
friction = 0.05
271+
272+
ret.lateralTuning.init('torque')
273+
ret.lateralTuning.torque.useSteeringAngle = True
274+
ret.lateralTuning.torque.kp = 2.0 / MAX_LAT_ACCEL
275+
ret.lateralTuning.torque.kf = 1.0 / MAX_LAT_ACCEL
276+
ret.lateralTuning.torque.ki = 0.5 / MAX_LAT_ACCEL
277+
ret.lateralTuning.torque.friction = friction
288278
else:
289279
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.06]]
290280
ret.lateralTuning.pid.kf = 0.00007818594

selfdrive/car/toyota/interface.py

+6-9
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,8 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=[]): # py
9191
ret.steerRatio = 13.7
9292
tire_stiffness_factor = 0.7933
9393
ret.mass = 3400. * CV.LB_TO_KG + STD_CARGO_KG # mean between normal and hybrid
94-
if Params().get_bool('LqrTune'):
95-
set_lat_tune(ret.lateralTuning, LatTunes.INDI_PRIUS_TSS2)
96-
ret.steerActuatorDelay = 0.3
97-
ret.steerRateCost = 1.25
98-
ret.steerLimitTimer = 0.5
94+
if Params().get_bool('Torque'):
95+
set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=2.0, FRICTION=0.08)
9996
else:
10097
set_lat_tune(ret.lateralTuning, LatTunes.PID_C)
10198

@@ -143,7 +140,7 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=[]): # py
143140
ret.steerRatio = 13.9
144141
tire_stiffness_factor = 0.444 # not optimized yet
145142
ret.mass = 3060. * CV.LB_TO_KG + STD_CARGO_KG
146-
set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=3.0, FRICTION=0.08)
143+
set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=2.0, FRICTION=0.08)
147144

148145
elif candidate in (CAR.LEXUS_ES_TSS2, CAR.LEXUS_ESH_TSS2, CAR.LEXUS_ESH):
149146
stop_and_go = True
@@ -190,13 +187,13 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=[]): # py
190187
ret.steerRatio = 15.74 # unknown end-to-end spec
191188
tire_stiffness_factor = 0.6371 # hand-tune
192189
ret.mass = 3115. * CV.LB_TO_KG + STD_CARGO_KG
193-
if Params().get_bool('LqrTune'):
190+
if Params().get_bool('Torque'):
191+
set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=2.0, FRICTION=0.08)
192+
else:
194193
set_lat_tune(ret.lateralTuning, LatTunes.INDI_PRIUS_TSS2)
195194
ret.steerActuatorDelay = 0.3
196195
ret.steerRateCost = 1.25
197196
ret.steerLimitTimer = 0.5
198-
else:
199-
set_lat_tune(ret.lateralTuning, LatTunes.PID_N)
200197

201198
elif candidate == CAR.MIRAI:
202199
stop_and_go = True

selfdrive/common/params.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ std::unordered_map<std::string, uint32_t> keys = {
177177
{"Offroad_TemperatureTooHigh", CLEAR_ON_MANAGER_START},
178178
{"Offroad_UnofficialHardware", CLEAR_ON_MANAGER_START},
179179
{"Offroad_UpdateFailed", CLEAR_ON_MANAGER_START},
180-
{"LqrTune", PERSISTENT},
180+
{"Torque", PERSISTENT},
181181
};
182182

183183
} // namespace

selfdrive/ui/qt/offroad/settings.cc

+6
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,12 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) {
8383
"Use LQR tuning values for select Hondas. Use INDI for select Toyotas..",
8484
"../assets/offroad/icon_openpilot.png",
8585
},
86+
{
87+
"Torque",
88+
"Use Torque Tune",
89+
"Use Torque tuning values. For select models only..",
90+
"../assets/offroad/icon_openpilot.png",
91+
},
8692
#ifdef ENABLE_MAPS
8793
{
8894
"NavSettingTime24h",

0 commit comments

Comments
 (0)