Skip to content

Commit

Permalink
Make OpenCV dependency optional
Browse files Browse the repository at this point in the history
  • Loading branch information
brendanburkhart committed Jul 19, 2024
1 parent 344ba11 commit 44b81dd
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 14 deletions.
22 changes: 17 additions & 5 deletions core/components/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,6 @@ if (cisst_FOUND_AS_REQUIRED)
endif ()
endif ()

find_package(OpenCV REQUIRED)

# catkin/ROS paths
cisst_set_output_path ()

Expand Down Expand Up @@ -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 (
Expand Down
12 changes: 8 additions & 4 deletions ros/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
21 changes: 16 additions & 5 deletions ros/src/atracsys.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,12 @@ no warranty. The complete license can be found in license.txt and
#include <cisstMultiTask/mtsTaskManager.h>
#include <cisstParameterTypes/prmPositionCartesianGetQtWidgetFactory.h>
#include <sawAtracsysFusionTrack/mtsAtracsysFusionTrack.h>
#include <sawAtracsysFusionTrack/mtsAtracsysStereo.h>
#include <sawAtracsysFusionTrack/mtsAtracsysFusionTrackStrayMarkersQtWidget.h>

#if OpenCV_AVAILABLE
#include <sawAtracsysFusionTrack/mtsAtracsysStereo.h>
#endif

#include "atracsys_bridge.h"

#include <QApplication>
Expand All @@ -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
Expand Down Expand Up @@ -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();

Expand Down

0 comments on commit 44b81dd

Please sign in to comment.