5 minute read

Our latest release is for you, the people. You asked for better sounds, we designed a completely new set of sounds for 0.8.12. You asked for better longitudinal control in stop and go, so we put that in 0.8.12. You asked for a model that doesn’t take exits, 0.8.12 has that too. We really like 0.8.12, and we think you will too. Merry Christmas!

New sounds

In this release, the alert experience got a minor overhaul. We started with a completely new set of sounds, brought to you by Chris Lane. In previous releases, openpilot used four different sounds for all of its alerts. Now, openpilot has a set of seven purposefully-designed sounds. They’re a consistent family and sound great on both the comma three and comma two.

Once we had new sounds, we decided to polish up the rest of the rough edges in openilot’s alert experience. Soft disabling is a state in openpilot where openpilot will disengage in 3 seconds if a particular condition, such as an unfastened seatbelt, hasn’t cleared. Soft disable alerts were indistinguishable from immediate disables, meaning soft disables were both a confusing and unnecesarily harsh experience. Soft disable alerts now have text that indicates imminent disengagement, as well as a pleasant, distinct sound and background color.

In addition to the improved soft disables, many alerts have been simplified (#23186), and a bug was also fixed (#23191) that made alerts show for slightly longer than intended.

Improved Longitudinal

Human inspired longitudinal policy

One of the issues with openpilot longitudinal has been unnatural stopping behavior. The MPC system would cause openpilot to brake early and hard when coming up to a stopped car, and then creep slowly forward towards the stopped car, taking a very long time to come to a full stop. This stopping profile is a consequence of the follow distance function based on ego speed and lead speed. The old function had a large component linear with ego speed and a small factor quadratic with ego speed.

The new follow distance function has a smaller linear factor and a much larger quadratic factor. This creates a different stopping profile with later braking and no creeping. This is much more comfortable and similar to how humans brake. You can see stopping maneuver simulations with both these functions below. The 0.8.12 function confidently comes to a full stop, while 0.8.11 brakes hard in the beginning and then asymptotically releases brakes, taking 10+ seconds to come to a full stop.

Comparison of stopping maneuver in 0.8.11 (left) and 0.8.12 (right).

Shorter follow distance

The follow distance has also been shortened for this release at almost all speeds. The stationary stopping distance has been increased slightly, which is needed to make the new stopping behavior still stop comfortably behind a stopped car. In the graph below you can see how the 0.8.11 follow distance and 0.8.12 follow distance compare to human behavior.

Comparison of follow distance in 0.8.11 and 0.8.12. The median human follow distance collected from user data is displayed as context.

Acceleration from stop bugfix

Legacy code in the longitudinal planner would cause the planner state to reset when the car was about to start moving. Fixing this (#23149) makes openpilot start moving from a stop noticeably faster.

New model

This release includes a new model with improved behavior around exits. We don’t want the model to take exits unless specifically instructed to, so to this end, we made two different improvements. First, we made some changes to our desire stack (which detects maneuvers like lane changes, keeps, and turns in our driving dataset). These changes significantly reduced the number of false negative keeps, where the stack “misses” an exit. During training we tell the model what desires it should execute to follow the human trajectory, so by making the desire signals more accurate, the model can trust them more and is less likely to take exits when we didn’t tell it to.

Secondly, we addressed a deeper problem with our stack: Our stack is great at detecting when a road splits in two, but it didn’t understand that certain forks in the road have a clear “default” direction. The default choice when approaching an exit is to stay on the highway, so when openpilot is approaching an exit and we haven’t told it to execute any specific desire, it should stay on the highway by default. To help the desire stack understand when one path at a fork is the “default”, we use a clever trick: Our driving models already predict when you’re using your blinkers, so we can let the model take both paths at the fork in our simulator, and if the model thinks you’re MUCH less likely to use your blinkers in one direction than the other, that direction is the default. For example, you might use your blinker when taking an exit, but you’ll almost never use your blinker when passing an exit. Using this trick, we can filter out all the extraneous keeps (like passing an exit), leaving just the keeps where drivers took the non-default path. So now when the model is approaching an exit and it’s not explicitly told to keep-left or keep-right, it will try to take whichever path a human would think is more obvious.

Comparison of model's predicted path in 0.8.11 (red) and 0.8.12 (green).


AGNOS is the Ubuntu-based operating system built for the comma three. The headlining feature of this release is a small daemon (commaai/agnos-builder#22) that limits the display’s max brightness as the display stays on. This should mitigate burn-in on the comma three’s beautiful OLED display, with little impact to the user’s experience. This version also has an updated Python and amplifier configuration to support the new sounds. It also includes some mitigations for filesystem corruption (commaai/agnos-builder#12, commaai/agnos-builder#13).

Log Uploading

openpilot records several types of logs. Until now, an optional toggle would allow automatic uploading of your raw logs. We’ve removed the toggle and moved uploading raw logs to comma connect (commaai/connect#160). Raw logs are useful for the openpilot tools and getting the high-res video from your drives. It’s a great experience - try it out at https://connect.comma.ai!

Click the "Files" button to upload your logs

Manage and watch your uploads with the beautiful upload queue popup


Toyota pedal rework

The code to support the comma pedal on Toyotas was bloated and had several issues. The logic has been cleaned up and most issues have been addressed (#23067).

Bug fixes

  • Fixed HUD alerts on newer Honda Bosch thanks to csouers! (#23000)

Car Ports

  • Audi Q3 2020-21 support thanks to jyoung8607! (#23128)
  • Lexus RC 2020 support thanks to ErichMoraga! (#22941)

Join Us

Come help us build incredible software for the people.