前言
当前PC版Openpilot,需要运行在物理机的Ubuntu 24系统上。
如果看过硬件篇文章「教你手搓Openpilot PC版-硬件篇」,应该知道怎么备齐硬件了,这里仅说明软件篇需要的硬件及系统:
U盘:容量8G+,如果是刻录纯净的Ubuntu系统,8G就可以,如果是使用配置好基础环境的镜像,最好32G或者64G+; 小主机/笔记本电脑:可安装双系统,也可以单Ubuntu系统;小主机以极魔客K8为例,其它主机根据实际调整;
系统:Ubuntu 24.04 desktop
说明:需要的软件/系统配置,下文中会有描述。
BIOS配置-上电启动
极魔客K8为例,其它主机根据实际调整,下文不再重复。
设置上电启动,开机,一直按ESC,进入BIOS,设置来电开机:Advanced–Auto Power On – Power on;
K8无法在开机的时候,选择启动项,只能在BIOS中将U盘设置为第一启动项,安装系统后,再恢复;其它主机可以在开机时选启动项就不需要这么设置。
获取Ubuntu系统镜像
有两种方式可以获取镜像:
官方原版镜像:
https://releases.ubuntu.com/24.04.4/ubuntu-24.04.4-desktop-amd64.iso,通过官方网站下载;无任何配置和环境,需要自行配置;
民间修改版镜像:我自己通过systemback导出的镜像;有两种:
1. 基础镜像包含:基础配置、软件,但不包括op和显卡驱动;
2. op镜像包含:1、编译好的op(cpv8、cpv9)、amd显卡驱动、常用的op教程。
注意:后续教程都是以原版镜像为基础。
这里先提前秀一波修改版镜像2,安装系统后,无需任何配置,启动op即控车!
带常用软件

OpenCL驱动已装好

启动即控车

