openpilot replay回放工具完全指南:不碰真车也能调试自动驾驶
【免费下载链接】openpilotopenpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300+ supported cars.项目地址: https://gitcode.com/GitHub_Trending/op/openpilot
openpilot 是一个面向 300+ 车型的自动驾驶操作系统,而它内置的replay 回放工具是官方调试自动驾驶的核心利器:把真实驾驶中录制的整段数据(摄像头画面、CAN 总线信号、各进程间的所有消息)原封不动地在你的电脑上重新播放一遍,就像实时在跑一样。无需实车、无需硬件,一台笔记本即可完成复现问题、观察模型输出、调参分析的全部流程。🚗💻
一、为什么需要 replay 回放工具?
openpilot 在每次通电启动后都会把驾驶数据按1 分钟一个 segment的方式记录成"路线(route)",包含:
| 数据文件 | 内容 |
|---|---|
rlog.zst | 所有进程间的消息日志(车辆状态、模型输出、控制指令等) |
fcamera.hevc/ecamera.hevc/dcamera.hevc | 窄角道路 / 广角道路 / 驾驶舱三路摄像头视频 |
qlog.zst+qcamera.ts | 体积更小的降采样版本,适合快速下载分析 |
replay 工具会读取这些文件,按原始时间戳把所有消息重新发布出去,让 openpilot 的各组件(UI、PlotJuggler、甚至 CAN 回放)以为自己正在实时收数据。这正是官方开发团队日常调试自动驾驶系统用的同一套工具,完整原理见 docs/concepts/logs.md。
二、快速上手:3 步回放 demo 路线
1. 获取代码
git clone https://gitcode.com/GitHub_Trending/op/openpilot cd openpilot2. 认证账号(回放远程路线需要)
如果你要回放自己设备上传的路线,先运行认证脚本获取访问权限:
python3 openpilot/tools/lib/auth.py3. 一键播放官方 demo 路线
零硬件、零配置,直接跑:
openpilot/tools/replay/replay --demo看到消息开始滚动,说明回放已成功 ✅
回放你账号下的任意路线,只需把路线名传给 replay:
openpilot/tools/replay/replay '5beb9b58bd12b691/0000010a--a51155e496'三、replay 常用参数速查表
运行replay -h可查看完整帮助,以下是新手最常用的选项:
| 参数 | 作用 |
|---|---|
--demo | 使用官方 demo 路线,无需提供路线名 |
--auto | 自动从内部源、CI 源、comma API 等多个来源寻找路线 |
--data_dir <路径> | 回放本机存放的路线文件 |
-x <速度> | 调节播放速度,范围 0.2~3 倍速 |
-s <秒> | 从路线的指定秒数开始播放 |
-a/-b | 白名单 / 黑名单,只发送或屏蔽指定服务 |
--cabin/--wide-road | 额外加载驾驶舱 / 广角道路摄像头 |
--no-loop | 路线播到结尾就停止(默认循环播放) |
ZMQ=1(环境变量) | 改用 ZMQ 发消息,UI 等组件跨进程/跨机订阅时需要 |
回放本地路线的完整示例:
openpilot/tools/replay/replay "5beb9b58bd12b691/0000010a--a51155e496" \ --data_dir="/path_to_routes"四、可视化回放:亲眼看见自动驾驶在想什么
回放只是"发消息",真正有趣的是配合可视化工具观察。
1. 调试 UI:摄像头 + 模型输出 + 实时曲线
replay 自带一个 pyray 写的调试界面 ui.py,可以同时显示:
- 窄角摄像头实时画面
- 神经网络模型的车道线、预测轨迹叠层
- 雷达点与目标车辆(俯视视图)
- 方向盘角、车速、加减速等 4 组实时曲线图
两个终端分别运行即可:
openpilot/tools/replay/replay <route-name> cd openpilot/selfdrive/ui && ./ui.py2. watch3:三路摄像头同屏
想同时看前方、广角和车内画面?加上--cabin --wide-road参数回放,再启动 watch3.py:
cd openpilot/tools/replay && ./replay --demo --cabin --wide-road cd openpilot/selfdrive/ui && ./watch3.py3. PlotJuggler:专业时序数据分析
tools/plotjuggler/ 提供了现成的插件,把 replay 流式数据导入做图表分析:
openpilot/tools/replay/replay <route-name> openpilot/tools/plotjuggler/juggle.py --stream还支持--demo --layout=layouts/tuning.xml直接加载官方调参布局,对车辆纵向调参非常有帮助,详见 tools/plotjuggler/README.md。
五、进阶:把 CAN 信号回放到真车上
如果你手上有panda jungle硬件,还可以用 can_replay.py 把录制好的 CAN 总线消息原样发给真实的 panda 设备——设备会像真的坐在车里一样工作,这是做车辆移植(car porting)时的关键手段。流程:PC 连接 jungle → 通过 OBD-C 接上设备 → 运行:
openpilot/tools/replay/can_replay.py <route-name>没有硬件的读者可以直接跳过这一节,前四步已经覆盖了绝大多数调试场景。
六、新手常见问题
Q:为什么回放不了自己上传的路线?先确认执行过python3 openpilot/tools/lib/auth.py认证;或用--data_dir指向本地路线目录。
Q:UI 订阅不到 replay 发出的消息?设置环境变量ZMQ=1后再运行 replay,让消息走 ZMQ 通道。
Q:只想看某一秒开始的部分?用-s <秒数>定位起点,配合-x 2二倍速快速跳过无关路段。
七、核心文件导航
- 回放工具源码与说明:openpilot/tools/replay/
- 官方文档:openpilot/tools/replay/README.md
- 新手教程:docs/how-to/replay-a-drive.md
- 日志格式原理:docs/concepts/logs.md
- 调试 UI:openpilot/tools/replay/ui.py
- CAN 回放脚本:openpilot/tools/replay/can_replay.py
- 时序分析工具:openpilot/tools/plotjuggler/juggle.py
一行命令replay --demo,你就拥有了一个可以随时"穿越"回任何一段真实驾驶时光的自动驾驶沙盒——调试自动驾驶,从此不需要碰真车。🛠️
【免费下载链接】openpilotopenpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300+ supported cars.项目地址: https://gitcode.com/GitHub_Trending/op/openpilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考