Sonntag, April 5, 2020

Mit Eigen-Bibliothek in ROS Indigo

Arbeite ich an einem Projekt in ROS Indigo, erfordert die Verwendung der Eigen-Bibliotheken. Nach indigo/Migration Seite auf die ROS-Wiki, der FindEigen.cmake-module ist nun in der cmake_modules Paket.

Nach folgenden Schritten fügen Sie die cmake_modules Paket des Projekts CMake.txt (über find_package) und das hinzufügen einer build-Abhängigkeit der package.xml (< build_depend >cmake_modules< /build_depend >), bin ich noch immer Probleme mit dem kompilieren des Projekts. Ich habe in verschiedenen Quellen unter Berufung auf die oben genannten Schritte sollten das Problem beheben in ROS Indigo, aber kann nicht scheinen, um es funktioniert. Hier ist die CMake – Datei, und hier ist die package.xml . Zusätzlich habe ich noch die FindEigen.cmake-Datei im Projekt-Ordner. Jede Hilfe wäre sehr geschätzt werden! Der Fehler lautet:

CMake Error at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:75 (find_package):
Could not find a package configuration file provided by "Eigen" with any of the 
following names:
  EigenConfig.cmake
  eigen-config.cmake

Add the installation prefix of "Eigen" to CMAKE_PREFIX_PATH or set
"Eigen_DIR" to a directory containing one of the above files.  If "Eigen"
provides a separate development package or SDK, be sure it has been
installed.
Call Stack (most recent call first):
lidar_point_cloud/CMakeLists.txt:9 (find_package)
  • Auch ich bin mit ROS Indigo auf Ubuntu
InformationsquelleAutor smannan | 2015-05-03

4 Kommentare

  1. 10

    Nur für post-Vollständigkeit und folgende diese Antwort in Antworten ROS:

    Haben Sie Eigen schon installiert sind (überprüfen mit sudo apt-get install libeigen3-dev), dann müssen Sie die entsprechenden cmake_modules und Eigen Linien zu den CMakeLists.txt und package.xml Dateien:

    package.xml

    <build_depend>cmake_modules</build_depend>
    <run_depend>cmake_modules</run_depend> 
    

    CMakeLists.txt

    find_package(catkin REQUIRED cmake_modules)
    find_package(Eigen REQUIRED)
    
    catkin_package(
      INCLUDE_DIRS ...
      LIBRARIES ...
      CATKIN_DEPENDS ....
      DEPENDS Eigen
    )
    
    include_directories(
       ...
       ${Eigen_INCLUDE_DIRS}
     )
    

    UPDATE: Beachten Sie, dass die folgenden ist nicht erforderlich, da die FindEigen.cmake Modul definiert nicht Eigen_LIBRARIES denn es ist ein header, der nur Bibliothek:

     target_link_libraries(my_target
       ....
       ${Eigen_LIBRARIES}
     )
    

    Mehr Informationen: http://wiki.ros.org/indigo/Migration#cmake_modules

    UPDATE: In der Tat <run_depend>cmake_modules</run_depend> ist nicht notwendig, da cmake_modules sind keine runtime-Abhängigkeit.


    Darüber hinaus können Sie mit der ROS ecl-Wrapper: http://wiki.ros.org/ecl

    • Die ${Eigen_LIBRARIES} ist nicht erforderlich. Eigen ist eine header-only-Bibliothek, so gibt es nichts zu verlinken.
    • Danke @luator ich aktualisiert die Antwort!
  2. 0

    Eigen ist, nicht ein ROS-Paket, sondern eine eigenständige Bibliothek. Deshalb, anstatt der Notierung als eine Komponente von catkin, fügen Sie einfach eine separate find_package nennen:

    find_package(Eigen REQUIRED)
    

    Ich kann nicht überprüfen Sie es jetzt (derzeit sitzen an einer Maschine mit groovy), aber ich bin mir ziemlich sicher, dass dies auch bei mir geklappt mit indigo.

  3. 0

    Für mich das „sudo apt-get install libeigen3-dev“ nicht funktioniert. So ich installierte es über die Datei und die installation in das Paket, d.h.,

    -download the package from http://eigen.tuxfamily.org/index.php?title=Main_Page
    
    -create another directory which we will call 'build_dir'
    
    -cd build_dir
    
    -cmake source_dir
    
    -make install
    

    Wenn dies nicht Ihr problem lösen, Sie können die eigen3 Ordner aus, wo immer Sie ist (mine was at /usr/local/include) /usr/include. Verwenden Sie den Befehl

    sudo cp -r /usr/local/include/eigen3  /usr/include
    

Kostenlose Online-Tests