制作U盘启动盘
以Windows下操作为例。
有两类工具:
Rufus[https://rufus.ie/zh/],每次刻录都需要格式化硬盘,只能刻录一个系统;
Ventoy[https://www.ventoy.net/cn/index.html],仅第一次需要格式化,之后复制镜像到U盘即可启动。
具体操作方式可以网上找教程。
电脑安装Ubuntu系统
Rufus和Ventoy的方式基本类似,网上也有很多教程,这里描述一下大概的流程:
电脑插入U盘启动盘之后,开机启动时,选择从U盘启动; 根据网上的教程,安装系统,如果是只装Ubuntu系统,可以给全部分区进行安装;如果是双系统,需要在Windows下压缩出部分磁盘空间「不需要格式化」,由启动盘进行系统安装; 特别注意:如果是笔记本,勾选:自动更新安装驱动等,后续可能不用手动安装驱动「我的笔记本是这样」,小主机还是要手动安装驱动; 勾选自动登录:如有。
Ubuntu系统配置
「修改版镜像1已包括」
注意:不进行系统配置,也不影响op的使用,但是便捷性会降低
1.修改系统成国内镜像源
可以通过命令行方式修改
# 备份源sudo mv /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak# 修改源sudo bash -c 'cat <<EOF > /etc/apt/sources.list.d/ubuntu.sourcesTypes: debURIs: http://mirrors.ustc.edu.cn/ubuntu/Suites: noble noble-updates noble-securityComponents: main restricted universe multiverseSigned-By: /usr/share/keyrings/ubuntu-archive-keyring.gpgEOF'# 更新缓存列表sudo apt update
也可以在图形界面修改
2.设置用户自动登录
输入密码,解锁后,启用自动登录

3.修改目录为英文
# Ubuntu的语言设置成中文之后,自己主目录下的# 桌面、下载、文档等文件夹全部为中文汉字,# 使用终端时,输入十分不方便。需要把文件夹改成英文,而不更改系统语言。# 在终端中输入以下命令export LANG=en_USxdg-user-dirs-gtk-update# 在询问是否将目录转化为英文的窗口中选择同意# 使用命令将系统语言转化为中文epxort LANG=zh_CN# 重启系统,在登录的时候会提示# 是否把英文目录转化为中文# 选择不同意,并勾选不再提示。
4.sudo 免密打开终端,执行:sudo visudo在文件末尾添加一行(将 comma 替换为你的实际用户名):comma ALL=(ALL) NOPASSWD: ALL保存并退出:如果是 nano(Ubuntu 默认):按 Ctrl+O → 回车 → Ctrl+X
安装OpenCL 驱动
「修改版镜像2已包括AMD的OpenCL驱动」
一般教程说的驱动,实际上是指OpenCL 驱动,PC版openpilot主要使用OpenCL进行推理。
注意:
- 很多问题是因为OpenCL驱动没装对导致的,所以需要单独一个章节讲驱动;
- 未安装OpenCL 驱动,op也是能够运行的,但是无法推理,务必确保OpenCL 驱动已经成功安装,再进行下一步操作!
未成功安装OpenCL驱动的输出
# 未成功安装OpenCL驱动的输出# clinfo -l没有输出clinfo -l# clinfo 只有几行输出clinfoNumber of platforms 0ICD loader propertiesICD loader Name OpenCL ICD LoaderICD loader Vendor OCL Icd free softwareICD loader Version 2.3.2ICD loader Profile OpenCL 3.0
成功安装OpenCL的输出# 成功安装OpenCL的输出clinfo -lPlatform #0: AMD Accelerated Parallel Processing`-- Device #0: gfx1103
#!/bin/bashset -e # 遇错退出# 检查是否为 Ubuntuif ! grep -q "Ubuntu" /etc/os-release; thenecho "❌ 此脚本仅支持 Ubuntu 系统。"exit 1fi# 获取 Ubuntu 代号(如 noble)UBUNTU_CODENAME=$(lsb_release -cs)if [ "$UBUNTU_CODENAME" != "noble" ]; thenecho "⚠️ 警告:当前系统为 Ubuntu $UBUNTU_CODENAME,但本脚本针对 Ubuntu 24.04 (noble) 优化。"read -p "是否继续?(y/N): " -n 1 -rechoif [[ ! $REPLY =~ ^[Yy]$ ]]; thenexit 1fifi# 安装 clinfo(如果未安装)if ! command -v clinfo &> /dev/null; thenecho "📦 安装 clinfo 工具..."sudo apt update >/dev/null 2>&1sudo apt install -y clinfo >/dev/null 2>&1fi# 检查当前 OpenCL 状态output=$(clinfo -l 2>/dev/null | grep -E "(Platform #[0-9]+:| -- Device #[0-9]+:)" || true)if [ -n "$output" ]; thenecho "✅ OpenCL 驱动已成功安装!"echo "检测到的平台与设备:"echo "$output"exit 0fiecho "⚠️ 未检测到 OpenCL 平台。"read -p "是否安装 AMD ROCm OpenCL 驱动(版本 7.2.2,适用于 Ubuntu 24.04 + AMD显卡)?(y/N): " -n 1 -rechoif [[ ! $REPLY =~ ^[Yy]$ ]]; thenecho "用户取消安装。"exit 0fi# ========================# 开始安装 ROCm OpenCL# ========================echo "🔧 步骤 1/6:清理旧仓库(如有)..."sudo rm -f /etc/apt/sources.list.d/rocm.listsudo rm -f /etc/apt/trusted.gpg.d/rocm.gpgecho "🔧 步骤 2/6:下载并安装 amdgpu-install 工具..."ROCm_VERSION="7.2.2"DEB_URL="https://repo.radeon.com/amdgpu-install/${ROCm_VERSION}/ubuntu/${UBUNTU_CODENAME}/amdgpu-install_${ROCm_VERSION}.70202-1_all.deb"DEB_FILE="/tmp/amdgpu-install.deb"if wget -q --spider "$DEB_URL"; thenwget -O "$DEB_FILE" "$DEB_URL"elseecho "❌ 无法访问 ROCm 安装包链接。请检查网络或手动下载后放置到 /tmp/amdgpu-install.deb"exit 1fisudo dpkg -i "$DEB_FILE"echo "🔧 步骤 3/6:添加 ROCm APT 仓库和 GPG 密钥..."sudo mkdir -p /etc/apt/keyringswget -qO- https://repo.radeon.com/rocm/rocm.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/rocm.gpgecho "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/${ROCm_VERSION}${UBUNTU_CODENAME} main" | \sudo tee /etc/apt/sources.list.d/rocm.list >/dev/nullsudo apt updateecho "🔧 步骤 4/6:安装 ROCm OpenCL 运行时..."# 使用 --allow-downgrades 防止某些依赖问题(常见于混合源环境)sudo apt install -y --allow-downgrades rocm-opencl-runtimeecho "🔧 步骤 5/6:添加当前用户到 video 和 render 组..."sudo usermod -a -G video,render "$USER"echo "🔧 步骤 6/6:安装 clinfo(用于验证)..."sudo apt install -y clinfoecho ""echo "✅ ROCm OpenCL 驱动安装完成!"echo "💡 请重新登录或重启系统以使组权限生效。"echo "运行 'clinfo -l' 验证是否识别到 gfx 类似的设备。"
获取Openpilot
根据实际,获取对应的op分支
[op]官方openpilot:https://github.com/commaai/openpilot[cp]carrotpilot:https://github.com/ajouatom/openpilot[cp-胜达]carrotpilot:https://jihulab.com/fishop/openpilot[cp-胜达V9]carrotpilot:https://jihulab.com/fishop/openpilot/-/tree/cpv9-pc-dev[sp]sunnypilot:https://github.com/sunnypilot/sunnypilot[sp-mmx]sunnypilot[mmx]:https://github.com/MM-X/sunnypilot-pc/tree/master-new-pc[dp]dragonpilot:https://github.com/dragonpilot/dragonpilot[fp]FrogPilot:https://github.com/FrogAi/FrogPilot其它:[cpv8]carrotpilot v8[带比亚迪车型]:https://gitee.com/huheas/carrotpilot
注意:
不是所有分支都支持PC版,需要额外适配; 初学者建议使用cpv8分支,可以直接PC运行,且报错较少,方便修改; 比亚迪车型直接cpv8开始上手,里面包含了比亚迪的基础框架代码,即使车型不支持,也能够很快发现问题所在; 如果需要手动增加车型,可以参考「教你手搓Openpilot PC版-车型适配篇」; [cp-胜达V9]可以使用helper工具进行比亚迪车型注入,使用方法可以参考「“天神之眼-D”来了」,helper工具可以在QQ群文件获取。
设置编译OP
# 编译三部曲# op目录下执行# 设置tools/op.sh setup# 激活虚拟环境tools/op.sh venv# 也可以 source .venv/bin/activate# 编译tools/op.sh build# 也可以 scons -u -j$(nproc)# 或者 scons -u
编译过程,可能会遇到各种各样的问题,需要根据实际情况解决,一般是问AI或者对应的技术群里咨询,这里就不列举了。
运行Openpilot
测试运行
在终端指定车型和摄像头即可
# 指定车型指纹export FINGERPRINT="BYD_TANG_DMI_23"# 激活虚拟环境source .venv/bin/activate# 运行op,道路摄像头=0,广角摄像头=2# 仅长焦USE_WEBCAM=1 ROAD_CAM=0 NO_DM=1 system/manager/manager.py# 双摄# USE_WEBCAM=1 ROAD_CAM=0 WIDE_CAM=2 NO_DM=1 system/manager/manager.py
可能出现的问题:
长焦摄像头 ROAD_CAM的数字不是0
拔掉所有摄像头,终端执行 ls /dev/video* 插上长焦摄像头,终端执行 ls /dev/video*,查看当前加了哪个数字,ROAD_CAM的数字就是当前这个数字。
正式运行
1. 使用启动脚本 run_23tang.sh
将启动脚本保存到op目录并增加执行权限chmod +x run_23tang.sh,后续使用./run_23tang.sh运行
#!/bin/bash# 需要自己测试是否能用BYD_RADAR雷达#export BYD_RADAR=1# 指定车型指纹export FINGERPRINT="BYD_TANG_DMI_23"# 设置当前目录为op运行目录(日志和参数)OP_DIR=$(dirname "$(readlink -f "$0")")export PARAMS_ROOT="$OP_DIR/params"export LOG_ROOT="$OP_DIR/.comma"# 启动运行cd "$OP_DIR" &&source .venv/bin/activate &&USE_WEBCAM=1 ROAD_CAM=0 WIDE_CAM=2 NO_DM=1 system/manager/manager.py
2.将cpc8显示在应用列表,后续可以固定到快捷栏,方便启动
创建增加cpv8.desktop文件,需要根据实际修改: Name、GenericName、Exec的路径运行脚本、Icon文件的路径
[Desktop Entry]Name=cpv8-0429GenericName=cpv8-0429Comment=openpilot is an operating system for roboticsExec=gnome-terminal -e "bash -c '/home/comma/Desktop/cpv8/launch_carrot2_v8.sh;$SHELL'"Terminal=falseType=ApplicationIcon=/home/comma/Desktop/cpv8/selfdrive/assets/img_chffr_wheel.png
将cpv8.desktop复制到/usr/share/applications
sudo cp cpv8.desktop /usr/share/applications3.增加开机启动任务
根据实际修改命令:
gnome-terminal -e "bash -c '/home/comma/Desktop/cpv8/launch_carrot2_v8.sh;$SHELL'"
后续开机时,op会自动启动。
从源码到编译运行示例
以cpv8为例,其它分支类似
# 以下命令需要每个步骤单独执行# 1.clone源码git clone https://gitee.com/huheas/carrotpilot.git cpv8# 2.等clone完,设置Python代理export UV_Installer_GHE__Base_URL="https://ghfast.top/https://github.com"export UV_INDEX_URL=https://mirrors.aliyun.com/pypi/simpleexport EXTRA_INDEX_URL=https://mirrors.aliyun.com/pypi/simpleexport UV_HTTP_TIMEOUT=600export PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simpleexport PIP_TRUSTED_HOST=mirrors.aliyun.com# 3.进入OP目录cd cpv8# 4.安装依赖环境tools/op.sh setup# 5.进入OP虚拟环境tools/op.sh venv# 6.编译OPtools/op.sh build# [可选]7.设置车型指纹# export FINGERPRINT="BYD_TANG_DMI_23"# 8.启动OP,ROAD_CAM指定摄像头,NO_DM驾驶监控开关# 仅长焦单摄USE_WEBCAM=1 ROAD_CAM=0 NO_DM=1 system/manager/manager.py# 双摄【双摄目前无法自动切换】USE_WEBCAM=1 ROAD_CAM=0 WIDE_CAM=2 NO_DM=1 system/manager/manager.py
其它注意事项
1.需要在终端Ctrl C关闭op,只在界面×掉关闭是没有用的,特别是黑熊,一定要Ctrl C关闭;
2.黑熊挂了,怎么刷固件:
# 黑熊进dfu模式cd op目录source .venv/bin/activate./panda/board/recover.py
3.按照上面设置好之后,汽车启动时,电脑会自动启动,op也会跟着电脑启动,调试好以后,就不需要鼠标键盘了;
4.比亚迪车型,如果是cpv8,在P档时,按方向盘上的「取消巡航」按钮,可以关闭小主机。
写在最后
openpilot有对应的QQ技术群和微信群,可在后台发送关键词:openpilot-helper,会有人邀请进群; 博主已成功“手搓”21/22/23款唐DM-i的PC版成品,从硬件选配到整机调试全流程打通。需要全套方案?欢迎后台联系!
修改版镜像2实际已经完成了以上所有内容。
夜雨聆风