From b61b5a89bfcf27619a512d1dbb8359de7c994924 Mon Sep 17 00:00:00 2001 From: Michal Pelka Date: Sun, 31 May 2026 00:18:20 +0200 Subject: [PATCH 1/2] WIP, tracy Signed-off-by: Michal Pelka --- .../hdmapping_profiler.hpp | 46 ++++++++++++++ apps/lidar_odometry_step_1/lidar_odometry.cpp | 12 ++-- .../lidar_odometry_utils_optimizers.cpp | 62 +++++++++---------- 3 files changed, 83 insertions(+), 37 deletions(-) create mode 100644 apps/lidar_odometry_step_1/hdmapping_profiler.hpp diff --git a/apps/lidar_odometry_step_1/hdmapping_profiler.hpp b/apps/lidar_odometry_step_1/hdmapping_profiler.hpp new file mode 100644 index 00000000..b79ec195 --- /dev/null +++ b/apps/lidar_odometry_step_1/hdmapping_profiler.hpp @@ -0,0 +1,46 @@ +#pragma once + +// HDMapping profiler backend — chosen at CMake configure time via HDMAPPING_PROFILER=NONE|UTL|TRACY +// +// Usage in source files: +// HDMAP_ZONE_SCOPE("label") — scoped zone, ends when enclosing scope exits +// HDMAP_ZONE_BEGIN(id, "label") — manual zone begin (id must be unique in scope) +// HDMAP_ZONE_END(id) — manual zone end + +#if defined(HDMAPPING_PROFILER_TRACY) + + #pragma message("HDMapping profiler: Tracy enabled") + #include + #include + // ZoneNamedN lets us embed __LINE__ in the variable name, avoiding clashes + // when multiple HDMAP_ZONE_SCOPE appear in the same function scope. + #define HDMAP_ZONE_SCOPE(name) ZoneNamedN(TracyConcat(hdmap_zone_,__LINE__), name, true) + #define HDMAP_ZONE_BEGIN(id, name) TracyCZoneN(hdmap_ctx_##id, name, true) + #define HDMAP_ZONE_END(id) TracyCZoneEnd(hdmap_ctx_##id) + #define HDMAP_FRAME_MARK FrameMark + #define HDMAP_MESSAGE(msg) TracyMessageL(msg) + #define HDMAP_MESSAGE_STR(str) TracyMessage((str).c_str(), (str).size()) + #define HDMAP_PLOT(name, val) TracyPlot(name, static_cast(val)) + +#elif defined(HDMAPPING_PROFILER_UTL) + + #include + #define HDMAP_ZONE_SCOPE(name) UTL_PROFILER_SCOPE(name) + #define HDMAP_ZONE_BEGIN(id, name) UTL_PROFILER_BEGIN(id, name) + #define HDMAP_ZONE_END(id) UTL_PROFILER_END(id) + #define HDMAP_FRAME_MARK + #define HDMAP_MESSAGE(msg) + #define HDMAP_MESSAGE_STR(str) + #define HDMAP_PLOT(name, val) + +#else + + #define HDMAP_ZONE_SCOPE(name) + #define HDMAP_ZONE_BEGIN(id, name) + #define HDMAP_ZONE_END(id) + #define HDMAP_FRAME_MARK + #define HDMAP_MESSAGE(msg) + #define HDMAP_MESSAGE_STR(str) + #define HDMAP_PLOT(name, val) + +#endif \ No newline at end of file diff --git a/apps/lidar_odometry_step_1/lidar_odometry.cpp b/apps/lidar_odometry_step_1/lidar_odometry.cpp index d7eb89d4..692a43dd 100644 --- a/apps/lidar_odometry_step_1/lidar_odometry.cpp +++ b/apps/lidar_odometry_step_1/lidar_odometry.cpp @@ -1,6 +1,6 @@ #include "lidar_odometry.h" #include "tbb/tbb.h" -#include +#include "hdmapping_profiler.hpp" #include #include @@ -15,7 +15,7 @@ bool load_data( Imu& imu_data, bool debugMsg) { - UTL_PROFILER_SCOPE("load_data"); + HDMAP_ZONE_SCOPE("load_data"); std::sort(input_file_names.begin(), input_file_names.end()); std::vector csv_files, laz_files; std::string sn_file; @@ -304,7 +304,7 @@ bool load_data( void calculate_trajectory(Trajectory& trajectory, Imu& imu_data, LidarOdometryParams& params, bool debugMsg) { - UTL_PROFILER_SCOPE("calculate_trajectory"); + HDMAP_ZONE_SCOPE("calculate_trajectory"); const float RAD_TO_DEG = 180.0f / static_cast(M_PI); int counter = 1; @@ -462,7 +462,7 @@ bool compute_step_1( std::vector& worker_data, const std::atomic& pause) { - UTL_PROFILER_SCOPE("compute_step_1"); + HDMAP_ZONE_SCOPE("compute_step_1"); int number_of_initial_points = 0; double timestamp_begin = 0.0; @@ -697,7 +697,7 @@ void run_consistency(std::vector& worker_data, const LidarOdometryPa void save_result(std::vector& worker_data, LidarOdometryParams& params, fs::path outwd, double elapsed_time_s) { - UTL_PROFILER_SCOPE("save_result"); + HDMAP_ZONE_SCOPE("save_result"); std::filesystem::create_directory(outwd); // concatenate data std::vector worker_data_concatenated; @@ -1066,7 +1066,7 @@ std::string save_results_automatic( std::vector run_lidar_odometry(const std::string& input_dir, LidarOdometryParams& params) { - UTL_PROFILER_SCOPE("run_lidar_odometry"); + HDMAP_ZONE_SCOPE("run_lidar_odometry"); Session session; std::vector worker_data; std::vector input_file_names; diff --git a/apps/lidar_odometry_step_1/lidar_odometry_utils_optimizers.cpp b/apps/lidar_odometry_step_1/lidar_odometry_utils_optimizers.cpp index 72ca82a5..28bd2589 100644 --- a/apps/lidar_odometry_step_1/lidar_odometry_utils_optimizers.cpp +++ b/apps/lidar_odometry_step_1/lidar_odometry_utils_optimizers.cpp @@ -1,5 +1,5 @@ #include "lidar_odometry_utils.h" -#include +#include "hdmapping_profiler.hpp" #include #include #include @@ -1807,8 +1807,8 @@ void optimize_lidar_odometry( const double& convergence_result, const double& convergence_delta_threshold_outer_rgd) { - UTL_PROFILER_SCOPE("optimize_lidar_odometry"); - UTL_PROFILER_BEGIN(pre_hessian, "pre_hessian"); + HDMAP_ZONE_SCOPE("optimize_lidar_odometry"); + HDMAP_ZONE_BEGIN(pre_hessian, "pre_hessian"); double sigma_motion_model_om = lidar_odometry_motion_model_om_1_sigma_deg * DEG_TO_RAD; double sigma_motion_model_fi = lidar_odometry_motion_model_fi_1_sigma_deg * DEG_TO_RAD; double sigma_motion_model_ka = lidar_odometry_motion_model_ka_1_sigma_deg * DEG_TO_RAD; @@ -1840,9 +1840,9 @@ void optimize_lidar_odometry( for (const auto& pose : intermediate_trajectory) tait_bryan_poses.emplace_back(pose_tait_bryan_from_affine_matrix(pose)); - UTL_PROFILER_END(pre_hessian); + HDMAP_ZONE_END(pre_hessian); - UTL_PROFILER_BEGIN(hessian_compute, "hessian_compute"); + HDMAP_ZONE_BEGIN(hessian_compute, "hessian_compute"); const size_t num_points = intermediate_points.size(); const size_t num_poses = intermediate_trajectory.size(); using Mat6x6 = Eigen::Matrix; @@ -1853,7 +1853,7 @@ void optimize_lidar_odometry( const size_t chunk_size = (num_points + num_chunks - 1) / num_chunks; // Per-chunk per-pose accumulators: chunk_AtPA[chunk][pose] - UTL_PROFILER_BEGIN(hessian_alloc, "hessian_alloc"); + HDMAP_ZONE_BEGIN(hessian_alloc, "hessian_alloc"); static std::vector> chunk_AtPA; static std::vector> chunk_AtPB; chunk_AtPA.resize(num_chunks); @@ -1864,7 +1864,7 @@ void optimize_lidar_odometry( chunk_AtPB[c].resize(num_poses); } tbb::combinable thread_local_stats; - UTL_PROFILER_END(hessian_alloc); + HDMAP_ZONE_END(hessian_alloc); // Each chunk processes a fixed range of points and accumulates into its own // per-pose matrices. Fixed chunk boundaries guarantee identical accumulation @@ -1913,7 +1913,7 @@ void optimize_lidar_odometry( process_chunk(c); // Reduce chunk accumulators in fixed order - UTL_PROFILER_BEGIN(hessian_sum, "hessian_sum"); + HDMAP_ZONE_BEGIN(hessian_sum, "hessian_sum"); for (size_t chunk = 0; chunk < num_chunks; ++chunk) { for (size_t p = 0; p < num_poses; ++p) @@ -1923,7 +1923,7 @@ void optimize_lidar_odometry( AtPBndt.block<6, 1>(c, 0) -= chunk_AtPB[chunk][p]; } } - UTL_PROFILER_END(hessian_sum); + HDMAP_ZONE_END(hessian_sum); thread_local_stats.combine_each( [&](const LookupStats& s) @@ -1931,9 +1931,9 @@ void optimize_lidar_odometry( lookup_stats.indoor_lookups += s.indoor_lookups; lookup_stats.outdoor_lookups += s.outdoor_lookups; }); - UTL_PROFILER_END(hessian_compute); + HDMAP_ZONE_END(hessian_compute); - UTL_PROFILER_BEGIN(post_hessian, "post_hessian"); + HDMAP_ZONE_BEGIN(post_hessian, "post_hessian"); std::vector> odo_edges; for (size_t i = 1; i < intermediate_trajectory.size(); i++) odo_edges.emplace_back(i - 1, i); @@ -2154,7 +2154,7 @@ void optimize_lidar_odometry( for (int i = 0; i < h_x.size(); i++) delta += sqrt(h_x[i] * h_x[i]); } - UTL_PROFILER_END(post_hessian); + HDMAP_ZONE_END(post_hessian); return; } @@ -2284,12 +2284,12 @@ bool initialize_lidar_odometry( bool debugMsg, LookupStats& lookup_stats) { - UTL_PROFILER_SCOPE("initialize_lidar_odometry"); + HDMAP_ZONE_SCOPE("initialize_lidar_odometry"); bool debug = false; bool debug2 = true; - UTL_PROFILER_SCOPE("compute_step_2"); + HDMAP_ZONE_SCOPE("compute_step_2"); if (worker_data.size() != 0) { @@ -2362,7 +2362,7 @@ bool process_worker_step_1( std::atomic& loProgress, double& ts_failure) { - UTL_PROFILER_SCOPE("process_worker_step_1"); + HDMAP_ZONE_SCOPE("process_worker_step_1"); { static int last_logged_method = -2; @@ -2523,7 +2523,7 @@ bool process_worker_step_2( double& ts_failure, std::vector& intermediate_points) { - UTL_PROFILER_SCOPE("process_worker_step_2"); + HDMAP_ZONE_SCOPE("process_worker_step_2"); bool add_pitch_roll_constraint = false; @@ -2678,7 +2678,7 @@ bool process_worker_step_lidar_odometry_core( { spdlog::stopwatch stopwatch_realtime; - UTL_PROFILER_SCOPE("process_worker_step_lidar_odometry_core"); + HDMAP_ZONE_SCOPE("process_worker_step_lidar_odometry_core"); for (int iter = 0; iter < params.nr_iter; iter++) { @@ -2852,7 +2852,7 @@ bool compute_step_2( bool debug = false; bool debug2 = true; - UTL_PROFILER_SCOPE("compute_step_2"); + HDMAP_ZONE_SCOPE("compute_step_2"); spdlog::stopwatch stopwatch_total; double acc_distance = 0.0; @@ -2865,7 +2865,7 @@ bool compute_step_2( { for (int i = 0; i < worker_data.size(); i++) { - UTL_PROFILER_BEGIN(before_iter, "before_iterations"); + HDMAP_ZONE_BEGIN(before_iter, "before_iterations"); std::vector intermediate_points; // = worker_data[i].load_points(worker_data[i].intermediate_points_cache_file_name); @@ -2924,7 +2924,7 @@ bool compute_step_2( double delta = 100000.0; double lm_factor = 1.0; - UTL_PROFILER_END(before_iter); + HDMAP_ZONE_END(before_iter); process_worker_step_lidar_odometry_core( worker_data[i], @@ -2947,7 +2947,7 @@ bool compute_step_2( delta, lm_factor); - UTL_PROFILER_BEGIN(after_iter, "after_iterations"); + HDMAP_ZONE_BEGIN(after_iter, "after_iterations"); const double elapsed_seconds1 = stopwatch_worker.elapsed().count(); total_iterations += iter_end + 1; @@ -2978,7 +2978,7 @@ bool compute_step_2( loProgress.store((float)(i + 1) / worker_data.size()); // temp save - UTL_PROFILER_BEGIN(temp_save, "temp_save_laz"); + HDMAP_ZONE_BEGIN(temp_save, "temp_save_laz"); if (i % 100 == 0) { std::vector global_pointcloud; @@ -2997,7 +2997,7 @@ bool compute_step_2( std::string fn = params.working_directory_preview + "/temp_point_cloud_" + std::to_string(i) + ".laz"; exportLaz(fn.c_str(), global_pointcloud, intensity, timestamps); } - UTL_PROFILER_END(temp_save); + HDMAP_ZONE_END(temp_save); auto acc_distance_tmp = acc_distance; acc_distance += ((worker_data[i].intermediate_trajectory[0].inverse()) * @@ -3014,11 +3014,11 @@ bool compute_step_2( ts_failure = worker_data[i].intermediate_trajectory_timestamps[0].first; spdlog::warn( "calculations canceled for TIMESTAMP: {}", (int64_t)worker_data[i].intermediate_trajectory_timestamps[0].first); - UTL_PROFILER_END(after_iter); + HDMAP_ZONE_END(after_iter); return false; } - UTL_PROFILER_BEGIN(propagate_traj, "propagate_trajectory"); + HDMAP_ZONE_BEGIN(propagate_traj, "propagate_trajectory"); for (int j = i + 1; j < worker_data.size(); j++) { Eigen::Affine3d m_last = worker_data[j - 1].intermediate_trajectory[worker_data[j - 1].intermediate_trajectory.size() - 1]; @@ -3033,23 +3033,23 @@ bool compute_step_2( worker_data[j].intermediate_trajectory[k] = m_last; } } - UTL_PROFILER_END(propagate_traj); + HDMAP_ZONE_END(propagate_traj); - UTL_PROFILER_BEGIN(transform_pts, "transform_points_global"); + HDMAP_ZONE_BEGIN(transform_pts, "transform_points_global"); for (int j = 0; j < intermediate_points.size(); j++) { Point3Di pp = intermediate_points[j]; pp.point = worker_data[i].intermediate_trajectory[intermediate_points[j].index_pose] * pp.point; points_global.push_back(pp); } - UTL_PROFILER_END(transform_pts); + HDMAP_ZONE_END(transform_pts); // if(reference_points.size() == 0){ - UTL_PROFILER_BEGIN(update_rgd_after, "update_rgd"); + HDMAP_ZONE_BEGIN(update_rgd_after, "update_rgd"); process_worker_step_update_rgd_after(acc_distance, params, points_global, worker_data[i], lookup_stats, intermediate_points); - UTL_PROFILER_END(update_rgd_after); + HDMAP_ZONE_END(update_rgd_after); if (i > 1) { @@ -3058,7 +3058,7 @@ bool compute_step_2( .norm(); params.consecutive_distance += translation; } - UTL_PROFILER_END(after_iter); + HDMAP_ZONE_END(after_iter); } for (int i = 0; i < worker_data.size(); i++) From d836431b2ebba9fa02a74155f1274b22c2320836 Mon Sep 17 00:00:00 2001 From: Michal Pelka Date: Tue, 2 Jun 2026 01:32:27 +0200 Subject: [PATCH 2/2] Add Tracy profiler Signed-off-by: Michal Pelka --- CMakeLists.txt | 23 ++++++- README.md | 10 +++ apps/lidar_odometry_step_1/CMakeLists.txt | 24 +++++-- .../hdmapping_profiler.hpp | 54 ++++++++-------- apps/lidar_odometry_step_1/lidar_odometry.cpp | 2 +- .../lidar_odometry_utils_optimizers.cpp | 2 +- .../CMakeLists.txt | 2 - .../CMakeLists.txt | 2 - apps/mandeye_raw_data_viewer/CMakeLists.txt | 2 - .../multi_session_registration.cpp | 63 ++++++------------- apps/quick_start_demo/CMakeLists.txt | 2 - pybind/CMakeLists.txt | 3 +- 12 files changed, 98 insertions(+), 91 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b13412cc..74a99aa6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,10 @@ set_property(CACHE HD_CPU_OPTIMIZATION PROPERTY STRINGS AUTO INTEL AMD ARM GENER option(BUILD_WITH_CLI_TOOLS "Build with command line tools" ON) option(BUILD_WITH_HD_MAPPER_APPLICATION "Build with hd_mapper tool" OFF) option(BUILD_WITH_QUICK_START_DEMO "Build with quick_start_demo" OFF) -option(BUILD_WITH_UTL_PROFILER_DISABLED "Disable UTL profiler (zero overhead when ON)" ON) + +# Three-way profiler backend: NONE (zero overhead) | UTL (lightweight) | TRACY (full profiler) +set(HDMAPPING_PROFILER "NONE" CACHE STRING "Profiler backend: NONE | UTL | TRACY") +set_property(CACHE HDMAPPING_PROFILER PROPERTY STRINGS NONE UTL TRACY) option(BUILD_WITH_BUNDLED_FREEGLUT "Build with bundled FreeGlut" ON) option(BUILD_WITH_BUNDLED_GLEW "Build with bundled GLEW" ON) option(BUILD_WITH_BUNDLED_LIBLASZIP "Build with bundled Lib LASZIP" ON) @@ -182,6 +185,24 @@ MESSAGE(STATUS "Using bundled spdlog from: ${THIRDPARTY_DIRECTORY}/spdlog") add_subdirectory(${THIRDPARTY_DIRECTORY}/UTL) MESSAGE(STATUS "Using bundled UTL from: ${THIRDPARTY_DIRECTORY}/UTL") +# ---- Profiler backend ---- +if(HDMAPPING_PROFILER STREQUAL "TRACY") + include(FetchContent) + FetchContent_Declare(tracy + GIT_REPOSITORY https://github.com/wolfpld/tracy.git + GIT_TAG v0.13.1 + GIT_SHALLOW TRUE + ) + set(TRACY_ENABLE ON CACHE BOOL "" FORCE) + set(TRACY_ON_DEMAND ON CACHE BOOL "" FORCE) + FetchContent_MakeAvailable(tracy) + message(STATUS "HDMapping profiler: Tracy v0.13.1 (on-demand)") +elseif(HDMAPPING_PROFILER STREQUAL "UTL") + message(STATUS "HDMapping profiler: UTL") +else() + message(STATUS "HDMapping profiler: NONE (disabled)") +endif() + if(BUILD_WITH_PYBIND) message(STATUS "BUILD_WITH_PYBIND is enabled: fetching pybind.") include(FetchContent) diff --git a/README.md b/README.md index f6c622c5..8cbe64d0 100644 --- a/README.md +++ b/README.md @@ -535,6 +535,15 @@ For example on WSL2 Ubuntu-24.04 following package is required to run GUI applic ```bash sudo apt install zenity ``` +# Profiling + +You can use multiple backends to profile the code (UTL, Tracy-Profiler) + +- Using Tracy-Profiler requires to install / build from source Tracy-Profiler from https://github.com/wolfpld/tracy/releases/tag/v0.13.1. +- Build and run the project with `cmake .. -DCMAKE_BUILD_TYPE=ReleaseWithDebInfo -DHDMAPPING_PROFILER=TRACY` +- Open Tracy Profiler and run e.g. `lidar_odometry_step_1`. Tracy-Profiler should recongnize the code and show the results. +- +To use UTL profiler build and run the project with `cmake .. -DCMAKE_BUILD_TYPE=ReleaseWithDebInfo -DHDMAPPING_PROFILER=UTL` # Building Debian package. @@ -561,6 +570,7 @@ To install package : sudo dpkg -i hd_mapping-0.*.*-Linux.deb ``` + ![mandeye](images/softwareX1.png) Mobile mapping systems is based on LiVOX MID360 - laser scanner with non repetetive scanning pattern. diff --git a/apps/lidar_odometry_step_1/CMakeLists.txt b/apps/lidar_odometry_step_1/CMakeLists.txt index 3f996977..dbcdf0e2 100644 --- a/apps/lidar_odometry_step_1/CMakeLists.txt +++ b/apps/lidar_odometry_step_1/CMakeLists.txt @@ -2,6 +2,20 @@ cmake_minimum_required(VERSION 4.0.0) project(lidar_odometry_step_1) +# Apply the chosen profiler backend to a target. +function(target_apply_hdmapping_profiler TARGET) + if(HDMAPPING_PROFILER STREQUAL "TRACY") + target_compile_definitions(${TARGET} PRIVATE + HDMAPPING_PROFILER_TRACY TRACY_ENABLE TRACY_ON_DEMAND + UTL_PROFILER_DISABLE) # silence any remaining UTL_PROFILER_* calls + target_link_libraries(${TARGET} PRIVATE TracyClient) + elseif(HDMAPPING_PROFILER STREQUAL "UTL") + target_compile_definitions(${TARGET} PRIVATE HDMAPPING_PROFILER_UTL) + else() + target_compile_definitions(${TARGET} PRIVATE UTL_PROFILER_DISABLE) + endif() +endfunction() + # Source files set(SOURCES lidar_odometry_utils.h lidar_odometry_utils.cpp @@ -20,9 +34,8 @@ add_executable( lidar_odometry_step_1 lidar_odometry_gui.cpp ${SOURCES} ) -target_compile_definitions(lidar_odometry_step_1 PRIVATE - WITH_GUI=1 - $<$:BUILD_WITH_UTL_PROFILER_DISABLED>) +target_compile_definitions(lidar_odometry_step_1 PRIVATE WITH_GUI=1) +target_apply_hdmapping_profiler(lidar_odometry_step_1) target_include_directories( lidar_odometry_step_1 @@ -79,9 +92,8 @@ add_executable( drag_folder_with_mandeye_data_and_drop_here-precision_forestry drag_folder_with_mandeye_data_and_drop_here-precision_forestry.cpp ${SOURCES} ) -target_compile_definitions(drag_folder_with_mandeye_data_and_drop_here-precision_forestry PRIVATE - WITH_GUI=1 - $<$:BUILD_WITH_UTL_PROFILER_DISABLED>) +target_compile_definitions(drag_folder_with_mandeye_data_and_drop_here-precision_forestry PRIVATE WITH_GUI=1) +target_apply_hdmapping_profiler(drag_folder_with_mandeye_data_and_drop_here-precision_forestry) target_include_directories( drag_folder_with_mandeye_data_and_drop_here-precision_forestry diff --git a/apps/lidar_odometry_step_1/hdmapping_profiler.hpp b/apps/lidar_odometry_step_1/hdmapping_profiler.hpp index b79ec195..56723c33 100644 --- a/apps/lidar_odometry_step_1/hdmapping_profiler.hpp +++ b/apps/lidar_odometry_step_1/hdmapping_profiler.hpp @@ -9,38 +9,38 @@ #if defined(HDMAPPING_PROFILER_TRACY) - #pragma message("HDMapping profiler: Tracy enabled") - #include - #include - // ZoneNamedN lets us embed __LINE__ in the variable name, avoiding clashes - // when multiple HDMAP_ZONE_SCOPE appear in the same function scope. - #define HDMAP_ZONE_SCOPE(name) ZoneNamedN(TracyConcat(hdmap_zone_,__LINE__), name, true) - #define HDMAP_ZONE_BEGIN(id, name) TracyCZoneN(hdmap_ctx_##id, name, true) - #define HDMAP_ZONE_END(id) TracyCZoneEnd(hdmap_ctx_##id) - #define HDMAP_FRAME_MARK FrameMark - #define HDMAP_MESSAGE(msg) TracyMessageL(msg) - #define HDMAP_MESSAGE_STR(str) TracyMessage((str).c_str(), (str).size()) - #define HDMAP_PLOT(name, val) TracyPlot(name, static_cast(val)) +#pragma message("HDMapping profiler: Tracy enabled") +#include +#include +// ZoneNamedN lets us embed __LINE__ in the variable name, avoiding clashes +// when multiple HDMAP_ZONE_SCOPE appear in the same function scope. +#define HDMAP_ZONE_SCOPE(name) ZoneNamedN(TracyConcat(hdmap_zone_, __LINE__), name, true) +#define HDMAP_ZONE_BEGIN(id, name) TracyCZoneN(hdmap_ctx_##id, name, true) +#define HDMAP_ZONE_END(id) TracyCZoneEnd(hdmap_ctx_##id) +#define HDMAP_FRAME_MARK FrameMark +#define HDMAP_MESSAGE(msg) TracyMessageL(msg) +#define HDMAP_MESSAGE_STR(str) TracyMessage((str).c_str(), (str).size()) +#define HDMAP_PLOT(name, val) TracyPlot(name, static_cast(val)) #elif defined(HDMAPPING_PROFILER_UTL) - #include - #define HDMAP_ZONE_SCOPE(name) UTL_PROFILER_SCOPE(name) - #define HDMAP_ZONE_BEGIN(id, name) UTL_PROFILER_BEGIN(id, name) - #define HDMAP_ZONE_END(id) UTL_PROFILER_END(id) - #define HDMAP_FRAME_MARK - #define HDMAP_MESSAGE(msg) - #define HDMAP_MESSAGE_STR(str) - #define HDMAP_PLOT(name, val) +#include +#define HDMAP_ZONE_SCOPE(name) UTL_PROFILER_SCOPE(name) +#define HDMAP_ZONE_BEGIN(id, name) UTL_PROFILER_BEGIN(id, name) +#define HDMAP_ZONE_END(id) UTL_PROFILER_END(id) +#define HDMAP_FRAME_MARK +#define HDMAP_MESSAGE(msg) +#define HDMAP_MESSAGE_STR(str) +#define HDMAP_PLOT(name, val) #else - #define HDMAP_ZONE_SCOPE(name) - #define HDMAP_ZONE_BEGIN(id, name) - #define HDMAP_ZONE_END(id) - #define HDMAP_FRAME_MARK - #define HDMAP_MESSAGE(msg) - #define HDMAP_MESSAGE_STR(str) - #define HDMAP_PLOT(name, val) +#define HDMAP_ZONE_SCOPE(name) +#define HDMAP_ZONE_BEGIN(id, name) +#define HDMAP_ZONE_END(id) +#define HDMAP_FRAME_MARK +#define HDMAP_MESSAGE(msg) +#define HDMAP_MESSAGE_STR(str) +#define HDMAP_PLOT(name, val) #endif \ No newline at end of file diff --git a/apps/lidar_odometry_step_1/lidar_odometry.cpp b/apps/lidar_odometry_step_1/lidar_odometry.cpp index 692a43dd..b0e2fb47 100644 --- a/apps/lidar_odometry_step_1/lidar_odometry.cpp +++ b/apps/lidar_odometry_step_1/lidar_odometry.cpp @@ -1,6 +1,6 @@ #include "lidar_odometry.h" -#include "tbb/tbb.h" #include "hdmapping_profiler.hpp" +#include "tbb/tbb.h" #include #include diff --git a/apps/lidar_odometry_step_1/lidar_odometry_utils_optimizers.cpp b/apps/lidar_odometry_step_1/lidar_odometry_utils_optimizers.cpp index 28bd2589..d99e818d 100644 --- a/apps/lidar_odometry_step_1/lidar_odometry_utils_optimizers.cpp +++ b/apps/lidar_odometry_step_1/lidar_odometry_utils_optimizers.cpp @@ -1,5 +1,5 @@ -#include "lidar_odometry_utils.h" #include "hdmapping_profiler.hpp" +#include "lidar_odometry_utils.h" #include #include #include diff --git a/apps/livox_mid_360_intrinsic_calibration/CMakeLists.txt b/apps/livox_mid_360_intrinsic_calibration/CMakeLists.txt index 04a0a316..fd20d27a 100644 --- a/apps/livox_mid_360_intrinsic_calibration/CMakeLists.txt +++ b/apps/livox_mid_360_intrinsic_calibration/CMakeLists.txt @@ -28,8 +28,6 @@ target_include_directories( ${THIRDPARTY_DIRECTORY}/observation_equations/codes ${THIRDPARTY_DIRECTORY}/vqf/vqf/cpp) -target_compile_definitions(livox_mid_360_intrinsic_calibration PRIVATE BUILD_WITH_UTL_PROFILER_DISABLED) - target_link_libraries( livox_mid_360_intrinsic_calibration PRIVATE vqf diff --git a/apps/mandeye_mission_recorder_calibration/CMakeLists.txt b/apps/mandeye_mission_recorder_calibration/CMakeLists.txt index 6612f247..cffa1847 100644 --- a/apps/mandeye_mission_recorder_calibration/CMakeLists.txt +++ b/apps/mandeye_mission_recorder_calibration/CMakeLists.txt @@ -38,8 +38,6 @@ target_include_directories( ${THIRDPARTY_DIRECTORY}/observation_equations/codes ${THIRDPARTY_DIRECTORY}/vqf/vqf/cpp) -target_compile_definitions(mandeye_mission_recorder_calibration PRIVATE BUILD_WITH_UTL_PROFILER_DISABLED) - target_link_libraries( mandeye_mission_recorder_calibration PRIVATE vqf diff --git a/apps/mandeye_raw_data_viewer/CMakeLists.txt b/apps/mandeye_raw_data_viewer/CMakeLists.txt index 9765d440..87362d60 100644 --- a/apps/mandeye_raw_data_viewer/CMakeLists.txt +++ b/apps/mandeye_raw_data_viewer/CMakeLists.txt @@ -42,8 +42,6 @@ target_include_directories( ${THIRDPARTY_DIRECTORY}/vqf/vqf/cpp ${THIRDPARTY_DIRECTORY}/Fusion/Fusion) -target_compile_definitions(mandeye_raw_data_viewer PRIVATE BUILD_WITH_UTL_PROFILER_DISABLED) - target_link_libraries( mandeye_raw_data_viewer PRIVATE vqf Fusion diff --git a/apps/multi_session_registration/multi_session_registration.cpp b/apps/multi_session_registration/multi_session_registration.cpp index 3fde9b35..f72629c5 100644 --- a/apps/multi_session_registration/multi_session_registration.cpp +++ b/apps/multi_session_registration/multi_session_registration.cpp @@ -3763,41 +3763,32 @@ pose_tait_bryan_from_affine_matrix(m_src.inverse() * m_g); if (i >= sessions.size()) { - std::cerr << "No loaded session for: " - << session_path << std::endl; + std::cerr << "No loaded session for: " << session_path << std::endl; continue; } Session& session = sessions[i]; - std::filesystem::path session_dir = - std::filesystem::path(session_path).parent_path(); + std::filesystem::path session_dir = std::filesystem::path(session_path).parent_path(); - std::filesystem::path base_dir = - session_dir.parent_path(); + std::filesystem::path base_dir = session_dir.parent_path(); - std::filesystem::path output_dir = - base_dir / "all_tum_files"; + std::filesystem::path output_dir = base_dir / "all_tum_files"; try { std::filesystem::create_directories(output_dir); - } - catch (const std::exception& e) + } catch (const std::exception& e) { - std::cerr << "Failed to create export directory: " - << e.what() << std::endl; + std::cerr << "Failed to create export directory: " << e.what() << std::endl; continue; } - std::string folder_name = - session_dir.filename().string(); + std::string folder_name = session_dir.filename().string(); - std::filesystem::path txt_path = - output_dir / (folder_name + "_trajectory_tum.txt"); + std::filesystem::path txt_path = output_dir / (folder_name + "_trajectory_tum.txt"); - std::cout << "Saving trajectory to TUM TXT: " - << txt_path << std::endl; + std::cout << "Saving trajectory to TUM TXT: " << txt_path << std::endl; try { @@ -3805,8 +3796,7 @@ pose_tait_bryan_from_affine_matrix(m_src.inverse() * m_g); if (!outfile.is_open()) { - std::cerr << "Failed to create file: " - << txt_path << std::endl; + std::cerr << "Failed to create file: " << txt_path << std::endl; continue; } @@ -3823,40 +3813,23 @@ pose_tait_bryan_from_affine_matrix(m_src.inverse() * m_g); Eigen::Quaterniond q(pose.rotation()); - double t_s = - static_cast(traj.timestamps.first) / 1e9; - - outfile << std::fixed - << std::setprecision(9) - << t_s << " " - << std::setprecision(10) - << pos.x() << " " - << pos.y() << " " - << pos.z() << " " - << q.x() << " " - << q.y() << " " - << q.z() << " " - << q.w() + double t_s = static_cast(traj.timestamps.first) / 1e9; + + outfile << std::fixed << std::setprecision(9) << t_s << " " << std::setprecision(10) << pos.x() << " " + << pos.y() << " " << pos.z() << " " << q.x() << " " << q.y() << " " << q.z() << " " << q.w() << "\n"; } } outfile.close(); - std::cout << "Saved: " - << txt_path << std::endl; - } - catch (const std::exception& e) + std::cout << "Saved: " << txt_path << std::endl; + } catch (const std::exception& e) { - std::cerr << "Error creating " - << txt_path - << ": " - << e.what() - << std::endl; + std::cerr << "Error creating " << txt_path << ": " << e.what() << std::endl; } } - std::cout << "Finished saving all trajectories to single folder." - << std::endl; + std::cout << "Finished saving all trajectories to single folder." << std::endl; } ImGui::EndMenu(); diff --git a/apps/quick_start_demo/CMakeLists.txt b/apps/quick_start_demo/CMakeLists.txt index 6803cd5b..b0b57109 100644 --- a/apps/quick_start_demo/CMakeLists.txt +++ b/apps/quick_start_demo/CMakeLists.txt @@ -28,8 +28,6 @@ target_include_directories( ${THIRDPARTY_DIRECTORY}/observation_equations/codes ${THIRDPARTY_DIRECTORY}/vqf/vqf/cpp) -target_compile_definitions(quick_start_demo PRIVATE BUILD_WITH_UTL_PROFILER_DISABLED) - target_link_libraries( quick_start_demo PRIVATE vqf diff --git a/pybind/CMakeLists.txt b/pybind/CMakeLists.txt index f330e605..7f9c3bfc 100644 --- a/pybind/CMakeLists.txt +++ b/pybind/CMakeLists.txt @@ -35,8 +35,7 @@ endif() add_library(lidar_odometry_py MODULE lidar_odometry_binding.cpp) target_compile_definitions(lidar_odometry_py PRIVATE - WITH_GUI=0 - $<$:BUILD_WITH_UTL_PROFILER_DISABLED>) + WITH_GUI=0) if (MSVC) target_compile_options(lidar_odometry_py PRIVATE /bigobj) endif()