ros2 std_msgs的用法
时间: 2024-09-19 16:17:30 浏览: 87
通过Rostopic传递数组(Python 发布,C++接收)
5星 · 资源好评率100%
ROS2 (Robot Operating System version 2) 的 `std_msgs` 包提供了一组基本的消息类型,用于在节点间交换数据。这些消息是跨平台的,并且是所有ROS2系统的核心组件之一。`std_msgs` 消息包括像 `String`, `Int8`, `Float32`, `Bool`, 等基础类型,以及一些更复杂的数据结构如 `Message` 和 `Header`。
以下是使用 `std_msgs` 的常见步骤:
1. **包含头文件**:在需要使用 `std_msgs` 的节点的`.cpp` 或 `.h` 文件中,首先要添加相应的头文件,例如:
```c++
#include <ros2/core/time.hpp>
#include <std_msgs/msg/string.hpp>
```
2. **创建消息实例**:声明并初始化你需要的消息类型,比如发送字符串消息:
```c++
std_msgs::msg::String msg;
msg.data = "Hello ROS2";
```
3. **发布消息**:通过`rclcpp`或者其他ROS2客户端库,你可以创建`Publisher`对象来发布消息:
```c++
auto publisher = node.create_publisher<std_msgs::msg::String>("topic_name", 10); // topic_name是你选择的主题名
publisher->publish(msg);
```
4. **订阅消息**:接收者可以创建一个`Subscriber`来订阅主题并处理接收到的消息:
```c++
auto subscription = node.create_subscription<std_msgs::msg::String>(
"topic_name", 10,
[this](const std_msgs::msg::String::SharedPtr msg) { handle_message(*msg); },
rclcpp::QoS(1));
```
阅读全文