Use this ROS2 package to create custom interfaces, eg. topic (*.msg) and/or service (*.srv) files. This package must only be used for interface files and __no__ Python scripts. The following steps describe how to create a new custom topic or service. ## 1. Create new interface file Topic *.msg files got into `msg` directory, Service *.srv files got into `srv` directory. Create these files according to the example on this [instructions page](https://docs.ros.org/en/foxy/Tutorials/Writing-A-Simple-Py-Service-And-Client.html). ## 2. CMakeLists.txt Edit the `CMakeLists.txt` file by adding the newly created *.msg or *.srv files to this part: ```cmake rosidl_generate_interfaces(${PROJECT_NAME} "msg/CustomMsg1.msg" "msg/CustomMsg2.msg" "srv/CustomSrv1.srv" DEPENDENCIES builtin_interfaces ) ``` ## 3. Build colcon workspace Move back to the root of your _colcon_ workspace and rebuild it: `colcon build --symlink-install` It should build without any errors. If you encounter errors fix these before continuing. After a successful build you must __close and reopen all terminals__ in order to source the newly built workspace. For this to happen you must have edited _.bashrc_ and added your current workspace (`sudo nano ~/.bashrc` and follow [this example](https://egit.irs.uni-stuttgart.de/RoverLehre/ROS2_pubsub/src/branch/master/non-ros-files/bashrc_overlay.bash)). ## 4. Import interfaces Import the newly created interfaces into the Python scripts. These scripts must be located in _Python packages_ inside the same workspace (or another _sourced_ workspace): * Topics: ```python from custom_interfaces.msg import CustomMsg1 ``` * Services: ```python from custom_interfaces.srv import CustomSrv1 ``` Now you can work with your custom interface in order to exchange custom information between nodes.