Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
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
2 changes: 1 addition & 1 deletion .github/workflows/cmake-linux-deb.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
- name: Load repository cache
run: sudo apt-get update --allow-releaseinfo-change
- name: Install Libs
run: sudo apt-get install -y --no-install-recommends libeigen3-dev libglew-dev freeglut3-dev libx11-dev libxi-dev libtbb-dev liblaszip-dev libopencv-dev libproj-dev
run: sudo apt-get install -y --no-install-recommends libeigen3-dev libglew-dev freeglut3-dev libx11-dev libxi-dev libxrandr-dev libxinerama-dev libxcursor-dev libxext-dev libtbb-dev liblaszip-dev libopencv-dev libproj-dev

- uses: actions/checkout@v4
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cmake-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
- name: Load repository cache
run: sudo apt-get update --allow-releaseinfo-change
- name: Install Libs
run: sudo apt-get install -y --no-install-recommends libx11-dev libxi-dev libtbb-dev libegl1-mesa-dev libglu1-mesa-dev libopencv-dev libproj-dev
run: sudo apt-get install -y --no-install-recommends libx11-dev libxi-dev libxrandr-dev libxinerama-dev libxcursor-dev libxext-dev libtbb-dev libegl1-mesa-dev libglu1-mesa-dev libopencv-dev libproj-dev

- uses: actions/checkout@v4
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-bindings-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
run: sudo apt-get update --allow-releaseinfo-change

- name: Install system libraries
run: sudo apt-get install -y --no-install-recommends libx11-dev libxi-dev libtbb-dev libegl1-mesa-dev libglu1-mesa-dev libopencv-dev libproj-dev
run: sudo apt-get install -y --no-install-recommends libx11-dev libxi-dev libxrandr-dev libxinerama-dev libxcursor-dev libxext-dev libtbb-dev libegl1-mesa-dev libglu1-mesa-dev libopencv-dev libproj-dev

- uses: actions/checkout@v4
with:
Expand Down
10 changes: 9 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,13 @@ include(cmake/implot.cmake)
# ============================================================================
include(cmake/dependencies.cmake)

# raylib/imgui_raylib/rlimgui/imguizmo_raylib targets, needed before
# add_subdirectory(core) below since core's own CMakeLists.txt defines a
# core_raylib target (holding shared raylib rendering/camera/picking code,
# e.g. core/include/Core/raylib_render.hpp) that links against them. Required
# unconditionally: apps/multi_view_tls_registration (step2) is raylib-based.
include(cmake/raylib.cmake)

# ============================================================================
# Core Library
# ============================================================================
Expand All @@ -106,10 +113,11 @@ if(BUILD_WITH_HD_MAPPER_APPLICATION)
add_subdirectory(apps/hd_mapper)
endif()

