diff --git a/core/components/CMakeLists.txt b/core/components/CMakeLists.txt index 862d036..62e9f24 100755 --- a/core/components/CMakeLists.txt +++ b/core/components/CMakeLists.txt @@ -48,8 +48,6 @@ if (cisst_FOUND_AS_REQUIRED) endif () endif () - find_package(OpenCV REQUIRED) - # catkin/ROS paths cisst_set_output_path () @@ -88,17 +86,31 @@ if (cisst_FOUND_AS_REQUIRED) cisst_add_config_files (sawAtracsysFusionTrack) - add_library (sawAtracsysFusionTrack ${IS_SHARED} + set (sawAtracsysFusionTrack_SOURCES ${sawAtracsysFusionTrack_HEADER_DIR}/sawAtracsysFusionTrackExport.h code/mtsAtracsysFusionTrack.cpp - code/mtsAtracsysStereo.cpp ${sawAtracsysFusionTrack_HEADER_DIR}/mtsAtracsysFusionTrack.h - ${sawAtracsysFusionTrack_HEADER_DIR}/mtsAtracsysStereo.h) + ) + + find_package(OpenCV) + if (OpenCV_FOUND) + set (sawAtracsysFusionTrack_SOURCES ${sawAtracsysFusionTrack_SOURCES} + code/mtsAtracsysStereo.cpp + ${sawAtracsysFusionTrack_HEADER_DIR}/mtsAtracsysStereo.h + ) + endif (OpenCV_FOUND) + + add_library (sawAtracsysFusionTrack ${IS_SHARED} ${sawAtracsysFusionTrack_SOURCES}) set_target_properties (sawAtracsysFusionTrack PROPERTIES VERSION ${sawAtracsysFusionTrack_VERSION} FOLDER "sawAtracsysFusionTrack") cisst_target_link_libraries (sawAtracsysFusionTrack ${REQUIRED_CISST_LIBRARIES}) target_link_libraries (sawAtracsysFusionTrack ${AtracsysSDK_LIBRARIES}) + + if (OpenCV_FOUND) + target_link_libraries (sawAtracsysFusionTrack ${OpenCV_LIBS}) + endif (OpenCV_FOUND) + target_link_libraries (sawAtracsysFusionTrack ${OpenCV_LIBS}) configure_file ( diff --git a/ros/CMakeLists.txt b/ros/CMakeLists.txt index 25dd15c..eec6d7d 100644 --- a/ros/CMakeLists.txt +++ b/ros/CMakeLists.txt @@ -70,8 +70,6 @@ if (cisst_FOUND_AS_REQUIRED) # sawAtracsysFusionTrack has been compiled within cisst, we should find it automatically find_package (sawAtracsysFusionTrack 1.1.0) - find_package(OpenCV REQUIRED) - if (sawAtracsysFusionTrack_FOUND) # sawAtracsysFusionTrack configuration @@ -81,8 +79,14 @@ if (cisst_FOUND_AS_REQUIRED) add_executable (atracsys src/atracsys.cpp src/atracsys_bridge.cpp src/atracsys_bridge.h) target_link_libraries (atracsys ${sawAtracsysFusionTrack_LIBRARIES} - ${catkin_LIBRARIES} - ${OpenCV_LIBS}) + ${catkin_LIBRARIES}) + + find_package(OpenCV) + if (OpenCV_FOUND) + target_link_libraries (atracsys ${OpenCV_LIBS}) + endif (OpenCV_FOUND) + target_compile_definitions(atracsys PRIVATE OpenCV_AVAILABLE=${OpenCV_FOUND}) + cisst_target_link_libraries (atracsys ${REQUIRED_CISST_LIBRARIES}) install (TARGETS atracsys diff --git a/ros/src/atracsys.cpp b/ros/src/atracsys.cpp index c94079a..978370e 100644 --- a/ros/src/atracsys.cpp +++ b/ros/src/atracsys.cpp @@ -23,9 +23,12 @@ no warranty. The complete license can be found in license.txt and #include #include #include -#include #include +#if OpenCV_AVAILABLE +#include +#endif + #include "atracsys_bridge.h" #include @@ -39,7 +42,7 @@ int main(int argc, char * argv[]) cmnLogger::SetMaskFunction(CMN_LOG_ALLOW_ALL); cmnLogger::SetMaskDefaultLog(CMN_LOG_ALLOW_ALL); cmnLogger::SetMaskClassMatching("mtsAtracsysFusionTrack", CMN_LOG_ALLOW_ALL); - cmnLogger::SetMaskClassMatching("mtsAtracsysStereo", CMN_LOG_ALLOW_ALL); + cmnLogger::SetMaskClassMatching("mtsAtracsysSteasdsreo", CMN_LOG_ALLOW_ALL); cmnLogger::AddChannel(std::cerr, CMN_LOG_ALLOW_ERRORS_AND_WARNINGS); // create ROS node handle @@ -86,22 +89,30 @@ int main(int argc, char * argv[]) return -1; } - mtsAtracsysStereo * stereo = new mtsAtracsysStereo("stereo", tracker->GetName()); - stereo->Configure(jsonConfigFile); - // add the components to the component manager mtsManagerLocal * componentManager = mtsComponentManager::GetInstance(); componentManager->AddComponent(tracker); + +#if OpenCV_AVAILABLE + mtsAtracsysStereo * stereo = new mtsAtracsysStereo("stereo", tracker->GetName()); + stereo->Configure(jsonConfigFile); + componentManager->AddComponent(stereo); componentManager->Connect(tracker->GetName(), "StereoRaw", stereo->GetName(), "StereoRaw"); +#else + std::cout << "OpenCV not available, so no stereo processing" << std::endl; +#endif // ROS CRTK bridge atracsys_bridge * bridge = new atracsys_bridge("atracsys_bridge", rosNode, rosPeriod, tfPeriod); componentManager->AddComponent(bridge); bridge->bridge_controller(tracker->GetName(), "Controller"); + +#if OpenCV_AVAILABLE bridge->bridge_stereo(stereo->GetName(), "stereo", tracker->GetName() + "/stereo"); +#endif bridge->Connect();