本文档概述了 openpilot 仓库中可用的开发和调试工具。这些工具对于使用 openpilot 的开发人员至关重要,它们能够进行日志分析、CAN 总线调试、数据可视化和仿真。有关从源代码构建 openpilot 的信息,请参阅 构建系统,有关测试方法,请参阅 测试框架。
openpilot 中的主要开发工具包括:
这些工具在 openpilot 开发生态系统中的位置如下:
来源:tools/replay/README.md tools/cabana/mainwin.cc tools/plotjuggler/README.md tools/lib/logreader.py
Replay 系统通过回放记录的消息来模拟驾驶会话,这些消息的记录方式与原始记录完全一致。这使得开发和测试无需实际驾驶汽车。
来源:tools/replay/replay.h tools/replay/replay.cc tools/replay/seg_mgr.h tools/replay/main.cc
控制台界面在回放时提供了额外的控制
来源:tools/replay/README.md tools/replay/main.cc tools/replay/consoleui.cc
Cabana 是一款强大的 CAN 总线分析器,允许开发人员检查、解码和可视化 CAN 消息。它对于添加对新车辆的支持和调试车辆集成问题特别有用。
来源:tools/cabana/mainwin.h tools/cabana/mainwin.cc tools/cabana/cabana.cc tools/cabana/streams/replaystream.h
Cabana 的界面包含多个面板:
来源:tools/cabana/cabana.cc tools/cabana/SConscript
PlotJuggler 是一个可视化工具,允许开发人员绘制 openpilot 日志中的时间序列数据。它对于分析和比较信号随时间的变化特别有用,有助于模型调优和系统性能分析。
来源:tools/plotjuggler/juggle.py tools/plotjuggler/README.md
来源:tools/plotjuggler/juggle.py tools/plotjuggler/README.md
LogReader 是一个用于读取和处理 openpilot 日志文件的实用程序库。它提供了一个编程接口,用于访问日志数据并提取特定消息。
来源:tools/lib/logreader.py tools/lib/tests/test_logreader.py
来源:tools/lib/logreader.py tools/lib/README.md
这些工具已集成到全面的开发工作流程中。
来源:README.md tools/replay/README.md tools/plotjuggler/README.md
这些工具使用 SCons 构建系统进行构建。它们的配置方式如下:
replay 工具是从 tools/replay 目录中的源文件构建的
replay_lib_src = ["replay.cc", "consoleui.cc", "camera.cc", "filereader.cc",
"logreader.cc", "framereader.cc", "route.cc", "util.cc",
"seg_mgr.cc", "timeline.cc", "api.cc"]
它依赖于以下库:
Cabana 使用 Qt 构建,并依赖于:
构建会创建一个 cabana_lib 和 cabana 二进制文件,其中包含特定于不同平台(macOS vs Linux)的组件。
cabana_lib = cabana_env.Library("cabana_lib", [
'mainwin.cc', 'streams/socketcanstream.cc', 'streams/pandastream.cc',
'streams/devicestream.cc', 'streams/livestream.cc', 'streams/abstractstream.cc',
'streams/replaystream.cc', 'binaryview.cc', 'historylog.cc', 'videowidget.cc',
'signalview.cc', 'streams/routes.cc', 'dbc/dbc.cc', 'dbc/dbcfile.cc',
'dbc/dbcmanager.cc', 'utils/export.cc', 'utils/util.cc',
'chart/chartswidget.cc', 'chart/chart.cc', 'chart/signalselector.cc',
'chart/tiplabel.cc', 'chart/sparkline.cc', 'commands.cc', 'messageswidget.cc',
'streamselector.cc', 'settings.cc', 'detailwidget.cc', 'tools/findsimilarbits.cc',
'tools/findsignal.cc'
])
PlotJuggler 是一个独立的二进制文件,由 juggle.py 脚本下载和安装。该脚本负责下载适用于相应平台的二进制文件(Linux x86_64、Linux aarch64、macOS arm64 或 macOS x86_64)。
来源:tools/plotjuggler/juggle.py
openpilot 中的开发工具提供了一个全面的套件,用于分析、调试和改进系统。无论您是为新车辆添加支持、调查错误还是调整参数,这些工具都能提供有效处理 openpilot 复杂系统所需的功能。