首页
/ openpilot 使用与部署完全指南:一个升级 300+ 车型驾驶辅助系统的机器人操作系统

openpilot 使用与部署完全指南:一个升级 300+ 车型驾驶辅助系统的机器人操作系统

2026-09-04 21:19:48作者:董宙帆

openpilot 被定义为一个"机器人操作系统"(operating system for robotics),当前核心能力是将 300+ 款车型的原车驾驶辅助系统升级为具备自适应巡航(ACC)与自动车道居中(ALC)的辅助驾驶系统。本文以仓库根目录的 README.md 为主体骨架,结合 docs/SAFETY.mddocs/INTEGRATION.mddocs/LIMITATIONS.md 与 CI 配置等仓库资源,完整覆盖车辆端部署(设备、分支、线束)、开发环境搭建、安全测试体系、数据与许可政策,帮助你在真实车辆上运行 openpilot 或在本地搭建开发环境并理解其工程约束。

一、openpilot 是什么

README 的第一句定位即:openpilot is an operating system for robotics,当前它升级 300+ 支持车型的驾驶辅助系统。更具体地说,docs/index.md 中说明:openpilot 完成自适应巡航(ACC)、自动车道居中(ALC)、前向碰撞预警(FCW)、车道偏离预警(LDW)四类功能,并在系统激活时通过摄像头对驾驶员进行驾驶员监控(Driver Monitoring, DM),对分心与疲劳驾驶的司机发出提醒。

它的工作方式并非重写整车 ECU,而是复用车辆已有的 ADAS 接口。docs/INTEGRATION.md 明确了与原厂功能的替换关系:

  • 在所有支持车型上:原厂 LKA/ALC 被 openpilot ALC 替换(仅当用户激活 openpilot 时生效),原厂 LDW 被 openpilot LDW 替换;
  • 在特定支持车型上(见 docs/CARS.md 的 ACC 列):原厂 ACC 被 openpilot ACC 替换,openpilot FCW 与原车 FCW 并存叠加;
  • openpilot 应保留车辆所有其他原厂功能,包括但不限于 AEB(自动紧急制动)、自动远光、盲区预警、侧碰预警。

安全边界方面,docs/SAFETY.md 指出 openpilot 是一个"失效安全被动系统"(failsafe passive system),驾驶员必须时刻保持警觉;其设计遵循 ISO 26262 指南与 NHTSA 相关文件,对安全相关代码强加 MISRA C:2012 等编码规范,并在每次发版前执行软件在环(SITL)、硬件在环(HITL)与实车测试。

二、在车辆中运行 openpilot 的四个要素

README 将车辆端部署归纳为四个必备要素:

  1. 支持的设备(Supported Device):comma four(comma 官方销售的硬件盒子);
  2. 软件(Software):comma four 的初始设置流程允许用户输入自定义软件 URL,安装正式版使用 URL openpilot.comma.ai
  3. 支持的车型(Supported Car):确认车辆处于 docs/CARS.md 列出的支持名单中;
  4. 车辆线束(Car Harness):需要一条对应车型的车线,用于将 comma four 连接到车辆 CAN 网络。

该文件由 openpilot/selfdrive/car/CARS_template.md 模板自动生成(文件头注释标明 AUTOGENERATED),当前版本列出 335 款支持车型,按品牌-车型-年款组织,每款车标注支持配置(Supported Package)、ACC 提供方式(openpilot/Stock/openpilot available)、低速禁用阈值(No ACC accel below / No ALC below)、方向盘力矩与停车恢复能力(星标表示)、所需硬件清单(连接器型号、OBD-C 线缆、comma four、harness box、mount 等)。以其中一行为例:Chevrolet Equinox 2019-22, Adaptive Cruise Control (ACC) 需要 GM 连接器、2 英尺 OBD-C 线缆、harness box 与 mount,ACC 由 openpilot 提供(openpilot available)。

README 同时说明:comma four 之外也可以在其他硬件上运行 openpilot,但不再是即插即用(plug-and-play),安装线束与设备的详细步骤以官方 setup 文档为准。

分支与安装 URL

直接在车上跑 master 和其他开发分支是被支持的,但 README 推荐运行以下预构建分支:

comma four / comma 3X 分支:

