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

Adding a package to the ROS distro with third party dependencies

asked 2018-07-26 04:29:13 -0600

christian.ege gravatar image

updated 2018-07-26 04:57:00 -0600

jayess gravatar image


I am quite new to the ROS packaging stuff so please advise me if I am heading in the wrong direction. I do want to add the ROS driver of our 3D Time of Flight cameras to the ROS distribution. At the moment I am working on Ubuntu 16.04 and ROS kinetic. The ROS node for the cameras is hosted here: this node depends on the Open Source library ifm3d library. To add the ifm3d library I followed the Bloom Releasing a Third Party Package tutorial. Due to the fact that the ifm3d library depends on multiple packages I am struggling with the following dependencies at the moment:

Those dependencies are not available in the rosdep/base.yaml and therefore I do get the following error message when running git-bloom-release kinetic

Could not resolve rosdep key 'glog'
Failed to resolve glog on ubuntu:xenial with: Error running generator: Failed to resolve rosdep key 'glog', aborting.
glog is depended on by these packages: ['ifm3d-core']
<== Failed
Could not resolve rosdep key 'xmlrpc-c++'
Failed to resolve xmlrpc-c++ on ubuntu:xenial with: Error running generator: Failed to resolve rosdep key 'xmlrpc-c++', aborting.
xmlrpc-c++ is depended on by these packages: ['ifm3d-core']
<== Failed
Some of the dependencies for packages in this repository could not be resolved by rosdep.
You can try to address the issues which appear above and try again if you wish.
Would you like to try again? [Y/n]? n
User aborted after rosdep keys were not resolved.
<== The following generator action reported that it is missing one or more
    rosdep keys, but that the key exists in other platforms:
'['/usr/bin/git-bloom-generate', '-y', 'rosdebian', '--prefix', 'release/kinetic', 'kinetic', '-i', '1', '--os-name', 'ubuntu']'

As far I do understand the way to proceed is by adding those dependencies to rosdep/base.yaml which will provide rosdep the ability to resolve all the dependencies on all supported platforms. Is there a recommended way to check all the package names for all *inux Platforms or is is legal to add the dependency graph only for my usecase which is tested by me?

I am sure I've mixed up a lot, so please be kind and advise me how to proceed in a correct way.

edit retag flag offensive close merge delete



Isn't libgoogle-glog-dev already present in rosdep? The key is libgoogle-glog-dev, not glog.

gvdhoorn gravatar image gvdhoorn  ( 2018-07-26 05:07:40 -0600 )edit

@gvdhoorn you are totally right.

christian.ege gravatar image christian.ege  ( 2018-07-26 06:31:48 -0600 )edit

1 Answer

Sort by » oldest newest most voted

answered 2018-07-26 04:51:20 -0600

First: Welcome, and thanks for making those packages available as binaries! The documentation on how to contribute a new rosdep rule is here:

You are correct in that the dependencies need to be added to base.yaml. And I believe an effort should be made to add the dependencies for all supported platforms. That way, binaries for the ifm3d library will be built for all supported platforms as well!

Unfortunately I don't have any advice on the best way to find all those package names, except check on the online package listings for all the distros.

edit flag offensive delete link more



In the contributer guideline there is also some help provided

christian.ege gravatar image christian.ege  ( 2018-07-26 09:03:06 -0600 )edit

Question Tools



Asked: 2018-07-26 04:16:13 -0600

Seen: 817 times

Last updated: Jul 26 '18