diff --git a/CHANGELOG.md b/CHANGELOG.md index 00f4bf82ac3..978c3c4439a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ * Planner * Fixed key bugs in CRRTs: [#574](https://github.com/personalrobotics/aikido/pull/574) + * Make planner_dart component and build all DART planners as planner_dart component: [#567](https://github.com/personalrobotics/aikido/pull/567) * Added ConfigurationToConfigurations planner adapter: [#587](https://github.com/personalrobotics/aikido/pull/587) * Cleaned up planning methods in robot/util: [#588](https://github.com/personalrobotics/aikido/pull/588) diff --git a/src/planner/CMakeLists.txt b/src/planner/CMakeLists.txt index cc3720d04a1..da53f8e969f 100644 --- a/src/planner/CMakeLists.txt +++ b/src/planner/CMakeLists.txt @@ -14,20 +14,6 @@ set(sources SequenceMetaPlanner.cpp World.cpp WorldStateSaver.cpp - dart/ConfigurationToConfiguration.cpp - dart/ConfigurationToConfigurationPlanner.cpp - dart/ConfigurationToConfigurations.cpp - dart/ConfigurationToConfigurationsPlanner.cpp - dart/ConfigurationToEndEffectorOffset.cpp - dart/ConfigurationToEndEffectorPose.cpp - dart/ConfigurationToTSR.cpp - dart/ConfigurationToEndEffectorOffsetPlanner.cpp - # dart/ConfigurationToEndEffectorPosePlanner.cpp - dart/ConfigurationToTSRPlanner.cpp - dart/ConfigurationToConfiguration_to_ConfigurationToConfiguration.cpp - dart/ConfigurationToConfiguration_to_ConfigurationToConfigurations.cpp - dart/ConfigurationToConfiguration_to_ConfigurationToTSR.cpp - dart/util.cpp ) add_library("${PROJECT_NAME}_planner" SHARED ${sources}) @@ -63,6 +49,7 @@ add_component_dependencies(${PROJECT_NAME} planner clang_format_add_sources(${sources}) add_subdirectory("ompl") # [constraint], [distance], [statespace], [trajectory], dart, ompl +add_subdirectory("dart") # [constraint], [distance], [trajectory], [statespace], [planner_ompl], dart, ompl add_subdirectory("parabolic") # [external], [common], [trajectory], [statespace], dart add_subdirectory("vectorfield") # [common], [trajectory], [statespace], dart add_subdirectory("kunzretimer") # [external], [common], [trajectory], [statespace], dart diff --git a/src/planner/dart/CMakeLists.txt b/src/planner/dart/CMakeLists.txt new file mode 100644 index 00000000000..88bfcadacc2 --- /dev/null +++ b/src/planner/dart/CMakeLists.txt @@ -0,0 +1,62 @@ +if(CMAKE_COMPILER_IS_GNUCXX) + if(OMPL_VERSION VERSION_GREATER 1.2.0 OR OMPL_VERSION VERSION_EQUAL 1.2.0) + if(Boost_VERSION VERSION_LESS 106501) + message(STATUS "OMPL planners are disabled for OMPL (>=1.2.0) + GCC + " + "Boost (< 1.65.1). For details, please see: " + " https://github.com/personalrobotics/aikido/issues/363" + ) + return() + endif() + endif() +endif() + +#============================================================================== +# Libraries +# +set(sources + ConfigurationToConfiguration.cpp + ConfigurationToConfigurationPlanner.cpp + ConfigurationToConfiguration_to_ConfigurationToConfiguration.cpp + ConfigurationToConfiguration_to_ConfigurationToTSR.cpp + ConfigurationToEndEffectorOffset.cpp + ConfigurationToEndEffectorPose.cpp + ConfigurationToEndEffectorOffsetPlanner.cpp + ConfigurationToTSR.cpp + ConfigurationToTSRPlanner.cpp + util.cpp +) + +add_library("${PROJECT_NAME}_planner_dart" SHARED ${sources}) +target_include_directories("${PROJECT_NAME}_planner_dart" SYSTEM + PUBLIC + ${DART_INCLUDE_DIRS} + ${OMPL_INCLUDE_DIRS} +) +target_link_libraries("${PROJECT_NAME}_planner_dart" + PUBLIC + "${PROJECT_NAME}_common" + "${PROJECT_NAME}_constraint" + "${PROJECT_NAME}_distance" + "${PROJECT_NAME}_trajectory" + "${PROJECT_NAME}_statespace" + "${PROJECT_NAME}_planner" + "${PROJECT_NAME}_planner_ompl" + ${DART_LIBRARIES} + ${OMPL_LIBRARIES} +) +target_compile_options("${PROJECT_NAME}_planner_dart" + PUBLIC ${AIKIDO_CXX_STANDARD_FLAGS} +) + +add_component(${PROJECT_NAME} planner_dart) +add_component_targets(${PROJECT_NAME} planner_dart "${PROJECT_NAME}_planner_dart") +add_component_dependencies(${PROJECT_NAME} planner_dart + constraint + distance + planner + planner_ompl + statespace + trajectory +) + +clang_format_add_sources(${sources}) diff --git a/src/planner/vectorfield/CMakeLists.txt b/src/planner/vectorfield/CMakeLists.txt index 74ce82c4d6f..42e0717d349 100644 --- a/src/planner/vectorfield/CMakeLists.txt +++ b/src/planner/vectorfield/CMakeLists.txt @@ -1,3 +1,7 @@ +if(NOT TARGET ${PROJECT_NAME}_planner_dart) + return() +endif() + set(sources VectorFieldPlanner.cpp VectorField.cpp @@ -19,6 +23,7 @@ target_link_libraries("${PROJECT_NAME}_planner_vectorfield" "${PROJECT_NAME}_trajectory" "${PROJECT_NAME}_statespace" "${PROJECT_NAME}_planner" + "${PROJECT_NAME}_planner_dart" ${DART_LIBRARIES} ${Boost_LIBRARIES} ) diff --git a/src/robot/CMakeLists.txt b/src/robot/CMakeLists.txt index 9c6c6ad8fd0..9e79838bb13 100644 --- a/src/robot/CMakeLists.txt +++ b/src/robot/CMakeLists.txt @@ -1,7 +1,8 @@ #============================================================================== # Dependencies # -if(NOT TARGET ${PROJECT_NAME}_planner_ompl) +if(NOT TARGET ${PROJECT_NAME}_planner_ompl OR + NOT TARGET ${PROJECT_NAME}_planner_vectorfield) return() endif() set(CMAKE_REQUIRED_DEFINITIONS "") diff --git a/tests/planner/CMakeLists.txt b/tests/planner/CMakeLists.txt index 9e5e2138710..369060af8ad 100644 --- a/tests/planner/CMakeLists.txt +++ b/tests/planner/CMakeLists.txt @@ -10,13 +10,18 @@ target_link_libraries(test_SnapPlanner "${PROJECT_NAME}_trajectory" "${PROJECT_NAME}_planner") +aikido_add_test(test_World test_World.cpp) +target_link_libraries(test_World + "${PROJECT_NAME}_planner") + +if(NOT TARGET ${PROJECT_NAME}_planner_dart) + return() +endif() + aikido_add_test(test_DartPlanners test_DartPlanners.cpp) target_link_libraries(test_DartPlanners "${PROJECT_NAME}_constraint" "${PROJECT_NAME}_distance" "${PROJECT_NAME}_trajectory" - "${PROJECT_NAME}_planner") - -aikido_add_test(test_World test_World.cpp) -target_link_libraries(test_World - "${PROJECT_NAME}_planner") + "${PROJECT_NAME}_planner" + "${PROJECT_NAME}_planner_dart")