1 Star 0 Fork 0

刘旺/HesaiLidar_ROS_2.0

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
CMakeLists.txt 7.43 KB
一键复制 编辑 原始数据 按行查看 历史
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0048 NEW)
project(hesai_ros_driver)
#=======================================
# Version information
#=======================================
set(VERSION_MAJOR 2)
set(VERSION_MINOR 0)
set(VERSION_TINY 5)
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/Version.h.in"
"${CMAKE_CURRENT_BINARY_DIR}/Version.h"
)
#=======================================
# Custom Point Type (XYZI, XYZIRT)
#=======================================
set(POINT_TYPE XYZI)
#=======================================
# Compile setup (ORIGINAL, CATKIN, COLCON)
#=======================================
message(=============================================================)
message("-- ROS_VERSION is $ENV{ROS_VERSION}")
message(=============================================================)
#========================
# Project details / setup
#========================
set(PROJECT_NAME hesai_ros_driver)
add_definitions(-DPROJECT_PATH="${PROJECT_SOURCE_DIR}")
if (CMAKE_BUILD_TYPE STREQUAL "")
set(CMAKE_BUILD_TYPE Release)
add_definitions(-O3)
endif()
if($ENV{ROS_DISTRO} STREQUAL "humble") # the ros2 humble requires c++17
add_definitions(-std=c++17)
else()
add_definitions(-std=c++14)
endif()
add_compile_options(-Wall)
#========================
# Dependencies Setup
#========================
#ROS#
#Catkin#
if($ENV{ROS_VERSION} MATCHES "1")
find_package(roscpp 1.12 QUIET)
find_package(roslib QUIET)
include_directories(${roscpp_INCLUDE_DIRS} ${roslib_INCLUDE_DIRS})
set(ROS_LIBS ${roscpp_LIBRARIES} ${roslib_LIBRARIES})
add_definitions(-DROS_FOUND)
add_definitions(-DRUN_IN_ROS_WORKSPACE)
find_package(catkin REQUIRED COMPONENTS
roscpp
sensor_msgs
std_msgs
message_generation
roslib)
add_message_files(
FILES
"UdpPacket.msg"
"UdpFrame.msg"
)
generate_messages(
DEPENDENCIES
std_msgs
)
catkin_package(CATKIN_DEPENDS
sensor_msgs
roslib)
endif($ENV{ROS_VERSION} MATCHES "1")
#ROS2#
if($ENV{ROS_VERSION} MATCHES "2")
find_package(rclcpp QUIET)
if(rclcpp_FOUND)
message(=============================================================)
message("-- ROS2 Found. ROS2 Support is turned On.")
message(=============================================================)
add_definitions(-DROS2_FOUND)
include_directories(${rclcpp_INCLUDE_DIRS})
set(CMAKE_CXX_STANDARD 14)
find_package(ament_cmake REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(std_msgs REQUIRED)
find_package(rclcpp_action REQUIRED)
find_package(rosidl_typesupport_c REQUIRED)
find_package(rosidl_default_generators REQUIRED)
find_package(builtin_interfaces REQUIRED)
find_package(std_msgs REQUIRED)
rosidl_generate_interfaces(${PROJECT_NAME}
"msg/msg_ros2/UdpPacket.msg"
"msg/msg_ros2/UdpFrame.msg"
DEPENDENCIES builtin_interfaces std_msgs
)
ament_export_dependencies(rosidl_default_runtime)
else(rclcpp_FOUND)
message(=============================================================)
message("-- ROS2 Not Found. ROS2 Support is turned Off.")
message(=============================================================)
endif(rclcpp_FOUND )
endif($ENV{ROS_VERSION} MATCHES "2")
#Others#
find_package(yaml-cpp REQUIRED)
#Include directory#
include_directories(${PROJECT_SOURCE_DIR}/src)
#Driver core#
add_subdirectory(src/driver/HesaiLidar_SDK_2.0)
#========================
# Build Setup
#========================
# add_executable(hesai_ros_driver_node
# node/hesai_ros_driver_node.cpp
# src/manager/node_manager.cpp
# )
find_package(CUDA)
if(CUDA_FOUND)
message(=============================================================)
message("-- CUDA Found. CUDA Support is turned On.")
message(=============================================================)
link_directories($ENV{CUDA_PATH}/lib/x64)
set(CUDA_NVCC_FLAGS "-arch=sm_75;-O2;-std=c++17")#根据具体GPU性能更改算力参数
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -rdc=true")
list(APPEND CUDA_NVCC_FLAGS -Xcompiler -fPIC)
CUDA_ADD_EXECUTABLE(hesai_ros_driver_node
node/hesai_ros_driver_node.cu
src/manager/node_manager.cu
./src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src/buffer.cu
)
set(CUDA_LIBS "${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcudart.so")
target_link_libraries(hesai_ros_driver_node
${YAML_CPP_LIBRARIES}
${Boost_LIBRARIES}
source_lib
container_lib
ptcClient_lib
ptcParser_lib
log_lib
${CUDA_LIBS}
# libhesai
)
else(CUDA_FOUND)
message(=============================================================)
message("-- CUDA Not Found. CUDA Support is turned Off.")
message(=============================================================)
add_executable(hesai_ros_driver_node
node/hesai_ros_driver_node.cc
src/manager/node_manager.cc
)
target_link_libraries(hesai_ros_driver_node
${YAML_CPP_LIBRARIES}
${Boost_LIBRARIES}
source_lib
container_lib
ptcClient_lib
ptcParser_lib
log_lib
# libhesai
)
endif(CUDA_FOUND)
target_include_directories(hesai_ros_driver_node PRIVATE
src/driver/HesaiLidar_SDK_2.0/
src/driver/HesaiLidar_SDK_2.0/libhesai
src/driver/HesaiLidar_SDK_2.0/libhesai/Lidar
src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser
src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/include
src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParser/src
src/driver/HesaiLidar_SDK_2.0/libhesai/UdpProtocol
src/driver/HesaiLidar_SDK_2.0/libhesai/Source/include
src/driver/HesaiLidar_SDK_2.0/libhesai/Container/include
src/driver/HesaiLidar_SDK_2.0/libhesai/Container/src
src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu
src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/include
src/driver/HesaiLidar_SDK_2.0/libhesai/UdpParserGpu/src
src/driver/HesaiLidar_SDK_2.0/libhesai/PtcClient/include
src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser/include
src/driver/HesaiLidar_SDK_2.0/libhesai/PtcParser
src/driver/HesaiLidar_SDK_2.0/libhesai/Logger/include
src/driver/HesaiLidar_SDK_2.0/libhesai/include
src/driver/HesaiLidar_SDK_2.0/driver
src/manager
src/msg/ros_msg
src/msg/rs_msg
src/utility
${CMAKE_CURRENT_BINARY_DIR}
)
#Ros#
if($ENV{ROS_VERSION} MATCHES "1")
target_link_libraries(hesai_ros_driver_node ${ROS_LIBS})
install(TARGETS hesai_ros_driver_node
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
endif($ENV{ROS_VERSION} MATCHES "1")
#Ros2#
if($ENV{ROS_VERSION} MATCHES "2")
find_package(ament_index_cpp REQUIRED)
ament_target_dependencies(hesai_ros_driver_node
"ament_index_cpp"
"rcl_interfaces"
"rclcpp"
"rcutils"
"std_msgs"
"sensor_msgs"
# "tf2_geometry_msgs"
)
rosidl_target_interfaces(hesai_ros_driver_node ${PROJECT_NAME} "rosidl_typesupport_cpp")
install(TARGETS
hesai_ros_driver_node
DESTINATION lib/${PROJECT_NAME})
install(DIRECTORY
launch
rviz
DESTINATION share/${PROJECT_NAME})
ament_package()
endif($ENV{ROS_VERSION} MATCHES "2")
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/jackwang233/HesaiLidar_ROS_2.0.git
git@gitee.com:jackwang233/HesaiLidar_ROS_2.0.git
jackwang233
HesaiLidar_ROS_2.0
HesaiLidar_ROS_2.0
master

搜索帮助