diff --git a/CMakeLists.txt b/CMakeLists.txt index f414c3d..df63da3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,71 +1,80 @@ cmake_minimum_required(VERSION 3.8) project(simulation) +if(DEFINED ENV{ROS_DISTRO}) + set(ROS_DISTRO $ENV{ROS_DISTRO}) +endif() + # Find required packages find_package(ament_cmake REQUIRED) -find_package(ignition-plugin1 REQUIRED COMPONENTS register) -find_package(ignition-gazebo6 REQUIRED) -find_package(ignition-physics5 REQUIRED) -find_package(ignition-common4 REQUIRED) -find_package(ignition-rendering6 REQUIRED) - -# Set Gazebo plugin and sim versions -set(IGNITION_PLUGIN_VER ${ignition-plugin1_VERSION_MAJOR}) -set(IGNITION_SIM_VER ${ignition-gazebo6_VERSION_MAJOR}) -set(IGNITION_COMMON_VER ${ignition-common4_VERSION_MAJOR}) -set(IGNITION_RENDERING_VER ${ignition-rendering6_VERSION_MAJOR}) -set(IGNITION_SENSORS_VER ${ignition-sensors6_VERSION_MAJOR}) - -# Add the plugins directory to the include path -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/Plugins) - -# Add the SolarPanelPlugin library -add_library(SolarPanelPlugin SHARED - plugins/SolarPanelPlugin.cc -) - -# Link the SolarPanelPlugin library with required dependencies -target_link_libraries(SolarPanelPlugin - PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} - PRIVATE ignition-common${IGNITION_COMMON_VER}::ignition-common${IGNITION_COMMON_VER} - PRIVATE ignition-rendering${IGNITION_RENDERING_VER}::ignition-rendering${IGNITION_RENDERING_VER} - PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core -) - -# Add the RadioisotopeThermalGeneratorPlugin library -add_library(RadioisotopeThermalGeneratorPlugin SHARED - plugins/RadioisotopeThermalGeneratorPlugin.cc -) - -# Link the RadioisotopeThermalGeneratorPlugin library with required dependencies -target_link_libraries(RadioisotopeThermalGeneratorPlugin - PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} - PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core -) -# Add the RechargeableBatteryPlugin library -add_library(RechargeableBatteryPlugin SHARED - plugins/RechargeableBatteryPlugin.cc -) - -# Link the RechargeableBatteryPlugin library with required dependencies -target_link_libraries(RechargeableBatteryPlugin - PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} - PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core -) - -# add the SensorPowerSystemPlugin library -add_library(SensorPowerSystemPlugin SHARED - plugins/SensorPowerSystemPlugin.cc -) - -# Link the SensorPowerSystemPlugin library with required dependencies -target_link_libraries(SensorPowerSystemPlugin - PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} - PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core - PRIVATE ignition-gazebo${IGNITION_SIM_VER}::ignition-gazebo${IGNITION_SIM_VER} - PRIVATE ignition-sensors${IGNITION_SENSORS_VER}::ignition-sensors${IGNITION_SENSORS_VER} -) +if(ROS_DISTRO STREQUAL "humble") + # Find required packages + find_package(ignition-plugin1 REQUIRED COMPONENTS register) + find_package(ignition-gazebo6 REQUIRED) + find_package(ignition-physics5 REQUIRED) + find_package(ignition-common4 REQUIRED) + find_package(ignition-rendering6 REQUIRED) + + # Set Gazebo plugin and sim versions + set(IGNITION_PLUGIN_VER ${ignition-plugin1_VERSION_MAJOR}) + set(IGNITION_SIM_VER ${ignition-gazebo6_VERSION_MAJOR}) + set(IGNITION_COMMON_VER ${ignition-common4_VERSION_MAJOR}) + set(IGNITION_RENDERING_VER ${ignition-rendering6_VERSION_MAJOR}) + set(IGNITION_SENSORS_VER ${ignition-sensors6_VERSION_MAJOR}) + + # Add the plugins directory to the include path + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/Plugins) + + # Add the SolarPanelPlugin library + add_library(SolarPanelPlugin SHARED + plugins/SolarPanelPlugin.cc + ) + + # Link the SolarPanelPlugin library with required dependencies + target_link_libraries(SolarPanelPlugin + PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} + PRIVATE ignition-common${IGNITION_COMMON_VER}::ignition-common${IGNITION_COMMON_VER} + PRIVATE ignition-rendering${IGNITION_RENDERING_VER}::ignition-rendering${IGNITION_RENDERING_VER} + PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core + ) + + # Add the RadioisotopeThermalGeneratorPlugin library + add_library(RadioisotopeThermalGeneratorPlugin SHARED + plugins/RadioisotopeThermalGeneratorPlugin.cc + ) + + # Link the RadioisotopeThermalGeneratorPlugin library with required dependencies + target_link_libraries(RadioisotopeThermalGeneratorPlugin + PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} + PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core + ) + + # Add the RechargeableBatteryPlugin library + add_library(RechargeableBatteryPlugin SHARED + plugins/RechargeableBatteryPlugin.cc + ) + + # Link the RechargeableBatteryPlugin library with required dependencies + target_link_libraries(RechargeableBatteryPlugin + PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} + PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core + ) + + # add the SensorPowerSystemPlugin library + add_library(SensorPowerSystemPlugin SHARED + plugins/SensorPowerSystemPlugin.cc + ) + + # Link the SensorPowerSystemPlugin library with required dependencies + target_link_libraries(SensorPowerSystemPlugin + PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} + PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core + PRIVATE ignition-gazebo${IGNITION_SIM_VER}::ignition-gazebo${IGNITION_SIM_VER} + PRIVATE ignition-sensors${IGNITION_SENSORS_VER}::ignition-sensors${IGNITION_SENSORS_VER} + ) + +endif() # Create the models directory file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/models/curiosity_path) @@ -77,12 +86,14 @@ install(DIRECTORY DESTINATION share/${PROJECT_NAME}/ ) -# Install the plugin library -install(TARGETS SolarPanelPlugin RadioisotopeThermalGeneratorPlugin RechargeableBatteryPlugin SensorPowerSystemPlugin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib - RUNTIME DESTINATION bin -) +if(ROS_DISTRO STREQUAL "humble") + # Install the plugin library + install(TARGETS SolarPanelPlugin RadioisotopeThermalGeneratorPlugin RechargeableBatteryPlugin SensorPowerSystemPlugin + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin + ) +endif() ament_environment_hooks("${CMAKE_CURRENT_SOURCE_DIR}/hooks/${PROJECT_NAME}.dsv.in") diff --git a/package.xml b/package.xml index 7e96866..ea52ba9 100644 --- a/package.xml +++ b/package.xml @@ -7,19 +7,20 @@ Dharini Dutia Apache-2.0 + ros_environment ament_cmake - ign-cmake2 - ign-plugin1 - ign-common4 - ign-gazebo6 - ign-rendering6 - ign-sensors6 + ign-cmake2 + ign-plugin1 + ign-common4 + ign-gazebo6 + ign-rendering6 + ign-sensors6 xacro ament_cmake - +