Deployed 689529956d with MkDocs version: 1.6.1
@@ -0,0 +1,156 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="shortcut icon" href="/img/favicon.ico" />
|
||||
<title>openpilot docs</title>
|
||||
<link rel="stylesheet" href="/css/theme.css" />
|
||||
<link rel="stylesheet" href="/css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="/css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="/." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="//search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="/getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="/how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="/how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="/concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="/concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="/concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="/car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="/car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="/car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="/contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="/.">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="/." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
|
||||
<h1 id="404-page-not-found">404</h1>
|
||||
|
||||
<p><strong>Page not found</strong></p>
|
||||
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="/js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "/";</script>
|
||||
<script src="/js/theme_extra.js"></script>
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,218 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/CONTRIBUTING/" />
|
||||
<link rel="shortcut icon" href="../img/favicon.ico" />
|
||||
<title>How to contribute - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../css/theme.css" />
|
||||
<link rel="stylesheet" href="../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "How to contribute";
|
||||
var mkdocs_page_input_path = "CONTRIBUTING.md";
|
||||
var mkdocs_page_url = "/CONTRIBUTING/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href=".." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href=".." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item active">How to contribute</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/CONTRIBUTING.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="how-to-contribute">How to contribute</h1>
|
||||
<p>Our software is open source so you can solve your own problems without needing help from others. And if you solve a problem and are so kind, you can upstream it for the rest of the world to use. Check out our <a href="https://blog.comma.ai/a-2020-theme-externalization/">post about externalization</a>.</p>
|
||||
<p>Development is coordinated through <a href="https://discord.comma.ai">Discord</a> and GitHub.</p>
|
||||
<h3 id="getting-started">Getting Started</h3>
|
||||
<ul>
|
||||
<li>Set up your <a href="/tools/">development environment</a></li>
|
||||
<li>Join our <a href="https://discord.comma.ai">Discord</a></li>
|
||||
<li>Docs are at https://docs.comma.ai and https://blog.comma.ai</li>
|
||||
</ul>
|
||||
<h2 id="what-contributions-are-we-looking-for">What contributions are we looking for?</h2>
|
||||
<p><strong>openpilot's priorities are <a href="../SAFETY/">safety</a>, stability, quality, and features, in that order.</strong>
|
||||
openpilot is part of comma's mission to <em>solve self-driving cars while delivering shippable intermediaries</em>, and all development is towards that goal. </p>
|
||||
<h3 id="what-gets-merged">What gets merged?</h3>
|
||||
<p>The probability of a pull request being merged is a function of its value to the project and the effort it will take us to get it merged.
|
||||
If a PR offers <em>some</em> value but will take lots of time to get merged, it will be closed.
|
||||
Simple, well-tested bug fixes are the easiest to merge, and new features are the hardest to get merged. </p>
|
||||
<p>All of these are examples of good PRs:
|
||||
* typo fix: https://github.com/commaai/openpilot/pull/30678
|
||||
* removing unused code: https://github.com/commaai/openpilot/pull/30573
|
||||
* simple car model port: https://github.com/commaai/openpilot/pull/30245
|
||||
* car brand port: https://github.com/commaai/openpilot/pull/23331</p>
|
||||
<h3 id="what-doesnt-get-merged">What doesn't get merged?</h3>
|
||||
<ul>
|
||||
<li><strong>style changes</strong>: code is art, and it's up to the author to make it beautiful </li>
|
||||
<li><strong>500+ line PRs</strong>: clean it up, break it up into smaller PRs, or both</li>
|
||||
<li><strong>PRs without a clear goal</strong>: every PR must have a singular and clear goal</li>
|
||||
<li><strong>UI design</strong>: we do not have a good review process for this yet</li>
|
||||
<li><strong>New features</strong>: We believe openpilot is mostly feature-complete, and the rest is a matter of refinement and fixing bugs. As a result of this, most feature PRs will be immediately closed, however the beauty of open source is that forks can and do offer features that upstream openpilot doesn't.</li>
|
||||
<li><strong>Negative expected value</strong>: This a class of PRs that makes an improvement, but the risk or validation costs more than the improvement. The risk can be mitigated by first getting a failing test merged.</li>
|
||||
</ul>
|
||||
<h3 id="first-contribution">First contribution</h3>
|
||||
<p><a href="https://github.com/orgs/commaai/projects/26/views/1?pane=info">Projects / openpilot bounties</a> is the best place to get started and goes in-depth on what's expected when working on a bounty.
|
||||
There's lot of bounties that don't require a comma 3X or a car.</p>
|
||||
<h2 id="pull-requests">Pull Requests</h2>
|
||||
<p>Pull requests should be against the master branch.</p>
|
||||
<p>A good pull request has all of the following:
|
||||
* a clearly stated purpose
|
||||
* every line changed directly contributes to the stated purpose
|
||||
* verification, i.e. how did you test your PR?
|
||||
* justification
|
||||
* if you've optimized something, post benchmarks to prove it's better
|
||||
* if you've improved your car's tuning, post before and after plots
|
||||
* passes the CI tests</p>
|
||||
<h2 id="contributing-without-code">Contributing without Code</h2>
|
||||
<ul>
|
||||
<li>Report bugs in GitHub issues.</li>
|
||||
<li>Report driving issues in the <code>#driving-feedback</code> Discord channel.</li>
|
||||
<li>Consider opting into driver camera uploads to improve the driver monitoring model.</li>
|
||||
<li>Connect your device to Wi-Fi regularly, so that we can pull data for training better driving models.</li>
|
||||
<li>Run the <code>nightly</code> branch and report issues. This branch is like <code>master</code> but it's built just like a release.</li>
|
||||
<li>Annotate images in the <a href="https://github.com/commaai/comma10k">comma10k dataset</a>.</li>
|
||||
</ul>
|
||||
<h2 id="contributing-training-data">Contributing Training Data</h2>
|
||||
<h3 id="a-guide-for-forks">A guide for forks</h3>
|
||||
<p>In order for your fork's data to be eligible for the training set:
|
||||
* <strong>Your cereal messaging structs must be <a href="../cereal#custom-forks">compatible</a></strong>
|
||||
* <strong>The definitions of all the stock messaging structs must not change</strong>: Do not change how any of the fields are set, including everything from <code>selfdriveState.enabled</code> to <code>carState.steeringAngleDeg</code>. Instead, create your own structs and set them however you'd like.
|
||||
* <strong>Do not include cars that are not supported in upstream platforms</strong>: Instead, create new opendbc platforms for cars that you'd like to support outside of upstream, even if it's just a trim-level difference.</p>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "..";</script>
|
||||
<script src="../js/theme_extra.js"></script>
|
||||
<script src="../js/theme.js"></script>
|
||||
<script src="../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,188 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/DEBUGGING_SAFETY/" />
|
||||
<link rel="shortcut icon" href="../img/favicon.ico" />
|
||||
<title>Debugging Panda Safety with Replay Drive + LLDB - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../css/theme.css" />
|
||||
<link rel="stylesheet" href="../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Debugging Panda Safety with Replay Drive + LLDB";
|
||||
var mkdocs_page_input_path = "DEBUGGING_SAFETY.md";
|
||||
var mkdocs_page_url = "/DEBUGGING_SAFETY/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href=".." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href=".." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item active">Debugging Panda Safety with Replay Drive + LLDB</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/DEBUGGING_SAFETY.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="debugging-panda-safety-with-replay-drive-lldb">Debugging Panda Safety with Replay Drive + LLDB</h1>
|
||||
<h2 id="1-start-the-debugger-in-vs-code">1. Start the debugger in VS Code</h2>
|
||||
<ul>
|
||||
<li>Select <strong>Replay drive + Safety LLDB</strong>.</li>
|
||||
<li>Enter the route or segment when prompted.
|
||||
<a href="https://github.com/user-attachments/assets/b0cc320a-083e-46a7-a9f8-ca775bbe5604"><img src="https://github.com/user-attachments/assets/b0cc320a-083e-46a7-a9f8-ca775bbe5604"></a></li>
|
||||
</ul>
|
||||
<h2 id="2-attach-lldb">2. Attach LLDB</h2>
|
||||
<ul>
|
||||
<li>When prompted, pick the running <strong><code>replay_drive</code> process</strong>.</li>
|
||||
<li>⚠️ Attach quickly, or <code>replay_drive</code> will start consuming messages.</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>[!TIP]
|
||||
Add a Python breakpoint at the start of <code>replay_drive.py</code> to pause execution and give yourself time to attach LLDB.</p>
|
||||
</blockquote>
|
||||
<h2 id="3-set-breakpoints-in-vs-code">3. Set breakpoints in VS Code</h2>
|
||||
<p>Breakpoints can be set directly in <code>modes/xxx.h</code> (or any C file).
|
||||
No extra LLDB commands are required — just place breakpoints in the editor.</p>
|
||||
<h2 id="4-resume-execution">4. Resume execution</h2>
|
||||
<p>Once attached, you can step through both Python (on the replay) and C safety code as CAN logs are replayed.</p>
|
||||
<blockquote>
|
||||
<p>[!NOTE]
|
||||
* Use short routes for quicker iteration.
|
||||
* Pause <code>replay_drive</code> early to avoid wasting log messages.</p>
|
||||
</blockquote>
|
||||
<h2 id="video">Video</h2>
|
||||
<p>View a demo of this workflow on the PR that added it: https://github.com/commaai/openpilot/pull/36055#issue-3352911578</p>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "..";</script>
|
||||
<script src="../js/theme_extra.js"></script>
|
||||
<script src="../js/theme.js"></script>
|
||||
<script src="../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,168 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/INTEGRATION/" />
|
||||
<link rel="shortcut icon" href="../img/favicon.ico" />
|
||||
<title>Integration with Stock Features - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../css/theme.css" />
|
||||
<link rel="stylesheet" href="../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Integration with Stock Features";
|
||||
var mkdocs_page_input_path = "INTEGRATION.md";
|
||||
var mkdocs_page_url = "/INTEGRATION/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href=".." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href=".." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item active">Integration with Stock Features</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/INTEGRATION.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="integration-with-stock-features">Integration with Stock Features</h1>
|
||||
<p>In all supported cars:
|
||||
* Stock Lane Keep Assist (LKA) and stock ALC are replaced by openpilot ALC, which only functions when openpilot is engaged by the user.
|
||||
* Stock LDW is replaced by openpilot LDW.</p>
|
||||
<p>Additionally, on specific supported cars (see ACC column in <a href="../CARS/">supported cars</a>):
|
||||
* Stock ACC is replaced by openpilot ACC.
|
||||
* openpilot FCW operates in addition to stock FCW.</p>
|
||||
<p>openpilot should preserve all other vehicle's stock features, including, but not limited to: FCW, Automatic Emergency Braking (AEB), auto high-beam, blind spot warning, and side collision warning.</p>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "..";</script>
|
||||
<script src="../js/theme_extra.js"></script>
|
||||
<script src="../js/theme.js"></script>
|
||||
<script src="../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,209 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/LIMITATIONS/" />
|
||||
<link rel="shortcut icon" href="../img/favicon.ico" />
|
||||
<title>Limitations - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../css/theme.css" />
|
||||
<link rel="stylesheet" href="../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Limitations";
|
||||
var mkdocs_page_input_path = "LIMITATIONS.md";
|
||||
var mkdocs_page_url = "/LIMITATIONS/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href=".." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href=".." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item active">Limitations</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/LIMITATIONS.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="limitations">Limitations</h1>
|
||||
<h2 id="limitations-of-openpilot-alc-and-ldw">Limitations of openpilot ALC and LDW</h2>
|
||||
<p>openpilot ALC and openpilot LDW do not automatically drive the vehicle or reduce the amount of attention that must be paid to operate your vehicle. The driver must always keep control of the steering wheel and be ready to correct the openpilot ALC action at all times.</p>
|
||||
<p>While changing lanes, openpilot is not capable of looking next to you or checking your blind spot. Only nudge the wheel to initiate a lane change after you have confirmed it's safe to do so.</p>
|
||||
<p>Many factors can impact the performance of openpilot ALC and openpilot LDW, causing them to be unable to function as intended. These include, but are not limited to:</p>
|
||||
<ul>
|
||||
<li>Poor visibility (heavy rain, snow, fog, etc.) or weather conditions that may interfere with sensor operation.</li>
|
||||
<li>The road facing camera is obstructed, covered or damaged by mud, ice, snow, etc.</li>
|
||||
<li>Obstruction caused by applying excessive paint or adhesive products (such as wraps, stickers, rubber coating, etc.) onto the vehicle.</li>
|
||||
<li>The device is mounted incorrectly.</li>
|
||||
<li>When in sharp curves, like on-off ramps, intersections etc...; openpilot is designed to be limited in the amount of steering torque it can produce.</li>
|
||||
<li>In the presence of restricted lanes or construction zones.</li>
|
||||
<li>When driving on highly banked roads or in presence of strong cross-wind.</li>
|
||||
<li>Extremely hot or cold temperatures.</li>
|
||||
<li>Bright light (due to oncoming headlights, direct sunlight, etc.).</li>
|
||||
<li>Driving on hills, narrow, or winding roads.</li>
|
||||
</ul>
|
||||
<p>The list above does not represent an exhaustive list of situations that may interfere with proper operation of openpilot components. It is the driver's responsibility to be in control of the vehicle at all times.</p>
|
||||
<h2 id="limitations-of-openpilot-acc-and-fcw">Limitations of openpilot ACC and FCW</h2>
|
||||
<p>openpilot ACC and openpilot FCW are not systems that allow careless or inattentive driving. It is still necessary for the driver to pay close attention to the vehicle’s surroundings and to be ready to re-take control of the gas and the brake at all times.</p>
|
||||
<p>Many factors can impact the performance of openpilot ACC and openpilot FCW, causing them to be unable to function as intended. These include, but are not limited to:</p>
|
||||
<ul>
|
||||
<li>Poor visibility (heavy rain, snow, fog, etc.) or weather conditions that may interfere with sensor operation.</li>
|
||||
<li>The road facing camera or radar are obstructed, covered, or damaged by mud, ice, snow, etc.</li>
|
||||
<li>Obstruction caused by applying excessive paint or adhesive products (such as wraps, stickers, rubber coating, etc.) onto the vehicle.</li>
|
||||
<li>The device is mounted incorrectly.</li>
|
||||
<li>Approaching a toll booth, a bridge or a large metal plate.</li>
|
||||
<li>When driving on roads with pedestrians, cyclists, etc...</li>
|
||||
<li>In presence of traffic signs or stop lights, which are not detected by openpilot at this time.</li>
|
||||
<li>When the posted speed limit is below the user selected set speed. openpilot does not detect speed limits at this time.</li>
|
||||
<li>In presence of vehicles in the same lane that are not moving.</li>
|
||||
<li>When abrupt braking maneuvers are required. openpilot is designed to be limited in the amount of deceleration and acceleration that it can produce.</li>
|
||||
<li>When surrounding vehicles perform close cut-ins from neighbor lanes.</li>
|
||||
<li>Driving on hills, narrow, or winding roads.</li>
|
||||
<li>Extremely hot or cold temperatures.</li>
|
||||
<li>Bright light (due to oncoming headlights, direct sunlight, etc.).</li>
|
||||
<li>Interference from other equipment that generates radar waves.</li>
|
||||
</ul>
|
||||
<p>The list above does not represent an exhaustive list of situations that may interfere with proper operation of openpilot components. It is the driver's responsibility to be in control of the vehicle at all times.</p>
|
||||
<h2 id="limitations-of-openpilot-dm">Limitations of openpilot DM</h2>
|
||||
<p>openpilot DM should not be considered an exact measurement of the alertness of the driver.</p>
|
||||
<p>Many factors can impact the performance of openpilot DM, causing it to be unable to function as intended. These include, but are not limited to:</p>
|
||||
<ul>
|
||||
<li>Low light conditions, such as driving at night or in dark tunnels.</li>
|
||||
<li>Bright light (due to oncoming headlights, direct sunlight, etc.).</li>
|
||||
<li>The driver's face is partially or completely outside field of view of the driver facing camera.</li>
|
||||
<li>The driver facing camera is obstructed, covered, or damaged.</li>
|
||||
</ul>
|
||||
<p>The list above does not represent an exhaustive list of situations that may interfere with proper operation of openpilot components. A driver should not rely on openpilot DM to assess their level of attention.</p>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "..";</script>
|
||||
<script src="../js/theme_extra.js"></script>
|
||||
<script src="../js/theme.js"></script>
|
||||
<script src="../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,197 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/SAFETY/" />
|
||||
<link rel="shortcut icon" href="../img/favicon.ico" />
|
||||
<title>Safety - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../css/theme.css" />
|
||||
<link rel="stylesheet" href="../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Safety";
|
||||
var mkdocs_page_input_path = "SAFETY.md";
|
||||
var mkdocs_page_url = "/SAFETY/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href=".." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href=".." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item active">Safety</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/SAFETY.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="safety">Safety</h1>
|
||||
<p>openpilot is an Adaptive Cruise Control (ACC) and Automated Lane Centering (ALC) system.
|
||||
Like other ACC and ALC systems, openpilot is a failsafe passive system and it requires the
|
||||
driver to be alert and to pay attention at all times.</p>
|
||||
<p>In order to enforce driver alertness, openpilot includes a driver monitoring feature
|
||||
that alerts the driver when distracted.</p>
|
||||
<p>However, even with an attentive driver, we must make further efforts for the system to be
|
||||
safe. We repeat, <strong>driver alertness is necessary, but not sufficient, for openpilot to be
|
||||
used safely</strong> and openpilot is provided with no warranty of fitness for any purpose.</p>
|
||||
<p>openpilot is developed in good faith to be compliant with FMVSS requirements and to follow
|
||||
industry standards of safety for Level 2 Driver Assistance Systems. In particular, we observe
|
||||
ISO26262 guidelines, including those from <a href="https://www.nhtsa.gov/sites/nhtsa.dot.gov/files/documents/13498a_812_573_alcsystemreport.pdf">pertinent documents</a>
|
||||
released by NHTSA. In addition, we impose strict coding guidelines (like <a href="https://www.misra.org.uk/what-is-misra/">MISRA C : 2012</a>)
|
||||
on parts of openpilot that are safety relevant. We also perform software-in-the-loop,
|
||||
hardware-in-the-loop, and in-vehicle tests before each software release.</p>
|
||||
<p>Following Hazard and Risk Analysis and FMEA, at a very high level, we have designed openpilot
|
||||
ensuring two main safety requirements.</p>
|
||||
<ol>
|
||||
<li>The driver must always be capable to immediately retake manual control of the vehicle,
|
||||
by stepping on the brake pedal or by pressing the cancel button.</li>
|
||||
<li>The vehicle must not alter its trajectory too quickly for the driver to safely
|
||||
react. This means that while the system is engaged, the actuators are constrained
|
||||
to operate within reasonable limits[^1].</li>
|
||||
</ol>
|
||||
<p>For additional safety implementation details, refer to <a href="https://github.com/commaai/panda#safety-model">panda safety model</a>. For vehicle specific implementation of the safety concept, refer to <a href="https://github.com/commaai/opendbc/tree/master/opendbc/safety/safety">opendbc/safety/safety</a>.</p>
|
||||
<p>[^1]: For these actuator limits we observe ISO11270 and ISO15622. Lateral limits described there translate to 0.9 seconds of maximum actuation to achieve a 1m lateral deviation.</p>
|
||||
<hr />
|
||||
<h3 id="forks-of-openpilot">Forks of openpilot</h3>
|
||||
<ul>
|
||||
<li>Do not disable or nerf <a href="https://github.com/commaai/openpilot/tree/master/selfdrive/monitoring">driver monitoring</a></li>
|
||||
<li>Do not disable or nerf <a href="https://github.com/commaai/openpilot/tree/master/selfdrive/selfdrived/helpers.py">excessive actuation checks</a></li>
|
||||
<li>If your fork modifies any of the code in <code>opendbc/safety/</code>:</li>
|
||||
<li>your fork cannot use the openpilot trademark</li>
|
||||
<li>your fork must preserve the full <a href="https://github.com/commaai/opendbc/tree/master/opendbc/safety/tests">safety test suite</a> and all tests must pass, including any new coverage required by the fork's changes</li>
|
||||
</ul>
|
||||
<p>Failure to comply with these standards will get you and your users banned from comma.ai servers.</p>
|
||||
<p><strong>comma.ai strongly discourages the use of openpilot forks with safety code either missing or not fully meeting the above requirements.</strong></p>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "..";</script>
|
||||
<script src="../js/theme_extra.js"></script>
|
||||
<script src="../js/theme.js"></script>
|
||||
<script src="../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="19.999983"
|
||||
height="19"
|
||||
viewBox="0 0 19.999983 19"
|
||||
version="1.1"
|
||||
id="svg1425"
|
||||
sodipodi:docname="icon-star-empty.svg"
|
||||
style="fill:none"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
|
||||
<metadata
|
||||
id="metadata1431">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs1429" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1198"
|
||||
inkscape:window-height="631"
|
||||
id="namedview1427"
|
||||
showgrid="false"
|
||||
inkscape:zoom="9.8333333"
|
||||
inkscape:cx="-8.3559301"
|
||||
inkscape:cy="8.9999925"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="1267"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg1425" />
|
||||
<path
|
||||
d="m 10.258402,14.841908 -0.2584,-0.1559 -0.2583999,0.1559 -5.16547,3.1177 1.3708,-5.876 0.06856,-0.2939 -0.2281,-0.1976 -4.56431,-3.9540698 6.00919,-0.50982 0.30043,-0.02549 0.11766,-0.27761 2.3496399,-5.54381 2.3496,5.54381 0.1177,0.27761 0.3004,0.02549 6.0092,0.50982 -4.5643,3.9540698 -0.2281,0.1976 0.0686,0.2939 1.3708,5.876 z"
|
||||
id="path1423"
|
||||
inkscape:connector-curvature="0"
|
||||
style="stroke:#b7b7b7" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="19.999983"
|
||||
height="19"
|
||||
viewBox="0 0 19.999983 19"
|
||||
version="1.1"
|
||||
id="svg817"
|
||||
sodipodi:docname="icon-star-full.svg"
|
||||
style="fill:none"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
|
||||
<metadata
|
||||
id="metadata823">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs821" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1198"
|
||||
inkscape:window-height="1898"
|
||||
id="namedview819"
|
||||
showgrid="false"
|
||||
inkscape:zoom="20.005229"
|
||||
inkscape:cx="8.4325646"
|
||||
inkscape:cy="3.9969093"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg817" />
|
||||
<path
|
||||
d="m 10.258402,14.841908 -0.2584,-0.1559 -0.2583999,0.1559 -5.16547,3.1177 1.3708,-5.876 0.06856,-0.2939 -0.2281,-0.1976 -4.56431,-3.9540698 6.00919,-0.50982 0.30043,-0.02549 0.11766,-0.27761 2.3496399,-5.54381 2.3496,5.54381 0.1177,0.27761 0.3004,0.02549 6.0092,0.50982 -4.5643,3.9540698 -0.2281,0.1976 0.0686,0.2939 1.3708,5.876 z"
|
||||
id="path815"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#f5c543;stroke:#f0a43b" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="19.999983"
|
||||
height="19.000008"
|
||||
viewBox="0 0 19.999983 19.000008"
|
||||
version="1.1"
|
||||
id="svg831"
|
||||
sodipodi:docname="icon-star-half.svg"
|
||||
style="fill:none"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
|
||||
<metadata
|
||||
id="metadata837">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs835" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1198"
|
||||
inkscape:window-height="948"
|
||||
id="namedview833"
|
||||
showgrid="false"
|
||||
inkscape:zoom="9.8333333"
|
||||
inkscape:cx="-8.3559301"
|
||||
inkscape:cy="9"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="950"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg831" />
|
||||
<path
|
||||
d="M 10.000002,8.1671631e-6 V 15.270008 l -6.1799999,3.73 1.64,-7.03 L 2.0565151e-6,7.2400082 7.1900021,6.6300082 Z"
|
||||
id="path825"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#f5c543" />
|
||||
<path
|
||||
d="m 10.258402,14.841908 -0.2584,-0.1559 -0.2583999,0.1559 -5.16547,3.1177 1.3708,-5.876 0.06856,-0.2939 -0.2281,-0.1976 -4.56431,-3.9540698 6.00919,-0.50982 0.30043,-0.02549 0.11766,-0.27761 2.3496399,-5.54381 2.3496,5.54381 0.1177,0.27761 0.3004,0.02549 6.0092,0.50982 -4.5643,3.9540698 -0.2281,0.1976 0.0686,0.2939 1.3708,5.876 z"
|
||||
id="path827"
|
||||
inkscape:connector-curvature="0"
|
||||
style="stroke:#b7b7b7" />
|
||||
<path
|
||||
d="m 5.3322621,16.919208 3.66774,-2.2137 0.9999999,-0.6055 v 1.17 l -6.1799999,3.73 1.64,-7.03 L 2.0565151e-6,7.2400082 7.1900021,6.6300082 10.000002,8.1671631e-6 V 2.6000082 l -0.9999999,2.32203 -1.1246,2.65341 -5.42923,0.46066 4.12481,3.5732998 z"
|
||||
id="path829"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#f0a43b" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="500.972 178.81 20 14.375" width="20" height="14.375" xmlns="http://www.w3.org/2000/svg" xmlns:bx="https://boxy-svg.com">
|
||||
<defs>
|
||||
<clipPath id="clip0_1674_1768">
|
||||
<rect width="20" height="20" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g clip-path="url(#clip0_1674_1768)" transform="matrix(1, 0, 0, 1, 500.971771, 175.81041)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.582 5.2447C19.352 4.3611 18.6743 3.66531 17.8138 3.42916C16.2542 3 10 3 10 3C10 3 3.7458 3 2.18614 3.42916C1.32557 3.66531 0.647841 4.3611 0.417841 5.2447C0 6.84612 0 10.1875 0 10.1875C0 10.1875 0 13.5288 0.417841 15.1303C0.647841 16.0139 1.32557 16.7097 2.18614 16.946C3.7458 17.375 10 17.375 10 17.375C10 17.375 16.2542 17.375 17.8138 16.946C18.6743 16.7097 19.352 16.0139 19.582 15.1303C20 13.5288 20 10.1875 20 10.1875C20 10.1875 20 6.84612 19.582 5.2447ZM8.12509 13.6255V7.37549L13.1251 10.5006L8.12509 13.6255Z" fill="#FF0000"/>
|
||||
</g>
|
||||
<path d="M 425.503 122.113 L 428.63 127.117 L 422.376 127.117 L 425.503 122.113 Z" style="stroke: rgb(0, 0, 0); stroke-width: 0px; fill: rgb(255, 255, 255);" transform="matrix(0, 1, -1, 0, 636.212463, -239.192383)" bx:shape="triangle 422.376 122.113 6.254 5.004 0.5 0 1@278e08c4"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 118 KiB |
@@ -0,0 +1,174 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/car-porting/brand-port/" />
|
||||
<link rel="shortcut icon" href="../../img/favicon.ico" />
|
||||
<title>Porting a car brand - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../../css/theme.css" />
|
||||
<link rel="stylesheet" href="../../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Porting a car brand";
|
||||
var mkdocs_page_input_path = "car-porting/brand-port.md";
|
||||
var mkdocs_page_url = "/car-porting/brand-port/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="../.." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="../what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1 current"><a class="reference internal current" href="#">Porting a car brand</a>
|
||||
<ul class="current">
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../.." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item">Car Porting</li>
|
||||
<li class="breadcrumb-item active">Porting a car brand</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/car-porting/brand-port.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="developing-a-car-brand-port">Developing a car brand port</h1>
|
||||
<p>A brand port is a port of openpilot to a substantially new car brand or platform within a brand.</p>
|
||||
<p>Here's an example of one: https://github.com/commaai/openpilot/pull/23331.</p>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
|
||||
<a href="../what-is-a-car-port/" class="btn btn-neutral float-left" title="What is a car port?"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
||||
<a href="../model-port/" class="btn btn-neutral float-right" title="Porting a car model">Next <span class="icon icon-circle-arrow-right"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
<span><a href="../what-is-a-car-port/" style="color: #fcfcfc">« Previous</a></span>
|
||||
|
||||
|
||||
<span><a href="../model-port/" style="color: #fcfcfc">Next »</a></span>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "../..";</script>
|
||||
<script src="../../js/theme_extra.js"></script>
|
||||
<script src="../../js/theme.js"></script>
|
||||
<script src="../../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,174 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/car-porting/model-port/" />
|
||||
<link rel="shortcut icon" href="../../img/favicon.ico" />
|
||||
<title>Porting a car model - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../../css/theme.css" />
|
||||
<link rel="stylesheet" href="../../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Porting a car model";
|
||||
var mkdocs_page_input_path = "car-porting/model-port.md";
|
||||
var mkdocs_page_url = "/car-porting/model-port/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="../.." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="../what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1 current"><a class="reference internal current" href="#">Porting a car model</a>
|
||||
<ul class="current">
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../.." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item">Car Porting</li>
|
||||
<li class="breadcrumb-item active">Porting a car model</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/car-porting/model-port.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="developing-a-car-model-port">Developing a car model port</h1>
|
||||
<p>A model port is a port of openpilot to a new car model within an already supported brand. Model ports are easier than brand ports because the car's existing APIs are already known.</p>
|
||||
<p>Here's an example of one: https://github.com/commaai/openpilot/pull/30672/.</p>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
|
||||
<a href="../brand-port/" class="btn btn-neutral float-left" title="Porting a car brand"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
||||
<a href="../../contributing/roadmap/" class="btn btn-neutral float-right" title="Roadmap">Next <span class="icon icon-circle-arrow-right"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
<span><a href="../brand-port/" style="color: #fcfcfc">« Previous</a></span>
|
||||
|
||||
|
||||
<span><a href="../../contributing/roadmap/" style="color: #fcfcfc">Next »</a></span>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "../..";</script>
|
||||
<script src="../../js/theme_extra.js"></script>
|
||||
<script src="../../js/theme.js"></script>
|
||||
<script src="../../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,202 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/car-porting/what-is-a-car-port/" />
|
||||
<link rel="shortcut icon" href="../../img/favicon.ico" />
|
||||
<title>What is a car port? - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../../css/theme.css" />
|
||||
<link rel="stylesheet" href="../../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "What is a car port?";
|
||||
var mkdocs_page_input_path = "car-porting/what-is-a-car-port.md";
|
||||
var mkdocs_page_url = "/car-porting/what-is-a-car-port/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="../.." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="reference internal current" href="#">What is a car port?</a>
|
||||
<ul class="current">
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../.." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item">Car Porting</li>
|
||||
<li class="breadcrumb-item active">What is a car port?</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/car-porting/what-is-a-car-port.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="what-is-a-car-port">What is a car port?</h1>
|
||||
<p>A car port enables openpilot support on a particular car. Each car model openpilot supports needs to be individually ported. The complexity of a car port varies depending on many factors including:</p>
|
||||
<ul>
|
||||
<li>existing openpilot support for similar cars</li>
|
||||
<li>architecture and APIs available in the car</li>
|
||||
</ul>
|
||||
<h1 id="structure-of-a-car-port">Structure of a car port</h1>
|
||||
<p>Virtually all car-specific code is contained in two other repositories: <a href="https://github.com/commaai/opendbc">opendbc</a> and <a href="https://github.com/commaai/panda">panda</a>.</p>
|
||||
<h2 id="opendbc">opendbc</h2>
|
||||
<p>Each car brand is supported by a standard interface structure in <code>opendbc/car/[brand]</code>:</p>
|
||||
<ul>
|
||||
<li><code>interface.py</code>: Interface for the car, defines the CarInterface class</li>
|
||||
<li><code>carstate.py</code>: Reads CAN messages from the car and builds openpilot CarState messages</li>
|
||||
<li><code>carcontroller.py</code>: Control logic for executing openpilot CarControl actions on the car</li>
|
||||
<li><code>[brand]can.py</code>: Composes CAN messages for carcontroller to send</li>
|
||||
<li><code>values.py</code>: Limits for actuation, general constants for cars, and supported car documentation</li>
|
||||
<li><code>radar_interface.py</code>: Interface for parsing radar points from the car, if applicable</li>
|
||||
</ul>
|
||||
<h2 id="panda">panda</h2>
|
||||
<ul>
|
||||
<li><code>board/safety/safety_[brand].h</code>: Brand-specific safety logic</li>
|
||||
<li><code>tests/safety/test_[brand].py</code>: Brand-specific safety CI tests</li>
|
||||
</ul>
|
||||
<h2 id="openpilot">openpilot</h2>
|
||||
<p>For historical reasons, openpilot still contains a small amount of car-specific logic. This will eventually be migrated to opendbc or otherwise removed.</p>
|
||||
<ul>
|
||||
<li><code>selfdrive/car/car_specific.py</code>: Brand-specific event logic</li>
|
||||
</ul>
|
||||
<h1 id="overview">Overview</h1>
|
||||
<p><a href="https://github.com/jyoung8607">Jason Young</a> gave a talk at COMMA_CON with an overview of the car porting process. The talk is available on YouTube:</p>
|
||||
<p>https://www.youtube.com/watch?v=XxPS5TpTUnI</p>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
|
||||
<a href="../../concepts/glossary/" class="btn btn-neutral float-left" title="Glossary"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
||||
<a href="../brand-port/" class="btn btn-neutral float-right" title="Porting a car brand">Next <span class="icon icon-circle-arrow-right"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
<span><a href="../../concepts/glossary/" style="color: #fcfcfc">« Previous</a></span>
|
||||
|
||||
|
||||
<span><a href="../brand-port/" style="color: #fcfcfc">Next »</a></span>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "../..";</script>
|
||||
<script src="../../js/theme_extra.js"></script>
|
||||
<script src="../../js/theme.js"></script>
|
||||
<script src="../../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,181 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/concepts/glossary/" />
|
||||
<link rel="shortcut icon" href="../../img/favicon.ico" />
|
||||
<title>Glossary - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../../css/theme.css" />
|
||||
<link rel="stylesheet" href="../../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Glossary";
|
||||
var mkdocs_page_input_path = "concepts/glossary.md";
|
||||
var mkdocs_page_url = "/concepts/glossary/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="../.." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="../logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1 current"><a class="reference internal current" href="#">Glossary</a>
|
||||
<ul class="current">
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../.." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item">Concepts</li>
|
||||
<li class="breadcrumb-item active">Glossary</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/concepts/glossary.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="openpilot-glossary">openpilot glossary</h1>
|
||||
<ul>
|
||||
<li><strong>onroad</strong>: openpilot's system state while ignition is on</li>
|
||||
<li><strong>offroad</strong>: openpilot's system state while ignition is off</li>
|
||||
<li><strong>route</strong>: a route is a recording of an onroad session</li>
|
||||
<li><strong>segment</strong>: routes are split into one minute chunks called segments.</li>
|
||||
<li><strong>comma connect</strong>: the web viewer for all your routes; check it out at <a href="https://connect.comma.ai">connect.comma.ai</a>.</li>
|
||||
<li><strong>panda</strong>: this is the secondary processor on the device that implements the functional safety and directly talks to the car over CAN. See the <a href="https://github.com/commaai/panda">panda repo</a>.</li>
|
||||
<li><strong>comma 3X</strong>: the latest hardware by comma.ai for running openpilot. more info at <a href="https://comma.ai/shop">comma.ai/shop</a>.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
|
||||
<a href="../safety/" class="btn btn-neutral float-left" title="Safety"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
||||
<a href="../../car-porting/what-is-a-car-port/" class="btn btn-neutral float-right" title="What is a car port?">Next <span class="icon icon-circle-arrow-right"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
<span><a href="../safety/" style="color: #fcfcfc">« Previous</a></span>
|
||||
|
||||
|
||||
<span><a href="../../car-porting/what-is-a-car-port/" style="color: #fcfcfc">Next »</a></span>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "../..";</script>
|
||||
<script src="../../js/theme_extra.js"></script>
|
||||
<script src="../../js/theme.js"></script>
|
||||
<script src="../../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,194 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/concepts/logs/" />
|
||||
<link rel="shortcut icon" href="../../img/favicon.ico" />
|
||||
<title>Logs - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../../css/theme.css" />
|
||||
<link rel="stylesheet" href="../../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Logs";
|
||||
var mkdocs_page_input_path = "concepts/logs.md";
|
||||
var mkdocs_page_url = "/concepts/logs/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="../.." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="reference internal current" href="#">Logs</a>
|
||||
<ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="#rlogbz2">rlog.bz2</a>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#fedcamerahevc">{f,e,d}camera.hevc</a>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#qlogbz2-qcamerats">qlog.bz2 & qcamera.ts</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../.." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item">Concepts</li>
|
||||
<li class="breadcrumb-item active">Logs</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/concepts/logs.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="logging">Logging</h1>
|
||||
<p>openpilot records routes in one minute chunks called segments. A route starts on the rising edge of ignition and ends on the falling edge.</p>
|
||||
<p>Check out our <a href="https://github.com/commaai/openpilot/blob/master/tools/lib/logreader.py">Python library</a> for reading openpilot logs. Also checkout our <a href="https://github.com/commaai/openpilot/tree/master/tools">tools</a> to replay and view your data. These are the same tools we use to debug and develop openpilot.</p>
|
||||
<p>For each segment, openpilot records the following log types:</p>
|
||||
<h2 id="rlogbz2">rlog.bz2</h2>
|
||||
<p>rlogs contain all the messages passed amongst openpilot's processes. See <a href="https://github.com/commaai/cereal/blob/master/services.py">cereal/services.py</a> for a list of all the logged services. They're a bzip2 archive of the serialized capnproto messages.</p>
|
||||
<h2 id="fedcamerahevc">{f,e,d}camera.hevc</h2>
|
||||
<p>Each camera stream is H.265 encoded and written to its respective file.</p>
|
||||
<ul>
|
||||
<li><code>fcamera.hevc</code> is the road camera</li>
|
||||
<li><code>ecamera.hevc</code> is the wide road camera</li>
|
||||
<li><code>dcamera.hevc</code> is the driver camera</li>
|
||||
</ul>
|
||||
<h2 id="qlogbz2-qcamerats">qlog.bz2 & qcamera.ts</h2>
|
||||
<p>qlogs are a decimated subset of the rlogs. Check out <a href="https://github.com/commaai/cereal/blob/master/services.py">cereal/services.py</a> for the decimation.</p>
|
||||
<p>qcameras are H.264 encoded, lower res versions of the fcamera.hevc. The video shown in <a href="https://connect.comma.ai/">comma connect</a> is from the qcameras.</p>
|
||||
<p>qlogs and qcameras are designed to be small enough to upload instantly on slow internet and store forever, yet useful enough for most analysis and debugging.</p>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
|
||||
<a href="../../how-to/connect-to-comma/" class="btn btn-neutral float-left" title="Connect to a comma 3X"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
||||
<a href="../safety/" class="btn btn-neutral float-right" title="Safety">Next <span class="icon icon-circle-arrow-right"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
<span><a href="../../how-to/connect-to-comma/" style="color: #fcfcfc">« Previous</a></span>
|
||||
|
||||
|
||||
<span><a href="../safety/" style="color: #fcfcfc">Next »</a></span>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "../..";</script>
|
||||
<script src="../../js/theme_extra.js"></script>
|
||||
<script src="../../js/theme.js"></script>
|
||||
<script src="../../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,210 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/concepts/safety/" />
|
||||
<link rel="shortcut icon" href="../../img/favicon.ico" />
|
||||
<title>Safety - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../../css/theme.css" />
|
||||
<link rel="stylesheet" href="../../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Safety";
|
||||
var mkdocs_page_input_path = "concepts/safety.md";
|
||||
var mkdocs_page_url = "/concepts/safety/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="../.." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="../logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1 current"><a class="reference internal current" href="#">Safety</a>
|
||||
<ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="#forks-of-openpilot">Forks of openpilot</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../.." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item">Concepts</li>
|
||||
<li class="breadcrumb-item active">Safety</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/concepts/safety.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="safety">Safety</h1>
|
||||
<p>openpilot is an Adaptive Cruise Control (ACC) and Automated Lane Centering (ALC) system.
|
||||
Like other ACC and ALC systems, openpilot is a failsafe passive system and it requires the
|
||||
driver to be alert and to pay attention at all times.</p>
|
||||
<p>In order to enforce driver alertness, openpilot includes a driver monitoring feature
|
||||
that alerts the driver when distracted.</p>
|
||||
<p>However, even with an attentive driver, we must make further efforts for the system to be
|
||||
safe. We repeat, <strong>driver alertness is necessary, but not sufficient, for openpilot to be
|
||||
used safely</strong> and openpilot is provided with no warranty of fitness for any purpose.</p>
|
||||
<p>openpilot is developed in good faith to be compliant with FMVSS requirements and to follow
|
||||
industry standards of safety for Level 2 Driver Assistance Systems. In particular, we observe
|
||||
ISO26262 guidelines, including those from <a href="https://www.nhtsa.gov/sites/nhtsa.dot.gov/files/documents/13498a_812_573_alcsystemreport.pdf">pertinent documents</a>
|
||||
released by NHTSA. In addition, we impose strict coding guidelines (like <a href="https://www.misra.org.uk/what-is-misra/">MISRA C : 2012</a>)
|
||||
on parts of openpilot that are safety relevant. We also perform software-in-the-loop,
|
||||
hardware-in-the-loop, and in-vehicle tests before each software release.</p>
|
||||
<p>Following Hazard and Risk Analysis and FMEA, at a very high level, we have designed openpilot
|
||||
ensuring two main safety requirements.</p>
|
||||
<ol>
|
||||
<li>The driver must always be capable to immediately retake manual control of the vehicle,
|
||||
by stepping on the brake pedal or by pressing the cancel button.</li>
|
||||
<li>The vehicle must not alter its trajectory too quickly for the driver to safely
|
||||
react. This means that while the system is engaged, the actuators are constrained
|
||||
to operate within reasonable limits[^1].</li>
|
||||
</ol>
|
||||
<p>For additional safety implementation details, refer to <a href="https://github.com/commaai/panda#safety-model">panda safety model</a>. For vehicle specific implementation of the safety concept, refer to <a href="https://github.com/commaai/opendbc/tree/master/opendbc/safety/safety">opendbc/safety/safety</a>.</p>
|
||||
<p>[^1]: For these actuator limits we observe ISO11270 and ISO15622. Lateral limits described there translate to 0.9 seconds of maximum actuation to achieve a 1m lateral deviation.</p>
|
||||
<hr />
|
||||
<h3 id="forks-of-openpilot">Forks of openpilot</h3>
|
||||
<ul>
|
||||
<li>Do not disable or nerf <a href="https://github.com/commaai/openpilot/tree/master/selfdrive/monitoring">driver monitoring</a></li>
|
||||
<li>Do not disable or nerf <a href="https://github.com/commaai/openpilot/tree/master/selfdrive/selfdrived/helpers.py">excessive actuation checks</a></li>
|
||||
<li>If your fork modifies any of the code in <code>opendbc/safety/</code>:</li>
|
||||
<li>your fork cannot use the openpilot trademark</li>
|
||||
<li>your fork must preserve the full <a href="https://github.com/commaai/opendbc/tree/master/opendbc/safety/tests">safety test suite</a> and all tests must pass, including any new coverage required by the fork's changes</li>
|
||||
</ul>
|
||||
<p>Failure to comply with these standards will get you and your users banned from comma.ai servers.</p>
|
||||
<p><strong>comma.ai strongly discourages the use of openpilot forks with safety code either missing or not fully meeting the above requirements.</strong></p>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
|
||||
<a href="../logs/" class="btn btn-neutral float-left" title="Logs"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
||||
<a href="../glossary/" class="btn btn-neutral float-right" title="Glossary">Next <span class="icon icon-circle-arrow-right"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
<span><a href="../logs/" style="color: #fcfcfc">« Previous</a></span>
|
||||
|
||||
|
||||
<span><a href="../glossary/" style="color: #fcfcfc">Next »</a></span>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "../..";</script>
|
||||
<script src="../../js/theme_extra.js"></script>
|
||||
<script src="../../js/theme.js"></script>
|
||||
<script src="../../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,161 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/contributing/architecture/" />
|
||||
<link rel="shortcut icon" href="../../img/favicon.ico" />
|
||||
<title>Architecture - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../../css/theme.css" />
|
||||
<link rel="stylesheet" href="../../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Architecture";
|
||||
var mkdocs_page_input_path = "contributing/architecture.md";
|
||||
var mkdocs_page_url = "/contributing/architecture/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="../.." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../.." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item active">Architecture</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/contributing/architecture.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="architecture">Architecture</h1>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "../..";</script>
|
||||
<script src="../../js/theme_extra.js"></script>
|
||||
<script src="../../js/theme.js"></script>
|
||||
<script src="../../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,201 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/contributing/roadmap/" />
|
||||
<link rel="shortcut icon" href="../../img/favicon.ico" />
|
||||
<title>Roadmap - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../../css/theme.css" />
|
||||
<link rel="stylesheet" href="../../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Roadmap";
|
||||
var mkdocs_page_input_path = "contributing/roadmap.md";
|
||||
var mkdocs_page_url = "/contributing/roadmap/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="../.." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="reference internal current" href="#">Roadmap</a>
|
||||
<ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="#openpilot-010">openpilot 0.10</a>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#openpilot-10">openpilot 1.0</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../.." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item">Contributing</li>
|
||||
<li class="breadcrumb-item active">Roadmap</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/contributing/roadmap.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="roadmap">Roadmap</h1>
|
||||
<p>This is the roadmap for the next major openpilot releases. Also check out</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/commaai/openpilot/milestones">Milestones</a> for minor releases</li>
|
||||
<li><a href="https://github.com/commaai/openpilot/projects?query=is%3Aopen">Projects</a> for shorter-term projects not tied to releases</li>
|
||||
<li><a href="https://comma.ai/bounties">Bounties</a> for paid individual issues</li>
|
||||
<li><a href="https://discord.com/channels/469524606043160576/1249579909739708446">#current-projects</a> in Discord for discussion on work-in-progress projects</li>
|
||||
</ul>
|
||||
<h2 id="openpilot-010">openpilot 0.10</h2>
|
||||
<p>openpilot 0.10 will be the first release with a driving policy trained in
|
||||
a <a href="https://youtu.be/EqQNZXqzFSI">learned simulator</a>.</p>
|
||||
<ul>
|
||||
<li>Driving model trained in a learned simulator</li>
|
||||
<li>Always-on driver monitoring (behind a toggle)</li>
|
||||
<li>GPS removed from the driving stack</li>
|
||||
<li>100KB qlogs</li>
|
||||
<li><code>nightly</code> pushed after 1000 hours of hardware-in-the-loop testing</li>
|
||||
<li>Car interface code moved into <a href="https://github.com/commaai/opendbc">opendbc</a></li>
|
||||
<li>openpilot on PC for Linux x86, Linux arm64, and Mac (Apple Silicon)</li>
|
||||
</ul>
|
||||
<h2 id="openpilot-10">openpilot 1.0</h2>
|
||||
<p>openpilot 1.0 will feature a fully end-to-end driving policy.</p>
|
||||
<ul>
|
||||
<li>End-to-end longitudinal control in Chill mode</li>
|
||||
<li>Automatic Emergency Braking (AEB)</li>
|
||||
<li>Driver monitoring with sleep detection</li>
|
||||
<li>Rolling updates/releases pushed out by CI</li>
|
||||
<li><a href="https://github.com/orgs/commaai/projects/27">panda safety 1.0</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
|
||||
<a href="../../car-porting/model-port/" class="btn btn-neutral float-left" title="Porting a car model"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
<span><a href="../../car-porting/model-port/" style="color: #fcfcfc">« Previous</a></span>
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "../..";</script>
|
||||
<script src="../../js/theme_extra.js"></script>
|
||||
<script src="../../js/theme.js"></script>
|
||||
<script src="../../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 434 KiB |
@@ -0,0 +1,197 @@
|
||||
/*
|
||||
* Wrap inline code samples otherwise they shoot of the side and
|
||||
* can't be read at all.
|
||||
*
|
||||
* https://github.com/mkdocs/mkdocs/issues/313
|
||||
* https://github.com/mkdocs/mkdocs/issues/233
|
||||
* https://github.com/mkdocs/mkdocs/issues/834
|
||||
*/
|
||||
.rst-content code {
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
padding: 2px 5px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make code blocks display as blocks and give them the appropriate
|
||||
* font size and padding.
|
||||
*
|
||||
* https://github.com/mkdocs/mkdocs/issues/855
|
||||
* https://github.com/mkdocs/mkdocs/issues/834
|
||||
* https://github.com/mkdocs/mkdocs/issues/233
|
||||
*/
|
||||
.rst-content pre code {
|
||||
white-space: pre;
|
||||
word-wrap: normal;
|
||||
display: block;
|
||||
padding: 12px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix code colors
|
||||
*
|
||||
* https://github.com/mkdocs/mkdocs/issues/2027
|
||||
*/
|
||||
.rst-content code {
|
||||
color: #E74C3C;
|
||||
}
|
||||
|
||||
.rst-content pre code {
|
||||
color: #000;
|
||||
background: #f8f8f8;
|
||||
}
|
||||
|
||||
/*
|
||||
* Fix link colors when the link text is inline code.
|
||||
*
|
||||
* https://github.com/mkdocs/mkdocs/issues/718
|
||||
*/
|
||||
a code {
|
||||
color: #2980B9;
|
||||
}
|
||||
a:hover code {
|
||||
color: #3091d1;
|
||||
}
|
||||
a:visited code {
|
||||
color: #9B59B6;
|
||||
}
|
||||
|
||||
/*
|
||||
* The CSS classes from highlight.js seem to clash with the
|
||||
* ReadTheDocs theme causing some code to be incorrectly made
|
||||
* bold and italic.
|
||||
*
|
||||
* https://github.com/mkdocs/mkdocs/issues/411
|
||||
*/
|
||||
pre .cs, pre .c {
|
||||
font-weight: inherit;
|
||||
font-style: inherit;
|
||||
}
|
||||
|
||||
/*
|
||||
* Fix some issues with the theme and non-highlighted code
|
||||
* samples. Without and highlighting styles attached the
|
||||
* formatting is broken.
|
||||
*
|
||||
* https://github.com/mkdocs/mkdocs/issues/319
|
||||
*/
|
||||
.rst-content .no-highlight {
|
||||
display: block;
|
||||
padding: 0.5em;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Additions specific to the search functionality provided by MkDocs
|
||||
*/
|
||||
|
||||
.search-results {
|
||||
margin-top: 23px;
|
||||
}
|
||||
|
||||
.search-results article {
|
||||
border-top: 1px solid #E1E4E5;
|
||||
padding-top: 24px;
|
||||
}
|
||||
|
||||
.search-results article:first-child {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
form .search-query {
|
||||
width: 100%;
|
||||
border-radius: 50px;
|
||||
padding: 6px 12px;
|
||||
border-color: #D1D4D5;
|
||||
}
|
||||
|
||||
/*
|
||||
* Improve inline code blocks within admonitions.
|
||||
*
|
||||
* https://github.com/mkdocs/mkdocs/issues/656
|
||||
*/
|
||||
.rst-content .admonition code {
|
||||
color: #404040;
|
||||
border: 1px solid #c7c9cb;
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
background: #f8fbfd;
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
}
|
||||
|
||||
/*
|
||||
* Account for wide tables which go off the side.
|
||||
* Override borders to avoid weirdness on narrow tables.
|
||||
*
|
||||
* https://github.com/mkdocs/mkdocs/issues/834
|
||||
* https://github.com/mkdocs/mkdocs/pull/1034
|
||||
*/
|
||||
.rst-content .section .docutils {
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
display: block;
|
||||
border: none;
|
||||
}
|
||||
|
||||
td, th {
|
||||
border: 1px solid #e1e4e5 !important;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
/*
|
||||
* Without the following amendments, the navigation in the theme will be
|
||||
* slightly cut off. This is due to the fact that the .wy-nav-side has a
|
||||
* padding-bottom of 2em, which must not necessarily align with the font-size of
|
||||
* 90 % on the .rst-current-version container, combined with the padding of 12px
|
||||
* above and below. These amendments fix this in two steps: First, make sure the
|
||||
* .rst-current-version container has a fixed height of 40px, achieved using
|
||||
* line-height, and then applying a padding-bottom of 40px to this container. In
|
||||
* a second step, the items within that container are re-aligned using flexbox.
|
||||
*
|
||||
* https://github.com/mkdocs/mkdocs/issues/2012
|
||||
*/
|
||||
.wy-nav-side {
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
|
||||
/* For section-index only */
|
||||
.wy-menu-vertical .current-section p {
|
||||
background-color: #e3e3e3;
|
||||
color: #404040;
|
||||
}
|
||||
|
||||
/*
|
||||
* The second step of above amendment: Here we make sure the items are aligned
|
||||
* correctly within the .rst-current-version container. Using flexbox, we
|
||||
* achieve it in such a way that it will look like the following:
|
||||
*
|
||||
* [No repo_name]
|
||||
* Next >> // On the first page
|
||||
* << Previous Next >> // On all subsequent pages
|
||||
*
|
||||
* [With repo_name]
|
||||
* <repo_name> Next >> // On the first page
|
||||
* <repo_name> << Previous Next >> // On all subsequent pages
|
||||
*
|
||||
* https://github.com/mkdocs/mkdocs/issues/2012
|
||||
*/
|
||||
.rst-versions .rst-current-version {
|
||||
padding: 0 12px;
|
||||
display: flex;
|
||||
font-size: initial;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Please note that this amendment also involves removing certain inline-styles
|
||||
* from the file ./mkdocs/themes/readthedocs/versions.html.
|
||||
*
|
||||
* https://github.com/mkdocs/mkdocs/issues/2012
|
||||
*/
|
||||
.rst-current-version span {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
[data-tooltip] {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
border-bottom: 1px dotted black;
|
||||
}
|
||||
|
||||
[data-tooltip] .tooltip-content {
|
||||
width: max-content;
|
||||
max-width: 25em;
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
background-color: white;
|
||||
color: #404040;
|
||||
box-shadow: 0 4px 14px 0 rgba(0,0,0,.2), 0 0 0 1px rgba(0,0,0,.05);
|
||||
padding: 10px;
|
||||
font: 14px/1.5 Lato, proxima-nova, Helvetica Neue, Arial, sans-serif;
|
||||
text-decoration: none;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
transition: opacity 0.1s, visibility 0s;
|
||||
z-index: 1000;
|
||||
pointer-events: none; /* Prevent accidental interaction */
|
||||
}
|
||||
|
||||
[data-tooltip]:hover .tooltip-content {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
pointer-events: auto; /* Allow interaction when visible */
|
||||
}
|
||||
|
||||
.tooltip-content .tooltip-glossary-link {
|
||||
display: inline-block;
|
||||
margin-top: 8px;
|
||||
font-size: 12px;
|
||||
color: #007bff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.tooltip-content .tooltip-glossary-link:hover {
|
||||
color: #0056b3;
|
||||
text-decoration: underline;
|
||||
}
|
||||
@@ -0,0 +1,178 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/getting-started/what-is-openpilot/" />
|
||||
<link rel="shortcut icon" href="../../img/favicon.ico" />
|
||||
<title>What is openpilot? - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../../css/theme.css" />
|
||||
<link rel="stylesheet" href="../../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "What is openpilot?";
|
||||
var mkdocs_page_input_path = "getting-started/what-is-openpilot.md";
|
||||
var mkdocs_page_url = "/getting-started/what-is-openpilot/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="../.." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="reference internal current" href="#">What is openpilot?</a>
|
||||
<ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="#how-do-i-use-it">How do I use it?</a>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#how-does-it-work">How does it work?</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../.." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item">Getting Started</li>
|
||||
<li class="breadcrumb-item active">What is openpilot?</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/getting-started/what-is-openpilot.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="what-is-openpilot">What is openpilot?</h1>
|
||||
<p><a href="http://github.com/commaai/openpilot">openpilot</a> 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 <a href="https://github.com/commaai/openpilot/blob/master/docs/CARS.md">supported car makes, models, and model years</a>. In addition, while openpilot is engaged, a camera-based Driver Monitoring (DM) feature alerts distracted and asleep drivers. See more about <a href="https://github.com/commaai/openpilot/blob/master/docs/INTEGRATION.md">the vehicle integration</a> and <a href="https://github.com/commaai/openpilot/blob/master/docs/LIMITATIONS.md">limitations</a>.</p>
|
||||
<h2 id="how-do-i-use-it">How do I use it?</h2>
|
||||
<p>openpilot is designed to be used on the comma 3X.</p>
|
||||
<h2 id="how-does-it-work">How does it work?</h2>
|
||||
<p>In short, openpilot uses the car's existing APIs for the built-in <a href="https://en.wikipedia.org/wiki/Advanced_driver-assistance_system">ADAS</a> system and simply provides better acceleration, braking, and steering inputs than the stock system.</p>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
|
||||
<a href="../../how-to/turn-the-speed-blue/" class="btn btn-neutral float-right" title="Turn the speed blue">Next <span class="icon icon-circle-arrow-right"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
<span><a href="../../how-to/turn-the-speed-blue/" style="color: #fcfcfc">Next »</a></span>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "../..";</script>
|
||||
<script src="../../js/theme_extra.js"></script>
|
||||
<script src="../../js/theme.js"></script>
|
||||
<script src="../../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,68 @@
|
||||
import re
|
||||
import tomllib
|
||||
|
||||
def load_glossary(file_path="docs/glossary.toml"):
|
||||
with open(file_path, "rb") as f:
|
||||
glossary_data = tomllib.load(f)
|
||||
return glossary_data.get("glossary", {})
|
||||
|
||||
def generate_anchor_id(name):
|
||||
return name.replace(" ", "-").replace("_", "-").lower()
|
||||
|
||||
def format_markdown_term(name, definition):
|
||||
anchor_id = generate_anchor_id(name)
|
||||
markdown = f"* [**{name.replace('_', ' ').title()}**](#{anchor_id})"
|
||||
if definition.get("abbreviation"):
|
||||
markdown += f" *({definition['abbreviation']})*"
|
||||
if definition.get("description"):
|
||||
markdown += f": {definition['description']}\n"
|
||||
return markdown
|
||||
|
||||
def glossary_markdown(vocabulary):
|
||||
markdown = ""
|
||||
for category, terms in vocabulary.items():
|
||||
markdown += f"## {category.replace('_', ' ').title()}\n\n"
|
||||
for name, definition in terms.items():
|
||||
markdown += format_markdown_term(name, definition)
|
||||
return markdown
|
||||
|
||||
def format_tooltip_html(term_key, definition, html):
|
||||
display_term = term_key.replace("_", " ").title()
|
||||
clean_description = re.sub(r"\[(.+)]\(.+\)", r"\1", definition["description"])
|
||||
glossary_link = (
|
||||
f"<a href='/concepts/glossary#{term_key}' class='tooltip-glossary-link' title='View in glossary'>Glossary🔗</a>"
|
||||
)
|
||||
return re.sub(
|
||||
re.escape(display_term),
|
||||
lambda
|
||||
match: f"<span data-tooltip>{match.group(0)}<span class='tooltip-content'>{clean_description} {glossary_link}</span></span>",
|
||||
html,
|
||||
flags=re.IGNORECASE,
|
||||
)
|
||||
|
||||
def apply_tooltip(_term_key, _definition, pattern, html):
|
||||
return re.sub(
|
||||
pattern,
|
||||
lambda match: format_tooltip_html(_term_key, _definition, match.group(0)),
|
||||
html,
|
||||
flags=re.IGNORECASE,
|
||||
)
|
||||
|
||||
def tooltip_html(vocabulary, html):
|
||||
for _category, terms in vocabulary.items():
|
||||
for term_key, definition in terms.items():
|
||||
if definition.get("description"):
|
||||
pattern = rf"(?<!\w){re.escape(term_key.replace('_', ' ').title())}(?![^<]*<\/a>)(?!\([^)]*\))"
|
||||
html = apply_tooltip(term_key, definition, pattern, html)
|
||||
return html
|
||||
|
||||
# Page Hooks
|
||||
def on_page_markdown(markdown, **kwargs):
|
||||
glossary = load_glossary()
|
||||
return markdown.replace("{{GLOSSARY_DEFINITIONS}}", glossary_markdown(glossary))
|
||||
|
||||
def on_page_content(html, **kwargs):
|
||||
if kwargs.get("page").title == "Glossary":
|
||||
return html
|
||||
glossary = load_glossary()
|
||||
return tooltip_html(glossary, html)
|
||||
@@ -0,0 +1,264 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/how-to/connect-to-comma/" />
|
||||
<link rel="shortcut icon" href="../../img/favicon.ico" />
|
||||
<title>Connect to a comma 3X - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../../css/theme.css" />
|
||||
<link rel="stylesheet" href="../../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Connect to a comma 3X";
|
||||
var mkdocs_page_input_path = "how-to/connect-to-comma.md";
|
||||
var mkdocs_page_url = "/how-to/connect-to-comma/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="../.." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="../turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1 current"><a class="reference internal current" href="#">Connect to a comma 3X</a>
|
||||
<ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="#serial-console">Serial Console</a>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#ssh">SSH</a>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#adb">ADB</a>
|
||||
<ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#notes">Notes</a>
|
||||
</li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#one-off-connection">One-off connection</a>
|
||||
</li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#sshcommaai-host-key-fingerprint">ssh.comma.ai host key fingerprint</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../.." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item">How-to</li>
|
||||
<li class="breadcrumb-item active">Connect to a comma 3X</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/how-to/connect-to-comma.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="connect-to-a-comma-3x">connect to a comma 3X</h1>
|
||||
<p>A comma 3X is a normal <a href="https://github.com/commaai/agnos-builder">Linux</a> computer that exposes <a href="https://wiki.archlinux.org/title/Secure_Shell">SSH</a> and a <a href="https://wiki.archlinux.org/title/Working_with_the_serial_console">serial console</a>.</p>
|
||||
<h2 id="serial-console">Serial Console</h2>
|
||||
<p>On both the comma three and 3X, the serial console is accessible from the main OBD-C port.
|
||||
Connect the comma 3X to your computer with a normal USB C cable, or use a <a href="https://comma.ai/shop/comma-serial">comma serial</a> for steady 12V power.</p>
|
||||
<p>On the comma three, the serial console is exposed through a UART-to-USB chip, and <code>tools/scripts/serial.sh</code> can be used to connect.</p>
|
||||
<p>On the comma 3X, the serial console is accessible through the <a href="https://github.com/commaai/panda">panda</a> using the <code>panda/tests/som_debug.sh</code> script.</p>
|
||||
<ul>
|
||||
<li>Username: <code>comma</code></li>
|
||||
<li>Password: <code>comma</code></li>
|
||||
</ul>
|
||||
<h2 id="ssh">SSH</h2>
|
||||
<p>In order to SSH into your device, you'll need a GitHub account with SSH keys. See this <a href="https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh">GitHub article</a> for getting your account setup with SSH keys.</p>
|
||||
<ul>
|
||||
<li>Enable SSH in your device's settings</li>
|
||||
<li>Enter your GitHub username in the device's settings</li>
|
||||
<li>Connect to your device<ul>
|
||||
<li>Username: <code>comma</code></li>
|
||||
<li>Port: <code>22</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Here's an example command for connecting to your device using its tethered connection:<br />
|
||||
<code>ssh comma@192.168.43.1</code></p>
|
||||
<p>For doing development work on device, it's recommended to use <a href="https://docs.github.com/en/developers/overview/using-ssh-agent-forwarding">SSH agent forwarding</a>.</p>
|
||||
<h2 id="adb">ADB</h2>
|
||||
<p>In order to use ADB on your device, you'll need to perform the following steps using the image below for reference:</p>
|
||||
<p><img alt="comma 3/3x back" src="../../assets/three-back.svg" /></p>
|
||||
<ul>
|
||||
<li>Plug your device into constant power using port 2, letting the device boot up</li>
|
||||
<li>Enable ADB in your device's settings</li>
|
||||
<li>Plug in your device to your PC using port 1</li>
|
||||
<li>Connect to your device<ul>
|
||||
<li><code>adb shell</code> over USB</li>
|
||||
<li><code>adb connect</code> over WiFi</li>
|
||||
<li>Here's an example command for connecting to your device using its tethered connection: <code>adb connect 192.168.43.1:5555</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>[!NOTE]
|
||||
The default port for ADB is 5555 on the comma 3X.</p>
|
||||
</blockquote>
|
||||
<p>For more info on ADB, see the <a href="https://developer.android.com/tools/adb">Android Debug Bridge (ADB) documentation</a>.</p>
|
||||
<h3 id="notes">Notes</h3>
|
||||
<p>The public keys are only fetched from your GitHub account once. In order to update your device's authorized keys, you'll need to re-enter your GitHub username.</p>
|
||||
<p>The <code>id_rsa</code> key in this directory only works while your device is in the setup state with no software installed. After installation, that default key will be removed.</p>
|
||||
<h4 id="sshcommaai-proxy">ssh.comma.ai proxy</h4>
|
||||
<p>With a <a href="https://comma.ai/connect">comma prime subscription</a>, you can SSH into your comma device from anywhere.</p>
|
||||
<p>With the below SSH configuration, you can type <code>ssh comma-{dongleid}</code> to connect to your device through <code>ssh.comma.ai</code>.</p>
|
||||
<pre><code>Host comma-*
|
||||
Port 22
|
||||
User comma
|
||||
IdentityFile ~/.ssh/my_github_key
|
||||
ProxyCommand ssh %h@ssh.comma.ai -W %h:%p
|
||||
|
||||
Host ssh.comma.ai
|
||||
Hostname ssh.comma.ai
|
||||
Port 22
|
||||
IdentityFile ~/.ssh/my_github_key
|
||||
</code></pre>
|
||||
<h3 id="one-off-connection">One-off connection</h3>
|
||||
<pre><code>ssh -i ~/.ssh/my_github_key -o ProxyCommand="ssh -i ~/.ssh/my_github_key -W %h:%p -p %p %h@ssh.comma.ai" comma@ffffffffffffffff
|
||||
</code></pre>
|
||||
<p>(Replace <code>ffffffffffffffff</code> with your dongle_id)</p>
|
||||
<h3 id="sshcommaai-host-key-fingerprint">ssh.comma.ai host key fingerprint</h3>
|
||||
<pre><code>Host key fingerprint is SHA256:X22GOmfjGb9J04IA2+egtdaJ7vW9Fbtmpz9/x8/W1X4
|
||||
+---[RSA 4096]----+
|
||||
| |
|
||||
| |
|
||||
| . |
|
||||
| + o |
|
||||
| S = + +..|
|
||||
| + @ = .=|
|
||||
| . B @ ++=|
|
||||
| o * B XE|
|
||||
| .o o OB/|
|
||||
+----[SHA256]-----+
|
||||
</code></pre>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
|
||||
<a href="../turn-the-speed-blue/" class="btn btn-neutral float-left" title="Turn the speed blue"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
||||
<a href="../../concepts/logs/" class="btn btn-neutral float-right" title="Logs">Next <span class="icon icon-circle-arrow-right"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
<span><a href="../turn-the-speed-blue/" style="color: #fcfcfc">« Previous</a></span>
|
||||
|
||||
|
||||
<span><a href="../../concepts/logs/" style="color: #fcfcfc">Next »</a></span>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "../..";</script>
|
||||
<script src="../../js/theme_extra.js"></script>
|
||||
<script src="../../js/theme.js"></script>
|
||||
<script src="../../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,171 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/how-to/replay-a-drive/" />
|
||||
<link rel="shortcut icon" href="../../img/favicon.ico" />
|
||||
<title>Replay - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../../css/theme.css" />
|
||||
<link rel="stylesheet" href="../../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Replay";
|
||||
var mkdocs_page_input_path = "how-to/replay-a-drive.md";
|
||||
var mkdocs_page_url = "/how-to/replay-a-drive/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="../.." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../.." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item active">Replay</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/how-to/replay-a-drive.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="replay">Replay</h1>
|
||||
<p>Replaying is a critical tool for openpilot development and debugging.</p>
|
||||
<h2 id="replaying-a-route">Replaying a route</h2>
|
||||
<p><em>Hardware required: none</em></p>
|
||||
<p>Just run <code>tools/replay/replay --demo</code>.</p>
|
||||
<h2 id="replaying-can-data">Replaying CAN data</h2>
|
||||
<p><em>Hardware required: jungle and comma 3X</em></p>
|
||||
<ol>
|
||||
<li>Connect your PC to a jungle.
|
||||
2.</li>
|
||||
</ol>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "../..";</script>
|
||||
<script src="../../js/theme_extra.js"></script>
|
||||
<script src="../../js/theme.js"></script>
|
||||
<script src="../../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,255 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://docs.comma.ai/how-to/turn-the-speed-blue/" />
|
||||
<link rel="shortcut icon" href="../../img/favicon.ico" />
|
||||
<title>Turn the speed blue - openpilot docs</title>
|
||||
<link rel="stylesheet" href="../../css/theme.css" />
|
||||
<link rel="stylesheet" href="../../css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="../../css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "Turn the speed blue";
|
||||
var mkdocs_page_input_path = "how-to/turn-the-speed-blue.md";
|
||||
var mkdocs_page_url = "/how-to/turn-the-speed-blue/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="../.." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="reference internal current" href="#">Turn the speed blue</a>
|
||||
<ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="#1-set-up-your-development-environment">1. Set up your development environment</a>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#2-run-replay">2. Run replay</a>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#3-make-the-speed-blue">3. Make the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#4-rebuild-the-ui">4. Rebuild the UI</a>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#5-push-your-fork-to-github">5. Push your fork to GitHub</a>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#6-run-your-fork-on-your-comma-device">6. Run your fork on your comma device</a>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#7-admire-your-work-irl">7. Admire your work IRL 🚗💨</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../..">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../.." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item">How-to</li>
|
||||
<li class="breadcrumb-item active">Turn the speed blue</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/how-to/turn-the-speed-blue.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="turn-the-speed-blue">Turn the speed blue</h1>
|
||||
<p><em>A getting started guide for openpilot development</em></p>
|
||||
<p>In 30 minutes, we'll get an openpilot development environment set up on your computer and make some changes to openpilot's UI.</p>
|
||||
<p>And if you have a comma 3X, we'll deploy the change to your device for testing.</p>
|
||||
<h2 id="1-set-up-your-development-environment">1. Set up your development environment</h2>
|
||||
<p>Run this to clone openpilot and install all the dependencies:</p>
|
||||
<pre><code class="language-bash">bash <(curl -fsSL openpilot.comma.ai)
|
||||
</code></pre>
|
||||
<p>Navigate to openpilot folder & activate a Python virtual environment</p>
|
||||
<pre><code class="language-bash">cd openpilot
|
||||
source .venv/bin/activate
|
||||
</code></pre>
|
||||
<p>Then, compile openpilot:</p>
|
||||
<pre><code class="language-bash">scons -j$(nproc)
|
||||
</code></pre>
|
||||
<h2 id="2-run-replay">2. Run replay</h2>
|
||||
<p>We'll run the <code>replay</code> tool with the demo route to get data streaming for testing our UI changes.</p>
|
||||
<pre><code class="language-bash"># in terminal 1
|
||||
tools/replay/replay --demo
|
||||
|
||||
# in terminal 2
|
||||
selfdrive/ui/ui
|
||||
</code></pre>
|
||||
<p>The openpilot UI should launch and show a replay of the demo route.</p>
|
||||
<p>If you have your own comma device, you can replace <code>--demo</code> with one of your own routes from comma connect.</p>
|
||||
<h2 id="3-make-the-speed-blue">3. Make the speed blue</h2>
|
||||
<p>Now let’s update the speed display color in the UI.</p>
|
||||
<p>Search for the function responsible for rendering UI text:</p>
|
||||
<pre><code class="language-bash">git grep "drawText" selfdrive/ui/qt/onroad/hud.cc
|
||||
</code></pre>
|
||||
<p>You’ll find the relevant code inside <code>selfdrive/ui/qt/onroad/hud.cc</code>, in this function:</p>
|
||||
<pre><code class="language-cpp">void HudRenderer::drawText(QPainter &p, int x, int y, const QString &text, int alpha) {
|
||||
QRect real_rect = p.fontMetrics().boundingRect(text);
|
||||
real_rect.moveCenter({x, y - real_rect.height() / 2});
|
||||
|
||||
p.setPen(QColor(0xff, 0xff, 0xff, alpha)); // <- this sets the speed text color
|
||||
p.drawText(real_rect.x(), real_rect.bottom(), text);
|
||||
}
|
||||
</code></pre>
|
||||
<p>Change the <code>QColor(...)</code> line to make it <strong>blue</strong> instead of white. A nice soft blue is <code>#8080FF</code>, which translates to:</p>
|
||||
<pre><code class="language-diff">- p.setPen(QColor(0xff, 0xff, 0xff, alpha));
|
||||
+ p.setPen(QColor(0x80, 0x80, 0xFF, alpha));
|
||||
</code></pre>
|
||||
<p>This change will tint all speed-related UI text to blue with the same transparency (<code>alpha</code>).</p>
|
||||
<hr />
|
||||
<h2 id="4-rebuild-the-ui">4. Rebuild the UI</h2>
|
||||
<p>After making changes, rebuild Openpilot so your new UI is compiled:</p>
|
||||
<pre><code class="language-bash">scons -j$(nproc) && selfdrive/ui/ui
|
||||
</code></pre>
|
||||
<p><img alt="" src="https://blog.comma.ai/img/blue_speed_ui.png" /></p>
|
||||
<p>You should now see the speed displayed in a nice blue shade during the demo replay.</p>
|
||||
<hr />
|
||||
<h2 id="5-push-your-fork-to-github">5. Push your fork to GitHub</h2>
|
||||
<p>Click <strong>"Fork"</strong> on the <a href="https://github.com/commaai/openpilot">Openpilot GitHub repo</a>. Then push with:</p>
|
||||
<pre><code class="language-bash">git remote rm origin
|
||||
git remote add origin git@github.com:<your-github-username>/openpilot.git
|
||||
git add .
|
||||
git commit -m "Make the speed display blue"
|
||||
git push --set-upstream origin master
|
||||
</code></pre>
|
||||
<hr />
|
||||
<h2 id="6-run-your-fork-on-your-comma-device">6. Run your fork on your comma device</h2>
|
||||
<p>Uninstall Openpilot through the settings on your device.</p>
|
||||
<p>Then reinstall using your own GitHub-hosted fork:</p>
|
||||
<pre><code>installer.comma.ai/<your-github-username>/master
|
||||
</code></pre>
|
||||
<hr />
|
||||
<h2 id="7-admire-your-work-irl">7. Admire your work IRL 🚗💨</h2>
|
||||
<p>You’ve now successfully modified Openpilot’s UI and deployed it to your own car!</p>
|
||||
<p><img alt="" src="https://blog.comma.ai/img/c3_blue_ui.jpg" /></p>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
|
||||
<a href="../../getting-started/what-is-openpilot/" class="btn btn-neutral float-left" title="What is openpilot?"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
||||
<a href="../connect-to-comma/" class="btn btn-neutral float-right" title="Connect to a comma 3X">Next <span class="icon icon-circle-arrow-right"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
<span><a href="../../getting-started/what-is-openpilot/" style="color: #fcfcfc">« Previous</a></span>
|
||||
|
||||
|
||||
<span><a href="../connect-to-comma/" style="color: #fcfcfc">Next »</a></span>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="../../js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = "../..";</script>
|
||||
<script src="../../js/theme_extra.js"></script>
|
||||
<script src="../../js/theme.js"></script>
|
||||
<script src="../../search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,171 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="description" content="None" /><link rel="canonical" href="https://docs.comma.ai/" />
|
||||
<link rel="shortcut icon" href="img/favicon.ico" />
|
||||
<title>openpilot docs</title>
|
||||
<link rel="stylesheet" href="css/theme.css" />
|
||||
<link rel="stylesheet" href="css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<script>
|
||||
// Current page data
|
||||
var mkdocs_page_name = "What is openpilot?";
|
||||
var mkdocs_page_input_path = "index.md";
|
||||
var mkdocs_page_url = "/";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="./search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href=".">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="breadcrumb-item active">What is openpilot?</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/commaai/openpilot/edit/master/docs/index.md" class="icon icon-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
<h1 id="what-is-openpilot">What is openpilot?</h1>
|
||||
<p><a href="http://github.com/commaai/openpilot">openpilot</a> 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 <a href="https://github.com/commaai/openpilot/blob/master/docs/CARS.md">supported car makes, models, and model years</a>. In addition, while openpilot is engaged, a camera-based Driver Monitoring (DM) feature alerts distracted and asleep drivers. See more about <a href="https://github.com/commaai/openpilot/blob/master/docs/INTEGRATION.md">the vehicle integration</a> and <a href="https://github.com/commaai/openpilot/blob/master/docs/LIMITATIONS.md">limitations</a>.</p>
|
||||
<h2 id="how-do-i-use-it">How do I use it?</h2>
|
||||
<p>openpilot is designed to be used on the comma 3X.</p>
|
||||
<h2 id="how-does-it-work">How does it work?</h2>
|
||||
<p>In short, openpilot uses the car's existing APIs for the built-in <a href="https://en.wikipedia.org/wiki/Advanced_driver-assistance_system">ADAS</a> system and simply provides better acceleration, braking, and steering inputs than the stock system.</p>
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = ".";</script>
|
||||
<script src="js/theme_extra.js"></script>
|
||||
<script src="js/theme.js"></script>
|
||||
<script src="search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<!--
|
||||
MkDocs version : 1.6.1
|
||||
Build Date UTC : 2025-10-07 18:39:19.809558+00:00
|
||||
-->
|
||||
@@ -0,0 +1,4 @@
|
||||
/**
|
||||
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
||||
*/
|
||||
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);
|
||||
@@ -0,0 +1,8 @@
|
||||
/*
|
||||
* Assign 'docutils' class to tables so styling and
|
||||
* JavaScript behavior is applied.
|
||||
*
|
||||
* https://github.com/mkdocs/mkdocs/issues/2028
|
||||
*/
|
||||
|
||||
$('div.rst-content table').addClass('docutils');
|
||||
@@ -0,0 +1,163 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="shortcut icon" href="./img/favicon.ico" />
|
||||
<title>openpilot docs</title>
|
||||
<link rel="stylesheet" href="./css/theme.css" />
|
||||
<link rel="stylesheet" href="./css/theme_extra.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
||||
<link href="./css/tooltip.css" rel="stylesheet" />
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="./js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<a href="./." class="icon icon-home"> openpilot docs
|
||||
</a><div role="search">
|
||||
<form id ="rtd-search-form" class="wy-form" action="./search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="./getting-started/what-is-openpilot/">What is openpilot?</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">How-to</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="./how-to/turn-the-speed-blue/">Turn the speed blue</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="./how-to/connect-to-comma/">Connect to a comma 3X</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Concepts</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="./concepts/logs/">Logs</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="./concepts/safety/">Safety</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="./concepts/glossary/">Glossary</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Car Porting</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="./car-porting/what-is-a-car-port/">What is a car port?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="./car-porting/brand-port/">Porting a car brand</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="./car-porting/model-port/">Porting a car model</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="./contributing/roadmap/">Roadmap</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contributing Guide →</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Links</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="" href="https://blog.comma.ai">Blog →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://comma.ai/bounties">Bounties →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://github.com/commaai">GitHub →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://discord.comma.ai">Discord →</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="" href="https://x.com/comma_ai">X →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="./.">openpilot docs</a>
|
||||
|
||||
</nav>
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="./." class="icon icon-home" aria-label="Docs"></a></li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div class="section" itemprop="articleBody">
|
||||
|
||||
|
||||
<h1 id="search">Search Results</h1>
|
||||
|
||||
<form id="content_search" action="search.html">
|
||||
<span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span>
|
||||
<input name="q" id="mkdocs-search-query" type="text" class="search_input search-query ui-autocomplete-input" placeholder="Search the Docs" aria-label="Search the Docs" autocomplete="off" autofocus title="Type search term here">
|
||||
</form>
|
||||
|
||||
<div id="mkdocs-search-results" class="search-results" data-no-results-text="No results found">
|
||||
Searching...
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div><footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<!-- Copyright etc -->
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rst-versions" role="note" aria-label="Versions">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
|
||||
<span>
|
||||
<a href="https://github.com/commaai/openpilot/" class="fa fa-github" style="color: #fcfcfc"> GitHub</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<script src="./js/jquery-3.6.0.min.js"></script>
|
||||
<script>var base_url = ".";</script>
|
||||
<script src="./js/theme_extra.js"></script>
|
||||
<script src="./js/theme.js"></script>
|
||||
<script src="./search/main.js"></script>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,109 @@
|
||||
function getSearchTermFromLocation() {
|
||||
var sPageURL = window.location.search.substring(1);
|
||||
var sURLVariables = sPageURL.split('&');
|
||||
for (var i = 0; i < sURLVariables.length; i++) {
|
||||
var sParameterName = sURLVariables[i].split('=');
|
||||
if (sParameterName[0] == 'q') {
|
||||
return decodeURIComponent(sParameterName[1].replace(/\+/g, '%20'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function joinUrl (base, path) {
|
||||
if (path.substring(0, 1) === "/") {
|
||||
// path starts with `/`. Thus it is absolute.
|
||||
return path;
|
||||
}
|
||||
if (base.substring(base.length-1) === "/") {
|
||||
// base ends with `/`
|
||||
return base + path;
|
||||
}
|
||||
return base + "/" + path;
|
||||
}
|
||||
|
||||
function escapeHtml (value) {
|
||||
return value.replace(/&/g, '&')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>');
|
||||
}
|
||||
|
||||
function formatResult (location, title, summary) {
|
||||
return '<article><h3><a href="' + joinUrl(base_url, location) + '">'+ escapeHtml(title) + '</a></h3><p>' + escapeHtml(summary) +'</p></article>';
|
||||
}
|
||||
|
||||
function displayResults (results) {
|
||||
var search_results = document.getElementById("mkdocs-search-results");
|
||||
while (search_results.firstChild) {
|
||||
search_results.removeChild(search_results.firstChild);
|
||||
}
|
||||
if (results.length > 0){
|
||||
for (var i=0; i < results.length; i++){
|
||||
var result = results[i];
|
||||
var html = formatResult(result.location, result.title, result.summary);
|
||||
search_results.insertAdjacentHTML('beforeend', html);
|
||||
}
|
||||
} else {
|
||||
var noResultsText = search_results.getAttribute('data-no-results-text');
|
||||
if (!noResultsText) {
|
||||
noResultsText = "No results found";
|
||||
}
|
||||
search_results.insertAdjacentHTML('beforeend', '<p>' + noResultsText + '</p>');
|
||||
}
|
||||
}
|
||||
|
||||
function doSearch () {
|
||||
var query = document.getElementById('mkdocs-search-query').value;
|
||||
if (query.length > min_search_length) {
|
||||
if (!window.Worker) {
|
||||
displayResults(search(query));
|
||||
} else {
|
||||
searchWorker.postMessage({query: query});
|
||||
}
|
||||
} else {
|
||||
// Clear results for short queries
|
||||
displayResults([]);
|
||||
}
|
||||
}
|
||||
|
||||
function initSearch () {
|
||||
var search_input = document.getElementById('mkdocs-search-query');
|
||||
if (search_input) {
|
||||
search_input.addEventListener("keyup", doSearch);
|
||||
}
|
||||
var term = getSearchTermFromLocation();
|
||||
if (term) {
|
||||
search_input.value = term;
|
||||
doSearch();
|
||||
}
|
||||
}
|
||||
|
||||
function onWorkerMessage (e) {
|
||||
if (e.data.allowSearch) {
|
||||
initSearch();
|
||||
} else if (e.data.results) {
|
||||
var results = e.data.results;
|
||||
displayResults(results);
|
||||
} else if (e.data.config) {
|
||||
min_search_length = e.data.config.min_search_length-1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!window.Worker) {
|
||||
console.log('Web Worker API not supported');
|
||||
// load index in main thread
|
||||
$.getScript(joinUrl(base_url, "search/worker.js")).done(function () {
|
||||
console.log('Loaded worker');
|
||||
init();
|
||||
window.postMessage = function (msg) {
|
||||
onWorkerMessage({data: msg});
|
||||
};
|
||||
}).fail(function (jqxhr, settings, exception) {
|
||||
console.error('Could not load worker.js');
|
||||
});
|
||||
} else {
|
||||
// Wrap search in a web worker
|
||||
var searchWorker = new Worker(joinUrl(base_url, "search/worker.js"));
|
||||
searchWorker.postMessage({init: true});
|
||||
searchWorker.onmessage = onWorkerMessage;
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
var base_path = 'function' === typeof importScripts ? '.' : '/search/';
|
||||
var allowSearch = false;
|
||||
var index;
|
||||
var documents = {};
|
||||
var lang = ['en'];
|
||||
var data;
|
||||
|
||||
function getScript(script, callback) {
|
||||
console.log('Loading script: ' + script);
|
||||
$.getScript(base_path + script).done(function () {
|
||||
callback();
|
||||
}).fail(function (jqxhr, settings, exception) {
|
||||
console.log('Error: ' + exception);
|
||||
});
|
||||
}
|
||||
|
||||
function getScriptsInOrder(scripts, callback) {
|
||||
if (scripts.length === 0) {
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
getScript(scripts[0], function() {
|
||||
getScriptsInOrder(scripts.slice(1), callback);
|
||||
});
|
||||
}
|
||||
|
||||
function loadScripts(urls, callback) {
|
||||
if( 'function' === typeof importScripts ) {
|
||||
importScripts.apply(null, urls);
|
||||
callback();
|
||||
} else {
|
||||
getScriptsInOrder(urls, callback);
|
||||
}
|
||||
}
|
||||
|
||||
function onJSONLoaded () {
|
||||
data = JSON.parse(this.responseText);
|
||||
var scriptsToLoad = ['lunr.js'];
|
||||
if (data.config && data.config.lang && data.config.lang.length) {
|
||||
lang = data.config.lang;
|
||||
}
|
||||
if (lang.length > 1 || lang[0] !== "en") {
|
||||
scriptsToLoad.push('lunr.stemmer.support.js');
|
||||
if (lang.length > 1) {
|
||||
scriptsToLoad.push('lunr.multi.js');
|
||||
}
|
||||
if (lang.includes("ja") || lang.includes("jp")) {
|
||||
scriptsToLoad.push('tinyseg.js');
|
||||
}
|
||||
for (var i=0; i < lang.length; i++) {
|
||||
if (lang[i] != 'en') {
|
||||
scriptsToLoad.push(['lunr', lang[i], 'js'].join('.'));
|
||||
}
|
||||
}
|
||||
}
|
||||
loadScripts(scriptsToLoad, onScriptsLoaded);
|
||||
}
|
||||
|
||||
function onScriptsLoaded () {
|
||||
console.log('All search scripts loaded, building Lunr index...');
|
||||
if (data.config && data.config.separator && data.config.separator.length) {
|
||||
lunr.tokenizer.separator = new RegExp(data.config.separator);
|
||||
}
|
||||
|
||||
if (data.index) {
|
||||
index = lunr.Index.load(data.index);
|
||||
data.docs.forEach(function (doc) {
|
||||
documents[doc.location] = doc;
|
||||
});
|
||||
console.log('Lunr pre-built index loaded, search ready');
|
||||
} else {
|
||||
index = lunr(function () {
|
||||
if (lang.length === 1 && lang[0] !== "en" && lunr[lang[0]]) {
|
||||
this.use(lunr[lang[0]]);
|
||||
} else if (lang.length > 1) {
|
||||
this.use(lunr.multiLanguage.apply(null, lang)); // spread operator not supported in all browsers: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator#Browser_compatibility
|
||||
}
|
||||
this.field('title');
|
||||
this.field('text');
|
||||
this.ref('location');
|
||||
|
||||
for (var i=0; i < data.docs.length; i++) {
|
||||
var doc = data.docs[i];
|
||||
this.add(doc);
|
||||
documents[doc.location] = doc;
|
||||
}
|
||||
});
|
||||
console.log('Lunr index built, search ready');
|
||||
}
|
||||
allowSearch = true;
|
||||
postMessage({config: data.config});
|
||||
postMessage({allowSearch: allowSearch});
|
||||
}
|
||||
|
||||
function init () {
|
||||
var oReq = new XMLHttpRequest();
|
||||
oReq.addEventListener("load", onJSONLoaded);
|
||||
var index_path = base_path + '/search_index.json';
|
||||
if( 'function' === typeof importScripts ){
|
||||
index_path = 'search_index.json';
|
||||
}
|
||||
oReq.open("GET", index_path);
|
||||
oReq.send();
|
||||
}
|
||||
|
||||
function search (query) {
|
||||
if (!allowSearch) {
|
||||
console.error('Assets for search still loading');
|
||||
return;
|
||||
}
|
||||
|
||||
var resultDocuments = [];
|
||||
var results = index.search(query);
|
||||
for (var i=0; i < results.length; i++){
|
||||
var result = results[i];
|
||||
doc = documents[result.ref];
|
||||
doc.summary = doc.text.substring(0, 200);
|
||||
resultDocuments.push(doc);
|
||||
}
|
||||
return resultDocuments;
|
||||
}
|
||||
|
||||
if( 'function' === typeof importScripts ) {
|
||||
onmessage = function (e) {
|
||||
if (e.data.init) {
|
||||
init();
|
||||
} else if (e.data.query) {
|
||||
postMessage({ results: search(e.data.query) });
|
||||
} else {
|
||||
console.error("Worker - Unrecognized message: " + e);
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/CARS/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/CONTRIBUTING/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/DEBUGGING_SAFETY/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/INTEGRATION/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/LIMITATIONS/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/SAFETY/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/car-porting/brand-port/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/car-porting/model-port/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/car-porting/what-is-a-car-port/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/concepts/glossary/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/concepts/logs/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/concepts/safety/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/contributing/architecture/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/contributing/roadmap/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/getting-started/what-is-openpilot/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/how-to/connect-to-comma/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/how-to/replay-a-drive/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.comma.ai/how-to/turn-the-speed-blue/</loc>
|
||||
<lastmod>2025-10-07</lastmod>
|
||||
</url>
|
||||
</urlset>
|
||||