0
$\begingroup$

Rosanswers logo

I am using ROS indigo with Ubunty Trusty 14.04. I am following the ROS industrial tutorials and currently at http://aeswiki.datasys.swri.edu/rositraining/indigo/Exercises/1.2. This is not the first time that I am facing this problem. Whenever I try to build my workspace after cloning any repository in the src sub-directory of my work space, I get errors. I had just cloned robotiq repository from http://github.com/ros-industrial and tried to build my workspace by typing catkin_make in the workspace but I got the following on terminal.

Base path: /home/hashir/industrial_training/training/work/1.2/catkin_ws
Source space: /home/hashir/industrial_training/training/work/1.2/catkin_ws/src
Build space: /home/hashir/industrial_training/training/work/1.2/catkin_ws/build
Devel space: /home/hashir/industrial_training/training/work/1.2/catkin_ws/devel
Install space: /home/hashir/industrial_training/training/work/1.2/catkin_ws/install
####
#### Running command: "make cmake_check_build_system" in "/home/hashir/industrial_training/training/work/1.2/catkin_ws/build"
####
-- Using CATKIN_DEVEL_PREFIX: /home/hashir/industrial_training/training/work/1.2/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /home/hashir/industrial_training/training/work/1.2/catkin_ws/devel;/opt/ros/indigo
-- This workspace overlays: /home/hashir/industrial_training/training/work/1.2/catkin_ws/devel;/opt/ros/indigo
-- Using PYTHON_EXECUTABLE: /usr/bin/python
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/hashir/industrial_training/training/work/1.2/catkin_ws/build/test_results
-- Found gtest sources under '/usr/src/gtest': gtests will be built
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.6.18
-- BUILD_SHARED_LIBS is on
WARNING: Package "ompl" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~  traversing 11 packages in topological order:
-- ~~  - robotiq (metapackage)
-- ~~  - robotiq_c2_model_visualization
-- ~~  - robotiq_ethercat
-- ~~  - robotiq_c_model_control
-- ~~  - robotiq_force_torque_sensor
-- ~~  - robotiq_modbus_rtu
-- ~~  - robotiq_modbus_tcp
-- ~~  - robotiq_s_model_control
-- ~~  - robotiq_joint_state_publisher
-- ~~  - robotiq_action_server
-- ~~  - robotiq_s_model_visualization
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin metapackage: 'robotiq'
-- ==> add_subdirectory(robotiq/robotiq)
-- +++ processing catkin package: 'robotiq_c2_model_visualization'
-- ==> add_subdirectory(robotiq/robotiq_c2_model_visualization)
-- +++ processing catkin package: 'robotiq_ethercat'
-- ==> add_subdirectory(robotiq/robotiq_ethercat)
CMake Warning at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:76 (find_package):
  Could not find a package configuration file provided by "soem" with any of
  the following names:

    soemConfig.cmake
    soem-config.cmake

  Add the installation prefix of "soem" to CMAKE_PREFIX_PATH or set
  "soem_DIR" to a directory containing one of the above files.  If "soem"
  provides a separate development package or SDK, be sure it has been
  installed.
Call Stack (most recent call first):
  robotiq/robotiq_ethercat/CMakeLists.txt:4 (find_package)


-- Could not find the required component 'soem'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Could not find a package configuration file provided by "soem" with any of
  the following names:

    soemConfig.cmake
    soem-config.cmake

  Add the installation prefix of "soem" to CMAKE_PREFIX_PATH or set
  "soem_DIR" to a directory containing one of the above files.  If "soem"
  provides a separate development package or SDK, be sure it has been
  installed.
Call Stack (most recent call first):
  robotiq/robotiq_ethercat/CMakeLists.txt:4 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/hashir/industrial_training/training/work/1.2/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/hashir/industrial_training/training/work/1.2/catkin_ws/build/CMakeFiles/CMakeError.log".
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed

Please help me if anybody knows something about it.


Originally posted by Hashir Shafi on ROS Answers with karma: 13 on 2016-06-18

Post score: 1

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

Simply cloning a repository just gets you a copy of the sources in that repository. If/whenever a package uses functionality provided by external packages (ie: not found in the same repository), it will search for those dependencies using a find_package(..) call in CMakeLists.txt.

If you don't have those dependencies, CMake will present you with the error messages that you copy/pasted. This makes sense: CMake can't install those for you, so you have to make sure you already have them on your system.

Checking for and installing of dependencies is highly automated in ROS. After having cloned a repository, run:

rosdep install --from-paths /path/to/your/catkin_ws/src --ignore-src

after you've sourced the appropriate setup.bash. That will scan for packages in the source space of your catkin workspace, gather all dependencies, check you have those on your system, and if any are missing, it will install them (using the platform's package manager, see why rosdep instead of others?).

Note: you only need to do this if you are building things from source. Packages installed through package managers (ie: apt-get, rpm, etc) already have their dependencies resolved by the respective package manager. Always prefer to use the binary packages, if you can. Building from source takes time, wastes effort and, as you discovered, requires special care. The whole point of binary distributions is to be able to avoid this. In a typical ROS workflow, I'd only build a package from source if a) you actually want to do some development on the package itself (ie: not just make use of it), or b) it hasn't been released for your particular platform (arch) or ROS release.

Note 2: this is actually a question that has been asked many times before. I'm pretty certain a search (using either the built-in search or Google) turns up many answers ..

Note 3: don't use rosdep to install the package you are interested in itself. That's not what it's for. It only deals with dependencies.


Originally posted by gvdhoorn with karma: 86574 on 2016-06-18

This answer was ACCEPTED on the original site

Post score: 8

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.