123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- # SPDX-License-Identifier: BSD-2-Clause
- cmake_minimum_required(VERSION 2.8.3)
- project(hdl_graph_slam)
- # Can we use C++17 in indigo?
- if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
- add_definitions(-std=c++11)
- set(CMAKE_CXX_FLAGS "-std=c++11")
- else()
- add_definitions(-std=c++14 -msse -msse2 -msse3 -msse4 -msse4.1 -msse4.2)
- set(CMAKE_CXX_FLAGS "-std=c++14 -msse -msse2 -msse3 -msse4 -msse4.1 -msse4.2")
- endif()
- set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/cmake")
- add_definitions("-Wall -g") # 启动调试模式
- SET(CMAKE_BUILD_TYPE Debug)
- # pcl 1.7 causes a segfault when it is built with debug mode
- set(CMAKE_BUILD_TYPE "RELEASE")
- find_package(catkin REQUIRED COMPONENTS
- fast_gicp
- geodesy
- geometry_msgs
- interactive_markers
- message_generation
- ndt_omp
- nmea_msgs
- pcl_ros
- roscpp
- rospy
- sensor_msgs
- std_msgs
- tf_conversions
- laser_geometry # 加上这个
- )
- catkin_python_setup()
- find_package(PCL REQUIRED)
- include_directories(${PCL_INCLUDE_DIRS})
- link_directories(${PCL_LIBRARY_DIRS})
- add_definitions(${PCL_DEFINITIONS})
- message(STATUS "PCL_INCLUDE_DIRS:" ${PCL_INCLUDE_DIRS})
- message(STATUS "PCL_LIBRARY_DIRS:" ${PCL_LIBRARY_DIRS})
- message(STATUS "PCL_DEFINITIONS:" ${PCL_DEFINITIONS})
- find_package(G2O REQUIRED)
- include_directories(SYSTEM ${G2O_INCLUDE_DIR} ${G2O_INCLUDE_DIRS})
- link_directories(${G2O_LIBRARY_DIRS})
- link_libraries(${G2O_LIBRARIES})
- find_package(OpenMP)
- if (OPENMP_FOUND)
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
- endif()
- find_library(VGICP_CUDA_FOUND NAMES fast_vgicp_cuda)
- message(STATUS "VGICP_CUDA_FOUND:" ${VGICP_CUDA_FOUND})
- if(VGICP_CUDA_FOUND)
- add_definitions(-DUSE_VGICP_CUDA)
- endif()
- ########################
- ## message generation ##
- ########################
- add_message_files(FILES
- FloorCoeffs.msg
- ScanMatchingStatus.msg
- )
- add_service_files(FILES
- SaveMap.srv
- LoadGraph.srv
- DumpGraph.srv
- )
- generate_messages(DEPENDENCIES std_msgs geometry_msgs)
- ###################################
- ## catkin specific configuration ##
- ###################################
- catkin_package(
- INCLUDE_DIRS include
- LIBRARIES hdl_graph_slam_nodelet
- CATKIN_DEPENDS
- geometry_msgs
- message_runtime
- nmea_msgs
- roscpp
- sensor_msgs
- std_msgs
- tf_conversions
- # DEPENDS system_lib
- )
- ###########
- ## Build ##
- ###########
- include_directories(include)
- include_directories(
- ${PCL_INCLUDE_DIRS}
- ${catkin_INCLUDE_DIRS}
- )
- # nodelets
- add_executable(laser2cloud src/laser2cloud.cpp)
- # add_library(laser_odom src/laser_odom.cpp)
- target_link_libraries(laser2cloud
- ${catkin_LIBRARIES}
- ${PCL_LIBRARIES}
- )
- # nodelets
- add_executable(tf src/tf.cpp)
- # add_library(laser_odom src/laser_odom.cpp)
- target_link_libraries(tf
- ${catkin_LIBRARIES}
- ${PCL_LIBRARIES}
- )
- add_executable(laser_odom src/laser_odom.cpp)
- # add_library(laser_odom src/laser_odom.cpp)
- target_link_libraries(laser_odom
- ${catkin_LIBRARIES}
- ${PCL_LIBRARIES}
- glog
- )
- add_executable(hdl_backend
- src/hdl_backend.cpp
- src/hdl_graph_slam/map_cloud_generator.cpp
- src/hdl_graph_slam/information_matrix_calculator.cpp
- src/hdl_graph_slam/graph_slam.cpp
- src/hdl_graph_slam/keyframe.cpp
- src/hdl_graph_slam/map_cloud_generator.cpp
- # src/hdl_graph_slam/src/hdl_graph_slam/map2odom_publisher.py
- src/hdl_graph_slam/registrations.cpp
- src/g2o/robust_kernel_io.cpp
- )
- # add_library(hdl_backend src/hdl_backend.cpp)
- target_link_libraries(hdl_backend
- ${catkin_LIBRARIES}
- ${PCL_LIBRARIES}
- glog
- # ${G2O_LIBRARY_DIRS}
- )
- target_link_libraries(hdl_backend
- ${catkin_LIBRARIES}
- ${PCL_LIBRARIES}
- ${G2O_TYPES_DATA}
- ${G2O_CORE_LIBRARY}
- ${G2O_STUFF_LIBRARY}
- ${G2O_SOLVER_PCG}
- ${G2O_SOLVER_CSPARSE} # be aware of that CSPARSE is released under LGPL
- ${G2O_SOLVER_CHOLMOD} # be aware of that cholmod is released under GPL
- ${G2O_TYPES_SLAM3D}
- ${G2O_TYPES_SLAM3D_ADDONS}
- )
- add_library(prefiltering_nodelet apps/prefiltering_nodelet.cpp)
- target_link_libraries(prefiltering_nodelet
- ${catkin_LIBRARIES}
- ${PCL_LIBRARIES}
- )
- add_library(floor_detection_nodelet apps/floor_detection_nodelet.cpp)
- target_link_libraries(floor_detection_nodelet
- ${catkin_LIBRARIES}
- ${PCL_LIBRARIES}
- )
- add_dependencies(floor_detection_nodelet ${PROJECT_NAME}_gencpp)
- add_library(scan_matching_odometry_nodelet
- apps/scan_matching_odometry_nodelet.cpp
- src/hdl_graph_slam/registrations.cpp
- )
- target_link_libraries(scan_matching_odometry_nodelet
- ${catkin_LIBRARIES}
- ${PCL_LIBRARIES}
- )
- add_dependencies(scan_matching_odometry_nodelet ${PROJECT_NAME}_gencpp)
- add_library(hdl_graph_slam_nodelet
- apps/hdl_graph_slam_nodelet.cpp
- src/hdl_graph_slam/graph_slam.cpp
- src/hdl_graph_slam/keyframe.cpp
- src/hdl_graph_slam/map_cloud_generator.cpp
- src/hdl_graph_slam/registrations.cpp
- src/hdl_graph_slam/information_matrix_calculator.cpp
- src/g2o/robust_kernel_io.cpp
- )
- target_link_libraries(hdl_graph_slam_nodelet
- ${catkin_LIBRARIES}
- ${PCL_LIBRARIES}
- ${G2O_TYPES_DATA}
- ${G2O_CORE_LIBRARY}
- ${G2O_STUFF_LIBRARY}
- ${G2O_SOLVER_PCG}
- ${G2O_SOLVER_CSPARSE} # be aware of that CSPARSE is released under LGPL
- ${G2O_SOLVER_CHOLMOD} # be aware of that cholmod is released under GPL
- ${G2O_TYPES_SLAM3D}
- ${G2O_TYPES_SLAM3D_ADDONS}
- glog
- )
- add_dependencies(hdl_graph_slam_nodelet ${PROJECT_NAME}_gencpp)
- catkin_install_python(
- PROGRAMS
- src/${PROJECT_NAME}/bag_player.py
- src/${PROJECT_NAME}/ford2bag.py
- src/${PROJECT_NAME}/map2odom_publisher.py
- DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
- )
- install(FILES nodelet_plugins.xml
- DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
- )
- install(TARGETS
- prefiltering_nodelet
- floor_detection_nodelet
- scan_matching_odometry_nodelet
- hdl_graph_slam_nodelet
- LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
- install(DIRECTORY include/
- DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}
- )
|