cmake_minimum_required(VERSION 3.0.2) project(ocs2_mobile_manipulator_ros) # Generate compile_commands.json for clang tools set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CATKIN_PACKAGE_DEPENDENCIES roslib tf urdf kdl_parser robot_state_publisher visualization_msgs geometry_msgs ocs2_ros_interfaces ocs2_core ocs2_ddp ocs2_mpc ocs2_robotic_tools ocs2_robotic_assets ocs2_pinocchio_interface ocs2_self_collision ocs2_self_collision_visualization ocs2_mobile_manipulator ) find_package(catkin REQUIRED COMPONENTS ${CATKIN_PACKAGE_DEPENDENCIES} ) find_package(Boost REQUIRED COMPONENTS system filesystem ) find_package(PkgConfig REQUIRED) pkg_check_modules(pinocchio REQUIRED pinocchio) find_package(Eigen3 3.3 REQUIRED NO_MODULE) ################################### ## catkin specific configuration ## ################################### catkin_package( INCLUDE_DIRS include ${EIGEN3_INCLUDE_DIRS} CATKIN_DEPENDS ${CATKIN_PACKAGE_DEPENDENCIES} DEPENDS Boost pinocchio ) ########### ## Build ## ########### set(FLAGS ${OCS2_CXX_FLAGS} ${pinocchio_CFLAGS_OTHER} -Wno-ignored-attributes -Wno-invalid-partial-specialization # to silence warning with unsupported Eigen Tensor -DPINOCCHIO_URDFDOM_TYPEDEF_SHARED_PTR -DPINOCCHIO_URDFDOM_USE_STD_SHARED_PTR ) include_directories( include ${catkin_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${pinocchio_INCLUDE_DIRS} ) link_directories( ${pinocchio_LIBRARY_DIRS} ) # MPC node add_executable(mobile_manipulator_mpc_node src/MobileManipulatorMpcNode.cpp ) add_dependencies(mobile_manipulator_mpc_node ${catkin_EXPORTED_TARGETS} ) target_link_libraries(mobile_manipulator_mpc_node ${catkin_LIBRARIES} ) target_compile_options(mobile_manipulator_mpc_node PUBLIC ${FLAGS}) # DistanceVisualization node add_executable(mobile_manipulator_distance_visualization src/MobileManipulatorDistanceVisualization.cpp ) add_dependencies(mobile_manipulator_distance_visualization ${catkin_EXPORTED_TARGETS} ) target_link_libraries(mobile_manipulator_distance_visualization ${catkin_LIBRARIES} ) target_compile_options(mobile_manipulator_distance_visualization PUBLIC ${FLAGS}) # Dummy node add_executable(mobile_manipulator_dummy_mrt_node src/MobileManipulatorDummyMRT.cpp src/MobileManipulatorDummyVisualization.cpp ) add_dependencies(mobile_manipulator_dummy_mrt_node ${catkin_EXPORTED_TARGETS} ) target_link_libraries(mobile_manipulator_dummy_mrt_node ${catkin_LIBRARIES} ) target_compile_options(mobile_manipulator_dummy_mrt_node PUBLIC ${FLAGS}) # Target node add_executable(mobile_manipulator_target src/MobileManipulatorTarget.cpp ) add_dependencies(mobile_manipulator_target ${catkin_EXPORTED_TARGETS} ) target_link_libraries(mobile_manipulator_target ${catkin_LIBRARIES} ) target_compile_options(mobile_manipulator_target PUBLIC ${FLAGS}) #################### ## Clang tooling ### #################### find_package(cmake_clang_tools QUIET) if (cmake_clang_tools_FOUND) message(STATUS "Run clang tooling") add_clang_tooling( TARGETS mobile_manipulator_mpc_node mobile_manipulator_dummy_mrt_node SOURCE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/include CT_HEADER_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include CF_WERROR ) endif (cmake_clang_tools_FOUND) ############# ## Install ## ############# install(DIRECTORY include/${PROJECT_NAME}/ DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} ) install( TARGETS mobile_manipulator_mpc_node mobile_manipulator_distance_visualization mobile_manipulator_dummy_mrt_node mobile_manipulator_target RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) install(DIRECTORY launch rviz DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} )