comma four 分支 comma 3X 分支 URL 说明
release-mici release-tizi openpilot.comma.ai openpilot 正式发布分支
release-mici-staging release-tizi-staging openpilot-test.comma.ai 发布前的 staging 分支,可提前拿到新 release
nightly nightly openpilot-nightly.comma.ai 尖端开发分支,不保证稳定
nightly-dev nightly-dev installer.comma.ai/commaai/nightly-dev 与 nightly 相同,但包含部分车型的实验性开发功能

chestnut 设备专用安装 URL:

分支 URL 说明
release-chestnut installer.comma.ai/commaai/release-chestnut 正式发布分支
release-chestnut-staging installer.comma.ai/commaai/release-chestnut-staging 发布 staging 分支
nightly-chestnut installer.comma.ai/commaai/nightly-chestnut 尖端开发分支,不保证稳定
nightly-chestnut-dev installer.comma.ai/commaai/nightly-chestnut-dev nightly + 部分车型实验功能

分支命名中的 mici/tizi/chestnut 对应三代硬件代号,仓库内 openpilot/selfdrive/assets/ 下亦存在 icons_mici/ 等按硬件区分的资源目录,openpilot/system/hardware/ 下则有 chestnut/comma/tici/ 分硬件的配置文件,印证了按硬件分支管理的结构。

快速开始

README 给出的开发侧快速开始命令为一行:

bash <(curl -fsSL openpilot.comma.ai)

该命令下载并执行 comma 提供的安装引导脚本(用于在开发机上克隆仓库并初始化环境),其入口逻辑最终会落到仓库自带的 launch_openpilot.sh,该脚本转发到 launch_chffrplus.sh

三、开发环境搭建与运行

tools/README.md 给出官方开发环境说明:

  • 系统要求:openpilot 的开发与测试目标是 Ubuntu 24.04(除嵌入式硬件外的主要开发平台);macOS 上大部分功能可原生运行;Windows 建议使用 WSL(WSL 2 体验较无缝,UI/仿真性能不佳时可设置 GALLIUM_DRIVER=d3d12 启用硬件加速)。

标准原生搭建流程(Ubuntu 24.04 / macOS):

1. 克隆仓库

git clone https://github.com/commaai/openpilot.git

2. 运行 setup 脚本

cd openpilot
tools/op.sh setup

3. 激活 Python 虚拟环境

source .venv/bin/activate

4. 构建 openpilot

scons -u

仓库根目录的 SConstruct 是 scons 构建入口,Python 依赖由 pyproject.tomluv.lock 锁定。

进程模型:manager 与 process_config

从源码结构看,openpilot 以多进程方式运行,openpilot/system/manager/ 下的 manager.py 负责进程编排,而 openpilot/system/manager/process_config.py 定义了每个进程的运行条件函数,例如:

  • iscar(started, params, CP):行车中且非模拟器环境(started and not CP.notCar)才运行的进程;
  • notcar(started, params, CP):行车中的模拟器/仿真场景;
  • logging(started, params, CP):结合 DisableLogging 参数控制日志进程;
  • ublox(started, params, CP):依据 /dev/ttyHS0 是否存在动态判断 u-blox GPS 可用性并回写 Params。

这些谓词把"何时启动哪个守护进程"的决策显式化:行车主栈(modeld、controlsd、radard、locationd 等,见 openpilot/selfdrive/ 目录)只在行车状态启动,而 athenad、updated、loggerd 等离车/常开进程独立管理。这种结构让同一套代码既能上实车、也能在 PC 上用 USE_WEBCAM(源码中 WEBCAM = os.getenv("USE_WEBCAM") is not None)等环境变量做仿真联调。

四、安全与测试体系

README 的 "Safety and Testing" 一节列出了完整的安全证据链,逐项说明如下:

  1. 遵循 ISO 26262:详见 docs/SAFETY.md。其中两条顶层安全需求值得注意:(a) 驾驶员必须始终能立即夺回车辆控制权(踩刹车或按取消键);(b) 车辆轨迹变化速度必须限制在驾驶员可安全反应范围内——执行器被约束在合理极限内,横向上参考 ISO 11270/ISO 15622,换算为产生 1 米横向偏差需要至少 0.9 秒的最大执行时间。
  2. 每次提交都跑软件在环测试(SITL):由 GitHub Actions 工作流 .github/workflows/tests.yaml 驱动,在 push(master 分支)、pull_request 及 workflow 触发时执行,包含 release 构建(tools/release/build_stripped.sh)、python3 openpilot/system/manager/build.py 全量检查与测试等步骤;根目录的 Jenkinsfile 则编排硬件在环(HITL)流水线,通过 SSH 登录真实 comma 设备执行构建与单元测试。
  3. 安全模型代码在 panda 中用 C 实现:README 指出强制安全模型的代码位于 panda 仓库并以 C 编写,配有独立的软件在环安全测试。本仓库通过 panda/ 子模块引用它。
  4. 硬件在环 Jenkins 测试套件:内部持续构建并单元测试各个进程;另有一个测试机柜,其中 10 台 comma 设备持续回放实车路线(routes)运行最新 openpilot。

