Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 8 additions & 15 deletions .github/workflows/workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,27 +76,20 @@ jobs:
tag_name: ${{ github.ref_name }}
release_name: ${{ github.ref_name }}
body: |
# MultiSense Viewer 1.1.1
# MultiSense Viewer
- Not compatible with remote head systems. Revert to 1.0.0 for that purpose.
### New features:
- Visualize IMU data with corresponding 3D model (MultiSense: KS-21, S27, S30)
- Image enhancements (Normalize disparity, apply colormaps, interpolate)
- Zoom controls in 2D view
- Colorize Point Cloud if the AUX camera is present
- Record point clouds as .ply files
- Record IMU data
- AUX camera exposure control with LibMultiSense 6.0.0
- Reloadable spirv-shaders (useful for testing various gpu-applied filters)
- Various optimizations and more reliable AutoConnect
- Opt-in for anonymous usage statistics
- Image effects (Edge detection, blurring, embossing, sharpening)


## Installing:

### Windows users:

1. Install WinPcap_driver.exe to let the viewer configure network settings automatically
2. Download and run the Windows installer: MultiSenseSetup.exe

### Ubuntu users:
Make sure you have updated graphics drivers, ffmpeg and policykit installed. Can be installed via apt pacakge manager:
apt install ffmpeg libvulkan1 policykit-1
Ubuntu 20.04 Users may also require to install: apt install libdeflate-dev
1. Download and install the multisense_1.1-0_amd64.deb package using your default package manager or type in terminal:
$ dpkg --install ~/Downloads/multisense_1.1-0_amd64.deb
2. Launch through start menu or run a start script at
Expand All @@ -109,7 +102,7 @@ jobs:


BuildWindows:
name: Build For Windows
name: Compile Check for Windows
needs: [ReleaseJob, VersionJob]
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
# You can convert this to a matrix build if you need cross-platform coverage.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/workflow_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:


BuildWindows:
name: Build and Create Installer for Windows
name: Compile Check for Windows
needs: [VersionJob]
runs-on: windows-2022
steps:
Expand Down
28 changes: 14 additions & 14 deletions Assets/Tools/Windows/build_installer_locally.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,19 @@ Write-Host "You provided the version: $version"
cmake -B . -DCMAKE_BUILD_TYPE=Release -DWARNINGS_AS_ERRORS=FALSE -DGIT_SUBMODULE=OFF $path
cmake --build . --config Release --target install -- /m:10

mkdir files
Copy-Item -Recurse ".\multisense_${version}_amd64\*" .\files\

mv .\files\Assets\Tools\Windows\inno_setup_script.iss .\
mv .\files\Assets\Tools\compile.sh .\
mv .\files\Assets\Tools\install_spirv_compiler.sh .\
mv .\files\Assets\Tools\monitor_memory_usage.py .\
mv .\files\Assets\Tools\Windows\build_installer.ps1 .\
mv .\files\Assets\Tools\Windows\build_installer_locally.ps1 .\
mv .\files\Assets\Tools\how_to_release .\
rm -R .\files\Assets\Tools\Ubuntu
rm -R .\files\bin
rm -R .\files\include
rm -R .\files\lib
mkdir MultiSense-Viewer
Copy-Item -Recurse ".\multisense_${version}_amd64\*" .\MultiSense-Viewer\

mv .\MultiSense-Viewer\Assets\Tools\Windows\inno_setup_script.iss .\ -Force
mv .\MultiSense-Viewer\Assets\Tools\compile.sh .\ -Force
mv .\MultiSense-Viewer\Assets\Tools\install_spirv_compiler.sh .\ -Force
mv .\MultiSense-Viewer\Assets\Tools\monitor_memory_usage.py .\ -Force
mv .\MultiSense-Viewer\Assets\Tools\Windows\build_installer.ps1 .\ -Force
mv .\MultiSense-Viewer\Assets\Tools\Windows\build_installer_locally.ps1 .\ -Force
mv .\MultiSense-Viewer\Assets\Tools\how_to_release.md .\ -Force
rm -R .\MultiSense-Viewer\Assets\Tools\Ubuntu
rm -R .\MultiSense-Viewer\bin
rm -R .\MultiSense-Viewer\include
rm -R .\MultiSense-Viewer\lib

& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" .\inno_setup_script.iss
12 changes: 6 additions & 6 deletions Assets/Tools/Windows/inno_setup_script.iss
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ OutputBaseFilename=MultiSenseSetup
Compression=lzma
SolidCompression=yes
WizardStyle=modern
SetupIconFile=.\MultiSense_viewer\Assets\Tools\Windows\{#MyAppSetupIcoName}
UninstallDisplayIcon=.\MultiSense_viewer\Assets\Tools\Windows\{#MyAppSetupIcoName}
SetupIconFile=.\MultiSense-Viewer\Assets\Tools\Windows\{#MyAppSetupIcoName}
UninstallDisplayIcon=.\MultiSense-Viewer\Assets\Tools\Windows\{#MyAppSetupIcoName}
UsePreviousAppDir=no

[Languages]
Expand All @@ -43,10 +43,10 @@ Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "MultiSense_viewer\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "MultiSense_viewer\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "MultiSense_viewer\AutoConnect.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system MultiSense_viewer
Source: "MultiSense-Viewer\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "MultiSense-Viewer\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "MultiSense-Viewer\AutoConnect.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system MultiSense-Viewer

[Registry]
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Set application version. Remember that it should always match the pushed tag in the form of v1.*-*
set(VERSION_MAJOR "1")
set(VERSION_MINOR "1")
set(VERSION_PATCH "5")
set(VERSION_PATCH "6")
set(ARCHITECTURE "amd64")

# Set install directory. Used to generate installers for both Windows and Ubuntu using their native approaches
Expand Down
2 changes: 1 addition & 1 deletion include/Viewer/CRLCamera/CRLPhysicalCamera.h
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ namespace VkRender::MultiSense {
std::vector<crl::multisense::system::DeviceMode> supportedDeviceModes{};
crl::multisense::DataSource supportedSources{0};
std::vector<uint8_t *> rawImages{};
int sensorMTU = 1500;
int sensorMTU = 1400;
crl::multisense::image::Calibration calibration{};
glm::mat4 QMat{};
glm::mat4 KColorMat{};
Expand Down
2 changes: 1 addition & 1 deletion include/Viewer/Core/MultiSenseDeviceDefinitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ namespace VkRender {
float gain = 1.0f;
float fps = 30.0f;
float stereoPostFilterStrength = 0.5f;
int mtu = 7200;
int mtu = 1400;
bool hdrEnabled = false;
float gamma = 2.0f;
bool hdr = false;
Expand Down
2 changes: 1 addition & 1 deletion include/Viewer/Core/RenderResource.h
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@ namespace RenderResource {
VkResult res = vkCreateGraphicsPipelines(device->m_LogicalDevice, nullptr, 1, &pipelineCI, nullptr,
&data.pipeline);
if (res != VK_SUCCESS)
throw std::runtime_error("Failed to create graphics m_Pipeline");
throw std::runtime_error("Failed to create graphics pipeline: RenderResource");
}
};
}
Expand Down
2 changes: 1 addition & 1 deletion include/Viewer/Core/Validation.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ namespace Validation {
Log::Logger::getInstance()->error("Validation error: {}", pCallbackData->pMessage);
}
else if (messageSeverity == VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT) {
Log::Logger::getInstance()->info("Validation info: {}", pCallbackData->pMessage);
Log::Logger::getInstance()->trace("Validation info: {}", pCallbackData->pMessage);
}

return VK_FALSE;
Expand Down
2 changes: 1 addition & 1 deletion include/Viewer/ImGui/Layer.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ namespace VkRender {
float addDeviceBottomPadding = 45.0f;
float addDeviceWidth = 180.0f, addDeviceHeight = 35.0f;
/** @brief Height of popupModal*/
float popupHeight = 600.0f;
float popupHeight = 350.0f;
/** @brief Width of popupModal*/
float popupWidth = 550.0f;
/** @brief Width of popupModal*/
Expand Down
3 changes: 2 additions & 1 deletion include/Viewer/ImGui/MainLayerExt/ControlArea2DExt.h
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,8 @@ class ControlArea2DExt : public VkRender::Layer {

/** @brief Drop down for compression selection */
{
static std::vector<std::string> saveFormat = {"Select format:", "tiff", "png", "rosbag"};
//static std::vector<std::string> saveFormat = {"Select format:", "tiff", "png", "rosbag"};
static std::vector<std::string> saveFormat = {"Select format:", "tiff", "png"};
static size_t selector = 0;

ImGui::SetNextItemWidth(ImGui::GetWindowSize().x - ImGui::GetCursorPosX() - 5.0f);
Expand Down
25 changes: 16 additions & 9 deletions include/Viewer/ImGui/MainLayerExt/SensorConfigurationExt.h
Original file line number Diff line number Diff line change
Expand Up @@ -816,22 +816,28 @@ class SensorConfigurationExt : public VkRender::Layer {
ImGui::SameLine(0, textSpacing - txtSize.x);
ImGui::PushStyleColor(ImGuiCol_Text, VkRender::Colors::CRLTextWhite);
static int mtuValues[] = {576, 1280, 1400, 1500, 2000, 4000, 7200, 9000}; // common MTU values
static int customMTU = 7200;
static int mtuIndex = 6; // Default index for the slider (1500 as default)

static int mtuIndex = 2; // Default index for the slider (1500 as default)
auto& customMTU = d.parameters.stereo.mtu;
static bool isCustomValue = false;
if (ImGui::SliderInt("##MTU", &mtuIndex, 0, IM_ARRAYSIZE(mtuValues) - 1,
std::to_string(mtuValues[mtuIndex]).c_str())) {
handles->usageMonitor->userClickAction("##MTU setting", "SliderFloat",
ImGui::GetCurrentWindow()->Name);
isCustomValue ? std::to_string(customMTU).c_str() : std::to_string(mtuValues[mtuIndex]).c_str(), ImGuiSliderFlags_NoInput | ImGuiSliderFlags_AlwaysClamp)) {
d.parameters.stereo.mtu = mtuValues[mtuIndex];
isCustomValue = false;
}
if (d.parameters.stereo.mtu != mtuValues[mtuIndex] && !isCustomValue){
// Check if the current MTU matches any of the predefined MTU values
for (int i = 0; i < IM_ARRAYSIZE(mtuValues); ++i) {
if (d.parameters.stereo.mtu == mtuValues[i]) {
mtuIndex = i; // Set the correct index
break;
}
}
}
d.parameters.stereo.update |= ImGui::IsItemDeactivatedAfterEdit();

// Handle right-click context menu to enter custom MTU value
if (ImGui::IsItemHovered() && ImGui::IsMouseClicked(ImGuiMouseButton_Right)) {
ImGui::OpenPopup("MTU_InputPopup"); // Open the popup when right-clicked
}

if (ImGui::BeginPopup("MTU_InputPopup")) {
ImGui::Text("Enter custom MTU value:");
if (ImGui::InputInt("##CustomMTUInput", &customMTU)) {
Expand All @@ -842,8 +848,9 @@ class SensorConfigurationExt : public VkRender::Layer {
bool btnClick = ImGui::Button("Set");
if (btnClick) {
ImGui::CloseCurrentPopup();
d.parameters.stereo.mtu = static_cast<float>(customMTU); // Update the MTU with the custom value
d.parameters.stereo.mtu = customMTU; // Update the MTU with the custom value
d.parameters.stereo.update |= btnClick;
isCustomValue = true;
}
ImGui::EndPopup();
}
Expand Down
Loading
Loading