From b0cf968c8acde21dfed401be97bf238144e0636a Mon Sep 17 00:00:00 2001 From: 4c3y <69460051+4c3y@users.noreply.github.com> Date: Tue, 20 Aug 2024 18:16:45 +0200 Subject: [PATCH 1/8] Make Bosch API optional in CMakeLists.txt --- mav_sensors_drivers/CMakeLists.txt | 41 ++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/mav_sensors_drivers/CMakeLists.txt b/mav_sensors_drivers/CMakeLists.txt index d7f7f23..2e04d8a 100644 --- a/mav_sensors_drivers/CMakeLists.txt +++ b/mav_sensors_drivers/CMakeLists.txt @@ -3,7 +3,11 @@ project(mav_sensors_drivers) add_compile_options(-std=c++17) -find_package(catkin REQUIRED roscpp lpp mav_sensors_core) +find_package(catkin REQUIRED COMPONENTS + roscpp + lpp + mav_sensors_core +) catkin_package( INCLUDE_DIRS include lib/BMP3-Sensor-API lib/BMI08x-Sensor-API @@ -17,28 +21,49 @@ add_compile_definitions(MODE_LPP) ## Build ## ########### +if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/lib/BMP3-Sensor-API/) + set(MAV_SENSORS_BMP3_SUPPORT ON) + set(MAV_SENSORS_OPTIONAL_SRC_FILES ${MAV_SENSORS_OPTIONAL_SRC_FILES} src/barometer/bmp390.cpp) + set(MAV_SENSORS_OPTIONAL_INCLUDE_DIRS ${MAV_SENSORS_OPTIONAL_INCLUDE_DIRS} lib/BMP3-Sensor-API) + message(STATUS "Found BMP3-Sensor-API") +else() + message(WARNING "BMP3-Sensor-API not found. BMP3 sensor will not be supported.") +endif() + +if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/lib/BMI08x-Sensor-API/) + set(MAV_SENSORS_BMI08X_SUPPORT ON) + set(MAV_SENSORS_OPTIONAL_SRC_FILES ${MAV_SENSORS_OPTIONAL_SRC_FILES} src/imu/bmi088.cpp) + set(MAV_SENSORS_OPTIONAL_INCLUDE_DIRS ${MAV_SENSORS_OPTIONAL_INCLUDE_DIRS} lib/BMI08x-Sensor-API) + message(STATUS "Found BMI08x-Sensor-API") +else() + message(WARNING "BMI08x-Sensor-API not found. BMI08x sensor will not be supported.") +endif() + include_directories( - include - lib/BMP3-Sensor-API - lib/BMI08x-Sensor-API + include + ${MAV_SENSORS_OPTIONAL_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS} ) add_library(${PROJECT_NAME} src/imu/adis16448.cpp - src/barometer/bmp390.cpp - src/imu/bmi088.cpp - src/radar/xwr18xx_mmw_demo.cpp) + src/radar/xwr18xx_mmw_demo.cpp + ${MAV_SENSORS_OPTIONAL_SRC_FILES}) +if (MAV_SENSORS_BMP3_SUPPORT) add_library(${PROJECT_NAME}_BMP3 lib/BMP3-Sensor-API/bmp3.c) +set(MAV_SENSOR_LIBRARIES ${MAV_SENSOR_LIBRARIES} ${PROJECT_NAME}_BMP3) +endif() +if (MAV_SENSORS_BMI08X_SUPPORT) add_library(${PROJECT_NAME}_BMI08x lib/BMI08x-Sensor-API/bmi08a.c lib/BMI08x-Sensor-API/bmi08g.c lib/BMI08x-Sensor-API/bmi08xa.c) +endif() -target_link_libraries(${PROJECT_NAME} PUBLIC ${PROJECT_NAME}_BMP3 ${catkin_LIBRARIES}) +target_link_libraries(${PROJECT_NAME} PUBLIC ${MAV_SENSOR_LIBRARIES} ${catkin_LIBRARIES}) install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} From 45433d2e92f498739bb067116bdf09d979946e9b Mon Sep 17 00:00:00 2001 From: 4c3y <69460051+4c3y@users.noreply.github.com> Date: Wed, 21 Aug 2024 10:42:42 +0200 Subject: [PATCH 2/8] Added CI matrix configuration to test building with and without optional dependencies --- .github/workflows/ubuntu20_04.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ubuntu20_04.yml b/.github/workflows/ubuntu20_04.yml index df2bb4e..36924d1 100644 --- a/.github/workflows/ubuntu20_04.yml +++ b/.github/workflows/ubuntu20_04.yml @@ -15,6 +15,7 @@ jobs: matrix: rosdistro: ['noetic'] gcc: ['8', '9', '10'] + submodule: ['exclude', 'BMI08x-Sensor-API', 'BMP3-Sensor-API', 'all'] container: ros:${{ matrix.rosdistro }}-ros-base-focal name: ROS ${{ matrix.rosdistro }} - GCC ${{ matrix.gcc }} steps: @@ -45,8 +46,20 @@ jobs: token: ${{ secrets.PAT }} path: catkin_ws/src/mav_sensors + - name: Exclude submodules + if: matrix.submodule == 'exclude' + run: rm -rf mav_sensor_drivers/lib/* + shell: bash + working-directory: catkin_ws/src/mav_sensors + + - name: Exclude submodules except ${{ matrix.submodule }} + if: matrix.submodule != 'exclude' && matrix.submodule != 'all' + run: find . -mindepth 1 -type d ! -name ${{ matrix.submodule }} -exec rm -rf {} + + working-directory: catkin_ws/src/mav_sensors/mav_sensor_drivers/lib + shell: bash + - name: Build mav_sensors - run: source /opt/ros/${{ matrix.rosdistro }}/setup.bash && catkin build mav_sensors_demo && source ${GITHUB_WORKSPACE}/catkin_ws/devel/setup.bash + run: source /opt/ros/${{ matrix.rosdistro }}/setup.bash && catkin build -v mav_sensors_demo --no-status && source ${GITHUB_WORKSPACE}/catkin_ws/devel/setup.bash shell: bash working-directory: catkin_ws From 8c0fbe2e1149943d6950fd84cd131651e0b3f0cb Mon Sep 17 00:00:00 2001 From: 4c3y <69460051+4c3y@users.noreply.github.com> Date: Wed, 21 Aug 2024 10:51:23 +0200 Subject: [PATCH 3/8] Fix paths --- .github/workflows/ubuntu20_04.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ubuntu20_04.yml b/.github/workflows/ubuntu20_04.yml index 36924d1..26e0bd3 100644 --- a/.github/workflows/ubuntu20_04.yml +++ b/.github/workflows/ubuntu20_04.yml @@ -48,14 +48,14 @@ jobs: - name: Exclude submodules if: matrix.submodule == 'exclude' - run: rm -rf mav_sensor_drivers/lib/* + run: rm -rf mav_sensors_drivers/lib/* shell: bash working-directory: catkin_ws/src/mav_sensors - name: Exclude submodules except ${{ matrix.submodule }} if: matrix.submodule != 'exclude' && matrix.submodule != 'all' run: find . -mindepth 1 -type d ! -name ${{ matrix.submodule }} -exec rm -rf {} + - working-directory: catkin_ws/src/mav_sensors/mav_sensor_drivers/lib + working-directory: catkin_ws/src/mav_sensors/mav_sensors_drivers/lib shell: bash - name: Build mav_sensors From 8013985a67d2483e9d4730219f0443fa47727888 Mon Sep 17 00:00:00 2001 From: 4c3y <69460051+4c3y@users.noreply.github.com> Date: Wed, 21 Aug 2024 10:52:42 +0200 Subject: [PATCH 4/8] Added submodule to title --- .github/workflows/ubuntu20_04.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ubuntu20_04.yml b/.github/workflows/ubuntu20_04.yml index 26e0bd3..8e8f74b 100644 --- a/.github/workflows/ubuntu20_04.yml +++ b/.github/workflows/ubuntu20_04.yml @@ -17,7 +17,7 @@ jobs: gcc: ['8', '9', '10'] submodule: ['exclude', 'BMI08x-Sensor-API', 'BMP3-Sensor-API', 'all'] container: ros:${{ matrix.rosdistro }}-ros-base-focal - name: ROS ${{ matrix.rosdistro }} - GCC ${{ matrix.gcc }} + name: ROS ${{ matrix.rosdistro }} - GCC ${{ matrix.gcc }} - Submodule ${{ matrix.submodule }} steps: - uses: actions/checkout@v4 name: Checkout lpp From 9ee987c30e93ec6eec90afa41689c46f46c47e45 Mon Sep 17 00:00:00 2001 From: 4c3y <69460051+4c3y@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:00:10 +0200 Subject: [PATCH 5/8] Fix catkin_package() in CMakeLists.txt --- mav_sensors_drivers/CMakeLists.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mav_sensors_drivers/CMakeLists.txt b/mav_sensors_drivers/CMakeLists.txt index 2e04d8a..9c0ef8d 100644 --- a/mav_sensors_drivers/CMakeLists.txt +++ b/mav_sensors_drivers/CMakeLists.txt @@ -9,12 +9,6 @@ find_package(catkin REQUIRED COMPONENTS mav_sensors_core ) -catkin_package( - INCLUDE_DIRS include lib/BMP3-Sensor-API lib/BMI08x-Sensor-API - LIBRARIES ${PROJECT_NAME} ${PROJECT_NAME}_BMP3 ${PROJECT_NAME}_BMI08x - CATKIN_DEPENDS roscpp lpp mav_sensors_core -) - add_compile_definitions(MODE_LPP) ########### @@ -39,6 +33,12 @@ else() message(WARNING "BMI08x-Sensor-API not found. BMI08x sensor will not be supported.") endif() +catkin_package( + INCLUDE_DIRS include ${MAV_SENSORS_OPTIONAL_INCLUDE_DIRS} + LIBRARIES ${PROJECT_NAME} ${PROJECT_NAME}_BMP3 ${PROJECT_NAME}_BMI08x + CATKIN_DEPENDS roscpp lpp mav_sensors_core +) + include_directories( include ${MAV_SENSORS_OPTIONAL_INCLUDE_DIRS} From 945afe23b48f9ff375bb2fe661f3a9d0ba4d646f Mon Sep 17 00:00:00 2001 From: 4c3y <69460051+4c3y@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:15:25 +0200 Subject: [PATCH 6/8] Make submodules optional in mav_sensors_demo --- mav_sensors_demo/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mav_sensors_demo/CMakeLists.txt b/mav_sensors_demo/CMakeLists.txt index 0667cab..809c42f 100644 --- a/mav_sensors_demo/CMakeLists.txt +++ b/mav_sensors_demo/CMakeLists.txt @@ -29,8 +29,12 @@ include_directories( add_executable(${PROJECT_NAME}_xwr18xx_mmw_demo src/xwr18xx_mmw_demo_node.cpp) target_link_libraries(${PROJECT_NAME}_xwr18xx_mmw_demo ${catkin_LIBRARIES}) +if (MAV_SENSORS_BMI08X_SUPPORT) add_executable(${PROJECT_NAME}_bmi088_demo src/bmi088_demo.cpp) target_link_libraries(${PROJECT_NAME}_bmi088_demo ${catkin_LIBRARIES}) +endif () +if (MAV_SENSORS_BMP3_SUPPORT) add_executable(${PROJECT_NAME}_bmp390_demo src/bmp390_demo.cpp) -target_link_libraries(${PROJECT_NAME}_bmp390_demo ${catkin_LIBRARIES}) \ No newline at end of file +target_link_libraries(${PROJECT_NAME}_bmp390_demo ${catkin_LIBRARIES}) +endif () \ No newline at end of file From 84c1f93849b215fcb3371806973154f790453c11 Mon Sep 17 00:00:00 2001 From: 4c3y <69460051+4c3y@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:15:37 +0200 Subject: [PATCH 7/8] Added MAV_SENSORS_OPTIONAL_LIBRARIES in catkin_package() in mav_sensors_drivers --- mav_sensors_drivers/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mav_sensors_drivers/CMakeLists.txt b/mav_sensors_drivers/CMakeLists.txt index 9c0ef8d..dc0c170 100644 --- a/mav_sensors_drivers/CMakeLists.txt +++ b/mav_sensors_drivers/CMakeLists.txt @@ -19,6 +19,7 @@ if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/lib/BMP3-Sensor-API/) set(MAV_SENSORS_BMP3_SUPPORT ON) set(MAV_SENSORS_OPTIONAL_SRC_FILES ${MAV_SENSORS_OPTIONAL_SRC_FILES} src/barometer/bmp390.cpp) set(MAV_SENSORS_OPTIONAL_INCLUDE_DIRS ${MAV_SENSORS_OPTIONAL_INCLUDE_DIRS} lib/BMP3-Sensor-API) + set(MAV_SENSORS_OPTIONAL_LIBRARIES ${MAV_SENSORS_OPTIONAL_LIBRARIES} ${PROJECT_NAME}_BMP3) message(STATUS "Found BMP3-Sensor-API") else() message(WARNING "BMP3-Sensor-API not found. BMP3 sensor will not be supported.") @@ -28,6 +29,7 @@ if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/lib/BMI08x-Sensor-API/) set(MAV_SENSORS_BMI08X_SUPPORT ON) set(MAV_SENSORS_OPTIONAL_SRC_FILES ${MAV_SENSORS_OPTIONAL_SRC_FILES} src/imu/bmi088.cpp) set(MAV_SENSORS_OPTIONAL_INCLUDE_DIRS ${MAV_SENSORS_OPTIONAL_INCLUDE_DIRS} lib/BMI08x-Sensor-API) + set(MAV_SENSORS_OPTIONAL_LIBRARIES ${MAV_SENSORS_OPTIONAL_LIBRARIES} ${PROJECT_NAME}_BMI08x) message(STATUS "Found BMI08x-Sensor-API") else() message(WARNING "BMI08x-Sensor-API not found. BMI08x sensor will not be supported.") @@ -35,7 +37,7 @@ endif() catkin_package( INCLUDE_DIRS include ${MAV_SENSORS_OPTIONAL_INCLUDE_DIRS} - LIBRARIES ${PROJECT_NAME} ${PROJECT_NAME}_BMP3 ${PROJECT_NAME}_BMI08x + LIBRARIES ${PROJECT_NAME} ${MAV_SENSORS_OPTIONAL_LIBRARIES} CATKIN_DEPENDS roscpp lpp mav_sensors_core ) From e2aaa84537e36ef6c66342bf2bcee92bfa982bfa Mon Sep 17 00:00:00 2001 From: 4c3y <69460051+4c3y@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:39:28 +0200 Subject: [PATCH 8/8] Changed CI check name --- .github/workflows/ubuntu20_04.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ubuntu20_04.yml b/.github/workflows/ubuntu20_04.yml index 8e8f74b..41147f8 100644 --- a/.github/workflows/ubuntu20_04.yml +++ b/.github/workflows/ubuntu20_04.yml @@ -17,7 +17,7 @@ jobs: gcc: ['8', '9', '10'] submodule: ['exclude', 'BMI08x-Sensor-API', 'BMP3-Sensor-API', 'all'] container: ros:${{ matrix.rosdistro }}-ros-base-focal - name: ROS ${{ matrix.rosdistro }} - GCC ${{ matrix.gcc }} - Submodule ${{ matrix.submodule }} + name: GCC ${{ matrix.gcc }} - Submodule ${{ matrix.submodule }} - ROS ${{ matrix.rosdistro }} steps: - uses: actions/checkout@v4 name: Checkout lpp