Camera view selection
Added toggle to select the preferred camera view between "auto", "standard", "wide", and "driver".
This commit is contained in:
@@ -218,6 +218,7 @@ std::unordered_map<std::string, uint32_t> keys = {
|
|||||||
{"AlwaysOnLateralMain", PERSISTENT},
|
{"AlwaysOnLateralMain", PERSISTENT},
|
||||||
{"ApiCache_DriveStats", PERSISTENT},
|
{"ApiCache_DriveStats", PERSISTENT},
|
||||||
{"AverageCurvature", PERSISTENT},
|
{"AverageCurvature", PERSISTENT},
|
||||||
|
{"CameraView", PERSISTENT},
|
||||||
{"FrogPilotTogglesUpdated", PERSISTENT},
|
{"FrogPilotTogglesUpdated", PERSISTENT},
|
||||||
{"GasRegenCmd", PERSISTENT},
|
{"GasRegenCmd", PERSISTENT},
|
||||||
{"LateralTune", PERSISTENT},
|
{"LateralTune", PERSISTENT},
|
||||||
|
|||||||
BIN
selfdrive/frogpilot/assets/toggle_icons/icon_camera.png
Normal file
BIN
selfdrive/frogpilot/assets/toggle_icons/icon_camera.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
@@ -3,12 +3,20 @@
|
|||||||
|
|
||||||
FrogPilotVisualsPanel::FrogPilotVisualsPanel(SettingsWindow *parent) : FrogPilotListWidget(parent) {
|
FrogPilotVisualsPanel::FrogPilotVisualsPanel(SettingsWindow *parent) : FrogPilotListWidget(parent) {
|
||||||
const std::vector<std::tuple<QString, QString, QString, QString>> visualToggles {
|
const std::vector<std::tuple<QString, QString, QString, QString>> visualToggles {
|
||||||
|
{"CameraView", "Camera View", "Choose your preferred camera view for the onroad UI. This is a visual change only and doesn't impact openpilot.", "../frogpilot/assets/toggle_icons/icon_camera.png"},
|
||||||
};
|
};
|
||||||
|
|
||||||
for (const auto &[param, title, desc, icon] : visualToggles) {
|
for (const auto &[param, title, desc, icon] : visualToggles) {
|
||||||
ParamControl *toggle;
|
ParamControl *toggle;
|
||||||
|
|
||||||
toggle = new ParamControl(param, title, desc, icon, this);
|
if (param == "CameraView") {
|
||||||
|
std::vector<QString> cameraOptions{tr("Auto"), tr("Standard"), tr("Wide"), tr("Driver")};
|
||||||
|
FrogPilotButtonParamControl *preferredCamera = new FrogPilotButtonParamControl(param, title, desc, icon, cameraOptions);
|
||||||
|
toggle = preferredCamera;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
toggle = new ParamControl(param, title, desc, icon, this);
|
||||||
|
}
|
||||||
|
|
||||||
addItem(toggle);
|
addItem(toggle);
|
||||||
toggles[param.toStdString()] = toggle;
|
toggles[param.toStdString()] = toggle;
|
||||||
|
|||||||
@@ -651,11 +651,12 @@ void AnnotatedCameraWidget::paintGL() {
|
|||||||
} else if (v_ego > 15) {
|
} else if (v_ego > 15) {
|
||||||
wide_cam_requested = false;
|
wide_cam_requested = false;
|
||||||
}
|
}
|
||||||
wide_cam_requested = wide_cam_requested && sm["controlsState"].getControlsState().getExperimentalMode();
|
wide_cam_requested = wide_cam_requested && sm["controlsState"].getControlsState().getExperimentalMode() || cameraView == 2;
|
||||||
// for replay of old routes, never go to widecam
|
// for replay of old routes, never go to widecam
|
||||||
wide_cam_requested = wide_cam_requested && s->scene.calibration_wide_valid;
|
wide_cam_requested = wide_cam_requested && s->scene.calibration_wide_valid;
|
||||||
}
|
}
|
||||||
CameraWidget::setStreamType(wide_cam_requested ? VISION_STREAM_WIDE_ROAD : VISION_STREAM_ROAD);
|
CameraWidget::setStreamType(cameraView == 3 ? VISION_STREAM_DRIVER :
|
||||||
|
wide_cam_requested && cameraView != 1 ? VISION_STREAM_WIDE_ROAD : VISION_STREAM_ROAD);
|
||||||
|
|
||||||
s->scene.wide_cam = CameraWidget::getStreamType() == VISION_STREAM_WIDE_ROAD;
|
s->scene.wide_cam = CameraWidget::getStreamType() == VISION_STREAM_WIDE_ROAD;
|
||||||
if (s->scene.calibration_valid) {
|
if (s->scene.calibration_valid) {
|
||||||
@@ -740,6 +741,7 @@ void AnnotatedCameraWidget::initializeFrogPilotWidgets() {
|
|||||||
|
|
||||||
void AnnotatedCameraWidget::updateFrogPilotWidgets(QPainter &p) {
|
void AnnotatedCameraWidget::updateFrogPilotWidgets(QPainter &p) {
|
||||||
alwaysOnLateral = scene.always_on_lateral_active;
|
alwaysOnLateral = scene.always_on_lateral_active;
|
||||||
|
cameraView = scene.camera_view;
|
||||||
experimentalMode = scene.experimental_mode;
|
experimentalMode = scene.experimental_mode;
|
||||||
|
|
||||||
if (alwaysOnLateral) {
|
if (alwaysOnLateral) {
|
||||||
|
|||||||
@@ -119,6 +119,7 @@ private:
|
|||||||
|
|
||||||
bool alwaysOnLateral;
|
bool alwaysOnLateral;
|
||||||
bool experimentalMode;
|
bool experimentalMode;
|
||||||
|
int cameraView;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paintGL() override;
|
void paintGL() override;
|
||||||
|
|||||||
@@ -249,6 +249,7 @@ void ui_update_params(UIState *s) {
|
|||||||
UIScene &scene = s->scene;
|
UIScene &scene = s->scene;
|
||||||
|
|
||||||
scene.always_on_lateral = params.getBool("AlwaysOnLateral");
|
scene.always_on_lateral = params.getBool("AlwaysOnLateral");
|
||||||
|
scene.camera_view = params.getInt("CameraView");
|
||||||
}
|
}
|
||||||
|
|
||||||
void UIState::updateStatus() {
|
void UIState::updateStatus() {
|
||||||
|
|||||||
@@ -173,6 +173,7 @@ typedef struct UIScene {
|
|||||||
bool always_on_lateral_active;
|
bool always_on_lateral_active;
|
||||||
bool enabled;
|
bool enabled;
|
||||||
bool experimental_mode;
|
bool experimental_mode;
|
||||||
|
int camera_view;
|
||||||
|
|
||||||
} UIScene;
|
} UIScene;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user