openpilot 0.8.16

5 minute read

Falcon Punch Driving Model

The new “falcon punch” model improves upon the previous release in sharp turns. It fixes some turn-cutting behavior the previous models had, and is an important step towards our 🌮 goal.

“Falcon Punch” by DALL·E 2

Improved simulator dynamics & lateral planner

We use a simulator based on real-world data in our training stack to train the model in-loop. The car’s movement in the simulator needs to be as close to reality as possible (or at least unbiased), for the model to easily transfer to the real world. Luckily, the dynamics are simple when going straight, but get complicated during turns. Since the car is a rigid body, the lateral (sideways) motion of the car depends on the velocity, yaw-rate, and a host of car-specific parameters like tire stiffness and center-of-gravity position. Previously, we approximated out a lot of these effects, which resulted in a consistent bias in the simulator in turns. So, the model trained on this biased simulator had a fairly consistent turn-cutting effect when driving in the real world. Improving the dynamics model in the simulator and the lateral planner reduced average turn-cutting bias by ~40%.

Vehicle lateral dynamics while turning

Faster model training

The driving models are trained from real data using variants of stochastic gradient descent (SGD). We used modern performance recipes to speed up this process:

As a result of these speedups, the various building blocks of the falcon punch model were trained in a total time of 110h while the models in 0.8.15 took about 180h of training time (only including time doing SGD steps). While this doesn’t translate into better models immediately, faster model training allows us to iterate faster, which in itself will lead to better models. Our goal over the coming releases is to bring this time down even more.

Right hand drive toggle removal

In the last release, we mentioned that the current driver monitoring (DM) model not only predicts the driver states for both the driver side and the passenger side, but also outputs which side the steering wheel is on. This piece of information is now used to automatically set the RHD bit that is used by both the driving and DM models. Some extra logic is added on top to ensure consistency during and across drives. In addition to reducing complexity, auto-toggling fixes 1% of devices that previously had the RHD toggle in the wrong state.

Improved fan control

A few weeks ago, we noticed an uptick of malfunctioning fans in the field. We traced this down to a new batch of fans used in recently built comma three’s. This batch of fans uses a new fan control chip, and this chip’s stall detection feature was tripping erroneously. Once the stall detection trips, the fan control chip doesn’t try to drive the fan anymore. We added our own stall detection in the panda fan driver, which allows us to recover the fan control chip when it gets in a bad state (commaai/panda#1022). We also added a PID controller on the fan’s RPM to ensure all fans behave similarly.

360° clips

comma connect now supports exporting 360° dashcam clips using the comma three’s wide angle road-facing camera and the interior-facing camera. Check out the demo clip.

Exported 360° clips just work with YouTube. Here’s one by Logan LeGrand, who makes lots of great openpilot content.

MTBF Report

Here’s what the MTBF report had to say about 0.8.15, the previous release, after a month in the field. This is the first release where all the individual unplanned disengagement event types have an MTBF greater than 1000 hours. Overall MTBF of unplanned disengagements is also up to 550 from 330 hours.

MTBF analysis for openpilot v0.8.15-release
  MTBF is the point estimate
  MTBF_L is the two-sided 90.0% confidence interval
  1885999 segments, 31171 hours, 9975 engaged hours


Immediate disables - 554 hours MTBF
+----+------------------------+---------+----------+---------+-----------+
|    | event                  |    MTBF |   MTBF_L |   count |   dongles |
+====+========================+=========+==========+=========+===========+
|  0 | event canError         | 1424.98 |   758.65 |       7 |         4 |
+----+------------------------+---------+----------+---------+-----------+
|  1 | booted onroad          | 1662.47 |   842.3  |       6 |         4 |
+----+------------------------+---------+----------+---------+-----------+
|  2 | event controlsMismatch | 1994.97 |   948.81 |       5 |         2 |
+----+------------------------+---------+----------+---------+-----------+

Soft disables - 19 hours MTBF
+----+----------------------------+---------+----------+---------+-----------+
|    | event                      |    MTBF |   MTBF_L |   count |   dongles |
+====+============================+=========+==========+=========+===========+
|  0 | event vehicleModelInvalid  |   52.22 |    46.32 |     191 |         8 |
+----+----------------------------+---------+----------+---------+-----------+
|  1 | event commIssue            |   73.34 |    63.61 |     136 |        61 |
+----+----------------------------+---------+----------+---------+-----------+
|  2 | event steerTempUnavailable |   83.12 |    71.43 |     120 |        54 |
+----+----------------------------+---------+----------+---------+-----------+
|  3 | event lowMemory            |  243.29 |   187.51 |      41 |        18 |
+----+----------------------------+---------+----------+---------+-----------+
|  4 | event calibrationInvalid   |  474.99 |   329.85 |      21 |        11 |
+----+----------------------------+---------+----------+---------+-----------+
|  5 | event overheat             |  906.8  |   547.84 |      11 |        10 |
+----+----------------------------+---------+----------+---------+-----------+
|  6 | event radarFault           | 1994.97 |   948.81 |       5 |         3 |
+----+----------------------------+---------+----------+---------+-----------+
|  7 | event cameraMalfunction    | 9974.84 |  2102.68 |       1 |         1 |
+----+----------------------------+---------+----------+---------+-----------+
|  8 | event processNotRunning    | 9974.84 |  2102.68 |       1 |         1 |
+----+----------------------------+---------+----------+---------+-----------+
|  9 | event usbError             | 9974.84 |  2102.68 |       1 |         1 |
+----+----------------------------+---------+----------+---------+-----------+

Multilanguage

The UI has new translations for Japanese thanks to cydia2020 and Brazilian Portuguese thanks to AlexandreSato. The following contributors made improvements to the existing translations: crwusiz, cydia2020, eFiniLan, and ponzu07. If you’d like to contribute to openpilot’s translations, start here.

Cars

As of this release, openpilot has crossed the 200 car milestone and supports 205 cars. This release includes support for three new sub-platforms: Subaru Global Gen 2, GM Global A with ACC at the camera, and the HDA1 flavor of Hyundai’s CAN-FD platform.

Bug Fixes

  • GM: fixed rare ACC faults on resume button press (#25402)

Enhancements

  • Mazda: use torque controller (#25265)
  • Toyota: FW fingerprint on bus 0 (#25277)
  • Chrylser: Ram 1500 steer to 0 for some EPS firmwares (#25279)
  • Chrysler: increase steering angle resolution (#25278)

Car Ports

  • Chevrolet Bolt EUV 2022-23 support thanks to JasonJShuler! (#24875)
  • Chevrolet Silverado 1500 2020-21 support thanks to JasonJShuler! (#25429)
  • GMC Sierra 1500 2020-21 support thanks to JasonJShuler! (#25523)
  • Hyundai Ioniq 5 2022 support thanks to sunnyhaibin! (#25308)
  • Hyundai Kona Electric 2022 support thanks to sunnyhaibin! (#23517)
  • Hyundai Tucson Hybrid 2022 support thanks to sunnyhaibin! (#25276)
  • Subaru Legacy 2020-22 support thanks to martinl! (#25313)
  • Subaru Outback 2020-22 support (#25248)

Join the team

We’re hiring great engineers to own and work on all parts of the openpilot stack. If anything here interests you, apply for a job or join us on GitHub!

Updated: