managing projects using catkin and wstool
Hello everyone,
I would like to have advice on how to manage a family of packages in various robotics projects. I have already gathered information about alternatives, including: catkin + wstool, git-submodules, git-subtrees, and other software management options. I think that these links summarize the options:
- git-submodules: http://blogs.atlassian.com/2013/05/al...
- git-subtrees: http://blogs.atlassian.com/2013/03/gi...
- software build/dependency management tools: http://blogs.atlassian.com/2014/04/gi...
- other possibilities: http://stackoverflow.com/questions/81...
In my research group, we have worked on various ROS and non-ROS Robotics projects in the last few years, and naturally we have modules which are used in many of these projects at the same time. Until now, our code management approach was to have everything in a single git repository (there are 40+ ROS and non-ROS packages, as we try keep granularity/modularity in our libraries and executables). As we are updating our source structure to be catkin compliant, we are also thinking on separating our git repository into chunks (no necesarily at the package level). We hope that by managing our projects diferently we won't need to download our whole software repository in every platform.
I believe that catkin + vcstools/wstool are a very good solution since:
- They are both independent of the ROS ecosystem: check section 2.2 here http://wiki.ros.org/catkin/conceptual... , and this http://wiki.ros.org/wstool
- Catkin can manage build/compilation dependencies
- wstool allows to set the git repository for modules/packages inside the workspace, including specifying a branch or a specific commit
- also: wstool update, wstool diff, [...] are very useful
So, my questions are relating to the usage of catkin and wstool outside of the ROS ecosystem:
- How can I create a catkin workspace outside of the ROS ecosystem? From what I understand, creating a workspace requires to load the setup.bash of a ROS dristro.
- Any advice of a different set of tools which is suitable for working in ROS-like projects, where many modules are reused between projects?
- As a side question regarding the use of catkin + wstool + rosdep : Is it possible to overlay rosdep's package lists with private repositories?
Thanks for your advice!
Just to add to @Dirk Thomas's answer, there is also a new effort to replace rosdep with a more ros agnostic tool called xylem: https://github.com/catkin/xylem@demmeln recently did a GSoC working on the project and it is in pretty good shape but needs some more work.
The ultimate goal would be to have a complete set of ros agnostic tools like wstool, catkin, and xylem. The tools that are still ROS specific in some way are python-rosdistro (python api for interaction with ros/rosdistro), bloom, and rosinstall_generator.