Creating a new package
Naming
In order to create a new ROS package for one of the repositories some rules need to be considered:
The package name has always the following format:
prefix_my_package_nameUse the right prefix for every repository: a.
mas_domestic_robotics:mdr_b.mas_industrial_robotics:mir_c.mas_common_robotics:mcr_Use lowercase.
Separate words in the package name by underscores ( _ ).
Examples for creating packages according to the above described rules are as follows:
catkin create_pkg mdr_grasp_planning
catkin create_pkg mir_whole_body_control
catkin create_pkg mcr_object_detectionFolder structure
Every ROS package within our repositories has to strictly match the following structure:
.
├── common
│ ├── config
│ ├── include
│ │ └── <package_name>
│ ├── src
│ │ └── <package_name>
│ ├── test
│ └── tools
├── ros
│ ├── config
│ ├── include
│ │ └── <package_name>
│ ├── launch
│ │ |— <package_name>.launch
│ ├── rviz
│ │ |— <package_name>.rviz
│ ├── scripts
│ │ └── <package_name>
│ ├── src
│ │ └── <package_name>_node
│ ├── test
│ └── tools
├── CMakeLists.txt
├── package.xml
├── setup.py
└── README.mdIn short:
ROS-independent code goes into the
commonfolderthe
rosfolder contains a ROS-wrapper for the functionality you are adding
Meta-packages
If the package you are creating is meant to contain other packages inside of it, it needs to have instead the following structure:
./<meta_package_name>
└── <meta_package_name>
├── CMakeLists.txt
├── package.xml
└── README.mdAdding the dependencies to the package.xml
package.xmlIt is extremely important to maintain your package.xml up to date with its dependencies. Not doing so results in the need of specialized tools or manual inspection of launch files and source code to discover your package dependencies.
Last updated
Was this helpful?