41 lines
1.7 KiB
Markdown
41 lines
1.7 KiB
Markdown
|
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 instruction](None)).
|
||
|
|
||
|
## 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.
|