openpilot
openpilot copied to clipboard
Toyota ICE 8-Speed and CVT winds up/jerks clutch when sending negative ACC values
Describe the bug
Current ACC for Toyota often sends negative values in the ACC command which results in:
- Torque converter unlocking, and in some cases, downshifts on 8 speed automatic transmissions
- Clutch engagement and ratio changes for CVT
This issue is very apparent when running in Experimental mode as the ACC signal is often +/- zero point.
Obviously, constantly changing the CVT ratio and engaging/disengaging torque converter lockup isn't good for the transmission long term. It's also uncomfortable for passengers as there is a constant "catch" feeling from the drivetrain. More often in experimental, less often in chill, but still noticeable.
I've experimented with increasing the deadzone, which seems to work well. Note that hybrid effects may be less noticeable due to the unique way gearing is (or isn't) a factor.
An A/B test could be as simple as comparing stock ACC behavior route to an OP controlled route. It would also be beneficial to also log engine RPM, or some other value representative of transmission operation.
Ideally, we'd mock stock behavior and send 0 accel to coast and positive int to accel when ego car speed changes are minor. This can be accomplished by the deadzone, but I think that maybe a deadzone on negative acc commands could be beneficial to not gimp gas commands; although, I have not noticed bad behavior by a general deadzone; long just feels smoother, even for experimental.
These values seem to work well
tune.deadzoneBP = [0., 9.]
tune.deadzoneV = [.0, .25]
Looks like there is already a TODO in longcontrol.py, so this enhancement should fit in well
Which car does this affect?
Toyota ICE Automatic Transmissions
Provide a route where the issue occurs
0976603847a63139|2023-04-19--15-53-54
openpilot version
5a4452e3c636d8e4d8ea9b4456f5821c943342b2
Additional info
No response
I concur.
https://discord.com/channels/771493367246094347/771495215570747403/1100872546863296602
I have a TSSP ICE CVT corolla and would definitely like OP to interact with the powertrain more closely to how stock ACC does as its longitudinal policy is designed/tuned for each car.
One major difference I've noticed is that on downhills, my stock ACC will coast with engine braking for at least a few dozen seconds (unless there's a lead car or the set speed is decreased) before applying friction braking.
Also the acceleration requested when at a standstill in SnG is much smaller (and variable) in magnitude with stock ACC compared to OP's constant -2.0 value.
Logging and analyzing engine RPM for consideration in longitudinal policy / tuning sounds like it could be a good idea. Engine RPM is already logged as a raw CAN message but it doesn't appear to be parsed by carstate.py into the CarState cereal message.
I find that my slow weak Corolla will floor it to redline-ish RPM when increasing speed sometimes which is undesirable for comfort / tuning purposes.