@@ -6,6 +6,8 @@ project(azure_kinect_ros_driver LANGUAGES C CXX)
66
77list (INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_LIST_DIR} /cmake)
88
9+ option (CUDA_SUPPORT "use CUDA support onnxruntime library" ON )
10+
911## Find catkin macros and libraries
1012## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
1113## is used, also find other catkin packages
@@ -14,6 +16,7 @@ find_package(catkin REQUIRED COMPONENTS
1416 std_msgs
1517 sensor_msgs
1618 image_transport
19+ image_geometry
1720 nodelet
1821 tf2
1922 tf2_ros
@@ -24,6 +27,7 @@ find_package(catkin REQUIRED COMPONENTS
2427 camera_info_manager
2528)
2629
30+ find_package (OpenCV REQUIRED)
2731###################################
2832## catkin specific configuration ##
2933###################################
@@ -77,6 +81,7 @@ set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX ""
7781############################
7882
7983message ("Finding K4A SDK binaries" )
84+ message ("--------------------------------------------${CMAKE_MODULE_PATH} -----------------------------------------" )
8085
8186# Disable cached locations for K4A SDK binaries.
8287# Do this to force the search logic to happen correctly.
@@ -92,20 +97,121 @@ find_package(k4a 1.3.0 QUIET MODULE REQUIRED)
9297set (K4A_LIBS k4a::k4a;k4a::k4arecord)
9398
9499# Try to find and enable the body tracking SDK
95- find_package (k4abt 1.0.0 QUIET MODULE)
100+ find_package (k4abt 1.0.1 QUIET MODULE)
96101if (k4abt_FOUND)
97102 list (APPEND K4A_LIBS k4abt::k4abt)
98103 message (STATUS "Body Tracking SDK found: compiling support for Body Tracking" )
99104 target_compile_definitions (${PROJECT_NAME} _node PUBLIC K4A_BODY_TRACKING)
100105 target_compile_definitions (${PROJECT_NAME} _nodelet PUBLIC K4A_BODY_TRACKING)
106+ message ("!!! Body Tracking SDK found: body tracking features will be available !!!" )
101107else ()
102108 message ("!!! Body Tracking SDK not found: body tracking features will not be available !!!" )
103109endif ()
110+ if (MSVC AND NOT k4abt_FOUND)
111+ if (CUDA_SUPPORT)
112+
113+ set (KBT "Microsoft.Azure.Kinect.BodyTracking.1.0.1" )
114+ set (KBT_URL "https://www.nuget.org/api/v2/package/Microsoft.Azure.Kinect.BodyTracking/1.0.1" )
115+ set (KBT_SHA512 "546ebf82551ca809213c7540c4a7c3ccdd14d1ae0ac5d8475b3a98439c4a68cf3d5b4e3fa70676d524ac820815f77611bf2d8ffba96933ad5b317db392d34f20" )
116+ file (DOWNLOAD
117+ ${KBT_URL}
118+ ${CMAKE_CURRENT_BINARY_DIR} /kbt.nuget
119+ EXPECTED_HASH SHA512=${KBT_SHA512}
120+ SHOW_PROGRESS
121+ )
122+
123+ file (MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /${KBT} " )
124+ execute_process (COMMAND tar xvzf "${CMAKE_CURRENT_BINARY_DIR} /kbt.nuget"
125+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /${KBT} "
126+ )
127+
128+ file (GLOB KBT_ONNX_DLL
129+ "${CMAKE_CURRENT_BINARY_DIR} /${KBT} /lib/native/amd64/release/onnxruntime.dll"
130+ )
131+
132+ file (GLOB KBT_DLL
133+ "${CMAKE_CURRENT_BINARY_DIR} /${KBT} /lib/native/amd64/release/k4abt.dll"
134+ )
135+
136+ file (GLOB KBT_LIB
137+ "${CMAKE_CURRENT_BINARY_DIR} /${KBT} /lib/native/amd64/release/k4abt.lib"
138+ )
139+
140+ file (GLOB KBT_DNN_MODEL
141+ "${CMAKE_CURRENT_BINARY_DIR} /${KBT} /content/dnn_model_2_0.onnx"
142+ )
143+
144+ add_library (k4abt::k4abt SHARED IMPORTED GLOBAL )
145+
146+ target_include_directories (
147+ k4abt::k4abt
148+ INTERFACE
149+ ${CMAKE_CURRENT_BINARY_DIR} /${KBT} /build /native/include
150+ )
151+
152+ set_property (TARGET k4abt::k4abt PROPERTY IMPORTED_CONFIGURATIONS "" )
153+ set_property (TARGET k4abt::k4abt PROPERTY IMPORTED_LOCATION "${KBT_DLL} " )
154+ set_property (TARGET k4abt::k4abt PROPERTY IMPORTED_IMPLIB "${KBT_LIB} " )
155+ set_property (TARGET k4abt::k4abt PROPERTY IMPORTED_LINK_DEPENDENT_LIBRARIES "${KBT_DNN_MODEL} ;${KBT_ONNX_DLL} " )
156+ set (k4abt_FOUND TRUE )
157+ set (k4abt_VERSION "1.0.1" )
158+ list (APPEND K4A_LIBS k4abt::k4abt)
159+ target_compile_definitions (${PROJECT_NAME} _node PUBLIC K4A_BODY_TRACKING)
160+ target_compile_definitions (${PROJECT_NAME} _nodelet PUBLIC K4A_BODY_TRACKING)
161+
162+ set (KBT_DEPENDENCIES "Microsoft.Azure.Kinect.BodyTracking.Dependencies.0.9.1" )
163+ set (KBTD_URL "https://www.nuget.org/api/v2/package/Microsoft.Azure.Kinect.BodyTracking.Dependencies/0.9.1" )
164+ set (KBTD_SHA512 "5df5ceb2f7905a3e208a085a29ef02feb1820ffe819563af77c272ad7e068cf3a158c0ce610e421829b5f7ebbb628c45f56617344d6d1ef0a31d719253cf881f" )
165+ file (DOWNLOAD
166+ ${KBTD_URL}
167+ ${CMAKE_CURRENT_BINARY_DIR} /kbtd.nuget
168+ EXPECTED_HASH SHA512=${KBTD_SHA512}
169+ SHOW_PROGRESS
170+ )
171+
172+ file (MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /${KBT_DEPENDENCIES} " )
173+ execute_process (COMMAND tar xvzf "${CMAKE_CURRENT_BINARY_DIR} /kbtd.nuget"
174+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /${KBT_DEPENDENCIES} "
175+ )
176+
177+ file (GLOB KBTD_DLLS
178+ "${CMAKE_CURRENT_BINARY_DIR} /${KBT_DEPENDENCIES} /lib/native/amd64/release/*.dll"
179+ )
180+
181+ file (COPY ${KBTD_DLLS} DESTINATION ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_BIN_DESTINATION} )
182+ file (COPY ${KBTD_DLLS} DESTINATION ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_LIB_DESTINATION} )
183+
184+ set (CUDNN_DEPENDENCIES "Microsoft.Azure.Kinect.BodyTracking.Dependencies.cuDNN.0.9.1" )
185+ set (CUDNN_URL "https://www.nuget.org/api/v2/package/Microsoft.Azure.Kinect.BodyTracking.Dependencies.cuDNN/0.9.1" )
186+ set (CUDNN_SHA512 "a9986d5d7f06e0445cb65dfe1363c3e827df2c87b80ecfa05894c062714bf2092b3f87defd136cd2a89b9e588e773080ecf7079e8ce7e428426c4a00259c5085" )
187+ file (DOWNLOAD
188+ ${CUDNN_URL}
189+ ${CMAKE_CURRENT_BINARY_DIR} /cudnn.nuget
190+ EXPECTED_HASH SHA512=${CUDNN_SHA512}
191+ SHOW_PROGRESS
192+ )
193+
194+ file (MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /${CUDNN_DEPENDENCIES} " )
195+
196+ execute_process (COMMAND tar xvzf "${CMAKE_CURRENT_BINARY_DIR} /cudnn.nuget"
197+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /${CUDNN_DEPENDENCIES} "
198+ )
199+
200+ file (GLOB CUDNN_DLLS
201+ "${CMAKE_CURRENT_BINARY_DIR} /${CUDNN_DEPENDENCIES} /lib/native/amd64/release/*.dll"
202+ )
203+ file (COPY ${CUDNN_DLLS} DESTINATION ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_BIN_DESTINATION} )
204+ file (COPY ${CUDNN_DLLS} DESTINATION ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_LIB_DESTINATION} )
205+
206+
207+ else ()
208+ message (FATAL_ERROR "Body Tracking SDK needs a NVIDIA GEFORCE GTX 1070 or better" )
209+ endif ()
210+ endif ()
104211
105212# This reads the K4A_LIBS and K4A_INSTALL_REQUIRED variables and decides how to install
106213# the various shared objects / DLLs
107214include (Installk4a)
108-
109215##################################
110216###### END AZURE KINECT SDK ######
111217##################################
@@ -118,11 +224,13 @@ include_directories(
118224target_link_libraries (${PROJECT_NAME} _node
119225 ${K4A_LIBS}
120226 ${catkin_LIBRARIES}
227+ ${OpenCV_LIBS}
121228)
122229
123230target_link_libraries (${PROJECT_NAME} _nodelet
124231 ${K4A_LIBS}
125232 ${catkin_LIBRARIES}
233+ ${OpenCV_LIBS}
126234)
127235
128236#############
0 commit comments