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

Strategy to keep track of third-party ROS packages

asked 2021-07-09 16:32:12 -0600

JeremieBourque gravatar image


In my ROS project, I am using ROS packages that can't be installed with apt and need to be cloned and compiled from source. Because of that, I can't use rosdep to easily download all of the dependencies, which is making things more complicated when the project needs to be setup on a new computer.

What is the strategy people use to make this process easier?

Thank you

edit retag flag offensive close merge delete

4 Answers

Sort by ยป oldest newest most voted

answered 2021-07-09 20:18:59 -0600

updated 2021-07-09 20:19:36 -0600

A common strategy if you want to stay within the ROS toolset is using repos files. Its a specification of ROS repos, URLs, branch (or tag or commit hash) that can be cloned automatically via vcstools and then compiled.

There are also plenty of configuration management tools like Ansible, Chef or Puppet for more generalized solutions to do more than just ROS management but installing operating system utilities, installing scripts in particular places, starting daemans, compiling workspaces, etc.

edit flag offensive delete link more



You can also use language specific package managers like pip or Conan and use their package tracking methods if they're published in them. Or if they're not, you can git submodules if they're in git. That's the most similar to vcstool.

Jaron gravatar image Jaron  ( 2021-07-10 07:43:19 -0600 )edit

I think a link to vcstoolwould be helpful here: (I'm assume you didn't mean to refer to vcstools since that's another tool and it's deprecated)

christophebedard gravatar image christophebedard  ( 2021-07-12 10:21:03 -0600 )edit

What are the advantages of using git submodules over vcstool?

JeremieBourque gravatar image JeremieBourque  ( 2021-07-12 11:12:39 -0600 )edit

Simply the fact that it doesn't require another package. For ros packages, I would definitely agree with using vcstool as it's the most common in this community and does more than git submodules. I have used git submodules with projects with and without ros depending on the amount it uses ros or the familiarity with ros I can except from the developers. I only brought it up because I think seeing the whole domain of what people use to answer question is sometimes helpful so you can see the value of each answer.

Jaron gravatar image Jaron  ( 2021-07-12 11:29:12 -0600 )edit

answered 2021-07-11 07:58:52 -0600

Mike Scheutzow gravatar image

We use a bash script to set up on a new machine or update an existing one. For a new machine, the script uses apt-get and git clone as needed. This approach has worked well for us.

edit flag offensive delete link more

answered 2021-07-18 04:09:56 -0600

electrophod gravatar image

Using GitHub submodules might be a solution to your query.

Also have a look at the wstool utility and .rosinstall file. They might be helpful too.

edit flag offensive delete link more

answered 2021-07-18 04:06:48 -0600

peci1 gravatar image

We're quite happily using wstool. It is deprecated in the favor of vcstool, but it works well. You can even have multiple .rosinstall files (e.g. per feature) and merge them via wstool merge to get a workspace with all dependencies.

There's also a non-written standard (used at least by our team and a lot of packages from ETH Zurich ASL) that each package can have a file dependencies.rosinstall in its root, and this specifies its from-source dependencies. We then have a script that recursively walks the workspace and merges all these files to the workspace's .rosinstall until all from-source dependencies are satisfied. But it is a bit fragile if e.g. two packages specify the same dependency but with different URL (e.g. one ending with .git and one without it).

edit flag offensive delete link more

Question Tools



Asked: 2021-07-09 16:32:12 -0600

Seen: 383 times

Last updated: Jul 18 '21