From ffd7259193b4c363fb6b7f6b09ca0faf365af2fa Mon Sep 17 00:00:00 2001 From: James <91348155+FrogAi@users.noreply.github.com> Date: Mon, 1 Dec 2025 12:00:00 -0700 Subject: [PATCH] Blind spot path --- .../qt/onroad/frogpilot_annotated_camera.cc | 22 +++++++++++++++++++ .../ui/qt/onroad/frogpilot_annotated_camera.h | 4 ++++ selfdrive/ui/qt/onroad/model.cc | 3 +++ 3 files changed, 29 insertions(+) diff --git a/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.cc b/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.cc index 66716926..83a4ff1a 100644 --- a/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.cc +++ b/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.cc @@ -38,6 +38,9 @@ void FrogPilotAnnotatedCameraWidget::updateState(const UIState &s, const FrogPil speedConversionMetrics = MS_TO_MPH; } + blindspotLeft = carState.getLeftBlindspot(); + blindspotRight = carState.getRightBlindspot(); + hideBottomIcons = selfdriveState.getAlertSize() != cereal::SelfdriveState::AlertSize::NONE; hideBottomIcons |= frogpilotSelfdriveState.getAlertSize() != cereal::FrogPilotSelfdriveState::AlertSize::NONE; } @@ -48,3 +51,22 @@ void FrogPilotAnnotatedCameraWidget::mousePressEvent(QMouseEvent *mouseEvent) { void FrogPilotAnnotatedCameraWidget::paintFrogPilotWidgets(QPainter &p, UIState &s) { } + +void FrogPilotAnnotatedCameraWidget::paintBlindSpotPath(QPainter &p) { + p.save(); + + QLinearGradient bs(0, height(), 0, 0); + bs.setColorAt(0.0f, QColor::fromHslF(0 / 360.0f, 0.75f, 0.5f, 0.4f)); + bs.setColorAt(0.5f, QColor::fromHslF(0 / 360.0f, 0.75f, 0.5f, 0.35f)); + bs.setColorAt(1.0f, QColor::fromHslF(0 / 360.0f, 0.75f, 0.5f, 0.0f)); + p.setBrush(bs); + + if (track_adjacent_vertices[0].boundingRect().width() > 0 && blindspotLeft) { + p.drawPolygon(track_adjacent_vertices[0]); + } + if (track_adjacent_vertices[1].boundingRect().width() > 0 && blindspotRight) { + p.drawPolygon(track_adjacent_vertices[1]); + } + + p.restore(); +} diff --git a/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.h b/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.h index 11c00c38..68cd722a 100644 --- a/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.h +++ b/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.h @@ -12,6 +12,7 @@ public: explicit FrogPilotAnnotatedCameraWidget(QWidget *parent = 0); void mousePressEvent(QMouseEvent *mouseEvent) override; + void paintBlindSpotPath(QPainter &p); void paintFrogPilotWidgets(QPainter &p, UIState &s); void updateState(const UIState &s, const FrogPilotUIState &fs); @@ -40,6 +41,9 @@ protected: void showEvent(QShowEvent *event) override; private: + bool blindspotLeft; + bool blindspotRight; + float distanceConversion; float setSpeed; float speedConversion; diff --git a/selfdrive/ui/qt/onroad/model.cc b/selfdrive/ui/qt/onroad/model.cc index 7aeec196..357b8ce4 100644 --- a/selfdrive/ui/qt/onroad/model.cc +++ b/selfdrive/ui/qt/onroad/model.cc @@ -168,6 +168,9 @@ void ModelRenderer::drawPath(QPainter &painter, const cereal::ModelDataV2::Reade painter.drawPolygon(track_vertices); // FrogPilot variables + if (frogpilot_toggles.value("blind_spot_path").toBool()) { + frogpilot_nvg->paintBlindSpotPath(painter); + } } void ModelRenderer::updatePathGradient(QLinearGradient &bg) {