• Stars
    star
    40,192
  • Rank 358 (Top 0.01 %)
  • Language
    Python
  • License
    MIT License
  • Created about 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.

Table of Contents


What is openpilot?

openpilot is an open source driver assistance system. Currently, openpilot performs the functions of Adaptive Cruise Control (ACC), Automated Lane Centering (ALC), Forward Collision Warning (FCW), and Lane Departure Warning (LDW) for a growing variety of supported car makes, models, and model years. In addition, while openpilot is engaged, a camera-based Driver Monitoring (DM) feature alerts distracted and asleep drivers. See more about the vehicle integration and limitations.

Running on a dedicated device in a car

To use openpilot in a car, you need four things

  • A supported device to run this software: a comma three.
  • This software. The setup procedure of the comma three allows the user to enter a URL for custom software. The URL, openpilot.comma.ai will install the release version of openpilot. To install openpilot master, you can use installer.comma.ai/commaai/master, and replacing commaai with another GitHub username can install a fork.
  • One of the 250+ supported cars. We support Honda, Toyota, Hyundai, Nissan, Kia, Chrysler, Lexus, Acura, Audi, VW, Ford and more. If your car is not supported but has adaptive cruise control and lane-keeping assist, it's likely able to run openpilot.
  • A car harness to connect to your car.

We have detailed instructions for how to mount the device in a car.

Running on PC

All openpilot services can run as usual on a PC without requiring special hardware or a car. You can also run openpilot on recorded or simulated data to develop or experiment with openpilot.

With openpilot's tools, you can plot logs, replay drives, and watch the full-res camera streams. See the tools README for more information.

You can also run openpilot in simulation with the CARLA simulator. This allows openpilot to drive around a virtual car on your Ubuntu machine. The whole setup should only take a few minutes but does require a decent GPU.

A PC running openpilot can also control your vehicle if it is connected to a webcam, a black panda, and a harness.

Community and Contributing

openpilot is developed by comma and by users like you. We welcome both pull requests and issues on GitHub. Bug fixes and new car ports are encouraged. Check out the contributing docs.

Documentation related to openpilot development can be found on docs.comma.ai. Information about running openpilot (e.g. FAQ, fingerprinting, troubleshooting, custom forks, community hardware) should go on the wiki.

You can add support for your car by following guides we have written for Brand and Model ports. Generally, a car with adaptive cruise control and lane keep assist is a good candidate. Join our Discord to discuss car ports: most car makes have a dedicated channel.

Want to get paid to work on openpilot? comma is hiring.

And follow us on Twitter.

User Data and comma Account

By default, openpilot uploads the driving data to our servers. You can also access your data through comma connect. We use your data to train better models and improve openpilot for everyone.

openpilot is open source software: the user is free to disable data collection if they wish to do so.

openpilot logs the road-facing cameras, CAN, GPS, IMU, magnetometer, thermal sensors, crashes, and operating system logs. The driver-facing camera is only logged if you explicitly opt-in in settings. The microphone is not recorded.

By using openpilot, you agree to our Privacy Policy. You understand that use of this software or its related services will generate certain types of user data, which may be logged and stored at the sole discretion of comma. By accepting this agreement, you grant an irrevocable, perpetual, worldwide right to comma for the use of this data.

Safety and Testing

  • openpilot observes ISO26262 guidelines, see SAFETY.md for more details.
  • openpilot has software-in-the-loop tests that run on every commit.
  • The code enforcing the safety model lives in panda and is written in C, see code rigor for more details.
  • panda has software-in-the-loop safety tests.
  • Internally, we have a hardware-in-the-loop Jenkins test suite that builds and unit tests the various processes.
  • panda has additional hardware-in-the-loop tests.
  • We run the latest openpilot in a testing closet containing 10 comma devices continuously replaying routes.

Directory Structure

