Design Pattern for sharing packages between projects
We have quite a few ROS packages that are in active development that we want to reuse in different combinations for different projects. We host our projects on github.
I'd like to create a git repo. for every package and then each project can be assembled as a git repo. containing a catkin workspace with a series of git submodules under src/ one for each required package.
The problem with that is that package_name/launch would be part of the package submodule and thus shared across all projects when I would like to have package_name/launch tracked by the project, not the package submodule (since the launch params will be usually be specific for the project).
What would be a good design pattern for achieving this?
Do you have a particular requirement / desire to use submodules? Would a
.rosinstall
or.repos
file withwstool
orvcstool
not work as well?No I don't in particular, I will look into the tools you have suggested. I guess I have a slight desire to use some solution that is more general than a catkin only system, so that I can apply the same design pattern to other projects, ROS2 and beyond.
Despite the name, there is nothing ROS-specific about these tools, nor the file format. I routinely use them on Windows with visual studio and Python IDEs.