From 32db909e31ee8317435cfa1a34846176deedad04 Mon Sep 17 00:00:00 2001 From: YANG Zhenfei Date: Mon, 21 Nov 2022 16:25:14 +0800 Subject: [PATCH] asan --- CMakeLists.txt | 8 +++++- examples/ikd_Tree_demo.cpp | 4 ++- examples/ikd_simple_test.cpp | 47 ++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 examples/ikd_simple_test.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 629324d..1bd5982 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,9 @@ include_directories( ikd-Tree ) +set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -fsanitize=address") +set (CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -fno-omit-frame-pointer -fsanitize=address") + add_executable(ikd_tree_demo examples/ikd_Tree_demo.cpp ikd-Tree/ikd_Tree.cpp) target_link_libraries(ikd_tree_demo ${PCL_LIBRARIES}) @@ -19,4 +22,7 @@ add_executable(ikd_tree_async_demo examples/ikd_Tree_Async_demo.cpp ikd-Tree/ikd target_link_libraries(ikd_tree_async_demo ${PCL_LIBRARIES}) add_executable(ikd_tree_Search_demo examples/ikd_Tree_Search_demo.cpp ikd-Tree/ikd_Tree.cpp) -target_link_libraries(ikd_tree_Search_demo ${PCL_LIBRARIES}) \ No newline at end of file +target_link_libraries(ikd_tree_Search_demo ${PCL_LIBRARIES}) + +add_executable(ikd_simple_test examples/ikd_simple_test.cpp ikd-Tree/ikd_Tree.cpp) +target_link_libraries(ikd_simple_test ${PCL_LIBRARIES}) diff --git a/examples/ikd_Tree_demo.cpp b/examples/ikd_Tree_demo.cpp index de2aaa0..33b9806 100644 --- a/examples/ikd_Tree_demo.cpp +++ b/examples/ikd_Tree_demo.cpp @@ -182,6 +182,8 @@ PointType generate_target_point(){ } int main(int argc, char** argv){ + //const char* name = std::string("hello").c_str(); + //puts(name); srand((unsigned) time(NULL)); printf("Testing ...\n"); int counter = 0; @@ -283,4 +285,4 @@ int main(int argc, char** argv){ printf("Box-wse Re-insertion (%d boxes): %0.3fms\n",Box_Num,box_add_time/box_add_counter); printf("Nearest Search (%d points): %0.3fms\n", Search_Counter,search_time/counter); return 0; -} \ No newline at end of file +} diff --git a/examples/ikd_simple_test.cpp b/examples/ikd_simple_test.cpp new file mode 100644 index 0000000..6bef4b1 --- /dev/null +++ b/examples/ikd_simple_test.cpp @@ -0,0 +1,47 @@ +#include +#include +#include +#include +#include +#include + + +using PointType = ikdTree_PointType;//Eigen::Vector3f; +using PointVector = KD_TREE::PointVector; +PointVector RandomCloud(size_t size, float range) { + PointVector result; + result.reserve(size); + for (size_t i = 0; i < size; i++) { + auto r = range * Eigen::Vector3f::Random(); + result.emplace_back(r[0], r[1], r[2]); + } + return result; +} + + +int main(int argc, char** argv) +{ + if(argc == 1) + { + const char* name = std::string("hello").c_str(); + puts(name); + } + PointVector points = RandomCloud(200, 20); + auto *tree = new KD_TREE(0.2,0.2,0.2); + //tree->set_downsample_param(0.001); + tree->Build(points); + + // search nn test + for (size_t i = 0; i < points.size(); i++) { + std::vector> points_near; + std::vector sqr_distances; + tree->Nearest_Search(points[i], 1, points_near, sqr_distances); + puts(points_near.size()==1?"OK":"FAIL"); + //EXPECT_EQ(points_near.size(), 1); + puts(points_near[0].x==points[i].x?"OK":"FAIL"); + puts(points_near[0].y==points[i].y?"OK":"FAIL"); + puts(points_near[0].z==points[i].z?"OK":"FAIL"); + //EXPECT_FLOAT_EQ(0.0, sqr_distances[0]); + } + puts("done"); +}