.
β”œβ”€β”€ cereal              # The messaging spec and libs used for all logs
β”œβ”€β”€ common              # Library like functionality we've developed here
β”œβ”€β”€ docs                # Documentation
β”œβ”€β”€ opendbc             # Files showing how to interpret data from cars
β”œβ”€β”€ panda               # Code used to communicate on CAN
β”œβ”€β”€ third_party         # External libraries
└── system              # Generic services
    β”œβ”€β”€ camerad         # Driver to capture images from the camera sensors
    β”œβ”€β”€ clocksd         # Broadcasts current time
    β”œβ”€β”€ hardware        # Hardware abstraction classes
    β”œβ”€β”€ logcatd         # systemd journal as a service
    β”œβ”€β”€ loggerd         # Logger and uploader of car data
    β”œβ”€β”€ proclogd        # Logs information from /proc
    β”œβ”€β”€ sensord         # IMU interface code
    └── ubloxd          # u-blox GNSS module interface code
└── selfdrive           # Code needed to drive the car
    β”œβ”€β”€ assets          # Fonts, images, and sounds for UI
    β”œβ”€β”€ athena          # Allows communication with the app
    β”œβ”€β”€ boardd          # Daemon to talk to the board
    β”œβ”€β”€ car             # Car specific code to read states and control actuators
    β”œβ”€β”€ controls        # Planning and controls
    β”œβ”€β”€ debug           # Tools to help you debug and do car ports
    β”œβ”€β”€ locationd       # Precise localization and vehicle parameter estimation
    β”œβ”€β”€ manager         # Daemon that starts/stops all other daemons as needed
    β”œβ”€β”€ modeld          # Driving and monitoring model runners
    β”œβ”€β”€ monitoring      # Daemon to determine driver attention
    β”œβ”€β”€ navd            # Turn-by-turn navigation
    β”œβ”€β”€ test            # Unit tests, system tests, and a car simulator
    └── ui              # The UI

Licensing

openpilot is released under the MIT license. Some parts of the software are released under other licenses as specified.

Any user of this software shall indemnify and hold harmless Comma.ai, Inc. and its directors, officers, employees, agents, stockholders, affiliates, subcontractors and customers from and against all allegations, claims, actions, suits, demands, damages, liabilities, obligations, losses, settlements, judgments, costs and expenses (including without limitation attorneys’ fees and costs) which arise out of, relate to or result from any use of this software by user.

THIS IS ALPHA QUALITY SOFTWARE FOR RESEARCH PURPOSES ONLY. THIS IS NOT A PRODUCT. YOU ARE RESPONSIBLE FOR COMPLYING WITH LOCAL LAWS AND REGULATIONS. NO WARRANTY EXPRESSED OR IMPLIED.


openpilot tests codecov

More Repositories

1

research

dataset and code for 2016 paper "Learning a Driving Simulator"
Python
4,105
star
2

neo

comma neo research platform
1,627
star
3

opendbc

democratize access to car decoder rings
C++
1,393
star
4

panda

code powering the comma.ai panda
C
1,340
star
5

speedchallenge

The comma.ai Speed Prediction Challenge!
784
star
6

calib_challenge

The comma.ai Calibration Challenge!
Python
780
star
7

comma10k

10k crowdsourced images for training segnets
Python
670
star
8

laika

Simple Python GNSS processing library
Python
647
star
9

comma2k19

A driving dataset for the development and validation of fused pose estimators and mapping algorithms
Jupyter Notebook
572
star
10

rednose

Kalman filter library
Python
297
star
11

commavq

commaVQ is a dataset of compressed driving video
Jupyter Notebook
291
star
12

cereal

capnp struct definitions and messaging used in comma ecosystem
Cap'n Proto
157
star
13

cabana

CAN visualizer and DBC maker
JavaScript
154
star
14

chffrplus

open source dashcam software
C
133
star
15

eon-neos

Operating System for your comma two and EON
Python
122
star
16

connect

comma connect PWA
JavaScript
108
star
17

commacoloring

you like coloring books?
JavaScript
101
star
18

body

firmware for the comma body robotics dev kit
C
56
star
19

chffr-api

API to access chffr data!
JavaScript
51
star
20

monitoring

The comma.ai Driver Monitoring Challenge!
51
star
21

openpilot-apks

The source code for the APK that runs inside openpilot.
JavaScript
47
star
22

pandajs

JavaScript
46
star
23

agnos

the operating system for your comma 3/3X
Python
39
star
24

depth10k

10k images for unsupervised depthnets
HTML
37
star
25

agnos-builder

Build AGNOS, the operating system for your comma 3/3X
Python
32
star
26

eon-neos-builder

