如何引入ros2自定义消息接口
时间: 2025-03-23 12:12:32 AIGC 浏览: 74
### ROS 2 自定义消息接口的创建与使用
#### 创建自定义消息文件
在 ROS 2 中,可以通过 `.msg` 文件来定义自定义消息。这种文件通常位于包中的 `msg/` 子目录下。以下是具体的操作流程:
1. **创建一个新的 ROS 2 包**
如果尚未创建用于存储自定义消息的包,则需要先通过以下命令创建新包:
```bash
ros2 pkg create --build-type ament_cmake my_custom_interfaces
```
2. **添加 msg 目录并编写 .msg 文件**
在刚刚创建的包中新增一个名为 `msg` 的子目录,并在此目录下创建新的 `.msg` 文件。例如,假设要定义一条描述温度和湿度的消息,可以在 `my_custom_interfaces/msg/TemperatureHumidity.msg` 文件中写入如下内容:
```
float64 temperature
float64 humidity
string unit
```
3. **修改 CMakeLists.txt 和 package.xml 文件**
需要在包配置文件中声明存在自定义消息以便编译工具识别它们。
- 修改 `CMakeLists.txt` 文件以包含以下行(如果未自动添加):
```cmake
find_package(rosidl_default_generators REQUIRED)
rosidl_generate_interfaces(${PROJECT_NAME}
"msg/TemperatureHumidity.msg"
)
```
- 更新 `package.xml` 文件以加入依赖项支持:
```xml
<depend>rosidl_default_runtime</depend>
<member_of_group>rosidl_interface_packages</member_of_group>
```
#### 构建项目
完成上述更改之后运行构建过程:
```bash
colcon build --packages-select my_custom_interfaces
```
这一步会生成对应的语言绑定代码供后续程序调用[^1]。
#### 使用自定义消息
一旦成功构建了带有自定义消息类型的包,在其他节点里就可以轻松导入该类型进行数据交换操作了。比如 Python 节点可能这样初始化发布者端口:
```python
from my_custom_interfaces.msg import TemperatureHumidity
def publisher():
pub = node.create_publisher(TemperatureHumidity, 'temperature_humidity_topic', 10)
msg = TemperatureHumidity()
msg.temperature = 25.5
msg.humidity = 60.0
msg.unit = "Celsius"
pub.publish(msg)
```
同样地,在订阅方也可以按照相同方式处理接收到的信息流[^2]。
阅读全文
相关推荐




