docs/SAFETY.md 还对 openpilot 的 fork 提出硬性要求:不得禁用或削弱驾驶员监控(openpilot/selfdrive/monitoring/)与过量执行检查(openpilot/selfdrive/selfdrived/helpers.py);若 fork 修改了 opendbc/safety/ 代码,则不能使用 openpilot 商标,且必须完整保留并全部通过安全测试套件——不遵守将被禁止接入 comma 服务器。

五、许可证、免责与用户数据政策

README 以折叠块形式载明了法律与数据政策,均为使用前必须了解的事实:

MIT 许可与免责声明。 openpilot 以 MIT 许可证发布(见 LICENSE),部分组件采用其他许可。软件附带用户免责条款:使用者须对使用本软件产生的一切指控、索赔与损失向 Comma.ai 及其相关人员作出补偿。并且明确声明:这是仅供研究用途的 Alpha 质量软件,不是产品;用户须自行遵守当地法律法规;不附带任何明示或默示担保。

用户数据与 comma 账户。 openpilot 默认将行车数据上传到 comma 的服务器,也可通过 comma connect 访问自己的数据;comma 用这些数据训练更好的模型。作为开源软件,用户可以关闭数据采集。具体日志范围:路向摄像头、CAN、GPS、IMU、磁力计、温度传感器、崩溃与操作系统日志会被记录;驾驶员面摄像头与麦克风仅当用户在设置中显式选择加入(opt-in)时才会被记录。使用 openpilot 即表示接受 comma 隐私政策,并授予其对该数据的不可撤销、永久、全球性使用权利。

另外,安全漏洞可按 SECURITY.md 的说明向 security@comma.ai 等地址报告。

六、功能边界:LIMITATIONS 中必须知道的限制

docs/LIMITATIONS.md 系统列出了 openpilot 各子系统的已知限制,部署前应完整阅读。核心结论:ALC/LDW 不会自动驾驶、也不会降低你对车辆的注意力要求;变道时 openpilot 不会为你检查盲点,确认安全后再动方向盘。常见致失效因素包括:

  • ALC/LDW:恶劣天气、路向摄像头被遮挡(泥、冰、雪)、车身贴膜遮挡、设备安装错误、急弯匝道与路口(方向盘力矩受限)、施工与限行区域、大坡度路面与强侧风、极端温度、强光(对向远光、直射阳光)、坡道与窄路;
  • ACC/FCW:在上述基础上还有——接近收费站/桥梁/大型金属板、有行人与骑行者的道路、交通标志与红绿灯暂不被识别限速标志暂不识别(当法定限速低于设定车速时不会自动降速)、同车道静止车辆、需要急刹的场景(减加速执行器有设计上限)、邻道近距离加塞、雷达波干扰;
  • DM:不应视为对驾驶员清醒度的精确度量;夜间/隧道弱光、强光、脸部离开摄像头视野、车内摄像头被遮挡都会影响其判断。

七、版本演进与继续深入

RELEASES.md 记录了完整的版本历史(如 0.11.2 引入 880M 参数大模型、外部 GPU 支持、comma connect 直播摄像头;0.11.0 引入完全基于学习仿真器训练的驾驶模型 #36798 等),可作为理解当前代码能力边界的版本依据。

若要继续深入,建议按以下顺序阅读本仓库资源:

最后重申 README 的告诫:openpilot 是研究用途的 Alpha 软件,驾驶员在任何时候都必须对车辆保持完全控制,并自行确保符合当地法律法规。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
527
590
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
904
1.82 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
docsdocs
暂无描述
Markdown
889
5.78 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.52 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.33 K
1.45 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
980
502
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384