add_subdirectory(apps/lidar_odometry_step_1)
add_subdirectory(apps/lidar_odometry_step_1)
add_subdirectory(apps/manual_color)
add_subdirectory(apps/multi_session_registration)
add_subdirectory(apps/multi_view_tls_registration)
add_subdirectory(apps/multi_view_tls_registration_legacy)
add_subdirectory(apps/split_multi_livox)
add_subdirectory(apps/precision_forestry_tools)
add_subdirectory(apps/mandeye_raw_data_viewer)
Expand Down
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,18 @@ cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j
```

**Laptops with hybrid NVIDIA/Intel graphics:** the raylib-based apps (e.g. `multi_view_tls_registration_step_2`) may default to the integrated GPU even with `prime-select nvidia` set, since PRIME's on-demand/offload mode is a per-launch choice, not a system default. Force the discrete NVIDIA GPU with:

```bash
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia ./build/bin/multi_view_tls_registration_step_2
```

If the `nvidia-prime` package is installed, `prime-run` wraps the same env vars:

```bash
prime-run ./build/bin/multi_view_tls_registration_step_2
```

## Quick Start (macOS)

**Prerequisites:**
Expand Down
45 changes: 34 additions & 11 deletions apps/multi_view_tls_registration/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,27 @@ cmake_minimum_required(VERSION 4.0.0)
project(multi_view_tls_registration_step_2)

# Source files
#
# multi_view_tls_registration_gui.cpp is raylib-based: the GLUT-window-and-
# input-loop and point-cloud/loop-closure rendering code that used to go
# through core's own legacy-GL PointCloud::render()/PointClouds::render()
# now uses Core/raylib_render.hpp's ScanRenderer instead.
#
# rl_utils.cpp/rl_utils.h are this app's own raylib-based replacement for
# the camera/picking/mini-compass/misc-ImGui-widget API it used to get from
# core/src/utils.cpp (shared with the remaining GLUT apps, so it can't be
# changed), using rlgl's rl*() legacy-GL-emulation API instead of real
# gl*()/glu*()/glut*() calls -- see rl_utils.h's top comment.
#
# perform_experiment.cpp still #includes GLUT/glew/imgui-GLUT-backend headers,
# but never calls anything from them (verified: no glut*/GL_*/ImGui_Impl*
# symbols referenced in its body) -- those are dead includes left as-is, kept
# resolvable via the include dirs below rather than editing that file.
set(SOURCES
multi_view_tls_registration.cpp perform_experiment.cpp
multi_view_tls_registration.cpp perform_experiment.cpp
multi_view_tls_registration_gui.cpp multi_view_tls_registration.h
rl_utils.cpp rl_utils.h
../lidar_odometry_step_1/lidar_odometry_utils.cpp
"../../core/src/utils.cpp"
)

# Windows: add resource file
Expand All @@ -25,12 +41,14 @@ target_include_directories(
multi_view_tls_registration_step_2
PRIVATE include
${REPOSITORY_DIRECTORY}/core/include
${THIRDPARTY_DIRECTORY}/glm
${EIGEN3_INCLUDE_DIR}
${THIRDPARTY_DIRECTORY}
${THIRDPARTY_DIRECTORY}/glm
# For perform_experiment.cpp's unused-but-still-#included glm/GLUT/
# glew/imgui-GLUT-backend headers (see note above) -- not otherwise
# needed now that rendering goes through core_raylib.
${THIRDPARTY_DIRECTORY}/imgui
${THIRDPARTY_DIRECTORY}/imgui/backends
${THIRDPARTY_DIRECTORY}/ImGuizmo
${THIRDPARTY_DIRECTORY}/glew-cmake/include
${FREEGLUT_INCLUDE_DIR}
${THIRDPARTY_DIRECTORY}/json/include
Expand All @@ -42,18 +60,23 @@ target_include_directories(

target_link_libraries(
multi_view_tls_registration_step_2
PRIVATE
PRIVATE
# core_raylib brings in core + raylib transitively (PUBLIC link,
# see core/CMakeLists.txt) -- ScanRenderer (the GPU point-cloud
# renderer this app uses) lives there. FREEGLUT_LIBRARY is linked
# PUBLIC by core_raylib rather than here, so it lands correctly
# ordered relative to libcore.a on the final link line -- see the
# comment there for why.
core_raylib
imgui_raylib
rlimgui
imguizmo_raylib
WGS84toCartesian
wgs84_do_puwg92
unordered_dense::unordered_dense
spdlog::spdlog
OpenGL::GLU
${FREEGLUT_LIBRARY}
${OPENGL_gl_LIBRARY}
${PLATFORM_LASZIP_LIB}
${PLATFORM_MISCELLANEOUS_LIBS}
${CORE_LIBRARIES}
${GUI_LIBRARIES}
PROJ::proj)

if(WIN32)
Expand All @@ -71,4 +94,4 @@ if (MSVC)
target_compile_options(multi_view_tls_registration_step_2 PRIVATE /bigobj)
endif()

install (TARGETS multi_view_tls_registration_step_2 DESTINATION bin)
install (TARGETS multi_view_tls_registration_step_2 DESTINATION bin)
Loading
Loading