ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

All types of dependencies in ROS Fuerte

asked 2013-01-20 22:22:53 -0600

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

This question is not about a concrete problem, but should help explaining the different types of dependencies in ROS Fuerte. (I'm not sure if this is the ideal place for such a reference, but I am making this question public and let's see where it takes us.)

As far as I understand, there are two main types of dependencies: ROS depencies and system dependencies. The first type comprises ROS packages that are: 1) already installed on your system, 2) available from ROS, and 3) available from other sources (e.g. project partners, university labs). I believe that there are also 4) ROS stack dependencies (to be confirmed). Finally, system dependencies are typically libraries, such as Boost and Qt.

Below, I would like to explain how to deal with each type of dependency. Ideally, the process should be automatable so that anyone wishing to use a package with dependencies can do it with the smallest number of steps and the least amount of ROS knowledge possible.

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
0

answered 2013-01-20 22:28:11 -0600

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

1) ROS dependency, already installed

Simply add <depend package="OtherPackage"> in your manifest.xml file

2) ROS dependency, available from ROS

[to be confirmed and improved]

If the package has a released binary package for your system, you can do something like sudo apt-get install ros-fuerte-other-package and you are now in case #1 above. However, this solution is not nice because it is not automated.

  • Step 1) Create a yaml file so that ROS can find the source and download it
  • Step 2) Add <depend package="OtherPackage"> in your manifest.xml file
  • The user of your package must first do rosdep install MyPackage and then rosmake MyPackage

ROS Q&A that may help further:

http://answers.ros.org/question/9201/how-do-i-install-a-missing-ros-package/

http://answers.ros.org/question/9197/for-new-package-downloading/

http://answers.ros.org/question/9740/automatic-installation-of-dependencies/

http://answers.ros.org/question/9880/satisfying-package-dependencies/

http://answers.ros.org/question/10830/which-deb-package-contains-ros-package-x/

http://answers.ros.org/question/12466/download-a-package-with-rosmake/

http://answers.ros.org/question/34984/using-rosdep-to-install-wg-maintained-stacks/

http://answers.ros.org/question/39571/rosmake-error-no-such-option-rosdep-install/

http://answers.ros.org/question/48301/rosdep-install-sr_control_gui/

http://answers.ros.org/question/50197/bloom-creating-debs-rosdep-cant-resolve-key/

http://answers.ros.org/question/52273/rosdep-and-ros-dependencies/

http://answers.ros.org/question/52547/cannot-locate-rosdep-definition-for-geographicinfo/

3) ROS dependency, available from other sources

[to be confirmed and improved]

  • Step 1) Create a yaml file so that ROS can find the source and download it
  • Step 2) Add <depend package="OtherPackage"> in your manifest.xml file
  • The user of your package must first do rosdep install MyPackage and then rosmake MyPackage

ROS Q&A that may help further:

http://answers.ros.org/question/36845/cannot-locate-rosdep-definition-for-qt4/

http://answers.ros.org/question/40337/rosdep-doesnt-read-rosdepyaml/

http://answers.ros.org/question/50660/custom-rosdep-rules/

4) ROS dependency, stack

Simply add <depend stack="OtherStack"> in your stack.xml file

5) System dependency

Add <rosdep name="OtherLibrary"> in your manifest.xml file

ROS Q&A that may help further:

http://answers.ros.org/question/9430/how-to-use-external-libraries-in-ros-code/

http://answers.ros.org/question/11879/best-practice-for-rosdep-ubuntu-packages-and-others/

http://answers.ros.org/question/34199/what-is-the-correct-way-to-add-external-library/


In addition, you can look at this documentation:

rosintall: http://www.ros.org/wiki/rosinstall

rosdep: http://ros.org/wiki/rosdep, http://ros.org/doc/api/rosdep2/html/rosdep_yaml_format.html, http://ros.org/reps/rep-0125.html

ROS overlays: http://ros.org/wiki/fuerte/Installation/Overlays

edit flag offensive delete link more

Comments

It may be more accurate to rephrase your question as "Dependencies with rosbuild", which spans fuerte and earlier ros releases.

KruseT gravatar image KruseT  ( 2013-01-20 23:09:30 -0600 )edit
2

answered 2013-01-20 22:38:37 -0600

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

Hi Benoit, the ros wiki might be a better place for creating such a resource.

I suggest you also follow the ROS buildsystem group

groups.google.com/group/ros-sig-buildsystem

and discuss automation of the build process there.

Note that the fuerte (rosbuild) way of building (and declaring dependencies) will soon be deprecated with the introduction of catkin.

What you really want to ask seems to be: "If I create a ROS package, how can I help users of my package to automatically install all dependencies?"

For this, there are these types of dependencies:

  1. Packaged dependencies installable via package managers like apt-get

    1. system libraries available from standard sources
    2. ROS packages available from the ROS repository
    3. Other libraries available from non-standard sources
  2. Non-packaged dependencies

    1. software libraries available from other sources, installable via custom methods
    2. ROS packages available from source repositories, installable via custom methods(e.g. rosinstall + rosmake)

Currently rosdep automates the process for 1.1, and roslocate/rosinstall somewhat-automate the process for 2.2

The common way to help user get the dependencies right is to create a readme file and tell the users how to commonly get the dependencies e.g. on Ubuntu. The goal to automate everything is noble, but difficult. With some effort rosdep could maybe be changed to also install 1.2 type dependencies, which you could suggest on the github wiki page or the ROS buildsystem siG.

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2013-01-20 22:22:53 -0600

Seen: 344 times

Last updated: Jan 20 '13