Onroad 界面是当 openpilot 积极参与或可参与驾驶时显示的用户的用户界面。它为驾驶员提供了关于系统状态的关键视觉反馈,包括摄像头视图、警报、参与状态和其他与驾驶相关的信息。本文档涵盖了该界面的组件、架构和行为。
有关设置界面的信息,请参阅 设置和配置。
Onroad 界面主要通过几个与底层 openpilot 系统交互的基于 Qt 的组件来实现。让我们来检查一下整体架构。
来源: selfdrive/ui/ui.h selfdrive/ui/qt/home.h selfdrive/ui/qt/widgets/cameraview.h
UIState 类是 UI 相关状态信息的中央存储库,跟踪从车辆状态到 UI 显示属性的所有内容。
来源: selfdrive/ui/ui.h53-63 selfdrive/ui/ui.h65-91 selfdrive/ui/ui.cc21-63
UIState 中的关键函数
updateStatus():根据 SelfdriveState 消息更新 UI 状态engaged():返回 openpilot 当前是否已启用update():UI 定时器调用的主更新函数来源: selfdrive/ui/ui.h70-73 selfdrive/ui/ui.cc70-90 selfdrive/ui/ui.cc107-116
SelfdriveState 消息是控制系统(selfdrived)和 UI 之间用于显示系统状态的主要通信通道。
来源: cereal/log.capnp810-850 selfdrive/selfdrived/selfdrived.py435-455
摄像头视图是 Onroad 界面的核心元素,由 CameraWidget 类管理。
来源: selfdrive/ui/qt/widgets/cameraview.h30-87 selfdrive/ui/qt/widgets/cameraview.cc65-366
CameraWidget 的关键函数
vipcThread():用于接收摄像机帧的后台线程paintGL():使用 OpenGL 渲染摄像机帧calcFrameMatrix():计算帧渲染的变换矩阵vipcConnected():连接到 VisionIPC 时设置 OpenGL 纹理来源: selfdrive/ui/qt/widgets/cameraview.cc198-258 selfdrive/ui/qt/widgets/cameraview.cc314-359 selfdrive/ui/qt/widgets/cameraview.cc183-196 selfdrive/ui/qt/widgets/cameraview.cc260-308
一种特殊的摄像头视图模式是驾驶员视图,它显示面向驾驶员的摄像头和驾驶员监控可视化。
来源: selfdrive/ui/qt/offroad/driverview.h6-23 selfdrive/ui/qt/offroad/driverview.cc8-82
HomeWindow 类是 onroad 和 offroad 界面的容器,根据车辆状态在它们之间切换。
来源: selfdrive/ui/qt/home.h43-73 selfdrive/ui/qt/home.cc14-99
Onroad 界面根据车辆和系统状态在不同状态之间切换。
来源: selfdrive/ui/qt/home.cc61-69 selfdrive/ui/qt/home.cc71-79 selfdrive/ui/qt/home.cc51-59
警报系统向驾驶员提供有关系统状态、警告和错误的反馈
来源: selfdrive/selfdrived/events.py20-199 selfdrive/selfdrived/selfdrived.py422-434 selfdrive/selfdrived/selfdrived.py435-455
Device 类管理亮度、电源状态等显示属性
来源: selfdrive/ui/ui.h96-129 selfdrive/ui/ui.cc118-186
关键的显示管理功能
updateBrightness():驾驶时根据环境光线调整屏幕亮度updateWakefulness():根据活动和驾驶情况管理显示电源状态setAwake():控制显示器的电源状态resetInteractiveTimeout():重置保持屏幕亮起的超时设置来源: selfdrive/ui/ui.cc146-173 selfdrive/ui/ui.cc175-186 selfdrive/ui/ui.cc130-137 selfdrive/ui/ui.cc139-144
Onroad 界面包含一个特殊的调试模式,允许使用操纵杆控制汽车
来源: tools/joystick/joystickd.py16-79 tools/joystick/joystick_control.py14-147
要使用操纵杆模式
JoystickDebugMode 参数设置为 1joystickd.py 服务来源: system/manager/process_config.py34-36 system/manager/process_config.py88-90
Onroad 界面与 SelfdriveD 进程紧密交互,该进程负责管理 openpilot 的整体状态
来源: selfdrive/selfdrived/selfdrived.py43-508 selfdrive/selfdrived/selfdrived.py434-456 selfdrive/selfdrived/selfdrived.py139-240
Onroad 界面提供了驾驶时 openpilot 操作的全面可视化。它集成了摄像头视图、警报通知和状态信息,让驾驶员清楚了解系统的状态和意图。该界面会根据不同的条件动态调整,包括不同的光照条件和系统状态,以提供最佳用户体验。
构成 Onroad 界面的关键组件协同工作,创造无缝的体验
UIState 类维护着核心状态信息CameraWidget 提供道路的视觉表示Device 类管理显示属性HomeWindow 和 OnroadWindow 类提供容器和布局这些组件共同创建了一个界面,让驾驶员在驾驶时能够高效、安全地监控 openpilot 的运行。
来源: selfdrive/ui/ui.h selfdrive/ui/qt/home.h selfdrive/ui/qt/widgets/cameraview.h selfdrive/selfdrived/selfdrived.py
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(65c210)