Wie man richtig link opencv3 unter ROS Indigo (mit CMake)?

Bin nicht in der Lage, zu verknüpfen opencv3, dass ich installiert, mich getrennt von ros. Bin immer diese Fehlermeldung

../devel/lib/libirTest.so: undefined reference to `cv::ORB::create(int, float, int, int, int, int, int, int, int)'
../devel/lib/libirTest.so: undefined reference to `cv::calcOpticalFlowPyrLK(cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, cv::_InputOutputArray const&, cv::_OutputArray const&, cv::_OutputArray const&, cv::Size_<int>, int, cv::TermCriteria, int, double)'

Bin JEDOCH in der Lage, succefully kompilieren außerhalb ROS; das heißt, mit dem ähnlichen Paket ohne ROS.... Hier ist die CMake-Datei verwende unter ROS (das funktioniert nicht)

cmake_minimum_required(VERSION 2.8.3)
project(my_test_pkg)

SET(SRC ${CMAKE_CURRENT_SOURCE_DIR}/src)

find_package(catkin REQUIRED COMPONENTS
  cv_bridge
  image_transport
  roscpp
  rospy
  std_msgs
  message_generation
  genmsg
)
find_package(nodelet REQUIRED)

################################################
## Declare ROS messages, services and actions ##
################################################

 add_message_files(
   FILES
    velocity_trsl.msg 
   )

  generate_messages(
    DEPENDENCIES
    std_msgs
    )

catkin_package(
  CATKIN_DEPENDS message_generation cv_bridge image_transport roscpp rospy std_msgs
)

###########
## Build ##
###########
include_directories(
  ${catkin_INCLUDE_DIRS}
  )


#***********************
#******   GSL
#***********************
find_package( PkgConfig REQUIRED)
pkg_check_modules( gsl REQUIRED gsl )

#***********************
#******   Boost
#***********************

SET (BOOST_DIR "/home/polar/soft/lib/boost/boost_1_61_0")

FIND_PACKAGE(Boost 1.61.0 REQUIRED thread)
if (NOT Boost_FOUND)
  message(FATAL_ERROR " Fatal error: Boost (version >= 1.55) required.")
else()
  message(STATUS "Setting up BOOST")
  message(STATUS " Includes - ${Boost_INCLUDE_DIRS}")
  message(STATUS " Library  - ${Boost_LIBRARY_DIRS}")
  include_directories(${Boost_INCLUDE_DIRS})
  link_directories(${Boost_LIBRARY_DIRS})
endif (NOT Boost_FOUND)   

#***********************
#******   OpenCV
#***********************
find_package( OpenCV 3.1.0 REQUIRED )
find_package( OpenCV 3.1.0 REQUIRED PATHS /home/polar/soft/lib/opencv/opencv-3.1.0/cmake)
if (NOT OpenCV_FOUND)
  message(FATAL_ERROR "*****!!!!! opencv NOT found.")
endif (NOT OpenCV_FOUND)    

#****************************************
include_directories(${SRC}/calculus)
SET(MY_LIB
  irTest
  )

#   ALL EXEC FILES...
SET(EXE_TESTER  
   tester1
    )

  add_executable(tester1 ${CMAKE_CURRENT_SOURCE_DIR}/exe-main-files-stdl/testdir/tester1.cpp )

  SET(FILES_2_RUN
    ${EXE_TESTER}
    )


#--------------------------
foreach(file2link ${FILES_2_RUN})
  target_link_libraries(${file2link}
    ${catkin_LIBRARIES}
    ${Boost_LIBRARIES}
    ${gsl_LIBRARIES}
    ${OpenCV_LIBRARIES}
    ${OpenCV_LIBS}
    ${MY_LIB}
    )

  add_dependencies(${file2link} my_test_pkg_generate_messages_cpp)# newlly added for messages!!
endforeach(file2link)  

add_subdirectory(src)

Sollte es zu einem Konflikt zwischen den opencv-version verwende und dass (v2.4), die von ROS? Vielleicht cv_bridge oder image_transport erstellen, dieses problem... (???) Ich selbst gelöscht bauen/und devel/und versucht, erneut kompilieren, aber immer das gleiche problem..... Ich habe nie eine solche lange Zeit als dieses problem...

  • Hier es scheint zu implizieren, OpenCV 3 sollte der Standardwert für ROS heute.
  • Ich installierte ubuntu 14 und ROS Indigo und versucht zu kompilieren aber immer noch das gleiche Problem. JEDOCH, es funktionierte unter ubuntu 16 mit ROS Kinetische. Beachten Sie, dass ich das gleiche Paket, das nicht unter Indigo-Paket, das trotzdem funktioniert... Aber jetzt bin noch nicht in der Lage, meine ros-Paket mit der opencv ich ließ mich
  • haben Sie jemals zu verwalten, um dieses Problem zu lösen, die auf ubuntu 14, oder hast du mit aktualisieren?
InformationsquelleAutor Courier | 2016-06-01
Schreibe einen Kommentar