rclcpp::AnySubscriptionCallback 的使用
时间: 2024-09-19 07:09:49 浏览: 19
`rclcpp::AnySubscriptionCallback` 是 ROS 2(Robot Operating System,第二代)库 `rclcpp` 中的一个回调函数模板。它提供了一种通用的方式来处理来自不同类型订阅的消息。通常,当你需要创建一个能够处理多种消息类型的回调函数时,可以使用这个回调接口。
它的基本用法是这样的:
```cpp
class CustomCallback : public rclcpp::AnySubscriptionCallback
{
public:
void callback(const std_msgs::msg::String::SharedPtr msg) override
{
// 处理字符串类型的消息
auto str = msg->data;
// ...
}
void callback(const std_msgs::msg::Int32::SharedPtr msg) override
{
// 处理整数类型的消息
auto val = msg->data;
// ...
}
};
```
在这个例子中,`CustomCallback` 继承自 `rclcpp::AnySubscriptionCallback` 并实现了两个 `callback` 函数,分别用于处理 `std_msgs::msg::String` 类型和 `std_msgs::msg::Int32` 类型的消息。当接收到不同类型的订阅数据时,会自动匹配相应的回调方法。
要将这个回调绑定到具体的订阅上,你可以这样做:
```cpp
auto subscription = node.create_subscription<std_msgs::msg::String>("my_topic", QoSProfile(), CustomCallback());
// 或者对于其他类型的消息
subscription = node.create_subscription<std_msgs::msg::Int32>("my_topic", QoSProfile(), CustomCallback());
```