Forks - ponzu07/openpilot GitHub Wiki

custom forks

◄ Home

openpilot forks are used for various purposes, often for use on a certain vehicle or for the development and testing of new features.

See JFrux's guide for installing forks here.

You can also use the fork manager at emu-sh/.oh-my-comma see: demo

Or, if you just want something to help you SSH into your device, check out Utilities for Developers

Owner Link Description
@kegman kegman Largely supports Honda. Has many various customization options.
@zorrobyte zorrobyte Close to stock, automatically learns your curvature factor for better curve handling. Also supports the highly-accurate Zorro Steering Sensor (ZSS).
@ErichMoraga ErichMoraga Toyota / ZSS
@xx979xx xx979xx Hyundai / Kia / Genesis
@eFini dragonpilot Heavily modified fork of openpilot with many different customizations accessible via UI.
@jyoung8607 jyoung8607 Volkswagen
@ShaneSmiskol Stock Additions Close to stock, has an implementation of following distance profiles similar to the stock Toyota cruise control system. Supports Prius w/ ZSS
@bugsy924 bugsy924 Subaru (Recommended to use use mlp's fork which contains Bugsy's work).
@mlp martinl Subaru (In progress PR supporting both Global and Pre-Global models).
@RoxasTheNobody98 RoxasTheNobody98 Ford (WIP code. Not recommended due to lack of functional safety code).
@afa Afa Honda fork for Chinese users who like customization
@Ponzu Ponzu07 Japanese?

Development

Helpful tips for creating and maintaining a successful openpilot fork.

  • comma.ai suggests familiarizing yourself with functional safety before starting development on a custom fork.

  • Here's where some of the commonly modified openpilot files are:

    • longcontrol.py: Controls gas and brakes from an input desired speed, using a PI controller

    • lane_planner.py: Calculates dPoly (the path openpilot tries to drive) from input lane line and path polys from the model

    • planner.py: Has longitudinal acceleration limits. Picks the slowest longitudinal solution to use for cruise control (between set speed and the two longitudinal MPCs)

    • interface.py (path: selfdrive/car/YOUR MAKE/interface.py): Houses the tuning values for each car. Specifies custom alerts/events for that make. Inherits from interfaces.py

  • From @Torq_boi: A lot of people seem to be changing the CAMERA_OFFSET parameter. So I just want to make clear that that just modifies the laneline positions, not the predicted path. If you want the car to consistently drive more left or right you should change the path too. Since OP sometimes relies on lanelines sometimes on path, having them mismatched can cause weirdness.

Custom Fork Do's and Don'ts

Forks can change many of the fundamental pieces of openpilot software. Because of this, custom forks are expected to maintain certain safety procedures in order to access comma.ai's server infrastructure.

Do's

Don'ts

  • By in large, comma.ai recommends developers to not touch any of the panda safety code to add new features or modify existing behavior. One exception is unsafe_mode defined in safety_declarations.h, near the bottom. Some definitions of what each mode does can also be found in that file.

    • If you would like to propose a change in panda safety, consider opening a pull request.
  • The integrity of the time variables in the driver_monitor.py file must remain consistent with what's been predefined by comma.

  • Don't use the car's Parking Assist parameters to drive at highway speeds unless you know what you're doing. Don't promote to other users. See medium article for more details: https://medium.com/@comma_ai/safer-control-of-steering-362f3526c9ab

NOTE: To fork maintainers. Disabling or nerfing safety features may get you and your users banned from our servers. comma.ai strongly discourages the use of openpilot forks with safety code either missing or not fully meeting the requirements defined in SAFETY.md.