Build NEOS, the operating system for your EON
C
27
star
27

comma-steering-control

Jupyter Notebook
25
star
28

entium

A helper for converting entwine tile data into cesium tiles
Python
21
star
29

connect-app

comma Connect Mobile App
JavaScript
21
star
30

trafficlights

Simple neural network to recognize the color of traffic lights
Jupyter Notebook
20
star
31

panda-artifacts

Releases of panda code.
Python
16
star
32

eon-neos-leeco

Operating System for your EON Gold
Shell
13
star
33

android_kernel_comma_msm8996

C
12
star
34

comma-x-native

X UI Library for React Native
JavaScript
12
star
35

vidutil.js

Decode H.264 and HEVC bitstreams in the browser using FFmpeg and WebAssembly
C
10
star
36

log_reader_js

Javascript implementation of the capnp log reader
JavaScript
10
star
37

android_device_oneplus_oneplus3

upstream: https://github.com/sultanxda/android_device_oneplus_oneplus3
C
8
star
38

gnss-data

Shell
8
star
39

agnos-kernel-sdm845

Kernel for the SDM845 modules
C
8
star
40

usr

usr directory from NEOS
Python
8
star
41

jobs

work @ comma.ai
8
star
42

new-connect

a rewrite of comma connect
TypeScript
8
star
43

android_kernel_leeco_msm8996

upstream: https://github.com/LineageOS/android_kernel_leeco_msm8996/commits/cm-13.0
C
6
star
44

android_system_core

upstream: https://github.com/CyanogenMod/android_system_core
C++
6
star
45

gnss-data-alt

Shell
5
star
46

android_vendor_oneplus_oneplus3

Makefile
5
star
47

android_frameworks_base

upstream: https://github.com/CyanogenMod/android_frameworks_base
Java
5
star
48

comma-api

JavaScript
5
star
49

android_build

upstream: https://github.com/cyanogenmod/android_build
Makefile
5
star
50

flash

JavaScript
5
star
51

panda_jungle

Code powering the Panda Jungle debug board
C
4
star
52

can-message

JavaScript
4
star
53

openpilot-pyextra

Python
4
star
54

tipsi-stripe

Fork of tipsi-stripe removing Android firebase dependency
JavaScript
4
star
55

android_system_extras_su

upstream: https://github.com/CyanogenMod/android_system_extras_su
C
3
star
56

android_packages_apps_NEOSSetup

JavaScript
3
star
57

my-comma-auth

shared auth utils for my.comma.ai apps (explorer, cabana)
JavaScript
3
star
58

tensorflow-autodetect

Automatically install the cpu or gpu version of Tensorflow
Python
3
star
59

cabana-issues

Public issue tracker for https://cabana.comma.ai
3
star
60

android_packages_apps_Settings

upstream: https://github.com/CyanogenMod/android_packages_apps_Settings
Java
3
star
61

qtlocation

C++
2
star
62

gnss-data-hourly

Shell
2
star
63

android

upstream: https://github.com/CyanogenMod/android -b cm-13.0
2
star
64

android_kernel_oneplus_msm8996

upstream: https://github.com/CyanogenMod/android_kernel_oneplus_msm8996
C
2
star
65

apkpatch

generates and applies efficient patch files to whole apks
Java
2
star
66

android_frameworks_opt_net_wifi

upstream: https://github.com/CyanogenMod/android_frameworks_opt_net_wifi
Java
2
star
67

android_packages_inputmethods_LatinIME

upstream: https://github.com/CyanogenMod/android_packages_inputmethods_LatinIME
Java
2
star
68

slurm-builder

Shell
1
star
69

android_hardware_quectel

Prebuilt RIL binaries for Quectel modems
Makefile
1
star
70

android_frameworks_opt_telephony

upstream: https://github.com/CyanogenMod/android_frameworks_opt_telephony
Java
1
star
71

android_device_oppo_common

upstream: https://github.com/CyanogenMod/android_device_oppo_common
Java
1
star
72

android_vendor_cm

upstream: https://github.com/CyanogenMod/android_vendor_cm
CSS
1
star
73

opencv-python-builder

Dockerfile
1
star
74

android_packages_apps_Bluetooth

upstream: https://github.com/CyanogenMod/android_packages_apps_Bluetooth
Java
1
star