# \[best practice\] Packaging config (including .launch) files

**URL:** <https://discourse.openrobotics.org/t/best-practice-packaging-config-including-launch-files/18443>\
**Category:** Quality Assurance\
**Created:** [January 13, 2021, 7:56pm UTC](https://discourse.openrobotics.org/t/best-practice-packaging-config-including-launch-files/18443 "2021-01-13T19:56:14Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![gavanderhoorn](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/gavanderhoorn/32/969_2.png) [@gavanderhoorn](https://discourse.openrobotics.org/u/gavanderhoorn)\
**Post date:** [January 16, 2021, 2:48pm UTC](https://discourse.openrobotics.org/t/best-practice-packaging-config-including-launch-files/18443/3 "2021-01-16T14:48:39Z")

</div>

> [@130s](#):
>
> E.g. A convention in [ROS-Industrial suggests `*_support` package to host launch and configs](http://wiki.ros.org/Industrial/Tutorials/SuggestedPackageLayoutNewRepositories#Support)

_support packages_ in ROS-Industrial actually serve a rather narrow purpose: they’re an extension to the regular `_description` packages. Extension, as `_description` packages typically only contain files for a single robot.

Industrial robot OEMs tend to have (very) well developed product portfolios with accompanying naming schemes. Robots are grouped into _series_ (or _models_) and variants within those series, where product names contain letter and digit combinations to indicate which series a particular variant belongs to and how it relates to other variants in that series.

Robot support packages try to exploit this organisation by storing as much as possible all variants of a single series in the same package, as opposed to creating individual `_description` packages per variant.

Apart from avoiding an explosion of the number of packages, variants within a series can typically also share geometry, leading to reduced package sizes.

As an example: the Fanuc LR Mate 200iC has (or had at the time that support package was created) a total of 9 variants. All of those are supported by the `fanuc_lrmate200ic_support` package with separate `.launch`, `.yaml` and `.xacro` files. If each variant were supported by its own `_description` package, we’d have 9 packages for this series alone (and that’s without the MoveIt packages and plugins). And as each variant can share a significant number of its meshes with others, for most variants only `link_2` and `link_4` meshes are distributed, the rest is reused from the base model.

---

_[View the full topic](https://discourse.openrobotics.org/t/best-practice-packaging-config-including-launch-files/18443)._
