diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..4f3af87 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,13 @@ +name: CI + +on: [push, pull_request] + +jobs: + tue-ci: + name: TUe CI - ${{ github.event_name }} + runs-on: ubuntu-latest + steps: + - name: TUe CI + uses: tue-robotics/tue-env/ci/main@master + with: + package: ${{ github.event.repository.name }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 575e2e9..c3e5b81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,37 +1,61 @@ cmake_minimum_required(VERSION 3.5) +project(yolo_onnx_ros) -set(PROJECT_NAME Yolov8OnnxRuntimeCPPInference) -project(${PROJECT_NAME} VERSION 0.0.1 LANGUAGES CXX) +add_compile_options(-Wall -Werror=all) +add_compile_options(-Wextra -Werror=extra) # -------------- Support C++17 for using filesystem ------------------# set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS ON) -set(CMAKE_INCLUDE_CURRENT_DIR ON) +#set(CMAKE_INCLUDE_CURRENT_DIR ON) # -------------- OpenCV ------------------# find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) +find_package(catkin REQUIRED + COMPONENTS + onnxruntime_ros +) + + +# ------------------------------------------------------------------------------------------------ +# CATKIN EXPORT +# ------------------------------------------------------------------------------------------------ + +catkin_package( + INCLUDE_DIRS include + LIBRARIES ${PROJECT_NAME} + CATKIN_DEPENDS + DEPENDS OpenCV +) + +# ------------------------------------------------------------------------------------------------ +# BUILD +# ------------------------------------------------------------------------------------------------ + +include_directories( + include + SYSTEM + ${OpenCV_INCLUDE_DIRS} + ${catkin_INCLUDE_DIRS} +) + # -------------- ONNXRuntime ------------------# -set(ONNXRUNTIME_VERSION 1.21.0) -set(ONNXRUNTIME_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../onnxruntime-linux-x64-gpu-1.21.1") -include_directories(${ONNXRUNTIME_ROOT}/include) # -------------- Cuda ------------------# add_definitions(-DUSE_CUDA=1) -include_directories(/usr/local/cuda/include) -set(PROJECT_SOURCES - src/main.cpp - src/yolo_inference.cpp +add_library(${PROJECT_NAME} + src/yolo_inference.cpp ) +target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES} ${catkin_LIBRARIES}) -add_executable(${PROJECT_NAME} ${PROJECT_SOURCES}) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc) - -# Link OpenCV libraries along with ONNX Runtime -target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS} ${ONNXRUNTIME_ROOT}/lib/libonnxruntime.so) +add_executable(test_${PROJECT_NAME} + src/main.cpp +) +target_link_libraries(test_${PROJECT_NAME} ${PROJECT_NAME} ${OpenCV_LIBRARIES} ${catkin_LIBRARIES}) # For Windows system, copy onnxruntime.dll to the same folder of the executable file if (WIN32) @@ -46,9 +70,9 @@ endif () configure_file(data/coco.yaml ${CMAKE_CURRENT_BINARY_DIR}/coco.yaml COPYONLY) # Copy yolov8n.onnx file to the same folder of the executable file -configure_file(model/yolo11m.onnx ${CMAKE_CURRENT_BINARY_DIR}/yolo11m.onnx COPYONLY) +# configure_file(model/yolo11m.onnx ${CMAKE_CURRENT_BINARY_DIR}/yolo11m.onnx COPYONLY) -# Create folder name images in the same folder of the executable file -add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/images -) +# # Create folder name images in the same folder of the executable file +# add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/images +# ) diff --git a/inc/yolo_inference.h b/include/yolo_onnx_ros/yolo_inference.h similarity index 98% rename from inc/yolo_inference.h rename to include/yolo_onnx_ros/yolo_inference.h index c35aeb6..cc92b2c 100644 --- a/inc/yolo_inference.h +++ b/include/yolo_onnx_ros/yolo_inference.h @@ -12,7 +12,7 @@ #include #include #include -#include "onnxruntime_cxx_api.h" +#include #ifdef USE_CUDA #include @@ -92,4 +92,4 @@ class YOLO_V8 float rectConfidenceThreshold; float iouThreshold; float resizeScales;//letterbox scale -}; \ No newline at end of file +}; diff --git a/package.xml b/package.xml new file mode 100644 index 0000000..8106bc0 --- /dev/null +++ b/package.xml @@ -0,0 +1,29 @@ + + + + yolo_onnx_ros + 0.0.0 + Yolo inference + + Iason Theodorou + + ToDo + + catkin + + libopencv-dev + libopencv-dev + onnxruntime_ros + onnxruntime_ros + + catkin_lint_cmake + + doxygen + + + + + + diff --git a/src/main.cpp b/src/main.cpp index 091b185..b19c9d7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,6 @@ #include #include -#include "yolo_inference.h" +#include "yolo_onnx_ros/yolo_inference.h" #include #include #include @@ -192,4 +192,4 @@ int main() { DetectTest(); //ClsTest(); -} \ No newline at end of file +} diff --git a/src/yolo_inference.cpp b/src/yolo_inference.cpp index 9f2f6bc..deecd2c 100644 --- a/src/yolo_inference.cpp +++ b/src/yolo_inference.cpp @@ -1,4 +1,4 @@ -#include "yolo_inference.h" +#include "yolo_onnx_ros/yolo_inference.h" #include #define benchmark @@ -383,4 +383,4 @@ char* YOLO_V8::WarmUpSession() { #endif } return RET_OK; -} \ No newline at end of file +}