openpilot 使用与部署完全指南:一个升级 300+ 车型驾驶辅助系统的机器人操作系统
openpilot 被定义为一个"机器人操作系统"(operating system for robotics),当前核心能力是将 300+ 款车型的原车驾驶辅助系统升级为具备自适应巡航(ACC)与自动车道居中(ALC)的辅助驾驶系统。本文以仓库根目录的 README.md 为主体骨架,结合 docs/SAFETY.md、docs/INTEGRATION.md、docs/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 将车辆端部署归纳为四个必备要素:
- 支持的设备(Supported Device):comma four(comma 官方销售的硬件盒子);
- 软件(Software):comma four 的初始设置流程允许用户输入自定义软件 URL,安装正式版使用 URL
openpilot.comma.ai; - 支持的车型(Supported Car):确认车辆处于 docs/CARS.md 列出的支持名单中;
- 车辆线束(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.toml 与 uv.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" 一节列出了完整的安全证据链,逐项说明如下:
- 遵循 ISO 26262:详见 docs/SAFETY.md。其中两条顶层安全需求值得注意:(a) 驾驶员必须始终能立即夺回车辆控制权(踩刹车或按取消键);(b) 车辆轨迹变化速度必须限制在驾驶员可安全反应范围内——执行器被约束在合理极限内,横向上参考 ISO 11270/ISO 15622,换算为产生 1 米横向偏差需要至少 0.9 秒的最大执行时间。
- 每次提交都跑软件在环测试(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 设备执行构建与单元测试。 - 安全模型代码在 panda 中用 C 实现:README 指出强制安全模型的代码位于 panda 仓库并以 C 编写,配有独立的软件在环安全测试。本仓库通过 panda/ 子模块引用它。
- 硬件在环 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 等),可作为理解当前代码能力边界的版本依据。
若要继续深入,建议按以下顺序阅读本仓库资源:
- docs/CARS.md:确认目标车型的支持级别与所需硬件;
- docs/INTEGRATION.md 与 docs/LIMITATIONS.md:功能替换关系与能力边界;
- docs/SAFETY.md:安全模型与 fork 约束;
- tools/README.md 与 openpilot/tools/:开发工具(cabana、plotjuggler、replay 等)与 CTF 教程;
- docs/CONTRIBUTING.md:贡献流程——项目优先级为"安全、稳定性、质量、功能",PR 合入概率取决于价值与合入成本,简单且有测试的 bug 修复最容易合入,500+ 行的大 PR 与纯风格修改会被拒绝。
最后重申 README 的告诫:openpilot 是研究用途的 Alpha 软件,驾驶员在任何时候都必须对车辆保持完全控制,并自行确保符合当地法律法规。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0622
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00